Skip to content

Commit 4176963

Browse files
pcaspersjenkins
authored andcommitted
Merge remote-tracking branch 'origin/master' into QPR-11559
1 parent 080a26a commit 4176963

1 file changed

Lines changed: 15 additions & 1 deletion

File tree

cmake/commonSettings.cmake

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
include(CheckCXXCompilerFlag)
2+
include(CheckLinkerFlag)
23

34
option(MSVC_LINK_DYNAMIC_RUNTIME "Link against dynamic runtime" ON)
45
option(MSVC_PARALLELBUILD "Use flag /MP" ON)
@@ -9,12 +10,22 @@ set(CMAKE_CXX_FLAGS_CLANG_ASAN_O2 "-fsanitize=address,undefined -fno-omit-frame-
910
# add compiler flag, if not already present
1011
macro(add_compiler_flag flag supportsFlag)
1112
check_cxx_compiler_flag(${flag} ${supportsFlag})
12-
1313
if(${supportsFlag} AND NOT "${CMAKE_CXX_FLAGS}" MATCHES "${flag}")
1414
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
1515
endif()
1616
endmacro()
1717

18+
# add linker flag for shared libs and exe, if not already present
19+
macro(add_linker_flag flag supportsFlag)
20+
check_linker_flag(CXX ${flag} ${supportsFlag})
21+
if(${supportsFlag} AND NOT "${CMAKE_SHARED_LINKER_FLAGS}" MATCHES "${flag}")
22+
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${flag}")
23+
endif()
24+
if(${supportsFlag} AND NOT "${CMAKE_EXE_LINKER_FLAGS}" MATCHES "${flag}")
25+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${flag}")
26+
endif()
27+
endmacro()
28+
1829
# use CXX 17, disable gnu extensions
1930
set(CMAKE_CXX_STANDARD 17)
2031
set(CMAKE_CXX_EXTENSIONS FALSE)
@@ -95,6 +106,9 @@ else()
95106
# build shared libs always
96107
set(BUILD_SHARED_LIBS ON)
97108

109+
# do not optimize away seemingly unused libs, they might contain dynamic registration of builders
110+
add_linker_flag("-Wl,--no-as-needed" supportsNoAsNeeded)
111+
98112
# link against dynamic boost libraries
99113
add_definitions(-DBOOST_ALL_DYN_LINK)
100114
add_definitions(-DBOOST_TEST_DYN_LINK)

0 commit comments

Comments
 (0)