4949 llvm_enable_projects : " clang;lld"
5050 llvm_targets_to_build : " WebAssembly"
5151 emsdk_ver : " 4.0.9"
52+ - name : ubu24-arm-clang-repl-21-emscripten
53+ os : ubuntu-24.04-arm
54+ clang-runtime : ' 21'
55+ cling : Off
56+ llvm_enable_projects : " clang;lld"
57+ llvm_targets_to_build : " WebAssembly"
58+ emsdk_ver : " 4.0.9"
59+ - name : osx26-arm-clang-repl-21-emscripten
60+ os : macos-26
61+ clang-runtime : ' 21'
62+ cling : Off
63+ llvm_enable_projects : " clang;lld"
64+ llvm_targets_to_build : " WebAssembly"
65+ emsdk_ver : " 4.0.9"
66+ - name : ubu24-x86-clang-repl-21-emscripten
67+ os : ubuntu-24.04
68+ clang-runtime : ' 21'
69+ cling : Off
70+ llvm_enable_projects : " clang;lld"
71+ llvm_targets_to_build : " WebAssembly"
72+ emsdk_ver : " 4.0.9"
73+ - name : win2025-x86-clang-repl-21-emscripten
74+ os : windows-2025
75+ clang-runtime : ' 21'
76+ cling : Off
77+ llvm_enable_projects : " clang;lld"
78+ llvm_targets_to_build : " WebAssembly"
79+ emsdk_ver : " 4.0.9"
5280
5381 steps :
5482 - uses : actions/checkout@v6
@@ -167,11 +195,11 @@ jobs:
167195 -DCMAKE_CXX_FLAGS_RELEASE="-Oz -g0 -DNDEBUG" \
168196 -DLLVM_ENABLE_LTO=Full \
169197 ../llvm
170- emmake ninja clang cling lld gtest_main
198+ EMCC_CFLAGS="-sSUPPORT_LONGJMP=wasm -fwasm-exceptions" emmake ninja clang cling lld gtest_main
171199 else
172200 # Apply patches
173201 llvm_vers=$(echo "${{ matrix.clang-runtime }}" | tr '[:lower:]' '[:upper:]')
174- if [[ "${llvm_vers}" == "19" || "${llvm_vers}" == "20" ]]; then
202+ if [[ "${llvm_vers}" == "19" || "${llvm_vers}" == "20" || "${llvm_vers}" == "21" ]]; then
175203 git apply -v ../patches/llvm/emscripten-clang${{ matrix.clang-runtime }}-*.patch
176204 echo "Apply emscripten-clang${{ matrix.clang-runtime }}-*.patch patches:"
177205 fi
@@ -200,7 +228,7 @@ jobs:
200228 -DCMAKE_CXX_FLAGS_RELEASE="-Oz -g0 -DNDEBUG" \
201229 -DLLVM_ENABLE_LTO=Full \
202230 ../llvm
203- emmake ninja libclang clangInterpreter clangStaticAnalyzerCore lldWasm
231+ EMCC_CFLAGS="-sSUPPORT_LONGJMP=wasm -fwasm-exceptions" emmake ninja libclang clangInterpreter clangStaticAnalyzerCore
204232 fi
205233 cd ../
206234 rm -rf $(find . -maxdepth 1 ! -name "build" ! -name "llvm" ! -name "clang" ! -name ".")
@@ -280,7 +308,9 @@ jobs:
280308 -DLLVM_ENABLE_LTO=Full `
281309 -DLLVM_NATIVE_TOOL_DIR="$env:NATIVE_DIR" `
282310 ..\llvm
311+ $env:EMCC_CFLAGS="-sSUPPORT_LONGJMP=wasm -fwasm-exceptions"
283312 emmake make clang cling lld gtest_main
313+ $env:EMCC_CFLAGS=""
284314 }
285315 else
286316 {
@@ -297,6 +327,12 @@ jobs:
297327 git apply -v emscripten-clang20-2-shift-temporary-files-to-tmp-dir.patch
298328 git apply -v emscripten-clang20-3-enable_exception_handling.patch
299329 }
330+ elseif ( "${{ matrix.clang-runtime }}" -imatch "21" )
331+ {
332+ git apply -v emscripten-clang21-1-shift-temporary-files-to-tmp-dir.patch
333+ git apply -v emscripten-clang21-2-enable_exception_handling.patch
334+ git apply -v emscripten-clang21-3-webassembly_target_machine_reordering.patch
335+ }
300336 cd build
301337 echo "Apply clang${{ matrix.clang-runtime }}-*.patch patches:"
302338 emcmake cmake -DCMAKE_BUILD_TYPE=Release `
@@ -323,7 +359,9 @@ jobs:
323359 -G Ninja `
324360 -DLLVM_NATIVE_TOOL_DIR="$env:NATIVE_DIR" `
325361 ..\llvm
326- emmake ninja libclang clangInterpreter clangStaticAnalyzerCore lldWasm
362+ $env:EMCC_CFLAGS="-sSUPPORT_LONGJMP=wasm -fwasm-exceptions"
363+ emmake ninja libclang clangInterpreter clangStaticAnalyzerCore
364+ $env:EMCC_CFLAGS=""
327365 }
328366 cd ..\
329367 rm -r -force $(find.exe . -maxdepth 1 ! -name "build" ! -name "llvm" ! -name "clang" ! -name ".")
@@ -385,6 +423,30 @@ jobs:
385423 cling : Off
386424 micromamba_shell_init : powershell
387425 emsdk_ver : " 4.0.9"
426+ - name : ubu24-x86-clang-repl-21-emscripten_wasm
427+ os : ubuntu-24.04
428+ clang-runtime : ' 21'
429+ cling : Off
430+ micromamba_shell_init : bash
431+ emsdk_ver : " 4.0.9"
432+ - name : osx26-arm-clang-repl-21-emscripten_wasm
433+ os : macos-26
434+ clang-runtime : ' 21'
435+ cling : Off
436+ micromamba_shell_init : bash
437+ emsdk_ver : " 4.0.9"
438+ - name : ubu24-arm-clang-repl-21-emscripten_wasm
439+ os : ubuntu-24.04-arm
440+ clang-runtime : ' 21'
441+ cling : Off
442+ micromamba_shell_init : bash
443+ emsdk_ver : " 4.0.9"
444+ - name : win2025-x86-clang-repl-21-emscripten
445+ os : windows-2025
446+ clang-runtime : ' 21'
447+ cling : Off
448+ micromamba_shell_init : powershell
449+ emsdk_ver : " 4.0.9"
388450
389451 steps :
390452 - uses : actions/checkout@v6
@@ -429,7 +491,7 @@ jobs:
429491 set -e
430492 ./emsdk/emsdk activate ${{matrix.emsdk_ver}}
431493 source ./emsdk/emsdk_env.sh
432- micromamba create -f environment-wasm.yml --platform=emscripten-wasm32
494+ micromamba create -f environment-wasm.yml --platform=emscripten-wasm32 -c https://prefix.dev/emscripten-forge-4x -c https://prefix.dev/conda-forge
433495 export SYSROOT_PATH=$PWD/emsdk/upstream/emscripten/cache/sysroot
434496 export PREFIX=$MAMBA_ROOT_PREFIX/envs/CppInterOp-wasm
435497 export CMAKE_PREFIX_PATH=$PREFIX
@@ -483,11 +545,11 @@ jobs:
483545 os="${{ matrix.os }}"
484546 if [[ "${os}" != macos* ]] ; then
485547 actual_size=$(stat -c%s "./lib/libclangCppInterOp.so")
486- max_size=$((40 * 1024 * 1024))
487- if [[ "$actual_size" -gt "$max_size" ]]; then
488- echo "Error: libclangCppInterOp.so is larger than 40 MB."
548+ max_size=$((50 * 1024 * 1024))
549+ if [[ "$actual_size" -gt "$max_size" ]]; then
550+ echo "Error: libclangCppInterOp.so is larger than 50 MB."
489551 exit 1
490- fi
552+ fi
491553 fi
492554 cd ./unittests/CppInterOp/
493555 # Fresh install browsers, and run Emscripten tests in them
@@ -727,7 +789,7 @@ jobs:
727789 if : ${{ runner.os == 'windows' }}
728790 shell : powershell
729791 run : |
730- micromamba create -f environment-wasm.yml --platform=emscripten-wasm32
792+ micromamba create -f environment-wasm.yml --platform=emscripten-wasm32 -c https://prefix.dev/emscripten-forge-4x -c https://prefix.dev/conda-forge
731793 .\emsdk\emsdk activate ${{matrix.emsdk_ver}}
732794 .\emsdk\emsdk_env.ps1
733795 $env:PWD_DIR= $PWD.Path
@@ -970,7 +1032,7 @@ jobs:
9701032 -DXEUS_CPP_RESOURCE_DIR=${{ env.LLVM_BUILD_DIR }}/lib/clang/${{ matrix.clang-runtime }} \
9711033 -DSYSROOT_PATH=${{ env.SYSROOT_PATH }} \
9721034 ..
973- emmake make -j ${{ env.ncpus }} install
1035+ EMCC_CFLAGS="-sSUPPORT_LONGJMP=wasm -fwasm-exceptions" emmake make -j ${{ env.ncpus }} install
9741036
9751037 - name : Build xeus-cpp on Windows systems
9761038 if : ${{ runner.os == 'windows' }}
@@ -994,7 +1056,9 @@ jobs:
9941056 -DXEUS_CPP_RESOURCE_DIR=${{ env.LLVM_BUILD_DIR }}\lib\clang\${{ matrix.clang-runtime }} `
9951057 -DSYSROOT_PATH=${{ env.SYSROOT_PATH }} `
9961058 ..
1059+ $env:EMCC_CFLAGS="-sSUPPORT_LONGJMP=wasm -fwasm-exceptions"
9971060 emmake make -j ${{ env.ncpus }} install
1061+ $env:EMCC_CFLAGS=""
9981062
9991063 - name : Test xeus-cpp C++ Emscripten on Unix Systems
10001064 if : ${{ runner.os != 'windows' }}
0 commit comments