mirror of
https://github.com/hathach/tinyusb.git
synced 2025-01-31 05:52:55 +08:00
b8d3c0c4a8
Circleci * build cmake armgcc and arm clang on circleci * use docker medium+
99 lines
3.2 KiB
YAML
99 lines
3.2 KiB
YAML
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']
|