@@ -69,9 +69,14 @@ endif()
6969string (JOIN " " CMAKE_C_WARNINGS "-Wno-unknown-warning-option" ${O2_C_ENABLED_WARNINGS} ${O2_C_ENABLED_WARNINGS_NO_ERROR} )
7070string (JOIN " " CMAKE_CXX_WARNINGS "-Wno-unknown-warning-option" ${O2_CXX_ENABLED_WARNINGS} ${O2_CXX_ENABLED_WARNINGS_NO_ERROR} )
7171
72- set (CMAKE_CXX_FLAGS_COVERAGE "-g -O2 -fprofile-arcs -ftest-coverage" )
72+ string (REGEX MATCH "-O[0-9]+" CMAKE_FLAGS_OPT_VALUE "${CMAKE_CXX_FLAGS} " )
73+ if (NOT CMAKE_FLAGS_OPT_VALUE OR CMAKE_FLAGS_OPT_VALUE STREQUAL "-O0" OR CMAKE_FLAGS_OPT_VALUE STREQUAL "-O1" )
74+ set (CMAKE_FLAGS_OPT_VALUE "-O2" ) # Release builds should not decrease the -O level below something requested externally via CXXFLAGS
75+ endif ()
76+
77+ set (CMAKE_CXX_FLAGS_COVERAGE "-g ${CMAKE_FLAGS_OPT_VALUE} -fprofile-arcs -ftest-coverage" )
7378set (CMAKE_C_FLAGS_COVERAGE "${CMAKE_CXX_FLAGS_COVERAGE} " )
74- set (CMAKE_Fortran_FLAGS_COVERAGE "-g -O2 -fprofile-arcs -ftest-coverage" )
79+ set (CMAKE_Fortran_FLAGS_COVERAGE "-g ${CMAKE_FLAGS_OPT_VALUE} -fprofile-arcs -ftest-coverage" )
7580set (CMAKE_LINK_FLAGS_COVERAGE "--coverage -fprofile-arcs -fPIC" )
7681
7782MARK_AS_ADVANCED (
@@ -81,9 +86,9 @@ MARK_AS_ADVANCED(
8186 CMAKE_LINK_FLAGS_COVERAGE )
8287
8388# Options to enable the thread sanitizer
84- set (CMAKE_CXX_FLAGS_THREADSANITIZER "-g -O2 -fsanitize=thread -fPIC" )
89+ set (CMAKE_CXX_FLAGS_THREADSANITIZER "-g ${CMAKE_FLAGS_OPT_VALUE} -fsanitize=thread -fPIC" )
8590set (CMAKE_C_FLAGS_THREADSANITIZER "${CMAKE_CXX_FLAGS_THREADSANITIZER} " )
86- set (CMAKE_Fortran_FLAGS_THREADSANITIZER "-g -O2 -fsanitize=thread -fPIC" )
91+ set (CMAKE_Fortran_FLAGS_THREADSANITIZER "-g ${CMAKE_FLAGS_OPT_VALUE} -fsanitize=thread -fPIC" )
8792set (CMAKE_LINK_FLAGS_THREADSANITIZER "-fsanitize=thread -fPIC" )
8893
8994MARK_AS_ADVANCED (
@@ -92,13 +97,12 @@ MARK_AS_ADVANCED(
9297 CMAKE_Fortran_FLAGS_THREADSANITIZER
9398 CMAKE_LINK_FLAGS_THREADSANITIZER )
9499
95-
96100IF (ENABLE_CASSERT) #For the CI, we want to have <cassert> assertions enabled
97- set (CMAKE_CXX_FLAGS_RELEASE "-O2 " )
98- set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g" )
101+ set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_FLAGS_OPT_VALUE} " )
102+ set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_FLAGS_OPT_VALUE} -g" )
99103ELSE ()
100- set (CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG" )
101- set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -DNDEBUG" )
104+ set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_FLAGS_OPT_VALUE} -DNDEBUG" )
105+ set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_FLAGS_OPT_VALUE} -g -DNDEBUG" )
102106 if (CMAKE_BUILD_TYPE_UPPER STREQUAL "RELEASE" OR CMAKE_BUILD_TYPE_UPPER STREQUAL "RELWITHDEBINFO" )
103107 set (FAIR_MIN_SEVERITY "detail" )
104108 endif ()
@@ -108,10 +112,10 @@ IF(ENABLE_THREAD_SAFETY_ANALYSIS)
108112 set (CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE_UPPER} "${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE_UPPER} } -Werror=thread-safety -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS" )
109113ENDIF ()
110114
111- set (CMAKE_C_FLAGS_RELEASE "-O2 " )
112- set (CMAKE_Fortran_FLAGS_RELEASE "-O2 " )
113- set (CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g" )
114- set (CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-O2 -g" )
115+ set (CMAKE_C_FLAGS_RELEASE "${CMAKE_FLAGS_OPT_VALUE} " )
116+ set (CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_FLAGS_OPT_VALUE} " )
117+ set (CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_FLAGS_OPT_VALUE} -g" )
118+ set (CMAKE_Fortran_FLAGS_RELWITHDEBINFO "${CMAKE_FLAGS_OPT_VALUE} -g" )
115119# make sure Debug build not optimized (does not seem to work without CACHE + FORCE)
116120set (CMAKE_CXX_FLAGS_DEBUG "-g -O0" CACHE STRING "Debug mode build flags" FORCE )
117121set (CMAKE_C_FLAGS_DEBUG "-g -O0" CACHE STRING "Debug mode build flags" FORCE )
0 commit comments