diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5da033cf..a3ea0d97 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,8 +28,10 @@ jobs: cd test ceedling test:all - # build all example for each family - build-family: + # --------------------------------------- + # Build ARM family + # --------------------------------------- + build-arm: runs-on: ubuntu-latest strategy: fail-fast: false @@ -90,32 +92,17 @@ jobs: asset_name: ${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip asset_content_type: application/zip - # Build all no-family (opharned) boards - build-board: + # --------------------------------------- + # Build RISC-V family + # --------------------------------------- + build-riscv: runs-on: ubuntu-latest strategy: fail-fast: false matrix: - example: + family: # Alphabetical order - - 'device/audio_test' - - 'device/board_test' - - 'device/cdc_dual_ports' - - 'device/cdc_msc' - - 'device/cdc_msc_freertos' - - 'device/dfu_runtime' - - 'device/hid_composite' - - 'device/hid_composite_freertos' - - 'device/hid_generic_inout' - - 'device/hid_multiple_interface' - - 'device/midi_test' - - 'device/msc_dual_lun' - - 'device/net_lwip_webserver' - - 'device/uac2_headset' - - 'device/usbtmc' - - 'device/webusb_serial' - - 'host/cdc_msc_hid' - + - 'fomu' steps: - name: Setup Python uses: actions/setup-python@v2 @@ -125,22 +112,76 @@ jobs: - name: Checkout TinyUSB uses: actions/checkout@v2 - with: - submodules: 'true' - - name: Install Toolchains + - name: Checkout Submodules in lib + run: git submodule update --init lib + + - name: Install Toolchain run: | - # ARM & RISC-V GCC from xpack + # RISC-V GCC from xpack npm install --global xpm - xpm install --global @xpack-dev-tools/arm-none-eabi-gcc@latest xpm install --global @xpack-dev-tools/riscv-none-embed-gcc@latest - echo `echo $HOME/.local/xPacks/@xpack-dev-tools/arm-none-eabi-gcc/*/.content/bin` >> $GITHUB_PATH echo `echo $HOME/.local/xPacks/@xpack-dev-tools/riscv-none-embed-gcc/*/.content/bin` >> $GITHUB_PATH - name: Build - run: python3 tools/build_board.py ${{ matrix.example }} + run: python3 tools/build_family.py ${{ matrix.family }} - # build all example for each family + - uses: actions/upload-artifact@v2 + with: + name: ${{ matrix.family }}-tinyusb-examples + path: _bin/ + + - name: Create Release Asset + if: ${{ github.event_name == 'release' }} + run: | + cd _bin/ + zip -r ../${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip * + + - name: Upload Release Asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + if: ${{ github.event_name == 'release' }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: ${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip + asset_name: ${{ matrix.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip + asset_content_type: application/zip + + # --------------------------------------- + # Build ESP32S2 family + # --------------------------------------- + build-esp32s2: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + board: + # Alphabetical order + - 'adafruit_feather_esp32s2' + - 'adafruit_magtag_29gray' + - 'adafruit_metro_esp32s2' + - 'espressif_kaluga_1' + - 'espressif_saola_1' + + steps: + - name: Setup Python + uses: actions/setup-python@v2 + + - name: Pull ESP-IDF docker + run: docker pull espressif/idf:latest + + - name: Checkout TinyUSB + uses: actions/checkout@v2 + with: + submodules: 'false' + + - name: Build + run: docker run --rm -v $PWD:/project -w /project espressif/idf:latest python3 tools/build_esp32s2.py ${{ matrix.board }} + + # --------------------------------------- + # Build msp430 family + # --------------------------------------- build-msp430: runs-on: ubuntu-latest steps: @@ -199,32 +240,53 @@ jobs: asset_path: ${{ env.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip asset_name: ${{ env.family }}-tinyusb-${{ github.event.release.tag_name }}-examples.zip asset_content_type: application/zip - - # Build ESP32S2 - build-esp32s2: + + # --------------------------------------- + # Build all no-family (opharned) boards + # --------------------------------------- + build-board: runs-on: ubuntu-latest strategy: fail-fast: false matrix: - board: + example: # Alphabetical order - - 'adafruit_feather_esp32s2' - - 'adafruit_magtag_29gray' - - 'adafruit_metro_esp32s2' - - 'espressif_kaluga_1' - - 'espressif_saola_1' + - 'device/audio_test' + - 'device/board_test' + - 'device/cdc_dual_ports' + - 'device/cdc_msc' + - 'device/cdc_msc_freertos' + - 'device/dfu_runtime' + - 'device/hid_composite' + - 'device/hid_composite_freertos' + - 'device/hid_generic_inout' + - 'device/hid_multiple_interface' + - 'device/midi_test' + - 'device/msc_dual_lun' + - 'device/net_lwip_webserver' + - 'device/uac2_headset' + - 'device/usbtmc' + - 'device/webusb_serial' + - 'host/cdc_msc_hid' steps: - name: Setup Python uses: actions/setup-python@v2 - - name: Pull ESP-IDF docker - run: docker pull espressif/idf:latest + - name: Setup Node.js + uses: actions/setup-node@v1 - name: Checkout TinyUSB uses: actions/checkout@v2 with: - submodules: 'false' + submodules: 'true' + + - name: Install Toolchains + run: | + # ARM GCC from xpack + npm install --global xpm + xpm install --global @xpack-dev-tools/arm-none-eabi-gcc@latest + echo `echo $HOME/.local/xPacks/@xpack-dev-tools/arm-none-eabi-gcc/*/.content/bin` >> $GITHUB_PATH - name: Build - run: docker run --rm -v $PWD:/project -w /project espressif/idf:latest python3 tools/build_esp32s2.py ${{ matrix.board }} + run: python3 tools/build_board.py ${{ matrix.example }} \ No newline at end of file diff --git a/examples/make.mk b/examples/make.mk index c981d0de..173f5598 100644 --- a/examples/make.mk +++ b/examples/make.mk @@ -19,8 +19,10 @@ __check_defined = \ #-------------- Select the board to build for. ------------ # Board without family -BOARD_PATH := $(subst $(TOP)/,,$(wildcard $(TOP)/hw/bsp/$(BOARD))) +ifneq ($(wildcard $(TOP)/hw/bsp/$(BOARD)/board.mk),) +BOARD_PATH := hw/bsp/$(BOARD) FAMILY := +endif # Board within family ifeq ($(BOARD_PATH),) diff --git a/hw/bsp/fomu/boards/fomu/board.h b/hw/bsp/fomu/boards/fomu/board.h new file mode 100644 index 00000000..666ba1d9 --- /dev/null +++ b/hw/bsp/fomu/boards/fomu/board.h @@ -0,0 +1,40 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2021, Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#ifndef BOARD_H_ +#define BOARD_H_ + +#ifdef __cplusplus + extern "C" { +#endif + +// Place holder only + +#ifdef __cplusplus + } +#endif + +#endif diff --git a/hw/bsp/fomu/boards/fomu/board.mk b/hw/bsp/fomu/boards/fomu/board.mk new file mode 100644 index 00000000..8ced1141 --- /dev/null +++ b/hw/bsp/fomu/boards/fomu/board.mk @@ -0,0 +1 @@ +# place holder \ No newline at end of file diff --git a/hw/bsp/fomu/board.mk b/hw/bsp/fomu/family.mk similarity index 79% rename from hw/bsp/fomu/board.mk rename to hw/bsp/fomu/family.mk index f31dfec2..f615216b 100644 --- a/hw/bsp/fomu/board.mk +++ b/hw/bsp/fomu/family.mk @@ -8,16 +8,13 @@ CFLAGS += \ # Cross Compiler for RISC-V CROSS_COMPILE = riscv-none-embed- -MCU_DIR = hw/mcu/fomu -BSP_DIR = hw/bsp/fomu - # All source paths should be relative to the top level. -LD_FILE = hw/bsp/$(BOARD)/fomu.ld +LD_FILE = $(FAMILY_PATH)/fomu.ld -SRC_S += hw/bsp/$(BOARD)/crt0-vexriscv.S +SRC_S += $(FAMILY_PATH)/crt0-vexriscv.S INC += \ - $(TOP)/$(BSP_DIR)/include + $(TOP)/$(FAMILY_PATH)/include # For TinyUSB port source VENDOR = valentyusb