diff --git a/Makefile b/Makefile index fef89c2e83358cdacfbb82fb7bd6990175db46e1..91e42969bd997184f97ca32d8a9afd30be369842 100644 --- a/Makefile +++ b/Makefile @@ -300,7 +300,7 @@ $(eval PREREQUISITES := $(patsubst %.o,%.d,$(OBJ))) $(OBJ) : $(2) @echo " CC $$<" - $$(Q)$$(CC) $$(CFLAGS) -c $$< -o $$@ + $$(Q)$$(CC) $$(CFLAGS) -DIMAGE_BL$(3) -c $$< -o $$@ $(PREREQUISITES) : $(2) @@ -322,7 +322,7 @@ $(eval PREREQUISITES := $(patsubst %.o,%.d,$(OBJ))) $(OBJ) : $(2) @echo " AS $$<" - $$(Q)$$(AS) $$(ASFLAGS) -c $$< -o $$@ + $$(Q)$$(AS) $$(ASFLAGS) -DIMAGE_BL$(3) -c $$< -o $$@ $(PREREQUISITES) : $(2) @echo " DEPS $$@" @@ -359,11 +359,11 @@ endef define MAKE_OBJS $(eval C_OBJS := $(filter %.c,$(2))) $(eval REMAIN := $(filter-out %.c,$(2))) - $(eval $(foreach obj,$(C_OBJS),$(call MAKE_C,$(1),$(obj)))) + $(eval $(foreach obj,$(C_OBJS),$(call MAKE_C,$(1),$(obj),$(3)))) $(eval S_OBJS := $(filter %.S,$(REMAIN))) $(eval REMAIN := $(filter-out %.S,$(REMAIN))) - $(eval $(foreach obj,$(S_OBJS),$(call MAKE_S,$(1),$(obj)))) + $(eval $(foreach obj,$(S_OBJS),$(call MAKE_S,$(1),$(obj),$(3)))) $(and $(REMAIN),$(error Unexpected source files present: $(REMAIN))) endef @@ -387,7 +387,7 @@ define MAKE_BL $(eval DUMP := $(BUILD_DIR)/bl$(1).dump) $(eval BIN := $(BUILD_PLAT)/bl$(1).bin) - $(eval $(call MAKE_OBJS,$(BUILD_DIR),$(SOURCES))) + $(eval $(call MAKE_OBJS,$(BUILD_DIR),$(SOURCES),$(1))) $(eval $(call MAKE_LD,$(LINKERFILE),$(BL$(1)_LINKERFILE))) $(BUILD_DIR) : diff --git a/docs/firmware-design.md b/docs/firmware-design.md index 3203a524c435204963c5ce5e118d9971334e892c..23cae19e81f19bee096a955c59a2dc4141870e4a 100644 --- a/docs/firmware-design.md +++ b/docs/firmware-design.md @@ -1226,6 +1226,11 @@ categories. Based upon the above, the code layout looks like this: lib Yes Yes Yes services No No Yes +The build system provides a non configurable build option IMAGE_BLx for each +boot loader stage (where x = BL stage). e.g. for BL1 , IMAGE_BL1 will be +defined by the build system. This enables the Trusted Firmware to compile +certain code only for specific boot loader stages + All assembler files have the `.S` extension. The linker source files for each boot stage have the extension `.ld.S`. These are processed by GCC to create the linker scripts which have the extension `.ld`.