Add option to use clang's MSVC ABI #59
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: release | |
on: | |
pull_request: | |
push: | |
tags: | |
- "v*.*.*" | |
jobs: | |
linux: | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: [aarch64, riscv64, x86, x86_64] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: jirutka/setup-alpine@v1 | |
with: | |
arch: ${{matrix.arch}} | |
packages: "build-base make cmake" | |
- name: build | |
shell: alpine.sh {0} | |
run: | | |
mkdir build | |
cd build | |
cmake -DBUILD_STATIC_QJS_EXE=ON .. | |
cd .. | |
cmake --build build --target qjs_exe -j$(getconf _NPROCESSORS_ONLN) | |
cmake --build build --target qjsc -j$(getconf _NPROCESSORS_ONLN) | |
mv build/qjs build/qjs-linux-${{matrix.arch}} | |
mv build/qjsc build/qjsc-linux-${{matrix.arch}} | |
- name: check | |
shell: alpine.sh {0} | |
run: | | |
file build/*-linux-${{matrix.arch}} | |
- name: upload | |
uses: actions/upload-artifact@v4 | |
with: | |
name: qjs-linux-${{matrix.arch}} | |
path: build/*-linux-${{matrix.arch}} | |
macos: | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: build | |
run: | | |
mkdir build | |
cd build | |
cmake -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" .. | |
make -j$(getconf _NPROCESSORS_ONLN) | |
mv qjs qjs-darwin | |
mv qjsc qjsc-darwin | |
- name: check | |
run: | | |
lipo -info build/qjs-darwin build/qjsc-darwin | |
- name: upload | |
uses: actions/upload-artifact@v4 | |
with: | |
name: qjs-darwin | |
path: build/*-darwin | |
windows: | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: [x86, x86_64] | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup MSYS2 | |
uses: msys2/setup-msys2@v2 | |
with: | |
msystem: ${{ matrix.arch == 'x86' && 'mingw32' || 'mingw64' }} | |
install: >- | |
git | |
make | |
pacboy: >- | |
cmake:p | |
ninja:p | |
toolchain:p | |
- name: build | |
run: | | |
make | |
mv build/qjs.exe build/qjs-windows-${{matrix.arch}}.exe | |
mv build/qjsc.exe build/qjsc-windows-${{matrix.arch}}.exe | |
- name: check | |
run: | | |
ldd build/qjs-windows-${{matrix.arch}}.exe build/qjsc-windows-${{matrix.arch}}.exe | |
- name: upload | |
uses: actions/upload-artifact@v4 | |
with: | |
name: qjs-windows-${{matrix.arch}} | |
path: build/*-windows-${{matrix.arch}}.exe | |
wasi: | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: setup wasi-sdk | |
run: | | |
wget -nv https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-21/wasi-sdk_21.0_amd64.deb -P /tmp | |
sudo apt install /tmp/wasi-sdk*.deb | |
- name: build | |
run: | | |
cmake -B build -DCMAKE_TOOLCHAIN_FILE=/opt/wasi-sdk/share/cmake/wasi-sdk.cmake | |
make -C build qjs_exe | |
mv build/qjs build/qjs-wasi.wasm | |
- name: upload | |
uses: actions/upload-artifact@v4 | |
with: | |
name: qjs-wasi | |
path: build/qjs-wasi.wasm | |
upload-to-release: | |
needs: [linux, macos, windows, wasi] | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: get assets | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: qjs-* | |
path: build | |
merge-multiple: true | |
- run: ls -R build | |
- name: release | |
if: ${{ startsWith(github.ref, 'refs/tags/v') }} | |
uses: softprops/action-gh-release@v1 | |
with: | |
files: | | |
build/* |