NEEDS_MAKEFILE	= cfortran geant321 scripts
LIB_PACKAGES	= geant321
TEST_PACKAGES   = $(LIB_PACKAGES)

prefix          = /usr/local
datadir         = $(prefix)/share
include $(datadir)/cernlib/cernlib.mk

GEANTDOC	= $(DESTDIR)$(datadir)/doc/geant321-doc

cernlib-indep-local: cernlib-geant-data cernlib-geant-docs cernlib-scripts

# we need to do this rather than using the scripts Makefile,
# which (stupidly) calls install -s [strip] on shell scripts
cernlib-scripts: patch
	set -e ; \
	mkdir -p $(CERN_BINDIR) ; \
	install -p -m 0755 $(CVSCOSRC)/scripts/gxint $(CERN_BINDIR)

# these targets build only the arch-independent data files
cernlib-geant-data: patch buildtree
	$(MAKE) -C $(CERN_BUILDDIR) MAKEOVERRIDES= geant321/Makefile
	$(MAKE) -C $(CERN_BUILDDIR)/geant321 MAKEOVERRIDES= gxint/Makefile
	$(MAKE) -C $(CERN_BUILDDIR)/geant321/gxint \
		MAKEOVERRIDES= $(CERN_LIBDIR)/gxint321.f

# now build some documentation that isn't created automatically.
cernlib-geant-docs: patch
	set -e ; \
	mkdir -p $(CERN_DOCDIR) ; \
	rm -f $(CERN_DOCDIR)/geant321.txt; \
	cd $(CVSCOSRC)/geant321 ; \
	for x in gbase gcons gdraw ggeom ghits giopa gkine gphys gtrak ; do \
		( echo && echo -n "                                 [" && \
		  echo -n $$x | cut -b 2-5 | tr '[a-z]' '[A-Z]' |xargs echo -n\
		  && echo "]"&& echo && \
		  sed -e '/^\#.*$$/d' -e '1,/^\*-- Author/d' \
			-e '/^\*$$/d' $$x/$$x.doc ) >> \
			$(CERN_DOCDIR)/geant321.txt ; \
	done ; \
	cd doc ; \
	( echo "                              ERTRAK Documentation" && \
	  echo "                              ====================" && \
	  sed -e '/^\*/d' gedoc ) > $(CERN_DOCDIR)/ertrak.txt ; \
	mkdir -p $(CERN_DOCDIR)/gheisha ; \
	cd ghdoc ; \
	for x in `ls *.doc | sed 's/.doc$$//g'` ; do \
		sed -e '/^\*/d' -e 's/^C\*\*//g' $$x.doc > \
		$(CERN_DOCDIR)/gheisha/$$x.txt;\
	done

