set -e
for example in ${IDF_PATH}/examples/*; do
- [ -f ${example}/Makefile ] || continue
- echo "Building ${example} as ${EXAMPLE_NUM}..."
- mkdir ${EXAMPLE_NUM}
- cp -r ${example} ${EXAMPLE_NUM}
- pushd ${EXAMPLE_NUM}/`basename ${example}`
- # can't do "make defconfig all" as this will trip menuconfig
- # sometimes
- make defconfig V=1 && make V=1 || RESULT=$?
- popd
- EXAMPLE_NUM=$(( $EXAMPLE_NUM + 1 ))
+ [ -f ${example}/Makefile ] || continue
+ echo "Building ${example} as ${EXAMPLE_NUM}..."
+ mkdir ${EXAMPLE_NUM}
+ cp -r ${example} ${EXAMPLE_NUM}
+ pushd ${EXAMPLE_NUM}/`basename ${example}`
+ # build non-verbose first, only build verbose if there's an error
+ make defconfig all || (RESULT=$?; make V=1)
+ popd
+ EXAMPLE_NUM=$(( $EXAMPLE_NUM + 1 ))
done
exit $RESULT
# Source dirs a component has. Default to root directory of component.
COMPONENT_SRCDIRS = .
-#Names of binary files to embed as symbols in the component library
+#Names of binary & text files to embed as raw content in the component library
COMPONENT_EMBED_FILES ?=
+COMPONENT_EMBED_TXTFILES ?=
# By default, include only the include/ dir.
COMPONENT_ADD_INCLUDEDIRS = include
COMPONENT_OBJS := $(patsubst $(COMPONENT_PATH)/%,%,$(COMPONENT_OBJS))
endif
+# Object files with embedded binaries to add to the component library
+# Correspond to the files named in COMPONENT_EMBED_FILES & COMPONENT_EMBED_TXTFILES
+COMPONENT_EMBED_OBJS ?= $(addsuffix .bin.o,$(COMPONENT_EMBED_FILES)) $(addsuffix .txt.o,$(COMPONENT_EMBED_TXTFILES))
+
+
# If we're called to compile something, we'll get passed the COMPONENT_INCLUDES
# variable with all the include dirs from all the components in random order. This
# means we can accidentally grab a header from another component before grabbing our own.
$(COMPONENT_LIBRARY): $(COMPONENT_OBJS) $(COMPONENT_EMBED_OBJS)
$(summary) AR $@
rm -f $@
- $(AR) cru $@ $(COMPONENT_OBJS)
+ $(AR) cru $@ $^
endif
# If COMPONENT_OWNCLEANTARGET is not set, define a phony clean target
# path to the input file.
define GenerateEmbedTarget
$(1).$(2).o: $(call resolvepath,$(1),$(COMPONENT_PATH)) | $$(dir $(1))
- $$(summary) EMBED $$@
- $$(Q) $(if $(filter-out $$(notdir $$(abspath $$<)),$$(abspath $$(notdir $$<))), cp $$< $$(notdir $$<) ) # copy input file to build dir, unless already in build dir
- $$(Q) $(if $(subst bin,,$(2)),echo -ne '\0' >> $$(notdir $$<) ) # trailing NUL byte on text output
- $$(Q) $$(OBJCOPY) $(OBJCOPY_EMBED_ARGS) $$(notdir $$<) $$@
- $$(Q) rm $$(notdir $$<)
+ $(summary) EMBED $$@
+ $$(if $$(filter-out $$(notdir $$(abspath $$<)),$$(abspath $$(notdir $$<))), cp $$< $$(notdir $$<) ) # copy input file to build dir, unless already in build dir
+ $$(if $$(subst bin,,$(2)),echo -ne '\0' >> $$(notdir $$<) ) # trailing NUL byte on text output
+ $(OBJCOPY) $(OBJCOPY_EMBED_ARGS) $$(notdir $$<) $$@
+ rm $$(notdir $$<)
endef
# generate targets to embed binary & text files