GEOM=.
include ${GEOM}/makefiles/Makedefs.global
include Makedefs
include ${GEOM}/makefiles/Makedefs.SUBDIRS

all:	prep

all ${TARGETS} ${LIB} ${COMMONLIB} ${OBJS}:
	@for d in ${DIRS_THIS_MACH}; do (${CDd}; ${MAKE} SITE=${SITE} $@); done

rm_libs rm_depend:
	@for d in ${DIRS}; do (${CDd}; ${MAKE} SITE=${SITE} $@); done

install:	prep  demand_GEOMROOT
	@for d in ${DIRS_THIS_MACH}; do (${CDd}; ${MAKE} SITE=${SITE} $@); done

installh:
	@for d in ${DIRS_THIS_MACH}; do (${CDd}; ${MAKE} SITE=${SITE} $@); done

clobber:	clean rm_libs rm_depend

depend:
	@if [ -d O.${MACHTYPE} ] ; then				\
	  CC=${CC} ${MKDEP} -f O.${MACHTYPE}/${MKDEPFILE}	\
		-P ../ ${CFLAGS} ${SRCS} ;			\
	fi
	@for d in ${DIRS_NO_OBJ}; do (${CDd}; ${MAKE} SITE=${SITE} $@); done

clean:
	-rm -f ${DIRT}
	@for d in ${DIRS}; do (${CDd}; ${MAKE} SITE=${SITE} $@); done

distclean:
	-rm -f ${DIRT} ${DISTDIRT}
	@for d in ${DIRS}; do (${CDd}; ${MAKE} SITE=${SITE} $@); done

OTHER_DISTFILES_CMD = (echo DISTLIST.all; cat DATAFILES)

# "make prep" ensures that all the directories we'll need to write into exist
prep:
	@mkdir lib lib/${MACHTYPE} \
		bin bin/${MACHTYPE} \
		modules modules/${MACHTYPE} 2>&- || :

# Don't mess with the FORMS libraries.   Installers needing FORMS-based
# programs must fetch the XForms library themselves.
#	@(cd src/lib/forms; ${MAKE} all)

# Note: target RFILES takes several minutes to build; this affects
#   both DISTLIST and all.tar.Z


# DISTLIST:	RFILES
# all.tar.Z:	DISTLIST

DISTLIST.sgi:	_always
	-/bin/rm -f $@
	( GEOM=`pwd` ; export GEOM ; $$GEOM/tools/distlist O.sgi ) > $@
	${GEOM}/tools/manlist < $@ >> $@

DISTLIST.next:	_always
	-/bin/rm -f $@
	( GEOM=`pwd` ; export GEOM ; $$GEOM/tools/distlist O.next ) > $@
	${GEOM}/tools/manlist < $@ >> $@

DISTLIST.x11:	_always
	-/bin/rm -f $@
	( GEOM=`pwd` ; export GEOM ; $$GEOM/tools/distlist O.sun4 O.linux O.x11 ) \
		| sed -e 's:Geomview/INSTALL$$:&.x11:' \
		      -e 's:Geomview/README$$:&.x11:' \
		      -e 's:DISTLIST.all:DISTLIST.x11:' > $@
	${GEOM}/tools/manlist < $@ >> $@

DISTLIST.all:	_always
	-/bin/rm -f $@
	( GEOM=`pwd` ; export GEOM ; $$GEOM/tools/distlist ) > $@
	${GEOM}/tools/manlist < $@ >> $@

all.tar.Z:	_always
	-/bin/rm -f $@
	-${GEOM}/tools/dist-exceptions DISTLIST.all | gnutar -c -T - -f - | \
	    ${GEOM}/tools/writabletar | compress > $@

all.tar.gz:	_always
	-/bin/rm -f $@
	-${GEOM}/tools/dist-exceptions DISTLIST.all | gnutar -c -T - -f - | \
	    ${GEOM}/tools/writabletar | gzip > $@

