NEEDS_MAKEFILE	= cfortran pawlib paw_motif scripts
LIB_PACKAGES	= pawlib paw_motif
BIN_PACKAGES	= pawlib

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

cernlib-arch-local: cernlib-static
cernlib-indep-local: 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/paw $(CERN_BINDIR)
	# also, we want to add a paw-demos script
	sed -e 's,@DATADIR@,$(datadir),g' $(ADDONDIR)/bin/paw-demos.in \
		> $(CERN_BINDIR)/paw-demos && \
		chmod a+x $(CERN_BINDIR)/paw-demos

# Build statically linked programs for *-static packages.
# these will be linked dynamically against system libraries, but
# statically against cernlib libraries.
# This is not necessary on non-Linux archs where I can't yet compile shlibs
# so everything is statically linked anyway.
cernlib-static:
	set -e ; \
	[ -d $(CERN_SHLIBDIR) ] || exit 0 ; \
	gfortran $(CERN_BUILDDIR)/pawlib/paw/programs/0pamain.o \
		`cernlib -G X11 pawlib` -Wl,-E -o $(CERN_BINDIR)/pawX11.static;\
	gfortran $(CERN_BUILDDIR)/pawlib/paw/programs/0pamainm.o \
		`cernlib -G Motif pawlib` -Wl,-E -o $(CERN_BINDIR)/paw++.static

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

	# 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

	# move $(includedir)/ntuple to $(includedir)/paw/ntuple
	rm -rf $(DESTDIR)$(includedir)/paw/ntuple
	mv -f $(DESTDIR)$(includedir)/ntuple $(DESTDIR)$(includedir)/paw/
	for file in `ls -1 $(DESTDIR)$(includedir)/paw/ntuple/*` ; do \
		sed -e 's,<ntuple/\([^>]*\)>,<paw/ntuple/\1>,g' $$file \
			> $$file.tmp ; \
		mv -f $$file.tmp $$file ; \
	done

	# install still more include files
	install -p -m 0644 $(CVSCOSRC)/cfortran/paw.h $(DESTDIR)$(includedir)/
	install -p -m 0644 $(CVSCOSRC)/cfortran/comis.h $(DESTDIR)$(includedir)/
	install -p -m 0644 $(CVSCOSRC)/car/paw.car $(DESTDIR)$(includedir)/

	# a few more needed patches
	sed '/^#include/s,../comis/,,' $(DESTDIR)$(includedir)/paw/pawsiz.inc \
		> $(DESTDIR)$(includedir)/paw/pawsiz.inc.tmp && \
	mv -f $(DESTDIR)$(includedir)/paw/pawsiz.inc.tmp \
		$(DESTDIR)$(includedir)/paw/pawsiz.inc

# target to install files in arch-dependent packages
install-arch: install-includes
	install -d -m 0755 $(DESTDIR)$(bindir) $(DESTDIR)$(libdir) \
		$(DESTDIR)$(datadir)/pixmaps \
		$(DESTDIR)$(sysconfdir)/X11/app-defaults \
		$(DESTDIR)$(man1dir)
	
	# install binaries
	for binary in paw++ pawX11 ; do \
		install -p -m 0755 $(CERN_BINDIR)/$$binary \
			$(DESTDIR)$(bindir)/ ; \
	done
	
	# install libraries
	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

	# install man pages
	for binary in paw paw++ pawX11 ; \
	do \
		install -p -m 0644 $(ADDONDIR)/manpages/$$binary.1 \
			$(DESTDIR)$(man1dir)/ ; \
	done

	# separate static and dynamically linked binaries
	set -e ; \
	for prog in pawX11 paw++ ; do \
		if [ -x $(CERN_BINDIR)/$$prog.static ] ; then \
			mv -f $(DESTDIR)$(bindir)/$$prog \
				$(DESTDIR)$(bindir)/$$prog.dynamic ; \
			install -p $(CERN_BINDIR)/$$prog.static \
				$(DESTDIR)$(bindir)/$$prog.static ; \
			ln -sf $$prog.static $(DESTDIR)$(bindir)/$$prog ; \
		fi ; \
	done

# target to install files in arch-independent packages
install-indep:
	install -d -m 0755 $(DESTDIR)$(bindir) \
		$(DESTDIR)$(sysconfdir)/X11/app-defaults \
		$(DESTDIR)$(includedir) $(DESTDIR)$(datadir)/paw-demos \
		$(DESTDIR)$(datadir)/pixmaps $(DESTDIR)$(man1dir)
	
	# Install paw demos
	install -p -m 0644 $(CVSCOSRC)/pawlib/paw/demo/* \
		$(DESTDIR)$(datadir)/paw-demos/
	install -p -m 0755 $(ADDONDIR)/bin/clean_demo \
		$(DESTDIR)$(datadir)/paw-demos/
	
	# ... and X11 app-defaults
	install -p -m 0644 $(ADDONDIR)/app-defaults/* \
		$(DESTDIR)$(sysconfdir)/X11/app-defaults/
	
	# ... and PAW icon
	install -p -m 0644 $(ADDONDIR)/icons/paw*.xpm \
		$(DESTDIR)$(datadir)/pixmaps/
	
	# ... and scripts + man pages
	for script in paw paw-demos ; do \
		install -p -m 0755 $(CERN_BINDIR)/$$script \
			$(DESTDIR)$(bindir)/ ; \
	done
	for manpage in paw paw-demos paw++ pawX11 ; do \
		install -p -m 0644 $(ADDONDIR)/manpages/$$manpage.1 \
			$(DESTDIR)$(man1dir)/ ; \
	done

.PHONY: cernlib-arch-local cernlib-indep-local cernlib-static cernlib-scripts \
	install install-arch install-includes install-indep

