diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e845bd98f..0a13f3640 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,13 +22,23 @@ jobs: matrix: include: - name: ubu22-x86-gcc12-clang-repl-19 + os: ubuntu-22.04 + compiler: gcc-12 + clang-runtime: '19' + cling: Off + cppyy: On + llvm_enable_projects: "clang" + llvm_targets_to_build: "host;NVPTX" + - name: ubu22-x86-gcc12-clang-repl-19-emscripten os: ubuntu-22.04 compiler: gcc-12 clang-runtime: '19' cling: Off cppyy: On llvm_enable_projects: "clang;lld" - llvm_targets_to_build: "WebAssembly;host;NVPTX" + llvm_targets_to_build: "WebAssembly" + emscripten: On + emsdk_ver: "3.1.45" - name: ubu22-x86-gcc12-clang-repl-18 os: ubuntu-22.04 compiler: gcc-12 @@ -87,13 +97,23 @@ jobs: llvm_enable_projects: "clang" llvm_targets_to_build: "host;NVPTX" - name: osx15-arm-clang-clang-repl-19 + os: macos-15 + compiler: clang + clang-runtime: '19' + cling: Off + cppyy: On + llvm_enable_projects: "clang" + llvm_targets_to_build: "host;NVPTX" + - name: osx15-arm-clang-clang-repl-19-emscripten os: macos-15 compiler: clang clang-runtime: '19' cling: Off cppyy: On llvm_enable_projects: "clang;lld" - llvm_targets_to_build: "WebAssembly;host;NVPTX" + llvm_targets_to_build: "WebAssembly" + emscripten: On + emsdk_ver: "3.1.45" - name: osx15-arm-clang-clang-repl-18 os: macos-15 compiler: clang @@ -128,13 +148,23 @@ jobs: llvm_enable_projects: "clang" llvm_targets_to_build: "host;NVPTX" - name: osx13-x86-clang-clang-repl-19 + os: macos-13 + compiler: clang + clang-runtime: '19' + cling: Off + cppyy: On + llvm_enable_projects: "clang" + llvm_targets_to_build: "host;NVPTX" + - name: osx13-x86-clang-clang-repl-19-emscripten os: macos-13 compiler: clang clang-runtime: '19' cling: Off cppyy: On llvm_enable_projects: "clang;lld" - llvm_targets_to_build: "WebAssembly;host;NVPTX" + llvm_targets_to_build: "WebAssembly" + emscripten: On + emsdk_ver: "3.1.45" - name: osx13-x86-clang-clang-repl-18 os: macos-13 compiler: clang @@ -198,7 +228,7 @@ jobs: fi echo "CLING_HASH=$CLING_HASH" >> $GITHUB_ENV - echo "LLVM_HASH=$LLVM_HASH" >> $GITHUB_ENV + echo "LLVM_HASH=$LLVM_HASH" >> $GITHUB_ENV - name: Save PR Info on Windows systems if: ${{ runner.os == 'windows' }} @@ -227,10 +257,24 @@ jobs: echo "CLING_HASH=$env:CLING_HASH" >> $GITHUB_ENV echo "LLVM_HASH=$env:LLVM_HASH" >> $GITHUB_ENV + echo "KEY=${{ env.CLING_HASH }}-${{ runner.os }}-${{ matrix.os }}-${{ matrix.compiler }}-clang-${{ matrix.clang-runtime }}.x-patch-${{ hashFiles(format('patches/llvm/clang{0}-*.patch', matrix.clang-runtime)) || 'none' }}" >> $env:GITHUB_ENV - - name: Restore Cache LLVM/Clang runtime build directory + #FIXME: Shouldn't need 3 distinct restore steps for different situations. + - name: Restore Cache LLVM/Clang runtime build directory (Windows) + if: ${{ runner.os == 'windows' }} uses: actions/cache/restore@v4 - id: cache + id: cachewindows + with: + path: | + llvm-project + ${{ matrix.cling=='On' && 'cling' || '' }} + key: ${{ env.key }} + lookup-only: true + + - name: Restore Cache LLVM/Clang runtime build directory (Unix like systems) + if: ${{ runner.os != 'windows' && matrix.emscripten != 'On' }} + uses: actions/cache/restore@v4 + id: cachenotemscripten with: path: | llvm-project @@ -238,8 +282,38 @@ jobs: key: ${{ env.CLING_HASH }}-${{ runner.os }}-${{ matrix.os }}-${{ matrix.compiler }}-clang-${{ matrix.clang-runtime }}.x-patch-${{ hashFiles(format('patches/llvm/clang{0}-*.patch', matrix.clang-runtime)) || 'none' }} lookup-only: true + - name: Restore Cache LLVM/Clang runtime build directory (Unix like systems emscripten) + if: ${{ runner.os != 'windows' && matrix.emscripten == 'On' }} + uses: actions/cache/restore@v4 + id: cacheemscripten + with: + path: | + llvm-project + ${{ matrix.cling=='On' && 'cling' || '' }} + key: ${{ env.CLING_HASH }}-${{ runner.os }}-${{ matrix.os }}-${{ matrix.compiler }}-clang-${{ matrix.clang-runtime }}.x-emscripten + lookup-only: true + + - name: Setup emsdk + if: ${{ runner.os != 'windows' && steps.cacheemscripten.outputs.cache-hit != 'true' && matrix.emscripten == 'On' }} + run: | + git clone https://github.com/emscripten-core/emsdk.git + cd emsdk + ./emsdk install ${{ matrix.emsdk_ver }} + - name: Setup default Build Type on *nux - if: ${{ runner.os != 'windows' && steps.cache.outputs.cache-hit != 'true' }} + if: ${{ runner.os != 'windows' && steps.cachenotemscripten.outputs.cache-hit != 'true' && matrix.emscripten != 'On' }} + run: | + echo "BUILD_TYPE=Release" >> $GITHUB_ENV + echo "CODE_COVERAGE=0" >> $GITHUB_ENV + os="${{ matrix.os }}" + if [[ "${os}" == "macos"* ]]; then + echo "ncpus=$(sysctl -n hw.ncpu)" >> $GITHUB_ENV + else + echo "ncpus=$(nproc --all)" >> $GITHUB_ENV + fi + + - name: Setup default Build Type on *nux + if: ${{ runner.os != 'windows' && steps.cacheemscripten.outputs.cache-hit != 'true' && matrix.emscripten == 'On' }} run: | echo "BUILD_TYPE=Release" >> $GITHUB_ENV echo "CODE_COVERAGE=0" >> $GITHUB_ENV @@ -251,7 +325,7 @@ jobs: fi - name: Setup default Build Type on Windows - if: ${{ runner.os == 'windows' && steps.cache.outputs.cache-hit != 'true' }} + if: ${{ runner.os == 'windows' && steps.cachewindows.outputs.cache-hit != 'true' }} run: | echo "BUILD_TYPE=Release" >> $env:GITHUB_ENV echo "CODE_COVERAGE=0" >> $env:GITHUB_ENV @@ -259,7 +333,7 @@ jobs: echo "ncpus=$env:ncpus" >> $env:GITHUB_ENV - name: Setup compiler on Linux - if: ${{ runner.os == 'Linux' && steps.cache.outputs.cache-hit != 'true' }} + if: ${{ runner.os == 'Linux' && steps.cachenotemscripten.outputs.cache-hit != 'true' && matrix.emscripten != 'On' }} run: | # https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html vers="${compiler#*-}" @@ -282,8 +356,69 @@ jobs: env: compiler: ${{ matrix.compiler }} + - name: Setup compiler on Linux + if: ${{ runner.os == 'Linux' && steps.cacheemscripten.outputs.cache-hit != 'true' && matrix.emscripten == 'On' }} + run: | + # https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html + vers="${compiler#*-}" + os_codename="`cat /etc/os-release | grep UBUNTU_CODENAME | cut -d = -f 2`" + ##sudo apt update + if [[ "${{ matrix.compiler }}" == *"gcc"* ]]; then + sudo apt install -y gcc-${vers} g++-${vers} lld + echo "CC=gcc-${vers}" >> $GITHUB_ENV + echo "CXX=g++-${vers}" >> $GITHUB_ENV + else + if ! sudo apt install -y clang-${vers}; then + curl https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - + echo "deb https://apt.llvm.org/${os_codename}/ llvm-toolchain-${os_codename}-${vers} main" | sudo tee -a /etc/apt/sources.list + sudo apt-get update + sudo apt-get install -y clang-${vers} + fi + echo "CC=clang-${vers}" >> $GITHUB_ENV + echo "CXX=clang++-${vers}" >> $GITHUB_ENV + fi + env: + compiler: ${{ matrix.compiler }} + + - name: Setup compiler on macOS + if: ${{ runner.os == 'macOS' && steps.cachenotemscripten.outputs.cache-hit != 'true' && matrix.emscripten != 'On' }} + run: | + vers="${compiler#*-}" + if [[ "${{ matrix.compiler }}" == *"gcc"* ]]; then + brew install "gcc@$vers" + echo "CC=gcc-${vers}" >> $GITHUB_ENV + echo "CXX=g++-${vers}" >> $GITHUB_ENV + else + export ARCHITECHURE=$(uname -m) + if [[ "$ARCHITECHURE" == "arm64" ]]; then + cling_on=$(echo "${{ matrix.cling }}" | tr '[:lower:]' '[:upper:]') + if [[ "${cling_on}" == "ON" ]]; then + brew install llvm@15 + brew remove llvm@18 + brew cleanup + #FIXME: Do not believe setting all these environment variables are necessary + # They were set to avoid using Xcodes libc++ and to stop CppInterOp using llvm@18 in tests + echo 'LDFLAGS="-L/opt/homebrew/opt/llvm@15/lib/ -L/opt/homebrew/opt/llvm@15/c++/"' >> $GITHUB_ENV + echo 'CPPFLAGS="-I/opt/homebrew/opt/llvm@15/include"' >> $GITHUB_ENV + echo 'CPATH="/opt/homebrew/include/"' >> $GITHUB_ENV + echo 'LIBRARY_PATH="/opt/homebrew/lib/"' >> $GITHUB_ENV + echo "CC=$(brew --prefix llvm@15)/bin/clang" >> $GITHUB_ENV + echo "CXX=$(brew --prefix llvm@15)/bin/clang++" >> $GITHUB_ENV + else + echo "CC=$(brew --prefix llvm@18)/bin/clang" >> $GITHUB_ENV + echo "CXX=$(brew --prefix llvm@18)/bin/clang++" >> $GITHUB_ENV + fi + else + echo "CC=$(brew --prefix llvm@15)/bin/clang" >> $GITHUB_ENV + echo "CXX=$(brew --prefix llvm@15)/bin/clang++" >> $GITHUB_ENV + fi + fi + echo "SDKROOT=$(xcrun --sdk macosx --show-sdk-path)" >> $GITHUB_ENV + env: + compiler: ${{ matrix.compiler }} + - name: Setup compiler on macOS - if: ${{ runner.os == 'macOS' && steps.cache.outputs.cache-hit != 'true' }} + if: ${{ runner.os == 'macOS' && steps.cacheemscripten.outputs.cache-hit != 'true' && matrix.emscripten == 'On' }} run: | vers="${compiler#*-}" if [[ "${{ matrix.compiler }}" == *"gcc"* ]]; then @@ -322,7 +457,7 @@ jobs: #Section slightly modified version of #https://github.com/vgvassilev/clad/blob/40d8bec11bde47b14a281078183a4f6147abeac5/.github/workflows/ci.yml#L510C1-L534C10 - name: Setup compiler on Windows - if: ${{ runner.os == 'windows' && steps.cache.outputs.cache-hit != 'true' }} + if: ${{ runner.os == 'windows' && steps.cachewindows.outputs.cache-hit != 'true' }} run: | if ( "${{ matrix.compiler }}" -imatch "clang" ) { @@ -345,13 +480,40 @@ jobs: } - name: Install deps on Windows - if: ${{ runner.os == 'windows' && steps.cache.outputs.cache-hit != 'true' }} + if: ${{ runner.os == 'windows' && steps.cachewindows.outputs.cache-hit != 'true' }} run: | choco install findutils $env:PATH="C:\Program Files (x86)\GnuWin32\bin;$env:PATH" - name: Install deps on Linux - if: ${{ runner.os == 'Linux' && steps.cache.outputs.cache-hit != 'true' }} + if: ${{ runner.os == 'Linux' && steps.cachenotemscripten.outputs.cache-hit != 'true' && matrix.emscripten != 'On' }} + run: | + # Install deps + sudo apt-get update + sudo apt-get install valgrind + sudo apt-get autoremove + sudo apt-get clean + + - name: Install deps on MacOS + if: ${{ runner.os == 'macOS' && steps.cachenotemscripten.outputs.cache-hit != 'true' && matrix.emscripten != 'On' }} + run: | + brew update + export ARCHITECHURE=$(uname -m) + if [[ "$ARCHITECHURE" != "x86_64" ]]; then + brew remove unxip + else + brew remove ruby@3.0 + fi + # workaround for https://github.com/actions/setup-python/issues/577 + for pkg in $(brew list | grep '^python@'); do + brew unlink "$pkg" + brew link --overwrite "$pkg" + done + brew upgrade openssl >/dev/null 2>&1 + brew upgrade + + - name: Install deps on Linux + if: ${{ runner.os == 'Linux' && steps.cacheemscripten.outputs.cache-hit != 'true' && matrix.emscripten == 'On' }} run: | # Install deps sudo apt-get update @@ -360,7 +522,7 @@ jobs: sudo apt-get clean - name: Install deps on MacOS - if: ${{ runner.os == 'macOS' && steps.cache.outputs.cache-hit != 'true' }} + if: ${{ runner.os == 'macOS' && steps.cacheemscripten.outputs.cache-hit != 'true' && matrix.emscripten == 'On' }} run: | brew update export ARCHITECHURE=$(uname -m) @@ -378,7 +540,7 @@ jobs: brew upgrade - name: Build LLVM/Cling on Unix systems if the cache is invalid - if: ${{ runner.os != 'windows' && steps.cache.outputs.cache-hit != 'true' }} + if: ${{ runner.os != 'windows' && steps.cachenotemscripten.outputs.cache-hit != 'true' && matrix.emscripten != 'On' }} run: | cling_on=$(echo "${{ matrix.cling }}" | tr '[:lower:]' '[:upper:]') if [[ "${cling_on}" == "ON" ]]; then @@ -433,11 +595,8 @@ jobs: -DLLVM_ENABLE_TERMINFO=OFF \ -DLLVM_ENABLE_LIBXML2=OFF \ ../llvm - if [[ "${llvm_vers}" == "16" ]]||[[ "${llvm_vers}" == "17" ]]||[[ "${llvm_vers}" == "18" ]]; then - cmake --build . --target clang clang-repl --parallel ${{ env.ncpus }} - else - cmake --build . --target clang clang-repl lld --parallel ${{ env.ncpus }} - fi + cmake --build . --target clang clang-repl --parallel ${{ env.ncpus }} + fi cd ../ rm -rf $(find . -maxdepth 1 ! -name "build" ! -name "llvm" ! -name "clang" ! -name ".") @@ -455,8 +614,74 @@ jobs: cd ../.. fi + - name: Build LLVM/Cling on Unix systems if the cache is invalid (emscripten) + if: ${{ runner.os != 'windows' && steps.cacheemscripten.outputs.cache-hit != 'true' && matrix.emscripten == 'On' }} + run: | + ./emsdk/emsdk activate ${{matrix.emsdk_ver}} + source ./emsdk/emsdk_env.sh + cling_on=$(echo "${{ matrix.cling }}" | tr '[:lower:]' '[:upper:]') + if [[ "${cling_on}" == "ON" ]]; then + git clone https://github.com/root-project/cling.git + cd ./cling + git checkout tags/v${{ matrix.cling-version }} + cd .. + git clone --depth=1 -b cling-llvm${{ matrix.clang-runtime }} https://github.com/root-project/llvm-project.git + else # repl + git clone --depth=1 -b release/${{ matrix.clang-runtime }}.x https://github.com/llvm/llvm-project.git + fi + cd llvm-project + # Build + mkdir build + if [[ "${cling_on}" == "ON" ]]; then + cd build + emcmake cmake -DLLVM_EXTERNAL_PROJECTS=cling \ + -DLLVM_EXTERNAL_CLING_SOURCE_DIR=../../cling \ + -DCMAKE_BUILD_TYPE=Release \ + -DLLVM_HOST_TRIPLE=wasm32-unknown-emscripten \ + -DLLVM_ENABLE_ASSERTIONS=ON \ + -DLLVM_TARGETS_TO_BUILD="${{ matrix.llvm_targets_to_build }}" \ + -DLLVM_ENABLE_LIBEDIT=OFF \ + -DLLVM_ENABLE_PROJECTS="${{ matrix.llvm_enable_projects }}" \ + -DLLVM_ENABLE_ZSTD=OFF \ + -DLLVM_ENABLE_LIBXML2=OFF \ + -DCLANG_ENABLE_STATIC_ANALYZER=OFF \ + -DCLANG_ENABLE_ARCMT=OFF \ + -DCLANG_ENABLE_BOOTSTRAP=OFF \ + -DCMAKE_CXX_FLAGS="-Dwait4=__syscall_wait4" \ + ../llvm + emmake make clang -j ${{ env.ncpus }} + emmake make cling -j ${{ env.ncpus }} + # Now build gtest.a and gtest_main for CppInterOp to run its tests. + emmake make gtest_main -j ${{ env.ncpus }} + else + # Apply patches + llvm_vers=$(echo "${{ matrix.clang-runtime }}" | tr '[:lower:]' '[:upper:]') + if [[ "${llvm_vers}" == "19" ]]; then + git apply -v ../patches/llvm/emscripten-clang${{ matrix.clang-runtime }}-*.patch + echo "Apply emscripten-clang${{ matrix.clang-runtime }}-*.patch patches:" + fi + cd build + emcmake cmake -DCMAKE_BUILD_TYPE=Release \ + -DLLVM_HOST_TRIPLE=wasm32-unknown-emscripten \ + -DLLVM_ENABLE_ASSERTIONS=ON \ + -DLLVM_TARGETS_TO_BUILD="${{ matrix.llvm_targets_to_build }}" \ + -DLLVM_ENABLE_LIBEDIT=OFF \ + -DLLVM_ENABLE_PROJECTS="${{ matrix.llvm_enable_projects }}" \ + -DLLVM_ENABLE_ZSTD=OFF \ + -DLLVM_ENABLE_LIBXML2=OFF \ + -DCLANG_ENABLE_STATIC_ANALYZER=OFF \ + -DCLANG_ENABLE_ARCMT=OFF \ + -DCLANG_ENABLE_BOOTSTRAP=OFF \ + -DCMAKE_CXX_FLAGS="-Dwait4=__syscall_wait4" \ + ../llvm + emmake make clang -j ${{ env.ncpus }} + emmake make clang-repl -j ${{ env.ncpus }} + emmake make lld -j ${{ env.ncpus }} + fi + cd ../.. + - name: Build LLVM/Cling on Windows systems if the cache is invalid - if: ${{ runner.os == 'windows' && steps.cache.outputs.cache-hit != 'true' }} + if: ${{ runner.os == 'windows' && steps.cachewindows.outputs.cache-hit != 'true' }} run: | if ( "${{ matrix.cling }}" -imatch "On" ) @@ -549,14 +774,32 @@ jobs: cd ..\.. } - - name: Save Cache LLVM/Clang runtime build directory + - name: Save Cache LLVM/Clang runtime build directory (Windows) + uses: actions/cache/save@v4 + if: ${{ runner.os == 'windows' && steps.cachewindows.outputs.cache-hit != 'true' }} + with: + path: | + llvm-project + ${{ matrix.cling=='On' && 'cling' || '' }} + key: ${{ steps.cachewindows.outputs.cache-primary-key }} + + - name: Save Cache LLVM/Clang runtime build directory (Unix Systems) uses: actions/cache/save@v4 - if: ${{ steps.cache.outputs.cache-hit != 'true' }} + if: ${{ runner.os != 'windows' && steps.cachenotemscripten.outputs.cache-hit != 'true' && matrix.emscripten != 'On' }} with: path: | llvm-project ${{ matrix.cling=='On' && 'cling' || '' }} - key: ${{ steps.cache.outputs.cache-primary-key }} + key: ${{ steps.cachenotemscripten.outputs.cache-primary-key }} + + - name: Save Cache LLVM/Clang runtime build directory (Unix Systems Emscripten) + uses: actions/cache/save@v4 + if: ${{ runner.os != 'windows' && steps.cacheemscripten.outputs.cache-hit != 'true' && matrix.emscripten == 'On' }} + with: + path: | + llvm-project + ${{ matrix.cling=='On' && 'cling' || '' }} + key: ${{ steps.cacheemscripten.outputs.cache-primary-key }} cppinterop_and_cppyy_build: needs: [build_cache] @@ -1293,7 +1536,7 @@ jobs: path: | llvm-project ${{ matrix.cling=='On' && 'cling' || '' }} - key: ${{ env.CLING_HASH }}-${{ runner.os }}-${{ matrix.os }}-${{ matrix.compiler }}-clang-${{ matrix.clang-runtime }}.x-patch-${{ hashFiles(format('patches/llvm/clang{0}-*.patch', matrix.clang-runtime)) || 'none' }} + key: ${{ env.CLING_HASH }}-${{ runner.os }}-${{ matrix.os }}-${{ matrix.compiler }}-clang-${{ matrix.clang-runtime }}.x-emscripten - name: Emscripten build of CppInterOp on Unix systems if: ${{ runner.os != 'windows' }} @@ -1317,12 +1560,11 @@ jobs: else CPLUS_INCLUDE_PATH="${LLVM_DIR}/llvm/include:${LLVM_DIR}/clang/include:${LLVM_BUILD_DIR}/include:${LLVM_BUILD_DIR}/tools/clang/include:$PWD/include" fi - + # Build CppInterOp next to cling and llvm-project. mkdir build cd build export CPPINTEROP_BUILD_DIR=$PWD - if [[ "${cling_on}" == "ON" ]]; then emcmake cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ -DUSE_CLING=ON \ @@ -1340,8 +1582,8 @@ jobs: emcmake cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ -DUSE_CLING=OFF \ -DUSE_REPL=ON \ - -DCMAKE_PREFIX_PATH=$PREFIX \ - -DLLVM_DIR=$LLVM_BUILD_DIR/lib/cmake/llvm \ + -DCMAKE_PREFIX_PATH=$PREFIX \ + -DLLVM_DIR=$LLVM_BUILD_DIR/lib/cmake/llvm \ -DClang_DIR=$LLVM_BUILD_DIR/lib/cmake/clang \ -DBUILD_SHARED_LIBS=OFF \ -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} \ diff --git a/.github/workflows/deploy-pages.yml b/.github/workflows/deploy-pages.yml index ebccaf279..027d8846d 100644 --- a/.github/workflows/deploy-pages.yml +++ b/.github/workflows/deploy-pages.yml @@ -87,7 +87,7 @@ jobs: path: | llvm-project ${{ matrix.cling=='On' && 'cling' || '' }} - key: ${{ env.CLING_HASH }}-${{ runner.os }}-${{ matrix.os }}-${{ matrix.compiler }}-clang-${{ matrix.clang-runtime }}.x-patch-${{ hashFiles(format('patches/llvm/clang{0}-*.patch', matrix.clang-runtime)) || 'none' }} + key: ${{ env.CLING_HASH }}-${{ runner.os }}-${{ matrix.os }}-${{ matrix.compiler }}-clang-${{ matrix.clang-runtime }}.x-emscripten - name: Emscripten build of CppInterOp on Unix systems if: ${{ runner.os != 'windows' }} diff --git a/patches/llvm/emscripten-clang19-1-CrossCompile.patch b/patches/llvm/emscripten-clang19-1-CrossCompile.patch new file mode 100644 index 000000000..4aa6b1539 --- /dev/null +++ b/patches/llvm/emscripten-clang19-1-CrossCompile.patch @@ -0,0 +1,16 @@ +diff --git a/llvm/cmake/modules/CrossCompile.cmake b/llvm/cmake/modules/CrossCompile.cmake +index 6af47b51d4c6..c635e7f5be9e 100644 +--- a/llvm/cmake/modules/CrossCompile.cmake ++++ b/llvm/cmake/modules/CrossCompile.cmake +@@ -70,8 +70,8 @@ function(llvm_create_cross_target project_name target_name toolchain buildtype) + add_custom_command(OUTPUT ${${project_name}_${target_name}_BUILD}/CMakeCache.txt + COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" + -DCMAKE_MAKE_PROGRAM="${CMAKE_MAKE_PROGRAM}" +- -DCMAKE_C_COMPILER_LAUNCHER="${CMAKE_C_COMPILER_LAUNCHER}" +- -DCMAKE_CXX_COMPILER_LAUNCHER="${CMAKE_CXX_COMPILER_LAUNCHER}" ++ -DCMAKE_C_COMPILER="clang" ++ -DCMAKE_CXX_COMPILER="clang++" + ${CROSS_TOOLCHAIN_FLAGS_${target_name}} ${CMAKE_CURRENT_SOURCE_DIR} + ${CROSS_TOOLCHAIN_FLAGS_${project_name}_${target_name}} + -DLLVM_TARGET_IS_CROSSCOMPILE_HOST=TRUE +