# 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-2023 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 # 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 - arduino:renesas_uno:unor4wifi - 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 # - 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 # https://github.com/SpenceKonde/megaTinyCore/issues/935 # - megaTinyCore:megaavr:atxy7:chip=3217,clock=16internal # https://github.com/SpenceKonde/megaTinyCore/issues/935 - esp8266:esp8266:d1_mini:eesz=4M3M,xtal=80 - esp32:esp32:featheresp32:FlashFreq=80 - esp32:esp32:esp32c3 - 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 ReceiveDemo: -DIR_REMOTE_DISABLE_RECEIVE_COMPLETE_CALLBACK IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=1200 -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=750 -DIR_SEND_PIN=3 TinyReceiver: -DUSE_CALLBACK_FOR_TINY_RECEIVER 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=750 -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=750 -DIR_SEND_PIN=3 -DSEND_PWM_BY_TIMER ReceiveDemo: -DDECODE_ONKYO 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=750 -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=750 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=750 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=750 SimpleSender: -DSEND_PWM_BY_TIMER TinyReceiver: -DUSE_ONKYO_PROTOCOL -DENABLE_NEC2_REPEATS -DNO_LED_FEEDBACK_CODE -DUSE_CALLBACK_FOR_TINY_RECEIVER 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=750 - arduino-boards-fqbn: arduino:renesas_uno:unor4wifi sketches-exclude: TinyReceiver,IRDispatcherDemo build-properties: # the flags were put in compiler.cpp.extra_flags IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=750 - 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=750 - arduino-boards-fqbn: arduino:mbed:nano33ble build-properties: # the flags were put in compiler.cpp.extra_flags IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=750 SimpleSender: -DSEND_PWM_BY_TIMER # # RP2040 # - arduino-boards-fqbn: arduino:mbed_rp2040:pico build-properties: # the flags were put in compiler.cpp.extra_flags IRremoteExtensionTest: -DRAW_BUFFER_LENGTH=750 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: -DSEND_PWM_BY_TIMER SimpleSender: -DSEND_PWM_BY_TIMER All: -DRAW_BUFFER_LENGTH=750 # # megaTinyCore # # https://github.com/SpenceKonde/megaTinyCore/issues/935 # - arduino-boards-fqbn: megaTinyCore:megaavr:atxy4:chip=1604,clock=16internal # arduino-platform: megaTinyCore:megaavr # 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=360 # https://github.com/SpenceKonde/megaTinyCore/issues/935 # - arduino-boards-fqbn: megaTinyCore:megaavr:atxy7:chip=3217,clock=16internal # arduino-platform: megaTinyCore:megaavr # 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=360 # # ATTinyCore # # - 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 # # MegaCore # - 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 SimpleSender: -DSEND_PWM_BY_TIMER All: -DRAW_BUFFER_LENGTH=750 # # ESP # - 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 All: -DRAW_BUFFER_LENGTH=750 - arduino-boards-fqbn: esp32:esp32:featheresp32:FlashFreq=80 platform-url: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json arduino-platform: esp32:esp32@2.0.17 # latest 2.x version as of 5/2024 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: -Wno-error=maybe-uninitialized All: -DRAW_BUFFER_LENGTH=750 -Wno-error=maybe-uninitialized # https://github.com/espressif/arduino-esp32/issues/7024 - arduino-boards-fqbn: esp32:esp32:esp32c3 platform-url: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json arduino-platform: esp32:esp32@2.0.17 # latest 2.x version as of 5/2024 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: -Wno-error=maybe-uninitialized All: -DRAW_BUFFER_LENGTH=750 -Wno-error=maybe-uninitialized # https://github.com/espressif/arduino-esp32/issues/7024 # # STM # - 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 All: -DRAW_BUFFER_LENGTH=750 - 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 All: -DRAW_BUFFER_LENGTH=750 - 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 All: -DRAW_BUFFER_LENGTH=750 # # Others # - 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! All: -DRAW_BUFFER_LENGTH=750 - 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 All: -DRAW_BUFFER_LENGTH=750 - 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 All: -DRAW_BUFFER_LENGTH=750 # 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) }} cli-version: 0.33.0 # to avoid errors for ATTinyCore