Skip to content

Commit 0ed3c26

Browse files
committed
cmake: make possible to enable LTO when compiling dll games
1 parent af2ba5a commit 0ed3c26

File tree

1 file changed

+30
-5
lines changed

1 file changed

+30
-5
lines changed

cmake/DaemonFlags.cmake

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,19 @@ macro(set_c_cxx_flag FLAG)
6868
set_c_flag(${FLAG} ${ARGN})
6969
set_cxx_flag(${FLAG} ${ARGN})
7070
endmacro()
71+
72+
macro(set_kind_linker_flag KIND FLAG)
73+
if (KIND STREQUAL "exe")
74+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${FLAG}")
75+
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${FLAG}")
76+
else()
77+
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${FLAG}")
78+
endif()
79+
endmacro()
80+
7181
macro(set_linker_flag FLAG)
72-
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${FLAG}")
73-
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${FLAG}")
74-
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${FLAG}")
82+
set_kind_linker_flag("exe" FLAG)
83+
set_kind_linker_flag("shared" FLAG)
7584
endmacro()
7685

7786
function(try_flag LIST FLAG)
@@ -142,6 +151,16 @@ macro(try_linker_flag PROP FLAG)
142151
endif()
143152
endmacro()
144153

154+
macro(try_kind_linker_flag KIND PROP FLAG)
155+
# Check it with the C compiler
156+
set(CMAKE_REQUIRED_FLAGS ${FLAG})
157+
check_C_compiler_flag(${FLAG} FLAG_${PROP})
158+
set(CMAKE_REQUIRED_FLAGS "")
159+
if (FLAG_${PROP})
160+
set_kind_linker_flag(${KIND} ${FLAG} ${ARGN})
161+
endif()
162+
endmacro()
163+
145164
if (BE_VERBOSE)
146165
set(WARNMODE "no-error=")
147166
else()
@@ -335,9 +354,15 @@ else()
335354
try_c_cxx_flag(WSTACK_PROTECTOR "-Wstack-protector")
336355

337356
if (NOT NACL OR (NACL AND GAME_PIE))
338-
try_c_cxx_flag(FPIE "-fPIE")
357+
if (BUILD_GAME_NATIVE_DLL AND (BUILD_CGAME OR BUILD_SGAME))
358+
try_c_cxx_flag(FPIE "-fPIC")
359+
else()
360+
try_c_cxx_flag(FPIE "-fPIE")
361+
endif()
362+
339363
if (NOT APPLE)
340-
try_linker_flag(LINKER_PIE "-pie")
364+
try_kind_linker_flag("shared" LINKER_PIE "-pic")
365+
try_kind_linker_flag("exe" LINKER_PIE "-pie")
341366
endif()
342367
endif()
343368

0 commit comments

Comments
 (0)