include ../Makefile.def

#### modeling modules:

M_SOURCES = model/gmodel.C goutput.C model/gresol.C
M_HEADERS = ../include/model/gattrib.h ../include/gdata.h ../include/ggeneric.h ../include/model/gmodel.h ../include/goutput.h ../include/gprimitv.h ../include/model/gresol.h ../include/gstorabl.h 

##### utility modules:

U_SOURCES = util/gcolor.C util/gconstr.C util/gdeltabl.C util/gdyna.C util/gfacet.C util/ggenvec.C util/ggenmat.C util/gident.C util/gmatrix.C util/gparam.C util/gparam1D.C util/gparam2D.C util/gparam3D.C util/gspline.C util/gstring.C util/gsurface.C util/gtcl.C util/gtclmath.C util/gtclutil.C util/gtclpars.C util/gtopolgy.C util/gvariabl.C util/gvector.C util/gvertex.C
U_HEADERS = ../include/util/gtable.h ../include/util/gcolor.h ../include/util/gconstr.h ../include/util/gdeltabl.h ../include/util/gdyna.h ../include/util/gfacet.h ../include/util/ggenvec.h ../include/util/ggenmat.h ../include/util/gheap.h ../include/util/gident.h ../include/util/gmatrix.h ../include/util/gparam.h ../include/util/gparam1D.h ../include/util/gparam2D.h ../include/util/gparam3D.h ../include/util/gspline.h ../include/util/gstack.h ../include/util/gsurface.h ../include/util/gstring.h ../include/util/gtcl.h ../include/util/gtclmath.h ../include/util/gtclutil.h ../include/util/gtclpars.h ../include/util/gtempl.h ../include/util/gtopolgy.h ../include/util/gvariabl.h ../include/util/gvertex.h ../include/util/gvector.h

##### rendering modules:

R_SOURCES = render/gimage.C render/graycam.C render/grayligh.C render/graytrac.C render/grender.C render/gshade.C render/glookat.C render/gsolidt.C render/gpcximg.C render/gray2D.C
R_HEADERS = ../include/render/gimage.h ../include/render/glight.h ../include/render/gpixmap.h ../include/render/graycam.h ../include/render/glookat.h ../include/render/grayligh.h ../include/render/graytrac.h ../include/render/gshade.h ../include/render/grealiz.h ../include/render/grender.h ../include/render/gsolidt.h ../include/render/gpcximg.h ../include/render/gray2D.h

##### input modules:

I_SOURCES = input/gdevice.C input/gevent.C input/gfile.C input/gserver.C input/gtime.C input/gtimer.C
I_HEADERS = ../include/input/gcallbck.h ../include/input/gdevice.h ../include/input/gevent.h ../include/input/gfile.h ../include/input/gselect.h ../include/input/gserver.h ../include/input/gtime.h ../include/input/gtimer.h ../include/input/gupdate.h

#### format converters:

F_SOURCES = format/ghfont.C
F_HEADERS = ../include/format/ghfont.h

##### gx modules

X_SOURCES = gx/gx_global.C gx/gx_bsp.C gx/gx_bbox.C gx/gx_cam.C gx/gx_light.C gx/gx_csg.C gx/gx_hyper.C gx/gx_beam.C gx/gx_vbuf.C
X_HEADERS = ../include/gx/gx_bbox.h ../include/gx/gx_cam.h ../include/gx/gx_defs.h ../include/gx/gx_macro.h ../include/gx/gx_sampl.h ../include/gx/gx_bsp.h ../include/gx/gx_hyper.h ../include/gx/gx_csg.h ../include/gx/gx_light.h ../include/gx/gx_obj.h ../include/gx/gx_shade.h ../include/gx/gx_beam.h ../include/gx/gx_vbuf.h

##### platform dependent modules:

P_SOURCES = platform/template.C	platform/opengl.C platform/wf.C \
	platform/tksysvgl.C platform/xgl.C platform/ntgl.C platform/tkntgl.C

P_X_OBJECTS = platform/opengl.o platform/xgl.o
P_TK_OBJECTS = platform/opengl.o platform/tksysvgl.o
P_NT_OBJECTS = platform/opengl.o platform/tkntgl.o
P_DM_OBJECTS = platform/template.o
P_WF_OBJECTS = platform/wf.o platform/tksysvgl.o

##### Tcl files:

TCL_FILES = ../tcl/fselect.tcl ../tcl/man.tcl

##### conversion rules:

.SUFFIXES: .Cdp .C

