| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- # Copyright (C) 2019 Intel Corporation. All rights reserved.
- # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- name: compilation on nuttx
- on:
- # will be triggered on PR events
- pull_request:
- types:
- - opened
- - synchronize
- paths:
- - ".github/workflows/compilation_on_nuttx.yml"
- - "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/workflows/compilation_on_nuttx.yml"
- - "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:
- WASI_SDK_PATH: "/opt/wasi-sdk"
- jobs:
- build_iwasm_on_nuttx:
- runs-on: ubuntu-22.04
- strategy:
- matrix:
- nuttx_board_config: [
- # x64
- "boards/sim/sim/sim/configs/nsh",
- # cortex-m0
- "boards/arm/rp2040/raspberrypi-pico/configs/nsh",
- # cortex-m7
- "boards/arm/stm32h7/nucleo-h743zi/configs/nsh",
- # riscv32imac
- "boards/risc-v/qemu-rv/rv-virt/configs/nsh",
- # riscv64imac
- "boards/risc-v/qemu-rv/rv-virt/configs/nsh64",
- # riscv64gc
- "boards/risc-v/k210/maix-bit/configs/nsh",
- ]
- wamr_config_option: [
- "CONFIG_INTERPRETERS_WAMR=y\\nCONFIG_INTERPRETERS_WAMR_AOT=y\\nCONFIG_INTERPRETERS_WAMR_FAST=y\\n",
- "CONFIG_INTERPRETERS_WAMR=y\\nCONFIG_INTERPRETERS_WAMR_AOT=y\\nCONFIG_INTERPRETERS_WAMR_FAST=y\\nCONFIG_INTERPRETERS_WAMR_LIBC_WASI=y\\n",
- "CONFIG_INTERPRETERS_WAMR=y\\nCONFIG_INTERPRETERS_WAMR_AOT=y\\nCONFIG_INTERPRETERS_WAMR_FAST=y\\nCONFIG_INTERPRETERS_WAMR_LIBC_BUILTIN=y\\n",
- "CONFIG_INTERPRETERS_WAMR=y\\nCONFIG_INTERPRETERS_WAMR_AOT=y\\nCONFIG_INTERPRETERS_WAMR_CLASSIC=y\\n",
- "CONFIG_INTERPRETERS_WAMR=y\\nCONFIG_INTERPRETERS_WAMR_AOT=y\\nCONFIG_INTERPRETERS_WAMR_CLASSIC=y\\nCONFIG_INTERPRETERS_WAMR_LIBC_WASI=y\\n",
- "CONFIG_INTERPRETERS_WAMR=y\\nCONFIG_INTERPRETERS_WAMR_AOT=y\\nCONFIG_INTERPRETERS_WAMR_CLASSIC=y\\nCONFIG_INTERPRETERS_WAMR_LIBC_BUILTIN=y\\n",
- "CONFIG_INTERPRETERS_WAMR=y\\nCONFIG_INTERPRETERS_WAMR_AOT=y\\nCONFIG_INTERPRETERS_WAMR_LIBC_BUILTIN=y\\n",
- "CONFIG_INTERPRETERS_WAMR=y\\nCONFIG_INTERPRETERS_WAMR_AOT=y\\n",
- "CONFIG_INTERPRETERS_WAMR=y\\nCONFIG_INTERPRETERS_WAMR_FAST=y\\n",
- "CONFIG_INTERPRETERS_WAMR=y\\nCONFIG_INTERPRETERS_WAMR_CLASSIC=y\\n",
- ]
- steps:
- - name: Install Utilities
- run: |
- sudo apt install -y kconfig-frontends-nox genromfs
- pip3 install pyelftools
- pip3 install cxxfilt
- - 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 -k 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: Enable WAMR for NuttX
- run: |
- find nuttx/boards -name defconfig | xargs sed -i '$a\CONFIG_EOL_IS_LF=y\nCONFIG_PSEUDOFS_SOFTLINKS=y\n${{ matrix.wamr_config_option }}'
- find nuttx/boards/sim -name defconfig | xargs sed -i '$a\CONFIG_LIBM=y\n'
- - name: Build
- run: |
- cd nuttx
- tools/configure.sh ${{ matrix.nuttx_board_config }}
- make -j$(nproc) EXTRAFLAGS=-Werror
|