]> granicus.if.org Git - esp-idf/commitdiff
config system: Fix configuration when BUILD_DIR_BASE out-of-tree
authorAngus Gratton <angus@espressif.com>
Tue, 4 Oct 2016 04:38:20 +0000 (15:38 +1100)
committerAngus Gratton <angus@espressif.com>
Tue, 4 Oct 2016 04:38:20 +0000 (15:38 +1100)
Ref #38. Also no longer generates bootloader sdkconfig in source tree.

.gitignore
components/bootloader/Makefile.projbuild
make/project_config.mk

index 85027773b6ac611f9096376e4b2597d9caf8eb46..5ec57a167f3f0cd30246f3b655c486dccbf67683 100644 (file)
@@ -19,6 +19,3 @@ GPATH
 examples/*/sdkconfig
 examples/*/sdkconfig.old
 examples/*/build
-
-# Bootloader files
-components/bootloader/src/sdkconfig.old
\ No newline at end of file
index 7c5cde3b8cdae039cfa114987314b000aef5420c..559769957c1838ee6bc1a77cdda20a7628a976a6 100644 (file)
@@ -13,19 +13,21 @@ ifeq ("$(IS_BOOTLOADER_BUILD)","")
 BOOTLOADER_COMPONENT_PATH := $(COMPONENT_PATH)
 BOOTLOADER_BUILD_DIR=$(BUILD_DIR_BASE)/bootloader
 BOOTLOADER_BIN=$(BOOTLOADER_BUILD_DIR)/bootloader.bin
+BOOTLOADER_SDKCONFIG=$(BOOTLOADER_BUILD_DIR)/sdkconfig
 
 # Custom recursive make for bootloader sub-project
 BOOTLOADER_MAKE=$(MAKE) -C $(BOOTLOADER_COMPONENT_PATH)/src \
-       MAKEFLAGS= V=$(V) \
+       MAKEFLAGS= V=$(V) SDKCONFIG=$(BOOTLOADER_SDKCONFIG) \
        BUILD_DIR_BASE=$(BOOTLOADER_BUILD_DIR) \
 
 .PHONY: bootloader-clean bootloader-flash bootloader $(BOOTLOADER_BIN)
 
-$(BOOTLOADER_BIN): $(COMPONENT_PATH)/src/sdkconfig
+$(BOOTLOADER_BIN): | $(BOOTLOADER_BUILD_DIR)/sdkconfig
        $(Q) $(BOOTLOADER_MAKE) $@
 
 bootloader-clean:
-       $(Q) $(BOOTLOADER_MAKE) app-clean
+       $(Q) $(BOOTLOADER_MAKE) app-clean config-clean
+       $(Q) rm -f $(BOOTLOADER_SDKCONFIG) $(BOOTLOADER_SDKCONFIG).old
 
 clean: bootloader-clean
 
@@ -37,15 +39,17 @@ all_binaries: $(BOOTLOADER_BIN)
 
 ESPTOOL_ALL_FLASH_ARGS += 0x1000 $(BOOTLOADER_BIN)
 
-# synchronise the project level config to the component's
-# config
-$(COMPONENT_PATH)/src/sdkconfig: $(PROJECT_PATH)/sdkconfig
-       $(Q) cp $< $@
-
 # bootloader-flash calls flash in the bootloader dummy project
 bootloader-flash: $(BOOTLOADER_BIN)
        $(BOOTLOADER_MAKE) flash
 
+# synchronise the project level config to the bootloader's
+# config
+$(BOOTLOADER_SDKCONFIG): $(PROJECT_PATH)/sdkconfig | $(BOOTLOADER_BUILD_DIR)
+       $(Q) cp $< $@
+
+$(BOOTLOADER_BUILD_DIR):
+       $(Q) mkdir -p $@
 
 else
 CFLAGS += -D BOOTLOADER_BUILD=1 -I $(IDF_PATH)/components/esp32/include 
index 92937e8bfea88f0fcec4bb0c1dfba676554159ea..40f51ff8ffd9d2e760706591b6cac689eb8f7c2c 100644 (file)
@@ -7,6 +7,10 @@ COMPONENT_KCONFIGS_PROJBUILD := $(foreach component,$(COMPONENT_PATHS),$(wildcar
 #For doing make menuconfig etc
 KCONFIG_TOOL_DIR=$(IDF_PATH)/tools/kconfig
 
+# set SDKCONFIG to the project's sdkconfig,
+# unless it's overriden (happens for bootloader)
+SDKCONFIG ?= $(PROJECT_PATH)/sdkconfig
+
 # clear MAKEFLAGS as the menuconfig makefile uses implicit compile rules
 $(KCONFIG_TOOL_DIR)/mconf $(KCONFIG_TOOL_DIR)/conf:
        MAKEFLAGS="" \
@@ -15,17 +19,16 @@ $(KCONFIG_TOOL_DIR)/mconf $(KCONFIG_TOOL_DIR)/conf:
 
 # use a wrapper environment for where we run Kconfig tools
 KCONFIG_TOOL_ENV=KCONFIG_AUTOHEADER=$(BUILD_DIR_BASE)/include/sdkconfig.h \
-       KCONFIG_CONFIG=$(PROJECT_PATH)/sdkconfig \
-       COMPONENT_KCONFIGS="$(COMPONENT_KCONFIGS)" \
+       COMPONENT_KCONFIGS="$(COMPONENT_KCONFIGS)" KCONFIG_CONFIG=$(SDKCONFIG) \
        COMPONENT_KCONFIGS_PROJBUILD="$(COMPONENT_KCONFIGS_PROJBUILD)"
 
 menuconfig: $(KCONFIG_TOOL_DIR)/mconf $(IDF_PATH)/Kconfig $(BUILD_DIR_BASE)
        $(summary) MENUCONFIG
        $(Q) $(KCONFIG_TOOL_ENV) $(KCONFIG_TOOL_DIR)/mconf $(IDF_PATH)/Kconfig
 
-ifeq ("$(wildcard $(PROJECT_PATH)/sdkconfig)","")
+ifeq ("$(wildcard $(SDKCONFIG))","")
 #No sdkconfig found. Need to run menuconfig to make this if we need it.
-$(PROJECT_PATH)/sdkconfig: menuconfig
+$(SDKCONFIG): menuconfig
 endif
 
 defconfig: $(KCONFIG_TOOL_DIR)/mconf $(IDF_PATH)/Kconfig $(BUILD_DIR_BASE)
@@ -48,7 +51,7 @@ $(BUILD_DIR_BASE)/include/config/auto.conf:
 endif
 endif
 
-$(AUTO_CONF_REGEN_TARGET) $(BUILD_DIR_BASE)/include/sdkconfig.h: $(PROJECT_PATH)/sdkconfig $(KCONFIG_TOOL_DIR)/conf $(COMPONENT_KCONFIGS) $(COMPONENT_KCONFIGS_PROJBUILD)
+$(AUTO_CONF_REGEN_TARGET) $(BUILD_DIR_BASE)/include/sdkconfig.h: $(SDKCONFIG) $(KCONFIG_TOOL_DIR)/conf $(COMPONENT_KCONFIGS) $(COMPONENT_KCONFIGS_PROJBUILD)
        $(summary) GENCONFIG
        $(Q) mkdir -p $(BUILD_DIR_BASE)/include/config
        $(Q) cd $(BUILD_DIR_BASE); $(KCONFIG_TOOL_ENV) $(KCONFIG_TOOL_DIR)/conf --silentoldconfig $(IDF_PATH)/Kconfig