diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6d227eec..6504f32c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -45,7 +45,7 @@ jobs: - { platform: windows-x64 , target: x86_64-pc-windows-msvc , os: windows-latest , features: wasm } - { platform: windows-x86 , target: i686-pc-windows-msvc , os: windows-latest } - { platform: macos-arm64 , target: aarch64-apple-darwin , os: macos-14 , features: wasm } - - { platform: macos-x64 , target: x86_64-apple-darwin , os: macos-12 , features: wasm } + - { platform: macos-x64 , target: x86_64-apple-darwin , os: macos-13 , features: wasm } # Cross compilers for C library - { platform: linux-arm64 , cc: aarch64-linux-gnu-gcc , ar: aarch64-linux-gnu-ar } @@ -135,26 +135,48 @@ jobs: [[ -n $runner ]] && printf 'CROSS_RUNNER=%s\n' "$runner" >> $GITHUB_ENV fi + - name: Build wasmtime library + if: ${{ !matrix.use-cross && contains(matrix.features, 'wasm') }} + run: | + WASMTIME_VERSION=$(cargo metadata --format-version=1 --locked --features wasm | \ + jq -r '.packages[] | select(.name == "wasmtime-c-api-impl") | .version') + curl -LSs "$WASMTIME_REPO/archive/refs/tags/v${WASMTIME_VERSION}.tar.gz" | tar xzf - -C target + cd target/wasmtime-${WASMTIME_VERSION} + cmake -S crates/c-api -B target/c-api \ + -DCMAKE_INSTALL_PREFIX="$PWD/artifacts" \ + -DWASMTIME_DISABLE_ALL_FEATURES=ON \ + -DWASMTIME_FEATURE_CRANELIFT=ON \ + -DWASMTIME_TARGET='${{ matrix.target }}' + cmake --build target/c-api && cmake --install target/c-api + printf 'CMAKE_PREFIX_PATH=%s\n' "$PWD/artifacts" >> $GITHUB_ENV + env: + WASMTIME_REPO: https://github.com/bytecodealliance/wasmtime + - name: Build C library (make) if: ${{ runner.os != 'Windows' }} run: make.sh -j CFLAGS="$CFLAGS" env: - CFLAGS: -g -Werror -Wall -Wextra -Wshadow -Wno-unused-parameter -pedantic + CFLAGS: -g -Werror -Wall -Wextra -Wshadow -Wpedantic -Werror=incompatible-pointer-types - name: Build C library (CMake) if: ${{ !matrix.use-cross }} - run: |- - cmake -S lib -B build \ + run: | + cmake -S lib -B build/static \ -DBUILD_SHARED_LIBS=OFF \ -DCMAKE_BUILD_TYPE=Debug \ - -DCMAKE_COMPILE_WARNING_AS_ERROR=ON - cmake --build build --verbose + -DCMAKE_COMPILE_WARNING_AS_ERROR=ON \ + -DTREE_SITTER_FEATURE_WASM=$WASM + cmake --build build/static --verbose - cmake -S lib -B build \ + cmake -S lib -B build/shared \ -DBUILD_SHARED_LIBS=ON \ -DCMAKE_BUILD_TYPE=Debug \ - -DCMAKE_COMPILE_WARNING_AS_ERROR=ON - cmake --build build --verbose + -DCMAKE_COMPILE_WARNING_AS_ERROR=ON \ + -DTREE_SITTER_FEATURE_WASM=$WASM + cmake --build build/shared --verbose + env: + CC: ${{ contains(matrix.target, 'linux') && 'clang' || '' }} + WASM: ${{ contains(matrix.features, 'wasm') && 'ON' || 'OFF' }} - name: Build wasm library # No reason to build on the same Github runner hosts many times