2016-09-26 03:13:32 -04:00
|
|
|
#!/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
|
|
|
|
|
2017-02-10 01:38:24 -05:00
|
|
|
export BATCH_BUILD=1
|
|
|
|
export V=0 # only build verbose if there's an error
|
|
|
|
|
2016-09-26 03:13:32 -04:00
|
|
|
EXAMPLE_NUM=1
|
|
|
|
RESULT=0
|
2016-12-30 00:13:07 -05:00
|
|
|
FAILED_EXAMPLES=""
|
2016-09-26 03:13:32 -04:00
|
|
|
|
2016-12-06 13:39:56 -05:00
|
|
|
RESULT_WARNINGS=22 # magic number result code for "warnings found"
|
|
|
|
|
2017-01-16 17:08:35 -05:00
|
|
|
# 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
|
2017-02-10 01:38:24 -05:00
|
|
|
) || { RESULT=$?; FAILED_EXAMPLES+=" ${example}"; make V=1; } # verbose output for errors
|
2017-01-16 17:08:35 -05:00
|
|
|
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
|
2016-09-26 03:13:32 -04:00
|
|
|
done
|
|
|
|
|
2016-12-06 13:39:56 -05:00
|
|
|
if [ $RESULT -eq $RESULT_WARNINGS ]; then
|
|
|
|
echo "Build would have passed, except for warnings."
|
|
|
|
fi
|
|
|
|
|
2016-12-30 00:13:07 -05:00
|
|
|
[ $RESULT -eq 0 ] || echo "Failed examples: $FAILED_EXAMPLES"
|
|
|
|
|
2016-09-26 03:13:32 -04:00
|
|
|
exit $RESULT
|
|
|
|
|