mirror of
https://github.com/facebook/zstd.git
synced 2025-07-30 22:23:13 +03:00
Refactored AddExtraCompilationFlags
- Easier addition of new flags - Removed flags not used by default - Removed implicit PIC flag for all targets
This commit is contained in:
@ -1,316 +1,85 @@
|
|||||||
|
include(CheckCXXCompilerFlag)
|
||||||
|
include(CheckCCompilerFlag)
|
||||||
|
|
||||||
|
function(EnableCompilerFlag _flag _C _CXX)
|
||||||
|
message("Checking flag ${_flag}")
|
||||||
|
if (_C)
|
||||||
|
CHECK_C_COMPILER_FLAG(${_flag} C_FLAG)
|
||||||
|
if (C_FLAG)
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_flag}" CACHE INTERNAL "C Flags")
|
||||||
|
endif ()
|
||||||
|
unset(C_FLAG CACHE)
|
||||||
|
endif ()
|
||||||
|
if (_CXX)
|
||||||
|
CHECK_CXX_COMPILER_FLAG(${_flag} CXX_FLAG)
|
||||||
|
if (CXX_FLAG)
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_flag}" CACHE INTERNAL "CXX Flags")
|
||||||
|
endif ()
|
||||||
|
unset(CXX_FLAG CACHE)
|
||||||
|
endif ()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
MACRO(ADD_EXTRA_COMPILATION_FLAGS)
|
MACRO(ADD_EXTRA_COMPILATION_FLAGS)
|
||||||
include(CheckCXXCompilerFlag)
|
|
||||||
include(CheckCCompilerFlag)
|
|
||||||
if (CMAKE_COMPILER_IS_GNUCXX OR MINGW) #Not only UNIX but also WIN32 for MinGW
|
if (CMAKE_COMPILER_IS_GNUCXX OR MINGW) #Not only UNIX but also WIN32 for MinGW
|
||||||
|
|
||||||
set(POSITION_INDEPENDENT_CODE_FLAG "-fPIC")
|
|
||||||
CHECK_C_COMPILER_FLAG(${POSITION_INDEPENDENT_CODE_FLAG} POSITION_INDEPENDENT_CODE_FLAG_ALLOWED)
|
|
||||||
if (POSITION_INDEPENDENT_CODE_FLAG_ALLOWED)
|
|
||||||
MESSAGE("Compiler flag ${POSITION_INDEPENDENT_CODE_FLAG} allowed")
|
|
||||||
set(ACTIVATE_POSITION_INDEPENDENT_CODE_FLAG "ON" CACHE BOOL "activate -fPIC flag")
|
|
||||||
else ()
|
|
||||||
MESSAGE("Compiler flag ${POSITION_INDEPENDENT_CODE_FLAG} not allowed")
|
|
||||||
endif (POSITION_INDEPENDENT_CODE_FLAG_ALLOWED)
|
|
||||||
|
|
||||||
set(WARNING_UNDEF "-Wundef")
|
|
||||||
CHECK_C_COMPILER_FLAG(${WARNING_UNDEF} WARNING_UNDEF_ALLOWED)
|
|
||||||
if (WARNING_UNDEF_ALLOWED)
|
|
||||||
MESSAGE("Compiler flag ${WARNING_UNDEF} allowed")
|
|
||||||
set(ACTIVATE_WARNING_UNDEF "ON" CACHE BOOL "activate -Wundef flag")
|
|
||||||
else ()
|
|
||||||
MESSAGE("Compiler flag ${WARNING_UNDEF} not allowed")
|
|
||||||
endif (WARNING_UNDEF_ALLOWED)
|
|
||||||
|
|
||||||
set(WARNING_SHADOW "-Wshadow")
|
|
||||||
CHECK_C_COMPILER_FLAG(${WARNING_SHADOW} WARNING_SHADOW_ALLOWED)
|
|
||||||
if (WARNING_SHADOW_ALLOWED)
|
|
||||||
MESSAGE("Compiler flag ${WARNING_SHADOW} allowed")
|
|
||||||
set(ACTIVATE_WARNING_SHADOW "ON" CACHE BOOL "activate -Wshadow flag")
|
|
||||||
else ()
|
|
||||||
MESSAGE("Compiler flag ${WARNING_SHADOW} not allowed")
|
|
||||||
endif (WARNING_SHADOW_ALLOWED)
|
|
||||||
|
|
||||||
set(WARNING_CAST_ALIGN "-Wcast-align")
|
|
||||||
CHECK_C_COMPILER_FLAG(${WARNING_CAST_ALIGN} WARNING_CAST_ALIGN_ALLOWED)
|
|
||||||
if (WARNING_CAST_ALIGN_ALLOWED)
|
|
||||||
MESSAGE("Compiler flag ${WARNING_CAST_ALIGN} allowed")
|
|
||||||
set(ACTIVATE_WARNING_CAST_ALIGN "ON" CACHE BOOL "activate -Wcast-align flag")
|
|
||||||
else ()
|
|
||||||
MESSAGE("Compiler flag ${WARNING_CAST_ALIGN} not allowed")
|
|
||||||
endif (WARNING_CAST_ALIGN_ALLOWED)
|
|
||||||
|
|
||||||
set(WARNING_CAST_QUAL "-Wcast-qual")
|
|
||||||
CHECK_C_COMPILER_FLAG(${WARNING_CAST_QUAL} WARNING_CAST_QUAL_ALLOWED)
|
|
||||||
if (WARNING_CAST_QUAL_ALLOWED)
|
|
||||||
MESSAGE("Compiler flag ${WARNING_CAST_QUAL} allowed")
|
|
||||||
set(ACTIVATE_WARNING_CAST_QUAL "ON" CACHE BOOL "activate -Wcast-qual flag")
|
|
||||||
else ()
|
|
||||||
MESSAGE("Compiler flag ${WARNING_CAST_QUAL} not allowed")
|
|
||||||
endif (WARNING_CAST_QUAL_ALLOWED)
|
|
||||||
|
|
||||||
set(WARNING_STRICT_PROTOTYPES "-Wstrict-prototypes")
|
|
||||||
CHECK_C_COMPILER_FLAG(${WARNING_STRICT_PROTOTYPES} WARNING_STRICT_PROTOTYPES_ALLOWED)
|
|
||||||
if (WARNING_STRICT_PROTOTYPES_ALLOWED)
|
|
||||||
MESSAGE("Compiler flag ${WARNING_STRICT_PROTOTYPES} allowed")
|
|
||||||
set(ACTIVATE_WARNING_STRICT_PROTOTYPES "ON" CACHE BOOL "activate -Wstrict-prototypes flag")
|
|
||||||
else ()
|
|
||||||
MESSAGE("Compiler flag ${WARNING_STRICT_PROTOTYPES} not allowed")
|
|
||||||
endif (WARNING_STRICT_PROTOTYPES_ALLOWED)
|
|
||||||
|
|
||||||
set(WARNING_ALL "-Wall")
|
|
||||||
CHECK_C_COMPILER_FLAG(${WARNING_ALL} WARNING_ALL_ALLOWED)
|
|
||||||
if (WARNING_ALL_ALLOWED)
|
|
||||||
MESSAGE("Compiler flag ${WARNING_ALL} allowed")
|
|
||||||
set(ACTIVATE_WARNING_ALL "ON" CACHE BOOL "activate -Wall flag")
|
|
||||||
else ()
|
|
||||||
MESSAGE("Compiler flag ${WARNING_ALL} not allowed")
|
|
||||||
endif (WARNING_ALL_ALLOWED)
|
|
||||||
|
|
||||||
set(WARNING_EXTRA "-Wextra")
|
|
||||||
CHECK_C_COMPILER_FLAG(${WARNING_EXTRA} WARNING_EXTRA_ALLOWED)
|
|
||||||
if (WARNING_EXTRA_ALLOWED)
|
|
||||||
MESSAGE("Compiler flag ${WARNING_EXTRA} allowed")
|
|
||||||
set(ACTIVATE_WARNING_EXTRA "ON" CACHE BOOL "activate -Wextra flag")
|
|
||||||
else ()
|
|
||||||
MESSAGE("Compiler flag ${WARNING_EXTRA} not allowed")
|
|
||||||
endif (WARNING_EXTRA_ALLOWED)
|
|
||||||
|
|
||||||
set(WARNING_FLOAT_EQUAL "-Wfloat-equal")
|
|
||||||
CHECK_C_COMPILER_FLAG(${WARNING_FLOAT_EQUAL} WARNING_FLOAT_EQUAL_ALLOWED)
|
|
||||||
if (WARNING_FLOAT_EQUAL_ALLOWED)
|
|
||||||
MESSAGE("Compiler flag ${WARNING_FLOAT_EQUAL} allowed")
|
|
||||||
set(ACTIVATE_WARNING_FLOAT_EQUAL "OFF" CACHE BOOL "activate -Wfloat-equal flag")
|
|
||||||
else ()
|
|
||||||
MESSAGE("Compiler flag ${WARNING_FLOAT_EQUAL} not allowed")
|
|
||||||
endif (WARNING_FLOAT_EQUAL_ALLOWED)
|
|
||||||
|
|
||||||
set(WARNING_SIGN_CONVERSION "-Wsign-conversion")
|
|
||||||
CHECK_C_COMPILER_FLAG(${WARNING_SIGN_CONVERSION} WARNING_SIGN_CONVERSION_ALLOWED)
|
|
||||||
if (WARNING_SIGN_CONVERSION_ALLOWED)
|
|
||||||
MESSAGE("Compiler flag ${WARNING_SIGN_CONVERSION} allowed")
|
|
||||||
set(ACTIVATE_WARNING_SIGN_CONVERSION "OFF" CACHE BOOL "activate -Wsign-conversion flag")
|
|
||||||
else ()
|
|
||||||
MESSAGE("Compiler flag ${WARNING_SIGN_CONVERSION} not allowed")
|
|
||||||
endif (WARNING_SIGN_CONVERSION_ALLOWED)
|
|
||||||
|
|
||||||
if (ACTIVATE_POSITION_INDEPENDENT_CODE_FLAG)
|
|
||||||
list(APPEND CMAKE_C_FLAGS ${POSITION_INDEPENDENT_CODE_FLAG})
|
|
||||||
else ()
|
|
||||||
string(REPLACE ${POSITION_INDEPENDENT_CODE_FLAG} "" CMAKE_C_FLAGS "${POSITION_INDEPENDENT_CODE_FLAG}")
|
|
||||||
endif (ACTIVATE_POSITION_INDEPENDENT_CODE_FLAG)
|
|
||||||
|
|
||||||
if (ACTIVATE_WARNING_UNDEF)
|
|
||||||
list(APPEND CMAKE_CXX_FLAGS ${WARNING_UNDEF})
|
|
||||||
list(APPEND CMAKE_C_FLAGS ${WARNING_UNDEF})
|
|
||||||
else ()
|
|
||||||
string(REPLACE ${WARNING_UNDEF} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
|
||||||
string(REPLACE ${WARNING_UNDEF} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
|
||||||
endif (ACTIVATE_WARNING_UNDEF)
|
|
||||||
|
|
||||||
if (ACTIVATE_WARNING_SHADOW)
|
|
||||||
list(APPEND CMAKE_CXX_FLAGS ${WARNING_SHADOW})
|
|
||||||
list(APPEND CMAKE_C_FLAGS ${WARNING_SHADOW})
|
|
||||||
else ()
|
|
||||||
string(REPLACE ${WARNING_SHADOW} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
|
||||||
string(REPLACE ${WARNING_SHADOW} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
|
||||||
endif (ACTIVATE_WARNING_SHADOW)
|
|
||||||
|
|
||||||
if (ACTIVATE_WARNING_CAST_QUAL)
|
|
||||||
list(APPEND CMAKE_CXX_FLAGS ${WARNING_CAST_QUAL})
|
|
||||||
list(APPEND CMAKE_C_FLAGS ${WARNING_CAST_QUAL})
|
|
||||||
else ()
|
|
||||||
string(REPLACE ${WARNING_CAST_QUAL} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
|
||||||
string(REPLACE ${WARNING_CAST_QUAL} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
|
||||||
endif (ACTIVATE_WARNING_CAST_QUAL)
|
|
||||||
|
|
||||||
if (ACTIVATE_WARNING_CAST_ALIGN)
|
|
||||||
list(APPEND CMAKE_CXX_FLAGS ${WARNING_CAST_ALIGN})
|
|
||||||
list(APPEND CMAKE_C_FLAGS ${WARNING_CAST_ALIGN})
|
|
||||||
else ()
|
|
||||||
string(REPLACE ${WARNING_CAST_ALIGN} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
|
||||||
string(REPLACE ${WARNING_CAST_ALIGN} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
|
||||||
endif (ACTIVATE_WARNING_CAST_ALIGN)
|
|
||||||
|
|
||||||
if (ACTIVATE_WARNING_STRICT_PROTOTYPES)
|
|
||||||
list(APPEND CMAKE_C_FLAGS ${WARNING_STRICT_PROTOTYPES})
|
|
||||||
else ()
|
|
||||||
string(REPLACE ${WARNING_STRICT_PROTOTYPES} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
|
||||||
endif (ACTIVATE_WARNING_STRICT_PROTOTYPES)
|
|
||||||
|
|
||||||
if (ACTIVATE_WARNING_ALL)
|
|
||||||
list(APPEND CMAKE_CXX_FLAGS ${WARNING_ALL})
|
|
||||||
list(APPEND CMAKE_C_FLAGS ${WARNING_ALL})
|
|
||||||
else ()
|
|
||||||
string(REPLACE ${WARNING_ALL} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
|
||||||
string(REPLACE ${WARNING_ALL} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
|
||||||
endif (ACTIVATE_WARNING_ALL)
|
|
||||||
|
|
||||||
if (ACTIVATE_WARNING_EXTRA)
|
|
||||||
list(APPEND CMAKE_CXX_FLAGS ${WARNING_EXTRA})
|
|
||||||
list(APPEND CMAKE_C_FLAGS ${WARNING_EXTRA})
|
|
||||||
else ()
|
|
||||||
string(REPLACE ${WARNING_EXTRA} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
|
||||||
string(REPLACE ${WARNING_EXTRA} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
|
||||||
endif (ACTIVATE_WARNING_EXTRA)
|
|
||||||
|
|
||||||
if (ACTIVATE_WARNING_FLOAT_EQUAL)
|
|
||||||
list(APPEND CMAKE_CXX_FLAGS ${WARNING_FLOAT_EQUAL})
|
|
||||||
list(APPEND CMAKE_C_FLAGS ${WARNING_FLOAT_EQUAL})
|
|
||||||
else ()
|
|
||||||
string(REPLACE ${WARNING_FLOAT_EQUAL} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
|
||||||
string(REPLACE ${WARNING_FLOAT_EQUAL} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
|
||||||
endif (ACTIVATE_WARNING_FLOAT_EQUAL)
|
|
||||||
|
|
||||||
if (ACTIVATE_WARNING_SIGN_CONVERSION)
|
|
||||||
list(APPEND CMAKE_CXX_FLAGS ${WARNING_SIGN_CONVERSION})
|
|
||||||
list(APPEND CMAKE_C_FLAGS ${WARNING_SIGN_CONVERSION})
|
|
||||||
else ()
|
|
||||||
string(REPLACE ${WARNING_SIGN_CONVERSION} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
|
||||||
string(REPLACE ${WARNING_SIGN_CONVERSION} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
|
||||||
endif (ACTIVATE_WARNING_SIGN_CONVERSION)
|
|
||||||
|
|
||||||
#Set c++11 by default
|
#Set c++11 by default
|
||||||
list(APPEND CMAKE_CXX_FLAGS "-std=c++11")
|
EnableCompilerFlag("-std=c++11" false true)
|
||||||
|
|
||||||
#Set c99 by default
|
#Set c99 by default
|
||||||
list(APPEND CMAKE_C_FLAGS "-std=c99")
|
EnableCompilerFlag("-std=c99" true false)
|
||||||
|
EnableCompilerFlag("-Wall" true true)
|
||||||
|
EnableCompilerFlag("-Wextra" true true)
|
||||||
|
EnableCompilerFlag("-Wundef" true true)
|
||||||
|
EnableCompilerFlag("-Wshadow" true true)
|
||||||
|
EnableCompilerFlag("-Wcast-align" true true)
|
||||||
|
EnableCompilerFlag("-Wcast-qual" true true)
|
||||||
|
EnableCompilerFlag("-Wstrict-prototypes" true false)
|
||||||
|
elseif (MSVC) # Add specific compilation flags for Windows Visual
|
||||||
|
EnableCompilerFlag("/Wall" true true)
|
||||||
|
|
||||||
elseif (MSVC)
|
|
||||||
# Add specific compilation flags for Windows Visual
|
|
||||||
|
|
||||||
set(WARNING_ALL "/Wall")
|
|
||||||
CHECK_C_COMPILER_FLAG(${WARNING_ALL} WARNING_ALL_ALLOWED)
|
|
||||||
if (WARNING_ALL_ALLOWED)
|
|
||||||
MESSAGE("Compiler flag ${WARNING_ALL} allowed")
|
|
||||||
set(ACTIVATE_WARNING_ALL "OFF" CACHE BOOL "activate /Wall flag")
|
|
||||||
else ()
|
|
||||||
MESSAGE("Compiler flag ${WARNING_ALL} not allowed")
|
|
||||||
endif (WARNING_ALL_ALLOWED)
|
|
||||||
|
|
||||||
set(RTC_FLAG "/RTC1")
|
|
||||||
CHECK_C_COMPILER_FLAG(${RTC_FLAG} RTC_FLAG_ALLOWED)
|
|
||||||
if (RTC_FLAG_ALLOWED)
|
|
||||||
MESSAGE("Compiler flag ${RTC_FLAG} allowed")
|
|
||||||
set(ACTIVATE_RTC_FLAG "ON" CACHE BOOL "activate /RTC1 flag")
|
|
||||||
else ()
|
|
||||||
MESSAGE("Compiler flag ${RTC_FLAG} not allowed")
|
|
||||||
endif (RTC_FLAG_ALLOWED)
|
|
||||||
|
|
||||||
set(ZC_FLAG "/Zc:forScope")
|
|
||||||
CHECK_C_COMPILER_FLAG(${ZC_FLAG} ZC_FLAG_ALLOWED)
|
|
||||||
if (ZC_FLAG_ALLOWED)
|
|
||||||
MESSAGE("Compiler flag ${ZC_FLAG} allowed")
|
|
||||||
set(ACTIVATE_ZC_FLAG "ON" CACHE BOOL "activate /Zc:forScope flag")
|
|
||||||
else ()
|
|
||||||
MESSAGE("Compiler flag ${ZC_FLAG} not allowed")
|
|
||||||
endif (ZC_FLAG_ALLOWED)
|
|
||||||
|
|
||||||
set(GD_FLAG "/Gd")
|
|
||||||
CHECK_C_COMPILER_FLAG(${GD_FLAG} GD_FLAG_ALLOWED)
|
|
||||||
if (GD_FLAG_ALLOWED)
|
|
||||||
MESSAGE("Compiler flag ${GD_FLAG} allowed")
|
|
||||||
set(ACTIVATE_GD_FLAG "ON" CACHE BOOL "activate /Gd flag")
|
|
||||||
else ()
|
|
||||||
MESSAGE("Compiler flag ${GD_FLAG} not allowed")
|
|
||||||
endif (GD_FLAG_ALLOWED)
|
|
||||||
|
|
||||||
set(ANALYZE_FLAG "/analyze:stacksize25000")
|
|
||||||
CHECK_C_COMPILER_FLAG(${ANALYZE_FLAG} ANALYZE_FLAG_ALLOWED)
|
|
||||||
if (ANALYZE_FLAG_ALLOWED)
|
|
||||||
MESSAGE("Compiler flag ${ANALYZE_FLAG} allowed")
|
|
||||||
set(ACTIVATE_ANALYZE_FLAG "ON" CACHE BOOL "activate /ANALYZE flag")
|
|
||||||
else ()
|
|
||||||
MESSAGE("Compiler flag ${ANALYZE_FLAG} not allowed")
|
|
||||||
endif (ANALYZE_FLAG_ALLOWED)
|
|
||||||
|
|
||||||
if (ACTIVATE_WARNING_ALL)
|
|
||||||
list(APPEND CMAKE_CXX_FLAGS ${WARNING_ALL})
|
|
||||||
list(APPEND CMAKE_C_FLAGS ${WARNING_ALL})
|
|
||||||
else ()
|
|
||||||
string(REPLACE ${WARNING_ALL} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
|
||||||
string(REPLACE ${WARNING_ALL} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
|
||||||
endif (ACTIVATE_WARNING_ALL)
|
|
||||||
|
|
||||||
# Only for DEBUG version
|
# Only for DEBUG version
|
||||||
if (ACTIVATE_RTC_FLAG)
|
EnableCompilerFlag("/RTC1" true true)
|
||||||
list(APPEND CMAKE_CXX_FLAGS_DEBUG ${RTC_FLAG})
|
EnableCompilerFlag("/Zc:forScope" true true)
|
||||||
list(APPEND CMAKE_C_FLAGS_DEBUG ${RTC_FLAG})
|
EnableCompilerFlag("/Gd" true true)
|
||||||
else ()
|
EnableCompilerFlag("/analyze:stacksize25000" true true)
|
||||||
string(REPLACE ${RTC_FLAG} "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
|
|
||||||
string(REPLACE ${RTC_FLAG} "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
|
|
||||||
endif (ACTIVATE_RTC_FLAG)
|
|
||||||
|
|
||||||
if (ACTIVATE_ZC_FLAG)
|
|
||||||
list(APPEND CMAKE_CXX_FLAGS ${ZC_FLAG})
|
|
||||||
list(APPEND CMAKE_C_FLAGS ${ZC_FLAG})
|
|
||||||
else ()
|
|
||||||
string(REPLACE ${ZC_FLAG} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
|
||||||
string(REPLACE ${ZC_FLAG} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
|
||||||
endif (ACTIVATE_ZC_FLAG)
|
|
||||||
|
|
||||||
if (ACTIVATE_GD_FLAG)
|
|
||||||
list(APPEND CMAKE_CXX_FLAGS ${GD_FLAG})
|
|
||||||
list(APPEND CMAKE_C_FLAGS ${GD_FLAG})
|
|
||||||
else ()
|
|
||||||
string(REPLACE ${GD_FLAG} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
|
||||||
string(REPLACE ${GD_FLAG} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
|
||||||
endif (ACTIVATE_GD_FLAG)
|
|
||||||
|
|
||||||
if (ACTIVATE_ANALYZE_FLAG)
|
|
||||||
list(APPEND CMAKE_CXX_FLAGS ${ANALYZE_FLAG})
|
|
||||||
list(APPEND CMAKE_C_FLAGS ${ANALYZE_FLAG})
|
|
||||||
else ()
|
|
||||||
string(REPLACE ${ANALYZE_FLAG} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
|
||||||
string(REPLACE ${ANALYZE_FLAG} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
|
||||||
endif (ACTIVATE_ANALYZE_FLAG)
|
|
||||||
|
|
||||||
if (MSVC80 OR MSVC90 OR MSVC10 OR MSVC11)
|
if (MSVC80 OR MSVC90 OR MSVC10 OR MSVC11)
|
||||||
# To avoid compiler warning (level 4) C4571, compile with /EHa if you still want
|
# To avoid compiler warning (level 4) C4571, compile with /EHa if you still want
|
||||||
# your catch(...) blocks to catch structured exceptions.
|
# your catch(...) blocks to catch structured exceptions.
|
||||||
list(APPEND CMAKE_CXX_FLAGS "/EHa")
|
EnableCompilerFlag("/EHa" false true)
|
||||||
endif (MSVC80 OR MSVC90 OR MSVC10 OR MSVC11)
|
endif (MSVC80 OR MSVC90 OR MSVC10 OR MSVC11)
|
||||||
|
|
||||||
set(MULTITHREADED_COMPILATION "/MP")
|
set(ACTIVATE_MULTITHREADED_COMPILATION "ON" CACHE BOOL "activate multi-threaded compilation (/MP flag)")
|
||||||
MESSAGE("Compiler flag ${MULTITHREADED_COMPILATION} allowed")
|
|
||||||
set(ACTIVATE_MULTITHREADED_COMPILATION "ON" CACHE BOOL "activate /MP flag")
|
|
||||||
|
|
||||||
if (ACTIVATE_MULTITHREADED_COMPILATION)
|
if (ACTIVATE_MULTITHREADED_COMPILATION)
|
||||||
list(APPEND CMAKE_CXX_FLAGS ${MULTITHREADED_COMPILATION})
|
EnableCompilerFlag("/MP" true true)
|
||||||
list(APPEND CMAKE_C_FLAGS ${MULTITHREADED_COMPILATION})
|
endif ()
|
||||||
else ()
|
|
||||||
string(REPLACE ${MULTITHREADED_COMPILATION} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
|
||||||
string(REPLACE ${MULTITHREADED_COMPILATION} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
|
||||||
endif (ACTIVATE_MULTITHREADED_COMPILATION)
|
|
||||||
|
|
||||||
#For exceptions
|
#For exceptions
|
||||||
list(APPEND CMAKE_CXX_FLAGS "/EHsc")
|
EnableCompilerFlag("/EHsc" true true)
|
||||||
list(APPEND CMAKE_C_FLAGS "/EHsc")
|
|
||||||
|
|
||||||
# UNICODE SUPPORT
|
# UNICODE SUPPORT
|
||||||
list(APPEND CMAKE_CXX_FLAGS "/D_UNICODE /DUNICODE")
|
EnableCompilerFlag("/D_UNICODE" true true)
|
||||||
list(APPEND CMAKE_C_FLAGS "/D_UNICODE /DUNICODE")
|
EnableCompilerFlag("/DUNICODE" true true)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# Remove duplicates compilation flags
|
# Remove duplicates compilation flags
|
||||||
FOREACH (flag_var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
|
FOREACH (flag_var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
|
||||||
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
|
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
|
||||||
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
|
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
|
||||||
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
|
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
|
||||||
separate_arguments(${flag_var})
|
separate_arguments(${flag_var})
|
||||||
list(REMOVE_DUPLICATES ${flag_var})
|
list(REMOVE_DUPLICATES ${flag_var})
|
||||||
string(REPLACE ";" " " ${flag_var} "${${flag_var}}")
|
string(REPLACE ";" " " ${flag_var} "${${flag_var}}")
|
||||||
set(${flag_var} "${${flag_var}}" CACHE STRING "common build flags" FORCE)
|
set(${flag_var} "${${flag_var}}" CACHE STRING "common build flags" FORCE)
|
||||||
ENDFOREACH (flag_var)
|
ENDFOREACH (flag_var)
|
||||||
|
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
# Replace /MT to /MD flag
|
# Replace /MT to /MD flag
|
||||||
# Replace /O2 to /O3 flag
|
# Replace /O2 to /O3 flag
|
||||||
FOREACH (flag_var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
|
FOREACH (flag_var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
|
||||||
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
|
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
|
||||||
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
|
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
|
||||||
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
|
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
|
||||||
STRING(REGEX REPLACE "/MT" "/MD" ${flag_var} "${${flag_var}}")
|
STRING(REGEX REPLACE "/MT" "/MD" ${flag_var} "${${flag_var}}")
|
||||||
STRING(REGEX REPLACE "/O2" "/Ox" ${flag_var} "${${flag_var}}")
|
STRING(REGEX REPLACE "/O2" "/Ox" ${flag_var} "${${flag_var}}")
|
||||||
ENDFOREACH (flag_var)
|
ENDFOREACH (flag_var)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user