diff options
-rw-r--r-- | CMakeLists.txt | 41 |
1 files changed, 24 insertions, 17 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 0d7b27452..b0eb140b6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,11 +5,6 @@ IF(NOT CMAKE_BUILD_TYPE) MESSAGE(STATUS "No build type selected, default to Release") SET(CMAKE_BUILD_TYPE "Release") ENDIF() -STRING(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE) -IF(CMAKE_BUILD_TYPE AND - NOT uppercase_CMAKE_BUILD_TYPE MATCHES "^(DEBUG|RELEASE)$") - MESSAGE(FATAL_ERROR "Invalid value for CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}") -ENDIF() OPTION(BUILD_STATIC_LIB "Build as a static library" OFF) @@ -22,6 +17,24 @@ FUNCTION(ADD_COMPILE_FLAG value) ENDFOREACH(variable) ENDFUNCTION() +FUNCTION(ADD_DEBUG_COMPILE_FLAG value) + IF("${CMAKE_BUILD_TYPE}" MATCHES "Debug") + MESSAGE(STATUS "Building with ${value}") + ENDIF() + FOREACH(variable CMAKE_C_FLAGS_DEBUG CMAKE_CXX_FLAGS_DEBUG) + SET(${variable} "${${variable}} ${value}" PARENT_SCOPE) + ENDFOREACH(variable) +ENDFUNCTION() + +FUNCTION(ADD_NONDEBUG_COMPILE_FLAG value) + IF(NOT "${CMAKE_BUILD_TYPE}" MATCHES "Debug") + MESSAGE(STATUS "Building with ${value}") + ENDIF() + FOREACH(variable CMAKE_C_FLAGS_RELEASE CMAKE_CXX_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO CMAKE_CXX_FLAGS_RELWITHDEBINFO CMAKE_C_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_MINSIZEREL) + SET(${variable} "${${variable}} ${value}" PARENT_SCOPE) + ENDFOREACH(variable) +ENDFUNCTION() + FUNCTION(ADD_LINK_FLAG value) MESSAGE(STATUS "Linking with ${value}") FOREACH(variable CMAKE_EXE_LINKER_FLAGS) @@ -48,11 +61,8 @@ IF(MSVC) ENDIF() ADD_COMPILE_FLAG("/wd4146") # Ignore warning "warning C4146: unary minus operator applied to unsigned type, result still unsigned", this pattern is used somewhat commonly in the code. ADD_COMPILE_FLAG("/WX-") - IF(uppercase_CMAKE_BUILD_TYPE STREQUAL "DEBUG") - ADD_COMPILE_FLAG("/O0") - ELSE() - ADD_COMPILE_FLAG("/O2") - ENDIF() + ADD_DEBUG_COMPILE_FLAG("/O0") + ADD_NONDEBUG_COMPILE_FLAG("/O2") ADD_COMPILE_FLAG("-D_CRT_SECURE_NO_WARNINGS") ADD_COMPILE_FLAG("-D_SCL_SECURE_NO_WARNINGS") ELSE() @@ -72,13 +82,10 @@ ELSE() ELSE() ADD_COMPILE_FLAG("-fPIC") ENDIF() - IF(uppercase_CMAKE_BUILD_TYPE STREQUAL "DEBUG") - ADD_COMPILE_FLAG("-O0") - ADD_COMPILE_FLAG("-g3") - ELSE() - ADD_COMPILE_FLAG("-O2") - ADD_DEFINITIONS("-UNDEBUG") # Keep asserts. - ENDIF() + ADD_DEBUG_COMPILE_FLAG("-O0") + ADD_DEBUG_COMPILE_FLAG("-g3") + ADD_NONDEBUG_COMPILE_FLAG("-O2") + ADD_NONDEBUG_COMPILE_FLAG("-UNDEBUG") # Keep asserts. ENDIF() # clang doesn't print colored diagnostics when invoked from Ninja |