FLUIDFILES = \
	./gui/gui.fl

MAINCPPFILE = ./kernel/main.cxx

CPPFILES = \
	$(FLUIDFILES:.fl=.cxx) \
        ./geometry/bezier.cxx \
	./geometry/mesh.cxx \
	./kernel/ew_kernel.cxx \
	./kernel/eiff.cxx \
	./kernel/iavltree.cxx \
	./kernel/zavltree.cxx \
	./kernel/global.cxx \
	./kernel/base.cxx \
	./kernel/base_s.cxx \
	./kernel/ubase_s.cxx \
	./kernel/pdb_functions.cxx \
	./kernel/boot.cxx \
	./kernel/scheme.cxx \
	./gui/viewport.cxx \
	./gui/ArcBall.cxx \
	./gui/scheme_viewport.cxx \
	./gui/keys.cxx \
	./materials/material.cxx

CFILES = 

OBJECTS = $(CPPFILES:.cxx=.o) $(CFILES:.c=.o)

MAINOBJECT = $(MAINCPPFILE:.cxx=.o) $(CFILES:.c=.o)

DOCUMENTATION = $(DOCUMENTEDCPPFILES:.cxx=.texinfo)

GUILEFLTK = ../guile-fltk/src/.libs/libgfltk.a
#RFLTKLIB = /u/james/fltk/lib/libfltk.a

EXTOBJECTS = objects/*.o \
	../Fl_ToggleTree/Fl_Node.o \
	../Fl_ToggleTree/Fl_Tree.o \
	../Fl_ToggleTree/Fl_ToggleNode.o \
	../Fl_ToggleTree/Fl_ToggleTree.o \
	../Fl_Frametab/Fl_Frametab.o \
	../Fl_Help/HelpView.o \
	../Fl_Help/HelpDialog.o \
	../Fl_Tb_Window/Fl_Tb_Window.o \
	../Fl_Tb_Window/math.o \
	$(RFLTKLIB) \
	$(GUILEFLTK)

CLEAN =

include ../makeinclude
FLUID       = fluid
EXTRACT     = extract
TEXI2HTML   = texi2html

EINCLUDES = $(INCLUDES) -I../ \
	-I../Fl_Frametab \
	-I../Fl_Help \
	-I../Fl_Tb_Window \
	-I../Fl_ToggleTree \
	-I../guile-fltk

################################################################

ewave: all #$(OBJECTS) $(MAINOBJECT)
	(cd objects; $(MAKE))
	$(CXX) -o ewave $(MAINOBJECT) $(OBJECTS) $(EXTOBJECTS) $(LDFLAGS) $(LDLIBS)

all : $(OBJECTS) $(MAINOBJECT)

#libewave: $(OBJECTS)
#	@echo @$(LIBCOMMAND) libewave.a $(OBJECTS) $(EXTOBJECTS)
#	@$(LIBCOMMAND) libewave.a $(OBJECTS) $(EXTOBJECTS)
#	@$(RANLIB) libewave.a

.SUFFIXES:	.fl .cxx .h .o .texinfo .info .html

.fl.cxx :
	$(FLUID) -c -o $(<:.fl=.cxx) -h $(<:.fl=.h) $<
.cxx.o :
	$(CXX) -g $(EINCLUDES) $(CXXFLAGS) -c $< -o $(<:.cxx=.o)
.c.o :
	$(CC) -I. $(CFLAGS) -c -o $@ $<
.cxx.texinfo :
	$(EXTRACT) --output ../docs/$(notdir $(<:.cxx=.texinfo)) $<
	$(MAKEINFO) --output ../docs/$(notdir $(<:.cxx=.info)) ../docs/$(notdir $(<:.cxx=.texinfo))
	cd ../docs/ ; $(TEXI2HTML) -monolithic $(notdir $(<:.cxx=.texinfo))

docs : $(DOCUMENTATION)

clean :
	(cd objects; $(MAKE) clean)
	-@ rm -f *.o *.a core *~ ./exporters/nativeio.yy.cxx \
	./exporters/nativeio.tab.cxx ewave ./exporters/nativeio.tab.h \
	exporters/nativeio.output exporters/*.o exporters/*~ \
	importers/*.o importers/*~ \
	gui/*.o gui/*~ \
	objects/*.o objects/*~ \
	geometry/*.o geometry/*~ \
	materials/*.o materials/*~ \
	kernel/*.o kernel/*~
       
distclean : clean

./exporters/nativeio.tab.cxx: ./exporters/nativeio.y
	bison -v -l -d ./exporters/nativeio.y
	mv ./exporters/nativeio.tab.c ./exporters/nativeio.tab.cxx

./exporters/nativeio.yy.cxx: ./exporters/nativeio.l
	flex -o./exporters/nativeio.yy.cxx ./exporters/nativeio.l 


#nativeio.tab.cxx: nativeio.y
#	bison -v -l -d nativeio.y
#	mv nativeio.tab.c nativeio.tab.cxx

#nativeio.yy.cxx: nativeio.l
#	flex -onativeio.yy.cxx nativeio.l 
