f29768c404
Mostly useful for Eclipse (where accidentally running interactive config hangs the build), but also good for CI and other automated build systems.
62 lines
1.9 KiB
Bash
Executable file
62 lines
1.9 KiB
Bash
Executable file
#!/bin/bash
|
|
#
|
|
# Build all examples from the examples directory, out of tree to
|
|
# ensure they can run when copied to a new directory.
|
|
#
|
|
# Runs as part of CI process.
|
|
#
|
|
# Assumes CWD is an out-of-tree build directory, and will copy examples to individual subdirectories, one by one.
|
|
#
|
|
[ -z ${IDF_PATH} ] && echo "IDF_PATH is not set" && exit 1
|
|
|
|
export BATCH_BUILD=1
|
|
export V=0 # only build verbose if there's an error
|
|
|
|
EXAMPLE_NUM=1
|
|
RESULT=0
|
|
FAILED_EXAMPLES=""
|
|
|
|
RESULT_WARNINGS=22 # magic number result code for "warnings found"
|
|
|
|
# traverse categories
|
|
for category in ${IDF_PATH}/examples/*; do
|
|
# traverse examples within each category
|
|
for example in ${category}/*; do
|
|
[ -f ${example}/Makefile ] || continue
|
|
echo "Building ${example} as ${EXAMPLE_NUM}..."
|
|
mkdir -p example_builds/${EXAMPLE_NUM}
|
|
cp -r ${example} example_builds/${EXAMPLE_NUM}
|
|
pushd example_builds/${EXAMPLE_NUM}/`basename ${example}`
|
|
|
|
# be stricter in the CI build than the default IDF settings
|
|
export EXTRA_CFLAGS="-Werror -Werror=deprecated-declarations"
|
|
export EXTRA_CXXFLAGS=${EXTRA_CFLAGS}
|
|
|
|
# build non-verbose first
|
|
BUILDLOG=$(mktemp -t examplebuild.XXXX.log)
|
|
(
|
|
set -o pipefail # so result of make all isn't lost when piping to tee
|
|
set -e
|
|
make clean defconfig
|
|
make $* all 2>&1 | tee $BUILDLOG
|
|
) || { RESULT=$?; FAILED_EXAMPLES+=" ${example}"; make V=1; } # verbose output for errors
|
|
popd
|
|
EXAMPLE_NUM=$(( $EXAMPLE_NUM + 1 ))
|
|
|
|
if grep -q ": warning:" $BUILDLOG; then
|
|
[ $RESULT -eq 0 ] && RESULT=$RESULT_WARNINGS
|
|
FAILED_EXAMPLES+=" ${example} (warnings)"
|
|
fi
|
|
|
|
rm -f $BUILDLOG
|
|
done
|
|
done
|
|
|
|
if [ $RESULT -eq $RESULT_WARNINGS ]; then
|
|
echo "Build would have passed, except for warnings."
|
|
fi
|
|
|
|
[ $RESULT -eq 0 ] || echo "Failed examples: $FAILED_EXAMPLES"
|
|
|
|
exit $RESULT
|
|
|