48cb3ac410
I had issues compiling this for Android, and as it turns out, pthread functionality is part of Bionic itself and linking is not required.
550 lines
14 KiB
YAML
550 lines
14 KiB
YAML
name: ci
|
|
|
|
on:
|
|
pull_request:
|
|
paths:
|
|
- '**'
|
|
- '!.gitignore'
|
|
- '!LICENSE'
|
|
- '!TODO'
|
|
- '!doc/**'
|
|
- '!examples/**'
|
|
- '.github/workflows/ci.yml'
|
|
push:
|
|
branches:
|
|
- master
|
|
|
|
jobs:
|
|
codegen:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: build
|
|
run: |
|
|
make codegen
|
|
- name: Check if the git repository is clean
|
|
run: $(exit $(git status --porcelain --untracked-files=no | head -255 | wc -l)) || (echo "Dirty git tree"; git diff; exit 1)
|
|
linux:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
buildType: [Debug, Release]
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: true
|
|
- name: build
|
|
run: |
|
|
make BUILD_TYPE=${{matrix.buildType}}
|
|
- name: stats
|
|
run: |
|
|
make stats
|
|
- name: test
|
|
run: |
|
|
make test
|
|
- name: test 262
|
|
if: ${{ matrix.buildType == 'Release' }}
|
|
run: |
|
|
time make test262
|
|
- name: test v8 mjsunit
|
|
if: ${{ matrix.buildType == 'Release' }}
|
|
run: |
|
|
./v8.sh
|
|
linux-32bits:
|
|
runs-on: ubuntu-latest
|
|
defaults:
|
|
run:
|
|
shell: alpine.sh {0}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: jirutka/setup-alpine@v1
|
|
with:
|
|
arch: x86
|
|
packages: "build-base make cmake"
|
|
- name: build
|
|
run: |
|
|
make
|
|
- name: stats
|
|
run: |
|
|
make stats
|
|
- name: test
|
|
run: |
|
|
make test
|
|
linux-s390x:
|
|
runs-on: ubuntu-latest
|
|
defaults:
|
|
run:
|
|
shell: alpine.sh {0}
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: jirutka/setup-alpine@v1
|
|
with:
|
|
arch: s390x
|
|
packages: "build-base make cmake"
|
|
- name: build
|
|
run: |
|
|
make
|
|
- name: stats
|
|
run: |
|
|
make stats
|
|
- name: test
|
|
run: |
|
|
make test
|
|
linux-gcc48:
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: ubuntu:14.04
|
|
steps:
|
|
- name: install dependencies
|
|
run: |
|
|
apt update && apt -y install make gcc-4.8 wget time software-properties-common
|
|
# git in default ppa repository is too old to run submodule checkout
|
|
add-apt-repository -y ppa:git-core/ppa
|
|
apt update
|
|
apt install -y git
|
|
wget -nv https://github.com/Kitware/CMake/releases/download/v3.28.0-rc5/cmake-3.28.0-rc5-linux-x86_64.sh
|
|
sh cmake-3.28.0-rc5-linux-x86_64.sh --skip-license --prefix=/usr
|
|
- name: checkout
|
|
uses: actions/checkout@v3
|
|
with:
|
|
submodules: true
|
|
- name: build
|
|
run: |
|
|
CC=gcc-4.8 make
|
|
- name: stats
|
|
run: |
|
|
make stats
|
|
- name: test
|
|
run: |
|
|
make test
|
|
- name: test 262
|
|
run: |
|
|
time make test262
|
|
linux-examples:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: build
|
|
run: |
|
|
make BUILD_EXAMPLES=ON
|
|
- name: test
|
|
run: |
|
|
ldd build/hello
|
|
ldd build/hello_module
|
|
ldd build/test_fib
|
|
./build/hello
|
|
./build/hello_module
|
|
./build/test_fib
|
|
cp build/fib.so examples/
|
|
cp build/point.so examples/
|
|
cp build/bjson.so tests/
|
|
./build/qjs examples/test_fib.js
|
|
./build/qjs examples/test_point.js
|
|
./build/qjs tests/test_bjson.js
|
|
./build/function_source
|
|
linux-shared:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: build
|
|
run: |
|
|
make BUILD_SHARED_LIBS=ON
|
|
ldd build/qjs
|
|
- name: stats
|
|
run: |
|
|
make stats
|
|
linux-asan:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: true
|
|
# ASLR with big PIE slides does not work well with [AM]San
|
|
- name: disable ASLR
|
|
run: |
|
|
sudo sysctl -w kernel.randomize_va_space=0
|
|
- name: build
|
|
run: |
|
|
make CONFIG_ASAN=ON
|
|
- name: test
|
|
env:
|
|
ASAN_OPTIONS: halt_on_error=1
|
|
run: |
|
|
make test
|
|
- name: test 262
|
|
env:
|
|
ASAN_OPTIONS: halt_on_error=1
|
|
run: |
|
|
time make test262
|
|
linux-msan:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: true
|
|
# ASLR with big PIE slides does not work well with [AM]San
|
|
- name: disable ASLR
|
|
run: |
|
|
sudo sysctl -w kernel.randomize_va_space=0
|
|
- name: build
|
|
env:
|
|
CC: clang
|
|
run: |
|
|
make CONFIG_MSAN=ON
|
|
- name: test
|
|
env:
|
|
MSAN_OPTIONS: halt_on_error=1
|
|
run: |
|
|
make test
|
|
linux-ubsan:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: true
|
|
- name: build
|
|
run: |
|
|
make CONFIG_UBSAN=ON
|
|
- name: test
|
|
env:
|
|
UBSAN_OPTIONS: halt_on_error=1
|
|
run: |
|
|
make test
|
|
- name: test 262
|
|
env:
|
|
UBSAN_OPTIONS: halt_on_error=1
|
|
run: |
|
|
time make test262
|
|
linux-tcc:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: true
|
|
- name: install TCC
|
|
run: |
|
|
pushd /tmp
|
|
git clone https://repo.or.cz/tinycc.git
|
|
cd tinycc
|
|
git checkout 9d2068c6309dc50dfdbbc30a5d6757683d3f884c
|
|
./configure
|
|
make
|
|
sudo make install
|
|
tcc -v
|
|
popd
|
|
- name: build
|
|
env:
|
|
CC: tcc
|
|
run: |
|
|
make
|
|
- name: stats
|
|
run: |
|
|
make stats
|
|
|
|
macos:
|
|
runs-on: macos-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
buildType: [Debug, Release]
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: build
|
|
run: |
|
|
make BUILD_TYPE=${{matrix.buildType}}
|
|
- name: stats
|
|
run: |
|
|
make stats
|
|
- name: test
|
|
run: |
|
|
make test
|
|
macos-examples:
|
|
runs-on: macos-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: build
|
|
run: |
|
|
make BUILD_EXAMPLES=ON
|
|
- name: test
|
|
run: |
|
|
otool -L build/hello
|
|
otool -L build/hello_module
|
|
otool -L build/test_fib
|
|
./build/hello
|
|
./build/hello_module
|
|
./build/test_fib
|
|
cp build/fib.so examples/
|
|
cp build/point.so examples/
|
|
cp build/bjson.so tests/
|
|
./build/qjs examples/test_fib.js
|
|
./build/qjs examples/test_point.js
|
|
./build/qjs tests/test_bjson.js
|
|
./build/function_source
|
|
macos-shared:
|
|
runs-on: macos-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: build
|
|
run: |
|
|
make BUILD_SHARED_LIBS=ON
|
|
otool -L build/qjs
|
|
- name: stats
|
|
run: |
|
|
make stats
|
|
macos-asan:
|
|
runs-on: macos-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: build
|
|
run: |
|
|
make CONFIG_ASAN=ON
|
|
- name: test
|
|
env:
|
|
ASAN_OPTIONS: halt_on_error=1
|
|
run: |
|
|
make test
|
|
macos-ubsan:
|
|
runs-on: macos-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: build
|
|
run: |
|
|
make CONFIG_UBSAN=ON
|
|
- name: test
|
|
env:
|
|
UBSAN_OPTIONS: halt_on_error=1
|
|
run: |
|
|
make test
|
|
|
|
windows-msvc:
|
|
runs-on: windows-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
buildType: [Debug, Release]
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: build
|
|
run: |
|
|
cmake -B build -DCMAKE_BUILD_TYPE=${{matrix.buildType}} -G "Visual Studio 17 2022"
|
|
cmake --build build --target qjs_exe
|
|
cmake --build build --target function_source
|
|
- name: stats
|
|
run: |
|
|
build\Debug\qjs.exe -qd
|
|
- name: test
|
|
run: |
|
|
build\Debug\qjs.exe tests\test_bigint.js
|
|
build\Debug\qjs.exe tests\test_closure.js
|
|
build\Debug\qjs.exe tests\test_language.js
|
|
build\Debug\qjs.exe tests\test_builtin.js
|
|
build\Debug\qjs.exe tests\test_loop.js
|
|
build\Debug\qjs.exe tests\test_std.js
|
|
build\Debug\qjs.exe tests\test_worker.js
|
|
build\Debug\qjs.exe tests\test_queue_microtask.js
|
|
build\Debug\function_source.exe
|
|
|
|
windows-clang:
|
|
runs-on: windows-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
buildType: [Debug, Release]
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: build
|
|
run: |
|
|
cmake -B build -DCMAKE_BUILD_TYPE=${{matrix.buildType}} -G "Visual Studio 17 2022" -T ClangCL
|
|
cmake --build build --target qjs_exe
|
|
cmake --build build --target function_source
|
|
- name: stats
|
|
run: |
|
|
cmd /r build\Debug\qjs.exe -qd
|
|
- name: test
|
|
run: |
|
|
cmd /r build\Debug\qjs.exe tests\test_bigint.js
|
|
cmd /r build\Debug\qjs.exe tests\test_closure.js
|
|
cmd /r build\Debug\qjs.exe tests\test_language.js
|
|
cmd /r build\Debug\qjs.exe tests\test_builtin.js
|
|
cmd /r build\Debug\qjs.exe tests\test_loop.js
|
|
cmd /r build\Debug\qjs.exe tests\test_std.js
|
|
cmd /r build\Debug\qjs.exe tests\test_worker.js
|
|
cmd /r build\Debug\qjs.exe tests\test_queue_microtask.js
|
|
cmd /r build\Debug\function_source.exe
|
|
|
|
windows-mingw:
|
|
runs-on: windows-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
buildType: [Debug, Release]
|
|
sys:
|
|
- mingw32
|
|
- mingw64
|
|
- clang64
|
|
- ucrt64
|
|
defaults:
|
|
run:
|
|
shell: msys2 {0}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Setup MSYS2
|
|
uses: msys2/setup-msys2@v2
|
|
with:
|
|
msystem: ${{matrix.sys}}
|
|
install: >-
|
|
git
|
|
make
|
|
pacboy: >-
|
|
cmake:p
|
|
ninja:p
|
|
toolchain:p
|
|
- name: build
|
|
run: |
|
|
make BUILD_TYPE=${{matrix.buildType}}
|
|
- name: stats
|
|
run: |
|
|
make stats
|
|
ldd build/qjs
|
|
- name: test
|
|
run: |
|
|
make test
|
|
windows-mingw-shared:
|
|
runs-on: windows-latest
|
|
defaults:
|
|
run:
|
|
shell: msys2 {0}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Setup MSYS2
|
|
uses: msys2/setup-msys2@v2
|
|
with:
|
|
install: >-
|
|
git
|
|
make
|
|
pacboy: >-
|
|
cmake:p
|
|
ninja:p
|
|
toolchain:p
|
|
- name: build
|
|
run: |
|
|
make BUILD_SHARED_LIBS=ON
|
|
ldd build/qjs
|
|
- name: stats
|
|
run: |
|
|
make stats
|
|
|
|
emscripten:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: mymindstorm/setup-emsdk@v13
|
|
- name: check emsdk
|
|
run: emcc -v
|
|
- name: build
|
|
run: |
|
|
emcmake cmake -B build
|
|
emmake make -C build qjs_wasm -j$(getconf _NPROCESSORS_ONLN)
|
|
- name: result
|
|
run: ls -lh build
|
|
wasi:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: jcbhmr/setup-wasmtime@v2
|
|
- 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: test
|
|
run: |
|
|
cmake -B build -DCMAKE_TOOLCHAIN_FILE=/opt/wasi-sdk/share/cmake/wasi-sdk.cmake
|
|
make -C build qjs_exe
|
|
wasmtime run build/qjs -qd
|
|
echo "console.log('hello wasi!');" > t.js
|
|
wasmtime run --dir . build/qjs t.js
|
|
|
|
cygwin:
|
|
runs-on: windows-latest
|
|
defaults:
|
|
run:
|
|
shell: C:\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}'
|
|
env:
|
|
CYGWIN_NOWINPATH: 1
|
|
CHERE_INVOKING: 1
|
|
steps:
|
|
- name: Set up Cygwin
|
|
uses: cygwin/cygwin-install-action@master
|
|
with:
|
|
packages: make cmake gcc-g++ bash
|
|
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: build
|
|
run: make
|
|
|
|
- name: stats
|
|
run: make stats
|
|
|
|
- name: test
|
|
run: make test
|
|
|
|
openbsd:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: build + test
|
|
uses: vmactions/openbsd-vm@v1
|
|
with:
|
|
usesh: true
|
|
prepare: |
|
|
pkg_add cmake gmake
|
|
run: |
|
|
gmake
|
|
gmake stats
|
|
|
|
freebsd:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: build + test
|
|
uses: vmactions/freebsd-vm@v1
|
|
with:
|
|
usesh: true
|
|
prepare: |
|
|
pkg install -y cmake gmake
|
|
run: |
|
|
gmake
|
|
gmake stats
|
|
|
|
netbsd:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: build + test
|
|
uses: vmactions/netbsd-vm@v1
|
|
with:
|
|
usesh: true
|
|
prepare: |
|
|
/usr/sbin/pkg_add cmake gmake
|
|
run: |
|
|
gmake
|
|
gmake stats
|
|
gmake test
|
|
|
|
android:
|
|
runs-on: ubuntu-latest
|
|
container: reactnativecommunity/react-native-android:v13.0
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Configure android arm64
|
|
# see build options you can use in https://developer.android.com/ndk/guides/cmake
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
$ANDROID_HOME/cmake/3.22.1/bin/cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_HOME/ndk/26.0.10792818/build/cmake/android.toolchain.cmake -DCMAKE_BUILD_TYPE=Release -DANDROID_ABI="arm64-v8a" -DANDROID_PLATFORM=android-24 -DBUILD_QJS_LIBC=ON ..
|
|
- name: Build android arm64
|
|
run: |
|
|
$ANDROID_HOME/cmake/3.22.1/bin/cmake --build build --target qjs
|
|
ls -lh build
|