mirror of
https://github.com/YACReader/yacreader
synced 2026-04-12 15:49:53 -04:00
Improve backends handling and make DECOMPRESSION_BACKEND and PDF_BACKEND settings easier to discover
This commit is contained in:
@ -30,21 +30,13 @@ endif()
|
||||
|
||||
# Install paths
|
||||
include(GNUInstallDirs)
|
||||
find_package(PkgConfig)
|
||||
list(PREPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
||||
|
||||
# Compiler options (MSVC flags, NOMINMAX, etc.)
|
||||
include(cmake/CompilerOptions.cmake)
|
||||
|
||||
# --- Build options ---
|
||||
|
||||
# Archive decompression backend (mutually exclusive)
|
||||
set(DECOMPRESSION_BACKEND "" CACHE STRING "Archive backend: unarr | 7zip | libarchive")
|
||||
set_property(CACHE DECOMPRESSION_BACKEND PROPERTY STRINGS "unarr" "7zip" "libarchive")
|
||||
|
||||
# PDF rendering backend (mutually exclusive)
|
||||
set(PDF_BACKEND "" CACHE STRING "PDF backend: pdfium | poppler | pdfkit | no_pdf")
|
||||
set_property(CACHE PDF_BACKEND PROPERTY STRINGS "pdfium" "poppler" "pdfkit" "no_pdf")
|
||||
|
||||
# Build configuration
|
||||
option(BUILD_TESTS "Build tests" ON)
|
||||
option(BUILD_SERVER_STANDALONE "Server standalone install (Linux only)" OFF)
|
||||
@ -52,25 +44,63 @@ option(BUILD_SERVER_STANDALONE "Server standalone install (Linux only)" OFF)
|
||||
# Build number (set by CI)
|
||||
set(BUILD_NUMBER "" CACHE STRING "CI build number")
|
||||
|
||||
set(YACREADER_DECOMPRESSION_BACKENDS unarr 7zip libarchive)
|
||||
set(YACREADER_PDF_BACKENDS pdfium poppler pdfkit no_pdf)
|
||||
|
||||
# --- Platform defaults (mirrors config.pri) ---
|
||||
if(NOT DECOMPRESSION_BACKEND OR DECOMPRESSION_BACKEND STREQUAL "")
|
||||
if(UNIX AND NOT APPLE)
|
||||
set(DECOMPRESSION_BACKEND "unarr")
|
||||
else()
|
||||
set(DECOMPRESSION_BACKEND "7zip")
|
||||
endif()
|
||||
message(STATUS "DECOMPRESSION_BACKEND defaulted to: ${DECOMPRESSION_BACKEND}")
|
||||
if(UNIX AND NOT APPLE)
|
||||
set(_default_decompression_backend "unarr")
|
||||
set(_default_pdf_backend "poppler")
|
||||
elseif(APPLE)
|
||||
set(_default_decompression_backend "7zip")
|
||||
set(_default_pdf_backend "pdfkit")
|
||||
else()
|
||||
set(_default_decompression_backend "7zip")
|
||||
set(_default_pdf_backend "pdfium")
|
||||
endif()
|
||||
|
||||
if(NOT PDF_BACKEND OR PDF_BACKEND STREQUAL "")
|
||||
if(UNIX AND NOT APPLE)
|
||||
set(PDF_BACKEND "poppler")
|
||||
elseif(APPLE)
|
||||
set(PDF_BACKEND "pdfkit")
|
||||
else()
|
||||
set(PDF_BACKEND "pdfium")
|
||||
endif()
|
||||
message(STATUS "PDF_BACKEND defaulted to: ${PDF_BACKEND}")
|
||||
# Archive decompression backend (mutually exclusive)
|
||||
set(_decompression_backend_value "")
|
||||
if(DEFINED CACHE{DECOMPRESSION_BACKEND})
|
||||
set(_decompression_backend_value "$CACHE{DECOMPRESSION_BACKEND}")
|
||||
endif()
|
||||
if(_decompression_backend_value STREQUAL "")
|
||||
set(_decompression_backend_value "${_default_decompression_backend}")
|
||||
string(JOIN ", " _available_decompression_backends ${YACREADER_DECOMPRESSION_BACKENDS})
|
||||
message(STATUS
|
||||
"DECOMPRESSION_BACKEND not set, defaulting to ${_decompression_backend_value}. "
|
||||
"Available: ${_available_decompression_backends}.")
|
||||
endif()
|
||||
set(DECOMPRESSION_BACKEND "${_decompression_backend_value}" CACHE STRING
|
||||
"Archive backend: unarr | 7zip | libarchive" FORCE)
|
||||
set_property(CACHE DECOMPRESSION_BACKEND PROPERTY STRINGS ${YACREADER_DECOMPRESSION_BACKENDS})
|
||||
if(NOT DECOMPRESSION_BACKEND IN_LIST YACREADER_DECOMPRESSION_BACKENDS)
|
||||
string(JOIN ", " _valid_decompression_backends ${YACREADER_DECOMPRESSION_BACKENDS})
|
||||
message(FATAL_ERROR
|
||||
"Unknown DECOMPRESSION_BACKEND: '${DECOMPRESSION_BACKEND}'. "
|
||||
"Use one of: ${_valid_decompression_backends}")
|
||||
endif()
|
||||
|
||||
# PDF rendering backend (mutually exclusive)
|
||||
set(_pdf_backend_value "")
|
||||
if(DEFINED CACHE{PDF_BACKEND})
|
||||
set(_pdf_backend_value "$CACHE{PDF_BACKEND}")
|
||||
endif()
|
||||
if(_pdf_backend_value STREQUAL "")
|
||||
set(_pdf_backend_value "${_default_pdf_backend}")
|
||||
string(JOIN ", " _available_pdf_backends ${YACREADER_PDF_BACKENDS})
|
||||
message(STATUS
|
||||
"PDF_BACKEND not set, defaulting to ${_pdf_backend_value}. "
|
||||
"Available: ${_available_pdf_backends}.")
|
||||
endif()
|
||||
set(PDF_BACKEND "${_pdf_backend_value}" CACHE STRING
|
||||
"PDF backend: pdfium | poppler | pdfkit | no_pdf" FORCE)
|
||||
set_property(CACHE PDF_BACKEND PROPERTY STRINGS ${YACREADER_PDF_BACKENDS})
|
||||
if(NOT PDF_BACKEND IN_LIST YACREADER_PDF_BACKENDS)
|
||||
string(JOIN ", " _valid_pdf_backends ${YACREADER_PDF_BACKENDS})
|
||||
message(FATAL_ERROR
|
||||
"Unknown PDF_BACKEND: '${PDF_BACKEND}'. "
|
||||
"Use one of: ${_valid_pdf_backends}")
|
||||
endif()
|
||||
|
||||
# macOS universal binary default
|
||||
@ -114,7 +144,7 @@ endif()
|
||||
qt_standard_project_setup()
|
||||
|
||||
# PDF backend detection (creates pdf_backend_iface INTERFACE target)
|
||||
include(cmake/PdfBackend.cmake)
|
||||
include(PdfBackend)
|
||||
|
||||
# Output directory
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
|
||||
|
||||
Reference in New Issue
Block a user