Skip to content

Commit 7147fe1

Browse files
committed
Use -gsplit-dwarf=single to improve linking
1 parent d7c2af5 commit 7147fe1

File tree

1 file changed

+35
-29
lines changed

1 file changed

+35
-29
lines changed

dependencies/O2PhysicsCompileFlags.cmake

Lines changed: 35 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright 2019-2020 CERN and copyright holders of ALICE O2.
1+
# Copyright 2019-2025 CERN and copyright holders of ALICE O2.
22
# See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
33
# All rights not expressly granted are reserved.
44
#
@@ -41,62 +41,68 @@ if(O2PHYSICS_WARNINGS_AS_ERRORS)
4141
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
4242
# Set warning flags for all platforms.
4343
o2_build_warning_flags(PREFIX "-Wno-error="
44-
OUTPUTVARNAME O2PHYSICS_CXX_WARNINGS_COMMON_NO_ERROR
45-
WARNINGS ${O2PHYSICS_WARNINGS_COMMON_NO_ERROR})
44+
OUTPUTVARNAME O2PHYSICS_CXX_WARNINGS_COMMON_NO_ERROR
45+
WARNINGS ${O2PHYSICS_WARNINGS_COMMON_NO_ERROR})
4646
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${O2PHYSICS_CXX_WARNINGS_COMMON_NO_ERROR}")
4747
if(APPLE)
4848
# Set warning flags for macOS only.
4949
o2_build_warning_flags(PREFIX "-Wno-error="
50-
OUTPUTVARNAME O2PHYSICS_CXX_WARNINGS_APPLE_NO_ERROR
51-
WARNINGS ${O2PHYSICS_WARNINGS_CLANG_NO_ERROR})
50+
OUTPUTVARNAME O2PHYSICS_CXX_WARNINGS_APPLE_NO_ERROR
51+
WARNINGS ${O2PHYSICS_WARNINGS_CLANG_NO_ERROR})
5252
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${O2PHYSICS_CXX_WARNINGS_APPLE_NO_ERROR}")
5353
elseif(UNIX)
5454
# Set warning flags for Linux only.
5555
o2_build_warning_flags(PREFIX "-Wno-error="
56-
OUTPUTVARNAME O2PHYSICS_CXX_WARNINGS_UNIX_NO_ERROR
57-
WARNINGS ${O2PHYSICS_WARNINGS_GCC_NO_ERROR})
56+
OUTPUTVARNAME O2PHYSICS_CXX_WARNINGS_UNIX_NO_ERROR
57+
WARNINGS ${O2PHYSICS_WARNINGS_GCC_NO_ERROR})
5858
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${O2PHYSICS_CXX_WARNINGS_UNIX_NO_ERROR}")
5959
endif()
6060
endif()
6161

62-
IF (ENABLE_TIMETRACE)
62+
if(ENABLE_TIMETRACE)
6363
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftime-trace")
64-
ENDIF()
64+
endif()
65+
66+
if(APPLE)
67+
else()
68+
set(SPLIT_DWARF "-gsplit-dwarf=single")
69+
endif()
6570

66-
set(CMAKE_CXX_FLAGS_COVERAGE "-g -O2 -fprofile-arcs -ftest-coverage")
71+
set(CMAKE_CXX_FLAGS_COVERAGE "${SPLIT_DWARF} -O2 -fprofile-arcs -ftest-coverage")
6772
set(CMAKE_C_FLAGS_COVERAGE "${CMAKE_CXX_FLAGS_COVERAGE}")
68-
set(CMAKE_Fortran_FLAGS_COVERAGE "-g -O2 -fprofile-arcs -ftest-coverage")
73+
set(CMAKE_Fortran_FLAGS_COVERAGE "${SPLIT_DWARF} -O2 -fprofile-arcs -ftest-coverage")
6974
set(CMAKE_LINK_FLAGS_COVERAGE "--coverage -fprofile-arcs -fPIC")
7075

71-
MARK_AS_ADVANCED(
76+
mark_as_advanced(
7277
CMAKE_CXX_FLAGS_COVERAGE
7378
CMAKE_C_FLAGS_COVERAGE
7479
CMAKE_Fortran_FLAGS_COVERAGE
7580
CMAKE_LINK_FLAGS_COVERAGE)
7681

7782
#Check the compiler and set the compile and link flags
78-
IF (NOT CMAKE_BUILD_TYPE)
79-
Message(STATUS "Set BuildType to DEBUG")
83+
if(NOT CMAKE_BUILD_TYPE)
84+
message(STATUS "Set BuildType to DEBUG")
8085
set(CMAKE_BUILD_TYPE RELWITHDEBINFO)
81-
ENDIF (NOT CMAKE_BUILD_TYPE)
82-
83-
IF(ENABLE_CASSERT) #For the CI, we want to have <cassert> assertions enabled
84-
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -pipe")
85-
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -pipe")
86-
ELSE()
87-
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG -pipe")
88-
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -DNDEBUG -pipe")
89-
if (CMAKE_BUILD_TYPE STREQUAL "RELEASE" OR CMAKE_BUILD_TYPE STREQUAL "RELWITHDEBINFO")
90-
set(FAIR_MIN_SEVERITY "info")
91-
endif()
92-
ENDIF()
86+
endif()
87+
88+
if(ENABLE_CASSERT) #For the CI, we want to have <cassert> assertions enabled
89+
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -pipe")
90+
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 ${SPLIT_DWARF} -pipe")
91+
else()
92+
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG -pipe")
93+
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 ${SPLIT_DWARF} -DNDEBUG -pipe")
94+
if(CMAKE_BUILD_TYPE STREQUAL "RELEASE"
95+
OR CMAKE_BUILD_TYPE STREQUAL "RELWITHDEBINFO")
96+
set(FAIR_MIN_SEVERITY "info")
97+
endif()
98+
endif()
9399
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
94100
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
95-
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-O2 -g")
101+
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-O2 ${SPLIT_DWARF}")
96102
# make sure Debug build not optimized (does not seem to work without CACHE + FORCE)
97-
set(CMAKE_CXX_FLAGS_DEBUG "-g -O0" CACHE STRING "Debug mode build flags" FORCE)
103+
set(CMAKE_CXX_FLAGS_DEBUG "${SPLIT_DWARF} -O0" CACHE STRING "Debug mode build flags" FORCE)
98104
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}" CACHE STRING "Debug mode build flags" FORCE)
99-
set(CMAKE_Fortran_FLAGS_DEBUG "-g -O0" CACHE STRING "Debug mode build flags" FORCE)
105+
set(CMAKE_Fortran_FLAGS_DEBUG "${SPLIT_DWARF} -O0" CACHE STRING "Debug mode build flags" FORCE)
100106

101107
if(APPLE)
102108
elseif(UNIX)

0 commit comments

Comments
 (0)