mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
0d48a7cda4
CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE doesnt really have many use cases, but it will force us to keep increasing bootloader segment sizes just to allow for building this options. Deprecate this config for new chips.
106 lines
3.6 KiB
Bash
Executable File
106 lines
3.6 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
|
|
|
|
set -euo pipefail
|
|
|
|
gen_configs() {
|
|
# CONFIG_COMPILER_OPTIMIZATION_NONE with flag -O0
|
|
echo "CONFIG_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
|
|
# -O2 makes the bootloader too large to fit in the default space, otherwise(!)
|
|
echo "CONFIG_PARTITION_TABLE_OFFSET=0x10000" >> esp-idf-template/sdkconfig.ci.O2
|
|
|
|
# This part will be built in earlier stage (pre_build job) with only cmake. Built with make in later stage
|
|
# CONFIG_COMPILER_OPTIMIZATION_DEBUG with flag -Og
|
|
echo "CONFIG_COMPILER_OPTIMIZATION_DEBUG=y" > esp-idf-template/sdkconfig.ci2.Og
|
|
echo "CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG=y" >> esp-idf-template/sdkconfig.ci2.Og
|
|
# -Og makes the bootloader too large to fit in the default space, otherwise(!)
|
|
echo "CONFIG_PARTITION_TABLE_OFFSET=0x10000" >> 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}
|
|
}
|
|
|
|
build_stage2() {
|
|
CONFIG_STR=$(get_config_str sdkconfig.ci.*=)
|
|
|
|
# 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/}
|
|
python -m idf_build_apps build -vv \
|
|
-p esp-idf-template \
|
|
-t all \
|
|
${CONFIG_STR} \
|
|
--work-dir ${BUILD_PATH}/cmake \
|
|
--build-dir ${BUILD_DIR} \
|
|
--build-log ${BUILD_LOG_CMAKE} \
|
|
--size-file size.json \
|
|
--collect-size-info size_info.txt \
|
|
--default-build-targets esp32 esp32s2 esp32s3 esp32c2 esp32c3 esp32c6 esp32h2 esp32p4
|
|
}
|
|
|
|
build_stage1() {
|
|
CONFIG_STR=$(get_config_str sdkconfig.ci2.*=)
|
|
python -m idf_build_apps build -vv \
|
|
-p esp-idf-template \
|
|
-t all \
|
|
${CONFIG_STR} \
|
|
--work-dir ${BUILD_PATH}/cmake \
|
|
--build-dir ${BUILD_DIR} \
|
|
--build-log ${BUILD_LOG_CMAKE} \
|
|
--size-file size.json \
|
|
--collect-size-info size_info.txt \
|
|
--default-build-targets esp32 esp32s2 esp32s3 esp32c2 esp32c3 esp32c6 esp32h2 esp32p4
|
|
}
|
|
|
|
# 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}/cmake
|
|
mkdir -p ${LOG_PATH}
|
|
rm -f scan.json
|
|
|
|
gen_configs
|
|
|
|
if [ ${STAGE} = 1 ]
|
|
then
|
|
build_stage1
|
|
else
|
|
build_stage2
|
|
fi
|