-
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.
Circleci * build cmake armgcc and arm clang on circleci * use docker medium+
- Loading branch information
Showing
4 changed files
with
155 additions
and
99 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,39 @@ | ||
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" | ||
TOOLCHAIN_LIST=("arm-clang" "arm-gcc") | ||
for toolchain in "${TOOLCHAIN_LIST[@]}"; do | ||
FAMILY=$(echo $MATRIX_JSON | jq -r ".\"$toolchain\".family") | ||
echo "${toolchain}_FAMILY=$FAMILY" | ||
echo " - build:" >> .circleci/config2.yml | ||
echo " matrix:" >> .circleci/config2.yml | ||
echo " parameters:" >> .circleci/config2.yml | ||
echo " toolchain: ['$toolchain']" >> .circleci/config2.yml | ||
echo " build-system: ['cmake']" >> .circleci/config2.yml | ||
echo " family: $FAMILY" >> .circleci/config2.yml | ||
done | ||
- continuation/continue: | ||
configuration_path: .circleci/config2.yml | ||
|
||
workflows: | ||
build: | ||
set-matrix: | ||
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,98 @@ | ||
version: 2.1 | ||
|
||
commands: | ||
setup-toolchain: | ||
parameters: | ||
toolchain: | ||
type: string | ||
steps: | ||
- run: | ||
name: Install Toolchain | ||
command: | | ||
TOOLCHAIN_JSON='{ | ||
"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" | ||
}' | ||
toolchain_url=$(echo $TOOLCHAIN_JSON | jq -r '.["<< parameters.toolchain >>"]') | ||
echo "toolchain_url=$toolchain_url" | ||
# download and extract toolchain | ||
mkdir -p ~/cache/<< parameters.toolchain >> | ||
wget $toolchain_url -O toolchain.tar.gz | ||
tar -C ~/cache/<< parameters.toolchain >> -xaf toolchain.tar.gz | ||
# Add toolchain to PATH | ||
echo "export PATH=$PATH:`echo ~/cache/<< parameters.toolchain >>/*/bin`" >> $BASH_ENV | ||
get-deps: | ||
parameters: | ||
family: | ||
type: string | ||
steps: | ||
- run: | ||
name: Get Dependencies | ||
command: | | ||
python tools/get_deps.py << parameters.family >> | ||
# 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 | ||
jobs: | ||
build: | ||
parameters: | ||
build-system: | ||
type: string | ||
toolchain: | ||
type: string | ||
family: | ||
type: string | ||
|
||
docker: | ||
- image: cimg/base:current | ||
resource_class: medium+ | ||
steps: | ||
- checkout | ||
- when: | ||
condition: << parameters.build-system >> == 'cmake' | ||
steps: | ||
- run: | ||
name: Install Ninja | ||
command: | | ||
# 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 | ||
- setup-toolchain: | ||
toolchain: << parameters.toolchain >> | ||
- get-deps: | ||
family: << parameters.family >> | ||
- run: | ||
name: Build | ||
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 | ||
# 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 $ONE_PER_FAMILY -s << parameters.build-system >> $TOOLCHAIN_OPTION << parameters.family >> | ||
workflows: | ||
build: | ||
jobs: | ||
# - build: | ||
# matrix: | ||
# parameters: | ||
# toolchain: ['arm-clang'] | ||
# build-system: ['cmake'] | ||
# family: ['imxrt'] |
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
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