include ../Makefile.def

#### modeling modules:

M_SOURCES = model/gmodel.C goutput.C model/gresol.C
M_OBJECTS = ${M_SOURCES:.C=.o}
M_DEPENDS = ${M_SOURCES:.C=.Cdp}
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/gdyna.C util/gfacet.C util/gident.C util/gmatrix.C util/gstring.C util/gsurface.C util/gtcl.C util/gtclmath.C util/gtclutil.C util/gtclpars.C util/gtopolgy.C util/gvector.C util/gvertex.C
U_OBJECTS = ${U_SOURCES:.C=.o}
U_DEPENDS = ${U_SOURCES:.C=.Cdp}
U_HEADERS = ../include/util/gcolor.h ../include/util/gdyna.h ../include/util/gfacet.h ../include/util/gheap.h ../include/util/gident.h ../include/util/gmatrix.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/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/gsolidt.C
R_OBJECTS = ${R_SOURCES:.C=.o}
R_DEPENDS = ${R_SOURCES:.C=.Cdp}
R_HEADERS = ../include/render/gimage.h ../include/render/glight.h ../include/render/gpixmap.h ../include/render/graycam.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 

##### input modules:

I_SOURCES = input/gdevice.C input/gevent.C input/gfile.C input/gserver.C input/gtime.C input/gtimer.C
I_OBJECTS = ${I_SOURCES:.C=.o}
I_DEPENDS = ${I_SOURCES:.C=.Cdp}
I_HEADERS = ../include/input/gcallbck.h ../include/input/gdevice.h ../include/input/gevent.h ../include/input/gfile.h ../include/input/gserver.h ../include/input/gtime.h ../include/input/gtimer.h ../include/input/gupdate.h

##### platform dependent modules:

P_SOURCES = platform/template.C\
	platform/opengl.C platform/tkopengl.C platform/xopengl.C\
	platform/wf.C platform/tkwf.C 

P_DEPENDS = ${P_SOURCES:.C=.Cdp}

P_X_OBJECTS = platform/opengl.o platform/xopengl.o

P_Tk_OBJECTS = platform/opengl.o platform/tkopengl.o

P_WF_OBJECTS = platform/wf.o platform/tkwf.o

##### 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_OBJECTS} ${U_OBJECTS} ${R_OBJECTS} ${I_OBJECTS} 

GENERIC: ../lib/libgeneric.a ../lib/libgenx.a ../lib/libgentk.a ../lib/libgenwf.a
../lib/libgeneric.a: ${OBJECTS} 
	-mkdir ../lib
	rm -f ../lib/libgeneric.a
	ar q ../lib/libgeneric.a ${OBJECTS}
	${RANLIB} ../lib/libgeneric.a
../lib/libgenx.a: ${P_X_OBJECTS} 
	rm -f ../lib/libgenx.a
	ar q ../lib/libgenx.a ${P_X_OBJECTS}
	${RANLIB} ../lib/libgenx.a
../lib/libgentk.a: ${P_Tk_OBJECTS} 
	rm -f ../lib/libgentk.a
	ar q ../lib/libgentk.a ${P_Tk_OBJECTS}
	${RANLIB} ../lib/libgentk.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

ALL_FILES = ../COPYRGHT ../README.GEN ../Makefile ../Makefile.def ${M_SOURCES} ${M_HEADERS} ${U_SOURCES} ${U_HEADERS} ${R_SOURCES} ${R_HEADERS} ${I_SOURCES} ${I_HEADERS} ${P_SOURCES} ../test/gtest.C ../test/Makefile Makefile generic.dp ../etc/comment ../etc/parse ../gf ../gt

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

##### remove all object files:

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

##### create dependencys:

DEPEND: ${M_DEPENDS} ${R_DEPENDS} ${U_DEPENDS} ${I_DEPENDS} ${P_DEPENDS} 
	cat ${M_DEPENDS} ${R_DEPENDS} ${U_DEPENDS} ${I_DEPENDS} ${P_DEPENDS} > generic.dp

include generic.dp


all: GENERIC
