OPTLEVEL = -O
DICT_DIR=dict
GRAPH_DIR=graph

OTHERFLAGS = -DPICGEN -I$(GRAPH_DIR) -I$(DICT_DIR) -I.
CFLAGS= $(OPTLEVEL) $(OTHERFLAGS)
LDFLAGS = $(GRAPH_DIR)/libgraph.a $(DICT_DIR)/libdict.a -lm

HFILES = dot.h const.h globals.h hacks.h macros.h procs.h structs.h 

CFILES = acyclic.c colxlate.c conc.c dot.c emit.c fastgr.c flat.c hpglgen.c \
	input.c mifgen.c mincross.c ns.c output.c position.c postproc.c psgen.c \
	rank.c routespl.c shapes.c splines.c timing.c utils.c \
	malloc.c class1.c class2.c cluster.c decomp.c picgen.c

OFILES = acyclic.o colxlate.o conc.o dot.o emit.o fastgr.o flat.o hpglgen.o \
	input.o mifgen.o mincross.o ns.o output.o position.o postproc.o psgen.o \
	rank.o routespl.o shapes.o splines.o timing.o utils.o \
	malloc.o class1.o class2.o cluster.o decomp.o picgen.o

dot	: $(OFILES) $(GRAPH_DIR)/libgraph.a $(DICT_DIR)/libdict.a
	$(CC) $(CFLAGS) $(OFILES) $(LDFLAGS) -o dot

$(OFILES) : $(HFILES)
colxlate.o : colortbl.h
psgen.o : ps.h

colortbl.h : color_names
	sed s/_//g color_names | sort > color_lib
	nawk -f awk/colortbl.awk color_lib > colortbl.h
	rm color_lib

$(DICT_DIR)/libdict.a :
	(cd $(DICT_DIR); $(MAKE) CFLAGS="$(OPTLEVEL)")

$(GRAPH_DIR)/libgraph.a :
	(cd $(GRAPH_DIR); $(MAKE) CFLAGS="$(OPTLEVEL)")


clean:
	rm -f *.o dot
	(cd $(GRAPH_DIR); $(MAKE) clean)
	(cd $(DICT_DIR);  $(MAKE) clean)
