
CC=gcc
CFLAGS=-Wall -DBSD
LFLAGS=-lfl -lncurses
LEX=lex
YACC=yacc

ENTRY_OBJS=main.o
PARSER_OBJS=lex.yy.o y.tab.o
OTHER_OBJS=extern.o graphics.o input.o list.o log.o tunable.o update.o
OBJS=$(ENTRY_OBJS) $(PARSER_OBJS) $(OTHER_OBJS)

TARGET=atc

all: $(OBJS)
	$(CC) -o $(TARGET) $(OBJS) $(LFLAGS) $(CFLAGS)

main.o: main.c
	$(CC) -c -o main.o main.c $(CFLAGS)

extern.o: extern.c
	$(CC) -c -o extern.o extern.c $(CFLAGS)

graphics.o: graphics.c
	$(CC) -c -o graphics.o graphics.c $(CFLAGS)

input.o: input.c
	$(CC) -c -o input.o input.c $(CFLAGS)

list.o: list.c
	$(CC) -c -o list.o list.c $(CFLAGS)

log.o: log.c
	$(CC) -c -o log.o log.c $(CFLAGS)

tunable.o: tunable.c
	$(CC) -c -o tunable.o tunable.c $(CFLAGS)

update.o: update.c
	$(CC) -c -o update.o update.c $(CFLAGS)

y.tab.o: y.tab.c
	$(CC) -c -o y.tab.o y.tab.c

lex.yy.o: lex.yy.c grammar.h
	$(CC) -c -o lex.yy.o lex.yy.c 

grammar.h: y.tab.c
	ln -s yy.tab.h grammar.h

y.tab.c: grammar.y
	yacc -d grammar.y

lex.yy.c: lex.l 
	lex lex.l

clean:
	touch $(TARGET)
	rm $(TARGET) $(OBJS)

#
