#makefile f"ur LoLA
# =================

VPATH = .:..:RCS # Die Verzeichnisse, in denen MAKE nach Dateien sucht
SHELL = /bin/sh  

# 1.2: Compiler
# -------------
CC = g++ 
CFLAGS = $(CONFIG) -O3 -Wall --pedantic -fexceptions # -g = kann mit dbx,xdbx,xxgdb usw. entkaefert werden

LDFLAGS =

INCLUDES = -I/lhome/tjunttil/progs/nauty20

C++ = g++ 
C++FLAGS = $(CONFIG) -O3 -Wall --pedantic -fexceptions # Debugging ermoeglichen

# 1.3: Compilerbauwerkzeuge
# -------------------------

LEX = flex 
LEXFLAGS = -t # -l = max. Kompatibilitaet zu lex
			     # -t = Schreibe generierte Datei auf stdout
CONFIG = 
# +--------------------------------------------------------+
# | Kapitel 2: Allgemeine Regeln zum Erzeugen von Objekten |
# +--------------------------------------------------------+

.SUFFIXES: .o .o,v .c .cc .l .h .c,v .h,v .l,v .y .y,v

# 2.1: Sind Quelltexte ungueltig, muessen sie ausgecheckt werden
# --------------------------------------------------------------

%.c: %.c,v
	$(RM) $@
	co $@

%.cc: %.cc,v
	$(RM) $@
	co $@

%.h: %.h,v
	$(RM) $@
	co $@

%.l: %.l,v
	$(RM) $@
	co $@

%.y: %.y,v
	$(RM) $@
	co $@

# 2.2: Sind Objektfiles ungueltig, muessen sie neu uebersetzt werden
# ------------------------------------------------------------------

%.o: %.c %.H
	$(CC) $(CFLAGS)  -c $<

%.o: %.cc %.H userconfig.H makefile
	$(C++) $(C++FLAGS)  $(INCLUDES) -c $<

# 2.2: Sind Objektfiles ungueltig, zu denen eine eingecheckte Version existiert,
# so koennen sie ausgecheckt werden (trifft z.B. auf NEPAL zu)
# ------------------------------------------------------------------------------

%.o: %.o,v
	$(RM) $@
	co $@

# +----------------------------------------------------------------+
# | Kapitel 3: Auflistung der am Projekt beteiligten Objektdateien |
# +----------------------------------------------------------------+


OBJ = net.o readnet.tab.o formula.o stubborn.o graph.o symboltab.o symm.o check.o path.o unfold.o printnet.o TJ_heap.o TJ_partition.o /lhome/tjunttil/progs/nauty20/nautil.o /lhome/tjunttil/progs/nauty20/nauty.o


# +-------------------------------------------+
# | Kapitel 4: Beschreibung von Sonderfaellen |
# +-------------------------------------------+

lola:	# Erzeuge Hauptprogramm

lola: $(OBJ); $(C++) $(CFLAGS) $(OBJ) $(INCLUDES) $(LDFLAGS) -o lola

clean:
	rm -f readnet.tab.c lex.yy.c gmon.out lola *.o *~

readnet.tab.o: readnet.l readnet.y userconfig.H makefile
		$(LEX) $(LEXFLAGS) readnet.l > lex.yy.c
		bison -tv  readnet.y 
		$(CC) $(C++FLAGS) $(INCLUDES) readnet.tab.c -c

# +--------------------------------------------+
# | Kapitel 5: Abhaengigkeiten (von MAKEDPEND) |
# +--------------------------------------------+

# DO NOT DELETE

check.o: graph.H net.H dimensions.H symm.H formula.H stubborn.H check.H
formula.o: formula.H net.H dimensions.H graph.H symm.H
graph.o: graph.H net.H dimensions.H symm.H
graph.o: formula.H stubborn.H
naut.o: net.H dimensions.H
net.o: net.H dimensions.H symboltab.H graph.H symm.H formula.H check.H
path.o: dimensions.H net.H formula.H graph.H symm.H stubborn.H check.H
stubborn.o: net.H dimensions.H graph.H symm.H formula.H
symboltab.o: symboltab.H net.H dimensions.H
symm.o: symm.H net.H dimensions.H 
symm.o: graph.H
symm.o: formula.H
translatenauty.o: net.H dimensions.H symboltab.H graph.H symm.H formula.H
check.o: graph.H net.H dimensions.H symm.H formula.H
formula.o: net.H dimensions.H
graph.o: net.H dimensions.H symm.H formula.H
net.o: dimensions.H
readnet.tab.o: dimensions.H net.H symboltab.H formula.H
readnet.o: dimensions.H net.H symboltab.H formula.H 
stubborn.o: graph.H net.H dimensions.H symm.H formula.H
symboltab.o: net.H dimensions.H
symm.o: net.H dimensions.H
