| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- # Copyright (C) 2019 Intel Corporation. All rights reserved.
- # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- name: spec test on nuttx
- on:
- schedule:
- - cron: '0 0 * * *'
- workflow_dispatch:
- env:
- LLVM_CACHE_SUFFIX: "build-llvm_libraries_ex"
- WASI_SDK_PATH: "/opt/wasi-sdk"
- jobs:
- build_llvm_libraries:
- uses: ./.github/workflows/build_llvm_libraries.yml
- with:
- os: "ubuntu-22.04"
- arch: "ARM RISCV AArch64"
- spec_test_on_qemu:
- runs-on: ${{ matrix.os }}
- needs: [build_llvm_libraries]
- strategy:
- matrix:
- os: [ubuntu-22.04]
- nuttx_board_config: [
- # cortex-a9
- "boards/arm/imx6/sabre-6quad/configs/nsh",
- # riscv32imac
- "boards/risc-v/qemu-rv/rv-virt/configs/nsh",
- # riscv64imac
- # "boards/risc-v/qemu-rv/rv-virt/configs/nsh64",
- ]
- wamr_test_option: [
- # "-t fast-interp",
- "-t aot",
- "-t aot -X"
- ]
- llvm_cache_key: [ "${{ needs.build_llvm_libraries.outputs.cache_key }}" ]
- steps:
- - name: Install Utilities
- run: |
- sudo apt install -y kconfig-frontends-nox genromfs
- - name: Install ARM Compilers
- if: contains(matrix.nuttx_board_config, 'arm')
- run: sudo apt install -y gcc-arm-none-eabi
- - name: Install RISC-V Compilers
- if: contains(matrix.nuttx_board_config, 'risc-v')
- run: |
- curl -L https://static.dev.sifive.com/dev-tools/freedom-tools/v2020.12/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14.tar.gz > riscv.tar.gz
- tar xvf riscv.tar.gz
- echo "$PWD/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14/bin" >> $GITHUB_PATH
- - name: Install WASI-SDK
- run: |
- curl -L https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-19/wasi-sdk-19.0-linux.tar.gz > wasi-sdk.tar.gz
- tar xvf wasi-sdk.tar.gz
- sudo mv wasi-sdk-* /opt/wasi-sdk
- - name: Checkout NuttX
- uses: actions/checkout@v3
- with:
- repository: apache/incubator-nuttx
- path: nuttx
- - name: Checkout NuttX Apps
- uses: actions/checkout@v3
- with:
- repository: apache/incubator-nuttx-apps
- path: apps
- - name: Checkout WAMR
- uses: actions/checkout@v3
- with:
- repository: ${{ github.repository }}
- path: apps/interpreters/wamr/wamr
- - name: Get LLVM libraries
- id: retrieve_llvm_libs
- 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.llvm_cache_key }}
- - name: Quit if cache miss
- if: steps.retrieve_llvm_libs.outputs.cache-hit != 'true'
- run: echo "::error::can not get prebuilt llvm libraries" && exit 1
- - name: Copy LLVM
- run: cp -r core/deps/llvm apps/interpreters/wamr/wamr/core/deps/llvm
- - name: Enable WAMR for NuttX
- run: |
- find nuttx/boards -name defconfig | xargs sed -i '$a\CONFIG_INTERPRETERS_WAMR=y\nCONFIG_INTERPRETERS_WAMR_AOT=y\nCONFIG_INTERPRETERS_WAMR_FAST=y\nCONFIG_INTERPRETERS_WAMR_LOG=y\nCONFIG_INTERPRETERS_WAMR_LIBC_BUILTIN=y\nCONFIG_INTERPRETERS_WAMR_REF_TYPES=y\nCONFIG_INTERPRETERS_WAMR_ENABLE_SPEC_TEST=y\nCONFIG_INTERPRETERS_WAMR_SHARED_MEMORY=y\nCONFIG_INTERPRETERS_WAMR_BULK_MEMORY=y\n'
- find nuttx/boards -name defconfig | xargs sed -i '$a\CONFIG_EOL_IS_LF=y\nCONFIG_ARM_SEMIHOSTING_HOSTFS=y\nCONFIG_ARM_SEMIHOSTING_HOSTFS_CACHE_COHERENCE=y\nCONFIG_RISCV_SEMIHOSTING_HOSTFS=y\nCONFIG_FS_HOSTFS=y\nCONFIG_LIBC_FLOATINGPOINT=y\n'
- - name: Build wamrc
- working-directory: apps/interpreters/wamr/wamr/wamr-compiler
- run: |
- cmake -Bbuild .
- cmake --build build
- - name: Build
- run: |
- cd nuttx
- tools/configure.sh ${{ matrix.nuttx_board_config }}
- make -j$(nproc)
- echo "firmware=$PWD/nuttx" >> $GITHUB_ENV
- - name: Test on ARM
- if: endsWith(matrix.nuttx_board_config, 'sabre-6quad/configs/nsh')
- run: |
- curl -L https://github.com/xpack-dev-tools/qemu-arm-xpack/releases/download/v7.1.0-1/xpack-qemu-arm-7.1.0-1-linux-x64.tar.gz > xpack-qemu-arm.tar.gz
- tar xvf xpack-qemu-arm.tar.gz
- export PATH=$PATH:$PWD/xpack-qemu-arm-7.1.0-1/bin
- cd apps/interpreters/wamr/wamr/tests/wamr-test-suites
- ./test_wamr.sh -s spec ${{ matrix.wamr_test_option }} -m thumbv7_vfp -b -Q -P -F ${{ env.firmware }}
- - name: Test on RISCV32
- if: endsWith(matrix.nuttx_board_config, 'rv-virt/configs/nsh')
- run: |
- curl -L https://github.com/xpack-dev-tools/qemu-riscv-xpack/releases/download/v7.1.0-1/xpack-qemu-riscv-7.1.0-1-linux-x64.tar.gz > xpack-qemu-riscv.tar.gz
- tar xvf xpack-qemu-riscv.tar.gz
- export PATH=$PATH:$PWD/xpack-qemu-riscv-7.1.0-1/bin
- cd apps/interpreters/wamr/wamr/tests/wamr-test-suites
- ./test_wamr.sh -s spec ${{ matrix.wamr_test_option }} -m RISCV32 -b -Q -P -F ${{ env.firmware }}
- - name: Test on RISCV64
- if: endsWith(matrix.nuttx_board_config, 'rv-virt/configs/nsh64')
- run: |
- curl -L https://github.com/xpack-dev-tools/qemu-riscv-xpack/releases/download/v7.1.0-1/xpack-qemu-riscv-7.1.0-1-linux-x64.tar.gz > xpack-qemu-riscv.tar.gz
- tar xvf xpack-qemu-riscv.tar.gz
- export PATH=$PATH:$PWD/xpack-qemu-riscv-7.1.0-1/bin
- cd apps/interpreters/wamr/wamr/tests/wamr-test-suites
- ./test_wamr.sh -s spec ${{ matrix.wamr_test_option }} -m riscv64 -b -Q -P -F ${{ env.firmware }}
|