# Project name: nedHAL library

SDTPath = f:/project/arm202u
PROCESSOR = ARM7
ARCH = 4
PATH = f:/project/NedHAL
TARGET = Debug
DEBUGGER = ANGEL


ARMARCH = $(ARCH)

CC = $(SDTPath)/bin/armcc
CCflags = -c -g -ARCH$(ARCH) -apcs 3/noswst/fp/softfp \
		-D$(DEBUGGER) \
		-I. -IBoards/AT91
# -fwcah -wda -wp
# -fah -fussy -zpc1
# -w -ff

ASM = $(SDTPath)/bin/armasm
ASMflags = -g -CPU $(PROCESSOR) -CheckReglist -apcs 3/nosw \
		-PD "ANGEL SETL {TRUE}" \
		-I. -IBoards/AT91 -ICore/ARM -ICore/ARM/3

LINK = $(SDTPath)/bin/armlink
LINKflags = -aif -nozeropad

LIB = $(SDTPath)/bin/armlib
LIBflags = -c


# ********************
# *** Core sources ***
# ********************

COREOBJS =	$(TARGET)/Core/io/DebugIO.o \
		$(TARGET)/Core/io/fancyprint.o

# ****************************
# *** ARM specific sources ***
# ****************************
ARMOBJS =	$(TARGET)/Core/ARM/Entry.o \
		$(TARGET)/Core/ARM/Excepts.o \
		$(TARGET)/Core/ARM/AT91/ARMCache.o \
		$(TARGET)/Core/ARM/AT91/ARMCore.o \
		$(TARGET)/Core/ARM/AT91/ARMMMU.o \
		$(TARGET)/UARTs/Angel/driver.o \
		$(TARGET)/UARTs/Demon/driver.o \
		$(TARGET)/UARTs/AT91/driver.o \
		$(TARGET)/Boards/AT91/Timer.o

TOTALOBJS = $(COREOBJS) $(ARMOBJS)

ucosii : $(TOTALOBJS)
	echo $(LIBflags) -o $(TARGET)/nedhal.alf $(TOTALOBJS) > libpars.via
	$(LIB) -VIA libpars.via
	del libpars.via

clean :
	-del Debug\Boards\AT91\*.o
	-del Debug\Core\io\*.o
	-del Debug\Core\ARM\*.o
	-del Debug\Core\ARM\4\*.o
	-del Debug\UARTs\Angel\*.o
	-del Debug\UARTs\Demon\*.o
	-del Debug\UARTs\AT91\*.o
	-del Debug\*.o
	-del Debug\*.alf
	echo All objects removed!


# ********************
# *** Dependencies ***
# ********************
$(TARGET)/Core/io/DebugIO.o : $(PATH)/Core/io/DebugIO.c
	echo $(CCflags) -o $@ $< > ccpars.via
	$(CC) -VIA ccpars.via

$(TARGET)/Core/io/fancyprint.o : $(PATH)/Core/io/fancyprint.c
	echo $(CCflags) -o $@ $< > ccpars.via
	$(CC) -VIA ccpars.via

$(TARGET)/Core/ARM/Entry.o : $(PATH)/Core/ARM/Entry.s
	echo $(ASMflags) -o $@ $< > asmpars.via
	$(ASM) -VIA asmpars.via

$(TARGET)/Core/ARM/Excepts.o : $(PATH)/Core/ARM/Excepts.s
	echo $(ASMflags) -o $@ $< > asmpars.via
	$(ASM) -VIA asmpars.via

$(TARGET)/Core/ARM/4/ARMCache.o : $(PATH)/Core/ARM/4/ARMCache.s
	echo $(ASMflags) -o $@ $< > asmpars.via
	$(ASM) -VIA asmpars.via

$(TARGET)/Core/ARM/4/ARMCore.o : $(PATH)/Core/ARM/4/ARMCore.s
	echo $(ASMflags) -o $@ $< > asmpars.via
	$(ASM) -VIA asmpars.via

$(TARGET)/Core/ARM/4/ARMMMU.o : $(PATH)/Core/ARM/4/ARMMMU.s
	echo $(ASMflags) -o $@ $< > asmpars.via
	$(ASM) -VIA asmpars.via

$(TARGET)/Core/ARM/AT91/ARMCache.o : $(PATH)/Core/ARM/AT91/ARMCache.s
	echo $(ASMflags) -o $@ $< > asmpars.via
	$(ASM) -VIA asmpars.via

$(TARGET)/Core/ARM/AT91/ARMCore.o : $(PATH)/Core/ARM/AT91/ARMCore.s
	echo $(ASMflags) -o $@ $< > asmpars.via
	$(ASM) -VIA asmpars.via

$(TARGET)/Core/ARM/AT91/ARMMMU.o : $(PATH)/Core/ARM/AT91/ARMMMU.s
	echo $(ASMflags) -o $@ $< > asmpars.via
	$(ASM) -VIA asmpars.via

$(TARGET)/UARTs/Demon/driver.o : $(PATH)/UARTs/Demon/driver.s
	echo $(ASMflags) -o $@ $< > asmpars.via
	$(ASM) -VIA asmpars.via

$(TARGET)/UARTs/Angel/driver.o : $(PATH)/UARTs/Angel/driver.s
	echo $(ASMflags) -o $@ $< > asmpars.via
	$(ASM) -VIA asmpars.via

$(TARGET)/UARTs/AT91/driver.o : $(PATH)/UARTs/AT91/driver.c
	echo $(CCflags) -o $@ $< > ccpars.via
	$(CC) -VIA ccpars.via

$(TARGET)/Boards/AT91/Timer.o : $(PATH)/Boards/AT91/Timer.s
	echo $(ASMflags) -o $@ $< > asmpars.via
	$(ASM) -VIA asmpars.via
