-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
231 changed files
with
10,518 additions
and
6,907 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,92 +1,79 @@ | ||
version: 2.1 | ||
|
||
commands: | ||
setup-toolchain: | ||
parameters: | ||
toolchain: | ||
type: string | ||
toolchain_url: | ||
type: string | ||
steps: | ||
# - run: | ||
# name: Make toolchain cache key | ||
# command: echo "<< parameters.toolchain >>-<< parameters.toolchain_url>>" > toolchain_key | ||
# - restore_cache: | ||
# name: Restore Toolchain Cache | ||
# key: deps-{{ checksum "toolchain_key" }} | ||
# paths: | ||
# - ~/cache/<< parameters.toolchain >> | ||
- run: | ||
name: Install Toolchain | ||
command: | | ||
# Only download if folder does not exist (not cached) | ||
if [ ! -d ~/cache/<< parameters.toolchain >> ]; then | ||
mkdir -p ~/cache/<< parameters.toolchain >> | ||
wget << parameters.toolchain_url>> -O toolchain.tar.gz | ||
tar -C ~/cache/<< parameters.toolchain >> -xaf toolchain.tar.gz | ||
fi | ||
# - save_cache: | ||
# name: Save Toolchain Cache | ||
# key: deps-{{ checksum "toolchain_key" }} | ||
# paths: | ||
# - ~/cache/<< parameters.toolchain >> | ||
- run: | ||
name: Setup build environment | ||
command: | | ||
echo "export PATH=$PATH:`echo ~/cache/<< parameters.toolchain >>/*/bin`" >> $BASH_ENV | ||
# Install Ninja | ||
NINJA_URL=https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-linux.zip | ||
wget $NINJA_URL -O ninja-linux.zip | ||
unzip ninja-linux.zip -d ~/bin | ||
get-deps: | ||
parameters: | ||
family: | ||
type: string | ||
steps: | ||
- run: | ||
name: Get Dependencies | ||
command: | | ||
python tools/get_deps.py << parameters.family >> | ||
setup: true | ||
orbs: | ||
continuation: circleci/continuation@1 | ||
|
||
jobs: | ||
arm-clang: | ||
parameters: | ||
family: | ||
type: string | ||
build-system: | ||
type: string | ||
|
||
set-matrix: | ||
executor: continuation/default | ||
docker: | ||
- image: cimg/base:current | ||
resource_class: medium | ||
environment: | ||
TOOLCHAIN_URL: https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases/download/release-17.0.1/LLVMEmbeddedToolchainForArm-17.0.1-Linux-x86_64.tar.xz | ||
resource_class: small | ||
steps: | ||
- checkout | ||
- setup-toolchain: | ||
toolchain: clang | ||
toolchain_url: $TOOLCHAIN_URL | ||
- get-deps: | ||
family: << parameters.family >> | ||
- run: | ||
name: Build | ||
name: Set matrix | ||
command: | | ||
# Only build one board per family for non PRs i.e commit to master | ||
ONE_PER_FAMILY="" | ||
if [ -z "$CIRCLE_PULL_REQUEST" ]; then | ||
ONE_PER_FAMILY="--one-per-family" | ||
fi | ||
python tools/build.py $ONE_PER_FAMILY -s << parameters.build-system >> --toolchain clang << parameters.family >> | ||
MATRIX_JSON=$(python .github/workflows/ci_set_matrix.py) | ||
echo "MATRIX_JSON=$MATRIX_JSON" | ||
BUILDSYSTEM_TOOLCHAIN=( | ||
"cmake arm-clang" | ||
"make aarch64-gcc" | ||
"make arm-gcc" | ||
"make msp430-gcc" | ||
"make riscv-gcc" | ||
"make rx-gcc" | ||
"cmake esp-idf" | ||
) | ||
RESOURCE_LARGE='["nrf", "imxrt"]' | ||
for e in "${BUILDSYSTEM_TOOLCHAIN[@]}"; do | ||
e_arr=($e) | ||
build_system="${e_arr[0]}" | ||
toolchain="${e_arr[1]}" | ||
FAMILY=$(echo $MATRIX_JSON | jq -r ".\"$toolchain\".family") | ||
echo "FAMILY_${toolchain}=$FAMILY" | ||
# FAMILY_LARGE = FAMILY - RESOURCE_LARGE | ||
# Separate large from medium+ resources | ||
FAMILY_LARGE=$(jq -n --argjson family "$FAMILY" --argjson resource "$RESOURCE_LARGE" '$family | map(select(IN($resource[])))') | ||
FAMILY=$(jq -n --argjson family "$FAMILY" --argjson resource "$RESOURCE_LARGE" '$family | map(select(IN($resource[]) | not))') | ||
if [[ $toolchain == esp-idf ]]; then | ||
echo " - build-vm:" >> .circleci/config2.yml | ||
else | ||
echo " - build:" >> .circleci/config2.yml | ||
fi | ||
echo " matrix:" >> .circleci/config2.yml | ||
echo " parameters:" >> .circleci/config2.yml | ||
echo " build-system: ['$build_system']" >> .circleci/config2.yml | ||
echo " toolchain: ['$toolchain']" >> .circleci/config2.yml | ||
echo " family: $FAMILY" >> .circleci/config2.yml | ||
#echo " resource_class: ['medium+']" >> .circleci/config2.yml | ||
# add large resources | ||
if [ "$(echo $FAMILY_LARGE | jq 'length')" -gt 0 ]; then | ||
echo " - build:" >> .circleci/config2.yml | ||
echo " matrix:" >> .circleci/config2.yml | ||
echo " parameters:" >> .circleci/config2.yml | ||
echo " build-system: ['$build_system']" >> .circleci/config2.yml | ||
echo " toolchain: ['$toolchain']" >> .circleci/config2.yml | ||
echo " family: $FAMILY_LARGE" >> .circleci/config2.yml | ||
echo " resource_class: ['large']" >> .circleci/config2.yml | ||
fi | ||
done | ||
- continuation/continue: | ||
configuration_path: .circleci/config2.yml | ||
|
||
workflows: | ||
build: | ||
set-matrix: | ||
# Only build PR here, Push will be built by github action. | ||
when: | ||
and: | ||
- not: << pipeline.git.branch.is_default >> | ||
jobs: | ||
- arm-clang: | ||
matrix: | ||
parameters: | ||
build-system: | ||
- cmake | ||
#family: ['stm32f1'] | ||
#family: ['stm32f1', 'stm32f2'] | ||
family: ['imxrt', 'kinetis_k kinetis_kl kinetis_k32l2', 'lpc11 lpc13 lpc15', 'lpc17 lpc18 lpc40 lpc43', 'lpc51 lpc54 lpc55', 'nrf', 'samd11 samd21 saml2x', 'samd5x_e5x samg', 'stm32f0 stm32f1 stm32f2 stm32f3', 'stm32f4', 'stm32f7', 'stm32g0 stm32g4 stm32h5', 'stm32h7', 'stm32l4 stm32u5 stm32wb'] | ||
- set-matrix |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,183 @@ | ||
version: 2.1 | ||
|
||
commands: | ||
setup-toolchain: | ||
parameters: | ||
toolchain: | ||
type: string | ||
|
||
steps: | ||
- run: | ||
name: Set toolchain url and key | ||
command: | | ||
TOOLCHAIN_JSON='{ | ||
"aarch64-gcc": "https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf.tar.xz", | ||
"arm-clang": "https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases/download/release-17.0.1/LLVMEmbeddedToolchainForArm-17.0.1-Linux-x86_64.tar.xz", | ||
"arm-gcc": "https://github.com/xpack-dev-tools/arm-none-eabi-gcc-xpack/releases/download/v12.3.1-1.1/xpack-arm-none-eabi-gcc-12.3.1-1.1-linux-x64.tar.gz", | ||
"msp430-gcc": "http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSPGCC/9_2_0_0/export/msp430-gcc-9.2.0.50_linux64.tar.bz2", | ||
"riscv-gcc": "https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/download/v13.2.0-2/xpack-riscv-none-elf-gcc-13.2.0-2-linux-x64.tar.gz", | ||
"rx-gcc": "https://llvm-gcc-renesas.com/downloads/get.php?f=rx/8.3.0.202004-gnurx/gcc-8.3.0.202004-GNURX-ELF.run" | ||
}' | ||
toolchain_url=$(echo $TOOLCHAIN_JSON | jq -r '.["<< parameters.toolchain >>"]') | ||
# only cache if not a github link | ||
if [[ $toolchain_url != "https://github.com"* ]]; then | ||
echo "<< parameters.toolchain >>-$toolchain_url" > toolchain_key | ||
fi | ||
echo "export toolchain_url=$toolchain_url" >> $BASH_ENV | ||
- restore_cache: | ||
name: Restore Toolchain Cache | ||
key: deps-{{ checksum "toolchain_key" }} | ||
paths: | ||
- ~/cache/<< parameters.toolchain >> | ||
|
||
- run: | ||
name: Install Toolchain | ||
command: | | ||
# download if folder does not exist (not cached) | ||
if [ ! -d ~/cache/<< parameters.toolchain >> ]; then | ||
mkdir -p ~/cache/<< parameters.toolchain >> | ||
wget --progress=dot:giga $toolchain_url -O toolchain.tar.gz | ||
if [[ << parameters.toolchain >> == rx-gcc ]]; then | ||
mv toolchain.tar.gz toolchain.run | ||
chmod +x toolchain.run | ||
./toolchain.run -p ~/cache/<< parameters.toolchain >>/gnurx -y | ||
else | ||
tar -C ~/cache/<< parameters.toolchain >> -xaf toolchain.tar.gz | ||
fi | ||
fi | ||
# Add toolchain to PATH | ||
echo "export PATH=$PATH:`echo ~/cache/<< parameters.toolchain >>/*/bin`" >> $BASH_ENV | ||
- save_cache: | ||
name: Save Toolchain Cache | ||
key: deps-{{ checksum "toolchain_key" }} | ||
paths: | ||
- ~/cache/<< parameters.toolchain >> | ||
|
||
build: | ||
parameters: | ||
build-system: | ||
type: string | ||
toolchain: | ||
type: string | ||
family: | ||
type: string | ||
|
||
steps: | ||
- checkout | ||
- when: | ||
condition: | ||
not: | ||
equal: [esp-idf, << parameters.toolchain >>] | ||
steps: | ||
- setup-toolchain: | ||
toolchain: << parameters.toolchain >> | ||
|
||
- run: | ||
name: Get Dependencies | ||
command: | | ||
python tools/get_deps.py << parameters.family >> | ||
# Install ninja if cmake build system | ||
if [ << parameters.build-system >> == "cmake" ]; then | ||
NINJA_URL=https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-linux.zip | ||
wget $NINJA_URL -O ninja-linux.zip | ||
unzip ninja-linux.zip -d ~/bin | ||
fi | ||
# rx-gcc is 32-bit binary | ||
if [[ << parameters.toolchain >> == rx-gcc ]]; then | ||
sudo dpkg --add-architecture i386 | ||
sudo apt update | ||
sudo apt install libc6:i386 libstdc++6:i386 zlib1g:i386 | ||
fi | ||
# Install Pico SDK | ||
if [ << parameters.family >> == "rp2040" ]; then | ||
git clone --depth 1 https://github.com/raspberrypi/pico-sdk.git ~/pico-sdk | ||
echo "export PICO_SDK_PATH=~/pico-sdk" >> $BASH_ENV | ||
fi | ||
- run: | ||
name: Build | ||
command: | | ||
if [ << parameters.toolchain >> == esp-idf ]; then | ||
docker run --rm -v $PWD:/project -w /project espressif/idf:v5.1.1 python tools/build.py << parameters.family >> | ||
else | ||
# Toolchain option default is gcc | ||
if [ << parameters.toolchain >> == arm-clang ]; then | ||
TOOLCHAIN_OPTION="--toolchain clang" | ||
elif [ << parameters.toolchain >> == arm-gcc ]; then | ||
TOOLCHAIN_OPTION="--toolchain gcc" | ||
fi | ||
python tools/build.py -s << parameters.build-system >> $TOOLCHAIN_OPTION << parameters.family >> | ||
fi | ||
jobs: | ||
# Build using docker | ||
build: | ||
parameters: | ||
resource_class: | ||
type: string | ||
default: medium+ | ||
build-system: | ||
type: string | ||
toolchain: | ||
type: string | ||
family: | ||
type: string | ||
|
||
docker: | ||
- image: cimg/base:current | ||
resource_class: << parameters.resource_class >> | ||
|
||
steps: | ||
- build: | ||
build-system: << parameters.build-system >> | ||
toolchain: << parameters.toolchain >> | ||
family: << parameters.family >> | ||
|
||
# Build using VM | ||
build-vm: | ||
parameters: | ||
resource_class: | ||
type: string | ||
default: large | ||
build-system: | ||
type: string | ||
toolchain: | ||
type: string | ||
family: | ||
type: string | ||
|
||
machine: | ||
image: ubuntu-2404:current | ||
resource_class: << parameters.resource_class >> | ||
|
||
steps: | ||
- build: | ||
build-system: << parameters.build-system >> | ||
toolchain: << parameters.toolchain >> | ||
family: << parameters.family >> | ||
|
||
workflows: | ||
build: | ||
jobs: | ||
# - build: | ||
# matrix: | ||
# parameters: | ||
# toolchain: [ 'arm-gcc' ] | ||
# build-system: [ 'cmake' ] | ||
# family: [ 'nrf' ] | ||
# resource_class: ['large'] | ||
# - build-vm: | ||
# matrix: | ||
# parameters: | ||
# toolchain: ['esp-idf'] | ||
# build-system: ['cmake'] | ||
# family: ['-bespressif_kaluga_1'] | ||
# resource_class: ['large'] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.