diff --git a/Makefile b/Makefile
index dbb5013b70647aac64aed0badf330b51901889c1..1d9e5f1cef996a216b1a721c578f3f1e19186ede 100644 (file)
--- a/Makefile
+++ b/Makefile
#
SOC ?= am65x
+CONFIG ?= evm
+
+BUILD_SRC ?= .
+O ?= out
+BIN_DIR ?= .
+
+srcroot = $(BUILD_SRC)
+soc_srcroot = $(srcroot)/soc/${SOC}/${CONFIG}
+objroot = $(O)
+soc_objroot = $(objroot)/soc/${SOC}/${CONFIG}
+
+binroot = $(BIN_DIR)
# The HS SYSFW will only work on HS hardware when signed with valid
# keys, warn HS users if the SECDEV environment variable is not set
SYSFW_HS_CERTS_PATH ?= ti-sci-firmware-${SOC}-hs-certs.bin
# Must use FULL Git hash below, as it is used as part of an URL for direct DL
-SYSFW_GIT_HASH ?= b41c4f097ab6f341462645f76059f48f78bbd17e
+SYSFW_GIT_HASH ?= 2b292f87e7257d4f9103d4e862a7b1769b13fed7
# URL to download SYSFW release binary from if not provided otherwise
SYSFW_DL_URL ?= https://git.ti.com/processor-firmware/ti-linux-firmware/blobs/raw/$(SYSFW_GIT_HASH)/ti-sysfw/$(SYSFW_PATH)
CFLAGS ?= \
-fno-builtin \
-Wall \
- -Iinclude/soc/${SOC}/ \
+ -Iinclude/soc/${SOC} \
+ -Isoc/${SOC}/${CONFIG} \
-Iinclude
-BINS ?= \
- sysfw.bin \
- board-cfg.bin \
- pm-cfg.bin \
- rm-cfg.bin \
- sec-cfg.bin
+ifdef ENABLE_TRACE
+CFLAGS += -DENABLE_TRACE
+endif
+
+SOURCES ?= \
+ board-cfg.c \
+ pm-cfg.c \
+ rm-cfg.c \
+ sec-cfg.c
-ITB ?= sysfw.itb
-ITS ?= $(basename $(ITB)).its
+SOC_SOURCES=$(SOURCES:%.c=$(soc_srcroot)/%.c)
+SOC_OBJS=$(SOURCES:%.c=$(soc_objroot)/%.o)
+
+SOC_BINS=$(soc_objroot)/sysfw.bin
+SOC_BIN_NAMES=sysfw.bin
+
+SOC_BINS += $(SOURCES:%.c=$(soc_objroot)/%.bin)
+SOC_BIN_NAMES += $(SOURCES:%.c=%.bin)
+
+ITB ?= $(binroot)/sysfw-$(SOC)-$(CONFIG).itb
+ITS ?= $(soc_objroot)/$(basename $(notdir $(ITB))).its
+
+vpath %.itb $(soc_objroot)
+vpath %.bin $(soc_objroot)
+vpath %.o $(soc_objroot)
+vpath %.c $(soc_srcroot)
MKIMAGE ?= mkimage
-.PHONY: all
-all: $(ITB)
+.PHONY: all _objtree_build
-%.o: %.c
- $(CROSS_COMPILE)gcc $(CFLAGS) -c -o $@ $<
+all: _objtree_build $(ITB)
-%.bin: %.o
- $(CROSS_COMPILE)objcopy -S -O binary $< $@
+_objtree_build:
+ @mkdir -p $(objroot) $(soc_objroot) $(binroot)
$(SYSFW_PATH):
@echo "Downloading SYSFW release image..."
@echo "Signing the SYSFW inner certificate with $(KEY) key...";
./gen_x509_cert.sh -d -c m3 -b $< -o $@ -l 0x40000 -k $(KEY);
-sysfw.bin: $(SYSFW_HS_CERTS_PATH) $(SYSFW_HS_PATH)
+$(soc_objroot)/sysfw.bin: $(SYSFW_HS_CERTS_PATH) $(SYSFW_HS_PATH)
cat $^ > $@
else
-sysfw.bin: $(SYSFW_PATH) sysfw_version
+$(soc_objroot)/sysfw.bin: $(SYSFW_PATH)
@if [ -n "$(KEY)" ]; then \
echo "Signing the SYSFW release image with $(KEY) key..."; \
./gen_x509_cert.sh -c m3 -b $< -o $@ -l 0x40000 -k $(KEY); \
fi
endif
-$(ITS): $(BINS)
- ./gen_its.sh $(BINS) > $@
+$(ITS): soc_objs $(SOC_BINS)
+ ./gen_its.sh $(SOC) $(CONFIG) $(SOC_BIN_NAMES) > $@
-$(ITB): $(ITS) $(BINS)
+$(ITB): $(ITS)
$(MKIMAGE) -f $< -r $@
+soc_objs: $(SOC_OBJS)
+
+
+$(soc_objroot)/%.o: %.c
+ $(CROSS_COMPILE)gcc $(CFLAGS) -c -o $@ $<
+
+%.bin: %.o
+ $(CROSS_COMPILE)objcopy -S -O binary $< $@
+
+
.PHONY: sysfw_version
sysfw_version: $(SYSFW_PATH)
@echo "SYSFW Version:" `strings $(SYSFW_PATH) | grep -o 'v20[0-9][0-9]\.[0-9][0-9].*(.*'`
.PHONY: clean
clean:
- -rm -f $(BINS)
+ -rm -f $(SOC_BINS) $(SOC_OBJS)
-rm -f $(ITB)
-rm -f $(ITS)
-rm -f $(SYSFW_HS_CERTS_PATH)
+ -rm -rf $(objroot)
.PHONY: mrproper
mrproper: clean