x11.tar.Z:	_always
	-/bin/rm -f $@
	-( sort -u DISTLIST.x11 | \
		egrep -v '/mg/ri/|/gl/|next/' | \
		${GEOM}/tools/dist-exceptions -m DISTLIST.x11 | \
		gnutar -c -T - -f - | \
		${GEOM}/tools/writabletar | compress > $@ )

x11.tar.gz:	_always
	-/bin/rm -f $@
	-( sort -u DISTLIST.x11 | \
		egrep -v '/mg/ri/|/gl/|next/' | \
		${GEOM}/tools/dist-exceptions -m DISTLIST.x11 | \
		gnutar -c -T - -f - | \
		${GEOM}/tools/writabletar | gzip > $@ )


### BINDISTLIST:	_BINDISTLIST
### 
### _BINDISTLIST:
### 	-/bin/rm -f BINDISTLIST || :
### 	@( cat BINFILES DATAFILES ; \
### 	   egrep '^./man' DISTLIST ) > BINDISTLIST
### 	@( GEOM=`pwd` ; export GEOM ; \
### 	  cd doc ; $$GEOM/tools/distlist -p ./doc O.sgi ) >> BINDISTLIST


tarzan: geomview-only.tar.Z mathooglrib.tar.Z geomstuff.tar.Z 4dview.tar.Z \
	eucsyms.tar.Z hinge.tar.Z trigrp.tar.Z animate.tar.Z linkmover.tar.Z \
	sweep.tar.Z warp.tar.Z flythrough.tar.Z nose.tar.Z corners.tar.Z \
	ginsu.tar.Z tackdown.tar.Z crayola.tar.Z graffiti.tar.Z \
	transformer.tar.Z geomutil.tar.Z maniview.tar.Z stereo.tar.Z

geomview.tar.Z:	_always
	${GEOM}/tools/makepackage < BINDISTLIST

geomview-only.tar.Z:	_always
	${GEOM}/tools/makepackage geomview-only < BINDISTLIST

mathooglrib.tar.Z:	_always
	${GEOM}/tools/makepackage mathooglrib < BINDISTLIST

geomstuff.tar.Z:	_always
	${GEOM}/tools/makepackage geomstuff < BINDISTLIST

4dview.tar.Z:	_always
	${GEOM}/tools/makepackage 4dview < BINDISTLIST

eucsyms.tar.Z:	_always
	${GEOM}/tools/makepackage eucsyms < BINDISTLIST

hinge.tar.Z:	_always
	${GEOM}/tools/makepackage hinge < BINDISTLIST

trigrp.tar.Z:	_always
	${GEOM}/tools/makepackage trigrp < BINDISTLIST

animate.tar.Z:	_always
	${GEOM}/tools/makepackage animate < BINDISTLIST

linkmover.tar.Z:	_always
	${GEOM}/tools/makepackage linkmover < BINDISTLIST

sweep.tar.Z:	_always
	${GEOM}/tools/makepackage sweep < BINDISTLIST

warp.tar.Z:	_always
	${GEOM}/tools/makepackage warp < BINDISTLIST

flythrough.tar.Z:	_always
	${GEOM}/tools/makepackage flythrough < BINDISTLIST

nose.tar.Z:	_always
	${GEOM}/tools/makepackage nose < BINDISTLIST

corners.tar.Z:	_always
	${GEOM}/tools/makepackage corners < BINDISTLIST

ginsu.tar.Z:	_always
	${GEOM}/tools/makepackage ginsu < BINDISTLIST

tackdown.tar.Z:	_always
	${GEOM}/tools/makepackage tackdown < BINDISTLIST

crayola.tar.Z:	_always
	${GEOM}/tools/makepackage crayola < BINDISTLIST

graffiti.tar.Z:	_always
	${GEOM}/tools/makepackage graffiti < BINDISTLIST

transformer.tar.Z:	_always
	${GEOM}/tools/makepackage transformer < BINDISTLIST

maniview.tar.Z:	_always
	${GEOM}/tools/makepackage maniview < BINDISTLIST

