Skip to content
This repository was archived by the owner on Jan 7, 2023. It is now read-only.

Commit 0ba9deb

Browse files
committed
IGC/LLVM Incremental build: unifying LLVM usage across different platforms - small tuning
Change-Id: Ia78e4f5ad9ff2df78892046750ca831957149623
1 parent 0871c14 commit 0ba9deb

16 files changed

+291
-65
lines changed

CMakeLists.txt

Lines changed: 73 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,28 @@
1-
#
2-
# Copyright (c) 2017, Intel Corporation
1+
#===================== begin_copyright_notice ==================================
32
#
4-
# Permission is hereby granted, free of charge, to any person obtaining a
5-
# copy of this software and associated documentation files (the "Software"),
6-
# to deal in the Software without restriction, including without limitation
7-
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
8-
# and/or sell copies of the Software, and to permit persons to whom the
9-
# Software is furnished to do so, subject to the following conditions:
3+
# Copyright (c) 2017-2018 Intel Corporation.
104
#
11-
# The above copyright notice and this permission notice shall be included
12-
# in all copies or substantial portions of the Software.
5+
# Permission is hereby granted, free of charge, to any person obtaining a
6+
# copy of this software and associated documentation files (the
7+
# "Software"), to deal in the Software without restriction, including
8+
# without limitation the rights to use, copy, modify, merge, publish,
9+
# distribute, sublicense, and/or sell copies of the Software, and to
10+
# permit persons to whom the Software is furnished to do so, subject to
11+
# the following conditions:
1312
#
14-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15-
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17-
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
18-
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19-
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20-
# OTHER DEALINGS IN THE SOFTWARE.
21-
#
13+
# The above copyright notice and this permission notice shall be included
14+
# in all copies or substantial portions of the Software.
15+
#
16+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17+
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19+
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20+
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21+
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22+
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23+
#
24+
#
25+
# ======================= end_copyright_notice ==================================
2226

2327
#
2428
# LLVM libraries
@@ -35,20 +39,21 @@ function(add_dependencies_for_llvm_lib_target llvm_src_dir)
3539
if(llvm_sub_targets)
3640
foreach(llvm_target IN LISTS llvm_sub_targets)
3741
add_dependencies(${LLVM_LIB_NAME} ${llvm_target})
42+
set_target_properties(${llvm_target} PROPERTIES VS_PRE_DEFAULT_PROPS "${CMAKE_CURRENT_SOURCE_DIR}/../../WrkSpace/PropertySheets/igfx_env.props")
3843
endforeach()
3944
endif()
4045
endfunction()
4146

4247
if(BS_USE_OSDM_BUILD_SYSTEM)
4348
include(${BUILD_SYS_INC}/utils.cmake)
4449
bs_find_patch()
45-
bs_find_python()
50+
bs_find_python2()
4651
else()
4752
if (NOT PATCH)
4853
find_program(PATCH NAMES patch patch.exe)
4954
endif()
5055
if (NOT PYTHON)
51-
find_program(PYTHON NAMES python python.exe)
56+
find_program(PYTHON NAMES python2 python python2.exe python.exe)
5257
endif()
5358
endif()
5459

@@ -153,6 +158,7 @@ if(LLVM_APPLY_PATCHES)
153158
# Customization patches will be applied if present.
154159
file(GLOB LLVM_EXTERNAL_PATCH_FILES "${CMAKE_CURRENT_SOURCE_DIR}/releases/4.0.0/patches_external/*.patch")
155160
list(APPEND LLVM_PATCH_FILES ${LLVM_EXTERNAL_PATCH_FILES})
161+
set(LLVM_APPLY_INTERNAL_PATCHES true)
156162
if(LLVM_APPLY_INTERNAL_PATCHES)
157163
file(GLOB LLVM_INTERNAL_PATCH_FILES "${CMAKE_CURRENT_SOURCE_DIR}/releases/4.0.0/patches_internal/*.patch")
158164
list(APPEND LLVM_PATCH_FILES ${LLVM_INTERNAL_PATCH_FILES})
@@ -170,13 +176,10 @@ set(LLVM_DIR ${LLVM_DIR} PARENT_SCOPE)
170176
set(LLVM_LIB_NAME ${LLVM_LIB_NAME} PARENT_SCOPE)
171177

