|
@@ -139,12 +139,40 @@ else() # if this is included from LLVM's CMake
|
|
|
# is required because the other runtimes need the builtin libraries present
|
|
|
# before the just-built compiler can pass the configuration tests.
|
|
|
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/compiler-rt)
|
|
|
- llvm_ExternalProject_Add(builtins
|
|
|
- ${CMAKE_CURRENT_SOURCE_DIR}/compiler-rt/lib/builtins
|
|
|
- CMAKE_ARGS -DLLVM_LIBRARY_OUTPUT_INTDIR=${LLVM_LIBRARY_DIR}
|
|
|
- -DLLVM_RUNTIME_OUTPUT_INTDIR=${LLVM_TOOLS_BINARY_DIR}
|
|
|
- PASSTHROUGH_PREFIXES COMPILER_RT
|
|
|
- USE_TOOLCHAIN)
|
|
|
+ if(APPLE OR NOT LLVM_BUILTIN_TARGETS)
|
|
|
+ llvm_ExternalProject_Add(builtins
|
|
|
+ ${CMAKE_CURRENT_SOURCE_DIR}/compiler-rt/lib/builtins
|
|
|
+ CMAKE_ARGS -DLLVM_LIBRARY_OUTPUT_INTDIR=${LLVM_LIBRARY_DIR}
|
|
|
+ -DLLVM_RUNTIME_OUTPUT_INTDIR=${LLVM_TOOLS_BINARY_DIR}
|
|
|
+ -DCMAKE_C_COMPILER_TARGET=${TARGET_TRIPLE}
|
|
|
+ -DCMAKE_ASM_COMPILER_TARGET=${TARGET_TRIPLE}
|
|
|
+ PASSTHROUGH_PREFIXES COMPILER_RT
|
|
|
+ USE_TOOLCHAIN)
|
|
|
+ else()
|
|
|
+ get_cmake_property(variableNames VARIABLES)
|
|
|
+ add_custom_target(builtins)
|
|
|
+ foreach(target ${LLVM_BUILTIN_TARGETS})
|
|
|
+ foreach(variableName ${variableNames})
|
|
|
+ if(variableName MATCHES "^BUILTINS_${target}")
|
|
|
+ string(REPLACE "BUILTINS_${target}_" "" new_name ${variableName})
|
|
|
+ list(APPEND ${target}_extra_args "-D${new_name}=${${variableName}}")
|
|
|
+ endif()
|
|
|
+ endforeach()
|
|
|
+ llvm_ExternalProject_Add(builtins-${target}
|
|
|
+ ${CMAKE_CURRENT_SOURCE_DIR}/compiler-rt/lib/builtins
|
|
|
+ CMAKE_ARGS -DLLVM_LIBRARY_OUTPUT_INTDIR=${LLVM_LIBRARY_DIR}
|
|
|
+ -DLLVM_RUNTIME_OUTPUT_INTDIR=${LLVM_TOOLS_BINARY_DIR}
|
|
|
+ -DCMAKE_C_COMPILER_TARGET=${target}
|
|
|
+ -DCMAKE_ASM_COMPILER_TARGET=${target}
|
|
|
+ -DCMAKE_C_COMPILER_WORKS=On
|
|
|
+ -DCMAKE_ASM_COMPILER_WORKS=On
|
|
|
+ -DCOMPILER_RT_DEFAULT_TARGET_ONLY=On
|
|
|
+ ${${target}_extra_args}
|
|
|
+ PASSTHROUGH_PREFIXES COMPILER_RT
|
|
|
+ USE_TOOLCHAIN)
|
|
|
+ add_dependencies(builtins builtins-${target})
|
|
|
+ endforeach()
|
|
|
+ endif()
|
|
|
set(deps builtins)
|
|
|
# We don't need to depend on the builtins if we're building instrumented
|
|
|
# because the next stage will use the same compiler used to build this stage.
|