Files
gk-sdk/source/bootloader/u-boot-2020.01/lotus/machine/xmorca/compressed/Makefile
T

164 lines
5.0 KiB
Makefile

################################################################################
SHELL := /bin/bash
PWD = $(shell pwd)
HW_CROSS_COMPILE = $(CROSS_COMPILE)
BOOT_TOPDIR ?= $(PWD)/../../../../../
BOOT_OUTDIR ?= $(BOOT_TOPDIR)
include $(BOOT_OUTDIR)/include/autoconf.mk
include $(BOOT_OUTDIR)/include/config/auto.conf
GZIP ?= $(if $(wildcard $(BOOT_TOPDIR)/../../../tools/utils/bin/gzip), $(BOOT_TOPDIR)/../../../tools/utils/bin/gzip, $(BOOT_TOPDIR)/tools/gzip)
SOC := xmorca
SRCDIR := $(PWD)
################################################################################
CC := $(HW_CROSS_COMPILE)gcc
AR := $(HW_CROSS_COMPILE)ar
LD := $(HW_CROSS_COMPILE)ld
OBJCOPY := $(HW_CROSS_COMPILE)objcopy
################################################################################
.PHONY: all $(BOOT).bin
BOOT := u-boot
TEXTBASE := $(CONFIG_SYS_TEXT_BASE_ORI)
CFLAGS :=-Os -fno-builtin -ffreestanding \
-D__KERNEL__ -DTEXT_BASE=$(TEXTBASE) \
-I$(BOOT_TOPDIR)/include \
-I$(BOOT_OUTDIR)/include \
-I$(BOOT_TOPDIR)/arch/arm/include \
-I$(BOOT_TOPDIR)/lib/hw_dec \
-fno-pic -ffunction-sections \
-fdata-sections -fno-common -ffixed-r9 \
-fno-common -pipe -march=armv7-a \
-Wall -Wstrict-prototypes -fno-stack-protector \
-D__LINUX_ARM_ARCH__=7 -D__ARM__ \
-DCONFIG_MMC\
$(MKFLAGS) -fno-strict-aliasing \
$(EXTRA_CFLAGS) \
UBOOT_Z_LDS := u-boot.lds
################################################################################
START := start.o
COBJS := uart.o \
startup.o \
image_data.o \
reset.o \
exceptions.o \
time.o \
tail.o
SSRC := \
lotus/hw_dec/hw_decompress.c \
lotus/hw_dec/hw_decompress_$(SOC).c \
lotus/hw_dec/hw_decompress_v1.c \
lotus/hw_dec/hw_decompress_v1.h \
SRC := $(notdir $(SSRC))
REG := $(wildcard *.reg .reg)
IMAGE_DATA_Z := image_data.gzip
CFLAGS += -DCONFIG_BOOTREG_DEFAULT=\"$(BOOT_OUTDIR)/.reg\"
CFLAGS += -DCONFIG_AUXIMAGE=\"$(SRCDIR)/auxcode$(if $(CONFIG_LOTUS_FPGA),_fpga,).bin\"
CFLAGS += -DCONFIG_AUXCODE_2048_ENABLE=y
CFLAGS += -DCONFIG_MCU_FW_IMAGE=\"$(if $(wildcard $(BOOT_OUTDIR)/qs_mcu.bin),$(BOOT_OUTDIR)/qs_mcu.bin,$(SRCDIR)/qs_mcu.bin)\"
################################################################################
.PHONY: all $(BOOT).bin
all: $(BOOT).bin
ifeq ($(CONFIG_BOOT_CONSOLE_OPTIONAL),y)
$(BOOT).bin: $(BOOT).tmp
$(Q)cp $(CONFIG_BOOTSTRAP_IMAGE) bootstrap.bin
$(Q)BOOTSTRAP_SIZE=$$(stat -c%s bootstrap.bin); \
printf "%08x" $$BOOTSTRAP_SIZE | tac -rs .. | xxd -r -p > middleware.bin; \
dd if=/dev/zero bs=16 count=1 >> middleware.bin 2>/dev/null; \
printf "%08x" 0xdeadbeef | tac -rs .. | xxd -r -p >> middleware.bin
$(Q)cat $(BOOT).tmp middleware.bin bootstrap.bin > $(BOOT).bin
$(Q)rm -f middleware.bin bootstrap.bin
$(Q)chmod 754 $(BOOT).bin
$(Q)cp -fv $@ $(BOOT_OUTDIR)/u-boot-$(SOC).bin
$(Q)echo "$(BOOT).bin is Ready."
else
$(BOOT).bin: $(BOOT).tmp
$(Q)cat $(BOOT).tmp > $(BOOT).bin
$(Q)chmod 754 $(BOOT).bin
$(Q)cp -fv $@ $(BOOT_OUTDIR)/u-boot-$(SOC).bin
$(Q)echo $(BOOT).bin is Ready.
endif
$(BOOT).tmp: $(BOOT).elf
$(OBJCOPY) -O srec $< $(BOOT).srec
$(OBJCOPY) -j .text -O binary $< $(BOOT).text
$(OBJCOPY) --gap-fill=0xff -O binary $< $@
$(BOOT).elf: $(IMAGE_DATA_Z) $(SRC) $(START) $(COBJS) $(UBOOT_Z_LDS)
$(LD) -Bstatic -T $(UBOOT_Z_LDS) -Ttext $(TEXTBASE) $(START) \
$(COBJS) -Map $(BOOT).map -o $@
$(OBJDUMP) -d $@ > $@.asm
.PHONY: regfile
regfile:
@if [ "$(words $(REG))" = "0" ]; then ( \
echo '***' Need '.reg' or '*.reg' file in directory $(PWD); \
exit 1; \
) fi
@if [ "$(words $(REG))" != "1" ]; then ( \
echo '***' Found multi '.reg' or '*.reg' file in directory $(PWD); \
echo '***' Files: $(notdir $(REG)); \
exit 1; \
) fi
################################################################################
$(START): start.S regfile
$(CC) -D__ASSEMBLY__ $(CFLAGS) -o $@ $< -c
# -1 : --fast -9 : --best
$(IMAGE_DATA_Z): $(BINIMAGE)
ifneq ($(CONFIG_LOTUS_GZIP_BOOT),)
$(GZIP) -fNqc -7 $< > $@
else
cp $< $@
endif
%.o: %.c
$(CC) $(CFLAGS) -Wall -Wstrict-prototypes \
-fno-stack-protector -o $@ $< -c
%.o: %.S
$(CC) -D__ASSEMBLY__ $(CFLAGS) -o $@ $< -c
image_data.o: image_data.S $(IMAGE_DATA_Z)
$(CC) -D__ASSEMBLY__ $(CFLAGS) -o $@ $< -c
#############################################################################
$(SRC):
ln -sf $(BOOT_TOPDIR)/$(filter %/$@,$(SSRC)) $@
################################################################################
TMPS := $(COBJS) $(START) $(SRC) \
$(BOOT).map $(BOOT).elf $(BOOT).elf.asm $(BOOT).srec $(BOOT).bin $(BOOT).text $(BOOT).tmp \
$(IMAGE_DATA_Z)
cmd_rm_files = @echo 'RM $(1)';$(shell [[ -n "$(1)" && "$(1)" != "*" ]] && rm -f $(1))
.PHONY: clean distclean
distclean: clean
clean:
$(call cmd_rm_files, $(REG))
$(call cmd_rm_files, $(TMPS))
$(call cmd_rm_files, $(SRC))
################################################################################
.PHONY: clean
FORCE:
################################################################################