mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2025-02-06 23:15:16 +00:00
c718e76dea
Directly download wabt binary and use it in spec test instead of building it from source to fasten the spec test.
382 lines
13 KiB
YAML
382 lines
13 KiB
YAML
# Copyright (C) 2019 Intel Corporation. All rights reserved.
|
|
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
|
|
name: compilation on SGX
|
|
|
|
on:
|
|
# will be triggered on PR events
|
|
pull_request:
|
|
types:
|
|
- opened
|
|
- synchronize
|
|
paths:
|
|
- ".github/**"
|
|
- "build-scripts/**"
|
|
- "core/**"
|
|
- "!core/deps/**"
|
|
- "product-mini/**"
|
|
- "samples/**"
|
|
- "!samples/workload/**"
|
|
- "tests/wamr-test-suites/**"
|
|
- "wamr-compiler/**"
|
|
- "wamr-sdk/**"
|
|
# will be triggered on push events
|
|
push:
|
|
branches:
|
|
- main
|
|
- "dev/**"
|
|
paths:
|
|
- ".github/**"
|
|
- "build-scripts/**"
|
|
- "core/**"
|
|
- "!core/deps/**"
|
|
- "product-mini/**"
|
|
- "samples/**"
|
|
- "!samples/workload/**"
|
|
- "tests/wamr-test-suites/**"
|
|
- "wamr-compiler/**"
|
|
- "wamr-sdk/**"
|
|
# allow to be triggered manually
|
|
workflow_dispatch:
|
|
|
|
# Cancel any in-flight jobs for the same PR/branch so there's only one active
|
|
# at a time
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
AOT_BUILD_OPTIONS: "-DWAMR_BUILD_AOT=1 -DWAMR_BUILD_FAST_INTERP=0 -DWAMR_BUILD_INTERP=0 -DWAMR_BUILD_JIT=0 -DWAMR_BUILD_LAZY_JIT=0"
|
|
CLASSIC_INTERP_BUILD_OPTIONS: "-DWAMR_BUILD_AOT=0 -DWAMR_BUILD_FAST_INTERP=0 -DWAMR_BUILD_INTERP=1 -DWAMR_BUILD_JIT=0 -DWAMR_BUILD_LAZY_JIT=0"
|
|
FAST_INTERP_BUILD_OPTIONS: "-DWAMR_BUILD_AOT=0 -DWAMR_BUILD_FAST_INTERP=1 -DWAMR_BUILD_INTERP=1 -DWAMR_BUILD_JIT=0 -DWAMR_BUILD_LAZY_JIT=0"
|
|
LLVM_LAZY_JIT_BUILD_OPTIONS: "-DWAMR_BUILD_AOT=1 -DWAMR_BUILD_FAST_INTERP=0 -DWAMR_BUILD_INTERP=0 -DWAMR_BUILD_JIT=1 -DWAMR_BUILD_LAZY_JIT=1"
|
|
LLVM_EAGER_JIT_BUILD_OPTIONS: "-DWAMR_BUILD_AOT=1 -DWAMR_BUILD_FAST_INTERP=0 -DWAMR_BUILD_INTERP=0 -DWAMR_BUILD_JIT=1 -DWAMR_BUILD_LAZY_JIT=0"
|
|
LLVM_CACHE_SUFFIX: "build-llvm_libraries_ex"
|
|
|
|
jobs:
|
|
build_llvm_libraries:
|
|
uses: ./.github/workflows/build_llvm_libraries.yml
|
|
with:
|
|
runs-on: "['ubuntu-20.04']"
|
|
|
|
build_iwasm:
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
make_options_run_mode: [
|
|
# Running modes supported
|
|
$AOT_BUILD_OPTIONS,
|
|
$CLASSIC_INTERP_BUILD_OPTIONS,
|
|
$FAST_INTERP_BUILD_OPTIONS,
|
|
# Running modes unsupported
|
|
#$LLVM_LAZY_JIT_BUILD_OPTIONS,
|
|
#$LLVM_EAGER_JIT_BUILD_OPTIONS,
|
|
]
|
|
make_options_feature: [
|
|
# Features
|
|
"-DWAMR_BUILD_CUSTOM_NAME_SECTION=1",
|
|
# doesn't support
|
|
# "-DWAMR_BUILD_DEBUG_AOT=1",
|
|
# "-DWAMR_BUILD_DEBUG_INTERP=1",
|
|
"-DWAMR_BUILD_DUMP_CALL_STACK=1",
|
|
"-DWAMR_BUILD_LIB_PTHREAD=1",
|
|
"-DWAMR_BUILD_LOAD_CUSTOM_SECTION=1",
|
|
"-DWAMR_BUILD_MINI_LOADER=1",
|
|
"-DWAMR_BUILD_MEMORY_PROFILING=1",
|
|
"-DWAMR_BUILD_MULTI_MODULE=1",
|
|
"-DWAMR_BUILD_PERF_PROFILING=1",
|
|
"-DWAMR_BUILD_REF_TYPES=1",
|
|
# doesn't support
|
|
# "-DWAMR_BUILD_SIMD=1",
|
|
"-DWAMR_BUILD_TAIL_CALL=1",
|
|
"-DWAMR_DISABLE_HW_BOUND_CHECK=1",
|
|
"-DWAMR_BUILD_SGX_IPFS=1",
|
|
]
|
|
os: [ubuntu-20.04]
|
|
platform: [linux-sgx]
|
|
exclude:
|
|
# uncompatiable mode and feature
|
|
# MULTI_MODULE only on INTERP mode
|
|
- make_options_run_mode: $AOT_BUILD_OPTIONS
|
|
make_options_feature: "-DWAMR_BUILD_MULTI_MODULE=1"
|
|
# MINI_LOADER only on INTERP mode
|
|
- make_options_run_mode: $AOT_BUILD_OPTIONS
|
|
make_options_feature: "-DWAMR_BUILD_MINI_LOADER=1"
|
|
steps:
|
|
- name: install SGX SDK and necessary libraries
|
|
run: |
|
|
mkdir -p /opt/intel
|
|
cd /opt/intel
|
|
wget https://download.01.org/intel-sgx/sgx-linux/2.15/distro/ubuntu20.04-server/sgx_linux_x64_sdk_2.15.100.3.bin
|
|
chmod +x sgx_linux_x64_sdk_2.15.100.3.bin
|
|
echo 'yes' | ./sgx_linux_x64_sdk_2.15.100.3.bin
|
|
echo 'deb [arch=amd64] https://download.01.org/intel-sgx/sgx_repo/ubuntu focal main' | sudo tee /etc/apt/sources.list.d/intel-sgx.list
|
|
wget -qO - https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key | sudo apt-key add -
|
|
sudo apt update
|
|
sudo apt install -y libsgx-launch libsgx-urts
|
|
source /opt/intel/sgxsdk/environment
|
|
|
|
- name: checkout
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Build iwasm
|
|
run: |
|
|
mkdir build && cd build
|
|
cmake .. ${{ matrix.make_options_run_mode }} ${{ matrix.make_options_feature }}
|
|
cmake --build . --config Release --parallel 4
|
|
working-directory: product-mini/platforms/${{ matrix.platform }}
|
|
|
|
build_wamrc:
|
|
needs: [build_llvm_libraries]
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-20.04]
|
|
steps:
|
|
- name: install SGX SDK and necessary libraries
|
|
run: |
|
|
mkdir -p /opt/intel
|
|
cd /opt/intel
|
|
wget https://download.01.org/intel-sgx/sgx-linux/2.15/distro/ubuntu20.04-server/sgx_linux_x64_sdk_2.15.100.3.bin
|
|
chmod +x sgx_linux_x64_sdk_2.15.100.3.bin
|
|
echo 'yes' | ./sgx_linux_x64_sdk_2.15.100.3.bin
|
|
echo 'deb [arch=amd64] https://download.01.org/intel-sgx/sgx_repo/ubuntu focal main' | sudo tee /etc/apt/sources.list.d/intel-sgx.list
|
|
wget -qO - https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key | sudo apt-key add -
|
|
sudo apt update
|
|
sudo apt install -y libsgx-launch libsgx-urts
|
|
source /opt/intel/sgxsdk/environment
|
|
|
|
- name: checkout
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Get LLVM libraries
|
|
id: cache_llvm
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
./core/deps/llvm/build/bin
|
|
./core/deps/llvm/build/include
|
|
./core/deps/llvm/build/lib
|
|
./core/deps/llvm/build/libexec
|
|
./core/deps/llvm/build/share
|
|
key: ${{ matrix.os }}-${{ env.LLVM_CACHE_SUFFIX }}
|
|
|
|
- name: Quit if cache miss
|
|
if: steps.cache_llvm.outputs.cache-hit != 'true'
|
|
run: echo "::error::can not get prebuilt llvm libraries" && exit 1
|
|
|
|
- name: Build wamrc
|
|
run: |
|
|
mkdir build && cd build
|
|
cmake ..
|
|
cmake --build . --config Release --parallel 4
|
|
working-directory: wamr-compiler
|
|
|
|
build_samples_wasm_c_api:
|
|
needs: [build_iwasm]
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
make_options: [
|
|
# Running modes supported
|
|
$CLASSIC_INTERP_BUILD_OPTIONS,
|
|
$FAST_INTERP_BUILD_OPTIONS,
|
|
# Running modes unsupported
|
|
#$LLVM_EAGER_JIT_BUILD_OPTIONS,
|
|
#$LLVM_LAZY_JIT_BUILD_OPTIONS,
|
|
#$AOT_BUILD_OPTIONS,
|
|
]
|
|
os: [ubuntu-20.04]
|
|
wasi_sdk_release:
|
|
[
|
|
"https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-12/wasi-sdk-12.0-linux.tar.gz",
|
|
]
|
|
wabt_release:
|
|
[
|
|
"https://github.com/WebAssembly/wabt/releases/download/1.0.24/wabt-1.0.24-ubuntu.tar.gz",
|
|
]
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v3
|
|
|
|
- name: download and install wabt
|
|
run: |
|
|
cd /opt
|
|
sudo wget ${{ matrix.wabt_release }}
|
|
sudo tar -xzf wabt-1.0.24-*.tar.gz
|
|
sudo mv wabt-1.0.24 wabt
|
|
|
|
- name: install SGX SDK and necessary libraries
|
|
run: |
|
|
mkdir -p /opt/intel
|
|
cd /opt/intel
|
|
wget https://download.01.org/intel-sgx/sgx-linux/2.15/distro/ubuntu20.04-server/sgx_linux_x64_sdk_2.15.100.3.bin
|
|
chmod +x sgx_linux_x64_sdk_2.15.100.3.bin
|
|
echo 'yes' | ./sgx_linux_x64_sdk_2.15.100.3.bin
|
|
echo 'deb [arch=amd64] https://download.01.org/intel-sgx/sgx_repo/ubuntu focal main' | sudo tee /etc/apt/sources.list.d/intel-sgx.list
|
|
wget -qO - https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key | sudo apt-key add -
|
|
sudo apt update
|
|
sudo apt install -y libsgx-launch libsgx-urts
|
|
source /opt/intel/sgxsdk/environment
|
|
|
|
- name: Build Sample [wasm-c-api]
|
|
run: |
|
|
mkdir build && cd build
|
|
cmake .. ${{ matrix.make_options }}
|
|
cmake --build . --config Release --parallel 4
|
|
./callback
|
|
./callback_chain
|
|
./empty_imports
|
|
./global
|
|
./hello
|
|
./hostref
|
|
./memory
|
|
./reflect
|
|
./table
|
|
./trap
|
|
working-directory: samples/wasm-c-api
|
|
|
|
build_samples_others:
|
|
needs: [build_iwasm]
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-20.04]
|
|
wasi_sdk_release:
|
|
[
|
|
"https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-12/wasi-sdk-12.0-linux.tar.gz",
|
|
]
|
|
wabt_release:
|
|
[
|
|
"https://github.com/WebAssembly/wabt/releases/download/1.0.24/wabt-1.0.24-ubuntu.tar.gz",
|
|
]
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v3
|
|
|
|
- name: download and install wasi-sdk
|
|
run: |
|
|
cd /opt
|
|
sudo wget ${{ matrix.wasi_sdk_release }}
|
|
sudo tar -xzf wasi-sdk-12.0-*.tar.gz
|
|
sudo mv wasi-sdk-12.0 wasi-sdk
|
|
|
|
- name: download and install wabt
|
|
run: |
|
|
cd /opt
|
|
sudo wget ${{ matrix.wabt_release }}
|
|
sudo tar -xzf wabt-1.0.24-*.tar.gz
|
|
sudo mv wabt-1.0.24 wabt
|
|
|
|
- name: install SGX SDK and necessary libraries
|
|
run: |
|
|
mkdir -p /opt/intel
|
|
cd /opt/intel
|
|
wget https://download.01.org/intel-sgx/sgx-linux/2.15/distro/ubuntu20.04-server/sgx_linux_x64_sdk_2.15.100.3.bin
|
|
chmod +x sgx_linux_x64_sdk_2.15.100.3.bin
|
|
echo 'yes' | ./sgx_linux_x64_sdk_2.15.100.3.bin
|
|
echo 'deb [arch=amd64] https://download.01.org/intel-sgx/sgx_repo/ubuntu focal main' | sudo tee /etc/apt/sources.list.d/intel-sgx.list
|
|
wget -qO - https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key | sudo apt-key add -
|
|
sudo apt update
|
|
sudo apt install -y libsgx-launch libsgx-urts
|
|
source /opt/intel/sgxsdk/environment
|
|
|
|
- name: Build Sample [basic]
|
|
run: |
|
|
cd samples/basic
|
|
./build.sh
|
|
./run.sh
|
|
|
|
- name: Build Sample [file]
|
|
run: |
|
|
cd samples/file
|
|
mkdir build && cd build
|
|
cmake ..
|
|
cmake --build . --config Release --parallel 4
|
|
./src/iwasm -f wasm-app/file.wasm -d .
|
|
|
|
- name: Build Sample [multi-thread]
|
|
run: |
|
|
cd samples/multi-thread
|
|
mkdir build && cd build
|
|
cmake ..
|
|
cmake --build . --config Release --parallel 4
|
|
./iwasm wasm-apps/test.wasm
|
|
|
|
- name: Build Sample [multi-module]
|
|
run: |
|
|
cd samples/multi-module
|
|
mkdir build && cd build
|
|
cmake ..
|
|
cmake --build . --config Release --parallel 4
|
|
./multi_module
|
|
|
|
- name: Build Sample [spawn-thread]
|
|
run: |
|
|
cd samples/spawn-thread
|
|
mkdir build && cd build
|
|
cmake ..
|
|
cmake --build . --config Release --parallel 4
|
|
./spawn_thread
|
|
|
|
- name: Build Sample [ref-types]
|
|
run: |
|
|
cd samples/ref-types
|
|
mkdir build && cd build
|
|
cmake ..
|
|
cmake --build . --config Release --parallel 4
|
|
./hello
|
|
|
|
spec_test_default:
|
|
needs: [build_iwasm, build_llvm_libraries, build_wamrc]
|
|
runs-on: ubuntu-20.04
|
|
strategy:
|
|
matrix:
|
|
running_mode: ["classic-interp", "fast-interp", "aot"]
|
|
test_option: ["-x -p -s spec -b -P", "-x -p -s spec -S -b -P"]
|
|
# classic-interp and fast-interp don't support simd
|
|
exclude:
|
|
- running_mode: "classic-interp"
|
|
test_option: "-x -p -s spec -S -b -P"
|
|
- running_mode: "fast-interp"
|
|
test_option: "-x -p -s spec -S -b -P"
|
|
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Get LLVM libraries
|
|
if: matrix.running_mode == 'aot'
|
|
id: cache_llvm
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
./core/deps/llvm/build/bin
|
|
./core/deps/llvm/build/include
|
|
./core/deps/llvm/build/lib
|
|
./core/deps/llvm/build/libexec
|
|
./core/deps/llvm/build/share
|
|
key: ubuntu-20.04-${{ env.LLVM_CACHE_SUFFIX }}
|
|
|
|
- name: Quit if cache miss
|
|
if: matrix.running_mode == 'aot' && steps.cache_llvm.outputs.cache-hit != 'true'
|
|
run: echo "::error::can not get prebuilt llvm libraries" && exit 1
|
|
|
|
- name: install SGX SDK and necessary libraries
|
|
run: |
|
|
mkdir -p /opt/intel
|
|
cd /opt/intel
|
|
wget https://download.01.org/intel-sgx/sgx-linux/2.15/distro/ubuntu20.04-server/sgx_linux_x64_sdk_2.15.100.3.bin
|
|
chmod +x sgx_linux_x64_sdk_2.15.100.3.bin
|
|
echo 'yes' | ./sgx_linux_x64_sdk_2.15.100.3.bin
|
|
echo 'deb [arch=amd64] https://download.01.org/intel-sgx/sgx_repo/ubuntu focal main' | sudo tee /etc/apt/sources.list.d/intel-sgx.list
|
|
wget -qO - https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key | sudo apt-key add -
|
|
sudo apt update
|
|
sudo apt install -y libsgx-launch libsgx-urts
|
|
|
|
- name: run spec tests
|
|
run: |
|
|
source /opt/intel/sgxsdk/environment
|
|
./test_wamr.sh ${{ matrix.test_option }} -t ${{ matrix.running_mode }}
|
|
working-directory: ./tests/wamr-test-suites
|