diff --git a/.cmake-format.json b/.cmake-format.json new file mode 100644 index 00000000..a3c5ea8d --- /dev/null +++ b/.cmake-format.json @@ -0,0 +1,106 @@ +{ + "format": { + "_help_line_width": [ + "How wide to allow formatted cmake files" + ], + "line_width": 120, + "_help_tab_size": [ + "How many spaces to tab for indent" + ], + "tab_size": 2, + "_help_max_subgroups_hwrap": [ + "If an argument group contains more than this many sub-groups", + "(parg or kwarg groups) then force it to a vertical layout." + ], + "max_subgroups_hwrap": 2, + "_help_max_pargs_hwrap": [ + "If a positional argument group contains more than this many", + "arguments, then force it to a vertical layout." + ], + "max_pargs_hwrap": 6, + "_help_max_rows_cmdline": [ + "If a cmdline positional group consumes more than this many", + "lines without nesting, then invalidate the layout (and nest)" + ], + "max_rows_cmdline": 5, + "_help_separate_ctrl_name_with_space": [ + "If true, separate flow control names from their parentheses", + "with a space" + ], + "separate_ctrl_name_with_space": false, + "_help_separate_fn_name_with_space": [ + "If true, separate function names from parentheses with a", + "space" + ], + "separate_fn_name_with_space": false, + "_help_dangle_parens": [ + "If a statement is wrapped to more than one line, than dangle", + "the closing parenthesis on its own line." + ], + "dangle_parens": true, + "_help_dangle_align": [ + "If the trailing parenthesis must be 'dangled' on its on", + "line, then align it to this reference: `prefix`: the start", + "of the statement, `prefix-indent`: the start of the", + "statement, plus one indentation level, `child`: align to", + "the column of the arguments" + ], + "dangle_align": "prefix", + "_help_min_prefix_chars": [ + "If the statement spelling length (including space and", + "parenthesis) is smaller than this amount, then force reject", + "nested layouts." + ], + "min_prefix_chars": 4, + "_help_max_prefix_chars": [ + "If the statement spelling length (including space and", + "parenthesis) is larger than the tab width by more than this", + "amount, then force reject un-nested layouts." + ], + "max_prefix_chars": 10, + "_help_max_lines_hwrap": [ + "If a candidate layout is wrapped horizontally but it exceeds", + "this many lines, then reject the layout." + ], + "max_lines_hwrap": 2, + "_help_line_ending": [ + "What style line endings to use in the output." + ], + "line_ending": "auto", + "_help_command_case": [ + "Format command names consistently as 'lower' or 'upper' case" + ], + "command_case": "lower", + "_help_keyword_case": [ + "Format keywords consistently as 'lower' or 'upper' case" + ], + "keyword_case": "upper", + "_help_always_wrap": [ + "A list of command names which should always be wrapped" + ], + "always_wrap": [], + "_help_enable_sort": [ + "If true, the argument lists which are known to be sortable", + "will be sorted lexicographically" + ], + "enable_sort": true, + "_help_autosort": [ + "If true, the parsers may infer whether or not an argument", + "list is sortable (without annotation)." + ], + "autosort": true, + "_help_require_valid_layout": [ + "By default, if cmake-format cannot successfully fit", + "everything into the desired line-width it will apply the", + "last, most aggressive attempt that it made. If this flag is", + "True, however, cmake-format will print error, exit with non-", + "zero status code, and write-out nothing" + ], + "require_valid_layout": false, + "_help_layout_passes": [ + "A dictionary mapping layout nodes to a list of wrap", + "decisions. See the documentation for more information." + ], + "layout_passes": {} + } +} \ No newline at end of file diff --git a/clangify.sh b/clangify.sh index ac1ab1be..49b12644 100755 --- a/clangify.sh +++ b/clangify.sh @@ -1,7 +1,7 @@ #!/bin/bash # This script will run clang-format on all modified, non-3rd-party C++/Header files. -# Never, ever, should this recieve a path with a newline in it. Don't bother proofing it for that. +# Never, ever, should this receive a path with a newline in it. Don't bother proofing it for that. # go to the project root directory, this file should be located in the project root directory diff --git a/cmake/FindLibexecinfo.cmake b/cmake/FindLibexecinfo.cmake index 60a6ad1a..b97ae8e9 100644 --- a/cmake/FindLibexecinfo.cmake +++ b/cmake/FindLibexecinfo.cmake @@ -1,18 +1,18 @@ # Find the LibExecinfo library - FreeBSD only -FIND_PATH(LIBEXECINFO_INCLUDE_DIR execinfo.h) -FIND_LIBRARY(LIBEXECINFO_LIBRARY NAMES execinfo) +find_path(LIBEXECINFO_INCLUDE_DIR execinfo.h) +find_library(LIBEXECINFO_LIBRARY NAMES execinfo) -IF(LIBEXECINFO_INCLUDE_DIR AND LIBEXECINFO_LIBRARY) - SET(LIBEXECINFO_FOUND TRUE) -ENDIF() +if(LIBEXECINFO_INCLUDE_DIR AND LIBEXECINFO_LIBRARY) + set(LIBEXECINFO_FOUND TRUE) +endif() -IF(LIBEXECINFO_FOUND) - IF(NOT LIBEXECINFO_FIND_QUIETLY) - MESSAGE(STATUS "Found LibExecinfo: ${EXECINFO_LIBRARY}") - ENDIF() -ELSE() - IF(LIBEXECINFO_FIND_REQUIRED) - MESSAGE(FATAL_ERROR "Could not find LibExecinfo") - ENDIF() -ENDIF() \ No newline at end of file +if(LIBEXECINFO_FOUND) + if(NOT LIBEXECINFO_FIND_QUIETLY) + message(STATUS "Found LibExecinfo: ${EXECINFO_LIBRARY}") + endif() +else() + if(LIBEXECINFO_FIND_REQUIRED) + message(FATAL_ERROR "Could not find LibExecinfo") + endif() +endif() diff --git a/cmake/FindQtRuntime.cmake b/cmake/FindQtRuntime.cmake index 8fe736cd..88875e7f 100644 --- a/cmake/FindQtRuntime.cmake +++ b/cmake/FindQtRuntime.cmake @@ -1,104 +1,105 @@ -# Find a compatible Qt version -# Inputs: WITH_SERVER, WITH_CLIENT, WITH_ORACLE, WITH_DBCONVERTER, FORCE_USE_QT5 -# Optional Input: QT6_DIR -- Hint as to where Qt6 lives on the system -# Optional Input: QT5_DIR -- Hint as to where Qt5 lives on the system -# Output: COCKATRICE_QT_VERSION_NAME -- Example values: Qt5, Qt6 -# Output: SERVATRICE_QT_MODULES -# Output: COCKATRICE_QT_MODULES -# Output: ORACLE_QT_MODULES -# Output: DBCONVERTER_QT_MODULES -# Output: TEST_QT_MODULES +# Find a compatible Qt version Inputs: WITH_SERVER, WITH_CLIENT, WITH_ORACLE, WITH_DBCONVERTER, FORCE_USE_QT5 Optional +# Input: QT6_DIR -- Hint as to where Qt6 lives on the system Optional Input: QT5_DIR -- Hint as to where Qt5 lives on +# the system Output: COCKATRICE_QT_VERSION_NAME -- Example values: Qt5, Qt6 Outputs: SERVATRICE_QT_MODULES, +# COCKATRICE_QT_MODULES, ORACLE_QT_MODULES, DBCONVERTER_QT_MODULES, TEST_QT_MODULES set(REQUIRED_QT_COMPONENTS Core) if(WITH_SERVER) - set(_SERVATRICE_NEEDED Network Sql WebSockets) + set(_SERVATRICE_NEEDED Network Sql WebSockets) endif() if(WITH_CLIENT) - set(_COCKATRICE_NEEDED Concurrent Gui Multimedia Network PrintSupport Svg Widgets WebSockets) + set(_COCKATRICE_NEEDED + Concurrent + Gui + Multimedia + Network + PrintSupport + Svg + Widgets + WebSockets + ) endif() if(WITH_ORACLE) - set(_ORACLE_NEEDED Concurrent Network Svg Widgets) + set(_ORACLE_NEEDED Concurrent Network Svg Widgets) endif() if(WITH_DBCONVERTER) - set(_DBCONVERTER_NEEDED Network Widgets) + set(_DBCONVERTER_NEEDED Network Widgets) endif() if(TEST) - set(_TEST_NEEDED Widgets) + set(_TEST_NEEDED Widgets) endif() -set(REQUIRED_QT_COMPONENTS - ${REQUIRED_QT_COMPONENTS} - ${_SERVATRICE_NEEDED} - ${_COCKATRICE_NEEDED} - ${_ORACLE_NEEDED} - ${_DBCONVERTER_NEEDED} - ${_TEST_NEEDED}) +set(REQUIRED_QT_COMPONENTS ${REQUIRED_QT_COMPONENTS} ${_SERVATRICE_NEEDED} ${_COCKATRICE_NEEDED} ${_ORACLE_NEEDED} + ${_DBCONVERTER_NEEDED} ${_TEST_NEEDED} +) list(REMOVE_DUPLICATES REQUIRED_QT_COMPONENTS) if(NOT FORCE_USE_QT5) - # Core5Compat is Qt6 Only, Linguist is now a component in Qt6 instead of an external package - find_package(Qt6 6.2.3 - COMPONENTS Core5Compat ${REQUIRED_QT_COMPONENTS} - OPTIONAL_COMPONENTS Linguist - QUIET - HINTS ${Qt6_DIR}) + # Core5Compat is Qt6 Only, Linguist is now a component in Qt6 instead of an external package + find_package( + Qt6 6.2.3 + COMPONENTS Core5Compat ${REQUIRED_QT_COMPONENTS} + OPTIONAL_COMPONENTS Linguist + QUIET HINTS ${Qt6_DIR} + ) endif() if(Qt6_FOUND) - set(COCKATRICE_QT_VERSION_NAME Qt6) + set(COCKATRICE_QT_VERSION_NAME Qt6) - if(Qt6LinguistTools_FOUND) - list(FIND Qt6LinguistTools_TARGETS Qt6::lrelease QT6_LRELEASE_INDEX) - if(QT6_LRELEASE_INDEX EQUAL -1) - message(WARNING "Qt6 lrelease not found.") - endif() - - list(FIND Qt6LinguistTools_TARGETS Qt6::lupdate QT6_LUPDATE_INDEX) - if(QT6_LUPDATE_INDEX EQUAL -1) - message(WARNING "Qt6 lupdate not found.") - endif() + if(Qt6LinguistTools_FOUND) + list(FIND Qt6LinguistTools_TARGETS Qt6::lrelease QT6_LRELEASE_INDEX) + if(QT6_LRELEASE_INDEX EQUAL -1) + message(WARNING "Qt6 lrelease not found.") endif() + + list(FIND Qt6LinguistTools_TARGETS Qt6::lupdate QT6_LUPDATE_INDEX) + if(QT6_LUPDATE_INDEX EQUAL -1) + message(WARNING "Qt6 lupdate not found.") + endif() + endif() else() - find_package(Qt5 5.8.0 - COMPONENTS ${REQUIRED_QT_COMPONENTS} - QUIET - HINTS ${Qt5_DIR}) - if(Qt5_FOUND) - set(COCKATRICE_QT_VERSION_NAME Qt5) - else() - message(FATAL_ERROR "No suitable version of Qt was found") - endif() + find_package( + Qt5 5.8.0 + COMPONENTS ${REQUIRED_QT_COMPONENTS} + QUIET HINTS ${Qt5_DIR} + ) + if(Qt5_FOUND) + set(COCKATRICE_QT_VERSION_NAME Qt5) + else() + message(FATAL_ERROR "No suitable version of Qt was found") + endif() - # Qt5 Linguist is in a separate package - find_package(Qt5LinguistTools QUIET) - if (Qt5LinguistTools_FOUND) - if(NOT Qt5_LRELEASE_EXECUTABLE) - message(WARNING "Qt5 lrelease not found.") - endif() - if(NOT Qt5_LUPDATE_EXECUTABLE) - message(WARNING "Qt5 lupdate not found.") - endif() - else() - message(WARNING "Linguist Tools not found, cannot handle translations") + # Qt5 Linguist is in a separate package + find_package(Qt5LinguistTools QUIET) + if(Qt5LinguistTools_FOUND) + if(NOT Qt5_LRELEASE_EXECUTABLE) + message(WARNING "Qt5 lrelease not found.") endif() + if(NOT Qt5_LUPDATE_EXECUTABLE) + message(WARNING "Qt5 lupdate not found.") + endif() + else() + message(WARNING "Linguist Tools not found, cannot handle translations") + endif() endif() if(Qt5_POSITION_INDEPENDENT_CODE OR Qt6_FOUND) - set(CMAKE_POSITION_INDEPENDENT_CODE ON) + set(CMAKE_POSITION_INDEPENDENT_CODE ON) endif() # Establish Qt Plugins directory & Library directories get_target_property(QT_LIBRARY_DIR ${COCKATRICE_QT_VERSION_NAME}::Core LOCATION) get_filename_component(QT_LIBRARY_DIR ${QT_LIBRARY_DIR} DIRECTORY) if(Qt6_FOUND) - 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) - # Mac needs a bit more help finding all necessary components - list(APPEND QT_LIBRARY_DIR "/usr/local/lib") - endif() + 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) + # Mac needs a bit more help finding all necessary components + list(APPEND QT_LIBRARY_DIR "/usr/local/lib") + endif() elseif(Qt5_FOUND) - get_filename_component(QT_PLUGINS_DIR "${Qt5Core_DIR}/../../../plugins" ABSOLUTE) - get_filename_component(QT_LIBRARY_DIR "${QT_LIBRARY_DIR}/.." ABSOLUTE) + get_filename_component(QT_PLUGINS_DIR "${Qt5Core_DIR}/../../../plugins" ABSOLUTE) + get_filename_component(QT_LIBRARY_DIR "${QT_LIBRARY_DIR}/.." ABSOLUTE) endif() message(DEBUG "QT_PLUGINS_DIR = ${QT_PLUGINS_DIR}") message(DEBUG "QT_LIBRARY_DIR = ${QT_LIBRARY_DIR}") @@ -110,9 +111,9 @@ string(REGEX REPLACE "([^;]+)" "${COCKATRICE_QT_VERSION_NAME}::\\1" ORACLE_QT_MO string(REGEX REPLACE "([^;]+)" "${COCKATRICE_QT_VERSION_NAME}::\\1" DB_CONVERTER_QT_MODULES "${_DBCONVERTER_NEEDED}") string(REGEX REPLACE "([^;]+)" "${COCKATRICE_QT_VERSION_NAME}::\\1" TEST_QT_MODULES "${_TEST_NEEDED}") if(Qt6_FOUND) - list(APPEND SERVATRICE_QT_MODULES ${COCKATRICE_QT_VERSION_NAME}::Core5Compat) - list(APPEND COCKATRICE_QT_MODULES ${COCKATRICE_QT_VERSION_NAME}::Core5Compat) - LIST(APPEND ORACLE_QT_MODULES ${COCKATRICE_QT_VERSION_NAME}::Core5Compat) + list(APPEND SERVATRICE_QT_MODULES ${COCKATRICE_QT_VERSION_NAME}::Core5Compat) + list(APPEND COCKATRICE_QT_MODULES ${COCKATRICE_QT_VERSION_NAME}::Core5Compat) + list(APPEND ORACLE_QT_MODULES ${COCKATRICE_QT_VERSION_NAME}::Core5Compat) endif() -message(STATUS "Found Qt ${${COCKATRICE_QT_VERSION_NAME}_VERSION} at: ${${COCKATRICE_QT_VERSION_NAME}_DIR}") \ No newline at end of file +message(STATUS "Found Qt ${${COCKATRICE_QT_VERSION_NAME}_VERSION} at: ${${COCKATRICE_QT_VERSION_NAME}_DIR}") diff --git a/cmake/FindVCredistRuntime.cmake b/cmake/FindVCredistRuntime.cmake index a9d07445..718d801c 100644 --- a/cmake/FindVCredistRuntime.cmake +++ b/cmake/FindVCredistRuntime.cmake @@ -1,36 +1,38 @@ # Find the MS Visual Studio VC redistributable package -if (WIN32) - set(VCREDISTRUNTIME_FOUND "NO") +if(WIN32) + set(VCREDISTRUNTIME_FOUND "NO") - if(CMAKE_SIZEOF_VOID_P EQUAL 8) # 64-bit - set(REDIST_ARCH x64) - else() - set(REDIST_ARCH x86) + if(CMAKE_SIZEOF_VOID_P EQUAL 8) # 64-bit + set(REDIST_ARCH x64) + else() + set(REDIST_ARCH x86) + endif() + + set(REDIST_FILE vcredist_${REDIST_ARCH}.exe) + + set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE) + include(InstallRequiredSystemLibraries) + + # Check if the list contains minimum one element, to get the path from + list(LENGTH CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS libsCount) + if(libsCount GREATER 0) + list(GET CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS 0 _path) + + get_filename_component(_path ${_path} DIRECTORY) + get_filename_component(_path ${_path}/../../ ABSOLUTE) + + if(EXISTS "${_path}/${REDIST_FILE}") # VS 2017 + set(VCREDISTRUNTIME_FOUND "YES") + set(VCREDISTRUNTIME_FILE ${_path}/${REDIST_FILE}) endif() + endif() - set(REDIST_FILE vcredist_${REDIST_ARCH}.exe) - - set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE) - include(InstallRequiredSystemLibraries) - - # Check if the list contains minimum one element, to get the path from - list(LENGTH CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS libsCount) - if (libsCount GREATER 0) - list(GET CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS 0 _path) - - get_filename_component(_path ${_path} DIRECTORY) - get_filename_component(_path ${_path}/../../ ABSOLUTE) - - if (EXISTS "${_path}/${REDIST_FILE}") # VS 2017 - set(VCREDISTRUNTIME_FOUND "YES") - set(VCREDISTRUNTIME_FILE ${_path}/${REDIST_FILE}) - endif() - endif() - - if(VCREDISTRUNTIME_FOUND) - message(STATUS "Found VCredist ${VCREDISTRUNTIME_FILE}") - else() - message(WARNING "Could not find VCredist package. It's not required for compiling, but needs to be available at runtime.") - endif() + if(VCREDISTRUNTIME_FOUND) + message(STATUS "Found VCredist ${VCREDISTRUNTIME_FILE}") + else() + message( + WARNING "Could not find VCredist package. It's not required for compiling, but needs to be available at runtime." + ) + endif() endif() diff --git a/cmake/FindWin32SslRuntime.cmake b/cmake/FindWin32SslRuntime.cmake index 0d3506fd..b4861dd3 100644 --- a/cmake/FindWin32SslRuntime.cmake +++ b/cmake/FindWin32SslRuntime.cmake @@ -1,5 +1,4 @@ -# Find the OpenSSL runtime libraries (.dll) for Windows that -# will be needed by Qt in order to access https urls. +# Find the OpenSSL runtime libraries (.dll) for Windows that will be needed by Qt in order to access https urls. if(NOT DEFINED WIN32 OR NOT ${WIN32}) message(STATUS "Non-Windows device trying to execute FindWin32SslRuntime, skipping") return() @@ -8,48 +7,64 @@ endif() if("${CMAKE_GENERATOR_PLATFORM}" STREQUAL "x64") message(STATUS "Looking for OpenSSL for ${CMAKE_GENERATOR_PLATFORM}") file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles) - set(_OPENSSL_ROOT_PATHS - "$ENV{VCPKG_PACKAGES_DIR}/x64-windows/bin" - "C:/OpenSSL-Win64/bin" - "C:/OpenSSL-Win64" - "C:/Tools/vcpkg/installed/x64-windows/bin" - "${_programfiles}/OpenSSL-Win64" - ) + set(_OPENSSL_ROOT_PATHS "$ENV{VCPKG_PACKAGES_DIR}/x64-windows/bin" "C:/OpenSSL-Win64/bin" "C:/OpenSSL-Win64" + "C:/Tools/vcpkg/installed/x64-windows/bin" "${_programfiles}/OpenSSL-Win64" + ) unset(_programfiles) elseif("${CMAKE_GENERATOR_PLATFORM}" STREQUAL "Win32") message(STATUS "Looking for OpenSSL for ${CMAKE_GENERATOR_PLATFORM}") file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles) set(_OPENSSL_ROOT_PATHS - "$ENV{VCPKG_PACKAGES_DIR}/x86-windows/bin" - "C:/OpenSSL-Win32/bin" - "C:/OpenSSL-Win32" - "C:/OpenSSL" - "C:/Tools/vcpkg/installed/x86-windows/bin" - "${_programfiles}/OpenSSL" - "${_programfiles}/OpenSSL-Win32" - ) + "$ENV{VCPKG_PACKAGES_DIR}/x86-windows/bin" + "C:/OpenSSL-Win32/bin" + "C:/OpenSSL-Win32" + "C:/OpenSSL" + "C:/Tools/vcpkg/installed/x86-windows/bin" + "${_programfiles}/OpenSSL" + "${_programfiles}/OpenSSL-Win32" + ) unset(_programfiles) endif() message(STATUS "Looking for OpenSSL @ $ENV{CMAKE_GENERATOR_PLATFORM} in ${_OPENSSL_ROOT_PATHS}") if("$ENV{CMAKE_GENERATOR_PLATFORM}" STREQUAL "x64") - FIND_FILE(WIN32SSLRUNTIME_LIBEAY NAMES libcrypto-1_1-x64.dll libcrypto.dll PATHS ${_OPENSSL_ROOT_PATHS} NO_DEFAULT_PATH) - FIND_FILE(WIN32SSLRUNTIME_SSLEAY NAMES libssl-1_1-x64.dll libssl.dll PATHS ${_OPENSSL_ROOT_PATHS} NO_DEFAULT_PATH) + find_file( + WIN32SSLRUNTIME_LIBEAY + NAMES libcrypto-1_1-x64.dll libcrypto.dll + PATHS ${_OPENSSL_ROOT_PATHS} + NO_DEFAULT_PATH + ) + find_file( + WIN32SSLRUNTIME_SSLEAY + NAMES libssl-1_1-x64.dll libssl.dll + PATHS ${_OPENSSL_ROOT_PATHS} + NO_DEFAULT_PATH + ) elseif("$ENV{CMAKE_GENERATOR_PLATFORM}" STREQUAL "Win32") - FIND_FILE(WIN32SSLRUNTIME_LIBEAY NAMES libcrypto-1_1.dll libcrypto.dll PATHS ${_OPENSSL_ROOT_PATHS} NO_DEFAULT_PATH) - FIND_FILE(WIN32SSLRUNTIME_SSLEAY NAMES libssl-1_1.dll libssl.dll PATHS ${_OPENSSL_ROOT_PATHS} NO_DEFAULT_PATH) + find_file( + WIN32SSLRUNTIME_LIBEAY + NAMES libcrypto-1_1.dll libcrypto.dll + PATHS ${_OPENSSL_ROOT_PATHS} + NO_DEFAULT_PATH + ) + find_file( + WIN32SSLRUNTIME_SSLEAY + NAMES libssl-1_1.dll libssl.dll + PATHS ${_OPENSSL_ROOT_PATHS} + NO_DEFAULT_PATH + ) endif() -IF(WIN32SSLRUNTIME_LIBEAY AND WIN32SSLRUNTIME_SSLEAY) - SET(WIN32SSLRUNTIME_LIBRARIES "${WIN32SSLRUNTIME_LIBEAY}" "${WIN32SSLRUNTIME_SSLEAY}") - SET(WIN32SSLRUNTIME_FOUND "YES") +if(WIN32SSLRUNTIME_LIBEAY AND WIN32SSLRUNTIME_SSLEAY) + set(WIN32SSLRUNTIME_LIBRARIES "${WIN32SSLRUNTIME_LIBEAY}" "${WIN32SSLRUNTIME_SSLEAY}") + set(WIN32SSLRUNTIME_FOUND "YES") message(STATUS "Found OpenSSL ${WIN32SSLRUNTIME_LIBRARIES}") -ELSE() - SET(WIN32SSLRUNTIME_FOUND "NO") - message(WARNING "Could not find OpenSSL runtime libraries. They are not required for compiling, but needs to be available at runtime.") -ENDIF() - -MARK_AS_ADVANCED( - WIN32SSLRUNTIME_LIBEAY - WIN32SSLRUNTIME_SSLEAY +else() + set(WIN32SSLRUNTIME_FOUND "NO") + message( + WARNING + "Could not find OpenSSL runtime libraries. They are not required for compiling, but needs to be available at runtime." ) +endif() + +mark_as_advanced(WIN32SSLRUNTIME_LIBEAY WIN32SSLRUNTIME_SSLEAY) diff --git a/cmake/createversionfile.cmake b/cmake/createversionfile.cmake index b27a2e4f..064c9581 100644 --- a/cmake/createversionfile.cmake +++ b/cmake/createversionfile.cmake @@ -1,21 +1,24 @@ set(VERSION_STRING_CPP "${PROJECT_BINARY_DIR}/version_string.cpp") set(VERSION_STRING_H "${PROJECT_BINARY_DIR}/version_string.h") -INCLUDE_DIRECTORIES(${PROJECT_BINARY_DIR}) +include_directories(${PROJECT_BINARY_DIR}) -set( hstring "extern const char *VERSION_STRING\; +set(hstring + "extern const char *VERSION_STRING\; extern const char *VERSION_COMMIT\; -extern const char *VERSION_DATE\;\n" ) -set( cppstring "const char *VERSION_STRING = \"${PROJECT_VERSION_FRIENDLY}\"\; +extern const char *VERSION_DATE\;\n" +) +set(cppstring + "const char *VERSION_STRING = \"${PROJECT_VERSION_FRIENDLY}\"\; const char *VERSION_COMMIT = \"${GIT_COMMIT_ID}\"\; -const char *VERSION_DATE = \"${GIT_COMMIT_DATE_FRIENDLY}\"\;\n") - -file(WRITE ${PROJECT_BINARY_DIR}/version_string.cpp.txt ${cppstring} ) -file(WRITE ${PROJECT_BINARY_DIR}/version_string.h.txt ${hstring} ) - -execute_process( - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PROJECT_BINARY_DIR}/version_string.h.txt ${VERSION_STRING_H} -) -execute_process( - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PROJECT_BINARY_DIR}/version_string.cpp.txt ${VERSION_STRING_CPP} +const char *VERSION_DATE = \"${GIT_COMMIT_DATE_FRIENDLY}\"\;\n" ) +file(WRITE ${PROJECT_BINARY_DIR}/version_string.cpp.txt ${cppstring}) +file(WRITE ${PROJECT_BINARY_DIR}/version_string.h.txt ${hstring}) + +execute_process( + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PROJECT_BINARY_DIR}/version_string.h.txt ${VERSION_STRING_H} +) +execute_process( + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PROJECT_BINARY_DIR}/version_string.cpp.txt ${VERSION_STRING_CPP} +) diff --git a/cmake/getversion.cmake b/cmake/getversion.cmake index e01cf4fa..f50069f3 100644 --- a/cmake/getversion.cmake +++ b/cmake/getversion.cmake @@ -1,154 +1,183 @@ # HELPER FUNCTIONS function(get_commit_id) - # get last commit hash - execute_process( - COMMAND ${GIT_EXECUTABLE} log -1 --abbrev=7 --date=short "--pretty=%h" - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} - RESULT_VARIABLE res_var - OUTPUT_VARIABLE GIT_COM_ID - ) - if(NOT ${res_var} EQUAL 0) - message(WARNING "Git failed (not a repo, or no tags). Build will not contain git revision info.") - return() - endif() + # get last commit hash + execute_process( + COMMAND ${GIT_EXECUTABLE} log -1 --abbrev=7 --date=short "--pretty=%h" + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + RESULT_VARIABLE res_var + OUTPUT_VARIABLE GIT_COM_ID + ) + if(NOT ${res_var} EQUAL 0) + message(WARNING "Git failed (not a repo, or no tags). Build will not contain git revision info.") + return() + endif() - string(REPLACE "\n" "" GIT_COM_ID "${GIT_COM_ID}") - set(GIT_COMMIT_ID "${GIT_COM_ID}" PARENT_SCOPE) - set(PROJECT_VERSION_LABEL "custom(${GIT_COM_ID})" PARENT_SCOPE) + string(REPLACE "\n" "" GIT_COM_ID "${GIT_COM_ID}") + set(GIT_COMMIT_ID + "${GIT_COM_ID}" + PARENT_SCOPE + ) + set(PROJECT_VERSION_LABEL + "custom(${GIT_COM_ID})" + PARENT_SCOPE + ) endfunction() function(get_commit_date) - # get last commit date - execute_process( - COMMAND ${GIT_EXECUTABLE} log -1 --date=short "--pretty=%cd" - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} - RESULT_VARIABLE res_var - OUTPUT_VARIABLE GIT_COM_DATE - ) - if(NOT ${res_var} EQUAL 0) - message(WARNING "Git failed (not a repo, or no tags). Build will not contain git revision info.") - return() - endif() + # get last commit date + execute_process( + COMMAND ${GIT_EXECUTABLE} log -1 --date=short "--pretty=%cd" + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + RESULT_VARIABLE res_var + OUTPUT_VARIABLE GIT_COM_DATE + ) + if(NOT ${res_var} EQUAL 0) + message(WARNING "Git failed (not a repo, or no tags). Build will not contain git revision info.") + return() + endif() - string(REPLACE "\n" "" GIT_COM_DATE "${GIT_COM_DATE}") - set(GIT_COMMIT_DATE_FRIENDLY "${GIT_COM_DATE}" PARENT_SCOPE) + string(REPLACE "\n" "" GIT_COM_DATE "${GIT_COM_DATE}") + set(GIT_COMMIT_DATE_FRIENDLY + "${GIT_COM_DATE}" + PARENT_SCOPE + ) - string(REPLACE "-" "" GIT_COM_DATE "${GIT_COM_DATE}") - set(GIT_COMMIT_DATE "${GIT_COM_DATE}" PARENT_SCOPE) + string(REPLACE "-" "" GIT_COM_DATE "${GIT_COM_DATE}") + set(GIT_COMMIT_DATE + "${GIT_COM_DATE}" + PARENT_SCOPE + ) endfunction() function(get_tag_name commit) - if(${commit} STREQUAL "unknown") - return() - endif() + if(${commit} STREQUAL "unknown") + return() + endif() - execute_process( - COMMAND ${GIT_EXECUTABLE} describe --exact-match --tags ${commit} - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} - RESULT_VARIABLE res_var - OUTPUT_VARIABLE GIT_TAG - ERROR_VARIABLE GIT_TAG_ERR - ) + execute_process( + COMMAND ${GIT_EXECUTABLE} describe --exact-match --tags ${commit} + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + RESULT_VARIABLE res_var + OUTPUT_VARIABLE GIT_TAG + ERROR_VARIABLE GIT_TAG_ERR + ) - if((NOT ${res_var} EQUAL 0) OR (${GIT_TAG_ERR} MATCHES "fatal: no tag exactly matches.*")) - message(STATUS "Commit is not a release or prerelease (no git tag found)") - return() - endif() + if((NOT ${res_var} EQUAL 0) OR (${GIT_TAG_ERR} MATCHES "fatal: no tag exactly matches.*")) + message(STATUS "Commit is not a release or prerelease (no git tag found)") + return() + endif() - string(REPLACE "\n" "" GIT_TAG "${GIT_TAG}") - message(STATUS "Commit is a release or prerelease, git tag: ${GIT_TAG}") + string(REPLACE "\n" "" GIT_TAG "${GIT_TAG}") + message(STATUS "Commit is a release or prerelease, git tag: ${GIT_TAG}") - # Extract information from tag: - # YYYY-MM-DD-Release-MAJ.MIN.PATCH - # YYYY-MM-DD-Development-MAJ.MIN.PATCH-beta.X - string(REPLACE "-" ";" GIT_TAG_EXPLODED "${GIT_TAG}") - string(REPLACE "." ";" GIT_TAG_EXPLODED "${GIT_TAG_EXPLODED}") + # Extract information from tag: YYYY-MM-DD-Release-MAJ.MIN.PATCH YYYY-MM-DD-Development-MAJ.MIN.PATCH-beta.X + string(REPLACE "-" ";" GIT_TAG_EXPLODED "${GIT_TAG}") + string(REPLACE "." ";" GIT_TAG_EXPLODED "${GIT_TAG_EXPLODED}") - # Sanity checks: length - list(LENGTH GIT_TAG_EXPLODED GIT_TAG_LISTCOUNT) - if(${GIT_TAG_LISTCOUNT} LESS 7 OR ${GIT_TAG_LISTCOUNT} GREATER 9) - message(WARNING "Invalid tag format, got ${GIT_TAG_LISTCOUNT} tokens") - return() - endif() + # Sanity checks: length + list(LENGTH GIT_TAG_EXPLODED GIT_TAG_LISTCOUNT) + if(${GIT_TAG_LISTCOUNT} LESS 7 OR ${GIT_TAG_LISTCOUNT} GREATER 9) + message(WARNING "Invalid tag format, got ${GIT_TAG_LISTCOUNT} tokens") + return() + endif() - # Year - list(GET GIT_TAG_EXPLODED 0 GIT_TAG_YEAR) - if(${GIT_TAG_YEAR} LESS 2017 OR ${GIT_TAG_LISTCOUNT} GREATER 2100) - message(WARNING "Invalid tag year ${GIT_TAG_YEAR}") - return() - endif() + # Year + list(GET GIT_TAG_EXPLODED 0 GIT_TAG_YEAR) + if(${GIT_TAG_YEAR} LESS 2017 OR ${GIT_TAG_LISTCOUNT} GREATER 2100) + message(WARNING "Invalid tag year ${GIT_TAG_YEAR}") + return() + endif() - # Month - list(GET GIT_TAG_EXPLODED 1 GIT_TAG_MONTH) - if(${GIT_TAG_MONTH} LESS 1 OR ${GIT_TAG_MONTH} GREATER 12) - message(WARNING "Invalid tag month ${GIT_TAG_MONTH}") - return() - endif() + # Month + list(GET GIT_TAG_EXPLODED 1 GIT_TAG_MONTH) + if(${GIT_TAG_MONTH} LESS 1 OR ${GIT_TAG_MONTH} GREATER 12) + message(WARNING "Invalid tag month ${GIT_TAG_MONTH}") + return() + endif() - # Day - list(GET GIT_TAG_EXPLODED 2 GIT_TAG_DAY) - if(${GIT_TAG_DAY} LESS 1 OR ${GIT_TAG_DAY} GREATER 31) - message(WARNING "Invalid tag day ${GIT_TAG_DAY}") - return() - endif() + # Day + list(GET GIT_TAG_EXPLODED 2 GIT_TAG_DAY) + if(${GIT_TAG_DAY} LESS 1 OR ${GIT_TAG_DAY} GREATER 31) + message(WARNING "Invalid tag day ${GIT_TAG_DAY}") + return() + endif() - # Type - list(GET GIT_TAG_EXPLODED 3 GIT_TAG_TYPE) - if(NOT(${GIT_TAG_TYPE} STREQUAL "Release" OR ${GIT_TAG_TYPE} STREQUAL "Development")) - message(WARNING "Invalid tag type ${GIT_TAG_TYPE}") - return() - endif() + # Type + list(GET GIT_TAG_EXPLODED 3 GIT_TAG_TYPE) + if(NOT (${GIT_TAG_TYPE} STREQUAL "Release" OR ${GIT_TAG_TYPE} STREQUAL "Development")) + message(WARNING "Invalid tag type ${GIT_TAG_TYPE}") + return() + endif() - # Major - list(GET GIT_TAG_EXPLODED 4 GIT_TAG_MAJOR) - if(${GIT_TAG_MAJOR} LESS 0 OR ${GIT_TAG_MAJOR} GREATER 99) - message(WARNING "Invalid tag major version ${GIT_TAG_MAJOR}") - return() - endif() + # Major + list(GET GIT_TAG_EXPLODED 4 GIT_TAG_MAJOR) + if(${GIT_TAG_MAJOR} LESS 0 OR ${GIT_TAG_MAJOR} GREATER 99) + message(WARNING "Invalid tag major version ${GIT_TAG_MAJOR}") + return() + endif() - # Minor - list(GET GIT_TAG_EXPLODED 5 GIT_TAG_MINOR) - if(${GIT_TAG_MINOR} LESS 0 OR ${GIT_TAG_MINOR} GREATER 99) - message(WARNING "Invalid tag minor version ${GIT_TAG_MINOR}") - return() - endif() + # Minor + list(GET GIT_TAG_EXPLODED 5 GIT_TAG_MINOR) + if(${GIT_TAG_MINOR} LESS 0 OR ${GIT_TAG_MINOR} GREATER 99) + message(WARNING "Invalid tag minor version ${GIT_TAG_MINOR}") + return() + endif() - # Patch - list(GET GIT_TAG_EXPLODED 6 GIT_TAG_PATCH) - if(${GIT_TAG_PATCH} LESS 0 OR ${GIT_TAG_PATCH} GREATER 99) - message(WARNING "Invalid tag patch version ${GIT_TAG_PATCH}") - return() - endif() + # Patch + list(GET GIT_TAG_EXPLODED 6 GIT_TAG_PATCH) + if(${GIT_TAG_PATCH} LESS 0 OR ${GIT_TAG_PATCH} GREATER 99) + message(WARNING "Invalid tag patch version ${GIT_TAG_PATCH}") + return() + endif() - # Label - # 7 = Stable release - # 8 = Dev release, first beta so only "beta" attached - # 9 = Dev release, subsequent beta so "beta.N" attached (N>=2) - if(${GIT_TAG_LISTCOUNT} EQUAL 8) - list(GET GIT_TAG_EXPLODED 7 GIT_TAG_LABEL) - elseif(${GIT_TAG_LISTCOUNT} EQUAL 9) - list(GET GIT_TAG_EXPLODED 7 GIT_TAG_LABEL) - list(GET GIT_TAG_EXPLODED 8 GIT_TAG_LABEL_NUM) - set(GIT_TAG_LABEL ${GIT_TAG_LABEL} ${GIT_TAG_LABEL_NUM}) - string(REPLACE ";" "." GIT_TAG_LABEL "${GIT_TAG_LABEL}") - else() - SET(GIT_TAG_LABEL "") - endif() + # Label 7 = Stable release 8 = Dev release, first beta so only "beta" attached 9 = Dev release, subsequent beta so + # "beta.N" attached (N>=2) + if(${GIT_TAG_LISTCOUNT} EQUAL 8) + list(GET GIT_TAG_EXPLODED 7 GIT_TAG_LABEL) + elseif(${GIT_TAG_LISTCOUNT} EQUAL 9) + list(GET GIT_TAG_EXPLODED 7 GIT_TAG_LABEL) + list(GET GIT_TAG_EXPLODED 8 GIT_TAG_LABEL_NUM) + set(GIT_TAG_LABEL ${GIT_TAG_LABEL} ${GIT_TAG_LABEL_NUM}) + string(REPLACE ";" "." GIT_TAG_LABEL "${GIT_TAG_LABEL}") + else() + set(GIT_TAG_LABEL "") + endif() - # Override hardcoded version with the informations from the tag - set(PROJECT_VERSION_MAJOR ${GIT_TAG_MAJOR} PARENT_SCOPE) - set(PROJECT_VERSION_MINOR ${GIT_TAG_MINOR} PARENT_SCOPE) - set(PROJECT_VERSION_PATCH ${GIT_TAG_PATCH} PARENT_SCOPE) - set(PROJECT_VERSION_LABEL ${GIT_TAG_LABEL} PARENT_SCOPE) + # Override hardcoded version with the informations from the tag + set(PROJECT_VERSION_MAJOR + ${GIT_TAG_MAJOR} + PARENT_SCOPE + ) + set(PROJECT_VERSION_MINOR + ${GIT_TAG_MINOR} + PARENT_SCOPE + ) + set(PROJECT_VERSION_PATCH + ${GIT_TAG_PATCH} + PARENT_SCOPE + ) + set(PROJECT_VERSION_LABEL + ${GIT_TAG_LABEL} + PARENT_SCOPE + ) - if(${GIT_TAG_TYPE} STREQUAL "Development") - set(PROJECT_VERSION_LABEL ${GIT_TAG_LABEL} PARENT_SCOPE) - elseif(${GIT_TAG_TYPE} STREQUAL "Release") - set(PROJECT_VERSION_LABEL "" PARENT_SCOPE) - # set release name from env var - set(PROJECT_VERSION_RELEASENAME "${GIT_TAG_RELEASENAME}" PARENT_SCOPE) - endif() + if(${GIT_TAG_TYPE} STREQUAL "Development") + set(PROJECT_VERSION_LABEL + ${GIT_TAG_LABEL} + PARENT_SCOPE + ) + elseif(${GIT_TAG_TYPE} STREQUAL "Release") + set(PROJECT_VERSION_LABEL + "" + PARENT_SCOPE + ) + # set release name from env var + set(PROJECT_VERSION_RELEASENAME + "${GIT_TAG_RELEASENAME}" + PARENT_SCOPE + ) + endif() endfunction() @@ -163,16 +192,16 @@ set(PROJECT_VERSION_RELEASENAME "") find_package(Git) if(GIT_FOUND) - get_commit_id() - get_commit_date() - get_tag_name(${GIT_COMMIT_ID}) + get_commit_id() + get_commit_date() + get_tag_name(${GIT_COMMIT_ID}) else() - message( WARNING "Git not found. Build will not contain git revision info." ) + message(WARNING "Git not found. Build will not contain git revision info.") endif() set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}") if(PROJECT_VERSION_LABEL) - set(PROJECT_VERSION "${PROJECT_VERSION}-${PROJECT_VERSION_LABEL}") + set(PROJECT_VERSION "${PROJECT_VERSION}-${PROJECT_VERSION_LABEL}") endif() set(PROJECT_VERSION_FRIENDLY "${PROJECT_VERSION} (${GIT_COMMIT_DATE_FRIENDLY})") @@ -180,7 +209,7 @@ set(PROJECT_VERSION_FRIENDLY "${PROJECT_VERSION} (${GIT_COMMIT_DATE_FRIENDLY})") # Format: [-ReleaseName]-MAJ.MIN.PATCH[-prerelease_label] set(PROJECT_VERSION_FILENAME "${PROJECT_NAME}") if(PROJECT_VERSION_RELEASENAME) - set(PROJECT_VERSION_FILENAME "${PROJECT_VERSION_FILENAME}-${PROJECT_VERSION_RELEASENAME}") + set(PROJECT_VERSION_FILENAME "${PROJECT_VERSION_FILENAME}-${PROJECT_VERSION_RELEASENAME}") endif() set(PROJECT_VERSION_FILENAME "${PROJECT_VERSION_FILENAME}-${PROJECT_VERSION}") diff --git a/cmakeify.sh b/cmakeify.sh new file mode 100755 index 00000000..159bf3c4 --- /dev/null +++ b/cmakeify.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +# go to the project root directory, this file should be located in the project root directory +cd "${BASH_SOURCE%/*}/" || exit 2 # could not find path, this could happen with special links etc. + +# CMake-Format +cmake_format_cmd="cmake-format" + +if ! hash $cmake_format_cmd 2>/dev/null; then + echo "could not find $cmake_format_cmd, skipping" >&2 + return +fi + +$cmake_format_cmd -i cmake/*.cmake */CMakeLists.txt CMakeLists.txt diff --git a/cockatrice/CMakeLists.txt b/cockatrice/CMakeLists.txt index b8b6b11a..254345fa 100644 --- a/cockatrice/CMakeLists.txt +++ b/cockatrice/CMakeLists.txt @@ -2,9 +2,9 @@ # # provides the cockatrice binary -PROJECT(Cockatrice VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}") +project(Cockatrice VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}") -SET(cockatrice_SOURCES +set(cockatrice_SOURCES src/abstractcarddragitem.cpp src/abstractcarditem.cpp src/abstractclient.cpp @@ -127,212 +127,266 @@ SET(cockatrice_SOURCES src/zoneviewwidget.cpp src/zoneviewzone.cpp ${VERSION_STRING_CPP} - ) +) add_subdirectory(sounds) add_subdirectory(themes) set(cockatrice_RESOURCES cockatrice.qrc) -IF(UPDATE_TRANSLATIONS) - FILE(GLOB_RECURSE translate_cockatrice_SRCS ${CMAKE_SOURCE_DIR}/cockatrice/src/*.cpp ${CMAKE_SOURCE_DIR}/cockatrice/src/*.h) - FILE(GLOB_RECURSE translate_common_SRCS ${CMAKE_SOURCE_DIR}/common/*.cpp ${CMAKE_SOURCE_DIR}/common/*.h) - SET(translate_SRCS ${translate_cockatrice_SRCS} ${translate_common_SRCS}) - SET(cockatrice_TS "${CMAKE_CURRENT_SOURCE_DIR}/cockatrice_en@source.ts") -ELSE() - FILE(GLOB cockatrice_TS "${CMAKE_CURRENT_SOURCE_DIR}/translations/*.ts") -ENDIF(UPDATE_TRANSLATIONS) +if(UPDATE_TRANSLATIONS) + file(GLOB_RECURSE translate_cockatrice_SRCS ${CMAKE_SOURCE_DIR}/cockatrice/src/*.cpp + ${CMAKE_SOURCE_DIR}/cockatrice/src/*.h + ) + file(GLOB_RECURSE translate_common_SRCS ${CMAKE_SOURCE_DIR}/common/*.cpp ${CMAKE_SOURCE_DIR}/common/*.h) + set(translate_SRCS ${translate_cockatrice_SRCS} ${translate_common_SRCS}) + set(cockatrice_TS "${CMAKE_CURRENT_SOURCE_DIR}/cockatrice_en@source.ts") +else() + file(GLOB cockatrice_TS "${CMAKE_CURRENT_SOURCE_DIR}/translations/*.ts") +endif(UPDATE_TRANSLATIONS) if(WIN32) - set(cockatrice_SOURCES ${cockatrice_SOURCES} cockatrice.rc) + set(cockatrice_SOURCES ${cockatrice_SOURCES} cockatrice.rc) endif(WIN32) if(APPLE) - set(MACOSX_BUNDLE_ICON_FILE appicon.icns) - set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources) - set(cockatrice_SOURCES ${cockatrice_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns) -ENDIF(APPLE) + set(MACOSX_BUNDLE_ICON_FILE appicon.icns) + set_source_files_properties( + ${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources + ) + set(cockatrice_SOURCES ${cockatrice_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns) +endif(APPLE) -IF(Qt6_FOUND) - Qt6_ADD_RESOURCES(cockatrice_RESOURCES_RCC ${cockatrice_RESOURCES}) -ELSEIF(Qt5_FOUND) - Qt5_ADD_RESOURCES(cockatrice_RESOURCES_RCC ${cockatrice_RESOURCES}) -ENDIF() +if(Qt6_FOUND) + qt6_add_resources(cockatrice_RESOURCES_RCC ${cockatrice_RESOURCES}) +elseif(Qt5_FOUND) + qt5_add_resources(cockatrice_RESOURCES_RCC ${cockatrice_RESOURCES}) +endif() # Declare path variables -set(ICONDIR share/icons CACHE STRING "icon dir") -set(DESKTOPDIR share/applications CACHE STRING "desktop file destination") +set(ICONDIR + share/icons + CACHE STRING "icon dir" +) +set(DESKTOPDIR + share/applications + CACHE STRING "desktop file destination" +) # Include directories -INCLUDE_DIRECTORIES(../common) -INCLUDE_DIRECTORIES(${PROTOBUF_INCLUDE_DIR}) -INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/common) -INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) +include_directories(../common) +include_directories(${PROTOBUF_INCLUDE_DIR}) +include_directories(${CMAKE_BINARY_DIR}/common) +include_directories(${CMAKE_CURRENT_BINARY_DIR}) set(COCKATRICE_MAC_QM_INSTALL_DIR "cockatrice.app/Contents/Resources/translations") set(COCKATRICE_UNIX_QM_INSTALL_DIR "share/cockatrice/translations") set(COCKATRICE_WIN32_QM_INSTALL_DIR "translations") if(Qt6_FOUND) - qt6_add_executable(cockatrice WIN32 MACOSX_BUNDLE ${cockatrice_SOURCES} ${cockatrice_RESOURCES_RCC} ${cockatrice_MOC_SRCS} MANUAL_FINALIZATION) + qt6_add_executable( + cockatrice + WIN32 + MACOSX_BUNDLE + ${cockatrice_SOURCES} + ${cockatrice_RESOURCES_RCC} + ${cockatrice_MOC_SRCS} + MANUAL_FINALIZATION + ) elseif(Qt5_FOUND) - # Qt5 Translations need to be linked at executable creation time - if(Qt5LinguistTools_FOUND) - if(UPDATE_TRANSLATIONS) - qt5_create_translation(cockatrice_QM ${translate_SRCS} ${cockatrice_TS}) - else() - qt5_add_translation(cockatrice_QM ${cockatrice_TS}) - endif() + # Qt5 Translations need to be linked at executable creation time + if(Qt5LinguistTools_FOUND) + if(UPDATE_TRANSLATIONS) + qt5_create_translation(cockatrice_QM ${translate_SRCS} ${cockatrice_TS}) + else() + qt5_add_translation(cockatrice_QM ${cockatrice_TS}) endif() - add_executable(cockatrice WIN32 MACOSX_BUNDLE ${cockatrice_SOURCES} ${cockatrice_QM} ${cockatrice_RESOURCES_RCC} ${cockatrice_MOC_SRCS}) - if(UNIX) - if(APPLE) - install(FILES ${cockatrice_QM} DESTINATION ${COCKATRICE_MAC_QM_INSTALL_DIR}) - else() - install(FILES ${cockatrice_QM} DESTINATION ${COCKATRICE_UNIX_QM_INSTALL_DIR}) - endif() - elseif(WIN32) - install(FILES ${cockatrice_QM} DESTINATION ${COCKATRICE_WIN32_QM_INSTALL_DIR}) + endif() + add_executable( + cockatrice WIN32 MACOSX_BUNDLE ${cockatrice_MOC_SRCS} ${cockatrice_QM} ${cockatrice_RESOURCES_RCC} + ${cockatrice_SOURCES} + ) + if(UNIX) + if(APPLE) + install(FILES ${cockatrice_QM} DESTINATION ${COCKATRICE_MAC_QM_INSTALL_DIR}) + else() + install(FILES ${cockatrice_QM} DESTINATION ${COCKATRICE_UNIX_QM_INSTALL_DIR}) endif() + elseif(WIN32) + install(FILES ${cockatrice_QM} DESTINATION ${COCKATRICE_WIN32_QM_INSTALL_DIR}) + endif() endif() if(Qt5_FOUND) - target_link_libraries(cockatrice cockatrice_common ${COCKATRICE_QT_MODULES}) + target_link_libraries(cockatrice cockatrice_common ${COCKATRICE_QT_MODULES}) else() - target_link_libraries(cockatrice PUBLIC cockatrice_common ${COCKATRICE_QT_MODULES}) + target_link_libraries(cockatrice PUBLIC cockatrice_common ${COCKATRICE_QT_MODULES}) endif() if(UNIX) - if(APPLE) - set(MACOSX_BUNDLE_INFO_STRING "${PROJECT_NAME}") - set(MACOSX_BUNDLE_GUI_IDENTIFIER "com.cockatrice.${PROJECT_NAME}") - set(MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_NAME}-${PROJECT_VERSION}") - set(MACOSX_BUNDLE_BUNDLE_NAME "${PROJECT_NAME}") - set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION}) - set(MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}) + if(APPLE) + set(MACOSX_BUNDLE_INFO_STRING "${PROJECT_NAME}") + set(MACOSX_BUNDLE_GUI_IDENTIFIER "com.cockatrice.${PROJECT_NAME}") + set(MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_NAME}-${PROJECT_VERSION}") + set(MACOSX_BUNDLE_BUNDLE_NAME "${PROJECT_NAME}") + set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION}) + set(MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}) - set_target_properties(cockatrice PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/cmake/Info.plist) + set_target_properties(cockatrice PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/cmake/Info.plist) - INSTALL(TARGETS cockatrice BUNDLE DESTINATION ./) - else() - # Assume linux - INSTALL(TARGETS cockatrice RUNTIME DESTINATION bin/) - INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/cockatrice.png DESTINATION ${ICONDIR}/hicolor/48x48/apps) - INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/cockatrice.svg DESTINATION ${ICONDIR}/hicolor/scalable/apps) - INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cockatrice.desktop DESTINATION ${DESKTOPDIR}) - endif() + install(TARGETS cockatrice BUNDLE DESTINATION ./) + else() + # Assume linux + install(TARGETS cockatrice RUNTIME DESTINATION bin/) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/cockatrice.png DESTINATION ${ICONDIR}/hicolor/48x48/apps) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/cockatrice.svg DESTINATION ${ICONDIR}/hicolor/scalable/apps) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cockatrice.desktop DESTINATION ${DESKTOPDIR}) + endif() elseif(WIN32) - INSTALL(TARGETS cockatrice RUNTIME DESTINATION ./) + install(TARGETS cockatrice RUNTIME DESTINATION ./) endif() if(APPLE) - # these needs to be relative to CMAKE_INSTALL_PREFIX - set(plugin_dest_dir cockatrice.app/Contents/Plugins) - set(qtconf_dest_dir cockatrice.app/Contents/Resources) + # these needs to be relative to CMAKE_INSTALL_PREFIX + set(plugin_dest_dir cockatrice.app/Contents/Plugins) + set(qtconf_dest_dir cockatrice.app/Contents/Resources) - # Qt plugins: audio (Qt5), iconengines, imageformats, platforms, printsupport (Qt5), styles, tls (Qt6) - install(DIRECTORY "${QT_PLUGINS_DIR}/" DESTINATION ${plugin_dest_dir} COMPONENT Runtime - FILES_MATCHING - PATTERN "*.dSYM" EXCLUDE - PATTERN "*_debug.dylib" EXCLUDE - PATTERN "audio/*.dylib" - PATTERN "iconengines/*.dylib" - PATTERN "imageformats/*.dylib" - PATTERN "platforms/*.dylib" - PATTERN "printsupport/*.dylib" - PATTERN "styles/*.dylib" - PATTERN "tls/*.dylib" - ) + # Qt plugins: audio (Qt5), iconengines, imageformats, platforms, printsupport (Qt5), styles, tls (Qt6) + install( + DIRECTORY "${QT_PLUGINS_DIR}/" + DESTINATION ${plugin_dest_dir} + COMPONENT Runtime + FILES_MATCHING + PATTERN "*.dSYM" EXCLUDE + PATTERN "*_debug.dylib" EXCLUDE + PATTERN "audio/*.dylib" + PATTERN "iconengines/*.dylib" + PATTERN "imageformats/*.dylib" + PATTERN "platforms/*.dylib" + PATTERN "printsupport/*.dylib" + PATTERN "styles/*.dylib" + PATTERN "tls/*.dylib" + ) - install(CODE " + install( + CODE " file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${qtconf_dest_dir}/qt.conf\" \"[Paths] Plugins = Plugins Translations = Resources/translations Data = Resources\") - " COMPONENT Runtime) + " + COMPONENT Runtime + ) - install(CODE " + install( + CODE " file(GLOB_RECURSE QTPLUGINS \"\${CMAKE_INSTALL_PREFIX}/${plugin_dest_dir}/*.dylib\") set(BU_CHMOD_BUNDLE_ITEMS ON) include(BundleUtilities) fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/cockatrice.app\" \"\${QTPLUGINS}\" \"${QT_LIBRARY_DIR}\") - " COMPONENT Runtime) + " + COMPONENT Runtime + ) endif() if(WIN32) - # these needs to be relative to CMAKE_INSTALL_PREFIX - set(plugin_dest_dir Plugins) - set(qtconf_dest_dir .) + # these needs to be relative to CMAKE_INSTALL_PREFIX + set(plugin_dest_dir Plugins) + set(qtconf_dest_dir .) - install(DIRECTORY "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${CMAKE_BUILD_TYPE}/" DESTINATION ./ FILES_MATCHING PATTERN "*.dll") + install( + DIRECTORY "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${CMAKE_BUILD_TYPE}/" + DESTINATION ./ + FILES_MATCHING + PATTERN "*.dll" + ) - # Qt plugins: audio (Qt5), iconengines, imageformats, platforms, printsupport (Qt5), styles, tls (Qt6) - install(DIRECTORY "${QT_PLUGINS_DIR}/" DESTINATION ${plugin_dest_dir} COMPONENT Runtime FILES_MATCHING - PATTERN "audio/qtaudio_wasapi.dll" - PATTERN "audio/qtaudio_windows.dll" - PATTERN "iconengines/qsvgicon.dll" - PATTERN "imageformats/qgif.dll" - PATTERN "imageformats/qicns.dll" - PATTERN "imageformats/qico.dll" - PATTERN "imageformats/qjpeg.dll" - PATTERN "imageformats/qsvg.dll" - PATTERN "imageformats/qtga.dll" - PATTERN "imageformats/qtiff.dll" - PATTERN "imageformats/qwbmp.dll" - PATTERN "imageformats/qwebp.dll" - PATTERN "platforms/qdirect2d.dll" - PATTERN "platforms/qminimal.dll" - PATTERN "platforms/qoffscreen.dll" - PATTERN "platforms/qwindows.dll" - PATTERN "printsupport/windowsprintersupport.dll" - PATTERN "styles/qcertonlybackend.dll" - PATTERN "styles/qopensslbackend.dll" - PATTERN "styles/qschannelbackend.dll" - PATTERN "styles/qwindowsvistastyle.dll" - PATTERN "tls/qcertonlybackend.dll" - PATTERN "tls/qopensslbackend.dll" - PATTERN "tls/qschannelbackend.dll") + # Qt plugins: audio (Qt5), iconengines, imageformats, platforms, printsupport (Qt5), styles, tls (Qt6) + install( + DIRECTORY "${QT_PLUGINS_DIR}/" + DESTINATION ${plugin_dest_dir} + COMPONENT Runtime + FILES_MATCHING + PATTERN "audio/qtaudio_wasapi.dll" + PATTERN "audio/qtaudio_windows.dll" + PATTERN "iconengines/qsvgicon.dll" + PATTERN "imageformats/qgif.dll" + PATTERN "imageformats/qicns.dll" + PATTERN "imageformats/qico.dll" + PATTERN "imageformats/qjpeg.dll" + PATTERN "imageformats/qsvg.dll" + PATTERN "imageformats/qtga.dll" + PATTERN "imageformats/qtiff.dll" + PATTERN "imageformats/qwbmp.dll" + PATTERN "imageformats/qwebp.dll" + PATTERN "platforms/qdirect2d.dll" + PATTERN "platforms/qminimal.dll" + PATTERN "platforms/qoffscreen.dll" + PATTERN "platforms/qwindows.dll" + PATTERN "printsupport/windowsprintersupport.dll" + PATTERN "styles/qcertonlybackend.dll" + PATTERN "styles/qopensslbackend.dll" + PATTERN "styles/qschannelbackend.dll" + PATTERN "styles/qwindowsvistastyle.dll" + PATTERN "tls/qcertonlybackend.dll" + PATTERN "tls/qopensslbackend.dll" + PATTERN "tls/qschannelbackend.dll" + ) - install(CODE " + install( + CODE " file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${qtconf_dest_dir}/qt.conf\" \"[Paths] Plugins = Plugins Translations = Resources/translations Data = Resources\") - " COMPONENT Runtime) + " + COMPONENT Runtime + ) - install(CODE " + install( + CODE " file(GLOB_RECURSE QTPLUGINS \"\${CMAKE_INSTALL_PREFIX}/${plugin_dest_dir}/*.dll\") set(BU_CHMOD_BUNDLE_ITEMS ON) include(BundleUtilities) fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/Cockatrice.exe\" \"\${QTPLUGINS}\" \"${QT_LIBRARY_DIR}\") - " COMPONENT Runtime) + " + COMPONENT Runtime + ) - if(WIN32SSLRUNTIME_FOUND) - install(FILES ${WIN32SSLRUNTIME_LIBRARIES} DESTINATION ./) - endif() + if(WIN32SSLRUNTIME_FOUND) + install(FILES ${WIN32SSLRUNTIME_LIBRARIES} DESTINATION ./) + endif() endif() if(Qt6LinguistTools_FOUND) - #Qt6 Translations happen after the executable is built up - if(UPDATE_TRANSLATIONS) - qt6_add_translations(cockatrice TS_FILES ${cockatrice_TS} SOURCES ${translate_SRCS} QM_FILES_OUTPUT_VARIABLE cockatrice_QM) - else() - qt6_add_translations(cockatrice TS_FILES ${cockatrice_TS} QM_FILES_OUTPUT_VARIABLE cockatrice_QM) - endif() + # Qt6 Translations happen after the executable is built up + if(UPDATE_TRANSLATIONS) + qt6_add_translations( + cockatrice + TS_FILES + ${cockatrice_TS} + SOURCES + ${translate_SRCS} + QM_FILES_OUTPUT_VARIABLE + cockatrice_QM + ) + else() + qt6_add_translations(cockatrice TS_FILES ${cockatrice_TS} QM_FILES_OUTPUT_VARIABLE cockatrice_QM) + endif() - if(UNIX) - if(APPLE) - install(FILES ${cockatrice_QM} DESTINATION ${COCKATRICE_MAC_QM_INSTALL_DIR}) - else() - install(FILES ${cockatrice_QM} DESTINATION ${COCKATRICE_UNIX_QM_INSTALL_DIR}) - endif() - elseif(WIN32) - install(FILES ${cockatrice_QM} DESTINATION ${COCKATRICE_WIN32_QM_INSTALL_DIR}) + if(UNIX) + if(APPLE) + install(FILES ${cockatrice_QM} DESTINATION ${COCKATRICE_MAC_QM_INSTALL_DIR}) + else() + install(FILES ${cockatrice_QM} DESTINATION ${COCKATRICE_UNIX_QM_INSTALL_DIR}) endif() + elseif(WIN32) + install(FILES ${cockatrice_QM} DESTINATION ${COCKATRICE_WIN32_QM_INSTALL_DIR}) + endif() endif() if(Qt6_FOUND) - qt6_finalize_target(cockatrice) + qt6_finalize_target(cockatrice) endif() diff --git a/cockatrice/sounds/CMakeLists.txt b/cockatrice/sounds/CMakeLists.txt index c7829148..f81714b0 100644 --- a/cockatrice/sounds/CMakeLists.txt +++ b/cockatrice/sounds/CMakeLists.txt @@ -2,18 +2,15 @@ # # add sounds subfolders -SET(defsounds - Default - Legacy -) +set(defsounds Default Legacy) if(UNIX) - if(APPLE) - INSTALL(DIRECTORY ${defsounds} DESTINATION Cockatrice.app/Contents/Resources/sounds/) - else() - # Assume linux - INSTALL(DIRECTORY ${defsounds} DESTINATION share/cockatrice/sounds/) - endif() + if(APPLE) + install(DIRECTORY ${defsounds} DESTINATION Cockatrice.app/Contents/Resources/sounds/) + else() + # Assume linux + install(DIRECTORY ${defsounds} DESTINATION share/cockatrice/sounds/) + endif() elseif(WIN32) - INSTALL(DIRECTORY ${defsounds} DESTINATION sounds/) + install(DIRECTORY ${defsounds} DESTINATION sounds/) endif() diff --git a/cockatrice/themes/CMakeLists.txt b/cockatrice/themes/CMakeLists.txt index c417dfa2..3e07c54d 100644 --- a/cockatrice/themes/CMakeLists.txt +++ b/cockatrice/themes/CMakeLists.txt @@ -2,20 +2,15 @@ # # add themes subfolders -SET(defthemes - Fabric - Leather - Plasma - VelvetMarble -) +set(defthemes Fabric Leather Plasma VelvetMarble) if(UNIX) - if(APPLE) - INSTALL(DIRECTORY ${defthemes} DESTINATION Cockatrice.app/Contents/Resources/themes/) - else() - # Assume linux - INSTALL(DIRECTORY ${defthemes} DESTINATION share/cockatrice/themes/) - endif() + if(APPLE) + install(DIRECTORY ${defthemes} DESTINATION Cockatrice.app/Contents/Resources/themes/) + else() + # Assume linux + install(DIRECTORY ${defthemes} DESTINATION share/cockatrice/themes/) + endif() elseif(WIN32) - INSTALL(DIRECTORY ${defthemes} DESTINATION themes/) + install(DIRECTORY ${defthemes} DESTINATION themes/) endif() diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index e8338c35..ff84ff5b 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -4,7 +4,7 @@ add_subdirectory(pb) -SET(common_SOURCES +set(common_SOURCES debug_pb_message.cpp decklist.cpp expression.cpp @@ -33,11 +33,11 @@ SET(common_SOURCES set(ORACLE_LIBS) -INCLUDE_DIRECTORIES(pb) -INCLUDE_DIRECTORIES(sfmt) -INCLUDE_DIRECTORIES(${PROTOBUF_INCLUDE_DIR}) +include_directories(pb) +include_directories(sfmt) +include_directories(${PROTOBUF_INCLUDE_DIR}) include_directories(${${COCKATRICE_QT_VERSION_NAME}Core_INCLUDE_DIRS}) -INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) +include_directories(${CMAKE_CURRENT_BINARY_DIR}) add_library(cockatrice_common ${common_SOURCES} ${common_MOC_SRCS}) target_link_libraries(cockatrice_common PUBLIC cockatrice_protocol) diff --git a/common/pb/CMakeLists.txt b/common/pb/CMakeLists.txt index eccae53d..23e27a72 100644 --- a/common/pb/CMakeLists.txt +++ b/common/pb/CMakeLists.txt @@ -2,7 +2,7 @@ # # provides the protobuf interfaces -SET(PROTO_FILES +set(PROTO_FILES admin_commands.proto card_attributes.proto color.proto @@ -162,21 +162,21 @@ SET(PROTO_FILES include_directories(${PROTOBUF_INCLUDE_DIRS}) include_directories(${CMAKE_CURRENT_BINARY_DIR}) -PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS ${PROTO_FILES}) +protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS ${PROTO_FILES}) add_library(cockatrice_protocol ${PROTO_SRCS} ${PROTO_HDRS}) set(cockatrice_protocol_LIBS ${PROTOBUF_LIBRARIES}) -if (UNIX) - set(cockatrice_protocol_LIBS ${cockatrice_protocol_LIBS} -lpthread) -endif (UNIX) +if(UNIX) + set(cockatrice_protocol_LIBS ${cockatrice_protocol_LIBS} -lpthread) +endif(UNIX) target_link_libraries(cockatrice_protocol ${cockatrice_protocol_LIBS}) # ubuntu uses an outdated package for protobuf, 3.1.0 is required if(${Protobuf_VERSION} VERSION_LESS "3.1.0") - # remove unused parameter and misleading indentation warnings when compiling to avoid errors - set(CMAKE_CXX_FLAGS_DEBUG - "${CMAKE_CXX_FLAGS_DEBUG} -Wno-unused-parameter -Wno-misleading-indentation") - message(WARNING "Older protobuf version found (${Protobuf_VERSION} < 3.1.0), " - "disabled the warnings 'unused-parameter' and 'misleading-indentation' for protobuf generated code " - "to avoid compilation errors.") + # remove unused parameter and misleading indentation warnings when compiling to avoid errors + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wno-unused-parameter -Wno-misleading-indentation") + message(WARNING "Older protobuf version found (${Protobuf_VERSION} < 3.1.0), " + "disabled the warnings 'unused-parameter' and 'misleading-indentation' for protobuf generated code " + "to avoid compilation errors." + ) endif() diff --git a/dbconverter/CMakeLists.txt b/dbconverter/CMakeLists.txt index b3696ae3..3a4e533e 100644 --- a/dbconverter/CMakeLists.txt +++ b/dbconverter/CMakeLists.txt @@ -1,8 +1,8 @@ # CMakeLists for dbconverter directory -PROJECT(Dbconverter VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}") +project(Dbconverter VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}") -SET(dbconverter_SOURCES +set(dbconverter_SOURCES src/main.cpp src/mocks.cpp ../cockatrice/src/carddatabase.cpp @@ -13,98 +13,116 @@ SET(dbconverter_SOURCES ${VERSION_STRING_CPP} ) +set(QT_DONT_USE_QTGUI TRUE) -SET(QT_DONT_USE_QTGUI TRUE) - -IF(Qt6_FOUND) - Qt6_WRAP_CPP(dbconverter_SOURCES - ../cockatrice/src/settingscache.h - ../cockatrice/src/settings/carddatabasesettings.h - ) -ELSEIF(Qt5_FOUND) - Qt5_WRAP_CPP(dbconverter_SOURCES - ../cockatrice/src/settingscache.h - ../cockatrice/src/settings/carddatabasesettings.h - ) -ENDIF() +if(Qt6_FOUND) + qt6_wrap_cpp(dbconverter_SOURCES ../cockatrice/src/settingscache.h ../cockatrice/src/settings/carddatabasesettings.h) +elseif(Qt5_FOUND) + qt5_wrap_cpp(dbconverter_SOURCES ../cockatrice/src/settingscache.h ../cockatrice/src/settings/carddatabasesettings.h) +endif() # Build servatrice binary and link it -ADD_EXECUTABLE(dbconverter MACOSX_BUNDLE ${dbconverter_SOURCES} ${dbconverter_MOC_SRCS}) +add_executable(dbconverter MACOSX_BUNDLE ${dbconverter_MOC_SRCS} ${dbconverter_SOURCES}) -TARGET_LINK_LIBRARIES(dbconverter ${DB_CONVERTER_QT_MODULES}) +target_link_libraries(dbconverter ${DB_CONVERTER_QT_MODULES}) # install rules if(UNIX) - if(APPLE) - set(MACOSX_BUNDLE_INFO_STRING "${PROJECT_NAME}") - set(MACOSX_BUNDLE_GUI_IDENTIFIER "com.cockatrice.${PROJECT_NAME}") - set(MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_NAME}-${PROJECT_VERSION}") - set(MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_NAME}) - set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION}) - set(MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}) + if(APPLE) + set(MACOSX_BUNDLE_INFO_STRING "${PROJECT_NAME}") + set(MACOSX_BUNDLE_GUI_IDENTIFIER "com.cockatrice.${PROJECT_NAME}") + set(MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_NAME}-${PROJECT_VERSION}") + set(MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_NAME}) + set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION}) + set(MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}) - INSTALL(TARGETS dbconverter BUNDLE DESTINATION ./) - else() - # Assume linux - INSTALL(TARGETS dbconverter RUNTIME DESTINATION bin/) - endif() + install(TARGETS dbconverter BUNDLE DESTINATION ./) + else() + # Assume linux + install(TARGETS dbconverter RUNTIME DESTINATION bin/) + endif() elseif(WIN32) - INSTALL(TARGETS dbconverter RUNTIME DESTINATION ./) + install(TARGETS dbconverter RUNTIME DESTINATION ./) endif() if(APPLE) - # these needs to be relative to CMAKE_INSTALL_PREFIX - set(plugin_dest_dir dbconverter.app/Contents/Plugins) - set(qtconf_dest_dir dbconverter.app/Contents/Resources) + # these needs to be relative to CMAKE_INSTALL_PREFIX + set(plugin_dest_dir dbconverter.app/Contents/Plugins) + set(qtconf_dest_dir dbconverter.app/Contents/Resources) - # Qt plugins: platforms - install(DIRECTORY "${QT_PLUGINS_DIR}/" DESTINATION ${plugin_dest_dir} COMPONENT Runtime - FILES_MATCHING - PATTERN "*.dSYM" EXCLUDE - PATTERN "*_debug.dylib" EXCLUDE - PATTERN "platforms/*.dylib" - ) + # Qt plugins: platforms + install( + DIRECTORY "${QT_PLUGINS_DIR}/" + DESTINATION ${plugin_dest_dir} + COMPONENT Runtime + FILES_MATCHING + PATTERN "*.dSYM" EXCLUDE + PATTERN "*_debug.dylib" EXCLUDE + PATTERN "platforms/*.dylib" + ) - install(CODE " + install( + CODE " file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${qtconf_dest_dir}/qt.conf\" \"[Paths] Plugins = Plugins Translations = Resources/translations\") - " COMPONENT Runtime) + " + COMPONENT Runtime + ) - install(CODE " + install( + CODE " file(GLOB_RECURSE QTPLUGINS \"\${CMAKE_INSTALL_PREFIX}/${plugin_dest_dir}/*.dylib\") set(BU_CHMOD_BUNDLE_ITEMS ON) include(BundleUtilities) fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/dbconverter.app\" \"\${QTPLUGINS}\" \"${QT_LIBRARY_DIR};${MYSQLCLIENT_LIBRARY_DIR}\") - " COMPONENT Runtime) + " + COMPONENT Runtime + ) endif() if(WIN32) - # these needs to be relative to CMAKE_INSTALL_PREFIX - set(plugin_dest_dir Plugins) - set(qtconf_dest_dir .) + # these needs to be relative to CMAKE_INSTALL_PREFIX + set(plugin_dest_dir Plugins) + set(qtconf_dest_dir .) - install(DIRECTORY "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${CMAKE_BUILD_TYPE}/" DESTINATION ./ FILES_MATCHING PATTERN "*.dll") + install( + DIRECTORY "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${CMAKE_BUILD_TYPE}/" + DESTINATION ./ + FILES_MATCHING + PATTERN "*.dll" + ) - # Qt plugins: platforms - install(DIRECTORY "${QT_PLUGINS_DIR}/" DESTINATION ${plugin_dest_dir} COMPONENT Runtime FILES_MATCHING - PATTERN "platforms/qdirect2d.dll" - PATTERN "platforms/qminimal.dll" - PATTERN "platforms/qoffscreen.dll" - PATTERN "platforms/qwindows.dll") + # Qt plugins: platforms + install( + DIRECTORY "${QT_PLUGINS_DIR}/" + DESTINATION ${plugin_dest_dir} + COMPONENT Runtime + FILES_MATCHING + PATTERN "platforms/qdirect2d.dll" + PATTERN "platforms/qminimal.dll" + PATTERN "platforms/qoffscreen.dll" + PATTERN "platforms/qwindows.dll" + ) - install(CODE " + install( + CODE " file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${qtconf_dest_dir}/qt.conf\" \"[Paths] Plugins = Plugins Translations = Resources/translations\") - " COMPONENT Runtime) + " + COMPONENT Runtime + ) - install(CODE " + install( + CODE " file(GLOB_RECURSE QTPLUGINS \"\${CMAKE_INSTALL_PREFIX}/${plugin_dest_dir}/*.dll\") set(BU_CHMOD_BUNDLE_ITEMS ON) include(BundleUtilities) fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/dbconverter.exe\" \"\${QTPLUGINS}\" \"${QT_LIBRARY_DIR}\") - " COMPONENT Runtime) + " + COMPONENT Runtime + ) endif() diff --git a/oracle/CMakeLists.txt b/oracle/CMakeLists.txt index c77d6ac8..12b7844d 100644 --- a/oracle/CMakeLists.txt +++ b/oracle/CMakeLists.txt @@ -5,7 +5,10 @@ project(Oracle VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}") # paths -set(DESKTOPDIR share/applications CACHE STRING "path to .desktop files") +set(DESKTOPDIR + share/applications + CACHE STRING "path to .desktop files" +) set(oracle_SOURCES src/main.cpp @@ -29,62 +32,59 @@ set(oracle_SOURCES ../cockatrice/src/settings/downloadsettings.cpp ../cockatrice/src/thememanager.cpp ../cockatrice/src/releasechannel.cpp - ${VERSION_STRING_CPP} + ${VERSION_STRING_CPP} ) set(oracle_RESOURCES oracle.qrc) if(UPDATE_TRANSLATIONS) - FILE(GLOB_RECURSE translate_oracle_SRCS src/*.cpp src/*.h ../cockatrice/src/settingscache.cpp) - SET(translate_SRCS ${translate_oracle_SRCS}) - SET(oracle_TS "${CMAKE_CURRENT_SOURCE_DIR}/oracle_en@source.ts") + file(GLOB_RECURSE translate_oracle_SRCS src/*.cpp src/*.h ../cockatrice/src/settingscache.cpp) + set(translate_SRCS ${translate_oracle_SRCS}) + set(oracle_TS "${CMAKE_CURRENT_SOURCE_DIR}/oracle_en@source.ts") else() - FILE(GLOB oracle_TS "${CMAKE_CURRENT_SOURCE_DIR}/translations/*.ts") + file(GLOB oracle_TS "${CMAKE_CURRENT_SOURCE_DIR}/translations/*.ts") endif(UPDATE_TRANSLATIONS) if(WIN32) - set(oracle_SOURCES ${oracle_SOURCES} oracle.rc) + set(oracle_SOURCES ${oracle_SOURCES} oracle.rc) endif(WIN32) if(APPLE) - set(MACOSX_BUNDLE_ICON_FILE appicon.icns) - set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources) - set(oracle_SOURCES ${oracle_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns) + set(MACOSX_BUNDLE_ICON_FILE appicon.icns) + set_source_files_properties( + ${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources + ) + set(oracle_SOURCES ${oracle_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns) endif(APPLE) if(Qt6_FOUND) - Qt6_ADD_RESOURCES(oracle_RESOURCES_RCC ${oracle_RESOURCES}) + qt6_add_resources(oracle_RESOURCES_RCC ${oracle_RESOURCES}) elseif(Qt5_FOUND) - Qt5_ADD_RESOURCES(oracle_RESOURCES_RCC ${oracle_RESOURCES}) + qt5_add_resources(oracle_RESOURCES_RCC ${oracle_RESOURCES}) endif() -INCLUDE_DIRECTORIES(../cockatrice/src) +include_directories(../cockatrice/src) # Libz is required to support zipped files -FIND_PACKAGE(ZLIB) +find_package(ZLIB) if(ZLIB_FOUND) - INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIRS}) - ADD_DEFINITIONS("-DHAS_ZLIB") + include_directories(${ZLIB_INCLUDE_DIRS}) + add_definitions("-DHAS_ZLIB") - set(oracle_SOURCES ${oracle_SOURCES} - src/zip/unzip.cpp - src/zip/zipglobal.cpp - ) + set(oracle_SOURCES ${oracle_SOURCES} src/zip/unzip.cpp src/zip/zipglobal.cpp) else() - MESSAGE(STATUS "Oracle: zlib not found; ZIP support disabled") + message(STATUS "Oracle: zlib not found; ZIP support disabled") endif() # LibLZMA is required to support xz files -FIND_PACKAGE(LibLZMA) +find_package(LibLZMA) if(LIBLZMA_FOUND) - INCLUDE_DIRECTORIES(${LIBLZMA_INCLUDE_DIRS}) - ADD_DEFINITIONS("-DHAS_LZMA") + include_directories(${LIBLZMA_INCLUDE_DIRS}) + add_definitions("-DHAS_LZMA") - set(oracle_SOURCES ${oracle_SOURCES} - src/lzma/decompress.cpp - ) + set(oracle_SOURCES ${oracle_SOURCES} src/lzma/decompress.cpp) else() - MESSAGE(STATUS "Oracle: LibLZMA not found; xz support disabled") + message(STATUS "Oracle: LibLZMA not found; xz support disabled") endif() set(ORACLE_MAC_QM_INSTALL_DIR "oracle.app/Contents/Resources/translations") @@ -92,152 +92,193 @@ set(ORACLE_UNIX_QM_INSTALL_DIR "share/oracle/translations") set(ORACLE_WIN32_QM_INSTALL_DIR "translations") if(Qt6_FOUND) - # Qt6 Translations are linked after the executable is created in manual mode - qt6_add_executable(oracle WIN32 MACOSX_BUNDLE ${oracle_SOURCES} ${oracle_RESOURCES_RCC} ${oracle_MOC_SRCS} MANUAL_FINALIZATION) + # Qt6 Translations are linked after the executable is created in manual mode + qt6_add_executable( + oracle + WIN32 + MACOSX_BUNDLE + ${oracle_SOURCES} + ${oracle_RESOURCES_RCC} + ${oracle_MOC_SRCS} + MANUAL_FINALIZATION + ) elseif(Qt5_FOUND) - # Qt5 Translations need to be linked at executable creation time - if(Qt5LinguistTools_FOUND) - if(UPDATE_TRANSLATIONS) - qt5_create_translation(oracle_QM ${translate_SRCS} ${oracle_TS}) - else() - qt5_add_translation(oracle_QM ${oracle_TS}) - endif() + # Qt5 Translations need to be linked at executable creation time + if(Qt5LinguistTools_FOUND) + if(UPDATE_TRANSLATIONS) + qt5_create_translation(oracle_QM ${translate_SRCS} ${oracle_TS}) + else() + qt5_add_translation(oracle_QM ${oracle_TS}) endif() - add_executable(oracle WIN32 MACOSX_BUNDLE ${oracle_SOURCES} ${oracle_QM} ${oracle_RESOURCES_RCC} ${oracle_MOC_SRCS}) - if(UNIX) - if(APPLE) - install(FILES ${oracle_QM} DESTINATION ${ORACLE_MAC_QM_INSTALL_DIR}) - else() - install(FILES ${oracle_QM} DESTINATION ${ORACLE_UNIX_QM_INSTALL_DIR}) - endif() - elseif(WIN32) - install(FILES ${oracle_QM} DESTINATION ${ORACLE_WIN32_QM_INSTALL_DIR}) + endif() + add_executable(oracle WIN32 MACOSX_BUNDLE ${oracle_MOC_SRCS} ${oracle_QM} ${oracle_RESOURCES_RCC} ${oracle_SOURCES}) + if(UNIX) + if(APPLE) + install(FILES ${oracle_QM} DESTINATION ${ORACLE_MAC_QM_INSTALL_DIR}) + else() + install(FILES ${oracle_QM} DESTINATION ${ORACLE_UNIX_QM_INSTALL_DIR}) endif() + elseif(WIN32) + install(FILES ${oracle_QM} DESTINATION ${ORACLE_WIN32_QM_INSTALL_DIR}) + endif() endif() -TARGET_LINK_LIBRARIES(oracle PUBLIC ${ORACLE_QT_MODULES}) +target_link_libraries(oracle PUBLIC ${ORACLE_QT_MODULES}) if(ZLIB_FOUND) - TARGET_LINK_LIBRARIES(oracle PUBLIC ${ZLIB_LIBRARIES}) + target_link_libraries(oracle PUBLIC ${ZLIB_LIBRARIES}) endif() if(LIBLZMA_FOUND) - TARGET_LINK_LIBRARIES(oracle PUBLIC ${LIBLZMA_LIBRARIES}) + target_link_libraries(oracle PUBLIC ${LIBLZMA_LIBRARIES}) endif() if(UNIX) - if(APPLE) - set(MACOSX_BUNDLE_INFO_STRING "${PROJECT_NAME}") - set(MACOSX_BUNDLE_GUI_IDENTIFIER "com.cockatrice.${PROJECT_NAME}") - set(MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_NAME}-${PROJECT_VERSION}") - set(MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_NAME}) - set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION}) - set(MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}) - set_target_properties(oracle PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/cmake/Info.plist) + if(APPLE) + set(MACOSX_BUNDLE_INFO_STRING "${PROJECT_NAME}") + set(MACOSX_BUNDLE_GUI_IDENTIFIER "com.cockatrice.${PROJECT_NAME}") + set(MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_NAME}-${PROJECT_VERSION}") + set(MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_NAME}) + set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION}) + set(MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}) + set_target_properties(oracle PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/cmake/Info.plist) - INSTALL(TARGETS oracle BUNDLE DESTINATION ./) - else() - # Assume linux - INSTALL(TARGETS oracle RUNTIME DESTINATION bin/) - INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/oracle.png DESTINATION ${ICONDIR}/hicolor/48x48/apps) - INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/oracle.svg DESTINATION ${ICONDIR}/hicolor/scalable/apps) - endif() + install(TARGETS oracle BUNDLE DESTINATION ./) + else() + # Assume linux + install(TARGETS oracle RUNTIME DESTINATION bin/) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/oracle.png DESTINATION ${ICONDIR}/hicolor/48x48/apps) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/oracle.svg DESTINATION ${ICONDIR}/hicolor/scalable/apps) + endif() elseif(WIN32) - INSTALL(TARGETS oracle RUNTIME DESTINATION ./) + install(TARGETS oracle RUNTIME DESTINATION ./) endif() -IF (NOT WIN32 AND NOT APPLE) - INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/oracle.desktop DESTINATION ${DESKTOPDIR}) -ENDIF (NOT WIN32 AND NOT APPLE) +if(NOT WIN32 AND NOT APPLE) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/oracle.desktop DESTINATION ${DESKTOPDIR}) +endif(NOT WIN32 AND NOT APPLE) if(APPLE) - # these needs to be relative to CMAKE_INSTALL_PREFIX - set(plugin_dest_dir oracle.app/Contents/Plugins) - set(qtconf_dest_dir oracle.app/Contents/Resources) + # these needs to be relative to CMAKE_INSTALL_PREFIX + set(plugin_dest_dir oracle.app/Contents/Plugins) + set(qtconf_dest_dir oracle.app/Contents/Resources) - # Qt plugins: iconengines, platforms, styles, tls (Qt6) - install(DIRECTORY "${QT_PLUGINS_DIR}/" DESTINATION ${plugin_dest_dir} COMPONENT Runtime - FILES_MATCHING - PATTERN "*.dSYM" EXCLUDE - PATTERN "*_debug.dylib" EXCLUDE - PATTERN "iconengines/*.dylib" - PATTERN "platforms/*.dylib" - PATTERN "styles/*.dylib" - PATTERN "tls/*.dylib" - ) + # Qt plugins: iconengines, platforms, styles, tls (Qt6) + install( + DIRECTORY "${QT_PLUGINS_DIR}/" + DESTINATION ${plugin_dest_dir} + COMPONENT Runtime + FILES_MATCHING + PATTERN "*.dSYM" EXCLUDE + PATTERN "*_debug.dylib" EXCLUDE + PATTERN "iconengines/*.dylib" + PATTERN "platforms/*.dylib" + PATTERN "styles/*.dylib" + PATTERN "tls/*.dylib" + ) - install(CODE " + install( + CODE " file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${qtconf_dest_dir}/qt.conf\" \"[Paths] Plugins = Plugins Translations = Resources/translations\") - " COMPONENT Runtime) + " + COMPONENT Runtime + ) - install(CODE " + install( + CODE " file(GLOB_RECURSE QTPLUGINS \"\${CMAKE_INSTALL_PREFIX}/${plugin_dest_dir}/*.dylib\") set(BU_CHMOD_BUNDLE_ITEMS ON) include(BundleUtilities) fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/oracle.app\" \"\${QTPLUGINS}\" \"${QT_LIBRARY_DIR}\") - " COMPONENT Runtime) + " + COMPONENT Runtime + ) endif() if(WIN32) - # these needs to be relative to CMAKE_INSTALL_PREFIX - set(plugin_dest_dir Plugins) - set(qtconf_dest_dir .) - list(APPEND libSearchDirs ${QT_LIBRARY_DIR}) + # these needs to be relative to CMAKE_INSTALL_PREFIX + set(plugin_dest_dir Plugins) + set(qtconf_dest_dir .) + list(APPEND libSearchDirs ${QT_LIBRARY_DIR}) - install(DIRECTORY "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${CMAKE_BUILD_TYPE}/" DESTINATION ./ FILES_MATCHING PATTERN "*.dll") + install( + DIRECTORY "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${CMAKE_BUILD_TYPE}/" + DESTINATION ./ + FILES_MATCHING + PATTERN "*.dll" + ) - # Qt plugins: iconengines, platforms, styles, tls (Qt6) - install(DIRECTORY "${QT_PLUGINS_DIR}/" DESTINATION ${plugin_dest_dir} COMPONENT Runtime FILES_MATCHING - PATTERN "iconengines/qsvgicon.dll" - PATTERN "platforms/qdirect2d.dll" - PATTERN "platforms/qminimal.dll" - PATTERN "platforms/qoffscreen.dll" - PATTERN "platforms/qwindows.dll" - PATTERN "styles/qcertonlybackend.dll" - PATTERN "styles/qopensslbackend.dll" - PATTERN "styles/qschannelbackend.dll" - PATTERN "styles/qwindowsvistastyle.dll" - PATTERN "tls/qcertonlybackend.dll" - PATTERN "tls/qopensslbackend.dll" - PATTERN "tls/qschannelbackend.dll") + # Qt plugins: iconengines, platforms, styles, tls (Qt6) + install( + DIRECTORY "${QT_PLUGINS_DIR}/" + DESTINATION ${plugin_dest_dir} + COMPONENT Runtime + FILES_MATCHING + PATTERN "iconengines/qsvgicon.dll" + PATTERN "platforms/qdirect2d.dll" + PATTERN "platforms/qminimal.dll" + PATTERN "platforms/qoffscreen.dll" + PATTERN "platforms/qwindows.dll" + PATTERN "styles/qcertonlybackend.dll" + PATTERN "styles/qopensslbackend.dll" + PATTERN "styles/qschannelbackend.dll" + PATTERN "styles/qwindowsvistastyle.dll" + PATTERN "tls/qcertonlybackend.dll" + PATTERN "tls/qopensslbackend.dll" + PATTERN "tls/qschannelbackend.dll" + ) - install(CODE " + install( + CODE " file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${qtconf_dest_dir}/qt.conf\" \"[Paths] Plugins = Plugins Translations = Resources/translations\") - " COMPONENT Runtime) + " + COMPONENT Runtime + ) - install(CODE " + install( + CODE " file(GLOB_RECURSE QTPLUGINS \"\${CMAKE_INSTALL_PREFIX}/${plugin_dest_dir}/*.dll\") set(BU_CHMOD_BUNDLE_ITEMS ON) include(BundleUtilities) fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/Oracle.exe\" \"\${QTPLUGINS}\" \"${libSearchDirs}\") - " COMPONENT Runtime) + " + COMPONENT Runtime + ) endif() if(Qt6LinguistTools_FOUND) - #Qt6 Translations happen after the executable is built up - if(UPDATE_TRANSLATIONS) - qt6_add_translations(oracle TS_FILES ${oracle_TS} SOURCES ${translate_SRCS} QM_FILES_OUTPUT_VARIABLE oracle_QM) - else() - qt6_add_translations(oracle TS_FILES ${oracle_TS} QM_FILES_OUTPUT_VARIABLE oracle_QM) - endif() + # Qt6 Translations happen after the executable is built up + if(UPDATE_TRANSLATIONS) + qt6_add_translations( + oracle + TS_FILES + ${oracle_TS} + SOURCES + ${translate_SRCS} + QM_FILES_OUTPUT_VARIABLE + oracle_QM + ) + else() + qt6_add_translations(oracle TS_FILES ${oracle_TS} QM_FILES_OUTPUT_VARIABLE oracle_QM) + endif() - if(UNIX) - if(APPLE) - install(FILES ${oracle_QM} DESTINATION ${ORACLE_MAC_QM_INSTALL_DIR}) - else() - install(FILES ${oracle_QM} DESTINATION ${ORACLE_UNIX_QM_INSTALL_DIR}) - endif() - elseif(WIN32) - install(FILES ${oracle_QM} DESTINATION ${ORACLE_WIN32_QM_INSTALL_DIR}) + if(UNIX) + if(APPLE) + install(FILES ${oracle_QM} DESTINATION ${ORACLE_MAC_QM_INSTALL_DIR}) + else() + install(FILES ${oracle_QM} DESTINATION ${ORACLE_UNIX_QM_INSTALL_DIR}) endif() + elseif(WIN32) + install(FILES ${oracle_QM} DESTINATION ${ORACLE_WIN32_QM_INSTALL_DIR}) + endif() endif() if(Qt6_FOUND) - qt6_finalize_target(oracle) + qt6_finalize_target(oracle) endif() diff --git a/servatrice/CMakeLists.txt b/servatrice/CMakeLists.txt index 99ce2f8c..c7276a0b 100644 --- a/servatrice/CMakeLists.txt +++ b/servatrice/CMakeLists.txt @@ -2,9 +2,9 @@ # # provides the servatrice binary -PROJECT(Servatrice VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}") +project(Servatrice VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}") -SET(servatrice_SOURCES +set(servatrice_SOURCES src/main.cpp src/servatrice.cpp src/servatrice_connection_pool.cpp @@ -25,7 +25,7 @@ SET(servatrice_SOURCES set(servatrice_RESOURCES servatrice.qrc) if(WIN32) - set(servatrice_SOURCES ${servatrice_SOURCES} servatrice.rc) + set(servatrice_SOURCES ${servatrice_SOURCES} servatrice.rc) endif(WIN32) # Under FreeBSD we need libexecinfo to use backtrace_symbols_fd() @@ -34,152 +34,197 @@ if(CMAKE_HOST_SYSTEM MATCHES "FreeBSD") set(SYSTEM_LIBRARIES ${EXECINFO_LIBRARY} ${SYSTEM_LIBRARIES}) endif() - if(APPLE) - set(MACOSX_BUNDLE_ICON_FILE appicon.icns) - set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources) - set(servatrice_SOURCES ${servatrice_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns) -ENDIF(APPLE) + set(MACOSX_BUNDLE_ICON_FILE appicon.icns) + set_source_files_properties( + ${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources + ) + set(servatrice_SOURCES ${servatrice_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns) +endif(APPLE) -IF(Qt6_FOUND) - Qt6_ADD_RESOURCES(servatrice_RESOURCES_RCC ${servatrice_RESOURCES}) -ELSEIF(Qt5_FOUND) - Qt5_ADD_RESOURCES(servatrice_RESOURCES_RCC ${servatrice_RESOURCES}) -ENDIF() +if(Qt6_FOUND) + qt6_add_resources(servatrice_RESOURCES_RCC ${servatrice_RESOURCES}) +elseif(Qt5_FOUND) + qt5_add_resources(servatrice_RESOURCES_RCC ${servatrice_RESOURCES}) +endif() -SET(QT_DONT_USE_QTGUI TRUE) +set(QT_DONT_USE_QTGUI TRUE) # Mysql connector if(UNIX) - if(APPLE) - SET(MYSQLCLIENT_DEFAULT_PATHS "/usr/local/lib" "/opt/local/lib/mysql55/mysql/" "/opt/local/lib/mysql56/mysql/") - else() - SET(MYSQLCLIENT_DEFAULT_PATHS "/usr/lib64" "/usr/local/lib64" "/usr/lib" "/usr/local/lib") - endif() + if(APPLE) + set(MYSQLCLIENT_DEFAULT_PATHS "/usr/local/lib" "/opt/local/lib/mysql55/mysql/" "/opt/local/lib/mysql56/mysql/") + else() + set(MYSQLCLIENT_DEFAULT_PATHS "/usr/lib64" "/usr/local/lib64" "/usr/lib" "/usr/local/lib") + endif() elseif(WIN32) - SET(MYSQLCLIENT_DEFAULT_PATHS "C:\\Program Files\\MySQL\\MySQL Server 5.7\\lib" "C:\\Program Files (x86)\\MySQL\\MySQL Server 5.7\\lib") + set(MYSQLCLIENT_DEFAULT_PATHS "C:\\Program Files\\MySQL\\MySQL Server 5.7\\lib" + "C:\\Program Files (x86)\\MySQL\\MySQL Server 5.7\\lib" + ) endif() -find_library(MYSQL_CLIENT_LIBRARIES NAMES mysqlclient PATHS ${MYSQLCLIENT_DEFAULT_PATHS} PATH_SUFFIXES mysql mariadb) +find_library( + MYSQL_CLIENT_LIBRARIES + NAMES mysqlclient + PATHS ${MYSQLCLIENT_DEFAULT_PATHS} + PATH_SUFFIXES mysql mariadb +) if(${MYSQL_CLIENT_LIBRARIES} MATCHES "NOTFOUND") - set(MYSQLCLIENT_FOUND FALSE CACHE INTERNAL "") - MESSAGE(STATUS "MySQL connector NOT FOUND: Servatrice won't be able to connect to a MySQL server") + set(MYSQLCLIENT_FOUND + FALSE + CACHE INTERNAL "" + ) + message(STATUS "MySQL connector NOT FOUND: Servatrice won't be able to connect to a MySQL server") unset(MYSQL_CLIENT_LIBRARIES) else() - set(MYSQLCLIENT_FOUND TRUE CACHE INTERNAL "") + set(MYSQLCLIENT_FOUND + TRUE + CACHE INTERNAL "" + ) get_filename_component(MYSQLCLIENT_LIBRARY_DIR ${MYSQL_CLIENT_LIBRARIES} PATH) - MESSAGE(STATUS "Found MySQL connector at: ${MYSQL_CLIENT_LIBRARIES}") + message(STATUS "Found MySQL connector at: ${MYSQL_CLIENT_LIBRARIES}") endif() # Declare path variables -set(ICONDIR share/icons CACHE STRING "icon dir") -set(DESKTOPDIR share/applications CACHE STRING "desktop file destination") +set(ICONDIR + share/icons + CACHE STRING "icon dir" +) +set(DESKTOPDIR + share/applications + CACHE STRING "desktop file destination" +) # Include directories -INCLUDE_DIRECTORIES(../common) -INCLUDE_DIRECTORIES(${PROTOBUF_INCLUDE_DIR}) -INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../common) -INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) +include_directories(../common) +include_directories(${PROTOBUF_INCLUDE_DIR}) +include_directories(${CMAKE_CURRENT_BINARY_DIR}/../common) +include_directories(${CMAKE_CURRENT_BINARY_DIR}) # Build servatrice binary and link it -ADD_EXECUTABLE(servatrice MACOSX_BUNDLE ${servatrice_SOURCES} ${servatrice_RESOURCES_RCC} ${servatrice_MOC_SRCS}) +add_executable(servatrice MACOSX_BUNDLE ${servatrice_MOC_SRCS} ${servatrice_RESOURCES_RCC} ${servatrice_SOURCES}) if(CMAKE_HOST_SYSTEM MATCHES "FreeBSD") - TARGET_LINK_LIBRARIES(servatrice cockatrice_common Threads::Threads ${SERVATRICE_QT_MODULES} ${LIBEXECINFO_LIBRARY}) + target_link_libraries(servatrice cockatrice_common Threads::Threads ${SERVATRICE_QT_MODULES} ${LIBEXECINFO_LIBRARY}) else() - TARGET_LINK_LIBRARIES(servatrice cockatrice_common Threads::Threads ${SERVATRICE_QT_MODULES}) + target_link_libraries(servatrice cockatrice_common Threads::Threads ${SERVATRICE_QT_MODULES}) endif() # install rules if(UNIX) - if(APPLE) - set(MACOSX_BUNDLE_INFO_STRING "${PROJECT_NAME}") - set(MACOSX_BUNDLE_GUI_IDENTIFIER "com.cockatrice.${PROJECT_NAME}") - set(MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_NAME}-${PROJECT_VERSION}") - set(MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_NAME}) - set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION}) - set(MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}) + if(APPLE) + set(MACOSX_BUNDLE_INFO_STRING "${PROJECT_NAME}") + set(MACOSX_BUNDLE_GUI_IDENTIFIER "com.cockatrice.${PROJECT_NAME}") + set(MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_NAME}-${PROJECT_VERSION}") + set(MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_NAME}) + set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION}) + set(MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}) - INSTALL(TARGETS servatrice BUNDLE DESTINATION ./) - INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.ini.example DESTINATION ./servatrice.app/Contents/Resources/) - INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.sql DESTINATION ./servatrice.app/Contents/Resources/) - else() - # Assume linux - INSTALL(TARGETS servatrice RUNTIME DESTINATION bin/) - INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.ini.example DESTINATION share/servatrice/) - INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.sql DESTINATION share/servatrice/) + install(TARGETS servatrice BUNDLE DESTINATION ./) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.ini.example DESTINATION ./servatrice.app/Contents/Resources/) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.sql DESTINATION ./servatrice.app/Contents/Resources/) + else() + # Assume linux + install(TARGETS servatrice RUNTIME DESTINATION bin/) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.ini.example DESTINATION share/servatrice/) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.sql DESTINATION share/servatrice/) - INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/servatrice.png DESTINATION ${ICONDIR}/hicolor/48x48/apps) - INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/servatrice.svg DESTINATION ${ICONDIR}/hicolor/scalable/apps) - INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.desktop DESTINATION ${DESKTOPDIR}) - endif() + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/servatrice.png DESTINATION ${ICONDIR}/hicolor/48x48/apps) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/servatrice.svg DESTINATION ${ICONDIR}/hicolor/scalable/apps) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.desktop DESTINATION ${DESKTOPDIR}) + endif() elseif(WIN32) - INSTALL(TARGETS servatrice RUNTIME DESTINATION ./) - INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.ini.example DESTINATION ./) - INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.sql DESTINATION ./) + install(TARGETS servatrice RUNTIME DESTINATION ./) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.ini.example DESTINATION ./) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/servatrice.sql DESTINATION ./) endif() if(APPLE) - # these needs to be relative to CMAKE_INSTALL_PREFIX - set(plugin_dest_dir servatrice.app/Contents/Plugins) - set(qtconf_dest_dir servatrice.app/Contents/Resources) + # these needs to be relative to CMAKE_INSTALL_PREFIX + set(plugin_dest_dir servatrice.app/Contents/Plugins) + set(qtconf_dest_dir servatrice.app/Contents/Resources) - # Qt plugins: platforms, sqldrivers/mysql, tls (Qt6) - install(DIRECTORY "${QT_PLUGINS_DIR}/" DESTINATION ${plugin_dest_dir} COMPONENT Runtime - FILES_MATCHING - PATTERN "*.dSYM" EXCLUDE - PATTERN "*_debug.dylib" EXCLUDE - PATTERN "platforms/*.dylib" - PATTERN "sqldrivers/libqsqlmysql*.dylib" - PATTERN "tls/*.dylib" - ) + # Qt plugins: platforms, sqldrivers/mysql, tls (Qt6) + install( + DIRECTORY "${QT_PLUGINS_DIR}/" + DESTINATION ${plugin_dest_dir} + COMPONENT Runtime + FILES_MATCHING + PATTERN "*.dSYM" EXCLUDE + PATTERN "*_debug.dylib" EXCLUDE + PATTERN "platforms/*.dylib" + PATTERN "sqldrivers/libqsqlmysql*.dylib" + PATTERN "tls/*.dylib" + ) - install(CODE " + install( + CODE " file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${qtconf_dest_dir}/qt.conf\" \"[Paths] Plugins = Plugins Translations = Resources/translations\") - " COMPONENT Runtime) + " + COMPONENT Runtime + ) - install(CODE " + install( + CODE " file(GLOB_RECURSE QTPLUGINS \"\${CMAKE_INSTALL_PREFIX}/${plugin_dest_dir}/*.dylib\") set(BU_CHMOD_BUNDLE_ITEMS ON) include(BundleUtilities) fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/servatrice.app\" \"\${QTPLUGINS}\" \"${QT_LIBRARY_DIR};${MYSQLCLIENT_LIBRARY_DIR}\") - " COMPONENT Runtime) + " + COMPONENT Runtime + ) endif() if(WIN32) - # these needs to be relative to CMAKE_INSTALL_PREFIX - set(plugin_dest_dir Plugins) - set(qtconf_dest_dir .) + # these needs to be relative to CMAKE_INSTALL_PREFIX + set(plugin_dest_dir Plugins) + set(qtconf_dest_dir .) - install(DIRECTORY "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${CMAKE_BUILD_TYPE}/" DESTINATION ./ FILES_MATCHING PATTERN "*.dll") + install( + DIRECTORY "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${CMAKE_BUILD_TYPE}/" + DESTINATION ./ + FILES_MATCHING + PATTERN "*.dll" + ) - # Qt plugins: platforms, sqldrivers, tls (Qt6) - install(DIRECTORY "${QT_PLUGINS_DIR}/" DESTINATION ${plugin_dest_dir} COMPONENT Runtime FILES_MATCHING - PATTERN "platforms/qdirect2d.dll" - PATTERN "platforms/qminimal.dll" - PATTERN "platforms/qoffscreen.dll" - PATTERN "platforms/qwindows.dll" - PATTERN "tls/qcertonlybackend.dll" - PATTERN "tls/qopensslbackend.dll" - PATTERN "tls/qschannelbackend.dll" - PATTERN "sqldrivers/qsqlite.dll" - PATTERN "sqldrivers/qsqlodbc.dll" - PATTERN "sqldrivers/qsqlpsql.dll") + # Qt plugins: platforms, sqldrivers, tls (Qt6) + install( + DIRECTORY "${QT_PLUGINS_DIR}/" + DESTINATION ${plugin_dest_dir} + COMPONENT Runtime + FILES_MATCHING + PATTERN "platforms/qdirect2d.dll" + PATTERN "platforms/qminimal.dll" + PATTERN "platforms/qoffscreen.dll" + PATTERN "platforms/qwindows.dll" + PATTERN "tls/qcertonlybackend.dll" + PATTERN "tls/qopensslbackend.dll" + PATTERN "tls/qschannelbackend.dll" + PATTERN "sqldrivers/qsqlite.dll" + PATTERN "sqldrivers/qsqlodbc.dll" + PATTERN "sqldrivers/qsqlpsql.dll" + ) - install(CODE " + install( + CODE " file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${qtconf_dest_dir}/qt.conf\" \"[Paths] Plugins = Plugins Translations = Resources/translations\") - " COMPONENT Runtime) + " + COMPONENT Runtime + ) - install(CODE " + install( + CODE " file(GLOB_RECURSE QTPLUGINS \"\${CMAKE_INSTALL_PREFIX}/${plugin_dest_dir}/*.dll\") set(BU_CHMOD_BUNDLE_ITEMS ON) include(BundleUtilities) fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/Servatrice.exe\" \"\${QTPLUGINS}\" \"${QT_LIBRARY_DIR};${MYSQLCLIENT_LIBRARY_DIR}\") - " COMPONENT Runtime) + " + COMPONENT Runtime + ) endif() diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index bce3afeb..ed992b5f 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -15,33 +15,31 @@ add_executable(password_hash_test password_hash_test.cpp) find_package(GTest) if(NOT GTEST_FOUND) - IF(NOT EXISTS "${CMAKE_BINARY_DIR}/gtest-build") - message(STATUS "Downloading googletest") - configure_file("${CMAKE_SOURCE_DIR}/cmake/gtest-CMakeLists.txt.in" "${CMAKE_BINARY_DIR}/gtest-download/CMakeLists.txt") - execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/gtest-download ) - execute_process(COMMAND ${CMAKE_COMMAND} --build . - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/gtest-download ) - ELSE() - message(STATUS "GoogleTest directory exists") - ENDIF() + if(NOT EXISTS "${CMAKE_BINARY_DIR}/gtest-build") + message(STATUS "Downloading googletest") + configure_file( + "${CMAKE_SOURCE_DIR}/cmake/gtest-CMakeLists.txt.in" "${CMAKE_BINARY_DIR}/gtest-download/CMakeLists.txt" + ) + execute_process( + COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/gtest-download + ) + execute_process(COMMAND ${CMAKE_COMMAND} --build . WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/gtest-download) + else() + message(STATUS "GoogleTest directory exists") + endif() - # Add gtest directly to our build - add_subdirectory(${CMAKE_BINARY_DIR}/gtest-src - ${CMAKE_BINARY_DIR}/gtest-build - EXCLUDE_FROM_ALL ) + # Add gtest directly to our build + add_subdirectory(${CMAKE_BINARY_DIR}/gtest-src ${CMAKE_BINARY_DIR}/gtest-build EXCLUDE_FROM_ALL) - # Add the gtest include directory, since gtest - # doesn't add that dependency to its gtest target - target_include_directories(gtest INTERFACE - "$" ) + # Add the gtest include directory, since gtest doesn't add that dependency to its gtest target + target_include_directories(gtest INTERFACE "$") - SET(GTEST_INCLUDE_DIRS "${CMAKE_BINARY_DIR}/gtest-src/include") - SET(GTEST_BOTH_LIBRARIES gtest) - add_dependencies(dummy_test gtest) - add_dependencies(expression_test gtest) - add_dependencies(test_age_formatting gtest) - add_dependencies(password_hash_test gtest) + set(GTEST_INCLUDE_DIRS "${CMAKE_BINARY_DIR}/gtest-src/include") + set(GTEST_BOTH_LIBRARIES gtest) + add_dependencies(dummy_test gtest) + add_dependencies(expression_test gtest) + add_dependencies(test_age_formatting gtest) + add_dependencies(password_hash_test gtest) endif() include_directories(${GTEST_INCLUDE_DIRS}) diff --git a/tests/carddatabase/CMakeLists.txt b/tests/carddatabase/CMakeLists.txt index ee9605fa..2f3a7fa8 100644 --- a/tests/carddatabase/CMakeLists.txt +++ b/tests/carddatabase/CMakeLists.txt @@ -1,52 +1,49 @@ -ADD_DEFINITIONS("-DCARDDB_DATADIR=\"${CMAKE_CURRENT_SOURCE_DIR}/data/\"") +add_definitions("-DCARDDB_DATADIR=\"${CMAKE_CURRENT_SOURCE_DIR}/data/\"") -SET(TEST_QT_MODULES ${COCKATRICE_QT_VERSION_NAME}::Concurrent ${COCKATRICE_QT_VERSION_NAME}::Network ${COCKATRICE_QT_VERSION_NAME}::Widgets ${COCKATRICE_QT_VERSION_NAME}::Svg) - -IF(Qt6_FOUND) - QT6_WRAP_CPP(MOCKS_SOURCES - ../../cockatrice/src/settingscache.h - ../../cockatrice/src/settings/carddatabasesettings.h - ) -ELSEIF(Qt5_FOUND) - QT5_WRAP_CPP(MOCKS_SOURCES - ../../cockatrice/src/settingscache.h - ../../cockatrice/src/settings/carddatabasesettings.h - ) -ENDIF() - -add_executable(carddatabase_test - carddatabase_test.cpp - mocks.cpp - ../../cockatrice/src/carddatabase.cpp - ../../cockatrice/src/carddbparser/carddatabaseparser.cpp - ../../cockatrice/src/carddbparser/cockatricexml3.cpp - ../../cockatrice/src/carddbparser/cockatricexml4.cpp - ../../cockatrice/src/settings/settingsmanager.cpp - ${VERSION_STRING_CPP} - ${MOCKS_SOURCES} +set(TEST_QT_MODULES ${COCKATRICE_QT_VERSION_NAME}::Concurrent ${COCKATRICE_QT_VERSION_NAME}::Network + ${COCKATRICE_QT_VERSION_NAME}::Widgets ${COCKATRICE_QT_VERSION_NAME}::Svg ) -add_executable(filter_string_test - filter_string_test.cpp - mocks.cpp - ../../cockatrice/src/filter_string.cpp - ../../cockatrice/src/cardfilter.cpp - ../../cockatrice/src/filtertree.cpp - ../../cockatrice/src/carddatabase.cpp - ../../cockatrice/src/carddbparser/carddatabaseparser.cpp - ../../cockatrice/src/carddbparser/cockatricexml3.cpp - ../../cockatrice/src/carddbparser/cockatricexml4.cpp - ../../cockatrice/src/settings/settingsmanager.cpp - ${VERSION_STRING_CPP} - ${MOCKS_SOURCES} + +if(Qt6_FOUND) + qt6_wrap_cpp(MOCKS_SOURCES ../../cockatrice/src/settingscache.h ../../cockatrice/src/settings/carddatabasesettings.h) +elseif(Qt5_FOUND) + qt5_wrap_cpp(MOCKS_SOURCES ../../cockatrice/src/settingscache.h ../../cockatrice/src/settings/carddatabasesettings.h) +endif() + +add_executable( + carddatabase_test + ${MOCKS_SOURCES} + ${VERSION_STRING_CPP} + ../../cockatrice/src/carddatabase.cpp + ../../cockatrice/src/carddbparser/carddatabaseparser.cpp + ../../cockatrice/src/carddbparser/cockatricexml3.cpp + ../../cockatrice/src/carddbparser/cockatricexml4.cpp + ../../cockatrice/src/settings/settingsmanager.cpp + carddatabase_test.cpp + mocks.cpp +) +add_executable( + filter_string_test + ${MOCKS_SOURCES} + ${VERSION_STRING_CPP} + ../../cockatrice/src/carddatabase.cpp + ../../cockatrice/src/carddbparser/carddatabaseparser.cpp + ../../cockatrice/src/carddbparser/cockatricexml3.cpp + ../../cockatrice/src/carddbparser/cockatricexml4.cpp + ../../cockatrice/src/cardfilter.cpp + ../../cockatrice/src/filter_string.cpp + ../../cockatrice/src/filtertree.cpp + ../../cockatrice/src/settings/settingsmanager.cpp + filter_string_test.cpp + mocks.cpp ) if(NOT GTEST_FOUND) - add_dependencies(carddatabase_test gtest) - add_dependencies(filter_string_test gtest) + add_dependencies(carddatabase_test gtest) + add_dependencies(filter_string_test gtest) endif() target_link_libraries(carddatabase_test Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES}) target_link_libraries(filter_string_test Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES}) - add_test(NAME carddatabase_test COMMAND carddatabase_test) add_test(NAME filter_string_test COMMAND filter_string_test) diff --git a/tests/loading_from_clipboard/CMakeLists.txt b/tests/loading_from_clipboard/CMakeLists.txt index efb36a08..7b635a12 100644 --- a/tests/loading_from_clipboard/CMakeLists.txt +++ b/tests/loading_from_clipboard/CMakeLists.txt @@ -1,15 +1,17 @@ -ADD_DEFINITIONS("-DCARDDB_DATADIR=\"${CMAKE_CURRENT_SOURCE_DIR}/data/\"") -add_executable(loading_from_clipboard_test - loading_from_clipboard_test.cpp - clipboard_testing.cpp - ../../common/decklist.cpp - ) +add_definitions("-DCARDDB_DATADIR=\"${CMAKE_CURRENT_SOURCE_DIR}/data/\"") +add_executable( + loading_from_clipboard_test ../../common/decklist.cpp clipboard_testing.cpp loading_from_clipboard_test.cpp +) if(NOT GTEST_FOUND) - add_dependencies(loading_from_clipboard_test gtest) + add_dependencies(loading_from_clipboard_test gtest) endif() -SET(TEST_QT_MODULES ${COCKATRICE_QT_VERSION_NAME}::Concurrent ${COCKATRICE_QT_VERSION_NAME}::Network ${COCKATRICE_QT_VERSION_NAME}::Widgets) +set(TEST_QT_MODULES ${COCKATRICE_QT_VERSION_NAME}::Concurrent ${COCKATRICE_QT_VERSION_NAME}::Network + ${COCKATRICE_QT_VERSION_NAME}::Widgets +) -target_link_libraries(loading_from_clipboard_test cockatrice_common Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES}) +target_link_libraries( + loading_from_clipboard_test cockatrice_common Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES} +) add_test(NAME loading_from_clipboard_test COMMAND loading_from_clipboard_test)