name: Build (Emscripten) on: [push, pull_request] concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }} cancel-in-progress: true jobs: emscripten: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: mymindstorm/setup-emsdk@v12 with: version: 3.1.35 - name: Install ninja run: | sudo apt-get -y update sudo apt-get install -y ninja-build - name: Configure (CMake) run: | emcmake cmake -S . -B build \ -Wdeprecated -Wdev -Werror \ -DSDL_WERROR=ON \ -DSDL_TESTS=ON \ -DSDL_INSTALL_TESTS=ON \ -DCMAKE_BUILD_TYPE=Debug \ -DCMAKE_INSTALL_PREFIX=prefix \ -GNinja - name: Build (CMake) run: cmake --build build/ --verbose - name: Run build-time tests run: | set -eu export SDL_TESTS_QUICK=1 # FIXME: enable Emscripten build time tests # ctest -VV --test-dir build/ - name: Install (CMake) run: | echo "SDL3_DIR=$(pwd)/prefix" >> $GITHUB_ENV cmake --install build/ - name: Package (CPack) run: | cmake --build build/ --config Debug --target package - name: Verify CMake configuration files run: | emcmake cmake -S cmake/test -B cmake_config_build \ -DCMAKE_BUILD_TYPE=Debug \ -DSDL_VENDOR_INFO="Github Workflow" \ -DTEST_SHARED=FALSE \ -DCMAKE_PREFIX_PATH=${{ env.SDL3_DIR }} cmake --build cmake_config_build --verbose - uses: actions/upload-artifact@v4 with: if-no-files-found: error name: SDL-emscripten path: build/dist/SDL3*