1a264e85dSVladimir Vereschaka# CrossWinToARMLinux.cmake 2a264e85dSVladimir Vereschaka# 3a264e85dSVladimir Vereschaka# Set up a CMakeCache for a cross Windows to ARM Linux toolchain build. 4a264e85dSVladimir Vereschaka# 5a264e85dSVladimir Vereschaka# This cache file can be used to build a cross toolchain to ARM Linux 6a264e85dSVladimir Vereschaka# on Windows platform. 7a264e85dSVladimir Vereschaka# 8a264e85dSVladimir Vereschaka# NOTE: the build requires a development ARM Linux root filesystem to use 95aabbf06SVladimir Vereschaka# proper target platform depended library and header files. 105aabbf06SVladimir Vereschaka# 115aabbf06SVladimir Vereschaka# The build generates a proper clang configuration file with stored 125aabbf06SVladimir Vereschaka# --sysroot argument for specified target triple. Also it is possible 135aabbf06SVladimir Vereschaka# to specify configuration path via CMake arguments, such as 145aabbf06SVladimir Vereschaka# -DCLANG_CONFIG_FILE_USER_DIR=<full-path-to-clang-configs> 155aabbf06SVladimir Vereschaka# and/or 165aabbf06SVladimir Vereschaka# -DCLANG_CONFIG_FILE_SYSTEM_DIR=<full-path-to-clang-configs> 17f4d60e2aSVladimir Vereschaka# 18f4d60e2aSVladimir Vereschaka# See more details here: https://clang.llvm.org/docs/UsersManual.html#configuration-files 19a264e85dSVladimir Vereschaka# 20a264e85dSVladimir Vereschaka# Configure: 21a264e85dSVladimir Vereschaka# cmake -G Ninja ^ 22f4d60e2aSVladimir Vereschaka# -DTOOLCHAIN_TARGET_TRIPLE=aarch64-unknown-linux-gnu ^ 235aabbf06SVladimir Vereschaka# -DTOOLCHAIN_TARGET_SYSROOTFS=<path-to-develop-arm-linux-root-fs> ^ 245aabbf06SVladimir Vereschaka# -DTOOLCHAIN_SHARED_LIBS=OFF ^ 25a264e85dSVladimir Vereschaka# -DCMAKE_INSTALL_PREFIX=../install ^ 26a264e85dSVladimir Vereschaka# -DCMAKE_CXX_FLAGS="-D__OPTIMIZE__" ^ 27eadc97b0SVladimir Vereschaka# -DREMOTE_TEST_HOST="<hostname>" ^ 28eadc97b0SVladimir Vereschaka# -DREMOTE_TEST_USER="<ssh_user_name>" ^ 290f5aabb9SVladimir Vereschaka# -C<llvm_src_root>/llvm-project/clang/cmake/caches/CrossWinToARMLinux.cmake ^ 30a264e85dSVladimir Vereschaka# <llvm_src_root>/llvm-project/llvm 31a264e85dSVladimir Vereschaka# Build: 32a264e85dSVladimir Vereschaka# cmake --build . --target install 33b5a80a0fSVladimir Vereschaka# Tests: 34a264e85dSVladimir Vereschaka# cmake --build . --target check-llvm 35a264e85dSVladimir Vereschaka# cmake --build . --target check-clang 36a264e85dSVladimir Vereschaka# cmake --build . --target check-lld 37d860ac5dSVladimir Vereschaka# cmake --build . --target check-compiler-rt-<TOOLCHAIN_TARGET_TRIPLE> 38d860ac5dSVladimir Vereschaka# cmake --build . --target check-cxxabi-<TOOLCHAIN_TARGET_TRIPLE> 39d860ac5dSVladimir Vereschaka# cmake --build . --target check-unwind-<TOOLCHAIN_TARGET_TRIPLE> 40d860ac5dSVladimir Vereschaka# cmake --build . --target check-cxx-<TOOLCHAIN_TARGET_TRIPLE> 41b4693e0dSVladimir Vereschaka# (another way to execute the tests) 42b4693e0dSVladimir Vereschaka# python bin/llvm-lit.py -v --threads=32 runtimes/runtimes-<TOOLCHAIN_TARGET_TRIPLE>bins/libunwind/test 2>&1 | tee libunwind-tests.log 43b4693e0dSVladimir Vereschaka# python bin/llvm-lit.py -v --threads=32 runtimes/runtimes-<TOOLCHAIN_TARGET_TRIPLE>-bins/libcxxabi/test 2>&1 | tee libcxxabi-tests.log 44b4693e0dSVladimir Vereschaka# python bin/llvm-lit.py -v --threads=32 runtimes/runtimes-<TOOLCHAIN_TARGET_TRIPLE>-bins/libcxx/test 2>&1 | tee libcxx-tests.log 45b4693e0dSVladimir Vereschaka 46a264e85dSVladimir Vereschaka 4703993f3bSSergej Jaskiewicz# LLVM_PROJECT_DIR is the path to the llvm-project directory. 4803993f3bSSergej Jaskiewicz# The right way to compute it would probably be to use "${CMAKE_SOURCE_DIR}/../", 4903993f3bSSergej Jaskiewicz# but CMAKE_SOURCE_DIR is set to the wrong value on earlier CMake versions 5003993f3bSSergej Jaskiewicz# that we still need to support (for instance, 3.10.2). 5103993f3bSSergej Jaskiewiczget_filename_component(LLVM_PROJECT_DIR 5203993f3bSSergej Jaskiewicz "${CMAKE_CURRENT_LIST_DIR}/../../../" 5303993f3bSSergej Jaskiewicz ABSOLUTE) 5403993f3bSSergej Jaskiewicz 55b5a80a0fSVladimir Vereschakaif (NOT DEFINED LLVM_ENABLE_ASSERTIONS) 56b5a80a0fSVladimir Vereschaka set(LLVM_ENABLE_ASSERTIONS ON CACHE BOOL "") 57b5a80a0fSVladimir Vereschakaendif() 58b5a80a0fSVladimir Vereschakaif (NOT DEFINED LLVM_ENABLE_PROJECTS) 59b5a80a0fSVladimir Vereschaka set(LLVM_ENABLE_PROJECTS "clang;clang-tools-extra;lld" CACHE STRING "") 60b5a80a0fSVladimir Vereschakaendif() 61b5a80a0fSVladimir Vereschakaif (NOT DEFINED LLVM_ENABLE_RUNTIMES) 62b5a80a0fSVladimir Vereschaka set(LLVM_ENABLE_RUNTIMES "compiler-rt;libunwind;libcxxabi;libcxx" CACHE STRING "") 63b5a80a0fSVladimir Vereschakaendif() 64a264e85dSVladimir Vereschaka 65d860ac5dSVladimir Vereschakaif (NOT DEFINED TOOLCHAIN_TARGET_TRIPLE) 66b4693e0dSVladimir Vereschaka set(TOOLCHAIN_TARGET_TRIPLE "aarch64-unknown-linux-gnu") 67b5a80a0fSVladimir Vereschakaelse() 68b5a80a0fSVladimir Vereschaka #NOTE: we must normalize specified target triple to a fully specified triple, 69b5a80a0fSVladimir Vereschaka # including the vendor part. It is necessary to synchronize the runtime library 70b5a80a0fSVladimir Vereschaka # installation path and operable target triple by Clang to get a correct runtime 71b5a80a0fSVladimir Vereschaka # path through `-print-runtime-dir` Clang option. 72d860ac5dSVladimir Vereschaka string(REPLACE "-" ";" TOOLCHAIN_TARGET_TRIPLE "${TOOLCHAIN_TARGET_TRIPLE}") 73d860ac5dSVladimir Vereschaka list(LENGTH TOOLCHAIN_TARGET_TRIPLE TOOLCHAIN_TARGET_TRIPLE_LEN) 74d860ac5dSVladimir Vereschaka if (TOOLCHAIN_TARGET_TRIPLE_LEN LESS 3) 75b5a80a0fSVladimir Vereschaka message(FATAL_ERROR "invalid target triple") 76b5a80a0fSVladimir Vereschaka endif() 77b5a80a0fSVladimir Vereschaka # We suppose missed vendor's part. 78d860ac5dSVladimir Vereschaka if (TOOLCHAIN_TARGET_TRIPLE_LEN LESS 4) 79d860ac5dSVladimir Vereschaka list(INSERT TOOLCHAIN_TARGET_TRIPLE 1 "unknown") 80b5a80a0fSVladimir Vereschaka endif() 81d860ac5dSVladimir Vereschaka string(REPLACE ";" "-" TOOLCHAIN_TARGET_TRIPLE "${TOOLCHAIN_TARGET_TRIPLE}") 82a264e85dSVladimir Vereschakaendif() 83a264e85dSVladimir Vereschaka 84b4693e0dSVladimir Vereschakamessage(STATUS "Toolchain target triple: ${TOOLCHAIN_TARGET_TRIPLE}") 85b4693e0dSVladimir Vereschaka 865aabbf06SVladimir Vereschakaif (DEFINED TOOLCHAIN_TARGET_SYSROOTFS) 875aabbf06SVladimir Vereschaka message(STATUS "Toolchain target sysroot: ${TOOLCHAIN_TARGET_SYSROOTFS}") 885aabbf06SVladimir Vereschaka # Store the --sysroot argument for the compiler-rt test flags. 895aabbf06SVladimir Vereschaka set(sysroot_flags --sysroot='${TOOLCHAIN_TARGET_SYSROOTFS}') 905aabbf06SVladimir Vereschaka # Generate the clang configuration file for the specified target triple 915aabbf06SVladimir Vereschaka # and store --sysroot in this file. 925aabbf06SVladimir Vereschaka file(WRITE "${CMAKE_BINARY_DIR}/bin/${TOOLCHAIN_TARGET_TRIPLE}.cfg" ${sysroot_flags}) 935aabbf06SVladimir Vereschakaendif() 945aabbf06SVladimir Vereschaka 955aabbf06SVladimir Vereschaka# Build the shared libraries for libc++/libc++abi/libunwind. 965aabbf06SVladimir Vereschakaif (NOT DEFINED TOOLCHAIN_SHARED_LIBS) 975aabbf06SVladimir Vereschaka set(TOOLCHAIN_SHARED_LIBS OFF) 985aabbf06SVladimir Vereschakaendif() 99*a996a15bSVladimir Vereschaka# Enable usage of the static libunwind and libc++abi libraries. 100*a996a15bSVladimir Vereschakaif (NOT DEFINED TOOLCHAIN_USE_STATIC_LIBS) 101*a996a15bSVladimir Vereschaka set(TOOLCHAIN_USE_STATIC_LIBS ON) 102*a996a15bSVladimir Vereschakaendif() 1035aabbf06SVladimir Vereschaka 104b4693e0dSVladimir Vereschakaif (NOT DEFINED LLVM_TARGETS_TO_BUILD) 105b4693e0dSVladimir Vereschaka if ("${TOOLCHAIN_TARGET_TRIPLE}" MATCHES "^(armv|arm32)+") 106b4693e0dSVladimir Vereschaka set(LLVM_TARGETS_TO_BUILD "ARM" CACHE STRING "") 107b4693e0dSVladimir Vereschaka endif() 108b4693e0dSVladimir Vereschaka if ("${TOOLCHAIN_TARGET_TRIPLE}" MATCHES "^(aarch64|arm64)+") 109b4693e0dSVladimir Vereschaka set(LLVM_TARGETS_TO_BUILD "AArch64" CACHE STRING "") 110b4693e0dSVladimir Vereschaka endif() 111b4693e0dSVladimir Vereschakaendif() 112b4693e0dSVladimir Vereschaka 113b4693e0dSVladimir Vereschakamessage(STATUS "Toolchain target to build: ${LLVM_TARGETS_TO_BUILD}") 114b4693e0dSVladimir Vereschaka 115341d86dcSVladimir Vereschaka# Allow to override libc++ ABI version (1 is default). 1167d29718fSVladimir Vereschakaif (NOT DEFINED LIBCXX_ABI_VERSION) 117341d86dcSVladimir Vereschaka set(LIBCXX_ABI_VERSION 1) 1187d29718fSVladimir Vereschakaendif() 1197d29718fSVladimir Vereschaka 1207d29718fSVladimir Vereschakamessage(STATUS "Toolchain's Libc++ ABI version: ${LIBCXX_ABI_VERSION}") 1217d29718fSVladimir Vereschaka 122a264e85dSVladimir Vereschakaif (NOT DEFINED CMAKE_BUILD_TYPE) 123a264e85dSVladimir Vereschaka set(CMAKE_BUILD_TYPE "Release" CACHE STRING "") 124a264e85dSVladimir Vereschakaendif() 125a264e85dSVladimir Vereschaka 126a264e85dSVladimir Vereschakaset(CMAKE_CL_SHOWINCLUDES_PREFIX "Note: including file: " CACHE STRING "") 127b5a80a0fSVladimir Vereschaka# Required if COMPILER_RT_DEFAULT_TARGET_ONLY is ON 128d860ac5dSVladimir Vereschakaset(CMAKE_C_COMPILER_TARGET "${TOOLCHAIN_TARGET_TRIPLE}" CACHE STRING "") 129d860ac5dSVladimir Vereschakaset(CMAKE_CXX_COMPILER_TARGET "${TOOLCHAIN_TARGET_TRIPLE}" CACHE STRING "") 130a264e85dSVladimir Vereschaka 131d860ac5dSVladimir Vereschakaset(LLVM_DEFAULT_TARGET_TRIPLE "${TOOLCHAIN_TARGET_TRIPLE}" CACHE STRING "") 132d860ac5dSVladimir Vereschakaset(LLVM_TARGET_ARCH "${TOOLCHAIN_TARGET_TRIPLE}" CACHE STRING "") 133a264e85dSVladimir Vereschakaset(LLVM_LIT_ARGS "-vv ${LLVM_LIT_ARGS}" CACHE STRING "" FORCE) 134a264e85dSVladimir Vereschaka 135b4693e0dSVladimir Vereschakaset(CLANG_DEFAULT_CXX_STDLIB "libc++" CACHE STRING "") 136a264e85dSVladimir Vereschakaset(CLANG_DEFAULT_LINKER "lld" CACHE STRING "") 137b4693e0dSVladimir Vereschakaset(CLANG_DEFAULT_OBJCOPY "llvm-objcopy" CACHE STRING "") 138b4693e0dSVladimir Vereschakaset(CLANG_DEFAULT_RTLIB "compiler-rt" CACHE STRING "") 139b4693e0dSVladimir Vereschakaset(CLANG_DEFAULT_UNWINDLIB "libunwind" CACHE STRING "") 140a264e85dSVladimir Vereschaka 1417d29718fSVladimir Vereschakaif (NOT DEFINED CMAKE_MSVC_RUNTIME_LIBRARY AND WIN32) 1427d29718fSVladimir Vereschaka #Note: Always specify MT DLL for the LLDB build configurations on Windows host. 1437d29718fSVladimir Vereschaka if (CMAKE_BUILD_TYPE STREQUAL "Debug") 1447d29718fSVladimir Vereschaka set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDebugDLL" CACHE STRING "") 1457d29718fSVladimir Vereschaka else() 1467d29718fSVladimir Vereschaka set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDLL" CACHE STRING "") 1477d29718fSVladimir Vereschaka endif() 1487d29718fSVladimir Vereschaka # Grab all ucrt/vcruntime related DLLs into the binary installation folder. 1497d29718fSVladimir Vereschaka set(CMAKE_INSTALL_UCRT_LIBRARIES ON CACHE BOOL "") 15018fa0b15SVladimir Vereschakaendif() 151a264e85dSVladimir Vereschaka 152b09154ebSVladimir Vereschaka# Set up RPATH for the target runtime/builtin libraries. 153b09154ebSVladimir Vereschaka# See some details here: https://reviews.llvm.org/D91099 154b09154ebSVladimir Vereschakaif (NOT DEFINED RUNTIMES_INSTALL_RPATH) 155b09154ebSVladimir Vereschaka set(RUNTIMES_INSTALL_RPATH "\$ORIGIN/../lib;${CMAKE_INSTALL_PREFIX}/lib") 156b09154ebSVladimir Vereschakaendif() 157b09154ebSVladimir Vereschaka 158d860ac5dSVladimir Vereschakaset(LLVM_BUILTIN_TARGETS "${TOOLCHAIN_TARGET_TRIPLE}" CACHE STRING "") 15918fa0b15SVladimir Vereschaka 160d860ac5dSVladimir Vereschakaset(BUILTINS_${TOOLCHAIN_TARGET_TRIPLE}_CMAKE_SYSTEM_NAME "Linux" CACHE STRING "") 161d860ac5dSVladimir Vereschakaset(BUILTINS_${TOOLCHAIN_TARGET_TRIPLE}_CMAKE_INSTALL_RPATH "${RUNTIMES_INSTALL_RPATH}" CACHE STRING "") 162d860ac5dSVladimir Vereschakaset(BUILTINS_${TOOLCHAIN_TARGET_TRIPLE}_CMAKE_BUILD_WITH_INSTALL_RPATH ON CACHE BOOL "") 163b4693e0dSVladimir Vereschakaset(BUILTINS_${TOOLCHAIN_TARGET_TRIPLE}_LLVM_CMAKE_DIR "${LLVM_PROJECT_DIR}/llvm/cmake/modules" CACHE PATH "") 16418fa0b15SVladimir Vereschaka 1657d29718fSVladimir Vereschakaif (DEFINED TOOLCHAIN_TARGET_COMPILER_FLAGS) 1667d29718fSVladimir Vereschaka foreach(lang C;CXX;ASM) 1677d29718fSVladimir Vereschaka set(BUILTINS_${TOOLCHAIN_TARGET_TRIPLE}_CMAKE_${lang}_FLAGS "${TOOLCHAIN_TARGET_COMPILER_FLAGS}" CACHE STRING "") 1687d29718fSVladimir Vereschaka endforeach() 1697d29718fSVladimir Vereschakaendif() 1707d29718fSVladimir Vereschakaforeach(type SHARED;MODULE;EXE) 1717d29718fSVladimir Vereschaka set(BUILTINS_${TOOLCHAIN_TARGET_TRIPLE}_CMAKE_${type}_LINKER_FLAGS "-fuse-ld=lld" CACHE STRING "") 1727d29718fSVladimir Vereschakaendforeach() 1737d29718fSVladimir Vereschaka 174d860ac5dSVladimir Vereschakaset(LLVM_RUNTIME_TARGETS "${TOOLCHAIN_TARGET_TRIPLE}" CACHE STRING "") 175b4693e0dSVladimir Vereschakaset(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR ON CACHE BOOL "") 17618fa0b15SVladimir Vereschaka 177d860ac5dSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LLVM_ENABLE_RUNTIMES "${LLVM_ENABLE_RUNTIMES}" CACHE STRING "") 17818fa0b15SVladimir Vereschaka 179d860ac5dSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_CMAKE_SYSTEM_NAME "Linux" CACHE STRING "") 180d860ac5dSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_CMAKE_INSTALL_RPATH "${RUNTIMES_INSTALL_RPATH}" CACHE STRING "") 181d860ac5dSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_CMAKE_BUILD_WITH_INSTALL_RPATH ON CACHE BOOL "") 18218fa0b15SVladimir Vereschaka 1837d29718fSVladimir Vereschakaif (DEFINED TOOLCHAIN_TARGET_COMPILER_FLAGS) 1847d29718fSVladimir Vereschaka foreach(lang C;CXX;ASM) 1857d29718fSVladimir Vereschaka set(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_CMAKE_${lang}_FLAGS "${TOOLCHAIN_TARGET_COMPILER_FLAGS}" CACHE STRING "") 1867d29718fSVladimir Vereschaka endforeach() 1877d29718fSVladimir Vereschakaendif() 1887d29718fSVladimir Vereschakaforeach(type SHARED;MODULE;EXE) 1897d29718fSVladimir Vereschaka set(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_CMAKE_${type}_LINKER_FLAGS "-fuse-ld=lld" CACHE STRING "") 1907d29718fSVladimir Vereschakaendforeach() 1917d29718fSVladimir Vereschaka 192d860ac5dSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_COMPILER_RT_BUILD_BUILTINS ON CACHE BOOL "") 193d860ac5dSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_COMPILER_RT_BUILD_SANITIZERS OFF CACHE BOOL "") 194d860ac5dSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_COMPILER_RT_BUILD_XRAY OFF CACHE BOOL "") 195d860ac5dSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_COMPILER_RT_BUILD_LIBFUZZER OFF CACHE BOOL "") 196d860ac5dSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_COMPILER_RT_BUILD_PROFILE OFF CACHE BOOL "") 197b4693e0dSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_COMPILER_RT_BUILD_CRT ON CACHE BOOL "") 198d860ac5dSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_COMPILER_RT_BUILD_ORC OFF CACHE BOOL "") 199d860ac5dSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_COMPILER_RT_DEFAULT_TARGET_ONLY ON CACHE BOOL "") 200d860ac5dSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_COMPILER_RT_INCLUDE_TESTS ON CACHE BOOL "") 201d860ac5dSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_COMPILER_RT_CAN_EXECUTE_TESTS ON CACHE BOOL "") 20218fa0b15SVladimir Vereschaka 203d860ac5dSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_COMPILER_RT_USE_BUILTINS_LIBRARY ON CACHE BOOL "") 204b4693e0dSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_COMPILER_RT_CXX_LIBRARY libcxx CACHE STRING "") 2055aabbf06SVladimir Vereschaka# The compiler-rt tests disable the clang configuration files during the execution by setting CLANG_NO_DEFAULT_CONFIG=1 2065aabbf06SVladimir Vereschaka# and drops out the --sysroot from there. Provide it explicity via the test flags here if target sysroot has been specified. 2075aabbf06SVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_COMPILER_RT_TEST_COMPILER_CFLAGS "--stdlib=libc++ ${sysroot_flags}" CACHE STRING "") 20818fa0b15SVladimir Vereschaka 209d860ac5dSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBUNWIND_USE_COMPILER_RT ON CACHE BOOL "") 2105aabbf06SVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBUNWIND_ENABLE_SHARED ${TOOLCHAIN_SHARED_LIBS} CACHE BOOL "") 21118fa0b15SVladimir Vereschaka 212d860ac5dSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBCXXABI_USE_LLVM_UNWINDER ON CACHE BOOL "") 213*a996a15bSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBCXXABI_ENABLE_STATIC_UNWINDER ${TOOLCHAIN_USE_STATIC_LIBS} CACHE BOOL "") 214d860ac5dSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBCXXABI_USE_COMPILER_RT ON CACHE BOOL "") 215d860ac5dSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBCXXABI_ENABLE_NEW_DELETE_DEFINITIONS OFF CACHE BOOL "") 2165aabbf06SVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBCXXABI_ENABLE_SHARED ${TOOLCHAIN_SHARED_LIBS} CACHE BOOL "") 21718fa0b15SVladimir Vereschaka 218d860ac5dSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBCXX_USE_COMPILER_RT ON CACHE BOOL "") 2195aabbf06SVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBCXX_ENABLE_SHARED ${TOOLCHAIN_SHARED_LIBS} CACHE BOOL "") 2207d29718fSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBCXX_ABI_VERSION ${LIBCXX_ABI_VERSION} CACHE STRING "") 221d860ac5dSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBCXX_CXX_ABI "libcxxabi" CACHE STRING "") #!!! 222d860ac5dSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBCXX_ENABLE_NEW_DELETE_DEFINITIONS ON CACHE BOOL "") 223341d86dcSVladimir Vereschaka# Merge libc++ and libc++abi libraries into the single libc++ library file. 224*a996a15bSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBCXX_ENABLE_STATIC_ABI_LIBRARY ${TOOLCHAIN_USE_STATIC_LIBS} CACHE BOOL "") 22550e38cc8SVladimir Vereschaka# Forcely disable the libc++ benchmarks on Windows build hosts 22650e38cc8SVladimir Vereschaka# (current benchmark test configuration does not support the cross builds there). 22750e38cc8SVladimir Vereschakaif (WIN32) 22850e38cc8SVladimir Vereschaka set(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBCXX_INCLUDE_BENCHMARKS OFF CACHE BOOL "") 22950e38cc8SVladimir Vereschakaendif(WIN32) 23018fa0b15SVladimir Vereschaka 231b4693e0dSVladimir Vereschaka# Avoid searching for the python3 interpreter during the runtimes configuration for the cross builds. 232b4693e0dSVladimir Vereschaka# It starts searching the python3 package using the target's sysroot path, that usually is not compatible with the build host. 233c310d0deSSergej Jaskiewiczfind_package(Python3 COMPONENTS Interpreter) 234b4693e0dSVladimir Vereschakaset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_Python3_EXECUTABLE ${Python3_EXECUTABLE} CACHE PATH "") 235c310d0deSSergej Jaskiewicz 236e5994229SAlexander Richardsonset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBUNWIND_TEST_PARAMS_default "${RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_TEST_PARAMS}") 237e5994229SAlexander Richardsonset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBCXXABI_TEST_PARAMS_default "${RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_TEST_PARAMS}") 238e5994229SAlexander Richardsonset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBCXX_TEST_PARAMS_default "${RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_TEST_PARAMS}") 239e5994229SAlexander Richardson 240eadc97b0SVladimir Vereschaka# Remote test configuration. 241eadc97b0SVladimir Vereschakaif(DEFINED REMOTE_TEST_HOST) 242eadc97b0SVladimir Vereschaka # Allow override with the custom values. 24318fa0b15SVladimir Vereschaka if(NOT DEFINED DEFAULT_TEST_EXECUTOR) 24441f74bc7SVladimir Vereschaka set(DEFAULT_TEST_EXECUTOR "\\\"${Python3_EXECUTABLE}\\\" \\\"${LLVM_PROJECT_DIR}/libcxx/utils/ssh.py\\\" --host=${REMOTE_TEST_USER}@${REMOTE_TEST_HOST}") 2458aaafa06SAlex Orlov endif() 24618fa0b15SVladimir Vereschaka 247d860ac5dSVladimir Vereschaka set(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_COMPILER_RT_EMULATOR 2483af06c72SVladimir Vereschaka "\\\"${Python3_EXECUTABLE}\\\" \\\"${LLVM_PROJECT_DIR}/llvm/utils/remote-exec.py\\\" --host=${REMOTE_TEST_USER}@${REMOTE_TEST_HOST}" 24918fa0b15SVladimir Vereschaka CACHE STRING "") 25018fa0b15SVladimir Vereschaka 251e5994229SAlexander Richardson list(APPEND RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBUNWIND_TEST_PARAMS_default "executor=${DEFAULT_TEST_EXECUTOR}") 252e5994229SAlexander Richardson list(APPEND RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBCXXABI_TEST_PARAMS_default "executor=${DEFAULT_TEST_EXECUTOR}") 253e5994229SAlexander Richardson list(APPEND RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBCXX_TEST_PARAMS_default "executor=${DEFAULT_TEST_EXECUTOR}") 254eadc97b0SVladimir Vereschakaendif() 255eadc97b0SVladimir Vereschaka 256e5994229SAlexander Richardsonset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBUNWIND_TEST_PARAMS "${RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBUNWIND_TEST_PARAMS_default}" CACHE INTERNAL "") 257e5994229SAlexander Richardsonset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBCXXABI_TEST_PARAMS "${RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBCXXABI_TEST_PARAMS_default}" CACHE INTERNAL "") 258e5994229SAlexander Richardsonset(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBCXX_TEST_PARAMS "${RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBCXX_TEST_PARAMS_default}" CACHE INTERNAL "") 259e5994229SAlexander Richardson 260a264e85dSVladimir Vereschakaset(LLVM_INSTALL_TOOLCHAIN_ONLY ON CACHE BOOL "") 261a264e85dSVladimir Vereschakaset(LLVM_TOOLCHAIN_TOOLS 262a264e85dSVladimir Vereschaka llvm-ar 263a264e85dSVladimir Vereschaka llvm-cov 264a264e85dSVladimir Vereschaka llvm-cxxfilt 265a264e85dSVladimir Vereschaka llvm-dwarfdump 266a264e85dSVladimir Vereschaka llvm-lib 267a264e85dSVladimir Vereschaka llvm-nm 268a264e85dSVladimir Vereschaka llvm-objdump 269aba5b91bSAlexandre Ganea llvm-pdbutil 270a264e85dSVladimir Vereschaka llvm-profdata 271a264e85dSVladimir Vereschaka llvm-ranlib 272a264e85dSVladimir Vereschaka llvm-readobj 273a264e85dSVladimir Vereschaka llvm-size 274a264e85dSVladimir Vereschaka llvm-symbolizer 275a264e85dSVladimir Vereschaka CACHE STRING "") 276a264e85dSVladimir Vereschaka 277a264e85dSVladimir Vereschakaset(LLVM_DISTRIBUTION_COMPONENTS 278a264e85dSVladimir Vereschaka clang 279a264e85dSVladimir Vereschaka lld 280a264e85dSVladimir Vereschaka LTO 281a264e85dSVladimir Vereschaka clang-format 282a264e85dSVladimir Vereschaka builtins 283a264e85dSVladimir Vereschaka runtimes 284a264e85dSVladimir Vereschaka ${LLVM_TOOLCHAIN_TOOLS} 285a264e85dSVladimir Vereschaka CACHE STRING "") 286