diff --git a/CMakeLists.txt b/CMakeLists.txt index ba1f59094d54..538daabdc7e0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -243,6 +243,35 @@ if(NOT "${CMAKE_CXX_FLAGS}" STREQUAL "${COMPILER_FLAGS}") ) endif(NOT "${CMAKE_CXX_FLAGS}" STREQUAL "${COMPILER_FLAGS}") +# # +# Determine optimization level +# # + +if(NOT OPT) + set(CMAKE_CXX_FLAGS_RELEASE "-O3") + set(CMAKE_C_FLAGS_RELEASE "-O3") + + set(CMAKE_CXX_FLAGS_DEBUG "-O0") + set(CMAKE_C_FLAGS_DEBUG "-O0") + + if(PROFILER STREQUAL "perf") + set(CMAKE_CXX_FLAGS_PROFILE "-Og") + set(CMAKE_C_FLAGS_PROFILE "-Og") + else(PROFILER STREQUAL "perf") + set(CMAKE_CXX_FLAGS_PROFILE "-O0") + set(CMAKE_C_FLAGS_PROFILE "-O0") + endif(PROFILER STREQUAL "perf") +else(NOT OPT) + set(CMAKE_CXX_FLAGS_RELEASE "${OPT}") + set(CMAKE_C_FLAGS_RELEASE "${OPT}") + + set(CMAKE_CXX_FLAGS_DEBUG "${OPT}") + set(CMAKE_C_FLAGS_DEBUG "${OPT}") + + set(CMAKE_CXX_FLAGS_PROFILE "${OPT}") + set(CMAKE_C_FLAGS_PROFILE "${OPT}") +endif(NOT OPT) + # check for hardening options if(HARDEN AND NOT WIN32) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIE -fstack-protector-strong") @@ -254,7 +283,9 @@ if(HARDEN AND NOT WIN32) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fPIE -pie -Wl,-z,relro,-z,now") endif() - add_definitions(-D_FORTIFY_SOURCE=2) + if(NOT CMAKE_CXX_FLAGS_DEBUG STREQUAL "-O0") + add_definitions(-D_FORTIFY_SOURCE=2) + endif() endif(HARDEN AND NOT WIN32) if(UNIX AND NOT CMAKE_COMPILER_IS_GNUCXX) @@ -282,35 +313,6 @@ RemoveFlag(CMAKE_C_FLAGS_MINSIZEREL CACHE "-DNDEBUG" "Default C flags for MinSiz RemoveFlag(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS SCRIPT "-rdynamic" "") RemoveFlag(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS SCRIPT "-rdynamic" "") -# # -# Determine optimization level -# # - -if(NOT OPT) - set(CMAKE_CXX_FLAGS_RELEASE "-O3") - set(CMAKE_C_FLAGS_RELEASE "-O3") - - set(CMAKE_CXX_FLAGS_DEBUG "-O0") - set(CMAKE_C_FLAGS_DEBUG "-O0") - - if(PROFILER STREQUAL "perf") - set(CMAKE_CXX_FLAGS_PROFILE "-Og") - set(CMAKE_C_FLAGS_PROFILE "-Og") - else(PROFILER STREQUAL "perf") - set(CMAKE_CXX_FLAGS_PROFILE "-O0") - set(CMAKE_C_FLAGS_PROFILE "-O0") - endif(PROFILER STREQUAL "perf") -else(NOT OPT) - set(CMAKE_CXX_FLAGS_RELEASE "${OPT}") - set(CMAKE_C_FLAGS_RELEASE "${OPT}") - - set(CMAKE_CXX_FLAGS_DEBUG "${OPT}") - set(CMAKE_C_FLAGS_DEBUG "${OPT}") - - set(CMAKE_CXX_FLAGS_PROFILE "${OPT}") - set(CMAKE_C_FLAGS_PROFILE "${OPT}") -endif(NOT OPT) - # # # Start determining options for Release build # # diff --git a/SConstruct b/SConstruct index 9900aa714e1b..f5998c7b4eac 100755 --- a/SConstruct +++ b/SConstruct @@ -506,7 +506,8 @@ for env in [test_env, client_env, env]: if env['harden'] and env["PLATFORM"] != 'win32': env.AppendUnique(CCFLAGS = ["-fPIE", "-fstack-protector-strong"]) - if not env["have_fortify"] : env.AppendUnique(CPPDEFINES = ["_FORTIFY_SOURCE=2"]) + if not env["have_fortify"] and "-O0" not in env["opt"]: + env.AppendUnique(CPPDEFINES = ["_FORTIFY_SOURCE=2"]) if env["enable_lto"] == True: env.AppendUnique(LINKFLAGS = ["-fstack-protector-strong"])