Jelajahi Sumber

build examples: Only build verbose on failure, save on log output

Angus Gratton 9 tahun lalu
induk
melakukan
c04f05ee84
2 mengubah file dengan 22 tambahan dan 17 penghapusan
  1. 9 10
      make/build_examples.sh
  2. 13 7
      make/component_wrapper.mk

+ 9 - 10
make/build_examples.sh

@@ -15,16 +15,15 @@ RESULT=0
 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

+ 13 - 7
make/component_wrapper.mk

@@ -41,8 +41,9 @@ COMPONENT_LIBRARY = lib$(COMPONENT_NAME).a
 # 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
@@ -72,6 +73,11 @@ COMPONENT_OBJS += $(foreach compsrcdir,$(COMPONENT_SRCDIRS),$(patsubst %.S,%.o,$
 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.
@@ -133,7 +139,7 @@ build: $(COMPONENT_LIBRARY)
 $(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
@@ -187,11 +193,11 @@ OBJCOPY_EMBED_ARGS := --input binary --output elf32-xtensa-le --binary-architect
 # 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