TARGET		= NAMMM
#TARGET		= ANALYZER
#TARGET		= SNT
#TARGET		= MAKET

NAME_SNT	= snt
NAME_ANALYZER	= analyzer
NAME_NAMMM	= nammm
NAME_MAKET	= maket
NAME		= $(NAME_$(TARGET))

BASEDIR		= ../
IRQDIR		= $(BASEDIR)irq/
HWDIR		= $(BASEDIR)hardware/

vpath %.h	..

SRC_SNT		= $(BASEDIR)detector.c
SRC_ANALYZER	= $(BASEDIR)detector_plain.c
SRC_NAMMM	= $(BASEDIR)detector.c
SRC_MAKET	= $(BASEDIR)detector_plain.c

SRC 		= $(IRQDIR)irq.c $(IRQDIR)interrupt_utils.c $(BASEDIR)ladc.c $(BASEDIR)spi.c $(BASEDIR)i2c.c \
		$(BASEDIR)snt.c $(BASEDIR)serial.c $(BASEDIR)setup.c $(BASEDIR)watchdog.c $(BASEDIR)commands.c $(BASEDIR)time.c $(BASEDIR)sync.c \
		$(BASEDIR)error.c $(BASEDIR)spectrum.c $(BASEDIR)tools.c $(BASEDIR)layout.c $(BASEDIR)events.c $(SRC_$(TARGET))
ASRC 		= startup.S swi_handler.S

OPT = 3
# Run mode: ROM_RUN or RAM_RUN
MODE			= ROM
RUN_MODE 		= $(MODE)_RUN
# Exception vector placement (for ROM_RUN only)
# VECTORS_IN_ROM, VECTORS_IN_RAM
VECTOR_LOCATION = VECTORS_IN_ROM

MCU		= arm7tdmi
#MCU		= arm7tdmi-s
SUBMDL		= lpc2138

CC = C:\WinARM\bin\arm-elf-gcc.exe
LD = C:\WinARM\bin\arm-elf-ld.exe 
AR = C:\WinARM\bin\arm-elf-ar.exe 
AS = C:\WinARM\bin\arm-elf-as.exe 
OBJCOPY = C:\WinARM\bin\arm-elf-objcopy.exe 


# Additional thumb flags (should be added to the assembler)
THUMB =
#THUMB = -mthumb -mthumb-interwork
CFLAGS = -Wall -I$(BASEDIR) -I$(IRQDIR) -I$(HWDIR) -O$(OPT) -DBUILD_$(TARGET) -D$(RUN_MODE) -D$(VECTOR_LOCATION) $(THUMB) -mcpu=$(MCU)
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-g -D$(RUN_MODE) -D$(VECTOR_LOCATION) $(THUMB) -mcpu=$(MCU) -x assembler-with-cpp
LDFLAGS = -nostartfiles -Wl,-Map=$(NAME).map,--cref -lc -lm -lgcc -lc -N -static -T$(HWDIR)ld.$(SUBMDL)-$(MODE)

COBJ 		= $(SRC:.c=.o)
AOBJ		= $(ASRC:.S=.o)


all: $(NAME).hex

clean:
	rm -rf $(NAME).hex $(NAME).elf $(NAME).map *.o *.lst $(BASEDIR)*.o $(BASEDIR)*.lst $(IRQDIR)*.o $(IRQDIR)*.lst $(HWDIR)*.o $(HWDIR)*.lst

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

%.elf: $(AOBJ) $(COBJ)
	$(CC) $(CFLAGS) $(AOBJ) $(COBJ) --output $@ $(LDFLAGS)

$(AOBJ) : %.o : $(HWDIR)%.S
	$(CC) -c $(ASFLAGS) $< -o $@

$(COBJ): %.o : %.c %.h config.h event_types.h defs.h
	$(CC) -c $(CFLAGS) $< -o $@
