diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c59c3c548a87f6401c442116d6ed011cbe6de23e..b088f28f4d4a6a8cd810433089afa1c1a8686d9c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,26 +1,31 @@ -name: PlatformIO CI +name: Build CI on: [push, pull_request] jobs: + find-examples: # Job that list subdirectories + runs-on: ubuntu-latest + outputs: + dir: ${{ steps.set-dirs.outputs.dir }} # generate output name dir by using inner step output + steps: + - uses: actions/checkout@v3 + - id: set-dirs # Give it an id to handle to get step outputs in the outputs key above + run: echo "::set-output name=dir::$(find examples -name Makefile -print0 |xargs -0 -n 1 dirname | jq -R -s -c 'split("\n")[:-1]')" + # Define step output named dir base on ls command transformed to JSON thanks to jq # Build using native Makefile buildsystem makefile-build: + needs: [find-examples] # Depends on previous job runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + example: ${{fromJson(needs.find-examples.outputs.dir)}} steps: - uses: actions/checkout@v3 - name: Install Dependencies run: sudo apt-get update && sudo apt-get install -y build-essential make libnewlib-dev gcc-riscv64-unknown-elf libusb-1.0-0-dev - - name: Build Blink Example - run: cd examples/blink && make V=1 -j3 blink.elf && riscv64-unknown-elf-size blink.elf && cd ../.. - - name: Build debugprintfdemo Example - run: cd examples/debugprintfdemo && make V=1 -j3 debugprintfdemo.elf && riscv64-unknown-elf-size debugprintfdemo.elf && cd ../.. - # currently not compiling: __get_dscratch0() not defined. - #- name: Build sandbox Example - # run: cd examples/sandbox && make V=1 -j3 sandbox.elf && riscv64-unknown-elf-size sandbox.elf && cd ../.. - - name: Build uartdemo Example - run: cd examples/uartdemo && make V=1 -j3 uartdemo.elf && riscv64-unknown-elf-size uartdemo.elf && cd ../.. - - name: Build ws2812 Example - run: cd examples/ws2812demo && make V=1 -j3 ws2812bdemo.elf && riscv64-unknown-elf-size ws2812bdemo.elf && cd ../.. + - name: Build ${{ matrix.example }} + run: cd ${{ matrix.example }} && make V=1 -j3 $(basename ${{ matrix.example }}.elf) && riscv64-unknown-elf-size $(basename ${{ matrix.example }}.elf) # Build using PlatformIO pio-build: strategy: diff --git a/examples/run_from_ram/run_from_ram.c b/examples/run_from_ram/run_from_ram.c index 8ece215fa526b39c1f5b3a76a0cfaf20e6873f03..071e52bcd1a94e47cfcc42dbe6926ec73a167708 100644 --- a/examples/run_from_ram/run_from_ram.c +++ b/examples/run_from_ram/run_from_ram.c @@ -39,6 +39,7 @@ void RamFunction() // But we turbo through twiddling a pin. asm volatile("\n\ + .option rvc\n\ li a0, 1 | (1<<4)\n\ li a1, (1<<16) | (1<<(16+4))\n\ la a2, 0x40011410 /* GPIO D*/ \n\ diff --git a/examples/ws2812demo/Makefile b/examples/ws2812bdemo/Makefile similarity index 100% rename from examples/ws2812demo/Makefile rename to examples/ws2812bdemo/Makefile diff --git a/examples/ws2812demo/README.md b/examples/ws2812bdemo/README.md similarity index 100% rename from examples/ws2812demo/README.md rename to examples/ws2812bdemo/README.md diff --git a/examples/ws2812demo/color_utilities.h b/examples/ws2812bdemo/color_utilities.h similarity index 100% rename from examples/ws2812demo/color_utilities.h rename to examples/ws2812bdemo/color_utilities.h diff --git a/examples/ws2812demo/ws2812b_dma_spi_led_driver.h b/examples/ws2812bdemo/ws2812b_dma_spi_led_driver.h similarity index 100% rename from examples/ws2812demo/ws2812b_dma_spi_led_driver.h rename to examples/ws2812bdemo/ws2812b_dma_spi_led_driver.h diff --git a/examples/ws2812demo/ws2812bdemo.c b/examples/ws2812bdemo/ws2812bdemo.c similarity index 100% rename from examples/ws2812demo/ws2812bdemo.c rename to examples/ws2812bdemo/ws2812bdemo.c diff --git a/platformio.ini b/platformio.ini index a23fc60a0f32ac959d20635c2aa647b51964e02a..d4a84f4dc8b1fcd177fe2d61f313c02f6d7a7e96 100644 --- a/platformio.ini +++ b/platformio.ini @@ -8,13 +8,9 @@ platform = https://github.com/Community-PIO-CH32V/platform-ch32v.git ; or genericCH32V003A4M6 or whatever, see platform link board = ch32v003f4p6_evt_r0 monitor_speed = 115200 -; use a source filter to only build certain folders / files - -; for examples that use ch32v003evt as their base -[evt_base] -board_build.ldscript = ch32v003evt/ch32v003.ld -build_flags = -flto -Ich32v003evt -lgcc -build_src_filter = +<ch32v003evt> +; all environments use ch32v003 fun as base, no more ch32v003evt +extends = fun_base +; use a source filter to only build certain folders / files in later environments ; for examples that use ch32v003fun as their base [fun_base] @@ -23,22 +19,31 @@ build_flags = -flto -Ich32v003fun -I/usr/include/newlib -DTINYVECTOR -lgcc build_src_filter = +<ch32v003fun> [env:blink] -extends = fun_base build_src_filter = ${fun_base.build_src_filter} +<examples/blink> +[env:bootload] +build_src_filter = ${fun_base.build_src_filter} +<examples/bootload> + [env:debugprintfdemo] -extends = fun_base build_src_filter = ${fun_base.build_src_filter} +<examples/debugprintfdemo> -; sandbox demo does currently not compile (undefined reference to `__get_dscratch0') -;[env:sandbox] -;extends = fun_base -;build_src_filter = ${fun_base.build_src_filter} +<examples/sandbox> +[env:external_crystal] +build_src_filter = ${fun_base.build_src_filter} +<examples/external_crystal> + +[env:optionbytes] +build_src_filter = ${fun_base.build_src_filter} +<examples/optionbytes> + +[env:run_from_ram] +build_src_filter = ${fun_base.build_src_filter} +<examples/run_from_ram> + +[env:sandbox] +build_src_filter = ${fun_base.build_src_filter} +<examples/sandbox> + +[env:self_modify_code] +build_src_filter = ${fun_base.build_src_filter} +<examples/self_modify_code> [env:uartdemo] -extends = fun_base build_src_filter = ${fun_base.build_src_filter} +<examples/uartdemo> -[env:ws2812demo] -extends = fun_base -build_src_filter = ${evt_base.build_src_filter} +<examples/ws2812demo> +[env:ws2812bdemo] +build_src_filter = ${fun_base.build_src_filter} +<examples/ws2812bdemo> \ No newline at end of file