@@ -17,7 +17,12 @@ foreach(proj ${LLVM_ENABLE_RUNTIMES})
17
17
endforeach ()
18
18
19
19
function (get_compiler_rt_path path )
20
- foreach (entry ${runtimes} )
20
+ set (all_runtimes ${runtimes} )
21
+ foreach (name ${LLVM_RUNTIME_TARGETS} )
22
+ list (APPEND all_runtimes ${RUNTIMES_${name}_LLVM_ENABLE_RUNTIMES} )
23
+ endforeach ()
24
+ list (REMOVE_DUPLICATES all_runtimes )
25
+ foreach (entry ${all_runtimes} )
21
26
get_filename_component (projName ${entry} NAME )
22
27
if ("${projName} " MATCHES "compiler-rt" )
23
28
set (${path} ${entry} PARENT_SCOPE )
@@ -138,37 +143,44 @@ endfunction()
138
143
# before the just-built compiler can pass the configuration tests.
139
144
get_compiler_rt_path (compiler_rt_path )
140
145
if (compiler_rt_path )
141
- if (NOT LLVM_BUILTIN_TARGETS )
146
+ # If the user did not specify the targets infer them from the runtimes.
147
+ set (builtin_targets ${LLVM_BUILTIN_TARGETS} )
148
+ if (NOT builtin_targets )
149
+ if ("compiler-rt" IN_LIST LLVM_ENABLE_RUNTIMES )
150
+ list (APPEND builtin_targets "default" )
151
+ endif ()
152
+ foreach (name ${LLVM_RUNTIME_TARGETS} )
153
+ if ("compiler-rt" IN_LIST RUNTIMES_${name}_LLVM_ENABLE_RUNTIMES )
154
+ list (APPEND builtin_targets ${name} )
155
+ endif ()
156
+ endforeach ()
157
+ endif ()
158
+ if ("default" IN_LIST builtin_targets )
142
159
builtin_default_target (${compiler_rt_path}
143
160
DEPENDS clang-resource-headers )
161
+ list (REMOVE_ITEM builtin_targets "default" )
144
162
else ()
145
- if ("default" IN_LIST LLVM_BUILTIN_TARGETS )
146
- builtin_default_target (${compiler_rt_path}
147
- DEPENDS clang-resource-headers )
148
- list (REMOVE_ITEM LLVM_BUILTIN_TARGETS "default" )
149
- else ()
150
- add_custom_target (builtins )
151
- add_custom_target (install -builtins )
152
- add_custom_target (install -builtins-stripped )
153
- set_target_properties (
154
- builtins install -builtins install -builtins-stripped
155
- PROPERTIES FOLDER "Compiler-RT"
156
- )
157
- endif ()
163
+ add_custom_target (builtins )
164
+ add_custom_target (install -builtins )
165
+ add_custom_target (install -builtins-stripped )
166
+ set_target_properties (
167
+ builtins install -builtins install -builtins-stripped
168
+ PROPERTIES FOLDER "Compiler-RT"
169
+ )
170
+ endif ()
158
171
159
- foreach (target ${LLVM_BUILTIN_TARGETS } )
160
- check_apple_target (${target} builtin )
172
+ foreach (target ${builtin_targets } )
173
+ check_apple_target (${target} builtin )
161
174
162
- builtin_register_target (${compiler_rt_path} ${target}
163
- DEPENDS clang-resource-headers
164
- CMAKE_ARGS -DLLVM_DEFAULT_TARGET_TRIPLE=${target}
165
- EXTRA_ARGS TARGET_TRIPLE ${target} )
175
+ builtin_register_target (${compiler_rt_path} ${target}
176
+ DEPENDS clang-resource-headers
177
+ CMAKE_ARGS -DLLVM_DEFAULT_TARGET_TRIPLE=${target}
178
+ EXTRA_ARGS TARGET_TRIPLE ${target} )
166
179
167
- add_dependencies (builtins builtins-${target} )
168
- add_dependencies (install -builtins install -builtins-${target} )
169
- add_dependencies (install -builtins-stripped install -builtins-${target}-stripped )
170
- endforeach ()
171
- endif ()
180
+ add_dependencies (builtins builtins-${target} )
181
+ add_dependencies (install -builtins install -builtins-${target} )
182
+ add_dependencies (install -builtins-stripped install -builtins-${target}-stripped )
183
+ endforeach ()
172
184
set (builtins_dep builtins )
173
185
# We don't need to depend on the builtins if we're building instrumented
174
186
# because the next stage will use the same compiler used to build this stage.
0 commit comments