Skip to content
Snippets Groups Projects
Commit 03e04e5f authored by Stephan Hageboeck's avatar Stephan Hageboeck
Browse files

[CMake] Remove force overwrite of compiler optimisation flags.

In CMake, variables like CMAKE_CXX_FLAGS_RELEASE etc should be cache
variables, so users can set them from outside. ROOT, however, FORCE
overwrote them, so users cannot change anything.
Now, the variables are not set by ROOT at all, we use the CMake
defaults.
It is fine to append or replace substrings, but the variables should NOT
be overwritten to give users some options.

In case ROOT wants to move away from CMake defaults, it can be done like
this:
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e40b84a920..ab41612006 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -29,6 +29,11 @@ endforeach()

 include(cmake/modules/CaptureCommandLine.cmake)

+set(CMAKE_CXX_FLAGS_DEBUG_INIT "-O1 -g")
+set(CMAKE_CXX_FLAGS_ASSERT_INIT "-O2 -g")
+
 project(ROOT)
parent cf7b121f
No related branches found
No related tags found
No related merge requests found
......@@ -134,9 +134,10 @@ include(CheckAssembler)
include(CheckIntrinsics)
#---Enable asserts------------------------------------------------------------------------------
if(NOT asserts)
set(CMAKE_CXX_FLAGS_${BUILD_TYPE} "${CMAKE_CXX_FLAGS_${BUILD_TYPE}} -DNDEBUG")
set(CMAKE_C_FLAGS_${BUILD_TYPE} "${CMAKE_C_FLAGS_${BUILD_TYPE}} -DNDEBUG")
if(asserts)
string(TOUPPER BUILD_TYPE ${CMAKE_BUILD_TYPE})
string(REGEX REPLACE "-.NDEBUG" "" CMAKE_CXX_FLAGS_${BUILD_TYPE} "${CMAKE_CXX_FLAGS_${BUILD_TYPE}}")
string(REGEX REPLACE "-.NDEBUG" "" CMAKE_C_FLAGS_${BUILD_TYPE} "${CMAKE_C_FLAGS_${BUILD_TYPE}}")
endif()
#---Enable CCache ------------------------------------------------------------------------------
......
......@@ -93,13 +93,6 @@ if(CMAKE_COMPILER_IS_GNUCXX)
set(ASAN_EXTRA_EXE_LINKER_FLAGS "-fsanitize=address -z undefs -Wl,--undefined=__asan_default_options -Wl,--undefined=__lsan_default_options -Wl,--undefined=__lsan_default_suppressions")
endif()
# Select flags.
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g" CACHE STRING "Flags for release build with debug info" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE "-O3" CACHE STRING "Flags for release build" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG "-g" CACHE STRING "Flags for a debug build" FORCE)
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 -g" CACHE STRING "Flags for release build with debug info" FORCE)
set(CMAKE_C_FLAGS_RELEASE "-O3" CACHE STRING "Flags for release build" FORCE)
set(CMAKE_C_FLAGS_DEBUG "-g" CACHE STRING "Flags for a debug build" FORCE)
elseif(CMAKE_CXX_COMPILER_ID STREQUAL Clang)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pipe ${FP_MATH_FLAGS} -Wall -W -Woverloaded-virtual -fsigned-char")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pipe -Wall -W")
......@@ -119,13 +112,6 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL Clang)
set(ASAN_EXTRA_EXE_LINKER_FLAGS "-fsanitize=address -static-libsan -z undefs -Wl,--undefined=__asan_default_options -Wl,--undefined=__lsan_default_options -Wl,--undefined=__lsan_default_suppressions")
endif()
# Select flags.
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g" CACHE STRING "Flags for release build with debug info" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE "-O2" CACHE STRING "Flags for release build" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG "-g" CACHE STRING "Flags for a debug build" FORCE)
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g" CACHE STRING "Flags for release build with debug info" FORCE)
set(CMAKE_C_FLAGS_RELEASE "-O2" CACHE STRING "Flags for release build" FORCE)
set(CMAKE_C_FLAGS_DEBUG "-g" CACHE STRING "Flags for a debug build" FORCE)
elseif(CMAKE_CXX_COMPILER_ID STREQUAL Intel)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd1476")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -restrict")
......@@ -158,11 +144,8 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL Intel)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -wd597 -wd1098 -wd1292 -wd1478 -wd3373")
endif()
# Select flags.
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -fp-model precise -g" CACHE STRING "Flags for release build with debug info" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -fp-model precise" CACHE STRING "Flags for release build" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g" CACHE STRING "Flags for a debug build" FORCE)
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -fp-model precise -g" CACHE STRING "Flags for release build with debug info" FORCE)
set(CMAKE_C_FLAGS_RELEASE "-O2 -fp-model precise" CACHE STRING "Flags for release build" FORCE)
set(CMAKE_C_FLAGS_DEBUG "-O0 -g" CACHE STRING "Flags for a debug build" FORCE)
# Augment optimisation flags:
foreach(CXX_FLAGS CMAKE_CXX_FLAGS_RELWITHDEBINFO CMAKE_CXX_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO CMAKE_C_FLAGS_RELEASE)
set(${${CXX_FLAGS}} "${${CXX_FLAGS}} -fp-model precise")
endforeach()
endif()
......@@ -85,13 +85,6 @@ if (CMAKE_SYSTEM_NAME MATCHES Darwin)
set(CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} -bind_at_load -m64")
set(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -bind_at_load -m64")
# Select flags.
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g" CACHE STRING "Flags for a release build with debug info" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE "-O2" CACHE STRING "Flags for a release build" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG "-g" CACHE STRING "Flags for a debug build" FORCE)
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g" CACHE STRING "Flags for a release build with debug info" FORCE)
set(CMAKE_C_FLAGS_RELEASE "-O2" CACHE STRING "Flags for a release build" FORCE)
set(CMAKE_C_FLAGS_DEBUG "-g" CACHE STRING "Flags for a debug build" FORCE)
elseif(${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pipe -W -Wall -Woverloaded-virtual -fsigned-char -fno-common -Qunused-arguments")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pipe -W -Wall -fsigned-char -fno-common -Qunused-arguments")
......@@ -118,13 +111,6 @@ if (CMAKE_SYSTEM_NAME MATCHES Darwin)
set(ASAN_EXTRA_EXE_LINKER_FLAGS "-fsanitize=address -static-libsan -Wl,-u,___asan_default_options -Wl,-u,___lsan_default_options -Wl,-u,___lsan_default_suppressions")
endif()
# Select flags.
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g" CACHE STRING "Flags for a release build with debug info" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE "-O2" CACHE STRING "Flags for a release build" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG "-g" CACHE STRING "Flags for a debug build" FORCE)
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g" CACHE STRING "Flags for a release build with debug info" FORCE)
set(CMAKE_C_FLAGS_RELEASE "-O2" CACHE STRING "Flags for a release build" FORCE)
set(CMAKE_C_FLAGS_DEBUG "-g" CACHE STRING "Flags for a debug build" FORCE)
else()
MESSAGE(FATAL_ERROR "There is no setup for this compiler with ID=${CMAKE_CXX_COMPILER_ID} up to now. Don't know what to do. Stop cmake at this point.")
endif()
......
......@@ -17,13 +17,6 @@ if(CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined")
# Select flags.
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g" CACHE STRING "Flags for release build with debug info" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE "-O2" CACHE STRING "Flags for release build" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG "-g" CACHE STRING "Flags for a debug build" FORCE)
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g" CACHE STRING "Flags for release build with debug info" FORCE)
set(CMAKE_C_FLAGS_RELEASE "-O2" CACHE STRING "Flags for release build" FORCE)
set(CMAKE_C_FLAGS_DEBUG "-g" CACHE STRING "Flags for a debug build" FORCE)
elseif(MSVC)
if("${CMAKE_GENERATOR_PLATFORM}" MATCHES "x64")
set(ARCH -D_WIN64)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment