diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 70 |
1 files changed, 26 insertions, 44 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 97069b29..fd4cc951 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,9 +23,10 @@ # # SPDX-License-Identifier: GPL-3.0-or-later - cmake_minimum_required(VERSION 3.16) +set(CMAKE_USER_MAKE_RULES_OVERRIDE "cmake/FlagsOverrides.cmake") + # define project project(GpgFrontend VERSION 2.1.1 LANGUAGES CXX) @@ -155,24 +156,30 @@ endif(CCACHE_FOUND) # detect compiler if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") # using clang - message(STATUS "Using Compiler clang") - message(STATUS "clang version ${CMAKE_CXX_COMPILER_VERSION}") + 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 - message(STATUS "Using Compiler gcc") - message(STATUS "gcc version ${CMAKE_CXX_COMPILER_VERSION}") + 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(STATUS "Using Compiler Intel") - message(WARNING "Compilation with this compiler is untested, which may create some problems that need to be solved by the user.") + message(FATAL_ERROR "Intel C++ is not supported.") + elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") # using Visual Studio C++ - message(STATUS "Using Compiler MSVC") - message(WARNING "Compilation with this compiler is untested, which may create some problems that need to be solved by the user.") + message(FATAL_ERROR "MSVC is not supported.") endif () + # Using Standard C++-17 (Consider compatibility) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -224,34 +231,6 @@ else () set(AppName GpgFrontend) endif () -# Output Env Variables -message(STATUS "Define CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE}") - -if (${CMAKE_BUILD_TYPE} STREQUAL "Release") - set(BUILD_FLAG 0) - ADD_DEFINITIONS(-DRELEASE) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3") - # Release Version force to build using option STABLE_BUILD_APPLICATION - set(FULL_BUILD_APPLICATION 0) - set(STABLE_BUILD_APPLICATION 1) -else () - set(BUILD_FLAG 1) - ADD_DEFINITIONS(-DDEBUG) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g") - # Generate branch coverage information using gcc - if (TEST_COVERAGE_BUILD) - if (USING_COMPILER_GCC) - message(STATUS "Set branch coverage test parameters for Gcc") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage") - elseif (USING_COMPILER_CLANG) - message(STATUS "Set branch coverage test parameters for Clang") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-instr-generate -fcoverage-mapping") - endif () - endif () -endif () - -message(STATUS "Build Flags " ${CMAKE_CXX_FLAGS}) - # Get Git Information set(GIT_COMMIT_HASH "") @@ -278,6 +257,10 @@ set(BUILD_VERSION ${PROJECT_VERSION}_${CMAKE_SYSTEM}_${CMAKE_SYSTEM_PROCESSOR}_$ set(GIT_VERSION ${GIT_BRANCH_NAME}_${GIT_COMMIT_HASH}) string(TIMESTAMP BUILD_TIMESTAMP "%Y-%m-%d %H:%M:%S") +# Convert BUILD_VERSION and GIT_VERSION to lowercase +string(TOLOWER "${BUILD_VERSION}" BUILD_VERSION) +string(TOLOWER "${GIT_VERSION}" GIT_VERSION) + message(STATUS "GpgFrontend Build Timestamp ${BUILD_TIMESTAMP}") message(STATUS "GpgFrontend Build Version ${BUILD_VERSION}") message(STATUS "GpgFrontend Git Repo Version ${GIT_VERSION}") @@ -341,7 +324,7 @@ endif () if (LINUX) - message(STATUS "GpgFrontend Configuration For OS Platform LINUX") + message(STATUS "GpgFrontend Configuration For OS Platform Linux") set(OS_PLATFORM 2) ADD_DEFINITIONS(-DLINUX) @@ -356,12 +339,6 @@ if (LINUX) set(FREEBSD TRUE) endif() - message(STATUS "GCC Version ${CMAKE_CXX_COMPILER_VERSION}") - if (CMAKE_CXX_COMPILER_VERSION LESS 9) - message(STATUS "GCC CXX_FLAGS add filesystem support manually") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++17 -lstdc++fs") - endif () - include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}/third_party @@ -444,6 +421,11 @@ if (SUPPORT_MULTI_LANG) add_compile_definitions(SUPPORT_MULTI_LANG) endif () +# Output Env Variables +message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}") +message(STATUS "Build C Flags: ${CMAKE_C_FLAGS}") +message(STATUS "Build C++ Flags: ${CMAKE_CXX_FLAGS}") + # third_party add_subdirectory(third_party) |