UNO_LIB_OBJFILES = UNOLexer.o AnalysisResultManager.o PStringToken.o PBuffer.o
MODULE_OBJ_FLAGS = -I ../include -D_LINUX_ -g
INCLUDES = ../include/AnalysisModuleInterface.h ../include/InOutPin.h 
GPP = g++
GCC = gcc
CFLAGS = -fpic

all :
	make UNOLexer.so
	cp -f UNOLexer.so ../Modules
	cp -f UNOLexer.so ../SwALinuxSource/Module

UNOLexer.so : $(UNO_LIB_OBJFILES)
	$(GPP) -g -shared -lc -o UNOLexer.so $(UNO_LIB_OBJFILES)

UNOLexer.o : UNOLexer.cpp UNOLexer.h AnalysisResultManager.h PStringToken.h UNOLexerInfo.h $(INCLUDES)
	$(GPP) $(MODULE_OBJ_FLAGS) -c $(CFLAGS) UNOLexer.cpp

AnalysisResultManager.o : AnalysisResultManager.cpp AnalysisResultManager.h PBuffer.h PStringToken.h $(INCLUDES) 
	$(GPP) $(MODULE_OBJ_FLAGS) -c $(CFLAGS) AnalysisResultManager.cpp

PStringToken.o : PStringToken.cpp PStringToken.h
	$(GPP) $(MODULE_OBJ_FLAGS) -c $(CFLAGS) PStringToken.cpp

PBuffer.o : PBuffer.cpp PBuffer.h
	$(GPP) $(MODULE_OBJ_FLAGS) -c $(CFLAGS) PBuffer.cpp

uno.o : uno.c uno.h UNOLexerInfo.h
	$(GCC) $(MODULE_OBJ_FLAGS) -c $(CFLAGS) uno.c

lexer.o: lexer.c
	$(GCC) $(MODULE_OBJ_FLAGS) -c $(CFLAGS) lexer.c

c_gram.o: c_gram.c
	$(GCC) $(MODULE_OBJ_FLAGS) -c $(CFLAGS) c_gram.c

uno_global.o : uno_global.h uno_fcts.h dtags.h
	$(GCC) $(MODULE_OBJ_FLAGS) -c $(CFLAGS) uno_global.c

dflow.o : dflow.c dflow.h prnttree.h c_gram.h symtab.h
	$(GCC) $(MODULE_OBJ_FLAGS) -c $(CFLAGS) dflow.c

prnttree.o : prnttree.c prnttree.h c_gram.h symtab.h
	$(GCC) $(MODULE_OBJ_FLAGS) -c $(CFLAGS) prnttree.c

treestk.o : treestk.c globals.h treestk.h
	$(GCC) $(MODULE_OBJ_FLAGS) -c $(CFLAGS) treestk.c

heap.o : heap.c heap.h
	$(GCC) $(MODULE_OBJ_FLAGS) -c $(CFLAGS) heap.c

nmetab.o : nmetab.c globals.h lexer.h nmetab.h
	$(GCC) $(MODULE_OBJ_FLAGS) -c $(CFLAGS) nmetab.c

symtab.o : symtab.c symtab.h nmetab.h prnttree.h
	$(GCC) $(MODULE_OBJ_FLAGS) -c $(CFLAGS) symtab.c

token.o : token.c c_gram.h
	$(GCC) $(MODULE_OBJ_FLAGS) -c $(CFLAGS) token.c

tree.o:	tree.c tree.h c_gram.h globals.h prnttree.h
	$(GCC) $(MODULE_OBJ_FLAGS) -c $(CFLAGS) tree.c

uno_lts.o : uno_lts.c uno_lts.h prnttree.h c_gram.h symtab.h
	$(GCC) $(MODULE_OBJ_FLAGS) -c $(CFLAGS) uno_lts.c

uno_bounds.o : uno_bounds.c uno_lts.h symtab.h c_gram.h
	$(GCC) $(MODULE_OBJ_FLAGS) -c $(CFLAGS) uno_bounds.c

uno_intervals.o: uno_intervals.c uno_lts.h
	$(GCC) $(MODULE_OBJ_FLAGS) -c $(CFLAGS) uno_intervals.c

uno_generic.o : uno_generic.c uno_lts.h c_gram.h symtab.h
	$(GCC) $(MODULE_OBJ_FLAGS) -c $(CFLAGS) uno_generic.c

uno_local.o : uno_local.c uno_version.h globals.h
	$(GCC) $(MODULE_OBJ_FLAGS) -c $(CFLAGS) uno_local.c

uno_fcts.o : uno_fcts.c dtags.h
	$(GCC) $(MODULE_OBJ_FLAGS) -c $(CFLAGS) uno_fcts.c

clean : 
	rm -rf *.o *.so
