#
# tftpnaive makefile
#

VPATH := ../src:$VPATH

BASELIBDIR = ../../baselib
BASELIBINCDIR = ../../baselib/include
BASELIB = $(BASELIBDIR)/lib/libbaselib.a

TFTPNAIVELIB = libtftpnaive.a

#
# Compilation environment
#
TARGET  = m68k-elf
ARCH    = -m68000
LSCRIPT = ram.ld

# Compiler and associated tools filenames.
CC = $(TARGET)-gcc
LD = $(TARGET)-ld
AR = $(TARGET)-ar
OBJCOPY = $(TARGET)-objcopy

# Board setting
# -DCONFIG_DRAGEN2 for the Dragon Engine II
# -DCONFIG_UCDIMM for the uCdimm
DEFS = -DCONFIG_DRAGEN2 -DTFTPNAIVE_TIMEREQUEST

# Flags.
AFLAGS = $(ARCH) -Wall $(DEFS) -I../src -I../include -I$(BASELIBINCDIR)
CFLAGS = $(ARCH) -Wall -O2 --omit-frame-pointer $(DEFS) -I../src -I../include -I$(BASELIBINCDIR)
LFLAGS = $(ARCH) -nostdlib -T $(LSCRIPT) -Wl,-Map=$(basename $@).map

#
# Targets
#

LIBOBJ = \
	cs89x.o \
	arp.o \
	ip.o \
	icmp.o \
	udp.o \
	bootp.o \
	tftp.o \
	net.o \
	netinit.o

OBJECTS = \
	main.o

all: prog.bin

$(TFTPNAIVELIB): ${LIBOBJ}
	$(AR) -rcs $@ ${LIBOBJ}

$(BASELIB):
	make -C $(BASELIBDIR)

crt0.o: crt0.S
	$(CC) $(AFLAGS) -o $@ -c $+

prog.out: ${OBJECTS} crt0.o $(TFTPNAIVELIB) $(BASELIB)
	$(CC) $(LFLAGS) -o $@ ${OBJECTS} $(TFTPNAIVELIB) $(BASELIB)

prog.bin: prog.out
	$(OBJCOPY) -O binary -j .text -j .data $< $@

clean:
	rm -f *.a *.o *.map *.srec *.disasm *.brec *.out *.bin *~ *.s
