# makefile per Linux

#		*Translator Definitions*
CC = gcc 
# Versione Utilizzata 2.7.0

LINK = gcc 
# Versione Utilizzata 2.7.0

LEX = flex -l 
# Versione Utilizzata 2.5.2

YACC = bison -y	
# Versione Utilizzata 1.22

CFLAGS = -O6 -DCLOS_LX -I../ -I. -Iout


#		*List Macros*
EXE_dependencies =  \
  out/closerr.o  \
  out/closhash.o \
  out/closnode.o \
  out/closstr2.o \
  out/closfunc.o \
  out/closlex.o  \
  out/closyacc.o \
  out/clos_lf1.o \
  out/clos_lf2.o \
  out/clos_lf3.o \
  out/clos_lf4.o \
  out/clos_lf5.o \
  out/clos_lf6.o \
  out/clos_lf7.o \
  out/clos_lfl.o \
  out/clos_lf9.o \
  out/clos_cl1.o \
  out/clos_cl2.o \
  out/clos_clm.o \
  out/closacc.o  \
  out/clos_lx1.o \
  out/closmain.o


#		*Explicit Rules*
out/closlinux:  $(EXE_dependencies)
	$(LINK) -o out/closlinux $(EXE_dependencies) -ll -lm  


#		*Implicit Rules*
out/%.o : ../%.c
	$(CC) $(CFLAGS) -c $< -o $@

out/%.o : out/%.c
	$(CC) $(CFLAGS) -c $< -o $@

out/%.o : %.c
	$(CC) $(CFLAGS) -c $< -o $@

out/closlex.c: ../closlex.l
	$(LEX) -v ../closlex.l
	mv lex.yy.c out/closlex.c

out/closlex.o : out/closlex.c out/closyacc.h
	$(CC) $(CFLAGS) -c out/closlex.c -o out/closlex.o

out/closyacc.c out/closyacc.h: ../closyacc.y
	$(YACC) -d ../closyacc.y
	mv y.tab.c out/closyacc.c
	mv y.tab.h out/closyacc.h


clean:
	rm -f out/*

