ifdef O ifeq ("$(origin O)", "command line") BUILD_DIR := $(O) endif endif ifneq ($(BUILD_DIR),) saved-output := $(BUILD_DIR) # Attempt to create a output directory. $(shell [ -d ${BUILD_DIR} ] || mkdir -p ${BUILD_DIR}) # Verify if it was successful. BUILD_DIR := $(shell cd $(BUILD_DIR) && /bin/pwd) $(if $(BUILD_DIR),,$(error output directory "$(saved-output)" does not exist)) endif # ifneq ($(BUILD_DIR),) OBJTREE := $(if $(BUILD_DIR),$(BUILD_DIR),$(CURDIR)) SRCTREE := $(CURDIR) TOPDIR := $(SRCTREE) export TOPDIR SRCTREE OBJTREE MKCONFIG := $(SRCTREE)/mkconfig obj := $(OBJTREE)/ src := $(SRCTREE)/ export obj src ######################################################################### ifeq ($(obj)include/config.mk,$(wildcard $(obj)include/config.mk)) # load ARCH, BOARD, and CPU configuration include $(obj)include/config.mk export ARCH CPU BOARD VENDOR SOC ifndef CONFIG_X86 CROSS_COMPILE ?= arm-eabi- endif # load other configuration include $(TOPDIR)/config.mk include $(TOPDIR)/nand_fdl/board/$(VENDOR)/$(SOC)/config.mk ######################################################################### # Add GCC lib #ifndef CONFIG_X86 PLATFORM_LIBGCC = -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) #endif PLATFORM_LIBS += $(PLATFORM_LIBGCC) export PLATFORM_LIBS ######################################################################### #ALL += spl fdl1 ALL += spl fdl1 ddr_scan all: $(ALL) $(obj)include/autoconf.mk sinclude $(obj)include/autoconf.mk.dep sinclude $(obj)include/autoconf.mk spl: SPL_ALL depend dep: $(obj)include/autoconf.mk splobj := $(OBJTREE)/nand_spl/ fdlobj := $(OBJTREE)/nand_fdl/ ddr_scan_obj := $(OBJTREE)/ddr_scan/ export splobj fdlobj ddr_scan_obj CFLAGS += -g -ffunction-sections -fdata-sections ifeq ($(ARCH),x86) CFLAGS += -m32 -w AFLAGS += -m32 -w else CFLAGS += -mlittle-endian AFLAGS += -mlittle-endian endif ######################################################################### SPL_OBJ := $(splobj)nand_spl/board/$(VENDOR)/$(SOC)/spl_start.o FDL_OBJ := $(fdlobj)nand_fdl/board/$(VENDOR)/$(SOC)/fdl_start.o $(SPL_OBJ): @: $(FDL_OBJ): @: SPL_LIBS-y += drivers/ SPL_LIBS-y += secure/ SPL_LIBS-y += common/ SPL_LIBS-y += $(CPUDIR)/$(SOC)/ SPL_LIBS-y += arch/$(ARCH)/lib/ SPL_LIBS-y += nand_spl/ SPL_LIBS-y += nand_spl/board/$(VENDOR)/$(SOC)/ SPL_LIBS-y += ddr/ SPL_LIBS-$(CONFIG_SPRD_DMC_R2P0) += arch/$(ARCH)/cpu/sprd_dmc/r2p0/ SPL_LIBS-$(CONFIG_SPRD_DMC_R3P0) += arch/$(ARCH)/cpu/sprd_dmc/r3p0/ FDL_LIBS-y += drivers/ FDL_LIBS-y += secure/ FDL_LIBS-y += common/ FDL_LIBS-y += $(CPUDIR)/$(SOC)/ FDL_LIBS-y += arch/$(ARCH)/lib/ FDL_LIBS-y += nand_fdl/fdl-1/src/ FDL_LIBS-y += nand_fdl/common/ FDL_LIBS-y += nand_fdl/board/$(VENDOR)/$(SOC)/ FDL_LIBS-y += ddr/ FDL_LIBS-$(CONFIG_SPRD_DMC_R2P0) += arch/$(ARCH)/cpu/sprd_dmc/r2p0/ FDL_LIBS-$(CONFIG_SPRD_DMC_R3P0) += arch/$(ARCH)/cpu/sprd_dmc/r3p0/ SPL_LIBS-y := $(patsubst %/, %/built-in.o, $(SPL_LIBS-y)) FDL_LIBS-y := $(patsubst %/, %/built-in.o, $(FDL_LIBS-y)) SPL_LIBS := $(addprefix $(splobj),$(sort $(SPL_LIBS-y))) FDL_LIBS := $(addprefix $(fdlobj),$(sort $(FDL_LIBS-y))) DDR_SCAN_LIBS := $(addprefix $(ddr_scan_obj),$(sort $(FDL_LIBS-y))) __SPL_LIBS := $(subst $(splobj),,$(SPL_LIBS)) __FDL_LIBS := $(subst $(fdlobj),,$(FDL_LIBS)) __DDR_SCAN_LIBS := $(subst $(ddr_scan_obj),,$(DDR_SCAN_LIBS)) build := -f $(TOPDIR)/scripts/Makefile.build -C $(SPL_LIBS): @echo "spl built: $@ libs: $(SPL_LIBS)!!!" $(MAKE) MAKE_SPL_TARGET=y $(build) $(dir $(subst $(splobj),,$@)) $(FDL_LIBS): @echo "fdl built: $@ libs: $(FDL_LIBS)!!!" $(MAKE) $(build) $(dir $(subst $(fdlobj),,$@)) $(DDR_SCAN_LIBS): @echo "ddr_scan built: $@ libs: $(DDR_SCAN_LIBS)!!!" $(MAKE) MAKE_DDR_SCAN_TARGET=y $(build) $(dir $(subst $(ddr_scan_obj),,$@)) ######################################################################### SPL_LDSCRIPT = $(TOPDIR)/nand_spl/board/$(VENDOR)/$(SOC)/spl.lds SPL_LDFLAGS = -Bstatic -T $(SPL_LDS) $(PLATFORM_LDFLAGS) --gc-sections SPL_LNDIR := $(splobj) FILE_SIZE_CHECK := $(SRCTREE)/nand_spl/board/$(VENDOR)/$(SOC)/file_size_check.sh SPL_ALL :$(splobj)u-boot-spl $(splobj)u-boot-spl.bin $(splobj)u-boot-spl-16k.bin file_size_check $(SPL_LNDIR)/spl.lds STARTDIR := $(splobj)nand_spl/board/$(VENDOR)/$(SOC) SPL_LDPPFLAGS += -DSTARTDIR=$(STARTDIR) SPL_LDS := $(SPL_LNDIR)spl.lds $(SPL_LDS): $(SPL_LDSCRIPT) depend $(CPP) $(CPPFLAGS) $(SPL_LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@ file_size_check: $(splobj)u-boot-spl-16k.bin $(FILE_SIZE_CHECK) $(CONFIG_BIN_SIZE) $< $(splobj)u-boot-spl.bin $(splobj)u-boot-spl $(splobj)u-boot-spl-16k.bin: $(splobj)u-boot-spl.bin cat $(splobj)u-boot-spl.bin > $@ $(splobj)u-boot-spl.bin: $(splobj)u-boot-spl $(OBJCOPY) ${OBJCFLAGS} --pad-to "$(CONFIG_PAD_TO)" -O binary $< $@ $(splobj)u-boot-spl: $(SPL_LDS) $(SPL_LIBS) $(SPL_OBJ) cd $(SPL_LNDIR) && $(LD) $(SPL_LDFLAGS) $(PLATFORM_LIBS) $(SPL_LIBS) $(SPL_OBJ)\ -Map $(splobj)u-boot-spl.map \ -o $@ ######################################################################### FDL1_PATH = $(TOPDIR)/nand_fdl/fdl-1 FDL1_LNDIR := $(fdlobj) fdl1: $(fdlobj)fdl1.bin FDL1_LDSCRIPT = $(TOPDIR)/nand_fdl/board/$(VENDOR)/$(SOC)/fdl1.lds FDL1_LDFLAGS = -Bstatic -T $(FDL_LDS) $(PLATFORM_LDFLAGS) --gc-sections FDL_STARTDIR := $(fdlobj)nand_fdl/board/$(VENDOR)/$(SOC) FDL_LDPPFLAGS += -DFDL_STARTDIR=$(FDL_STARTDIR) FDL_LDS := $(FDL1_LNDIR)fdl1.lds $(FDL_LDS): $(FDL1_LDSCRIPT) depend $(CPP) $(CPPFLAGS) $(FDL_LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@ $(fdlobj)fdl1.bin : $(fdlobj)fdl1.axf $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@ $(fdlobj)fdl1.axf: $(FDL_LIBS) $(FDL_LDS) $(FDL_OBJ) cd $(FDL1_LNDIR) && $(LD) $(FDL1_LDFLAGS)\ $(FDL_LIBS) $(FDL_OBJ)\ -Map $(fdlobj)fdl1.map \ -o $@ $(PLATFORM_LIBS) ######################################################################### ######################################################################### ddr_scan: $(ddr_scan_obj)ddr_scan.bin $(ddr_scan_obj)ddr_scan.bin : $(ddr_scan_obj)ddr_scan.axf $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@ $(ddr_scan_obj)ddr_scan.axf: $(DDR_SCAN_LIBS) $(FDL_LDS) $(FDL_OBJ) cd $(FDL1_LNDIR) && $(LD) $(FDL1_LDFLAGS)\ $(DDR_SCAN_LIBS) $(FDL_OBJ)\ -Map $(ddr_scan_obj)ddr_scan.map \ -o $@ $(PLATFORM_LIBS) ######################################################################### endif # config.mk preconfig: @rm -f $(obj)include/config.h $(obj)include/config.mk @mkdir -p $(obj)include @mkdir -p $(obj)nand_fdl @mkdir -p $(obj)nand_spl @mkdir -p $(obj)ddr_scan $(obj)include/autoconf.mk: $(obj)include/config.h $(CPP) $(CFLAGS) -DDO_DEPS_ONLY -dM $(obj)include/config.h > $@.tmp && \ sed -n -f scripts/define2mk.sed $@.tmp > $@; \ rm $@.tmp #======================================================================== # SPRD board define #======================================================================== include $(TOPDIR)/board.def ######################################################################### clean: @rm -f $(obj)nand_spl/{u-boot-spl,u-boot-spl.map} @find $(OBJTREE) -type f \ \( -name 'core' -o -name '.depend' -o -name '*.bak' -o -name '*~' \ -o -name '*.o' -o -name '*.a' -o -name '*.exe' \) -print \ | xargs rm -f distclean: rm -rf $(obj)* #########################################################################