Skip to content

Commit b1add2b

Browse files
committed
CMake: Release builds should not decrease the -O level below something requested externally via CXXFLAGS
1 parent dbf90f0 commit b1add2b

2 files changed

Lines changed: 18 additions & 14 deletions

File tree

GPU/GPUTracking/Standalone/cmake/prepare.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ else
1111
fi
1212
eval "`alienv shell-helper`"
1313
alienv load O2/latest
14-
for i in Vc boost fmt CMake ms_gsl Clang; do
14+
for i in Vc boost fmt CMake ms_gsl Clang ninja; do
1515
source sw/$ALIARCH/$i/latest/etc/profile.d/init.sh
1616
done

dependencies/O2CompileFlags.cmake

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,14 @@ endif()
6969
string(JOIN " " CMAKE_C_WARNINGS "-Wno-unknown-warning-option" ${O2_C_ENABLED_WARNINGS} ${O2_C_ENABLED_WARNINGS_NO_ERROR})
7070
string(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")
7378
set(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")
7580
set(CMAKE_LINK_FLAGS_COVERAGE "--coverage -fprofile-arcs -fPIC")
7681

7782
MARK_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")
8590
set(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")
8792
set(CMAKE_LINK_FLAGS_THREADSANITIZER "-fsanitize=thread -fPIC")
8893

8994
MARK_AS_ADVANCED(
@@ -92,13 +97,12 @@ MARK_AS_ADVANCED(
9297
CMAKE_Fortran_FLAGS_THREADSANITIZER
9398
CMAKE_LINK_FLAGS_THREADSANITIZER)
9499

95-
96100
IF(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")
99103
ELSE()
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")
109113
ENDIF()
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)
116120
set(CMAKE_CXX_FLAGS_DEBUG "-g -O0" CACHE STRING "Debug mode build flags" FORCE)
117121
set(CMAKE_C_FLAGS_DEBUG "-g -O0" CACHE STRING "Debug mode build flags" FORCE)

0 commit comments

Comments
 (0)