diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1d014e4..1961316 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,233 +15,6 @@ on: - 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: ${{ matrix.os }} strategy: @@ -260,32 +33,6 @@ jobs: - name: test run: | make test - macos-examples: - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - os: [macos-12, macos-14] - 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: ${{ matrix.os }} strategy: @@ -333,267 +80,3 @@ jobs: 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 -G "Visual Studio 17 2022" - cmake --build build --config ${{matrix.buildType}} --target qjs_exe - cmake --build build --config ${{matrix.buildType}} --target function_source - - name: stats - run: | - build\${{matrix.buildType}}\qjs.exe -qd - - name: test - run: | - build\${{matrix.buildType}}\qjs.exe tests\test_bigint.js - build\${{matrix.buildType}}\qjs.exe tests\test_closure.js - build\${{matrix.buildType}}\qjs.exe tests\test_language.js - build\${{matrix.buildType}}\qjs.exe tests\test_builtin.js - build\${{matrix.buildType}}\qjs.exe tests\test_loop.js - build\${{matrix.buildType}}\qjs.exe tests\test_std.js - build\${{matrix.buildType}}\qjs.exe tests\test_worker.js - build\${{matrix.buildType}}\qjs.exe tests\test_queue_microtask.js - build\${{matrix.buildType}}\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 -G "Visual Studio 17 2022" -T ClangCL - cmake --build build --config ${{matrix.buildType}} --target qjs_exe - cmake --build build --config ${{matrix.buildType}} --target function_source - - name: stats - run: | - build\${{matrix.buildType}}\qjs.exe -qd - - name: test - run: | - build\${{matrix.buildType}}\qjs.exe tests\test_bigint.js - build\${{matrix.buildType}}\qjs.exe tests\test_closure.js - build\${{matrix.buildType}}\qjs.exe tests\test_language.js - build\${{matrix.buildType}}\qjs.exe tests\test_builtin.js - build\${{matrix.buildType}}\qjs.exe tests\test_loop.js - build\${{matrix.buildType}}\qjs.exe tests\test_std.js - build\${{matrix.buildType}}\qjs.exe tests\test_worker.js - build\${{matrix.buildType}}\qjs.exe tests\test_queue_microtask.js - build\${{matrix.buildType}}\function_source.exe - - windows-ninja: - runs-on: windows-latest - strategy: - fail-fast: false - matrix: - buildType: [Debug, Release] - steps: - - uses: actions/checkout@v4 - - name: install ninja - run: | - choco install ninja - ninja.exe --version - - name: build - run: | - cmake -B build -DCMAKE_BUILD_TYPE=${{matrix.buildType}} -G "Ninja" - cmake --build build --target qjs_exe - cmake --build build --target function_source - - name: stats - run: | - build\qjs.exe -qd - - name: test - run: | - build\qjs.exe tests\test_bigint.js - build\qjs.exe tests\test_closure.js - build\qjs.exe tests\test_language.js - build\qjs.exe tests\test_builtin.js - build\qjs.exe tests\test_loop.js - build\qjs.exe tests\test_std.js - build\qjs.exe tests\test_worker.js - build\qjs.exe tests\test_queue_microtask.js - build\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