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

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

MAJOR=0
MINOR=01.a

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

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

all:		$(PROGS)

tests:		$(TESTS)

clntpi.tab.o:	clntui.tab.c

clntpi.tab.c:	clntui.y

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

eftp:		common clntui.o clntui.tab.o clntpi.o
		$(CC) $(CFLAGS) -o eftp clntui.o clntui.tab.o clntpi.o ../common/globals.o ../common/dataxfer.o ../common/rfcnnnn.o ../common/compression.o $(EXTRAS) $(LIBS)

clntui.l.test:	DEFS=-D_DEBUG_LEXER -D_DEBUG_PARSER -D_TEST_LEXER
clntui.l.test:	common clntui.c clntui.tab.c clntpi.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 ../common/globals.o clntpi.o -lfl

clntui.p.test:	DEFS=-D_DEBUG_LEXER -D_DEBUG_PARSER -D_TEST_PARSER
clntui.p.test:	common clntui.c clntui.tab.c
		$(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 ../common/globals.o -lfl

common:		
		make -C ../common/

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


