@@ -26,21 +26,65 @@ set(LLVM_DEFAULT_TARGET_TRIPLE aarch64-unknown-windows-msvc CACHE STRING "")
2626set (LLVM_APPEND_VC_REV NO CACHE BOOL "" )
2727set (LLVM_ENABLE_PER_TARGET_RUNTIME_DIR YES CACHE BOOL "" )
2828set (LLVM_ENABLE_PYTHON YES CACHE BOOL "" )
29- set (LLVM_RUNTIME_TARGETS
29+
30+ set (default_targets
31+ x86_64-unknown-windows-msvc
3032 aarch64-unknown-windows-msvc
31- CACHE STRING "" )
33+ i686-unknown-windows-msvc )
34+ set (LLVM_RUNTIME_TARGETS ${default_targets} CACHE STRING "" )
35+
36+ # Build the android builtins if NDK path is provided.
37+ if (NOT "$ENV{NDKPATH} " STREQUAL "" )
38+ list (APPEND default_targets
39+ aarch64-unknown-linux-android
40+ x86_64-unknown-linux-android
41+ i686-unknown-linux-android
42+ armv7-unknown-linux-androideabi)
43+ endif ()
44+
45+ set (LLVM_BUILTIN_TARGETS ${default_targets} CACHE STRING "" )
46+
3247foreach (target ${LLVM_RUNTIME_TARGETS} )
3348 set (RUNTIMES_${target} _LLVM_ENABLE_RUNTIMES
3449 compiler-rt
3550 CACHE STRING "" )
3651 set (RUNTIMES_${target} _CMAKE_MT mt CACHE STRING "" )
3752 set (RUNTIMES_${target} _CMAKE_SYSTEM_NAME Windows CACHE STRING "" )
3853 set (RUNTIMES_${target} _CMAKE_BUILD_TYPE Release CACHE STRING "" )
54+ set (RUNTIMES_${target} _COMPILER_RT_BUILD_BUILTINS YES CACHE BOOL "" )
3955 set (RUNTIMES_${target} _COMPILER_RT_BUILD_CRT NO CACHE BOOL "" )
4056 set (RUNTIMES_${target} _COMPILER_RT_BUILD_LIBFUZZER NO CACHE BOOL "" )
57+ set (RUNTIMES_${target} _COMPILER_RT_BUILD_ORC NO CACHE BOOL "" )
4158 set (RUNTIMES_${target} _COMPILER_RT_BUILD_PROFILE YES CACHE BOOL "" )
42- set (RUNTIMES_${target} _COMPILER_RT_BUILD_SANITIZERS NO CACHE BOOL "" )
4359 set (RUNTIMES_${target} _COMPILER_RT_BUILD_XRAY NO CACHE BOOL "" )
60+ # Sanitizers will be configured, but not built. We have separate build
61+ # steps for that, because we need a different shell for each target.
62+ set (RUNTIMES_${target} _COMPILER_RT_BUILD_SANITIZERS NO CACHE BOOL "" )
63+ endforeach ()
64+
65+ foreach (target ${LLVM_BUILTIN_TARGETS} )
66+ set (BUILTINS_${target} _CMAKE_MT mt CACHE STRING "" )
67+ if (${target} MATCHES windows-msvc )
68+ set (BUILTINS_${target} _CMAKE_SYSTEM_NAME Windows CACHE STRING "" )
69+ elseif (${target} MATCHES linux-android)
70+ # Use a single 'linux' directory and arch-based lib names on Android.
71+ set (BUILTINS_${target} _LLVM_ENABLE_PER_TARGET_RUNTIME_DIR NO CACHE BOOL "" )
72+ set (BUILTINS_${target} _CMAKE_SYSTEM_NAME Android CACHE STRING "" )
73+ if (${target} MATCHES aarch64)
74+ set (BUILTINS_${target} _CMAKE_ANDROID_ARCH_ABI arm64-v8a CACHE STRING "" )
75+ elseif (${target} MATCHES armv7)
76+ set (BUILTINS_${target} _CMAKE_ANDROID_ARCH_ABI armeabi-v7a CACHE STRING "" )
77+ elseif (${target} MATCHES i686)
78+ set (BUILTINS_${target} _CMAKE_ANDROID_ARCH_ABI x86 CACHE STRING "" )
79+ else ()
80+ set (BUILTINS_${target} _CMAKE_ANDROID_ARCH_ABI x86_64 CACHE STRING "" )
81+ endif ()
82+ set (BUILTINS_${target} _CMAKE_ANDROID_NDK $ENV{NDKPATH} CACHE PATH "" )
83+ set (BUILTINS_${target} _CMAKE_ANDROID_API 21 CACHE STRING "" )
84+ set (BUILTINS_${target} _CMAKE_C_COMPILER_TARGET "${target} 21" CACHE STRING "" )
85+ set (BUILTINS_${target} _CMAKE_CXX_COMPILER_TARGET "${target} 21" CACHE STRING "" )
86+ endif ()
87+ set (BUILTINS_${target} _CMAKE_BUILD_TYPE Release CACHE STRING "" )
4488endforeach ()
4589
4690set (LLVM_TARGETS_TO_BUILD AArch64 ARM WebAssembly X86 CACHE STRING "" )
@@ -167,6 +211,7 @@ set(LLVM_DISTRIBUTION_COMPONENTS
167211 libclang
168212 libclang-headers
169213 LTO
214+ builtins
170215 runtimes
171216 ${LLVM_TOOLCHAIN_TOOLS}
172217 ${CLANG_TOOLS}
0 commit comments