diff --git a/.github/workflows/emscripten.yml b/.github/workflows/emscripten.yml index a0144c453..c65587155 100644 --- a/.github/workflows/emscripten.yml +++ b/.github/workflows/emscripten.yml @@ -218,6 +218,12 @@ jobs: fi cd llvm-project # Build + mkdir native_build + cd native_build + cmake -DLLVM_ENABLE_PROJECTS=clang -DLLVM_TARGETS_TO_BUILD=host -DCMAKE_BUILD_TYPE=Release ../llvm/ + cmake --build . --target llvm-tblgen clang-tblgen --parallel $(nproc --all) + export NATIVE_DIR=$PWD/bin/ + cd .. mkdir build if [[ "${cling_on}" == "ON" ]]; then cd build @@ -243,6 +249,7 @@ jobs: -DLLVM_BUILD_TOOLS=OFF \ -DLLVM_ENABLE_LIBPFM=OFF \ -DCLANG_BUILD_TOOLS=OFF \ + -DLLVM_NATIVE_TOOL_DIR=$NATIVE_DIR \ ../llvm emmake ninja clang cling lld gtest_main else @@ -273,10 +280,10 @@ jobs: -DLLVM_ENABLE_LIBPFM=OFF \ -DCLANG_BUILD_TOOLS=OFF \ -G Ninja \ + -DLLVM_NATIVE_TOOL_DIR=$NATIVE_DIR \ ../llvm emmake ninja libclang clangInterpreter clangStaticAnalyzerCore lldWasm fi - rm -rf ./NATIVE/ cd ../ rm -rf $(find . -maxdepth 1 ! -name "build" ! -name "llvm" ! -name "clang" ! -name ".") if [[ "${cling_on}" == "ON" ]]; then diff --git a/Emscripten-build-instructions.md b/Emscripten-build-instructions.md index 3786b924b..3449e05b5 100644 --- a/Emscripten-build-instructions.md +++ b/Emscripten-build-instructions.md @@ -71,6 +71,12 @@ git apply -v emscripten-clang20-2-shift-temporary-files-to-tmp-dir.patch We are now in a position to build an emscripten build of llvm by executing the following on Linux and osx ```bash +mkdir native_build +cd native_build +cmake -DLLVM_ENABLE_PROJECTS=clang -DLLVM_TARGETS_TO_BUILD=host -DCMAKE_BUILD_TYPE=Release ../llvm/ +cmake --build . --target llvm-tblgen clang-tblgen --parallel $(nproc --all) +export NATIVE_DIR=$PWD/bin/ +cd .. mkdir build cd build emcmake cmake -DCMAKE_BUILD_TYPE=Release \ @@ -92,6 +98,7 @@ emcmake cmake -DCMAKE_BUILD_TYPE=Release \ -DLLVM_BUILD_TOOLS=OFF \ -DLLVM_ENABLE_LIBPFM=OFF \ -DCLANG_BUILD_TOOLS=OFF \ + -DLLVM_NATIVE_TOOL_DIR=$NATIVE_DIR \ ../llvm emmake make libclang -j $(nproc --all) emmake make clangInterpreter clangStaticAnalyzerCore -j $(nproc --all) diff --git a/docs/Emscripten-build-instructions.rst b/docs/Emscripten-build-instructions.rst index 7b07a3b49..71210f781 100644 --- a/docs/Emscripten-build-instructions.rst +++ b/docs/Emscripten-build-instructions.rst @@ -91,6 +91,12 @@ and osx .. code:: bash + mkdir native_build + cd native_build + cmake -DLLVM_ENABLE_PROJECTS=clang -DLLVM_TARGETS_TO_BUILD=host -DCMAKE_BUILD_TYPE=Release ../llvm/ + cmake --build . --target llvm-tblgen clang-tblgen --parallel $(nproc --all) + export NATIVE_DIR=$PWD/bin/ + cd .. mkdir build cd build emcmake cmake -DCMAKE_BUILD_TYPE=Release \ @@ -112,6 +118,7 @@ and osx -DLLVM_BUILD_TOOLS=OFF \ -DLLVM_ENABLE_LIBPFM=OFF \ -DCLANG_BUILD_TOOLS=OFF \ + -DLLVM_NATIVE_TOOL_DIR=$NATIVE_DIR \ ../llvm emmake make libclang -j $(nproc --all) emmake make clangInterpreter clangStaticAnalyzerCore -j $(nproc --all) diff --git a/patches/llvm/emscripten-clang19-1-CrossCompile.patch b/patches/llvm/emscripten-clang19-1-CrossCompile.patch deleted file mode 100644 index 4aa6b1539..000000000 --- a/patches/llvm/emscripten-clang19-1-CrossCompile.patch +++ /dev/null @@ -1,16 +0,0 @@ -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 - diff --git a/patches/llvm/emscripten-clang20-1-CrossCompile.patch b/patches/llvm/emscripten-clang20-1-CrossCompile.patch deleted file mode 100644 index 4aa6b1539..000000000 --- a/patches/llvm/emscripten-clang20-1-CrossCompile.patch +++ /dev/null @@ -1,16 +0,0 @@ -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 -