Files
BPI-M2C/source_sync_rls_25c/source/bsp/chipram/Makefile
T
2026-09-22 09:38:26 +08:00

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)*
#########################################################################