diff --git a/.github/workflows/emscripten.yml b/.github/workflows/emscripten.yml index 40b4ab9bd..6872309a2 100644 --- a/.github/workflows/emscripten.yml +++ b/.github/workflows/emscripten.yml @@ -596,127 +596,127 @@ jobs: echo "CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH" >> $GITHUB_ENV echo "PREFIX=$PREFIX" >> $GITHUB_ENV - - name: Emscripten build of CppInterOp on Unix systems (static library) - if: runner.os != 'Windows' && !(startsWith(matrix.os, 'ubuntu') && matrix.clang-runtime == '19' && endsWith(matrix.os, 'arm') ) - shell: bash -l {0} - run: | - # FIXME: Static library builds, but tests fail to build on Github runner for Ubuntu arm llvm 19 case - # Disabled build for now - set -e - ./emsdk/emsdk activate ${{matrix.emsdk_ver}} - source ./emsdk/emsdk_env.sh - export SYSROOT_PATH=$PWD/emsdk/upstream/emscripten/cache/sysroot - export PREFIX=$MAMBA_ROOT_PREFIX/envs/CppInterOp-wasm - export CMAKE_PREFIX_PATH=$PREFIX - export CMAKE_SYSTEM_PREFIX_PATH=$PREFIX + # - name: Emscripten build of CppInterOp on Unix systems (static library) + # if: runner.os != 'Windows' && !(startsWith(matrix.os, 'ubuntu') && matrix.clang-runtime == '19' && endsWith(matrix.os, 'arm') ) + # shell: bash -l {0} + # run: | + # # FIXME: Static library builds, but tests fail to build on Github runner for Ubuntu arm llvm 19 case + # # Disabled build for now + # set -e + # ./emsdk/emsdk activate ${{matrix.emsdk_ver}} + # source ./emsdk/emsdk_env.sh + # export SYSROOT_PATH=$PWD/emsdk/upstream/emscripten/cache/sysroot + # export PREFIX=$MAMBA_ROOT_PREFIX/envs/CppInterOp-wasm + # export CMAKE_PREFIX_PATH=$PREFIX + # export CMAKE_SYSTEM_PREFIX_PATH=$PREFIX - LLVM_DIR="$(pwd)/llvm-project" - LLVM_BUILD_DIR="$(pwd)/llvm-project/build" - cling_on=$(echo "${{ matrix.cling }}" | tr '[:lower:]' '[:upper:]') - if [[ "${cling_on}" == "ON" ]]; then - CLING_DIR="$(pwd)/cling" - CLING_BUILD_DIR="$(pwd)/cling/build" - CPLUS_INCLUDE_PATH="${CLING_DIR}/tools/cling/include:${CLING_BUILD_DIR}/include:${LLVM_DIR}/llvm/include:${LLVM_DIR}/clang/include:${LLVM_BUILD_DIR}/include:${LLVM_BUILD_DIR}/tools/clang/include:$PWD/include" - 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 + # LLVM_DIR="$(pwd)/llvm-project" + # LLVM_BUILD_DIR="$(pwd)/llvm-project/build" + # cling_on=$(echo "${{ matrix.cling }}" | tr '[:lower:]' '[:upper:]') + # if [[ "${cling_on}" == "ON" ]]; then + # CLING_DIR="$(pwd)/cling" + # CLING_BUILD_DIR="$(pwd)/cling/build" + # CPLUS_INCLUDE_PATH="${CLING_DIR}/tools/cling/include:${CLING_BUILD_DIR}/include:${LLVM_DIR}/llvm/include:${LLVM_DIR}/clang/include:${LLVM_BUILD_DIR}/include:${LLVM_BUILD_DIR}/tools/clang/include:$PWD/include" + # 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_static - cd build_static - if [[ "${cling_on}" == "ON" ]]; then - emcmake cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ - -DCPPINTEROP_USE_CLING=ON \ - -DCPPINTEROP_USE_REPL=OFF \ - -DCMAKE_PREFIX_PATH=$PREFIX \ - -DCling_DIR=$LLVM_BUILD_DIR/tools/cling \ - -DLLVM_DIR=$LLVM_BUILD_DIR/lib/cmake/llvm \ - -DLLD_DIR=$LLVM_BUILD_DIR/lib/cmake/lld \ - -DClang_DIR=$LLVM_BUILD_DIR/lib/cmake/clang \ - -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} \ - -DCMAKE_INSTALL_PREFIX=$PREFIX \ - -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ON \ - -DLLVM_ENABLE_WERROR=On \ - -DSYSROOT_PATH=$SYSROOT_PATH \ - ../ - else - emcmake cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ - -DCMAKE_PREFIX_PATH=$PREFIX \ - -DLLVM_DIR=$LLVM_BUILD_DIR/lib/cmake/llvm \ - -DLLD_DIR=$LLVM_BUILD_DIR/lib/cmake/lld \ - -DClang_DIR=$LLVM_BUILD_DIR/lib/cmake/clang \ - -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} \ - -DCMAKE_INSTALL_PREFIX=$PREFIX \ - -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ON \ - -DLLVM_ENABLE_WERROR=On \ - -DSYSROOT_PATH=$SYSROOT_PATH \ - ../ - fi - os="${{ matrix.os }}" - if [[ "${os}" != macos* ]] ; then - EMCC_CORES=1 emmake make -j 1 check-cppinterop - else - emmake make -j ${{ env.ncpus }} check-cppinterop - fi - cd ./unittests/CppInterOp/ - # Explaination of options for emrun - # --browser (name of browser on path) - # --kill_exit makes it so that when emrun finishes, - # that the headless browser we create is killed along with it - # --timeout 60 is such that emrun is killed after 60 seconds if - # still running. emrun should have finished long before then, - # so if it is still running, something went wrong (such as a test - # which crashed the html file). This will cause the ci to fail, - # as a non 0 value of will be returned. - # In the case of Chrome we have the extra --no-sandbox flag, as on - # Ubuntu Chrome will refuse to run otherwise, as it expects to have - # been installed with admin privileges. This flag allows it to run - # in userspace. - os="${{ matrix.os }}" - if [[ "${os}" == "macos"* ]]; then - # Run tests in browsers - echo "Running CppInterOpTests in Firefox" - emrun --browser="firefox" --kill_exit --timeout 60 --browser-args="--headless" CppInterOpTests.html - echo "Running DynamicLibraryManagerTests in Firefox" - emrun --browser="firefox" --kill_exit --timeout 60 --browser-args="--headless" DynamicLibraryManagerTests.html - echo "Running CppInterOpTests in Google Chrome" - emrun --browser="Google Chrome" --kill_exit --timeout 60 --browser-args="--headless --no-sandbox" CppInterOpTests.html - echo "Running DynamicLibraryManagerTests in Google Chrome" - emrun --browser="Google Chrome" --kill_exit --timeout 60 --browser-args="--headless --no-sandbox" DynamicLibraryManagerTests.html - echo "Running CppInterOpTests in Safari" - emrun --no_browser --kill_exit --timeout 60 --browser-args="--headless --no-sandbox" CppInterOpTests.html & - python ../../../scripts/browser_tests_safari.py CppInterOpTests.html - echo "Running DynamicLibraryManagerTests in Safari" - emrun --no_browser --kill_exit --timeout 60 --browser-args="--headless --no-sandbox" DynamicLibraryManagerTests.html & - python ../../../scripts/browser_tests_safari.py DynamicLibraryManagerTests.html - else - export ARCHITECHURE=$(uname -m) - if [[ "$ARCHITECHURE" != "aarch64" ]]; then - # Run tests in browsers - echo "Running CppInterOpTests in Firefox" - emrun --browser="firefox" --kill_exit --timeout 60 --browser-args="--headless" CppInterOpTests.html - echo "Running DynamicLibraryManagerTests in Firefox" - emrun --browser="firefox" --kill_exit --timeout 60 --browser-args="--headless" DynamicLibraryManagerTests.html - echo "Running CppInterOpTests in Google Chrome" - emrun --browser="google-chrome" --kill_exit --timeout 60 --browser-args="--headless --no-sandbox" CppInterOpTests.html - echo "Running DynamicLibraryManagerTests in Google Chrome" - emrun --browser="google-chrome" --kill_exit --timeout 60 --browser-args="--headless --no-sandbox" DynamicLibraryManagerTests.html - else - # Run tests in browsers - echo "Running CppInterOpTests in Firefox" - emrun --browser="firefox" --kill_exit --timeout 60 --browser-args="--headless" CppInterOpTests.html - echo "Running DynamicLibraryManagerTests in Firefox" - emrun --browser="firefox" --kill_exit --timeout 60 --browser-args="--headless" DynamicLibraryManagerTests.html - fi - fi - cd ../../.. + # # Build CppInterOp next to cling and llvm-project. + # mkdir build_static + # cd build_static + # if [[ "${cling_on}" == "ON" ]]; then + # emcmake cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ + # -DCPPINTEROP_USE_CLING=ON \ + # -DCPPINTEROP_USE_REPL=OFF \ + # -DCMAKE_PREFIX_PATH=$PREFIX \ + # -DCling_DIR=$LLVM_BUILD_DIR/tools/cling \ + # -DLLVM_DIR=$LLVM_BUILD_DIR/lib/cmake/llvm \ + # -DLLD_DIR=$LLVM_BUILD_DIR/lib/cmake/lld \ + # -DClang_DIR=$LLVM_BUILD_DIR/lib/cmake/clang \ + # -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} \ + # -DCMAKE_INSTALL_PREFIX=$PREFIX \ + # -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ON \ + # -DLLVM_ENABLE_WERROR=On \ + # -DSYSROOT_PATH=$SYSROOT_PATH \ + # ../ + # else + # emcmake cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ + # -DCMAKE_PREFIX_PATH=$PREFIX \ + # -DLLVM_DIR=$LLVM_BUILD_DIR/lib/cmake/llvm \ + # -DLLD_DIR=$LLVM_BUILD_DIR/lib/cmake/lld \ + # -DClang_DIR=$LLVM_BUILD_DIR/lib/cmake/clang \ + # -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} \ + # -DCMAKE_INSTALL_PREFIX=$PREFIX \ + # -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ON \ + # -DLLVM_ENABLE_WERROR=On \ + # -DSYSROOT_PATH=$SYSROOT_PATH \ + # ../ + # fi + # os="${{ matrix.os }}" + # if [[ "${os}" != macos* ]] ; then + # EMCC_CORES=1 emmake make -j 1 check-cppinterop + # else + # emmake make -j ${{ env.ncpus }} check-cppinterop + # fi + # cd ./unittests/CppInterOp/ + # # Explaination of options for emrun + # # --browser (name of browser on path) + # # --kill_exit makes it so that when emrun finishes, + # # that the headless browser we create is killed along with it + # # --timeout 60 is such that emrun is killed after 60 seconds if + # # still running. emrun should have finished long before then, + # # so if it is still running, something went wrong (such as a test + # # which crashed the html file). This will cause the ci to fail, + # # as a non 0 value of will be returned. + # # In the case of Chrome we have the extra --no-sandbox flag, as on + # # Ubuntu Chrome will refuse to run otherwise, as it expects to have + # # been installed with admin privileges. This flag allows it to run + # # in userspace. + # os="${{ matrix.os }}" + # if [[ "${os}" == "macos"* ]]; then + # # Run tests in browsers + # echo "Running CppInterOpTests in Firefox" + # emrun --browser="firefox" --kill_exit --timeout 60 --browser-args="--headless" CppInterOpTests.html + # echo "Running DynamicLibraryManagerTests in Firefox" + # emrun --browser="firefox" --kill_exit --timeout 60 --browser-args="--headless" DynamicLibraryManagerTests.html + # echo "Running CppInterOpTests in Google Chrome" + # emrun --browser="Google Chrome" --kill_exit --timeout 60 --browser-args="--headless --no-sandbox" CppInterOpTests.html + # echo "Running DynamicLibraryManagerTests in Google Chrome" + # emrun --browser="Google Chrome" --kill_exit --timeout 60 --browser-args="--headless --no-sandbox" DynamicLibraryManagerTests.html + # echo "Running CppInterOpTests in Safari" + # emrun --no_browser --kill_exit --timeout 60 --browser-args="--headless --no-sandbox" CppInterOpTests.html & + # python ../../../scripts/browser_tests_safari.py CppInterOpTests.html + # echo "Running DynamicLibraryManagerTests in Safari" + # emrun --no_browser --kill_exit --timeout 60 --browser-args="--headless --no-sandbox" DynamicLibraryManagerTests.html & + # python ../../../scripts/browser_tests_safari.py DynamicLibraryManagerTests.html + # else + # export ARCHITECHURE=$(uname -m) + # if [[ "$ARCHITECHURE" != "aarch64" ]]; then + # # Run tests in browsers + # echo "Running CppInterOpTests in Firefox" + # emrun --browser="firefox" --kill_exit --timeout 60 --browser-args="--headless" CppInterOpTests.html + # echo "Running DynamicLibraryManagerTests in Firefox" + # emrun --browser="firefox" --kill_exit --timeout 60 --browser-args="--headless" DynamicLibraryManagerTests.html + # echo "Running CppInterOpTests in Google Chrome" + # emrun --browser="google-chrome" --kill_exit --timeout 60 --browser-args="--headless --no-sandbox" CppInterOpTests.html + # echo "Running DynamicLibraryManagerTests in Google Chrome" + # emrun --browser="google-chrome" --kill_exit --timeout 60 --browser-args="--headless --no-sandbox" DynamicLibraryManagerTests.html + # else + # # Run tests in browsers + # echo "Running CppInterOpTests in Firefox" + # emrun --browser="firefox" --kill_exit --timeout 60 --browser-args="--headless" CppInterOpTests.html + # echo "Running DynamicLibraryManagerTests in Firefox" + # emrun --browser="firefox" --kill_exit --timeout 60 --browser-args="--headless" DynamicLibraryManagerTests.html + # fi + # fi + # cd ../../.. - echo "SYSROOT_PATH=$SYSROOT_PATH" >> $GITHUB_ENV - echo "CB_PYTHON_DIR=$CB_PYTHON_DIR" >> $GITHUB_ENV - echo "CPPINTEROP_DIR=$CPPINTEROP_DIR" >> $GITHUB_ENV - echo "LLVM_BUILD_DIR=$LLVM_BUILD_DIR" >> $GITHUB_ENV - echo "CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH" >> $GITHUB_ENV - echo "PREFIX=$PREFIX" >> $GITHUB_ENV + # echo "SYSROOT_PATH=$SYSROOT_PATH" >> $GITHUB_ENV + # echo "CB_PYTHON_DIR=$CB_PYTHON_DIR" >> $GITHUB_ENV + # echo "CPPINTEROP_DIR=$CPPINTEROP_DIR" >> $GITHUB_ENV + # echo "LLVM_BUILD_DIR=$LLVM_BUILD_DIR" >> $GITHUB_ENV + # echo "CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH" >> $GITHUB_ENV + # echo "PREFIX=$PREFIX" >> $GITHUB_ENV - name: micromamba shell hook if: ${{ runner.os == 'windows' }} @@ -848,106 +848,106 @@ jobs: echo "CPLUS_INCLUDE_PATH=$env:CPLUS_INCLUDE_PATH" >> $GITHUB_ENV echo "PREFIX=$env:PREFIX" >> $GITHUB_ENV - - name: Build and Test/Install CppInterOp on Windows systems (static library) - if: ${{ runner.os == 'windows' }} - shell: powershell - run: | - .\emsdk\emsdk activate ${{matrix.emsdk_ver}} - .\emsdk\emsdk_env.ps1 - function Error-OnFailure { - param ( - [Parameter(Mandatory)] - [ScriptBlock]$Command - ) + # - name: Build and Test/Install CppInterOp on Windows systems (static library) + # if: ${{ runner.os == 'windows' }} + # shell: powershell + # run: | + # .\emsdk\emsdk activate ${{matrix.emsdk_ver}} + # .\emsdk\emsdk_env.ps1 + # function Error-OnFailure { + # param ( + # [Parameter(Mandatory)] + # [ScriptBlock]$Command + # ) - & $Command + # & $Command - if ($LASTEXITCODE -ne 0) { - exit $LASTEXITCODE - } - } - $env:PWD_DIR= $PWD.Path - $env:SYSROOT_PATH="$env:EMSDK/upstream/emscripten/cache/sysroot" - $env:PREFIX="%CONDA_PREFIX%/envs/CppInterOp-wasm" - $env:CMAKE_PREFIX_PATH=$env:PREFIX - $env:CMAKE_SYSTEM_PREFIX_PATH=$env:PREFIX + # if ($LASTEXITCODE -ne 0) { + # exit $LASTEXITCODE + # } + # } + # $env:PWD_DIR= $PWD.Path + # $env:SYSROOT_PATH="$env:EMSDK/upstream/emscripten/cache/sysroot" + # $env:PREFIX="%CONDA_PREFIX%/envs/CppInterOp-wasm" + # $env:CMAKE_PREFIX_PATH=$env:PREFIX + # $env:CMAKE_SYSTEM_PREFIX_PATH=$env:PREFIX - $env:LLVM_DIR="$env:PWD_DIR\llvm-project" - echo "LLVM_DIR=$env:LLVM_DIR" - echo "LLVM_DIR=$env:LLVM_DIR" >> $env:GITHUB_ENV + # $env:LLVM_DIR="$env:PWD_DIR\llvm-project" + # echo "LLVM_DIR=$env:LLVM_DIR" + # echo "LLVM_DIR=$env:LLVM_DIR" >> $env:GITHUB_ENV - $env:LLVM_BUILD_DIR="$env:PWD_DIR\llvm-project\build" - echo "LLVM_BUILD_DIR=$env:LLVM_BUILD_DIR" - echo "LLVM_BUILD_DIR=$env:LLVM_BUILD_DIR" >> $env:GITHUB_ENV + # $env:LLVM_BUILD_DIR="$env:PWD_DIR\llvm-project\build" + # echo "LLVM_BUILD_DIR=$env:LLVM_BUILD_DIR" + # echo "LLVM_BUILD_DIR=$env:LLVM_BUILD_DIR" >> $env:GITHUB_ENV - if ( "${{ matrix.cling }}" -imatch "On" ) - { - $env:CLING_DIR="$env:PWD_DIR\cling" - echo "CLING_DIR=$env:CLING_DIR" - echo "CLING_DIR=$env:CLING_DIR" >> $env:GITHUB_ENV + # if ( "${{ matrix.cling }}" -imatch "On" ) + # { + # $env:CLING_DIR="$env:PWD_DIR\cling" + # echo "CLING_DIR=$env:CLING_DIR" + # echo "CLING_DIR=$env:CLING_DIR" >> $env:GITHUB_ENV - $env:CLING_BUILD_DIR="$env:PWD_DIR\cling\build" - echo "CLING_BUILD_DIR=$env:CLING_BUILD_DIR" - echo "CLING_BUILD_DIR=$env:CLING_BUILD_DIR" >> $env:GITHUB_ENV + # $env:CLING_BUILD_DIR="$env:PWD_DIR\cling\build" + # echo "CLING_BUILD_DIR=$env:CLING_BUILD_DIR" + # echo "CLING_BUILD_DIR=$env:CLING_BUILD_DIR" >> $env:GITHUB_ENV - $env:CPLUS_INCLUDE_PATH="$env:CLING_DIR\tools\cling\include;$env:CLING_BUILD_DIR\include;$env:LLVM_DIR\llvm\include;$env:LLVM_DIR\clang\include;$env:LLVM_BUILD_DIR\include;$env:LLVM_BUILD_DIR\tools\clang\include;$env:PWD_DIR\include;" - echo "CPLUS_INCLUDE_PATH=$env:CPLUS_INCLUDE_PATH" - echo "CPLUS_INCLUDE_PATH=$env:CPLUS_INCLUDE_PATH" >> $env:GITHUB_ENV - } - else - { - $env:CPLUS_INCLUDE_PATH="$env:LLVM_DIR\llvm\include;$env:LLVM_DIR\clang\include;$env:LLVM_BUILD_DIR\include;$env:LLVM_BUILD_DIR\tools\clang\include;$env:PWD_DIR\include;" - echo "CPLUS_INCLUDE_PATH=$env:CPLUS_INCLUDE_PATH" - echo "CPLUS_INCLUDE_PATH=$env:CPLUS_INCLUDE_PATH" >> $env:GITHUB_ENV - } + # $env:CPLUS_INCLUDE_PATH="$env:CLING_DIR\tools\cling\include;$env:CLING_BUILD_DIR\include;$env:LLVM_DIR\llvm\include;$env:LLVM_DIR\clang\include;$env:LLVM_BUILD_DIR\include;$env:LLVM_BUILD_DIR\tools\clang\include;$env:PWD_DIR\include;" + # echo "CPLUS_INCLUDE_PATH=$env:CPLUS_INCLUDE_PATH" + # echo "CPLUS_INCLUDE_PATH=$env:CPLUS_INCLUDE_PATH" >> $env:GITHUB_ENV + # } + # else + # { + # $env:CPLUS_INCLUDE_PATH="$env:LLVM_DIR\llvm\include;$env:LLVM_DIR\clang\include;$env:LLVM_BUILD_DIR\include;$env:LLVM_BUILD_DIR\tools\clang\include;$env:PWD_DIR\include;" + # echo "CPLUS_INCLUDE_PATH=$env:CPLUS_INCLUDE_PATH" + # echo "CPLUS_INCLUDE_PATH=$env:CPLUS_INCLUDE_PATH" >> $env:GITHUB_ENV + # } - # Build CppInterOp next to cling and llvm-project. - mkdir build_static - cd build_static - $env:CPPINTEROP_BUILD_DIR="$env:PWD_DIR" - echo "CPPINTEROP_BUILD_DIR=$env:CPPINTEROP_BUILD_DIR" - echo "CPPINTEROP_BUILD_DIR=$env:CPPINTEROP_BUILD_DIR" >> $env:GITHUB_ENV - if ( "${{ matrix.cling }}" -imatch "On" ) - { - emcmake cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} ` - -DCPPINTEROP_USE_CLING=ON ` - -DCPPINTEROP_USE_REPL=OFF ` - -DCMAKE_PREFIX_PATH="$env:PREFIX" ` - -DCling_DIR="$env:LLVM_BUILD_DIR\tools\cling" ` - -DLLVM_DIR="$env:LLVM_BUILD_DIR\lib\cmake\llvm" ` - -DLLD_DIR="$env:LLVM_BUILD_DIR\lib\cmake\lld" ` - -DClang_DIR="$env:LLVM_BUILD_DIR\lib\cmake\clang" ` - -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} ` - -DCMAKE_INSTALL_PREFIX="$env:PREFIX" ` - -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ON ` - -DLLVM_ENABLE_WERROR=On ` - -DSYSROOT_PATH="$env:SYSROOT_PATH" ` - ..\ - } - else - { - emcmake cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} ` - -DCMAKE_PREFIX_PATH="$env:PREFIX" ` - -DLLVM_DIR="$env:LLVM_BUILD_DIR\lib\cmake\llvm" ` - -DLLD_DIR="$env:LLVM_BUILD_DIR\lib\cmake\lld" ` - -DClang_DIR="$env:LLVM_BUILD_DIR\lib\cmake\clang" ` - -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} ` - -DCMAKE_INSTALL_PREFIX="$env:PREFIX" ` - -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ON ` - -DLLVM_ENABLE_WERROR=On ` - -DSYSROOT_PATH="$env:SYSROOT_PATH" ` - ..\ - } - Error-OnFailure { emmake make -j ${{ env.ncpus }} check-cppinterop } - cd .\unittests\CppInterOp\ - echo "Running CppInterOpTests in Firefox" - Error-OnFailure { emrun.bat --browser="firefox.exe" --kill_exit --timeout 60 --browser-args="--headless" CppInterOpTests.html } - echo "Running DynamicLibraryManagerTests in Firefox" - Error-OnFailure { emrun.bat --browser="firefox.exe" --kill_exit --timeout 60 --browser-args="--headless" DynamicLibraryManagerTests.html } - echo "Running CppInterOpTests in Chromium" - Error-OnFailure { emrun.bat --browser="chrome.exe" --kill_exit --timeout 60 --browser-args="--headless --no-sandbox" CppInterOpTests.html } - echo "Running DynamicLibraryManagerTests in Chromium" - Error-OnFailure{ emrun.bat --browser="chrome.exe" --kill_exit --timeout 60 --browser-args="--headless --no-sandbox" DynamicLibraryManagerTests.html } + # # Build CppInterOp next to cling and llvm-project. + # mkdir build_static + # cd build_static + # $env:CPPINTEROP_BUILD_DIR="$env:PWD_DIR" + # echo "CPPINTEROP_BUILD_DIR=$env:CPPINTEROP_BUILD_DIR" + # echo "CPPINTEROP_BUILD_DIR=$env:CPPINTEROP_BUILD_DIR" >> $env:GITHUB_ENV + # if ( "${{ matrix.cling }}" -imatch "On" ) + # { + # emcmake cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} ` + # -DCPPINTEROP_USE_CLING=ON ` + # -DCPPINTEROP_USE_REPL=OFF ` + # -DCMAKE_PREFIX_PATH="$env:PREFIX" ` + # -DCling_DIR="$env:LLVM_BUILD_DIR\tools\cling" ` + # -DLLVM_DIR="$env:LLVM_BUILD_DIR\lib\cmake\llvm" ` + # -DLLD_DIR="$env:LLVM_BUILD_DIR\lib\cmake\lld" ` + # -DClang_DIR="$env:LLVM_BUILD_DIR\lib\cmake\clang" ` + # -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} ` + # -DCMAKE_INSTALL_PREFIX="$env:PREFIX" ` + # -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ON ` + # -DLLVM_ENABLE_WERROR=On ` + # -DSYSROOT_PATH="$env:SYSROOT_PATH" ` + # ..\ + # } + # else + # { + # emcmake cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} ` + # -DCMAKE_PREFIX_PATH="$env:PREFIX" ` + # -DLLVM_DIR="$env:LLVM_BUILD_DIR\lib\cmake\llvm" ` + # -DLLD_DIR="$env:LLVM_BUILD_DIR\lib\cmake\lld" ` + # -DClang_DIR="$env:LLVM_BUILD_DIR\lib\cmake\clang" ` + # -DCODE_COVERAGE=${{ env.CODE_COVERAGE }} ` + # -DCMAKE_INSTALL_PREFIX="$env:PREFIX" ` + # -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ON ` + # -DLLVM_ENABLE_WERROR=On ` + # -DSYSROOT_PATH="$env:SYSROOT_PATH" ` + # ..\ + # } + # Error-OnFailure { emmake make -j ${{ env.ncpus }} check-cppinterop } + # cd .\unittests\CppInterOp\ + # echo "Running CppInterOpTests in Firefox" + # Error-OnFailure { emrun.bat --browser="firefox.exe" --kill_exit --timeout 60 --browser-args="--headless" CppInterOpTests.html } + # echo "Running DynamicLibraryManagerTests in Firefox" + # Error-OnFailure { emrun.bat --browser="firefox.exe" --kill_exit --timeout 60 --browser-args="--headless" DynamicLibraryManagerTests.html } + # echo "Running CppInterOpTests in Chromium" + # Error-OnFailure { emrun.bat --browser="chrome.exe" --kill_exit --timeout 60 --browser-args="--headless --no-sandbox" CppInterOpTests.html } + # echo "Running DynamicLibraryManagerTests in Chromium" + # Error-OnFailure{ emrun.bat --browser="chrome.exe" --kill_exit --timeout 60 --browser-args="--headless --no-sandbox" DynamicLibraryManagerTests.html } - name: Build xeus-cpp on Unix Systems if: ${{ runner.os != 'windows' }} @@ -956,12 +956,17 @@ jobs: ./emsdk/emsdk activate ${{matrix.emsdk_ver}} source ./emsdk/emsdk_env.sh micromamba activate CppInterOp-wasm - git clone --depth=1 https://github.com/compiler-research/xeus-cpp.git + git clone --branch test --single-branch https://github.com/anutosh491/xeus-cpp.git cd ./xeus-cpp mkdir build pushd build export CMAKE_PREFIX_PATH=${{ env.PREFIX }} export CMAKE_SYSTEM_PREFIX_PATH=${{ env.PREFIX }} + + micromamba create -n node-env -c conda-forge nodejs=24 + export PATH="$MAMBA_ROOT_PREFIX/envs/node-env/bin:$PATH" + node --version + emcmake cmake \ -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ -DCMAKE_PREFIX_PATH=${{ env.PREFIX }} \ @@ -971,6 +976,7 @@ jobs: -DXEUS_CPP_RESOURCE_DIR=${{ env.LLVM_BUILD_DIR }}/lib/clang/${{ matrix.clang-runtime }} \ -DSYSROOT_PATH=${{ env.SYSROOT_PATH }} \ .. + emmake make check-xeus-cpp -j ${{ env.ncpus }} emmake make -j ${{ env.ncpus }} install - name: Build xeus-cpp on Windows systems @@ -980,7 +986,7 @@ jobs: .\emsdk\emsdk activate ${{matrix.emsdk_ver}} .\emsdk\emsdk_env.ps1 micromamba activate CppInterOp-wasm - git clone --depth=1 https://github.com/compiler-research/xeus-cpp.git + git clone --branch test --single-branch https://github.com/anutosh491/xeus-cpp.git cd .\xeus-cpp mkdir build pushd build @@ -1002,8 +1008,9 @@ jobs: shell: bash -l {0} run: | set -e - micromamba activate CppInterOp-wasm + micromamba activate node-env cd ./xeus-cpp/build/test + node --version node test_xeus_cpp.js - name: Test xeus-cpp C++ Emscripten on Windows Systems @@ -1024,6 +1031,7 @@ jobs: } micromamba activate CppInterOp-wasm cd .\xeus-cpp\build\test + node --version node test_xeus_cpp.js echo "Running test_xeus_cpp in Firefox" Error-OnFailure { emrun.bat --browser="firefox.exe" --kill_exit --timeout 60 --browser-args="--headless" test_xeus_cpp.html }