|
BASE = zpu-elf
|
|
CC = $(BASE)-gcc
|
|
LD = $(BASE)-gcc
|
|
AS = $(BASE)-as
|
|
CP = $(BASE)-objcopy
|
|
DUMP = $(BASE)-objdump
|
|
|
|
ROMGEN = ./zpuromgen
|
|
|
|
# we use mincrt0.s from here
|
|
STARTUP_DIR = .
|
|
|
|
# we fetch ROM prologue / epilogue from here
|
|
RTL_DIR = $(ZPUFLEXDIR)/RTL/
|
|
|
|
|
|
BUILD_DIR=zpu_obj
|
|
|
|
#MINSTARTUP_SRC = mincrt0.s
|
|
MINSTARTUP_SRC = mycrt0.s
|
|
MINSTARTUP_OBJ = $(patsubst $(STARTUP_DIR)/%.s,$(BUILD_DIR)/%.o,$(MINSTARTUP_SRC))
|
|
|
|
MAIN_PRJ = HelloTinyROM
|
|
MAIN_SRC = main.c regs.c
|
|
#MAIN_SRC = stuff.c
|
|
MAIN_OBJ = $(COMMON_OBJ) $(patsubst %.c,$(BUILD_DIR)/%.o,$(MAIN_SRC))
|
|
|
|
LINKMAP = ./standalone_simple.ld
|
|
|
|
|
|
# Commandline options for each tool.
|
|
|
|
#ZPUOPTS= -mno-poppcrel -mno-pushspadd -mno-callpcrel -mno-shortop -mno-neg # No-neg requires bugfixed toolchain
|
|
#Include everything -> need to include emulation rom...
|
|
ZPUOPTS =
|
|
CFLAGS = -I. -c -g -O0 $(ZPUOPTS) -DDISABLE_UART_RX
|
|
|
|
LFLAGS = -nostartfiles -Wl,--relax -g -O0
|
|
#LFLAGS = -nostartfiles -Os
|
|
|
|
|
|
# Our target.
|
|
all: $(BUILD_DIR) $(MAIN_PRJ).bin $(MAIN_PRJ)_ROM.mif $(MAIN_PRJ).rpt $(MAIN_PRJ).dis
|
|
|
|
clean:
|
|
rm -f $(BUILD_DIR)/*.o *.hex *.elf *.map *.lst *.srec $(MAIN_PRJ).rom *~ */*.o *.bin
|
|
|
|
# Convert ELF binary to disassembly
|
|
%.dis: %.elf
|
|
zpu-elf-objdump -DS $< > $@
|
|
|
|
# Convert ELF binary to bin file.
|
|
%.bin: %.elf
|
|
$(CP) -O binary $< $@
|
|
|
|
%.rpt: %.elf
|
|
echo >$@ -n "End of code:\t"
|
|
$(DUMP) -x $< | grep >>$@ _romend
|
|
echo >>$@ -n "Start of BSS:\t"
|
|
$(DUMP) -x $< | grep >>$@ __bss_start__
|
|
echo >>$@ -n "End of BSS:\t"
|
|
$(DUMP) -x $< | grep >>$@ __bss_end__
|
|
cat $@
|
|
|
|
$(ROMGEN): ./zpuromgen.c
|
|
gcc -o ./zpuromgen ./zpuromgen.c
|
|
|
|
%_ROM.mif: %.bin $(ROMGEN)
|
|
sed 's/dualportram/$*_ROM/' >$*_ROM.mif <./rom_prologue.vhd
|
|
$(ROMGEN) $*.bin >>$*_ROM.mif
|
|
cat >>$*_ROM.mif ./rom_epilogue.vhd
|
|
|
|
# Link - this produces an ELF binary.
|
|
|
|
$(MAIN_PRJ).elf: $(MINSTARTUP_OBJ) $(MAIN_OBJ)
|
|
$(LD) $(LFLAGS) -T $(LINKMAP) -o $@ $+ $(LIBS)
|
|
|
|
$(BUILD_DIR)/%.o: %.c Makefile
|
|
$(CC) $(CFLAGS) -o $@ -c $<
|
|
|
|
$(BUILD_DIR)/%.o: %.s
|
|
$(AS) -o $@ $<
|
|
|
|
$(BUILD_DIR)/%.o: $(STARTUP_DIR)/%.s
|
|
$(AS) -o $@ $<
|
|
|
|
$(BUILD_DIR):
|
|
mkdir $(BUILD_DIR)
|
|
|