Files
yacreader/common/CMakeLists.txt
Luis Ángel San Martín Rodríguez 865020fe11 Migrate the build system to cmake
2026-02-25 09:19:39 +01:00

198 lines
5.2 KiB
CMake

# Common libraries for YACReader
# Fine-grained STATIC targets per concern
# --- yr_global (no GUI, used by all 3 apps) ---
add_library(yr_global STATIC
yacreader_global.h
yacreader_global.cpp
)
target_include_directories(yr_global PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(yr_global PUBLIC Qt::Core)
if(UNIX AND NOT APPLE)
target_compile_definitions(yr_global PRIVATE
"LIBDIR=\"${CMAKE_INSTALL_FULL_LIBDIR}\"")
endif()
# --- naturalsort ---
add_library(naturalsort STATIC
qnaturalsorting.h
qnaturalsorting.cpp
)
target_include_directories(naturalsort PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(naturalsort PUBLIC Qt::Core)
# --- concurrent_queue ---
add_library(concurrent_queue STATIC
concurrent_queue.h
concurrent_queue.cpp
)
target_include_directories(concurrent_queue PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(concurrent_queue PUBLIC Qt::Core)
# --- worker (header-only thread helpers) ---
add_library(worker INTERFACE)
target_include_directories(worker INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
target_sources(worker INTERFACE
${CMAKE_CURRENT_SOURCE_DIR}/worker_thread.h
${CMAKE_CURRENT_SOURCE_DIR}/release_acquire_atomic.h
)
# --- common_all (shared non-GUI code used by all 3 apps) ---
add_library(common_all STATIC
comic_db.h
comic_db.cpp
folder.h
folder.cpp
library_item.h
library_item.cpp
bookmarks.h
bookmarks.cpp
http_worker.h
http_worker.cpp
cover_utils.h
cover_utils.cpp
global_info_provider.h
global_info_provider.cpp
)
target_include_directories(common_all PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(common_all PUBLIC
Qt::Core
Qt::Gui
Qt::Sql
Qt::Network
yr_global
naturalsort
pdf_backend_iface
)
# --- comic_backend (comic file handling + PDF) ---
add_library(comic_backend STATIC
comic.h
comic.cpp
pdf_comic.h
)
# PDF source depends on backend
if(PDF_BACKEND STREQUAL "pdfkit")
target_sources(comic_backend PRIVATE pdf_comic.mm)
elseif(NOT PDF_BACKEND STREQUAL "no_pdf")
target_sources(comic_backend PRIVATE pdf_comic.cpp)
endif()
target_include_directories(comic_backend PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(comic_backend PUBLIC
Qt::Core
Qt::Gui
common_all
pdf_backend_iface
cbx_backend
QsLog
)
# GUI-only targets: not needed for server-standalone builds (Qt 6.4+) which
# lack Qt::Widgets, Qt::ShaderTools, Qt::GuiPrivate, etc.
if(NOT BUILD_SERVER_STANDALONE)
# --- common_gui (GUI-only code: widgets, version check, themes infrastructure) ---
# NOTE: theme_manager.h/cpp is NOT included here because it depends on app-specific
# theme.h (YACReader vs YACReaderLibrary have different Theme structs).
# Each app includes theme_manager directly alongside its own theme.h/theme_factory.
add_library(common_gui STATIC
custom_widgets.h
custom_widgets.cpp
check_new_version.h
check_new_version.cpp
yacreader_global_gui.h
yacreader_global_gui.cpp
exit_check.h
exit_check.cpp
scroll_management.h
scroll_management.cpp
# themes infrastructure (does NOT depend on app-specific theme.h)
themes/icon_utils.h
themes/icon_utils.cpp
themes/theme_id.h
themes/themable.h
themes/yacreader_icon.h
themes/shared/help_about_dialog_theme.h
themes/shared/whats_new_dialog_theme.h
)
target_include_directories(common_gui PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/themes
${CMAKE_CURRENT_SOURCE_DIR}/themes/shared
)
target_link_libraries(common_gui PUBLIC
Qt::Core
Qt::Core5Compat
Qt::Widgets
Qt::Network
Qt::Svg
common_all
yr_global
QsLog
)
# --- RHI flow (3D coverflow) ---
# Compiled twice with different defines, like the old GL flow pattern.
# Shaders are compiled from GLSL 450 source at build time via qt_add_shaders().
set(RHI_FLOW_SOURCES
rhi/flow_types.h
rhi/flow_types.cpp
rhi/yacreader_flow_rhi.h
rhi/yacreader_flow_rhi.cpp
rhi/yacreader_comic_flow_rhi.h
rhi/yacreader_comic_flow_rhi.cpp
rhi/yacreader_page_flow_rhi.h
rhi/yacreader_page_flow_rhi.cpp
)
add_library(rhi_flow_reader STATIC ${RHI_FLOW_SOURCES})
target_include_directories(rhi_flow_reader PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/rhi
)
target_compile_definitions(rhi_flow_reader PRIVATE YACREADER)
target_link_libraries(rhi_flow_reader PUBLIC
Qt::Core
Qt::Gui
Qt::GuiPrivate
Qt::Widgets
)
qt_add_shaders(rhi_flow_reader "flow_shaders_reader"
BASE rhi/shaders
PREFIX "/shaders"
GLSL "100es,120,150"
HLSL 50
MSL 12
FILES
rhi/shaders/flow.vert
rhi/shaders/flow.frag
)
add_library(rhi_flow_library STATIC ${RHI_FLOW_SOURCES})
target_include_directories(rhi_flow_library PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/rhi
)
target_compile_definitions(rhi_flow_library PRIVATE YACREADER_LIBRARY)
target_link_libraries(rhi_flow_library PUBLIC
Qt::Core
Qt::Gui
Qt::GuiPrivate
Qt::Widgets
)
qt_add_shaders(rhi_flow_library "flow_shaders_library"
BASE rhi/shaders
PREFIX "/shaders"
GLSL "100es,120,150"
HLSL 50
MSL 12
FILES
rhi/shaders/flow.vert
rhi/shaders/flow.frag
)
endif() # NOT BUILD_SERVER_STANDALONE