@@ -7,15 +7,18 @@ env:
BUILD_TYPE: Release
jobs:
+ RetrieveTargetsMatrix:
+ uses: ./.github/workflows/create-matrix.yml
+
test-ubuntu:
runs-on: ubuntu-20.04
+ needs: RetrieveTargetsMatrix
strategy:
- matrix:
- family: [C0, F0, F1, F2, F3, F4, F7, G0, G4, H5, H7, L0, L1, L4, L5, U0, U5, WB, WL, MP1]
+ matrix: ${{ fromJSON(needs.RetrieveTargetsMatrix.outputs.matrix) }}
fail-fast: false
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
- name: Install ARM toolchain
run: sudo apt-get install gcc-arm-none-eabi binutils-arm-none-eabi
@@ -0,0 +1,30 @@
+name: MatrixCreator
+run-name: "Creates supported family matrix for other jobs"
+on:
+ workflow_call:
+ outputs:
+ matrix:
+ description: "Supported family for job matrixing"
+ value: ${{ jobs.CreateMatrix.outputs.matrix }}
+jobs:
+ CreateMatrix:
+ runs-on: ubuntu-latest
+ matrix: ${{ steps.create-matrix.outputs.matrix }}
+ steps:
+ - name: Checkout repo
+ id: checkout
+ uses: actions/checkout@v4
+ - name: Create matrix
+ id: create-matrix
+ run: |
+ files=$(find cmake/stm32/ -name '*.cmake' -exec sh -c "basename {} | cut -f1 -d '.' | tr '[:lower:]' '[:upper:]'" \; | sort)
+ deletes="COMMON DEVICES LINKER_LD"
+ for del in $deletes; do
+ files=(${files[@]/$del})
+ done
+ echo "matrix={\"family\":$(jq --compact-output --null-input '$ARGS.positional' --args -- ${files[@]})}" >> $GITHUB_OUTPUT
@@ -15,7 +15,8 @@ if(FETCH_ST_SOURCES)
stm32_fetch_cmsis(${TEST_FAMILIES})
endif()
-find_package(CMSIS REQUIRED)
+list(TRANSFORM TEST_FAMILIES PREPEND STM32 OUTPUT_VARIABLE TEST_FAMILIES_LONG_NAMES)
+find_package(CMSIS COMPONENTS "${TEST_FAMILIES_LONG_NAMES}" REQUIRED)
set(SOURCES main.c)
@@ -34,7 +35,7 @@ foreach(FAMILY ${TEST_FAMILIES})
add_executable(cmsis-test-${DEVICE} ${SOURCES})
target_link_libraries(cmsis-test-${DEVICE} CMSIS::STM32::${DEVICE} STM32::NoSys)
else()
- stm32_get_cores(CORES FAMILY ${FAMILY} DEVICE ${DEVICE})
+ stm32_get_cores(DEV_CORES FAMILY ${FAMILY} DEVICE ${DEVICE})
foreach(CORE ${DEV_CORES})
stm32_get_memory_info(FAMILY ${FAMILY} DEVICE ${DEVICE} CORE ${CORE} FLASH SIZE FLASH_SIZE)
stm32_get_memory_info(FAMILY ${FAMILY} DEVICE ${DEVICE} CORE ${CORE} RAM SIZE RAM_SIZE)