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

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

MAJOR=1
MINOR=00

PROGS = eftp
TESTS = clntui.l.test clntui.p.test

all:		version.h $(PROGS)

tests:		version.h $(TESTS)

version.h:	
		echo "#define VERSION \"EFTP v$(MAJOR).$(MINOR) - (`date`)\"" >version.h

clntpi.tab.o:	clntui.tab.c

clntpi.tab.c:	clntui.y

clntui.c:	clntui.flex clntui.tab.c

eftp:		clntui.o clntui.tab.o main.o clntglob.o dataxfer.o
		$(CC) $(CFLAGS) -o eftp clntui.o clntui.tab.o main.o auth.o clntglob.o dataxfer.o -lfl

clntui.l.test:	DEFS=-D_DEBUG_LEXER -D_DEBUG_PARSER -D_TEST_LEXER
clntui.l.test:	clntui.c clntui.tab.c clntglob.o
		$(CC) -c $(DEFS) $(CFLAGS) -o clntui.l.test.o clntui.c
		$(CC) $(DEFS) $(CFLAGS) -o clntui.l.test clntui.l.test.o clntui.tab.c clntglob.o -lfl

clntui.p.test:	DEFS=-D_DEBUG_LEXER -D_DEBUG_PARSER -D_TEST_PARSER
clntui.p.test:	clntui.c clntui.tab.c clntglob.o
		$(CC) -c $(DEFS) $(CFLAGS) -o clntui.p.test.o clntui.c
		$(CC) $(DEFS) $(CFLAGS) -o clntui.p.test clntui.p.test.o clntui.tab.c clntglob.o -lfl

clean:
		rm -f *~ *.bak *.o core
		rm -f *.tab.[ch] *.output clntui.c version.h
		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


