]> granicus.if.org Git - esp-idf/commitdiff
Make: Fix make bootloader, make bootloader-flash, cleaning of bootloader
authorAngus Gratton <angus@espressif.com>
Thu, 18 Aug 2016 04:36:15 +0000 (12:36 +0800)
committerIvan Grokhotkov <ivan@espressif.com>
Thu, 18 Aug 2016 13:15:47 +0000 (21:15 +0800)
Should resolve TW6610

components/bootloader/Makefile.projbuild
components/bootloader/src/Makefile
make/project.mk
make/project_config.mk

index 72f0789650e6ef97ee80f1f31867013537763d3f..c2ee17887e0f0a6f553b0f2b9174773325248f37 100644 (file)
@@ -10,8 +10,9 @@
 #
 
 BOOTLOADER_COMPONENT_PATH := $(COMPONENT_PATH)
-EXTRA_CLEAN_TARGETS+=bootloader-clean
-BOOTLOADER_BIN=$(BUILD_DIR_BASE)/bootloader.bin
+EXTRA_CLEAN_TARGETS += bootloader-clean
+BOOTLOADER_BUILD_DIR=$(BUILD_DIR_BASE)/bootloader
+BOOTLOADER_BIN=$(BOOTLOADER_BUILD_DIR)/bootloader.bin
 
 .PHONY: bootloader-clean bootloader-flash bootloader
 
@@ -21,7 +22,7 @@ $(BOOTLOADER_BIN): $(COMPONENT_PATH)/src/sdkconfig
        COMPONENT_INCLUDES= \
        LDFLAGS= \
        CFLAGS= \
-       BUILD_DIR_BASE=$(BUILD_DIR_BASE)/bootloader \
+       BUILD_DIR_BASE=$(BOOTLOADER_BUILD_DIR) \
        make -C $(BOOTLOADER_COMPONENT_PATH)/src MAKEFLAGS= V=$(V) TARGET_BIN_LAYOUT="$(BOOTLOADER_TARGET_BIN_LAYOUT)"
 
 bootloader-clean:
@@ -30,10 +31,10 @@ bootloader-clean:
        COMPONENT_INCLUDES= \
        LDFLAGS= \
        CFLAGS= \
-       BUILD_DIR_BASE=$(BUILD_DIR_BASE)/bootloader \
+       BUILD_DIR_BASE=$(BOOTLOADER_BUILD_DIR) \
        make -C $(BOOTLOADER_COMPONENT_PATH)/src clean MAKEFLAGS= V=$(V)
 
-bootloader: $(BUILD_DIR_BASE)/bootloader.bin
+bootloader: $(BOOTLOADER_BIN)
 
 # synchronise the project level config to the component's
 # config
@@ -42,4 +43,4 @@ $(COMPONENT_PATH)/src/sdkconfig: $(PROJECT_PATH)/sdkconfig
 
 # bootloader-flash calls flash in the bootloader dummy project
 bootloader-flash: $(BOOTLOADER_BIN)
-       make -C $(BOOTLOADER_COMPONENT_PATH)/src flash MAKEFLAGS= V=$(V) CONFIG_APP_OFFSET=0x1000
+       make -C $(BOOTLOADER_COMPONENT_PATH)/src flash MAKEFLAGS= V=$(V)
index abf637401573cbf9a162a042bcfc13128422db75..05ad858edb7ae7fc960a71e059e81bb5eb1da4be 100644 (file)
@@ -10,3 +10,6 @@ COMPONENTS := esptool_py
 #adding it in the main/Makefile directory.
 
 include $(SDK_PATH)/make/project.mk
+
+# override configured app offset, as bootloader "app" is at 0x1000
+CONFIG_APP_OFFSET := 0x1000
index 873c311ecd13e10947c6986a71cc94642e5c62a9..6c1f9a62a5c10351e18d3d8f0fc95b1f79c562f7 100644 (file)
@@ -16,12 +16,13 @@ all: project
 # disable built-in make rules, makes debugging saner
 MAKEFLAGS +=-rR
 
-# Figure out PROJECT_PATH if not set, check for unacceptable Makefile entry points
+# Figure out PROJECT_PATH if not set
 ifeq ("$(PROJECT_PATH)","")
 #The path to the project: we assume the Makefile including this file resides
 #in the root of that directory.
 PROJECT_PATH := $(abspath $(dir $(firstword $(MAKEFILE_LIST))))
 export PROJECT_PATH
+endif
 
 #The directory where we put all objects/libraries/binaries. The project Makefile can
 #configure this if needed.
