[goil] restore goil source code #140
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build compiler and examples | |
on: [push, pull_request] | |
env: | |
# Create a new and unique cache for each run, otherwise the cache from the previous actions would be used | |
CACHE_KEY: repo-${{ github.run_id }} | |
GOIL: ${{ github.workspace }}/goil/makefile-unix/goil | |
jobs: | |
goil-linux: | |
name: Build Goil compiler for Linux | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
fetch-depth: 0 | |
- name: Build Goil | |
run: ./build.py | |
working-directory: goil/makefile-unix | |
- name: Cache Goil build | |
# Cache the source and build files to share them later with other jobs | |
uses: actions/cache/save@v3 | |
with: | |
path: ${{ github.workspace }} | |
key: ${{ env.CACHE_KEY }} | |
goil-cygwin: | |
name: Build Goil compiler for Cygwin | |
runs-on: windows-latest | |
steps: | |
- name: Install Cygwin | |
uses: egor-tensin/setup-cygwin@v4 | |
with: | |
packages: gcc-g++ python | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
fetch-depth: 0 | |
- name: Build Goil | |
shell: C:\tools\cygwin\bin\bash.exe --login -o igncr '{0}' | |
# Do not use "working-directory:" because it would involve using the github.workspace variable, which is a Windows path incompatible with Bash | |
run: | | |
cd $GITHUB_WORKSPACE/goil/makefile-unix | |
python build.py | |
raspberry-pi-examples: | |
name: Build Raspberry Pi examples | |
runs-on: ubuntu-22.04 | |
needs: goil-linux | |
strategy: | |
matrix: | |
# List only the examples that currently compile | |
example_name: [blink] | |
steps: | |
- name: Install ARM toolchain | |
run: | | |
sudo apt update | |
sudo apt install -y gcc-arm-none-eabi | |
- name: Retrieve sources and Goil binary | |
uses: actions/cache/restore@v3 | |
with: | |
path: ${{ github.workspace }} | |
key: ${{ env.CACHE_KEY }} | |
- name: Generate the code | |
run: ${{ env.GOIL }} --target=cortex-a-r/armv7/bcm2836/rpi2 --templates=../../../../../../goil/templates/ ${{ matrix.example_name }}.oil | |
working-directory: examples/cortex-a-r/armv7/bcm2836/rpi2/${{ matrix.example_name }} | |
- name: Build the code | |
run: ./make.py | |
working-directory: examples/cortex-a-r/armv7/bcm2836/rpi2/${{ matrix.example_name }} | |
cortex-a-r-spider-examples: | |
name: Build Renesas Spider Cortex-R52 examples | |
runs-on: ubuntu-22.04 | |
needs: goil-linux | |
env: | |
ARM_TOOLCHAIN_NAME: arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-eabi | |
strategy: | |
matrix: | |
example_name: [blink, can_demo, iccom, one_task] | |
steps: | |
# A toolchain newer than the one included in Ubuntu 22.04 is needed | |
- name: Install ARM toolchain | |
run: | | |
wget https://developer.arm.com/-/media/Files/downloads/gnu/12.2.rel1/binrel/${{ env.ARM_TOOLCHAIN_NAME }}.tar.xz | |
sudo tar -xf ${{ env.ARM_TOOLCHAIN_NAME }}.tar.xz -C /opt | |
- name: Retrieve sources and Goil binary | |
uses: actions/cache/restore@v3 | |
with: | |
path: ${{ github.workspace }} | |
key: ${{ env.CACHE_KEY }} | |
- name: Generate the code | |
run: | | |
echo "$(realpath /opt/${{ env.ARM_TOOLCHAIN_NAME }}/bin)" >> $GITHUB_PATH | |
${{ env.GOIL }} --target=cortex-a-r/armv8/spider --templates=../../../../../goil/templates/ ${{ matrix.example_name }}.oil | |
working-directory: examples/cortex-a-r/armv8/spider/${{ matrix.example_name }} | |
- name: Build the code | |
run: | | |
echo "$(realpath /opt/${{ env.ARM_TOOLCHAIN_NAME }}/bin)" >> $GITHUB_PATH | |
./make.py | |
working-directory: examples/cortex-a-r/armv8/spider/${{ matrix.example_name }} | |
avr-arduino-uno-examples: | |
name: Build AVR Arduino Uno examples | |
runs-on: ubuntu-22.04 | |
needs: goil-linux | |
strategy: | |
matrix: | |
example_name: [blink, customCounterExample, extInterrupt, serial, trace] | |
steps: | |
- name: Install AVR toolchain | |
run: | | |
sudo apt update | |
sudo apt install -y avr-libc gcc-avr | |
- name: Retrieve sources and Goil binary | |
uses: actions/cache/restore@v3 | |
with: | |
path: ${{ github.workspace }} | |
key: ${{ env.CACHE_KEY }} | |
- name: Generate the code | |
# Use a wildcard to find the .oil file because it is not always named the same than the directory is it contained by | |
run: ${{ env.GOIL }} --target=avr/arduino/uno --templates=../../../../goil/templates/ *.oil | |
working-directory: examples/avr/arduinoUno/${{ matrix.example_name }} | |
- name: Build the code | |
run: ./make.py | |
working-directory: examples/avr/arduinoUno/${{ matrix.example_name }} | |
avr-arduino-mega-2560-examples: | |
name: Build AVR Arduino Mega 2560 examples | |
runs-on: ubuntu-22.04 | |
needs: goil-linux | |
strategy: | |
matrix: | |
example_name: [blink, extInterrupt, serial] | |
steps: | |
- name: Install AVR toolchain | |
run: | | |
sudo apt update | |
sudo apt install -y avr-libc gcc-avr | |
- name: Retrieve sources and Goil binary | |
uses: actions/cache/restore@v3 | |
with: | |
path: ${{ github.workspace }} | |
key: ${{ env.CACHE_KEY }} | |
- name: Generate the code | |
run: ${{ env.GOIL }} --target=avr/arduino/mega --templates=../../../../goil/templates/ ${{ matrix.example_name }}.oil | |
working-directory: examples/avr/arduinoMega2560/${{ matrix.example_name }} | |
- name: Build the code | |
run: ./make.py | |
working-directory: examples/avr/arduinoMega2560/${{ matrix.example_name }} | |
posix-examples: | |
name: Build POSIX examples | |
runs-on: ubuntu-22.04 | |
needs: goil-linux | |
strategy: | |
matrix: | |
example_name: [can_demo, events, ioc, isr, messages, one_task, periodic, trace_test] | |
steps: | |
- name: Retrieve sources and Goil binary | |
uses: actions/cache/restore@v3 | |
with: | |
path: ${{ github.workspace }} | |
key: ${{ env.CACHE_KEY }} | |
- name: Generate the code | |
run: ${{ env.GOIL }} --target=posix/linux --templates=../../../goil/templates/ ${{ matrix.example_name }}.oil | |
working-directory: examples/posix/${{ matrix.example_name }} | |
- name: Build the code | |
run: ./make.py | |
working-directory: examples/posix/${{ matrix.example_name }} | |
cortex-m-arduino-m0-examples: | |
name: Build Cortex-M Arduino M0 examples | |
runs-on: ubuntu-22.04 | |
needs: goil-linux | |
strategy: | |
matrix: | |
example_name: [blink] | |
steps: | |
- name: Install ARM toolchain | |
run: | | |
sudo apt update | |
sudo apt install -y gcc-arm-none-eabi | |
- name: Retrieve sources and Goil binary | |
uses: actions/cache/restore@v3 | |
with: | |
path: ${{ github.workspace }} | |
key: ${{ env.CACHE_KEY }} | |
- name: Generate the code | |
run: ${{ env.GOIL }} --target=cortex-m/armv6m/samd21/ArduinoM0 --templates=../../../../../../goil/templates/ ${{ matrix.example_name }}.oil | |
working-directory: examples/cortex-m/armv6m/samd21/ArduinoM0/${{ matrix.example_name }} | |
- name: Build the code | |
run: ./make.py | |
working-directory: examples/cortex-m/armv6m/samd21/ArduinoM0/${{ matrix.example_name }} | |
cortex-m-xplained-pro-examples: | |
name: Build Cortex-M Xplained Pro examples | |
runs-on: ubuntu-22.04 | |
needs: goil-linux | |
strategy: | |
matrix: | |
example_name: [blink, readbutton, readbutton_isr] | |
steps: | |
- name: Install ARM toolchain | |
run: | | |
sudo apt update | |
sudo apt install -y gcc-arm-none-eabi | |
- name: Retrieve sources and Goil binary | |
uses: actions/cache/restore@v3 | |
with: | |
path: ${{ github.workspace }} | |
key: ${{ env.CACHE_KEY }} | |
- name: Generate the code | |
run: ${{ env.GOIL }} --target=cortex-m/armv6m/samd21/XPlainedPro --templates=../../../../../../goil/templates/ ${{ matrix.example_name }}.oil | |
working-directory: examples/cortex-m/armv6m/samd21/XPlainedPro/${{ matrix.example_name }} | |
- name: Build the code | |
run: ./make.py | |
working-directory: examples/cortex-m/armv6m/samd21/XPlainedPro/${{ matrix.example_name }} | |
cortex-m-arduino-due-examples: | |
name: Build Cortex-M Arduino Due examples | |
runs-on: ubuntu-22.04 | |
needs: goil-linux | |
strategy: | |
matrix: | |
example_name: [blink] | |
steps: | |
- name: Install ARM toolchain | |
run: | | |
sudo apt update | |
sudo apt install -y gcc-arm-none-eabi | |
- name: Retrieve sources and Goil binary | |
uses: actions/cache/restore@v3 | |
with: | |
path: ${{ github.workspace }} | |
key: ${{ env.CACHE_KEY }} | |
- name: Generate the code | |
run: ${{ env.GOIL }} --target=cortex-m/armv7m/atsam3x8e/arduino_due --templates=../../../../../../goil/templates/ ${{ matrix.example_name }}.oil | |
working-directory: examples/cortex-m/armv7m/atsam3x8e/arduino_due/${{ matrix.example_name }} | |
- name: Build the code | |
run: ./make.py | |
working-directory: examples/cortex-m/armv7m/atsam3x8e/arduino_due/${{ matrix.example_name }} | |
cortex-m-smart-fusion-2-examples: | |
name: Build Cortex-M SmartFusion2 examples | |
runs-on: ubuntu-22.04 | |
needs: goil-linux | |
strategy: | |
matrix: | |
example_name: [blink, blinkAndFPGA] | |
steps: | |
- name: Install ARM toolchain | |
run: | | |
sudo apt update | |
sudo apt install -y gcc-arm-none-eabi | |
- name: Retrieve sources and Goil binary | |
uses: actions/cache/restore@v3 | |
with: | |
path: ${{ github.workspace }} | |
key: ${{ env.CACHE_KEY }} | |
- name: Generate the code | |
run: ${{ env.GOIL }} --target=cortex-m/armv7m/SmartFusion2 --templates=../../../../../../goil/templates/ ${{ matrix.example_name }}.oil | |
working-directory: examples/cortex-m/armv7m/SmartFusion2/starterKit/${{ matrix.example_name }} | |
- name: Build the code | |
run: ./make.py | |
working-directory: examples/cortex-m/armv7m/SmartFusion2/starterKit/${{ matrix.example_name }} | |
cortex-m-corolab-f303-examples: | |
name: Build Cortex-M coroLab-F303 examples | |
runs-on: ubuntu-22.04 | |
needs: goil-linux | |
strategy: | |
matrix: | |
example_name: [base, baseCMake, trace] | |
steps: | |
- name: Install ARM toolchain | |
run: | | |
sudo apt update | |
sudo apt install -y gcc-arm-none-eabi | |
- name: Retrieve sources and Goil binary | |
uses: actions/cache/restore@v3 | |
with: | |
path: ${{ github.workspace }} | |
key: ${{ env.CACHE_KEY }} | |
- name: Generate the code | |
run: ${{ env.GOIL }} --target=cortex-m/armv7em/stm32f303/coroLabBoard --templates=../../../../../../goil/templates/ ${{ matrix.example_name }}.oil | |
working-directory: examples/cortex-m/armv7em/stm32f303/coroLab/${{ matrix.example_name }} | |
- name: Build the code | |
run: | | |
if [ -e CMakeLists.txt ] | |
then | |
cmake . | |
make -j $(nproc) | |
else | |
./make.py | |
fi | |
working-directory: examples/cortex-m/armv7em/stm32f303/coroLab/${{ matrix.example_name }} | |
cortex-m-smart-nucleo-f303-examples: | |
name: Build Cortex-M Nucleo-F303 examples | |
runs-on: ubuntu-22.04 | |
needs: goil-linux | |
strategy: | |
matrix: | |
example_name: [blink, readbutton_isr, serial, trace] | |
steps: | |
- name: Install ARM toolchain | |
run: | | |
sudo apt update | |
sudo apt install -y gcc-arm-none-eabi | |
- name: Retrieve sources and Goil binary | |
uses: actions/cache/restore@v3 | |
with: | |
path: ${{ github.workspace }} | |
key: ${{ env.CACHE_KEY }} | |
- name: Generate the code | |
run: ${{ env.GOIL }} --target=cortex-m/armv7em/stm32f303 --templates=../../../../../../goil/templates/ ${{ matrix.example_name }}.oil | |
working-directory: examples/cortex-m/armv7em/stm32f303/Nucleo-32/${{ matrix.example_name }} | |
- name: Build the code | |
run: ./make.py | |
working-directory: examples/cortex-m/armv7em/stm32f303/Nucleo-32/${{ matrix.example_name }} | |
cortex-m-smart-nucleo-l432-examples: | |
name: Build Cortex-M Nucleo-F432 examples | |
runs-on: ubuntu-22.04 | |
needs: goil-linux | |
strategy: | |
matrix: | |
example_name: [blink, readbutton, readbutton_isr, serial, trace] | |
steps: | |
- name: Install ARM toolchain | |
run: | | |
sudo apt update | |
sudo apt install -y gcc-arm-none-eabi | |
- name: Retrieve sources and Goil binary | |
uses: actions/cache/restore@v3 | |
with: | |
path: ${{ github.workspace }} | |
key: ${{ env.CACHE_KEY }} | |
- name: Generate the code | |
run: ${{ env.GOIL }} --target=cortex-m/armv7em/stm32l432 --templates=../../../../../../goil/templates/ ${{ matrix.example_name }}.oil | |
working-directory: examples/cortex-m/armv7em/stm32l432/Nucleo-32/${{ matrix.example_name }} | |
- name: Build the code | |
run: ./make.py | |
working-directory: examples/cortex-m/armv7em/stm32l432/Nucleo-32/${{ matrix.example_name }} | |
cortex-m-smart-stm32f4discovery-examples: | |
name: Build Cortex-M STM32F4DISCOVERY examples | |
runs-on: ubuntu-22.04 | |
needs: goil-linux | |
strategy: | |
matrix: | |
example_name: [alarms, blink, readbutton, readbutton_isr, readbutton_isr1, testDisableEnable, timer] | |
steps: | |
- name: Install ARM toolchain | |
run: | | |
sudo apt update | |
sudo apt install -y gcc-arm-none-eabi | |
- name: Retrieve sources and Goil binary | |
uses: actions/cache/restore@v3 | |
with: | |
path: ${{ github.workspace }} | |
key: ${{ env.CACHE_KEY }} | |
- name: Generate the code | |
run: ${{ env.GOIL }} --target=cortex-m/armv7em/stm32f407/stm32f4discovery --templates=../../../../../../goil/templates/ ${{ matrix.example_name }}.oil | |
working-directory: examples/cortex-m/armv7em/stm32f407/stm32f4discovery/${{ matrix.example_name }} | |
- name: Build the code | |
run: ./make.py | |
working-directory: examples/cortex-m/armv7em/stm32f407/stm32f4discovery/${{ matrix.example_name }} |