diff --git a/CMakeLists.txt b/CMakeLists.txt index fb0e85821..40b1bc4bb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -64,7 +64,7 @@ if(NOT DEFINED GIT_TAG_RELEASENAME) set(GIT_TAG_RELEASENAME "Graduation Day") endif() -# Use C++20 for all targets +# Use c++20 for all targets set(CMAKE_CXX_STANDARD 20 CACHE STRING "C++ ISO Standard" @@ -78,8 +78,6 @@ set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true) set(COCKATRICE_CMAKE_PATH "${PROJECT_SOURCE_DIR}/cmake") list(INSERT CMAKE_MODULE_PATH 0 "${COCKATRICE_CMAKE_PATH}") -set(CMAKE_POSITION_INDEPENDENT_CODE ON) - include(getversion) # Create a header and a cpp file containing the version hash @@ -185,7 +183,7 @@ find_package(Threads REQUIRED) message(STATUS "Update Translations: ${UPDATE_TRANSLATIONS}") -# Find Qt, minimum version is defined in cmake/FindQtRuntime.cmake +# Find Qt, min version is defined in that .cmake file include(FindQtRuntime) set(CMAKE_AUTOMOC TRUE) @@ -233,7 +231,7 @@ set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}") set(CPACK_PACKAGE_FILE_NAME "${PROJECT_VERSION_FILENAME}") if(UNIX) - if(APPLE) # macOS + if(APPLE) #macOS set(CPACK_GENERATOR DragNDrop ${CPACK_GENERATOR}) set(CPACK_GENERATOR "DragNDrop") set(CPACK_DMG_FORMAT "UDBZ") diff --git a/cmake/FindQtRuntime.cmake b/cmake/FindQtRuntime.cmake index f0d4d1e74..c549d9c25 100644 --- a/cmake/FindQtRuntime.cmake +++ b/cmake/FindQtRuntime.cmake @@ -3,17 +3,17 @@ # Find a compatible Qt version # # Inputs: +# WITH_SERVER # WITH_CLIENT # WITH_ORACLE -# WITH_SERVER # TEST # # Outputs: # COCKATRICE_QT_VERSION_NAME # QT_CORE_MODULE +# SERVATRICE_QT_MODULES # COCKATRICE_QT_MODULES # ORACLE_QT_MODULES -# SERVATRICE_QT_MODULES # TEST_QT_MODULES # QT_LIBRARY_DIR # QT_PLUGINS_DIR @@ -24,6 +24,8 @@ set(COCKATRICE_QT_VERSION_NAME Qt6) # Define the Qt components required by each target # --------------------------------------------------------------------------- +set(SERVATRICE_QT_COMPONENTS Network Sql WebSockets) + set(COCKATRICE_QT_COMPONENTS Concurrent Gui @@ -41,8 +43,6 @@ set(COCKATRICE_QT_COMPONENTS set(ORACLE_QT_COMPONENTS Concurrent Network Svg Widgets) -set(SERVATRICE_QT_COMPONENTS Network Sql WebSockets) - set(TEST_QT_COMPONENTS Concurrent Network Svg Widgets) # --------------------------------------------------------------------------- @@ -51,6 +51,10 @@ set(TEST_QT_COMPONENTS Concurrent Network Svg Widgets) set(REQUIRED_QT_COMPONENTS Core) +if(WITH_SERVER) + list(APPEND REQUIRED_QT_COMPONENTS ${SERVATRICE_QT_COMPONENTS}) +endif() + if(WITH_CLIENT) list(APPEND REQUIRED_QT_COMPONENTS ${COCKATRICE_QT_COMPONENTS}) endif() @@ -59,10 +63,6 @@ if(WITH_ORACLE) list(APPEND REQUIRED_QT_COMPONENTS ${ORACLE_QT_COMPONENTS}) endif() -if(WITH_SERVER) - list(APPEND REQUIRED_QT_COMPONENTS ${SERVATRICE_QT_COMPONENTS}) -endif() - if(TEST) list(APPEND REQUIRED_QT_COMPONENTS ${TEST_QT_COMPONENTS}) endif() @@ -73,28 +73,12 @@ list(REMOVE_DUPLICATES REQUIRED_QT_COMPONENTS) # Find Qt and define minimum version centrally # --------------------------------------------------------------------------- -find_package(Qt6 6.4 REQUIRED COMPONENTS ${REQUIRED_QT_COMPONENTS} LinguistTools) +find_package(Qt6 6.4 REQUIRED COMPONENTS ${REQUIRED_QT_COMPONENTS} Linguist) # --------------------------------------------------------------------------- -# Qt Linguist tools -# --------------------------------------------------------------------------- - -if(TARGET Qt6::lrelease) - set(QT6_LRELEASE_INDEX 0) -else() - message(WARNING "Qt6 lrelease not found.") -endif() - -if(TARGET Qt6::lupdate) - set(QT6_LUPDATE_INDEX 0) -else() - message(WARNING "Qt6 lupdate not found.") -endif() - -# --------------------------------------------------------------------------- -# Convert the component list such as: +# Convert a component list such as: # Network;Sql;WebSockets -# into Qt modules: +# into: # Qt6::Network;Qt6::Sql;Qt6::WebSockets # --------------------------------------------------------------------------- @@ -115,6 +99,10 @@ endfunction() # Export Qt target lists for the individual targets # --------------------------------------------------------------------------- +if(WITH_SERVER) + _qt_components_to_targets("${SERVATRICE_QT_COMPONENTS}" SERVATRICE_QT_MODULES) +endif() + if(WITH_CLIENT) _qt_components_to_targets("${COCKATRICE_QT_COMPONENTS}" COCKATRICE_QT_MODULES) endif() @@ -123,10 +111,6 @@ if(WITH_ORACLE) _qt_components_to_targets("${ORACLE_QT_COMPONENTS}" ORACLE_QT_MODULES) endif() -if(WITH_SERVER) - _qt_components_to_targets("${SERVATRICE_QT_COMPONENTS}" SERVATRICE_QT_MODULES) -endif() - if(TEST) _qt_components_to_targets("${TEST_QT_COMPONENTS}" TEST_QT_MODULES) endif() @@ -134,18 +118,36 @@ endif() # Core-only export (useful for headless libraries) set(QT_CORE_MODULE "${COCKATRICE_QT_VERSION_NAME}::Core") +# --------------------------------------------------------------------------- +# Qt Linguist tools +# --------------------------------------------------------------------------- + +if(TARGET Qt6::lrelease) + set(QT6_LRELEASE_INDEX 0) +else() + message(WARNING "Qt6 lrelease not found.") +endif() + +if(TARGET Qt6::lupdate) + set(QT6_LUPDATE_INDEX 0) +else() + message(WARNING "Qt6 lupdate not found.") +endif() + # --------------------------------------------------------------------------- # Qt runtime/plugin paths # --------------------------------------------------------------------------- -if(NOT TARGET "${QT_CORE_MODULE}") - message(FATAL_ERROR "${QT_CORE_MODULE} target is not available") +set(CMAKE_POSITION_INDEPENDENT_CODE ON) + +if(NOT TARGET Qt6::Core) + message(FATAL_ERROR "Qt6::Core target is not available") endif() -get_target_property(QT_LIBRARY_DIR "${QT_CORE_MODULE}" LOCATION) +get_target_property(QT_LIBRARY_DIR Qt6::Core LOCATION) get_filename_component(QT_LIBRARY_DIR "${QT_LIBRARY_DIR}" DIRECTORY) -get_filename_component(QT_LIBRARY_DIR "${QT_LIBRARY_DIR}/../../.." ABSOLUTE) get_filename_component(QT_PLUGINS_DIR "${Qt6Core_DIR}/../../../${QT6_INSTALL_PLUGINS}" ABSOLUTE) +get_filename_component(QT_LIBRARY_DIR "${QT_LIBRARY_DIR}/../../.." ABSOLUTE) if(UNIX AND APPLE) # macOS needs a bit more help finding all necessary components. @@ -156,8 +158,14 @@ endif() # Debug information # --------------------------------------------------------------------------- -message(STATUS "Found Qt: ${Qt6_DIR} (found version \"${Qt6_VERSION}\")") +message(DEBUG "QT_PLUGINS_DIR = ${QT_PLUGINS_DIR}") +message(DEBUG "QT_LIBRARY_DIR = ${QT_LIBRARY_DIR}") + +message(STATUS "Qt6_VERSION = ${Qt6_VERSION}") +message(STATUS "Qt6_DIR = ${Qt6_DIR}") +message(STATUS "Qt6Core_DIR = ${Qt6Core_DIR}") message(STATUS "REQUIRED_QT_COMPONENTS = ${REQUIRED_QT_COMPONENTS}") + if(WITH_CLIENT) message(STATUS "COCKATRICE_QT_MODULES = ${COCKATRICE_QT_MODULES}") endif() @@ -170,6 +178,3 @@ endif() if(TEST) message(STATUS "TEST_QT_MODULES = ${TEST_QT_MODULES}") endif() - -message(DEBUG "QT_PLUGINS_DIR = ${QT_PLUGINS_DIR}") -message(DEBUG "QT_LIBRARY_DIR = ${QT_LIBRARY_DIR}")