286 lines
16 KiB
YAML
286 lines
16 KiB
YAML
# https://github.com/Arduino-IRremote/Arduino-IRremote/blob/master/.github/workflows/LibraryBuild.yml
|
|
# Github workflow script to test compile all examples of an Arduino library repository.
|
|
#
|
|
# Copyright (C) 2020 Armin Joachimsmeyer
|
|
# https://github.com/ArminJo/Github-Actions
|
|
#
|
|
# Before being able to push to my .github\workflows directories,
|
|
# I had to create a new personal token with workflow enabled at https://github.com/settings/tokens
|
|
|
|
# This is the name of the workflow, visible on GitHub UI.
|
|
name: LibraryBuild
|
|
on:
|
|
workflow_dispatch: # To run it manually
|
|
description: 'manual build check'
|
|
push: # see: https://help.github.com/en/actions/reference/events-that-trigger-workflows#pull-request-event-pull_request
|
|
paths:
|
|
- '**.ino'
|
|
- '**.cpp'
|
|
- '**.hpp'
|
|
- '**.h'
|
|
- '**LibraryBuild.yml'
|
|
pull_request:
|
|
paths:
|
|
- '**.ino'
|
|
- '**.cpp'
|
|
- '**.hpp'
|
|
- '**.h'
|
|
- '**LibraryBuild.yml'
|
|
|
|
jobs:
|
|
build:
|
|
name: ${{ matrix.arduino-boards-fqbn }} - test compiling examples
|
|
|
|
runs-on: ubuntu-22.04 # I picked Ubuntu to use shell scripts.
|
|
|
|
strategy:
|
|
matrix:
|
|
# The matrix will produce one job for each configuration parameter of type `arduino-boards-fqbn`
|
|
# In the Arduino IDE, the fqbn is printed in the first line of the verbose output for compilation as parameter -fqbn=... for the "arduino-builder -dump-prefs" command
|
|
#
|
|
# Examples: arduino:avr:uno, arduino:avr:leonardo, arduino:avr:nano, arduino:avr:mega
|
|
# arduino:sam:arduino_due_x, arduino:samd:arduino_zero_native"
|
|
# ATTinyCore:avr:attinyx5:chip=85,clock=1internal, digistump:avr:digispark-tiny, digistump:avr:digispark-pro
|
|
# STMicroelectronics:stm32:GenF1:pnum=BLUEPILL_F103C8
|
|
# esp8266:esp8266:huzzah:eesz=4M3M,xtal=80, esp32:esp32:featheresp32:FlashFreq=80
|
|
# You may add a suffix behind the fqbn with "|" to specify one board for e.g. different compile options like arduino:avr:uno|trace
|
|
#############################################################################################################
|
|
arduino-boards-fqbn:
|
|
- arduino:avr:uno
|
|
- arduino:avr:uno|DEBUG
|
|
- arduino:avr:uno|USE_NO_SEND_PWM
|
|
- arduino:avr:uno|SEND_PWM_BY_TIMER
|
|
- arduino:avr:uno|USE_OPEN_DRAIN_OUTPUT_FOR_SEND_PIN
|
|
- arduino:avr:mega:cpu=atmega2560
|
|
- arduino:avr:leonardo
|
|
- arduino:megaavr:nona4809:mode=off
|
|
- arduino:samd:arduino_zero_native
|
|
- adafruit:samd:adafruit_metro_m4:cache=on,speed=120,opt=small,maxqspi=50,usbstack=arduino,debug=off
|
|
- arduino:mbed:nano33ble
|
|
- arduino:mbed_rp2040:pico
|
|
- rp2040:rp2040:arduino_nano_connect
|
|
- digistump:avr:digispark-tiny:clock=clock16
|
|
- ATTinyCore:avr:attinyx5micr:LTO=enable,sketchclock=16pll
|
|
- ATTinyCore:avr:attinyx7micr:LTO=enable,sketchclock=16external,pinmapping=new,millis=enabled
|
|
- ATTinyCore:avr:attinyx8micr:LTO=enable,sketchclock=16external,pinmapping=mhtiny,millis=enabled # ATtiny88 China clone board @16 MHz
|
|
- MegaCore:avr:128:bootloader=no_bootloader,eeprom=keep,BOD=2v7,LTO=Os_flto,clock=8MHz_internal # ATmega128
|
|
- SparkFun:avr:promicro
|
|
- megaTinyCore:megaavr:atxy4:chip=1604,clock=16internal
|
|
- megaTinyCore:megaavr:atxy7:chip=3217,clock=16internal
|
|
- esp8266:esp8266:d1_mini:eesz=4M3M,xtal=80
|
|
- esp32:esp32:featheresp32:FlashFreq=80
|
|
- STMicroelectronics:stm32:GenF1:pnum=BLUEPILL_F103C8
|
|
- STMicroelectronics:stm32:GenL0:pnum=THUNDERPACK_L072
|
|
- stm32duino:STM32F1:genericSTM32F103C
|
|
- sandeepmistry:nRF5:BBCmicrobit
|
|
- Seeeduino:samd:seeed_XIAO_m0:usbstack=arduino,debug=off,sercom4=include
|
|
|
|
# Specify parameters for each board.
|
|
# With sketches-exclude you may exclude specific examples for a board. Use a comma separated list.
|
|
#############################################################################################################
|
|
include:
|
|
- arduino-boards-fqbn: arduino:avr:uno
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags
|
|
IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=100 -DIR_SEND_PIN=3
|
|
|
|
- arduino-boards-fqbn: arduino:avr:uno|DEBUG
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags
|
|
IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=100 -DIR_SEND_PIN=3
|
|
All: -DEBUG
|
|
|
|
- arduino-boards-fqbn: arduino:avr:uno|USE_NO_SEND_PWM
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags
|
|
IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=100 -DIR_SEND_PIN=3
|
|
TinyReceiver: -DUSE_FAST_PROTOCOL
|
|
TinySender: -DUSE_FAST_PROTOCOL
|
|
All: -DUSE_NO_SEND_PWM
|
|
|
|
- arduino-boards-fqbn: arduino:avr:uno|SEND_PWM_BY_TIMER
|
|
sketches-exclude: UnitTest
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags
|
|
IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=100 -DIR_SEND_PIN=3 -DSEND_PWM_BY_TIMER
|
|
TinyReceiver: -DUSE_ONKYO_PROTOCOL
|
|
TinySender: -DUSE_ONKYO_PROTOCOL
|
|
All: -DSEND_PWM_BY_TIMER
|
|
|
|
- arduino-boards-fqbn: arduino:avr:uno|USE_OPEN_DRAIN_OUTPUT_FOR_SEND_PIN
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags
|
|
IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=100 -DIR_SEND_PIN=3 -DUSE_OPEN_DRAIN_OUTPUT_FOR_SEND_PIN
|
|
SimpleSender: -DSEND_PWM_BY_TIMER
|
|
TinyReceiver: -DENABLE_NEC2_REPEATS
|
|
TinySender: -DENABLE_NEC2_REPEATS
|
|
All: -DUSE_OPEN_DRAIN_OUTPUT_FOR_SEND_PIN
|
|
|
|
- arduino-boards-fqbn: arduino:avr:mega:cpu=atmega2560
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags
|
|
IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=700
|
|
SimpleSender: -DSEND_PWM_BY_TIMER
|
|
TinyReceiver: -DDISABLE_PARITY_CHECKS
|
|
TinySender: -DDISABLE_PARITY_CHECKS
|
|
|
|
- arduino-boards-fqbn: arduino:avr:leonardo
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags
|
|
IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=100
|
|
TinyReceiver: -DNO_LED_FEEDBACK_CODE
|
|
TinySender: -DNO_LED_FEEDBACK_CODE
|
|
# sketches-exclude: ReceiveAndSend # Not enough RAM for default RAW_BUFFER_LENGTH
|
|
|
|
- arduino-boards-fqbn: arduino:megaavr:nona4809:mode=off
|
|
sketches-exclude: TinyReceiver,IRDispatcherDemo
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags
|
|
IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=100
|
|
SimpleSender: -DSEND_PWM_BY_TIMER
|
|
TinyReceiver: -DUSE_ONKYO_PROTOCOL -DENABLE_NEC2_REPEATS -DNO_LED_FEEDBACK_CODE
|
|
TinySender: -DUSE_ONKYO_PROTOCOL -DENABLE_NEC2_REPEATS -DNO_LED_FEEDBACK_CODE
|
|
|
|
- arduino-boards-fqbn: arduino:samd:arduino_zero_native
|
|
sketches-exclude: TinyReceiver,IRDispatcherDemo
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags
|
|
IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=100
|
|
|
|
- arduino-boards-fqbn: adafruit:samd:adafruit_metro_m4:cache=on,speed=120,opt=small,maxqspi=50,usbstack=arduino,debug=off
|
|
platform-url: https://adafruit.github.io/arduino-board-index/package_adafruit_index.json
|
|
sketches-exclude: TinyReceiver,IRDispatcherDemo
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags
|
|
IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=100
|
|
|
|
- arduino-boards-fqbn: arduino:mbed:nano33ble
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags
|
|
IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=100
|
|
SimpleSender: -DSEND_PWM_BY_TIMER
|
|
|
|
- arduino-boards-fqbn: arduino:mbed_rp2040:pico
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags
|
|
IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=100
|
|
SimpleSender: -DSEND_PWM_BY_TIMER
|
|
|
|
- arduino-boards-fqbn: rp2040:rp2040:arduino_nano_connect
|
|
platform-url: https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags
|
|
IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=100 -DSEND_PWM_BY_TIMER
|
|
SimpleSender: -DSEND_PWM_BY_TIMER
|
|
All: -DRAW_BUFFER_LENGTH=700
|
|
|
|
- arduino-boards-fqbn: megaTinyCore:megaavr:atxy4:chip=1604,clock=16internal
|
|
arduino-platform: megaTinyCore:megaavr@2.5.11 # The current 2.6.0 is broken see https://github.com/SpenceKonde/megaTinyCore/issues/805
|
|
platform-url: http://drazzy.com/package_drazzy.com_index.json
|
|
sketches-exclude: AllProtocolsOnLCD
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags
|
|
IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=100
|
|
|
|
- arduino-boards-fqbn: megaTinyCore:megaavr:atxy7:chip=3217,clock=16internal
|
|
arduino-platform: megaTinyCore:megaavr@2.5.11
|
|
platform-url: http://drazzy.com/package_drazzy.com_index.json
|
|
sketches-exclude: AllProtocolsOnLCD
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags
|
|
IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=100
|
|
|
|
- arduino-boards-fqbn: digistump:avr:digispark-tiny:clock=clock16
|
|
platform-url: https://raw.githubusercontent.com/ArminJo/DigistumpArduino/master/package_digistump_index.json
|
|
required-libraries: ATtinySerialOut
|
|
sketch-names: TinyReceiver.ino,IRremoteInfo.ino,SimpleReceiver.ino,ControlRelay.ino,SimpleSender.ino,SendDemo.ino,SendRawDemo.ino,SendAndReceive.ino
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags
|
|
SimpleSender: -DSEND_PWM_BY_TIMER
|
|
|
|
- arduino-boards-fqbn: ATTinyCore:avr:attinyx5micr:LTO=enable,sketchclock=16pll
|
|
platform-url: http://drazzy.com/package_drazzy.com_index.json
|
|
required-libraries: ATtinySerialOut
|
|
sketch-names: TinyReceiver.ino,IRremoteInfo.ino,SimpleReceiver.ino,ReceiveDemo.ino,ControlRelay.ino,SimpleSender.ino,SendDemo.ino,SendRawDemo.ino,SendAndReceive.ino
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags
|
|
SimpleSender: -DSEND_PWM_BY_TIMER
|
|
|
|
- arduino-boards-fqbn: ATTinyCore:avr:attinyx7micr:LTO=enable,sketchclock=16external,pinmapping=new,millis=enabled
|
|
platform-url: http://drazzy.com/package_drazzy.com_index.json
|
|
required-libraries: ATtinySerialOut
|
|
sketch-names: TinyReceiver.ino,IRremoteInfo.ino,SimpleReceiver.ino,ReceiveDemo.ino,ControlRelay.ino,SimpleSender.ino,SendDemo.ino,SendRawDemo.ino,SendAndReceive.ino
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags
|
|
SimpleSender: -DSEND_PWM_BY_TIMER
|
|
|
|
- arduino-boards-fqbn: ATTinyCore:avr:attinyx8micr:LTO=enable,sketchclock=16external,pinmapping=mhtiny,millis=enabled # ATtiny88 China clone board @16 MHz
|
|
platform-url: http://drazzy.com/package_drazzy.com_index.json
|
|
required-libraries: ATtinySerialOut
|
|
sketch-names: TinyReceiver.ino,IRremoteInfo.ino,SimpleReceiver.ino,ReceiveDemo.ino,ControlRelay.ino,SimpleSender.ino,SendDemo.ino,SendRawDemo.ino,SendAndReceive.ino
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags
|
|
SimpleSender: -DSEND_PWM_BY_TIMER
|
|
|
|
- arduino-boards-fqbn: MegaCore:avr:128:bootloader=no_bootloader,eeprom=keep,BOD=2v7,LTO=Os_flto,clock=8MHz_internal
|
|
platform-url: https://mcudude.github.io/MegaCore/package_MCUdude_MegaCore_index.json
|
|
arduino-platform: arduino:avr,MegaCore:avr # gcc is taken from arduino:avr
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags
|
|
IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=300
|
|
SimpleSender: -DSEND_PWM_BY_TIMER
|
|
All: -DRAW_BUFFER_LENGTH=700
|
|
|
|
- arduino-boards-fqbn: esp8266:esp8266:d1_mini:eesz=4M3M,xtal=80
|
|
platform-url: https://arduino.esp8266.com/stable/package_esp8266com_index.json
|
|
sketches-exclude: TinyReceiver
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags
|
|
IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=200
|
|
All: -DRAW_BUFFER_LENGTH=300
|
|
|
|
- arduino-boards-fqbn: esp32:esp32:featheresp32:FlashFreq=80
|
|
platform-url: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
|
|
sketches-exclude: TinyReceiver # undefined reference to `TwoWire::onReceive(void (*)(int))'
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags. SEND_PWM_BY_TIMER is always enabled!
|
|
IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=500 -Wno-error=maybe-uninitialized
|
|
All: -DRAW_BUFFER_LENGTH=300 -Wno-error=maybe-uninitialized # https://github.com/espressif/arduino-esp32/issues/7024
|
|
|
|
- arduino-boards-fqbn: STMicroelectronics:stm32:GenF1:pnum=BLUEPILL_F103C8 # ST version
|
|
platform-url: https://raw.githubusercontent.com/stm32duino/BoardManagerFiles/main/package_stmicroelectronics_index.json
|
|
sketches-exclude: TinyReceiver
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags
|
|
IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=700
|
|
All: -DRAW_BUFFER_LENGTH=300
|
|
|
|
- arduino-boards-fqbn: STMicroelectronics:stm32:GenL0:pnum=THUNDERPACK_L072 # ST version
|
|
platform-url: https://raw.githubusercontent.com/stm32duino/BoardManagerFiles/main/package_stmicroelectronics_index.json
|
|
sketches-exclude: TinyReceiver,IRDispatcherDemo
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags
|
|
IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=700
|
|
All: -DRAW_BUFFER_LENGTH=300
|
|
|
|
- arduino-boards-fqbn: stm32duino:STM32F1:genericSTM32F103C # Roger Clark version
|
|
platform-url: http://dan.drown.org/stm32duino/package_STM32duino_index.json
|
|
sketches-exclude: TinyReceiver
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags
|
|
IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=700
|
|
All: -DRAW_BUFFER_LENGTH=300
|
|
|
|
- arduino-boards-fqbn: SparkFun:avr:promicro
|
|
arduino-platform: arduino:avr,SparkFun:avr
|
|
platform-url: https://raw.githubusercontent.com/sparkfun/Arduino_Boards/master/IDE_Board_Manager/package_sparkfun_index.json # Arduino URL is not required here
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags. SEND_PWM_BY_TIMER is always enabled!
|
|
IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=700
|
|
All: -DRAW_BUFFER_LENGTH=300
|
|
|
|
- arduino-boards-fqbn: sandeepmistry:nRF5:BBCmicrobit
|
|
platform-url: https://sandeepmistry.github.io/arduino-nRF5/package_nRF5_boards_index.json
|
|
sketches-exclude: IRDispatcherDemo,MicroGirs,TinyReceiver
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags
|
|
IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=700
|
|
All: -DRAW_BUFFER_LENGTH=300
|
|
|
|
- arduino-boards-fqbn: Seeeduino:samd:seeed_XIAO_m0:usbstack=arduino,debug=off,sercom4=include
|
|
platform-url: https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json
|
|
sketches-exclude: AllProtocolsOnLCD,UnitTest,ReceiveAndSendDistanceWidth # No print(uint64_t,.) available
|
|
build-properties: # the flags were put in compiler.cpp.extra_flags
|
|
IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=700
|
|
All: -DRAW_BUFFER_LENGTH=300
|
|
|
|
# fail-fast: false # false -> do not cancel all jobs / architectures if one job fails
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@master
|
|
|
|
- name: Compile all examples using the arduino-test-compile action
|
|
uses: ArminJo/arduino-test-compile@master
|
|
with:
|
|
arduino-board-fqbn: ${{ matrix.arduino-boards-fqbn }}
|
|
arduino-platform: ${{ matrix.arduino-platform }}
|
|
platform-url: ${{ matrix.platform-url }}
|
|
required-libraries: ${{ matrix.required-libraries }}
|
|
sketch-names: ${{ matrix.sketch-names }}
|
|
sketches-exclude: ${{ matrix.sketches-exclude }}
|
|
build-properties: ${{ toJson(matrix.build-properties) }}
|