geomutil.tar.Z:	_always
	${GEOM}/tools/makepackage geomutil < BINDISTLIST

stellico.tar.Z: _always
	gnutar -c -h -v -Z ./data/geom/stellico/*.off \
			   ./data/geom/stellico/README -f $@

mathooglrib.next.tar.Z:	_always
	${GEOM}/tools/makepackage mathooglrib.next < NEXTDISTLIST

BINSTUFF = README CHANGES COPYING INSTALL-BINARY REGISTER geomview \
		installbin tools data doc man bin modules \
		maple mathematica

# The "case $MACHTYPE in linux) ..." below avoid shipping tcl/tk lib files
# if we're on a system where we're linking with shared tcl/tk object libraries.
# We mustn't impose our .tcl files on it in that case, lest they fail to
# match the user system's tcl/tk version.

bindist:	ahem localstuff local_geomview local_installbin
	rm -f Geomview; ln -s . Geomview
	rm -rf /tmp/tG; mkdir /tmp/tG /tmp/tG/Geomview
	ln -s . /tmp/tG/Geomview/data
	ln -s /usr/local/lib /tmp/tG/Geomview/data/tcltk
	(for f in ${BINSTUFF}; do echo Geomview/$$f; done; \
	  case "${MACHTYPE}" in \
	    linux) ;; \
	    *)	echo -C; echo /tmp/tG; \
		cd /tmp/tG/Geomview/data/tcltk; \
		for f in tk4.0/tclIndex tk4.0/*.tcl tcl7.4/*; \
		   do echo Geomview/data/tcltk/$$f; done ;; \
	  esac \
	) | gnutar -c -T - -f geomview-${MACHTYPE}.tar.gz --gzip
	rm -rf /tmp/tG; rm ./Geomview

ahem:
	@echo '***'
	@echo '*** I assume you have just run "make instprivate" in a fresh directory'
	@echo '***'

MAINDIR = /u/gcg/ngrap
LOCALSTUFF = README CHANGES COPYING INSTALL-BINARY REGISTER doc/geomview.ps installbin Makefile

README: ${MAINDIR}/README
CHANGES: ${MAINDIR}/CHANGES
COPYING: ${MAINDIR}/COPYING
INSTALL-BINARY: ${MAINDIR}/INSTALL-BINARY
doc/geomview.ps: ${MAINDIR}/doc/geomview.ps
installbin: ${MAINDIR}/installbin

${LOCALSTUFF}:
	cp $? $@

localstuff: ${LOCALSTUFF}

geomview: local_geomview

local_geomview: bin/${MACHTYPE}/geomview
	rm -f geomview
	sed -e '/^GEOMROOT=.*/s//GEOMROOT=./' \
	  -e '/^MACHTYPE=.*/s//MACHTYPE=${MACHTYPE}/' bin/${MACHTYPE}/geomview > geomview
	chmod +x geomview

local_installbin: installbin 
	rm -f installbin.new
	sed -e 's/^MACHTYPE=.*/MACHTYPE=${MACHTYPE}/' installbin > installbin.new
	rm -f installbin
	mv installbin.new installbin
	chmod +x installbin

# WARNING: "make bin.tar.Z" does not imply "make all".  But you better
#  be sure that the binary geomview is in bin/${MACHTYPE} !!

bin.tar.Z:	BINDISTLIST
	-/bin/rm -f $@
	tools/dist-geomview BINDISTLIST | gnutar -cvZ -T - -f $@

tree.tar.Z:
	find . \! -type d -print -o -name RCS -prune | \
	  eggrep -v 'O.next|O.sun4|~' | \
	  gnutar -cvZ -T - -f tree.tar.Z

tape:
	find . \! -type d -print -o -name RCS -prune | \
	  eggrep -v 'O.next|O.sun4|~' | \
	  gnutar -cv -b 126 -T - -f /dev/tape

include ${GEOM}/makefiles/Makerules.common
