| name: Create Release |
| |
| # Trigger whenever a tag is created/updated |
| |
| on: |
| push: |
| tags: |
| - "*" |
| |
| permissions: |
| contents: write |
| |
| jobs: |
| build: |
| name: build |
| runs-on: ${{ matrix.os }} |
| strategy: |
| matrix: |
| os: [macos-latest, windows-latest] |
| defaults: |
| run: |
| shell: bash |
| steps: |
| - uses: actions/checkout@v1 |
| with: |
| submodules: true |
| |
| - name: install ninja (macos) |
| run: brew install ninja |
| if: matrix.os == 'macos-latest' |
| |
| - name: install ninja (win) |
| run: choco install ninja |
| if: matrix.os == 'windows-latest' |
| |
| - name: mkdir |
| run: mkdir -p out |
| |
| - name: cmake (macos) |
| run: | |
| cmake -S . -B out -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=out/install -DCMAKE_OSX_ARCHITECTURES=x86_64 |
| cmake -S . -B out-arm64 -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=out-arm64/install -DCMAKE_OSX_ARCHITECTURES=arm64 |
| if: matrix.os == 'macos-latest' |
| |
| - name: cmake (win) |
| # -G "Visual Studio 15 2017" |
| run: cmake -S . -B out -DCMAKE_INSTALL_PREFIX=out/install |
| if: matrix.os == 'windows-latest' |
| |
| - name: build |
| run: cmake --build out -v --config Release --target install |
| |
| - name: build-arm64 |
| run: cmake --build out-arm64 -v --config Release --target install |
| if: matrix.os == 'macos-latest' |
| |
| - name: strip |
| run: find out*/install/ -type f -perm -u=x -exec strip -x {} + |
| if: matrix.os != 'windows-latest' |
| |
| - name: archive |
| id: archive |
| run: | |
| OSNAME=$(echo ${{ matrix.os }} | sed 's/-latest//') |
| VERSION=$GITHUB_REF_NAME |
| PKGNAME="binaryen-$VERSION-x86_64-$OSNAME" |
| TARBALL=$PKGNAME.tar.gz |
| SHASUM=$PKGNAME.tar.gz.sha256 |
| rm -rf binaryen-$VERSION |
| mv out/install binaryen-$VERSION |
| tar -czf $TARBALL binaryen-$VERSION |
| # on Windows, MSYS2 will strip the carriage return from CMake output |
| cmake -E sha256sum $TARBALL > $SHASUM |
| echo "::set-output name=tarball::$TARBALL" |
| echo "::set-output name=shasum::$SHASUM" |
| |
| - name: archive-arm64 |
| id: archive-arm64 |
| run: | |
| OSNAME=$(echo ${{ matrix.os }} | sed 's/-latest//') |
| VERSION=$GITHUB_REF_NAME |
| PKGNAME="binaryen-$VERSION-arm64-$OSNAME" |
| TARBALL=$PKGNAME.tar.gz |
| SHASUM=$PKGNAME.tar.gz.sha256 |
| rm -rf binaryen-$VERSION |
| mv out-arm64/install binaryen-$VERSION |
| tar -czf $TARBALL binaryen-$VERSION |
| # on Windows, MSYS2 will strip the carriage return from CMake output |
| cmake -E sha256sum $TARBALL > $SHASUM |
| echo "::set-output name=tarball::$TARBALL" |
| echo "::set-output name=shasum::$SHASUM" |
| if: matrix.os == 'macos-latest' |
| |
| - name: upload tarball |
| uses: softprops/action-gh-release@v1 |
| with: |
| draft: true |
| files: | |
| ${{ steps.archive.outputs.tarball }} |
| ${{ steps.archive.outputs.shasum }} |
| ${{ steps.archive-arm64.outputs.tarball }} |
| ${{ steps.archive-arm64.outputs.shasum }} |
| |
| # Build with gcc 6.3 and run tests on Alpine Linux (inside chroot). |
| # Note: Alpine uses musl libc. |
| build-alpine: |
| name: alpine |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/setup-python@v1 |
| with: |
| python-version: '3.x' |
| - uses: actions/checkout@v1 |
| with: |
| submodules: true |
| - name: start docker |
| run: | |
| docker run -w /src -dit --name alpine -v $PWD:/src node:lts-alpine |
| echo 'docker exec alpine "$@";' > ./alpine.sh |
| chmod +x ./alpine.sh |
| |
| - name: install packages |
| run: | |
| ./alpine.sh apk update |
| ./alpine.sh apk add build-base cmake git python3 clang ninja py3-pip |
| |
| - name: install python dev dependencies |
| run: ./alpine.sh pip3 install -r requirements-dev.txt |
| |
| - name: cmake |
| run: | |
| ./alpine.sh cmake . -G Ninja -DCMAKE_CXX_FLAGS="-static" -DCMAKE_C_FLAGS="-static" -DCMAKE_BUILD_TYPE=Release -DBUILD_STATIC_LIB=ON -DCMAKE_INSTALL_PREFIX=install |
| |
| - name: build |
| run: | |
| ./alpine.sh ninja install |
| |
| - name: test |
| run: ./alpine.sh python3 ./check.py |
| |
| - name: archive |
| id: archive |
| run: | |
| VERSION=$GITHUB_REF_NAME |
| PKGNAME="binaryen-$VERSION-x86_64-linux" |
| TARBALL=$PKGNAME.tar.gz |
| SHASUM=$PKGNAME.tar.gz.sha256 |
| ./alpine.sh find install/ -type f -perm -u=x -exec strip {} + |
| mv install binaryen-$VERSION |
| tar -czf $TARBALL binaryen-$VERSION |
| cmake -E sha256sum $TARBALL > $SHASUM |
| echo "::set-output name=tarball::$TARBALL" |
| echo "::set-output name=shasum::$SHASUM" |
| |
| - name: upload tarball |
| uses: softprops/action-gh-release@v1 |
| with: |
| draft: true |
| files: | |
| ${{ steps.archive.outputs.tarball }} |
| ${{ steps.archive.outputs.shasum }} |