diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml new file mode 100644 index 0000000..06804aa --- /dev/null +++ b/.github/workflows/build-test.yml @@ -0,0 +1,74 @@ +name: Test building extension + +on: + - push + +permissions: + contents: read + +jobs: + build: + strategy: + matrix: + operating-system: + - ubuntu-latest +# - windows-latest +# - macos-latest + php-versions: +# - '8.1' +# - '8.2' + - '8.3' +# - '8.4' + v8-versions: + - 10.9.194 +# - 11.9.172 + - 12.9.203 +# - 13.1.104 + + runs-on: ${{ matrix.operating-system }} + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-versions }} + coverage: none + + - name: Build v8 ${{ matrix.v8-versions }} + run: | + # Store extra tools somewhere undisturbing + cd "$(mktemp -d)" + + git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git + export PATH=`pwd`/depot_tools:"$PATH" + + fetch v8 + cd v8 + + git checkout ${{ matrix.v8-versions }} + gclient sync -D + + # Setup GN + # Warnings are no errors - @see https://issues.chromium.org/issues/42203398#comment9 + tools/dev/v8gen.py -vv x64.release -- is_component_build=true use_custom_libcxx=false treat_warnings_as_errors=false + + # Build + ninja -C out.gn/x64.release/ + + # Install to /opt/v8/self-built + sudo mkdir -p /opt/v8/self-built/{lib,include} + sudo cp out.gn/x64.release/lib*.so out.gn/x64.release/*_blob.bin out.gn/x64.release/icudtl.dat /opt/v8/self-built/lib/ + sudo cp -R include/* /opt/v8/self-built/include/ + + # Go back to origin + cd "${GITHUB_WORKSPACE}" + + - name: Build extension + run: | + phpize + ./configure --with-v8js=/opt/v8/self-built LDFLAGS="-lstdc++" CPPFLAGS="-DV8_COMPRESS_POINTERS -DV8_ENABLE_SANDBOX" + make + make test