260 lines
7.2 KiB
Makefile
260 lines
7.2 KiB
Makefile
|
|||
|
|
|
||
|
|
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)*
|
||
|
|
|
||
|
|
#########################################################################
|