172178
message(STATUS "LLVM_LIB_NAME = ${LLVM_LIB_NAME}")
173-
message(STATUS "LLVM_BUILD_TYPE = ${CMAKE_BUILD_TYPE}")
174179
message(STATUS "LLVM_SOURCE_URL = ${LLVM_SOURCE_URL}")
175180
message(STATUS "LLVM_DIR = ${LLVM_DIR}")
176181
message(STATUS "LLVM_OPTIONS = ${LLVM_OPTIONS}")
177182

178-
include(${CMAKE_ROOT}/Modules/ExternalProject.cmake)
179-
180183
if(LLVM_USE_SOURCES_DIRECTLY)
181184
set(LLVM_SOURCE_DIR "${CMAKE_BINARY_DIR}/llvm/src")
182185
if(NOT EXISTS ${LLVM_SOURCE_DIR})
@@ -205,40 +208,57 @@ if(LLVM_USE_SOURCES_DIRECTLY)
205208
endif()
206209
endforeach()
207210
endif()
208-
209-
set(CMAKE_INSTALL_PREFIX ${LLVM_DIR})
210-
add_subdirectory(${LLVM_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/src)
211+
212+
if(CMAKE_CONFIGURATION_TYPES)
213+
# Multi-configuration generator.
214+
set (CMAKE_CONFIGURATION_TYPES "Debug" "Release" "ReleaseInternal")
215+
message(STATUS "LLVM_CONFIGURATION_TYPES = ${CMAKE_CONFIGURATION_TYPES}")
216+
else()
217+
# Single-configuration generator.
218+
message(STATUS "LLVM_BUILD_TYPE = ${CMAKE_BUILD_TYPE}")
219+
endif()
220+
221+
add_subdirectory(${LLVM_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/src)
211222
add_custom_target(${LLVM_LIB_NAME} ALL)
223+
set_target_properties(${LLVM_LIB_NAME} PROPERTIES VS_PRE_DEFAULT_PROPS "${CMAKE_CURRENT_SOURCE_DIR}/../../WrkSpace/PropertySheets/igfx_env.props")
212224
add_custom_command(TARGET ${LLVM_LIB_NAME}
213-
COMMAND ${CMAKE_COMMAND} -DCMAKE_INSTALL_CONFIG_NAME=$<$<CONFIG:Debug>:Debug>$<$<CONFIG:Release>:Release>$<$<CONFIG:ReleaseInternal>:ReleaseInternal> -P cmake_install.cmake
225+
COMMAND ${CMAKE_COMMAND}
226+
-DCMAKE_INSTALL_CONFIG_NAME=$<CONFIG>
227+
-DCMAKE_INSTALL_PREFIX=${LLVM_DIR}
228+
-P cmake_install.cmake
214229
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/src)
215230
add_dependencies_for_llvm_lib_target(${LLVM_SOURCE_DIR})
216231
else()
217-
ExternalProject_Add(${LLVM_LIB_NAME}
218-
URL ${LLVM_SOURCE_URL}
219-
PREFIX src
220-
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/src
221-
CMAKE_ARGS -G ${CMAKE_GENERATOR}
222-
-DCMAKE_BUILD_TYPE=$<$<CONFIG:Debug>:Debug>$<$<CONFIG:Release>:Release>$<$<CONFIG:ReleaseInternal>:Release>
223-
-DCMAKE_INSTALL_PREFIX=${LLVM_DIR}
224-
${LLVM_OPTIONS}
225-
INSTALL_COMMAND DESTDIR= ${CMAKE_COMMAND} --build . --target install
226-
)
227-
# Apply customization patches if any.
228-
set(i 1)
229-
set(patch_dependee "patch")
230-
foreach(patch_file ${LLVM_PATCH_FILES})
231-
232-
ExternalProject_Add_Step(${LLVM_LIB_NAME} "patch${i}"
233-
COMMAND ${PATCH} -d "${CMAKE_CURRENT_BINARY_DIR}/src/src/${LLVM_LIB_NAME}" -p1 < ${patch_file}
234-
DEPENDEES ${patch_dependee}
235-
DEPENDERS configure
236-
COMMENT "Apply ${patch_file} file"
237-
)
238-
239-
set(patch_dependee "patch${i}")
240-
math(EXPR i "${i} + 1")
241-
242-
endforeach()
232+
233+
message(STATUS "LLVM_BUILD_TYPE = ${CMAKE_BUILD_TYPE}")
234+
235+
include(${CMAKE_ROOT}/Modules/ExternalProject.cmake)
236+
237+
ExternalProject_Add(${LLVM_LIB_NAME}
238+
URL ${LLVM_SOURCE_URL}
239+
PREFIX src
240+
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/src
241+
CMAKE_ARGS -G ${CMAKE_GENERATOR}
242+
-DCMAKE_BUILD_TYPE=$<$<CONFIG:Debug>:Debug>$<$<CONFIG:Release>:Release>$<$<CONFIG:ReleaseInternal>:Release>
243+
-DCMAKE_INSTALL_PREFIX=${LLVM_DIR}
244+
${LLVM_OPTIONS}
245+
INSTALL_COMMAND DESTDIR= ${CMAKE_COMMAND} --build . --target install
246+
)
247+
# Apply customization patches if any.
248+
set(i 1)
249+
set(patch_dependee "patch")
250+
foreach(patch_file ${LLVM_PATCH_FILES})
251+
252+
ExternalProject_Add_Step(${LLVM_LIB_NAME} "patch${i}"
253+
COMMAND ${PATCH} -d "${CMAKE_CURRENT_BINARY_DIR}/src/src/${LLVM_LIB_NAME}" -p1 < ${patch_file}
254+
DEPENDEES ${patch_dependee}
255+
DEPENDERS configure
256+
COMMENT "Apply ${patch_file} file"
257+
)
258+
259+
set(patch_dependee "patch${i}")
260+
math(EXPR i "${i} + 1")
261+
262+
endforeach()
243263
endif()
244264

llvm_prebuilt.cmake

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#===================== begin_copyright_notice ==================================
2+
#
3+
# Copyright (c) 2018 Intel Corporation.
4+
#
5+
# Permission is hereby granted, free of charge, to any person obtaining a
6+
# copy of this software and associated documentation files (the
7+
# "Software"), to deal in the Software without restriction, including
8+
# without limitation the rights to use, copy, modify, merge, publish,
9+
# distribute, sublicense, and/or sell copies of the Software, and to
10+
# permit persons to whom the Software is furnished to do so, subject to
11+
# the following conditions:
12+
#
13+
# The above copyright notice and this permission notice shall be included
14+
# in all copies or substantial portions of the Software.
15+
#
16+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17+
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19+
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20+
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21+
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22+
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23+
#
24+
#
25+
# ======================= end_copyright_notice ==================================
26+
27+
set(LLVM_USE_PREBUILT true)
28+
29+
if(NOT LLVM_PREBUILT_PATH)
30+
set(LLVM_PREBUILT_PATH "${CMAKE_CURRENT_BINARY_DIR}/src")
31+
endif()
32+
find_path (LLVM_DIR LLVM-Config.cmake
33+
${LLVM_PREBUILT_PATH}/lib/cmake/llvm
34+
)
35+
if(NOT LLVM_DIR)
36+
message(FATAL_ERROR "LLVM prebuilt not found at: ${LLVM_PREBUILT_PATH}/lib/cmake/llvm")
37+
endif()
38+
find_package(LLVM REQUIRED CONFIG)
39+
message(STATUS "[LLVM Prebuilt] Found LLVM ${LLVM_PACKAGE_VERSION} in ${LLVM_DIR}")
40+
message(STATUS "[LLVM Prebuilt] Using LLVM includes from: ${LLVM_INCLUDE_DIRS}")
41+
message(STATUS "[LLVM Prebuilt] Using LLVM libraries from: ${LLVM_LIBRARY_DIR}")
42+
unset(LLVM_DIR CACHE)
43+
44+
#set(LLVM_INCLUDE_DIRS ${LLVM_INCLUDE_DIRS} PARENT_SCOPE)
45+
#set(LLVM_LIBRARY_DIR ${LLVM_LIBRARY_DIR} PARENT_SCOPE)
46+
#set(LLVM_DEFINITIONS ${LLVM_DEFINITIONS} PARENT_SCOPE)

llvm_utils.cmake

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
#===================== begin_copyright_notice ==================================
2+
#
3+
# Copyright (c) 2018 Intel Corporation.
4+
#
5+
# Permission is hereby granted, free of charge, to any person obtaining a
6+
# copy of this software and associated documentation files (the
7+
# "Software"), to deal in the Software without restriction, including
8+
# without limitation the rights to use, copy, modify, merge, publish,
9+
# distribute, sublicense, and/or sell copies of the Software, and to
10+
# permit persons to whom the Software is furnished to do so, subject to
11+
# the following conditions:
12+
#
13+
# The above copyright notice and this permission notice shall be included
14+
# in all copies or substantial portions of the Software.
15+
#
16+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17+
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19+
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20+
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21+
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22+
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23+
#
24+
#
25+
# ======================= end_copyright_notice ==================================
26+
27+
28+
#
29+
# Macro to clear and backup build flags already set
30+
#
31+
macro(llvm_utils_push_build_flags)
32+
message(STATUS "[LLVM] Clearing build system compilation flags")
33+
34+
set(CMAKE_C_FLAGS_BACKUP ${CMAKE_C_FLAGS})
35+
set(CMAKE_CXX_FLAGS_BACKUP ${CMAKE_CXX_FLAGS})
36+
set(CMAKE_SHARED_LINKER_FLAGS_BACKUP ${CMAKE_SHARED_LINKER_FLAGS})
37+
set(CMAKE_EXE_LINKER_FLAGS_BACKUP ${CMAKE_EXE_LINKER_FLAGS})
38+
set(CMAKE_STATIC_LINKER_FLAGS_BACKUP ${CMAKE_STATIC_LINKER_FLAGS})
39+
set(CMAKE_LOCAL_LINKER_FLAGS_BACKUP ${CMAKE_LOCAL_LINKER_FLAGS})
40+
set(CMAKE_MODULE_LINKER_FLAGS_BACKUP ${CMAKE_MODULE_LINKER_FLAGS})
41+
42+
if(PRINT_DEBUG)
43+
message(STATUS "[LLVM] llvm_utils_push_build_flags() CMAKE_C_FLAGS = ${CMAKE_C_FLAGS}")
44+
message(STATUS "[LLVM] llvm_utils_push_build_flags() CMAKE_CXX_FLAGS = ${CMAKE_CXX_FLAGS}")
45+
message(STATUS "[LLVM] llvm_utils_push_build_flags() CMAKE_SHARED_LINKER_FLAGS = ${CMAKE_SHARED_LINKER_FLAGS}")
46+
message(STATUS "[LLVM] llvm_utils_push_build_flags() CMAKE_EXE_LINKER_FLAGS = ${CMAKE_EXE_LINKER_FLAGS}")
47+
message(STATUS "[LLVM] llvm_utils_push_build_flags() CMAKE_STATIC_LINKER_FLAGS = ${CMAKE_STATIC_LINKER_FLAGS}")
48+
message(STATUS "[LLVM] llvm_utils_push_build_flags() CMAKE_LOCAL_LINKER_FLAGS = ${CMAKE_LOCAL_LINKER_FLAGS}")
49+
message(STATUS "[LLVM] llvm_utils_push_build_flags() CMAKE_MODULE_LINKER_FLAGS = ${CMAKE_MODULE_LINKER_FLAGS}")
50+
endif()
51+
52+
unset(CMAKE_C_FLAGS)
53+
unset(CMAKE_CXX_FLAGS)
54+
unset(CMAKE_SHARED_LINKER_FLAGS)
55+
unset(CMAKE_EXE_LINKER_FLAGS)
56+
unset(CMAKE_STATIC_LINKER_FLAGS)
57+
unset(CMAKE_LOCAL_LINKER_FLAGS)
58+
unset(CMAKE_MODULE_LINKER_FLAGS)
59+
60+
foreach(configuration_type ${CMAKE_CONFIGURATION_TYPES} ${CMAKE_BUILD_TYPE})
61+
string(TOUPPER ${configuration_type} capitalized_configuration_type)
62+
63+
set(CMAKE_C_FLAGS_${capitalized_configuration_type}_BACKUP ${CMAKE_C_FLAGS_${capitalized_configuration_type}})
64+
set(CMAKE_CXX_FLAGS_${capitalized_configuration_type}_BACKUP ${CMAKE_CXX_FLAGS_${capitalized_configuration_type}})
65+
set(CMAKE_SHARED_LINKER_FLAGS_${capitalized_configuration_type}_BACKUP ${CMAKE_SHARED_LINKER_FLAGS_${capitalized_configuration_type}})
66+
set(CMAKE_EXE_LINKER_FLAGS_${capitalized_configuration_type}_BACKUP ${CMAKE_EXE_LINKER_FLAGS_${capitalized_configuration_type}})
67+
set(CMAKE_STATIC_LINKER_FLAGS_${capitalized_configuration_type}_BACKUP ${CMAKE_STATIC_LINKER_FLAGS_${capitalized_configuration_type}})
68+
set(CMAKE_MODULE_LINKER_FLAGS_${capitalized_configuration_type}_BACKUP ${CMAKE_MODULE_LINKER_FLAGS_${capitalized_configuration_type}})
69+
70+
if(PRINT_DEBUG)
71+
message(STATUS "[LLVM] llvm_utils_push_build_flags() CMAKE_C_FLAGS_${capitalized_configuration_type} = ${CMAKE_C_FLAGS_${capitalized_configuration_type}}")
72+
message(STATUS "[LLVM] llvm_utils_push_build_flags() CMAKE_CXX_FLAGS_${capitalized_configuration_type} = ${CMAKE_CXX_FLAGS_${capitalized_configuration_type}}")
73+
message(STATUS "[LLVM] llvm_utils_push_build_flags() CMAKE_SHARED_LINKER_FLAGS_${capitalized_configuration_type} = ${CMAKE_SHARED_LINKER_FLAGS_${capitalized_configuration_type}}")
74+
message(STATUS "[LLVM] llvm_utils_push_build_flags() CMAKE_EXE_LINKER_FLAGS_${capitalized_configuration_type} = ${CMAKE_EXE_LINKER_FLAGS_${capitalized_configuration_type}}")
75+
message(STATUS "[LLVM] llvm_utils_push_build_flags() CMAKE_STATIC_LINKER_FLAGS_${capitalized_configuration_type} = ${CMAKE_STATIC_LINKER_FLAGS_${capitalized_configuration_type}}")
76+
message(STATUS "[LLVM] llvm_utils_push_build_flags() CMAKE_MODULE_LINKER_FLAGS_${capitalized_configuration_type} = ${CMAKE_MODULE_LINKER_FLAGS_${capitalized_configuration_type}}")
77+
endif()
78+
79+
unset(CMAKE_C_FLAGS_${capitalized_configuration_type})
80+
unset(CMAKE_CXX_FLAGS_${capitalized_configuration_type})
81+
unset(CMAKE_SHARED_LINKER_FLAGS_${capitalized_configuration_type})
82+
unset(CMAKE_EXE_LINKER_FLAGS_${capitalized_configuration_type})
83+
unset(CMAKE_STATIC_LINKER_FLAGS_${capitalized_configuration_type})
84+
unset(CMAKE_MODULE_LINKER_FLAGS_${capitalized_configuration_type})
85+
86+
endforeach()
87+
88+
endmacro()
89+
90+
#
91+
# Macro to restore build flags set previously
92+
#
93+
macro(llvm_utils_pop_build_flags)
94+
message(STATUS "[LLVM] Restoring build system compilation flags")
95+
96+
set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS_BACKUP})
97+
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS_BACKUP})
98+
set(CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS_BACKUP})
99+
set(CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS_BACKUP})
100+
set(CMAKE_STATIC_LINKER_FLAGS ${CMAKE_STATIC_LINKER_FLAGS_BACKUP})
101+
set(CMAKE_LOCAL_LINKER_FLAGS ${CMAKE_LOCAL_LINKER_FLAGS_BACKUP})
102+
set(CMAKE_MODULE_LINKER_FLAGS ${CMAKE_MODULE_LINKER_FLAGS_BACKUP})
103+
104+
if(PRINT_DEBUG)
105+
message(STATUS "[LLVM] llvm_utils_pop_build_flags() CMAKE_C_FLAGS = ${CMAKE_C_FLAGS}")
106+
message(STATUS "[LLVM] llvm_utils_pop_build_flags() CMAKE_CXX_FLAGS = ${CMAKE_CXX_FLAGS}")
107+
message(STATUS "[LLVM] llvm_utils_pop_build_flags() CMAKE_SHARED_LINKER_FLAGS = ${CMAKE_SHARED_LINKER_FLAGS}")
108+
message(STATUS "[LLVM] llvm_utils_pop_build_flags() CMAKE_EXE_LINKER_FLAGS = ${CMAKE_EXE_LINKER_FLAGS}")
109+
message(STATUS "[LLVM] llvm_utils_pop_build_flags() CMAKE_STATIC_LINKER_FLAGS = ${CMAKE_STATIC_LINKER_FLAGS}")
110+
message(STATUS "[LLVM] llvm_utils_pop_build_flags() CMAKE_LOCAL_LINKER_FLAGS = ${CMAKE_LOCAL_LINKER_FLAGS}")
111+
message(STATUS "[LLVM] llvm_utils_pop_build_flags() CMAKE_MODULE_LINKER_FLAGS = ${CMAKE_MODULE_LINKER_FLAGS}")
112+
endif()
113+
114+
unset(CMAKE_C_FLAGS_BACKUP)
115+
unset(CMAKE_CXX_FLAGS_BACKUP)
116+
unset(CMAKE_SHARED_LINKER_FLAGS_BACKUP)
117+
unset(CMAKE_EXE_LINKER_FLAGS_BACKUP)
118+
unset(CMAKE_STATIC_LINKER_FLAGS_BACKUP)
119+
unset(CMAKE_LOCAL_LINKER_FLAGS_BACKUP)
120+
unset(CMAKE_MODULE_LINKER_FLAGS_BACKUP)
121+
122+
foreach(configuration_type ${CMAKE_CONFIGURATION_TYPES} ${CMAKE_BUILD_TYPE})
123+
string(TOUPPER ${configuration_type} capitalized_configuration_type)
124+
125+
set(CMAKE_C_FLAGS_${capitalized_configuration_type} ${CMAKE_C_FLAGS_${capitalized_configuration_type}_BACKUP})
126+
set(CMAKE_CXX_FLAGS_${capitalized_configuration_type} ${CMAKE_CXX_FLAGS_${capitalized_configuration_type}_BACKUP})
127+
set(CMAKE_SHARED_LINKER_FLAGS_${capitalized_configuration_type} ${CMAKE_SHARED_LINKER_FLAGS_${capitalized_configuration_type}_BACKUP})
128+
set(CMAKE_EXE_LINKER_FLAGS_${capitalized_configuration_type} ${CMAKE_EXE_LINKER_FLAGS_${capitalized_configuration_type}_BACKUP})
129+
set(CMAKE_STATIC_LINKER_FLAGS_${capitalized_configuration_type} ${CMAKE_STATIC_LINKER_FLAGS_${capitalized_configuration_type}_BACKUP})
130+
set(CMAKE_MODULE_LINKER_FLAGS_${capitalized_configuration_type} ${CMAKE_MODULE_LINKER_FLAGS_${capitalized_configuration_type}_BACKUP})
131+
132+
if(PRINT_DEBUG)
133+
message(STATUS "[LLVM] llvm_utils_pop_build_flags() CMAKE_C_FLAGS_${capitalized_configuration_type} = ${CMAKE_C_FLAGS_${capitalized_configuration_type}}")
134+
message(STATUS "[LLVM] llvm_utils_pop_build_flags() CMAKE_CXX_FLAGS_${capitalized_configuration_type} = ${CMAKE_CXX_FLAGS_${capitalized_configuration_type}}")
135+
message(STATUS "[LLVM] llvm_utils_pop_build_flags() CMAKE_SHARED_LINKER_FLAGS_${capitalized_configuration_type} = ${CMAKE_SHARED_LINKER_FLAGS_${capitalized_configuration_type}}")
136+
message(STATUS "[LLVM] llvm_utils_pop_build_flags() CMAKE_EXE_LINKER_FLAGS_${capitalized_configuration_type} = ${CMAKE_EXE_LINKER_FLAGS_${capitalized_configuration_type}}")
137+
message(STATUS "[LLVM] llvm_utils_pop_build_flags() CMAKE_STATIC_LINKER_FLAGS_${capitalized_configuration_type} = ${CMAKE_STATIC_LINKER_FLAGS_${capitalized_configuration_type}}")
138+
message(STATUS "[LLVM] llvm_utils_pop_build_flags() CMAKE_MODULE_LINKER_FLAGS_${capitalized_configuration_type} = ${CMAKE_MODULE_LINKER_FLAGS_${capitalized_configuration_type}}")
139+
endif()
140+
141+
unset(CMAKE_C_FLAGS_${capitalized_configuration_type}_BACKUP)
142+
unset(CMAKE_CXX_FLAGS_${capitalized_configuration_type}_BACKUP)
143+
unset(CMAKE_SHARED_LINKER_FLAGS_${capitalized_configuration_type}_BACKUP)
144+
unset(CMAKE_EXE_LINKER_FLAGS_${capitalized_configuration_type}_BACKUP)
145+
unset(CMAKE_STATIC_LINKER_FLAGS_${capitalized_configuration_type}_BACKUP)
146+
unset(CMAKE_MODULE_LINKER_FLAGS_${capitalized_configuration_type}_BACKUP)
147+
148+
endforeach()
149+
150+
endmacro()
151+

0 commit comments

Comments
 (0)