Skip to content

Commit c87aabb

Browse files
committed
[cmake] Use already defined ${product}_PATH_TO_LLVM_{SOURCE,BUILD} values instead of re-setting it later ot the same value.
Before this patch, we would always set ${product}_PATH_TO_LLVM_{SOURCE,BUILD} to a value taken from llvm-config. But, turns out we had generated llvm-config using these values. Thus llvm-config is just giving us back values we already have. This commit changes these variables to be precondition variables and doesn't cause them to be reset. rdar://26154980
1 parent e12fff7 commit c87aabb

File tree

2 files changed

+14
-15
lines changed

2 files changed

+14
-15
lines changed

cmake/modules/SwiftSharedCMakeConfig.cmake

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,9 @@ endfunction()
111111
macro(swift_common_standalone_build_config product is_cross_compiling)
112112
option(LLVM_ENABLE_WARNINGS "Enable compiler warnings." ON)
113113

114+
precondition_translate_flag(${product}_PATH_TO_LLVM_SOURCE PATH_TO_LLVM_SOURCE)
115+
precondition_translate_flag(${product}_PATH_TO_LLVM_BUILD PATH_TO_LLVM_BUILD)
116+
114117
if(${is_cross_compiling})
115118
# Can't run llvm-config from the cross-compiled LLVM.
116119
set(LLVM_TOOLS_BINARY_DIR "" CACHE PATH "Path to llvm/bin")
@@ -148,8 +151,8 @@ macro(swift_common_standalone_build_config product is_cross_compiling)
148151
NO_DEFAULT_PATH)
149152

150153
set(LLVM_CMAKE_PATHS
151-
"${LLVM_BINARY_DIR}/share/llvm/cmake"
152-
"${LLVM_BINARY_DIR}/lib/cmake/llvm")
154+
"${PATH_TO_LLVM_BUILD}/share/llvm/cmake"
155+
"${PATH_TO_LLVM_BUILD}/lib/cmake/llvm")
153156

154157
set(LLVMCONFIG_FILE)
155158
foreach(CMAKE_PATH ${LLVM_CMAKE_PATHS})
@@ -173,15 +176,9 @@ macro(swift_common_standalone_build_config product is_cross_compiling)
173176
set(LLVM_ENABLE_ASSERTIONS "${LLVM_ENABLE_ASSERTIONS_saved}")
174177

175178
# Clang
176-
set(${product}_PATH_TO_LLVM_SOURCE "${LLVM_MAIN_SRC_DIR}")
177-
set(${product}_PATH_TO_LLVM_BUILD "${LLVM_BINARY_DIR}")
178-
179-
set(PATH_TO_LLVM_SOURCE "${${product}_PATH_TO_LLVM_SOURCE}")
180-
set(PATH_TO_LLVM_BUILD "${${product}_PATH_TO_LLVM_BUILD}")
181-
182-
set(${product}_PATH_TO_CLANG_SOURCE "${${product}_PATH_TO_LLVM_SOURCE}/tools/clang"
179+
set(${product}_PATH_TO_CLANG_SOURCE "${PATH_TO_LLVM_SOURCE}/tools/clang"
183180
CACHE PATH "Path to Clang source code.")
184-
set(${product}_PATH_TO_CLANG_BUILD "${${product}_PATH_TO_LLVM_BUILD}" CACHE PATH
181+
set(${product}_PATH_TO_CLANG_BUILD "${PATH_TO_LLVM_BUILD}" CACHE PATH
185182
"Path to the directory where Clang was built or installed.")
186183

187184
set(${product}_PATH_TO_CMARK_SOURCE "${${product}_PATH_TO_CMARK_SOURCE}"
@@ -218,11 +215,6 @@ macro(swift_common_standalone_build_config product is_cross_compiling)
218215

219216
list(APPEND CMAKE_MODULE_PATH "${${product}_PATH_TO_LLVM_BUILD}/share/llvm/cmake")
220217

221-
get_filename_component(PATH_TO_LLVM_BUILD "${${product}_PATH_TO_LLVM_BUILD}"
222-
ABSOLUTE)
223-
get_filename_component(PATH_TO_CLANG_BUILD "${${product}_PATH_TO_CLANG_BUILD}"
224-
ABSOLUTE)
225-
226218
set(LLVM_ABI_BREAKING_CHECKS "WITH_ASSERTS")
227219

228220
include(AddLLVM)

cmake/modules/SwiftTranslateFlag.cmake

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
include(SwiftUtils)
2+
13
# Translate a yes/no variable to the presence of a given string in a
24
# variable.
35
#
@@ -20,3 +22,8 @@ macro(translate_flags prefix options)
2022
endforeach()
2123
endmacro()
2224

25+
# Set ${outvar} to ${${invar}}, asserting if ${invar} is not set.
26+
function(precondition_translate_flag invar outvar)
27+
precondition(${invar})
28+
set(${outvar} "${${invar}}" PARENT_SCOPE)
29+
endfunction()

0 commit comments

Comments
 (0)