# target to install include files for development packages
install-includes:
	install -d -m 0755 $(DESTDIR)$(includedir) \
		$(DESTDIR)$(includedir)/geant

	# install them all (patching includes, e.g. #include "ksys.h"
	# -> #include <kuip/ksys.h> )
	for dir in `cat $(ADDONDIR)/includelist.txt` ; do \
		basedir=`basename $$dir` ; \
		rm -rf $(DESTDIR)$(includedir)/$$basedir ; \
		cp -Rp $(CVSCOSRC)/$$dir $(DESTDIR)$(includedir) ; \
		ls -1 $(DESTDIR)$(includedir)/$$basedir/* | \
			egrep -v '\.(h|inc)$$' | xargs rm -rf ; \
		for file in `ls -1 $(DESTDIR)$(includedir)/$$basedir/*` ; do \
		if [ -f $$file ] ; then \
	sed -e 's,^\([ ]*#[ ]*include\)[ 	]*"\([^"/]*\)",\1 <'$$basedir/'\2>,g' \
		-e 's,^\([ ]*#[ ]*include\)[ 	]*"\([^"]*\)",\1 <\2>,g' \
		-e 's,cfortran/,,g' \
		$$file > $$file.tmp ; \
	mv -f $$file.tmp $$file ; \
	fi ; \
	done ; \
	done

	# install still more include files
	install -p -m 0644 $(CVSCOSRC)/cfortran/geant321.h \
		$(DESTDIR)$(includedir)/
	install -p -m 0644 $(CVSCOSRC)/car/gean*.car $(DESTDIR)$(includedir)/
	rm -f $(DESTDIR)$(includedir)/geanh.car && \
		ln -sf geanh321.car $(DESTDIR)$(includedir)/geanh.car
	rm -f $(DESTDIR)$(includedir)/geant.car && \
		ln -sf geant321.car $(DESTDIR)$(includedir)/geant.car
	( cd $(DESTDIR)$(includedir)/geant/ && ln -sf ../geant321 gcdes )

# target to install files in arch-dependent packages
install-arch: install-includes
	# install libraries
	install -d -m 0755 $(DESTDIR)$(libdir)
	install -p -m 0644 $(CERN_LIBDIR)/*.a $(DESTDIR)$(libdir)/
	# we go through the following rigmarole because "install" dereferences
	# symlinks and older GNU versions of "cp" have inconsistent
	# syntax for the short form of the --no-dereference flag
	set -e ; \
	if [ -d $(CERN_SHLIBDIR) ] ; then \
	( abslibdir="`cd $(DESTDIR)$(libdir)/ && pwd`" ; \
	  cd $(CERN_SHLIBDIR)/ ; \
	  for file in `ls | grep 'lib.*\..*\..*\.'` ; do \
		basename=`echo $$file | cut -f 1 -d .` ; \
		install -p -m 0644 $$file "$$abslibdir/" ; \
		for link in `ls $${basename}.* |grep -v 'lib.*\..*\..*\.'`; do \
			ln -sf $$file "$$abslibdir"/$$link ; \
		done ; \
	  done ) ; \
	fi

# target to install files in arch-independent packages
install-indep:
	install -d -m 0755 $(DESTDIR)$(bindir) \
		$(DESTDIR)$(sysconfdir)/X11/app-defaults \
		$(DESTDIR)$(datadir)/geant321 \
		$(DESTDIR)$(datadir)/doc/geant321-doc $(DESTDIR)$(includedir) \
		$(DESTDIR)$(datadir)/geant321-data $(DESTDIR)$(man1dir)
	
	# install GEANT data file into /usr/share directories
	install -p -m 0644 $(CVSCOSRC)/geant321/data/xsneut95.dat \
		$(DESTDIR)$(datadir)/geant321-data/
	rm -f $(CERN_LIBDIR)/xsneut95.dat

	# ... and likewise the gxint.f file used by geant
	# (forcing it to call the Lesstif version of Paw)
	sed 's/CALL GPAW/CALL GPAWPP/g' $(CERN_LIBDIR)/gxint321.f \
		> $(DESTDIR)$(datadir)/geant321/gxint321.f
	ln -sf gxint321.f $(DESTDIR)$(datadir)/geant321/gxint.f
	
	# ... and GEANT documentation
	install -p -m 0644 $(CERN_DOCDIR)/geant321.txt \
		$(CERN_DOCDIR)/ertrak.txt $(GEANTDOC)/
	install -d -m 0755 $(GEANTDOC)/gheisha
	install -p -m 0644 $(CERN_DOCDIR)/gheisha/* $(GEANTDOC)/gheisha/
	
	# ... and X11 app-defaults
	install -p -m 0644 $(ADDONDIR)/app-defaults/*Geant++ \
		$(DESTDIR)$(sysconfdir)/X11/app-defaults/
	
	# ... and scripts + man pages
	install -p -m 0755 $(CERN_BINDIR)/gxint $(DESTDIR)$(bindir)/
	install -p -m 0644 $(ADDONDIR)/manpages/gxint.1 $(DESTDIR)$(man1dir)/

.PHONY: cernlib-indep-local cernlib-scripts cernlib-geant-data \
	cernlib-geant-docs install install-arch install-includes install-indep

