Jelajahi Sumber

Merge branch 'bugfix/build_system_regen_component_vars' into 'master'

build system: Fix bug requiring "make clean" after IDF updates or menuconfig changes

See merge request !1293

Angus Gratton 8 tahun lalu
induk
melakukan
976135c3a8
2 mengubah file dengan 9 tambahan dan 3 penghapusan
  1. 5 1
      make/component_wrapper.mk
  2. 4 2
      tools/ci/test_build_system.sh

+ 5 - 1
make/component_wrapper.mk

@@ -147,7 +147,11 @@ endef
 # component-specific feature, please don't! What you want is a
 # Makefile.projbuild for your component (see docs/build-system.rst for
 # more.)
-component_project_vars.mk:
+#
+# Note: The :: target here is not a mistake. This target should always be
+# executed, as dependencies are checked by the parent project-level make target.
+# See https://www.gnu.org/software/make/manual/make.html#index-_003a_003a-rules-_0028double_002dcolon_0029
+component_project_vars.mk::
 	$(details) "Building component project variables list $(abspath $@)"
 	@echo '# Automatically generated build file. Do not edit.' > $@
 	@echo 'COMPONENT_INCLUDES += $(call MakeVariablePath,$(addprefix $(COMPONENT_PATH)/,$(COMPONENT_ADD_INCLUDEDIRS)))' >> $@

+ 4 - 2
tools/ci/test_build_system.sh

@@ -134,13 +134,13 @@ function run_tests()
 
     print_status "Can still clean build if all text files are CRLFs"
     make clean || failure "Unexpected failure to make clean"
-    find . -exec unix2dos {} \; # CRLFify template dir
+    find . -path .git -prune -exec unix2dos {} \; # CRLFify template dir
     # make a copy of esp-idf and CRLFify it
     CRLF_ESPIDF=${TESTDIR}/esp-idf-crlf
     mkdir -p ${CRLF_ESPIDF}
     cp -r ${IDF_PATH}/* ${CRLF_ESPIDF}
     # don't CRLFify executable files, as Linux will fail to execute them
-    find ${CRLF_ESPIDF} -type f ! -perm 755 -exec unix2dos {} \;
+    find ${CRLF_ESPIDF} -name .git -prune -name build -prune -type f ! -perm 755 -exec unix2dos {} \;
     make IDF_PATH=${CRLF_ESPIDF} || failure "Failed to build with CRLFs in source"
     # do the same checks we do for the clean build
     assert_built ${APP_BINS} ${BOOTLOADER_BINS} partitions_singleapp.bin
@@ -165,6 +165,8 @@ function run_tests()
     take_build_snapshot
     touch sdkconfig
     make
+    # check the component_project_vars.mk file was rebuilt
+    assert_rebuilt esp32/component_project_vars.mk
     # pick one each of .c, .cpp, .S that #includes sdkconfig.h
     # and therefore should rebuild
     assert_rebuilt newlib/syscall_table.o