mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
[CMake] Prefer multi-target variables over generic target variables in runtimes build
Runtimes variables in a multi-target environment are defined like: RUNTIMES_target_VARIABLE_NAME RUNTIMES_target+multi_VARIABLE_NAME In my case, I have a downstream runtimes cache that does the following: set(RUNTIMES_${target}+except_LIBCXXABI_ENABLE_EXCEPTIONS ON CACHE BOOL "") set(RUNTIMES_${target}_LIBCXX_ENABLE_EXCEPTIONS OFF CACHE BOOL "") I found that I was always getting the 'target' variable value (OFF) in my 'target+except' build, which was unexpected. This behavior was caused by the loop in llvm/runtimes/CMakeLists.txt that runs through all variable names, adding '-DVARIABLE_NAME=' options to the subsequent external project's cmake command. The issue is that the loop does a single pass, such that if the 'target' value appears in the cache after the 'target+except' value, the 'target' value will take precedence. I suggest in my change here that the more specific 'target+except' value should take precedence always, without relying on CMake cache ordering. Differential Revision: https://reviews.llvm.org/D71570 Patch By: JamesNagurne
This commit is contained in:
parent
c265774f7f
commit
d728d4b4e8
@ -448,17 +448,19 @@ else() # if this is included from LLVM's CMake
|
||||
|
||||
get_cmake_property(variableNames VARIABLES)
|
||||
foreach(variableName ${variableNames})
|
||||
string(FIND "${variableName}" "RUNTIMES_${name}_" out)
|
||||
if("${out}" EQUAL 0)
|
||||
string(REPLACE "RUNTIMES_${name}_" "" new_name ${variableName})
|
||||
list(APPEND ${name}_extra_args "-D${new_name}=${${variableName}}")
|
||||
endif()
|
||||
string(FIND "${variableName}" "RUNTIMES_${target}_" out)
|
||||
if("${out}" EQUAL 0)
|
||||
string(REPLACE "RUNTIMES_${target}_" "" new_name ${variableName})
|
||||
list(APPEND ${name}_extra_args "-D${new_name}=${${variableName}}")
|
||||
endif()
|
||||
endforeach()
|
||||
foreach(variableName ${variableNames})
|
||||
string(FIND "${variableName}" "RUNTIMES_${name}_" out)
|
||||
if("${out}" EQUAL 0)
|
||||
string(REPLACE "RUNTIMES_${name}_" "" new_name ${variableName})
|
||||
list(APPEND ${name}_extra_args "-D${new_name}=${${variableName}}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(NOT RUNTIMES_${name}_LLVM_ENABLE_RUNTIMES)
|
||||
string(REPLACE ";" "|" LLVM_ENABLE_RUNTIMES_PASSTHROUGH "${LLVM_ENABLE_RUNTIMES}")
|
||||
|
Loading…
Reference in New Issue
Block a user