Merge pull request #750 from jwerner-chromium/m0_build
RK3399 M0 build system improvements
diff --git a/plat/rockchip/rk3399/drivers/m0/Makefile b/plat/rockchip/rk3399/drivers/m0/Makefile
index 8adc47e..b8e3cd4 100644
--- a/plat/rockchip/rk3399/drivers/m0/Makefile
+++ b/plat/rockchip/rk3399/drivers/m0/Makefile
@@ -39,16 +39,11 @@
ifeq (${V},0)
Q=@
- CHECKCODE_ARGS += --no-summary --terse
else
Q=
endif
export Q
-# All PHONY definition
-.PHONY: all clean distclean ${ARCH}
-all: ${ARCH}
-
.SUFFIXES:
INCLUDES += -Iinclude/
@@ -86,22 +81,21 @@
$(notdir $(patsubst %.S,%.o,$(filter %.S,$(1))))
endef
-BUILD_DIR := ${BUILD_PLAT}/obj
-BIN_DIR := ${BUILD_PLAT}/bin
SOURCES := $(C_SOURCES)
-OBJS := $(addprefix $(BUILD_DIR)/,$(call SOURCES_TO_OBJS,$(SOURCES)))
+OBJS := $(addprefix $(BUILD)/,$(call SOURCES_TO_OBJS,$(SOURCES)))
LINKERFILE := src/rk3399m0.ld
-MAPFILE := $(BIN_DIR)/$(PLAT_M0).map
-ELF := $(BIN_DIR)/$(PLAT_M0).elf
-BIN := $(BIN_DIR)/$(PLAT_M0).bin
+MAPFILE := $(BUILD)/$(PLAT_M0).map
+ELF := $(BUILD)/$(PLAT_M0).elf
+BIN := $(BUILD)/$(PLAT_M0).bin
# Function definition related compilation
define MAKE_C
$(eval OBJ := $(1)/$(patsubst %.c,%.o,$(notdir $(2))))
+-include $(patsubst %.o,%.d,$(OBJ))
$(OBJ) : $(2)
@echo " CC $$<"
- $$(Q)$$(CC) $$(CFLAGS) $$(INCLUDES) -c $$< -o $$@
+ $$(Q)$$(CC) $$(CFLAGS) $$(INCLUDES) -MMD -MT $$@ -c $$< -o $$@
endef
define MAKE_S
@@ -124,11 +118,8 @@
$(and $(REMAIN),$(error Unexpected source files present: $(REMAIN)))
endef
-$(BIN_DIR) :
- $(Q)mkdir -p "$@"
-
-$(BUILD_DIR) : $(BIN_DIR)
- $(Q)mkdir -p "$@"
+.PHONY: all
+all: $(BIN)
$(ELF) : $(OBJS) $(LINKERFILE)
@echo " LD $@"
@@ -139,18 +130,4 @@
@echo " BIN $@"
$(Q)$(OC) -O binary $< $@
-.PHONY : ${ARCH}
-${ARCH} : $(BUILD_DIR) $(BIN)
-
-$(eval $(call MAKE_OBJS,$(BUILD_DIR),$(SOURCES),$(1)))
-
-# Other common compilation entries
-clean:
- @echo " CLEAN"
- ${Q}rm -rf ${BUILD_BASE}/${PLAT_M0}
- ${Q}rm -rf ${VER_BIN_DIR}/$(PLAT_M0)*
-
-distclean:
- @echo " DISTCLEAN"
- ${Q}rm -rf ${BUILD_BASE}/${PLAT_M0}
- ${Q}rm -rf ${VER_BIN_DIR}/$(PLAT_M0)*
+$(eval $(call MAKE_OBJS,$(BUILD),$(SOURCES),$(1)))
diff --git a/plat/rockchip/rk3399/platform.mk b/plat/rockchip/rk3399/platform.mk
index 1d53804..3628dc3 100644
--- a/plat/rockchip/rk3399/platform.mk
+++ b/plat/rockchip/rk3399/platform.mk
@@ -90,8 +90,9 @@
# M0 source build
PLAT_M0 := ${PLAT}m0
+BUILD_M0 := ${BUILD_PLAT}/m0
-RK3399M0FW=${BUILD_PLAT}/m0/bin/${PLAT_M0}.bin
+RK3399M0FW=${BUILD_M0}/${PLAT_M0}.bin
$(eval $(call add_define,RK3399M0FW))
# CCACHE_EXTRAFILES is needed because ccache doesn't handle .incbin
@@ -99,7 +100,7 @@
${BUILD_PLAT}/bl31/pmu_fw.o: CCACHE_EXTRAFILES=$(RK3399M0FW)
${RK_PLAT_SOC}/drivers/pmu/pmu_fw.c: $(RK3399M0FW)
+$(eval $(call MAKE_PREREQ_DIR,${BUILD_M0},))
.PHONY: $(RK3399M0FW)
-$(RK3399M0FW):
- $(MAKE) -C ${RK_PLAT_SOC}/drivers/m0 \
- BUILD_PLAT=$(abspath ${BUILD_PLAT}/m0)
+$(RK3399M0FW): | ${BUILD_M0}
+ $(MAKE) -C ${RK_PLAT_SOC}/drivers/m0 BUILD=$(abspath ${BUILD_PLAT}/m0)