PROCESSOR = 18F4550

PROJECT_DIR = .
RELEASE_DIR = $(PROJECT_DIR)\output
PROJECT_SOURCE_DIR = $(PROJECT_DIR)\src
PROJECT_INCLUDE_DIR = $(PROJECT_DIR)\inc

PROJECT_OBJS = 	$(PROJECT_SOURCE_DIR)\main.o \
				$(PROJECT_SOURCE_DIR)\mal.o \
				$(PROJECT_SOURCE_DIR)\ringBuffer\ringBuffer.o \
				$(PROJECT_SOURCE_DIR)\pidlight\pidlight.o \
				$(PROJECT_SOURCE_DIR)\tc77\tc77.o \
				$(PROJECT_SOURCE_DIR)\serial\serial.o

INCLUDES = 	-I$(PROJECT_INCLUDE_DIR) \
			-I$(PROJECT_INCLUDE_DIR)\io_common \
			-I$(PROJECT_INCLUDE_DIR)\tc77 \
			-I$(PROJECT_INCLUDE_DIR)\pidlight \
			-I$(PROJECT_INCLUDE_DIR)\ringBuffer \
			-I$(PROJECT_INCLUDE_DIR)\serial

LINK_DIR = .\lkr
LINK_FILE = $(PROCESSOR).lkr

DEFINES = 
LINK_DEFINES = /u_CRUNTIME /u_DEBUG /z__MPLAB_BUILD=1 /z__MPLAB_DEBUG=1

OPTIMIZATIONFLAGS = -mL -Ls
#OPTIMIZATIONFLAGS = -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa- -mL -ls //debug
CFLAGS = -p=$(PROCESSOR) $(INCLUDES) $(OPTIMIZATIONFLAGS) 
LFLAGS = --summary=default,-psect,-class,+mem,-hex --output=default,-inhx032 --callgraph=full
SVNFLAGS = co -r HEAD

AS = c:\mcc18\bin\MPASMWIN.exe
LD = c:\mcc18\bin\mplink.exe
AR = c:\mcc18\bin\mplib.exe
CC = c:\mcc18\bin\mcc18.exe	
RM = del
ECHO = echo
SVN = "c:\Program Files\CollabNet Subversion Client\svn.exe"
COPY = copy

%.o : %.c
	$(CC) "$<" $(CFLAGS) $(DEFINES) -fo="$@"
		
%.hex : $(PROJECT_OBJS)
	$(LD) /l"C:\MCC18\lib" /k"$(LINK_DIR)" "$(LINK_DIR)\$(LINK_FILE)" $(PROJECT_OBJS) $(LINK_DEFINES) /o"$(RELEASE_DIR)\$@.cof" /M"$(RELEASE_DIR)\$@.map" /W
	
all : ring.hex

getall : getringbuffer getiocommon getserial gettc77

gettc77 :
	$(SVN) $(SVNFLAGS) svn://kyrk.no-ip.org/home/kyrk/mentes/library/pic/tc77/src/tc77 .\src\tc77
	$(SVN) $(SVNFLAGS) svn://kyrk.no-ip.org/home/kyrk/mentes/library/pic/tc77/inc/tc77 .\inc\tc77

getringbuffer :
	$(SVN) $(SVNFLAGS) svn://kyrk.no-ip.org/home/kyrk/mentes/library/pic/buffer/ring/trunk/src .\src\ringBuffer
	$(SVN) $(SVNFLAGS) svn://kyrk.no-ip.org/home/kyrk/mentes/library/pic/buffer/ring/trunk/inc .\inc\ringBuffer

getserial :
	$(SVN) $(SVNFLAGS) svn://kyrk.no-ip.org/home/kyrk/mentes/library/pic/serial/18f/trunk/src .\src\serial
	$(SVN) $(SVNFLAGS) svn://kyrk.no-ip.org/home/kyrk/mentes/library/pic/serial/18f/trunk/inc .\inc\serial

getiocommon :
	$(SVN) $(SVNFLAGS) svn://kyrk.no-ip.org/home/kyrk/mentes/library/pic/io/common .\inc\io_common

clean :
	-$(RM) $(RELEASE_DIR)\*.map
	-$(RM) $(RELEASE_DIR)\*.cof
	-$(RM) $(RELEASE_DIR)\*.hex
	-$(RM) $(RELEASE_DIR)\*.o
	-$(RM) $(PROJECT_DIR)\*.err
	-$(RM) $(PROJECT_DIR)\*.i
	-$(RM) $(PROJECT_SOURCE_DIR)\*.o
