GDB ?= gdb OPENOCD_SCRIPTS = $(CONTIKI)/platform/galileo/bsp/openocd-scripts .PHONY: debug $(CONTIKI_PROJECT) # Multiboot ELF binary MULTIBOOT_SFX = $(TARGET) MULTIBOOT = $(CONTIKI_PROJECT).$(MULTIBOOT_SFX) # UEFI binary UEFI_DLL_SFX = $(TARGET).dll UEFI_DLL = $(CONTIKI_PROJECT).$(UEFI_SFX) UEFI_LDFLAGS += -Xlinker --emit-relocs -Xlinker --entry=uefi_start UEFI_SFX = $(TARGET).efi UEFI = $(CONTIKI_PROJECT).$(UEFI_SFX) # Suffixes for final (non-intermediate) files to be built FINAL_SFXS = $(MULTIBOOT_SFX) ifeq ($(EN_UEFI),1) FINAL_SFXS += $(UEFI_SFX) endif debug: $(MULTIBOOT) @openocd -s $(OPENOCD_SCRIPTS) -f debug.cfg &> $(shell pwd)/LOG_OPENOCD & @$(GDB) $< -ex "target remote :3333" CUSTOM_RULE_LINK=1 define LINK_template = %.$(1): %.co $$(PROJECT_OBJECTFILES) $$(PROJECT_LIBRARIES) contiki-$$(TARGET).a $$(TRACE_LD) $$(Q)$$(LD) $$(LDFLAGS) $(2) $$(TARGET_STARTFILES) $${filter-out %.a,$$^} \ $${filter %.a,$$^} $$(TARGET_LIBFILES) -o $$@ endef $(eval $(call LINK_template,$(MULTIBOOT_SFX),$(MULTIBOOT_LDFLAGS))) $(eval $(call LINK_template,$(UEFI_DLL_SFX),$(UEFI_LDFLAGS))) %.$(UEFI_SFX): %.$(UEFI_DLL_SFX) $(Q)$(GEN_FW) -o $@ -e UEFI_APPLICATION $^ # The Intel Galileo firmware has been observed to not relocate the image # if its base is set to the 1M boundary. This makes debugging easier, # since the symbols in the intermediate DLL then correspond to the load # addresses. $(Q)$(GEN_FW) -o $@ --rebase 0x100000 $@ $(CONTIKI_PROJECT): $(addprefix $(CONTIKI_PROJECT).,$(FINAL_SFXS)) @$(SIZE) $^ CLEAN += $(addprefix $(CONTIKI_PROJECT).,$(FINAL_SFXS))