@@ -59,6 +60,8 @@ COMPONENT_PATHS_BUILDABLE := $(foreach cp,$(COMPONENT_PATHS),$(if $(wildcard $(c
 
 # Assemble global list of include dirs (COMPONENT_INCLUDES), and
 # LDFLAGS args (COMPONENT_LDFLAGS) supplied by each component.
+COMPONENT_INCLUDES :=
+COMPONENT_LDFLAGS :=
 #
 # Also add any inter-component dependencies for each component.
 
@@ -72,7 +75,7 @@ COMPONENT_PATHS_BUILDABLE := $(foreach cp,$(COMPONENT_PATHS),$(if $(wildcard $(c
 #
 # Debugging this? Replace $(shell with $(error and you'll see the full command as-run.
 define GetVariable
-$(shell "$(MAKE)" -s --no-print-directory -C $(1) get_variable COMPONENT_INCLUDES=dummy COMPONENT_LDFLAGS=dummy PROJECT_PATH=$(PROJECT_PATH) GET_VARIABLE=$(2) | sed -En "s/^$(2)=(.+)/\1/p" )
+$(shell "$(MAKE)" -s --no-print-directory -C $(1) get_variable PROJECT_PATH=$(PROJECT_PATH) GET_VARIABLE=$(2) | sed -En "s/^$(2)=(.+)/\1/p" )
 endef
 
 ifeq ("$(COMPONENT_INCLUDES)","")
@@ -129,6 +132,7 @@ export CC CXX LD AR OBJCOPY
 PYTHON=$(call dequote,$(CONFIG_PYTHON))
 
 PROJECT_ELF:=$(BUILD_DIR_BASE)/$(PROJECT_NAME).elf
+PROJECT_MAP:=$(PROJECT_ELF:.elf=.map)
 PROJECT_BIN:=$(PROJECT_ELF:.elf=.bin)
 
 # Include any Makefile.projbuild file letting components add
@@ -139,10 +143,13 @@ COMPONENT_PATH := $(1)
 endef
 $(foreach componentpath,$(COMPONENT_PATHS),$(eval $(call includeProjBuildMakefile,$(componentpath))))
 
+# once we know component paths, we can include the config
+include $(SDK_PATH)/make/project_config.mk
+
 # ELF depends on the -build target of every component
 $(PROJECT_ELF): $(addsuffix -build,$(notdir $(COMPONENT_PATHS_BUILDABLE)))
        $(vecho) LD $(notdir $@)
-       $(Q) $(CC) $(LDFLAGS) -o $@ -Wl,-Map=$(patsubst %.elf,%.map,$@)
+       $(Q) $(CC) $(LDFLAGS) -o $@ -Wl,-Map=$(PROJECT_MAP)
 
 # Generation of $(PROJECT_BIN) from $(PROJECT_ELF) is added by the esptool
 # component's Makefile.projbuild
@@ -174,12 +181,9 @@ $(foreach component,$(COMPONENT_PATHS_BUILDABLE),$(eval $(call GenerateComponent
 $(foreach component,$(COMPONENT_PATHS_BUILDABLE),$(eval $(call GenerateComponentTarget,$(component),build,$(PROJECT_PATH)/build/include/sdkconfig.h)))
 $(foreach component,$(COMPONENT_PATHS_BUILDABLE),$(eval $(call GenerateComponentTarget,$(component),clean)))
 
-include $(SDK_PATH)/make/project_config.mk
-
 clean: $(addsuffix -clean,$(notdir $(COMPONENT_PATHS_BUILDABLE))) $(EXTRA_CLEAN_TARGETS)
        $(vecho) RM $(PROJECT_ELF)
-       $(Q) rm -f $(PROJECT_ELF)
+       $(Q) rm -f $(PROJECT_ELF) $(PROJECT_BIN) $(PROJECT_MAP)
        $(Q) rm -rf $(PROJECT_PATH)/build/include/config $(PROJECT_PATH)/build/include/sdkconfig.h
 
-endif
 
index 2f4d1fa2d9509e39f689c6e779cf1bbfc24b06b7..73eb83a8aa8f2fff9a3b3ffe3a8e601777fce395 100644 (file)
@@ -12,6 +12,7 @@ $(KCONFIG_TOOL_DIR)/mconf $(KCONFIG_TOOL_DIR)/conf:
        MAKEFLAGS="" \
        CFLAGS="" \
        LDFLAGS="" \
+       CC=$(HOSTCC) LD=$(HOSTLD) \
        $(MAKE) -C $(KCONFIG_TOOL_DIR)
 
 menuconfig: $(KCONFIG_TOOL_DIR)/mconf $(SDK_PATH)/Kconfig $(BUILD_DIR_BASE)