repo2/firmware/Makefile @ 183
46 | markw | BASE = zpu-elf
|
|
CC = $(BASE)-gcc
|
|||
LD = $(BASE)-gcc
|
|||
AS = $(BASE)-as
|
|||
CP = $(BASE)-objcopy
|
|||
DUMP = $(BASE)-objdump
|
|||
183 | markw | HOST_CC = gcc
|
|
HOST_LD = gcc
|
|||
HOST_CFLAGS = -g -DLINUX_BUILD -DLITTLE_ENDIAN -fno-builtin
|
|||
HOST_CFLAGS += -W -Wall
|
|||
HOST_LDFLAGS = -g
|
|||
#HOST_CFLAGS += -m32
|
|||
#HOST_LDFLAGS += -m32
|
|||
HOST_CFLAGS += $(shell pkg-config --cflags ncurses)
|
|||
HOST_LDFLAGS += $(shell pkg-config --libs ncurses)
|
|||
46 | markw | # we use mincrt0.s from here
|
|
STARTUP_DIR = .
|
|||
# we fetch ROM prologue / epilogue from here
|
|||
RTL_DIR = $(ZPUFLEXDIR)/RTL/
|
|||
BUILD_DIR=zpu_obj
|
|||
180 | markw | AEON_LITE_DIR = aeon_lite
|
|
DE1_DIR = de1
|
|||
CHAMELEON_DIR = chameleon
|
|||
MCC_DIR = mcc
|
|||
MIST_DIR = mist
|
|||
183 | markw | LINUXSIM_DIR = linux
|
|
180 | markw | ||
AEON_LITE_BUILD_DIR = $(BUILD_DIR)/$(AEON_LITE_DIR)
|
|||
DE1_BUILD_DIR = $(BUILD_DIR)/$(DE1_DIR)
|
|||
CHAMELEON_BUILD_DIR = $(BUILD_DIR)/$(CHAMELEON_DIR)
|
|||
MCC_BUILD_DIR = $(BUILD_DIR)/$(MCC_DIR)
|
|||
MIST_BUILD_DIR = $(BUILD_DIR)/$(MIST_DIR)
|
|||
183 | markw | LINUXSIM_BUILD_DIR = $(BUILD_DIR)/$(LINUXSIM_DIR)
|
|
180 | markw | ||
46 | markw | #MINSTARTUP_SRC = mincrt0.s
|
|
MINSTARTUP_SRC = mycrt0.s
|
|||
MINSTARTUP_OBJ = $(patsubst $(STARTUP_DIR)/%.s,$(BUILD_DIR)/%.o,$(MINSTARTUP_SRC))
|
|||
183 | markw | COMMON_SRC = main.c freeze.c fileutils.c fileselector.c atari_drive_emulator.c pokey/uart.c hexdump.c printf/printf.c fat/pff_file.c fat/pff.c common/utils.c
|
|
ZPU_SRC = regs.c joystick.c
|
|||
180 | markw | SDCARD_SRC = sd_direct/diskio_mmc.c sd_direct/spi.c sd_direct/mmc2.c
|
|
116 | markw | AEON_LITE_PRJ = AEON_LITE
|
|
183 | markw | AEON_LITE_SRC = $(COMMON_SRC) $(SDCARD_SRC) $(ZPU_SRC) de1/dirs.c
|
|
180 | markw | AEON_LITE_OBJ = $(patsubst %.c,$(AEON_LITE_BUILD_DIR)/%.o,$(AEON_LITE_SRC))
|
|
116 | markw | ||
78 | markw | DE1_PRJ = DE1
|
|
183 | markw | DE1_SRC = $(COMMON_SRC) $(SDCARD_SRC) $(ZPU_SRC) de1/dirs.c
|
|
180 | markw | DE1_OBJ = $(patsubst %.c,$(DE1_BUILD_DIR)/%.o,$(DE1_SRC))
|
|
78 | markw | ||
123 | markw | CHAMELEON_PRJ = CHAMELEON
|
|
183 | markw | CHAMELEON_SRC = $(COMMON_SRC) $(SDCARD_SRC) $(ZPU_SRC) chameleon/dirs.c
|
|
180 | markw | CHAMELEON_OBJ = $(patsubst %.c,$(CHAMELEON_BUILD_DIR)/%.o,$(CHAMELEON_SRC))
|
|
123 | markw | ||
69 | markw | MCC_PRJ = MCC216
|
|
183 | markw | MCC_SRC = $(COMMON_SRC) $(SDCARD_SRC) $(ZPU_SRC) mcc/dirs.c
|
|
180 | markw | MCC_OBJ = $(patsubst %.c,$(MCC_BUILD_DIR)/%.o,$(MCC_SRC))
|
|
46 | markw | ||
69 | markw | MIST_PRJ = MIST
|
|
183 | markw | MIST_SRC = $(COMMON_SRC) $(ZPU_SRC) mist/diskio_sectorrequest.c mist/dirs.c
|
|
180 | markw | MIST_OBJ = $(patsubst %.c,$(MIST_BUILD_DIR)/%.o,$(MIST_SRC))
|
|
69 | markw | ||
46 | markw | LINKMAP = ./standalone_simple.ld
|
|
183 | markw | LINUXSIM_EXE = linuxsim
|
|
LINUXSIM_SRC = $(COMMON_SRC) linux/main.c linux/mmc.c \
|
|||
sd_direct/diskio_mmc.c linux/dirs.c linux/linux_memory.c linux/curses_screen.c \
|
|||
linux/linux_helper.c
|
|||
LINUXSIM_OBJ = $(patsubst %.c,$(LINUXSIM_BUILD_DIR)/%.o,$(LINUXSIM_SRC))
|
|||
46 | markw | # 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 =
|
|||
180 | markw | CFLAGS = -I. -Isd_direct -Iprintf -Ifat -Icommon -Isdram_common -c -g -Os $(ZPUOPTS) -DDISABLE_UART_RX
|
|
46 | markw | ||
183 | markw | HOST_CFLAGS += -I. -Isd_direct -Iprintf -Ifat -Icommon -Isdram_common -DDISABLE_UART_RX
|
|
46 | markw | LFLAGS = -nostartfiles -Wl,--relax -g -Os
|
|
#LFLAGS = -nostartfiles -Os
|
|||
# Our target.
|
|||
123 | markw | all: mcc mist de1 aeon_lite chameleon
|
|
46 | markw | ||
69 | markw | install:
|
|
cd ../common/romgen && ./createall && cd ../../firmware
|
|||
116 | markw | aeon_lite: $(BUILD_DIR) $(AEON_LITE_PRJ).bin $(AEON_LITE_PRJ).rpt
|
|
78 | markw | de1: $(BUILD_DIR) $(DE1_PRJ).bin $(DE1_PRJ).rpt
|
|
123 | markw | chameleon: $(BUILD_DIR) $(CHAMELEON_PRJ).bin $(CHAMELEON_PRJ).rpt
|
|
69 | markw | mcc: $(BUILD_DIR) $(MCC_PRJ).bin $(MCC_PRJ).rpt
|
|
mist: $(BUILD_DIR) $(MIST_PRJ).bin $(MIST_PRJ).rpt
|
|||
183 | markw | .PHONY: linux
|
|
linux: $(BUILD_DIR) $(LINUXSIM_EXE)
|
|||
46 | markw | clean:
|
|
183 | markw | rm -rf $(BUILD_DIR)/* *.hex *.elf *.map *.lst *.srec *.bin *.rpt $(LINUXSIM_EXE)
|
|
46 | markw | ||
# 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 $@
|
|||
# Link - this produces an ELF binary.
|
|||
116 | markw | $(AEON_LITE_PRJ).elf: $(MINSTARTUP_OBJ) $(AEON_LITE_OBJ)
|
|
$(LD) $(LFLAGS) -T $(LINKMAP) -o $@ $+ $(LIBS)
|
|||
78 | markw | $(DE1_PRJ).elf: $(MINSTARTUP_OBJ) $(DE1_OBJ)
|
|
$(LD) $(LFLAGS) -T $(LINKMAP) -o $@ $+ $(LIBS)
|
|||
123 | markw | $(CHAMELEON_PRJ).elf: $(MINSTARTUP_OBJ) $(CHAMELEON_OBJ)
|
|
$(LD) $(LFLAGS) -T $(LINKMAP) -o $@ $+ $(LIBS)
|
|||
69 | markw | $(MCC_PRJ).elf: $(MINSTARTUP_OBJ) $(MCC_OBJ)
|
|
46 | markw | $(LD) $(LFLAGS) -T $(LINKMAP) -o $@ $+ $(LIBS)
|
|
69 | markw | $(MIST_PRJ).elf: $(MINSTARTUP_OBJ) $(MIST_OBJ)
|
|
$(LD) $(LFLAGS) -T $(LINKMAP) -o $@ $+ $(LIBS)
|
|||
183 | markw | $(LINUXSIM_EXE): $(LINUXSIM_OBJ)
|
|
$(HOST_LD) $(HOST_LDFLAGS) -o $@ $+
|
|||
180 | markw | $(AEON_LITE_BUILD_DIR)/%.o: %.c Makefile
|
|
46 | markw | mkdir -p `dirname $@`
|
|
180 | markw | $(CC) -I$(AEON_LITE_DIR) $(CFLAGS) -o $@ -c $<
|
|
46 | markw | ||
180 | markw | $(CHAMELEON_BUILD_DIR)/%.o: %.c Makefile
|
|
mkdir -p `dirname $@`
|
|||
$(CC) -I$(CHAMELEON_DIR) $(CFLAGS) -o $@ -c $<
|
|||
$(DE1_BUILD_DIR)/%.o: %.c Makefile
|
|||
mkdir -p `dirname $@`
|
|||
$(CC) -I$(DE1_DIR) $(CFLAGS) -o $@ -c $<
|
|||
$(MCC_BUILD_DIR)/%.o: %.c Makefile
|
|||
mkdir -p `dirname $@`
|
|||
$(CC) -I$(MCC_DIR) $(CFLAGS) -o $@ -c $<
|
|||
$(MIST_BUILD_DIR)/%.o: %.c Makefile
|
|||
mkdir -p `dirname $@`
|
|||
$(CC) -I$(MIST_DIR) $(CFLAGS) -o $@ -c $<
|
|||
183 | markw | $(LINUXSIM_BUILD_DIR)/%.o: %.c Makefile
|
|
@mkdir -p `dirname $@`
|
|||
$(HOST_CC) -I$(LINUXSIM_DIR) $(HOST_CFLAGS) -o $@ -c $<
|
|||
46 | markw | $(BUILD_DIR)/%.o: %.s
|
|
$(AS) -o $@ $<
|
|||
$(BUILD_DIR)/%.o: $(STARTUP_DIR)/%.s
|
|||
$(AS) -o $@ $<
|
|||
$(BUILD_DIR):
|
|||
mkdir $(BUILD_DIR)
|