.C.o:
	${CC} -c ${DEFS} $<
	-mv ${@F} ${@D} 

.C.Cdp:
	${CC} ${CC_DEP} ${DEFS} $< | sed -e "s;^${*F}\.o:;$*\.o:;" >$*.Cdp

##### create the generic library:

OBJECTS = ${M_SOURCES:.C=.o} ${U_SOURCES:.C=.o} ${R_SOURCES:.C=.o} ${I_SOURCES:.C=.o} ${F_SOURCES:.C=.o}

GENERIC: ../lib/libgeneric.a ../lib/libgx.a ../lib/lib${DRIVER_LIB}.a 

../lib/libgeneric.a: ${OBJECTS} 
	-mkdir ../lib
	rm -f ../lib/libgeneric.a
	ar q ../lib/libgeneric.a ${OBJECTS}
	${RANLIB} ../lib/libgeneric.a
	
../lib/libgx.a:	${X_SOURCES:.C=.o}
	rm -f ../lib/libgx.a
	ar q ../lib/libgx.a ${X_SOURCES:.C=.o}
	${RANLIB} ../lib/libgx.a	

DUMMY_DRIVER: ../lib/libgendm.a

../lib/libgendm.a: ${P_DM_OBJECTS} 
	rm -f ../lib/libgendm.a
	ar q ../lib/libgendm.a ${P_DM_OBJECTS}
	${RANLIB} ../lib/libgendm.a

OPENGL_X_DRIVER: ../lib/libgenx.a

../lib/libgenx.a: ${P_X_OBJECTS} 
	rm -f ../lib/libgenx.a
	ar q ../lib/libgenx.a ${P_X_OBJECTS}
	${RANLIB} ../lib/libgenx.a

OPENGL_TK_DRIVER: ../lib/libgentk.a

../lib/libgentk.a: ${P_TK_OBJECTS} 
	rm -f ../lib/libgentk.a
	ar q ../lib/libgentk.a ${P_TK_OBJECTS}
	${RANLIB} ../lib/libgentk.a

OPENGL_WF_DRIVER: ../lib/libgenwf.a

../lib/libgenwf.a: ${P_WF_OBJECTS} 
	rm -f ../lib/libgenwf.a
	ar q ../lib/libgenwf.a ${P_WF_OBJECTS}
	${RANLIB} ../lib/libgenwf.a

##### create a tar archive relative to this directory:

TAR = ${HOME}/tar/gene
ZIP = ${HOME}/zip/gene

ALL_FILES = ../COPYRGHT ../README.GEN ../Makefile ../Makefile.def.in ../configure ${M_SOURCES} ${M_HEADERS} ${U_SOURCES} ${U_HEADERS} ${R_SOURCES} ${R_HEADERS} ${I_SOURCES} ${I_HEADERS} ${X_SOURCES} ${X_HEADERS} ${F_SOURCES} ${F_HEADERS} ${P_SOURCES} ${TCL_FILES} ../test/gtest*.C ../test/symbolic ../test/Makefile Makefile generic.dp ../etc/style.ps ../etc/style.tex ../etc/Makefile ../gt/Makefile ../gt/*.C ../gt/*.h ../gt/gt.dp ../gf 

TAR:
	rm -f ${TAR}.tar.gz
	tar cf ${TAR}.tar ${ALL_FILES}
	gzip ${TAR}.tar
	mv ${TAR}.tar.gz ${TAR}.tz

ZIP:
	rm -f ${ZIP}.zip
	zip -k -r -l  ${ZIP}.zip ${ALL_FILES}

##### remove all object files:

CLEAR:
	-rm *.o *.Cdp
	-cd format; rm *.o *.Cdp 
	-cd model; rm *.o *.Cdp 
	-cd platform; rm *.o *.Cdp 
	-cd render; rm *.o *.Cdp 
	-cd util; rm *.o *.Cdp 
	-cd input; rm *.o *.Cdp 
	-cd gx; rm *.o *.Cdp 

##### create dependencys:

DEPENDS = ${M_SOURCES:.C=.Cdp} ${R_SOURCES:.C=.Cdp} ${U_SOURCES:.C=.Cdp} ${I_SOURCES:.C=.Cdp} ${P_SOURCES:.C=.Cdp} ${X_SOURCES:.C=.Cdp}

DEPEND: ${DEPENDS}
	cat ${DEPENDS} > generic.dp
	rm ${DEPENDS}

##### 

all: GENERIC


