summaryrefslogtreecommitdiffstats
path: root/src/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/.github/workflows/compilation_on_nuttx.yml
blob: f338c8dea7bab78f3bc60bfe391215b30d0b3d11 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# 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 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