mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
ad6609a561
This will fail pipeline earlier if template project of S2 cannot pass the build. The other builds for the template app, which is not CMake or default optimization level are put into the build_template_app of build stage.
127 lines
4.3 KiB
Bash
Executable File
127 lines
4.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Usage: build_template_app.sh [-p]
|
|
# -p: optional, if specified, do a fast build for every chip target with cmake and only the default
|
|
# config. Otherwise permutations of (chip target, build system, configs) which were not built in
|
|
# the fast build will be built.
|
|
#
|
|
# Needs to be called under IDF root folder
|
|
#
|
|
# This script will call find_apps.py with the following arguments:
|
|
# - CMake build arguments: --work-dir {BUILD_PATH}/cmake --build-dir ${BUILD_DIR} --build-log ${BUILD_LOG_CMAKE}
|
|
# - Make build arguments: --work-dir {BUILD_PATH}/make/${BUILD_DIR} --build-dir build --build-log ${BUILD_LOG_MAKE}
|
|
|
|
set -euo pipefail
|
|
|
|
gen_configs() {
|
|
# CONFIG_COMPILER_OPTIMIZATION_NONE with flag -O0
|
|
echo "CONFIG_COMPILER_OPTIMIZATION_NONE=y" > esp-idf-template/sdkconfig.ci.O0
|
|
echo "CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE=y" >> esp-idf-template/sdkconfig.ci.O0
|
|
# CONFIG_COMPILER_OPTIMIZATION_SIZE with flag -Os
|
|
echo "CONFIG_COMPILER_OPTIMIZATION_SIZE=y" > esp-idf-template/sdkconfig.ci.Os
|
|
echo "CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y" >> esp-idf-template/sdkconfig.ci.Os
|
|
# CONFIG_COMPILER_OPTIMIZATION_PERF with flag -O2
|
|
echo "CONFIG_COMPILER_OPTIMIZATION_PERF=y" > esp-idf-template/sdkconfig.ci.O2
|
|
echo "CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF=y" >> esp-idf-template/sdkconfig.ci.O2
|
|
|
|
# Only built in make, because CMake already build this config in pre_build job
|
|
# CONFIG_COMPILER_OPTIMIZATION_DEFAULT with flag -Og
|
|
echo "CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y" > esp-idf-template/sdkconfig.ci2.Og
|
|
echo "CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG=y" >> esp-idf-template/sdkconfig.ci2.Og
|
|
|
|
# Needs to be built with specific extra flags
|
|
# Same as O2, but also disable assertions.
|
|
cp esp-idf-template/sdkconfig.ci.O2 esp-idf-template/sdkconfig.ci3.no_assert
|
|
echo "CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE=y" >> esp-idf-template/sdkconfig.ci3.no_assert
|
|
}
|
|
|
|
get_config_str() {
|
|
CONFIG_STR=
|
|
until [ $# -eq 0 ]
|
|
do
|
|
CONFIG_STR+=" --config $1"
|
|
shift
|
|
done
|
|
echo ${CONFIG_STR}
|
|
}
|
|
|
|
search_cmake() {
|
|
TARGET=$1
|
|
shift
|
|
CONFIG_STR=$*
|
|
tools/find_apps.py -vv --format json --work-dir ${BUILD_PATH}/cmake --build-dir ${BUILD_DIR} --build-log ${BUILD_LOG_CMAKE} -p esp-idf-template --build-system cmake ${CONFIG_STR} --target ${TARGET} --output scan_temp.json
|
|
cat scan_temp.json >> scan.json
|
|
rm scan_temp.json
|
|
}
|
|
|
|
search_make() {
|
|
TARGET=$1
|
|
shift
|
|
CONFIG_STR=$*
|
|
tools/find_apps.py -vv --format json --work-dir ${BUILD_PATH}/make/${BUILD_DIR} --build-dir build --build-log ${BUILD_LOG_MAKE} -p esp-idf-template --build-system make ${CONFIG_STR} --target ${TARGET} --output scan_temp.json
|
|
cat scan_temp.json >> scan.json
|
|
rm scan_temp.json
|
|
}
|
|
|
|
build() {
|
|
tools/build_apps.py -vv --format json --keep-going --parallel-count 1 --parallel-index 1 --size-info ${SIZE_INFO_LOCATION} scan.json
|
|
rm scan.json
|
|
}
|
|
|
|
build_stage2() {
|
|
CONFIG_STR=$(get_config_str sdkconfig.ci.*=)
|
|
search_cmake esp32 ${CONFIG_STR}
|
|
search_cmake esp32s2 ${CONFIG_STR}
|
|
|
|
CONFIG_STR=$(get_config_str sdkconfig.ci.*= sdkconfig.ci2.*=)
|
|
search_make esp32 ${CONFIG_STR}
|
|
search_make esp32s2 ${CONFIG_STR}
|
|
|
|
build build_list_1.json
|
|
|
|
CONFIG_STR=$(get_config_str sdkconfig.ci3.*=)
|
|
search_cmake esp32 ${CONFIG_STR}
|
|
search_make esp32 ${CONFIG_STR}
|
|
search_cmake esp32s2 ${CONFIG_STR}
|
|
search_make esp32s2 ${CONFIG_STR}
|
|
|
|
# Override EXTRA_CFLAGS and EXTRA_CXXFLAGS in the environment
|
|
export EXTRA_CFLAGS=${PEDANTIC_CFLAGS/-Werror=unused-variable -Werror=unused-but-set-variable -Werror=unused-function/}
|
|
export EXTRA_CXXFLAGS=${PEDANTIC_CXXFLAGS/-Werror=unused-variable -Werror=unused-but-set-variable -Werror=unused-function/}
|
|
build
|
|
}
|
|
|
|
build_stage1() {
|
|
CONFIG_STR=$(get_config_str sdkconfig.ci2.*=)
|
|
search_cmake esp32 ${CONFIG_STR}
|
|
search_cmake esp32s2 ${CONFIG_STR}
|
|
|
|
build
|
|
}
|
|
|
|
# Default arguments
|
|
# STAGE:
|
|
# 1 (-p): fast build, 2 (default): regular build
|
|
STAGE=2
|
|
|
|
# Parse arguments: -p for STAGE
|
|
for arg in $*
|
|
do
|
|
if [ ${arg} = "-p" ]; then
|
|
STAGE=1
|
|
fi
|
|
done
|
|
|
|
mkdir -p ${BUILD_PATH}/make
|
|
mkdir -p ${BUILD_PATH}/cmake
|
|
mkdir -p ${LOG_PATH}
|
|
rm -f scan.json
|
|
|
|
gen_configs
|
|
|
|
if [ ${STAGE} = 1 ]
|
|
then
|
|
build_stage1
|
|
else
|
|
build_stage2
|
|
fi |