PREFIX  = nios2-elf-
CC      = $(PREFIX)gcc
OBJCOPY = $(PREFIX)objcopy
GDB     = $(PREFIX)gdb

ALTERA_PATH ?=  /comelec/softs/opt/altera/current
#ALTERA_PATH ?=  /opt/comelec/intelFPGA/current

CFLAGS  = -g -O2 -Os -ffunction-sections -fverbose-asm
CFLAGS += -fno-inline -mno-cache-volatile -mno-hw-mul -mno-hw-div
CFLAGS += -I $(ALTERA_PATH)/nios2eds/components/altera_nios2/HAL/inc/
CFLAGS += -DSYSTEM_BUS_WIDTH=32 -DALT_SINGLE_THREADED
CFLAGS += -D_JTAG_UART_BASE=0x9020

ASFLAGS  = -g

LDFLAGS  = -Wl,--defsym -Wl,nasys_stack_top=0x5000
LDFLAGS += -Wl,--section-start -Wl,.reset=0x0
LDFLAGS += -Wl,--section-start -Wl,.exceptions=0x20
LDFLAGS += -Wl,--defsym -Wl,nasys_program_mem=0x200
LDFLAGS += -Wl,--defsym -Wl,nasys_data_mem=0x200
LDFLAGS += -Wl,--script=$(ALTERA_PATH)/University_Program/Monitor_Program/build/nios_cpp_build.ld

# Where to look for the toolchain
PATH :=$(PATH):$(ALTERA_PATH)/nios2eds/bin/gnu/H-x86_64-pc-linux-gnu/bin
# Other nios/quartus tools
PATH :=$(PATH):$(ALTERA_PATH)/nios2eds/bin/
PATH :=$(PATH):/comelec/softs/bin

VPATH = $(ALTERA_PATH)/University_Program/Monitor_Program/amp/lib/src/

export $(PATH)

# bogus gdb TUI (old ncurses?)
export TERM = xterm-basic
export TERMINFO = /usr/share/terminfo

SOFFILE = ../DE1_SoC.sof

EXE = test.elf
SREC = $(patsubst %.elf, %.srec, $(EXE))


OBJS = reset.o test.o niosII_jtag_uart.o nios2_irq.o

.PHONY: all clean terminal debug gdb-server fpga-conf

help:
	@echo "make all   : compile the program"
	@echo "fpga-conf  : program the fpga"
	@echo "gdb-server : launch the gdb-server attached to the nios cpu" 
	@echo "debug      : launch the debugger" 
	@echo "terminal   : launch a terminal attached to the cpu"

all: $(EXE) $(SREC)


$(EXE): $(OBJS)
	$(CC) $(LDFLAGS) $^ -o $@

%.srec:%.elf
	$(OBJCOPY) -O srec $< $@

clean:
	rm -f $(OBJS)
	rm -f $(EXE)
	rm -f $(SREC)

debug: $(EXE)
	$(GDB) $<

gdb-server:
	# attach to nios #0
	nios2-gdb-server  -i 0 --tcpport 1234 --tcppersist --reset-target

terminal:
	# attach to jtag uart #0
	nios2-terminal -i 0

fpga-conf:
	nios2-configure-sof -d 2 $(SOFFILE)
