CC=gcc
CFLAGS=-O2 -Wall
LEX=flex -i
YACC=bison -y

ifeq "$(DEBUG)" "y"
CFLAGS+=-D_DEBUG_PARSER -D_DEBUG_LEXER
endif

MAJOR=0
MINOR=01.a

BUILD_DATE:=$(shell date)
VERSION:=EFTPd v$(MAJOR).$(MINOR) - ($(BUILD_DATE))
override CFLAGS+=-D_VERSION='"$(VERSION)"'

override LIBS+=-lcrypt

PROGS = eftpd
TESTS = svrpi.l.test svrpi.p.test

all:		$(PROGS)

tests:		$(TESTS)

svrpi.tab.o:	svrpi.tab.c

svrpi.tab.c:	svrpi.y

svrpi.c:	svrpi.flex svrpi.tab.c

eftpd:		common svrpi.o svrpi.tab.o main.o auth.o
		$(CC) $(CFLAGS) -o eftpd svrpi.o svrpi.tab.o main.o auth.o ../common/globals.o ../common/dataxfer.o ../common/rfcnnnn.o ../common/compression.o $(EXTRAS) $(LIBS)

svrpi.l.test:	DEFS=-D_DEBUG_LEXER -D_DEBUG_PARSER -D_TEST_LEXER
svrpi.l.test:	common svrpi.c svrpi.tab.c
		$(CC) -c $(DEFS) $(CFLAGS) -o svrpi.l.test.o svrpi.c
		$(CC) $(DEFS) $(CFLAGS) -o svrpi.l.test svrpi.l.test.o svrpi.tab.c ../common/globals.o -lfl

svrpi.p.test:	DEFS=-D_DEBUG_LEXER -D_DEBUG_PARSER -D_TEST_PARSER
svrpi.p.test:	common svrpi.c svrpi.tab.c
		$(CC) -c $(DEFS) $(CFLAGS) -o svrpi.p.test.o svrpi.c
		$(CC) $(DEFS) $(CFLAGS) -o svrpi.p.test svrpi.p.test.o svrpi.tab.c ../common/globals.o -lfl

common:		
		make -C ../common/


clean:
		rm -f *~ *.bak *.o core
		rm -f *.tab.[ch] *.output svrpi.c
		rm -f $(PROGS) $(TESTS)


#####################################################
# Make rules
#

%.c:            %.flex
		$(LEX) $<
		mv -f lex.yy.c $@

%.tab.c:        %.y
		$(YACC) -d $<
		mv -f y.tab.c $@
		mv -f y.tab.h `basename $@ .c`.h
		if [ -r y.output ] ; then mv -f y.output `basename $@ .tab.c`.output ; fi


