diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 575 |
1 files changed, 286 insertions, 289 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 4bbbaa5a..107ba367 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,19 +26,20 @@ cmake_minimum_required(VERSION 3.16) message(STATUS "Current Generator: ${CMAKE_GENERATOR}") + if(CMAKE_GENERATOR STREQUAL "Xcode") - set(CMAKE_USER_MAKE_RULES_OVERRIDE "${CMAKE_SOURCE_DIR}/cmake/FlagsOverridesXcode.cmake") - set(XCODE_BUILD 1) + set(CMAKE_USER_MAKE_RULES_OVERRIDE "${CMAKE_SOURCE_DIR}/cmake/FlagsOverridesXcode.cmake") + set(XCODE_BUILD 1) else() - set(CMAKE_USER_MAKE_RULES_OVERRIDE "${CMAKE_SOURCE_DIR}/cmake/FlagsOverrides.cmake") + set(CMAKE_USER_MAKE_RULES_OVERRIDE "${CMAKE_SOURCE_DIR}/cmake/FlagsOverrides.cmake") endif() # define project -project(GpgFrontend - VERSION 2.1.3 - DESCRIPTION "GpgFrontend is a free, open-source, robust yet user-friendly, compact and cross-platform tool for OpenPGP encryption." - HOMEPAGE_URL "https://gpgfrontend.bktus.com" - LANGUAGES CXX) +project(GpgFrontend + VERSION 2.1.3 + DESCRIPTION "GpgFrontend is a free, open-source, robust yet user-friendly, compact and cross-platform tool for OpenPGP encryption." + HOMEPAGE_URL "https://gpgfrontend.bktus.com" + LANGUAGES CXX) # show cmake version message(STATUS "GpgFrontend Build Configuration Started CMAKE Version ${CMAKE_VERSION}") @@ -54,24 +55,27 @@ include(CheckCXXSourceCompiles) # generate compile_commands.json set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -# options +# build type options option(GPGFRONTEND_BUILD_TYPE_TEST_CORE - "Only compile the core and generate the unit test program" OFF) + "Only compile the core and generate the unit test program" OFF) option(GPGFRONTEND_BUILD_TYPE_TEST_CORE_AND_COVERAGE - "Compile only the core and generate unit test programs that can evaluate test coverage" OFF) + "Compile only the core and generate unit test programs that can evaluate test coverage" OFF) option(GPGFRONTEND_BUILD_TYPE_TEST_UI - "Only generate a graphical interface with basic functions" OFF) + "Only generate a graphical interface with basic functions" OFF) option(GPGFRONTEND_BUILD_TYPE_TEST_ALL - "Generate a graphical interface with all functions" OFF) + "Generate a graphical interface with all functions" OFF) option(GPGFRONTEND_BUILD_TYPE_STABLE - "Generate release version" ON) + "Generate release version" ON) option(GPGFRONTEND_BUILD_TYPE_FULL_SDK "Build and install all headers and libs exclude application" OFF) option(GPGFRONTEND_BUILD_TYPE_ONLY_SDK "Build and install sdk headers and libs" OFF) option(GPGFRONTEND_BUILD_TYPE_ONLY_APPLICATION "Generate a usable SDK" OFF) + +# function or mode options option(GPGFRONTEND_QT5_BUILD "Swith to Qt5 building mode" OFF) option(GPGFRONTEND_GENERATE_LINUX_INSTALL_SOFTWARE "Generate an installable version" OFF) option(GPGFRONTEND_ENABLE_ASAN "Enable ASAN" OFF) +# xcode options option(GPGFRONTEND_XCODE_TEAM_ID "GpgFrontend Apple Team ID" "NONE") option(GPGFRONTEND_XOCDE_CODE_SIGN_IDENTITY "GpgFrontend Signing Certificate" "NONE") option(GPGFRONTEND_XOCDE_APPID "GpgFrontend Apple AppID" "NONE") @@ -79,122 +83,122 @@ option(GPGFRONTEND_XOCDE_PROVISIONING_PROFILE_UUID "GpgFrontend ProvisioningProf option(GPGFRONTEND_XOCDE_ENABLE_SANDBOX "Enable SandBox For Xcode Build" OFF) # analyse options -if (GPGFRONTEND_BUILD_TYPE_TEST_CORE) - set(CMAKE_BUILD_TYPE "Debug") - set(GPGFRONTEND_BUILD_CONFIG "test_core") -endif () - -if (GPGFRONTEND_BUILD_TYPE_TEST_CORE_AND_COVERAGE) - set(CMAKE_BUILD_TYPE "Debug") - set(GPGFRONTEND_BUILD_CONFIG "test_core_coverage") -endif () - -if (GPGFRONTEND_BUILD_TYPE_TEST_UI) - set(CMAKE_BUILD_TYPE "Debug") - set(GPGFRONTEND_BUILD_CONFIG "test_ui") -endif () - -if (GPGFRONTEND_BUILD_TYPE_TEST_ALL) - set(CMAKE_BUILD_TYPE "Debug") - set(GPGFRONTEND_BUILD_CONFIG "test_all") -endif () +if(GPGFRONTEND_BUILD_TYPE_TEST_CORE) + set(CMAKE_BUILD_TYPE "Debug") + set(GPGFRONTEND_BUILD_CONFIG "test_core") +endif() + +if(GPGFRONTEND_BUILD_TYPE_TEST_CORE_AND_COVERAGE) + set(CMAKE_BUILD_TYPE "Debug") + set(GPGFRONTEND_BUILD_CONFIG "test_core_coverage") +endif() + +if(GPGFRONTEND_BUILD_TYPE_TEST_UI) + set(CMAKE_BUILD_TYPE "Debug") + set(GPGFRONTEND_BUILD_CONFIG "test_ui") +endif() + +if(GPGFRONTEND_BUILD_TYPE_TEST_ALL) + set(CMAKE_BUILD_TYPE "Debug") + set(GPGFRONTEND_BUILD_CONFIG "test_all") +endif() # Specify compilation mode message(STATUS "Switch Build Configure STABLE_BUILD_APPLICATION") set(STABLE_BUILD_APPLICATION 1) # stable features -if (GPGFRONTEND_BUILD_TYPE_STABLE) +if(GPGFRONTEND_BUILD_TYPE_STABLE) + set(GPGFRONTEND_BUILD_TYPE_TEST_CORE 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_CORE_AND_COVERAGE 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_UI 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_ALL 0) + unset(GPGFRONTEND_BUILD_CONFIG) + + set(STABLE_BUILD_APPLICATION 1) +endif() - set(GPGFRONTEND_BUILD_TYPE_TEST_CORE 0) - set(GPGFRONTEND_BUILD_TYPE_TEST_CORE_AND_COVERAGE 0) - set(GPGFRONTEND_BUILD_TYPE_TEST_UI 0) - set(GPGFRONTEND_BUILD_TYPE_TEST_ALL 0) - unset(GPGFRONTEND_BUILD_CONFIG) +# linux package build +if(GPGFRONTEND_GENERATE_LINUX_INSTALL_SOFTWARE) + set(GPGFRONTEND_BUILD_TYPE_TEST_CORE 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_CORE_AND_COVERAGE 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_UI 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_ALL 0) + unset(GPGFRONTEND_BUILD_CONFIG) + + set(LINUX_INSTALL_SOFTWARE 1) +endif() - set(STABLE_BUILD_APPLICATION 1) -endif () +if(GPGFRONTEND_BUILD_TYPE_FULL_SDK) + set(GPGFRONTEND_BUILD_TYPE_TEST_CORE 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_CORE_AND_COVERAGE 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_UI 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_ALL 0) + unset(GPGFRONTEND_BUILD_CONFIG) -# linux package build -if (GPGFRONTEND_GENERATE_LINUX_INSTALL_SOFTWARE) - - set(GPGFRONTEND_BUILD_TYPE_TEST_CORE 0) - set(GPGFRONTEND_BUILD_TYPE_TEST_CORE_AND_COVERAGE 0) - set(GPGFRONTEND_BUILD_TYPE_TEST_UI 0) - set(GPGFRONTEND_BUILD_TYPE_TEST_ALL 0) - unset(GPGFRONTEND_BUILD_CONFIG) - - set(LINUX_INSTALL_SOFTWARE 1) -endif () - -if (GPGFRONTEND_BUILD_TYPE_FULL_SDK) - set(GPGFRONTEND_BUILD_TYPE_TEST_CORE 0) - set(GPGFRONTEND_BUILD_TYPE_TEST_CORE_AND_COVERAGE 0) - set(GPGFRONTEND_BUILD_TYPE_TEST_UI 0) - set(GPGFRONTEND_BUILD_TYPE_TEST_ALL 0) - unset(GPGFRONTEND_BUILD_CONFIG) - - set(STABLE_BUILD_APPLICATION 0) - set(STABLE_BUILD_FULL_SDK 1) + set(STABLE_BUILD_APPLICATION 0) + set(STABLE_BUILD_FULL_SDK 1) endif() -if (GPGFRONTEND_BUILD_TYPE_ONLY_SDK) - set(GPGFRONTEND_BUILD_TYPE_TEST_CORE 0) - set(GPGFRONTEND_BUILD_TYPE_TEST_CORE_AND_COVERAGE 0) - set(GPGFRONTEND_BUILD_TYPE_TEST_UI 0) - set(GPGFRONTEND_BUILD_TYPE_TEST_ALL 0) - unset(GPGFRONTEND_BUILD_CONFIG) +if(GPGFRONTEND_BUILD_TYPE_ONLY_SDK) + set(GPGFRONTEND_BUILD_TYPE_TEST_CORE 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_CORE_AND_COVERAGE 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_UI 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_ALL 0) + unset(GPGFRONTEND_BUILD_CONFIG) - set(STABLE_BUILD_APPLICATION 0) - set(STABLE_BUILD_ONLY_SDK 1) + set(STABLE_BUILD_APPLICATION 0) + set(STABLE_BUILD_ONLY_SDK 1) endif() -if (GPGFRONTEND_BUILD_TYPE_ONLY_APPLICATION) - set(GPGFRONTEND_BUILD_TYPE_TEST_CORE 0) - set(GPGFRONTEND_BUILD_TYPE_TEST_CORE_AND_COVERAGE 0) - set(GPGFRONTEND_BUILD_TYPE_TEST_UI 0) - set(GPGFRONTEND_BUILD_TYPE_TEST_ALL 0) - unset(GPGFRONTEND_BUILD_CONFIG) +if(GPGFRONTEND_BUILD_TYPE_ONLY_APPLICATION) + set(GPGFRONTEND_BUILD_TYPE_TEST_CORE 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_CORE_AND_COVERAGE 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_UI 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_ALL 0) + unset(GPGFRONTEND_BUILD_CONFIG) - set(STABLE_BUILD_APPLICATION 0) - set(STABLE_BUILD_ONLY_APPLICATION 1) + set(STABLE_BUILD_APPLICATION 0) + set(STABLE_BUILD_ONLY_APPLICATION 1) endif() # C++ # options for ccache find_program(CCACHE_FOUND ccache) + if(CCACHE_FOUND) - set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) - set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) + set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) + set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) endif(CCACHE_FOUND) # detect compiler -if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - # using clang - if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.0) - message(FATAL_ERROR "Clang version must be at least 9.0!") - endif() - message(STATUS "Build System Using Compiler CLANG, VERSION: ${CMAKE_CXX_COMPILER_VERSION}") - set(USING_COMPILER_CLANG 1) - -elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") - # using gcc - if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0) - message(FATAL_ERROR "GCC version must be at least 8.0!") - endif() - message(STATUS "Build System Using Compiler GCC, VERSION: ${CMAKE_CXX_COMPILER_VERSION}") - set(USING_COMPILER_GCC 1) - -elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") - # using Intel C++ - message(FATAL_ERROR "Intel C++ is not supported.") - -elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") - # using Visual Studio C++ - message(FATAL_ERROR "MSVC is not supported.") -endif () - +if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + # using clang + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.0) + message(FATAL_ERROR "Clang version must be at least 9.0!") + endif() + + message(STATUS "Build System Using Compiler CLANG, VERSION: ${CMAKE_CXX_COMPILER_VERSION}") + set(USING_COMPILER_CLANG 1) + +elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") + # using gcc + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0) + message(FATAL_ERROR "GCC version must be at least 8.0!") + endif() + + message(STATUS "Build System Using Compiler GCC, VERSION: ${CMAKE_CXX_COMPILER_VERSION}") + set(USING_COMPILER_GCC 1) + +elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") + # using Intel C++ + message(FATAL_ERROR "Intel C++ is not supported.") + +elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") + # using Visual Studio C++ + message(FATAL_ERROR "MSVC is not supported.") +endif() # Using Standard C++-17 (Consider compatibility) set(CMAKE_CXX_STANDARD 17) @@ -207,42 +211,40 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # Check Env Variables Before Configuring +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "Release") +endif() -if (NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE "Release") -endif () - -if (CMAKE_BUILD_TYPE STREQUAL "Release") - add_compile_definitions(RELEASE) +if(CMAKE_BUILD_TYPE STREQUAL "Release") + add_compile_definitions(RELEASE) else() - add_compile_definitions(DEBUG) + add_compile_definitions(DEBUG) endif() # use xcode archive build at macos release at default -if (CMAKE_BUILD_TYPE STREQUAL "Release" AND APPLE) - set(GPGFRONTEND_GENERATE_LINUX_INSTALL_SOFTWARE 0) - set(LINUX_INSTALL_SOFTWARE 0) +if(CMAKE_BUILD_TYPE STREQUAL "Release" AND APPLE) + set(GPGFRONTEND_GENERATE_LINUX_INSTALL_SOFTWARE 0) + set(LINUX_INSTALL_SOFTWARE 0) - set(GPGFRONTEND_BUILD_TYPE_TEST_CORE 0) - set(GPGFRONTEND_BUILD_TYPE_TEST_CORE_AND_COVERAGE 0) - set(GPGFRONTEND_BUILD_TYPE_TEST_UI 0) - set(GPGFRONTEND_BUILD_TYPE_TEST_ALL 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_CORE 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_CORE_AND_COVERAGE 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_UI 0) + set(GPGFRONTEND_BUILD_TYPE_TEST_ALL 0) - unset(GPGFRONTEND_BUILD_CONFIG) -endif () + unset(GPGFRONTEND_BUILD_CONFIG) +endif() # if enable ASAN if(GPGFRONTEND_ENABLE_ASAN) + # check compiler + if(NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + message(FATAL_ERROR "Use GPGFRONTEND_ENABLE_ASAN only when using the clang compiler.") + endif() - # check compiler - if(NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - message(FATAL_ERROR "Use GPGFRONTEND_ENABLE_ASAN only when using the clang compiler.") - endif() - - add_compile_options(-fsanitize=address -fsanitize-recover=address) - add_link_options(-fsanitize=address -fsanitize-recover=address) + add_compile_options(-fsanitize=address -fsanitize-recover=address) + add_link_options(-fsanitize=address -fsanitize-recover=address) - set(ENABLE_ASAN 1) + set(ENABLE_ASAN 1) endif() set(AppName GpgFrontend) @@ -251,22 +253,23 @@ set(AppName GpgFrontend) set(GIT_COMMIT_HASH "") set(GIT_BRANCH_NAME "") find_package(Git QUIET) -if (GIT_FOUND) - execute_process( - COMMAND ${GIT_EXECUTABLE} log -1 --pretty=format:%H - OUTPUT_VARIABLE GIT_COMMIT_HASH - OUTPUT_STRIP_TRAILING_WHITESPACE - ERROR_QUIET - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - ) - execute_process( - COMMAND ${GIT_EXECUTABLE} symbolic-ref --short -q HEAD - OUTPUT_VARIABLE GIT_BRANCH_NAME - OUTPUT_STRIP_TRAILING_WHITESPACE - ERROR_QUIET - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - ) -endif () + +if(GIT_FOUND) + execute_process( + COMMAND ${GIT_EXECUTABLE} log -1 --pretty=format:%H + OUTPUT_VARIABLE GIT_COMMIT_HASH + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + ) + execute_process( + COMMAND ${GIT_EXECUTABLE} symbolic-ref --short -q HEAD + OUTPUT_VARIABLE GIT_BRANCH_NAME + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + ) +endif() set(BUILD_VERSION ${PROJECT_VERSION}_${CMAKE_SYSTEM}_${CMAKE_SYSTEM_PROCESSOR}_${CMAKE_BUILD_TYPE}) set(GIT_VERSION ${GIT_BRANCH_NAME}_${GIT_COMMIT_HASH}) @@ -281,132 +284,127 @@ message(STATUS "GpgFrontend Build Version ${BUILD_VERSION}") message(STATUS "GpgFrontend Git Repo Version ${GIT_VERSION}") # support for dymatic libraries -include (GenerateExportHeader) +include(GenerateExportHeader) # Windows -IF (MINGW) - message(STATUS "GpgFrontend Configuration For OS Platform Microsoft Windows") - message(STATUS "Build Environment MINGW") - - set(OS_PLATFORM 0) - add_definitions(-DWINDOWS) - - include_directories( - ${CMAKE_CURRENT_SOURCE_DIR}/src - ${CMAKE_CURRENT_SOURCE_DIR}/third_party - /mingw64/include - ) - link_directories( - ${CMAKE_SOURCE_DIR}/lib/mingw - /mingw64/lib - ) +IF(MINGW) + message(STATUS "GpgFrontend Configuration For OS Platform Microsoft Windows") + message(STATUS "Build Environment MINGW") + + set(OS_PLATFORM 0) + add_definitions(-DWINDOWS) + + include_directories( + ${CMAKE_CURRENT_SOURCE_DIR}/src + ${CMAKE_CURRENT_SOURCE_DIR}/third_party + /mingw64/include + ) + link_directories( + ${CMAKE_SOURCE_DIR}/lib/mingw + /mingw64/lib + ) + + # Http Request User Agent + set(HTTP_REQUEST_USER_AGENT "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0") +endif() - # Http Request User Agent - set(HTTP_REQUEST_USER_AGENT "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0") +# macOS +if(APPLE) + message(STATUS "GpgFrontend Configuration For OS Platform MacOS") -endif () + set(OS_PLATFORM 1) + ADD_DEFINITIONS(-DMACOS) -# macOS -if (APPLE) - message(STATUS "GpgFrontend Configuration For OS Platform MacOS") - - set(OS_PLATFORM 1) - ADD_DEFINITIONS(-DMACOS) - - if (XCODE_BUILD) - set(XCODE_CODE_SIGN_IDENTITY "\"${XCODE_CODE_SIGN_IDENTITY}\"") - message(STATUS "XCODE_CODE_SIGN_IDENTITY ${XCODE_CODE_SIGN_IDENTITY}") - if (APPLE_SANDBOX) - add_compile_definitions(APPLE_SANDBOX) - endif () - endif () - - include_directories( - ${CMAKE_CURRENT_SOURCE_DIR}/src - ${CMAKE_CURRENT_SOURCE_DIR}/third_party - /usr/local/include - /opt/homebrew/include - ) - link_directories( - /usr/local/lib - /opt/homebrew/lib - ) - - # Http Request User Agent - set(HTTP_REQUEST_USER_AGENT "Mozilla/5.0 (Macintosh; Intel Mac OS X 14.3; rv:123.0) Gecko/20100101 Firefox/123.0") - -endif () - -if (UNIX AND NOT APPLE) - set(LINUX TRUE) -endif () - -if (LINUX) - - message(STATUS "GpgFrontend Configuration For OS Platform Linux") - - set(OS_PLATFORM 2) - add_compile_definitions(LINUX) - - # Get Env Info - find_program(UNAME_PROGRAM uname) - if(UNAME_PROGRAM) - execute_process(COMMAND ${UNAME_PROGRAM} OUTPUT_VARIABLE SYSTEM_NAME OUTPUT_STRIP_TRAILING_WHITESPACE) - endif() + if(XCODE_BUILD) + set(XCODE_CODE_SIGN_IDENTITY "\"${XCODE_CODE_SIGN_IDENTITY}\"") + message(STATUS "XCODE_CODE_SIGN_IDENTITY ${XCODE_CODE_SIGN_IDENTITY}") - if(USING_COMPILER_CLANG) - add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-stdlib=libstdc++>) + if(APPLE_SANDBOX) + add_compile_definitions(APPLE_SANDBOX) endif() + endif() + + include_directories( + ${CMAKE_CURRENT_SOURCE_DIR}/src + ${CMAKE_CURRENT_SOURCE_DIR}/third_party + /usr/local/include + /opt/homebrew/include + ) + link_directories( + /usr/local/lib + /opt/homebrew/lib + ) + + # Http Request User Agent + set(HTTP_REQUEST_USER_AGENT "Mozilla/5.0 (Macintosh; Intel Mac OS X 14.3; rv:123.0) Gecko/20100101 Firefox/123.0") +endif() - if(SYSTEM_NAME STREQUAL "FreeBSD") - message(STATUS "FreeBSD BOX") - add_compile_definitions(FREEBSD) - set(FREEBSD TRUE) - endif() +if(UNIX AND NOT APPLE) + set(LINUX TRUE) +endif() - include_directories( - ${CMAKE_CURRENT_SOURCE_DIR}/src - ${CMAKE_CURRENT_SOURCE_DIR}/third_party - /usr/include - /usr/local/include - ) - link_directories(${CMAKE_CURRENT_SOURCE_DIR}/lib/) - link_directories( - /lib/ - /usr/lib/ - /usr/local/lib/ - ) - - # Http Request User Agent - set(HTTP_REQUEST_USER_AGENT "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:123.0) Gecko/20100101 Firefox/123.0") - -endif () - -if (LINUX_INSTALL_SOFTWARE) - message(STATUS "Linux Install Traget ${CMAKE_INSTALL_PREFIX}") - include(GNUInstallDirs) - set(APP_INSTALL_FLAG LINUX_INSTALL) - add_compile_definitions(LINUX_INSTALL_BUILD) -else () - set(APP_INSTALL_FLAG BUNDLE) -endif () - -if (GPGFRONTEND_QT5_BUILD) - - add_compile_definitions(QT5_BUILD) - - # Introduce Qt - # Support Qt version: 5.15.x - find_package(Qt5 5.15 COMPONENTS Core Widgets PrintSupport Network LinguistTools REQUIRED) +if(LINUX) + message(STATUS "GpgFrontend Configuration For OS Platform Linux") + + set(OS_PLATFORM 2) + add_compile_definitions(LINUX) + + # Get Env Info + find_program(UNAME_PROGRAM uname) + + if(UNAME_PROGRAM) + execute_process(COMMAND ${UNAME_PROGRAM} OUTPUT_VARIABLE SYSTEM_NAME OUTPUT_STRIP_TRAILING_WHITESPACE) + endif() + + if(USING_COMPILER_CLANG) + add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-stdlib=libstdc++>) + endif() + + if(SYSTEM_NAME STREQUAL "FreeBSD") + message(STATUS "FreeBSD BOX") + add_compile_definitions(FREEBSD) + set(FREEBSD TRUE) + endif() + + include_directories( + ${CMAKE_CURRENT_SOURCE_DIR}/src + ${CMAKE_CURRENT_SOURCE_DIR}/third_party + /usr/include + /usr/local/include + ) + link_directories(${CMAKE_CURRENT_SOURCE_DIR}/lib/) + link_directories( + /lib/ + /usr/lib/ + /usr/local/lib/ + ) + + # Http Request User Agent + set(HTTP_REQUEST_USER_AGENT "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:123.0) Gecko/20100101 Firefox/123.0") +endif() +if(LINUX_INSTALL_SOFTWARE) + message(STATUS "Linux Install Traget ${CMAKE_INSTALL_PREFIX}") + include(GNUInstallDirs) + set(APP_INSTALL_FLAG LINUX_INSTALL) + add_compile_definitions(LINUX_INSTALL_BUILD) else() + set(APP_INSTALL_FLAG BUNDLE) +endif() - add_compile_definitions(QT6_BUILD) +if(GPGFRONTEND_QT5_BUILD) + add_compile_definitions(QT5_BUILD) - # Introduce Qt - # Support Qt version: 6.x - find_package(Qt6 6 COMPONENTS Core Widgets PrintSupport Network LinguistTools REQUIRED) + # Introduce Qt + # Support Qt version: 5.15.x + find_package(Qt5 5.15 COMPONENTS Core Widgets PrintSupport Network LinguistTools REQUIRED) +else() + add_compile_definitions(QT6_BUILD) + + # Introduce Qt + # Support Qt version: 6.x + find_package(Qt6 6 COMPONENTS Core Widgets PrintSupport Network LinguistTools REQUIRED) endif() # Qt configuration @@ -417,44 +415,43 @@ set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC_OPTIONS "--compress;9") set(CMAKE_AUTOUIC_SEARCH_PATHS ${CMAKE_AUTOUIC_SEARCH_PATHS} ${CMAKE_SOURCE_DIR}/ui) -if (STABLE_BUILD_APPLICATION) - message("[*] Build Stable Application") - set(BUILD_CORE 1) - set(BUILD_UI 1) - set(BUILD_TEST 1) - set(BUILD_SDK 1) - set(BUILD_APPLICATION 1) - set(SUPPORT_MULTI_LANG 1) -elseif (STABLE_BUILD_ONLY_SDK) - message("[*] Build SDK") - set(BUILD_CORE 1) - set(BUILD_UI 1) - set(BUILD_SDK 1) -elseif (STABLE_BUILD_FULL_SDK) - message("[*] Build All Headers and Libs (SDK fully build)") - set(BUILD_CORE 1) - set(BUILD_UI 1) - set(BUILD_TEST 1) - set(BUILD_SDK 1) -elseif (GPGFRONTEND_BUILD_TYPE_ONLY_APPLICATION) - message("[*] Build executable only") - set(BUILD_CORE 0) - set(BUILD_UI 0) - set(BUILD_TEST 0) - set(BUILD_SDK 0) - set(BUILD_APPLICATION 1) - set(SUPPORT_MULTI_LANG 1) -endif () - +if(STABLE_BUILD_APPLICATION) + message("[*] Build Stable Application") + set(BUILD_CORE 1) + set(BUILD_UI 1) + set(BUILD_TEST 1) + set(BUILD_SDK 1) + set(BUILD_APPLICATION 1) + set(SUPPORT_MULTI_LANG 1) +elseif(STABLE_BUILD_ONLY_SDK) + message("[*] Build SDK") + set(BUILD_CORE 1) + set(BUILD_UI 1) + set(BUILD_SDK 1) +elseif(STABLE_BUILD_FULL_SDK) + message("[*] Build All Headers and Libs (SDK fully build)") + set(BUILD_CORE 1) + set(BUILD_UI 1) + set(BUILD_TEST 1) + set(BUILD_SDK 1) +elseif(GPGFRONTEND_BUILD_TYPE_ONLY_APPLICATION) + message("[*] Build executable only") + set(BUILD_CORE 0) + set(BUILD_UI 0) + set(BUILD_TEST 0) + set(BUILD_SDK 0) + set(BUILD_APPLICATION 1) + set(SUPPORT_MULTI_LANG 1) +endif() # For instance in order to select the highest version one SET(CMAKE_FIND_PACKAGE_SORT_ORDER NATURAL) SET(CMAKE_FIND_PACKAGE_SORT_DIRECTION DEC) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) -if (SUPPORT_MULTI_LANG) - add_compile_definitions(SUPPORT_MULTI_LANG) -endif () +if(SUPPORT_MULTI_LANG) + add_compile_definitions(SUPPORT_MULTI_LANG) +endif() # Output Env Variables message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}") |