NEEDS_MAKEFILE	= cfortran code_motif graflib kernlib mathlib packlib \
		  p5boot patchy scripts

# Order here is important!  Packages that depend on other packages must be
# compiled later, or the linker risks picking up stuff in /usr/lib instead
# of $(CERN_SHLIBDIR).
LIB_PACKAGES	= kernlib packlib mathlib graflib code_motif
BIN_PACKAGES	= p5boot patchy packlib graflib
TEST_PACKAGES   = kernlib packlib mathlib graflib

include debian/add-ons/cernlib.mk

KUIPC		= $(CERN_BINDIR)/kuipc

cernlib-setup-local: $(KUIPC) cernlib-scripts
cernlib-indep-local: cernlib-scripts

$(KUIPC):
	cd $(CERN_BUILDDIR) && $(MAKE) MAKEOVERRIDES= bin/kuipc

# we want to use a completely rewritten cernlib script
cernlib-scripts: patch
	set -e ; \
	mkdir -p $(CERN_BINDIR) ; \
	sed -e 's,@LIBPREFIX@,$(libdir),g' -e 's,@PREFIX@,$(prefix),g' \
		-e 's,@CERN@,$(prefix),g' -e 's,@VERSION@,.,g' \
		$(ADDONDIR)/bin/cernlib.in > $(CERN_BINDIR)/cernlib
	# Request the appropriate Fortran library for the desired compiler
ifneq (,$(findstring ifort,$(DEB_BUILD_OPTIONS)))
	sed -i -e 's/-lgfortran/-limf/' $(CERN_BINDIR)/cernlib
endif
	chmod a+x $(CERN_BINDIR)/cernlib

# 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
	
	# install cfortran.doc (if cfortran.h exists; for Debian packaging we
	# deleted it earlier)
	set -e ; \
	if [ -e $(CVSCOSRC)/cfortran/cfortran.h ] ; then \
		install -d -m 0755 $(DESTDIR)$(datadir)/doc/cfortran ; \
		install -p -m 0644 $(CVSCOSRC)/cfortran/cfortran.doc \
			$(DESTDIR)$(datadir)/doc/cfortran/ ; \
	fi	

	# install still more include files
	for header in cfortran comis cspack gen graflib hbook higz hplot \
		kernlib kuip minuit packlib zebra ; do \
		file="$(CVSCOSRC)/cfortran/$${header}.h" ; \
		[ -e "$$file" ] && \
		install -p -m 0644 "$$file" $(DESTDIR)$(includedir)/ || true ; \
	done
	for car in fatmen hbook higz kuip zebra ; do \
		install -p -m 0644 $(CVSCOSRC)/car/$${car}.car \
			$(DESTDIR)$(includedir)/ ; \
	done

# target to install files in arch-dependent packages
install-arch: install-includes
	install -d -m 0755 $(DESTDIR)$(bindir) $(DESTDIR)$(sbindir) \
		$(DESTDIR)$(libdir) $(DESTDIR)$(datadir)/pixmaps \
		$(DESTDIR)$(sysconfdir)/X11/app-defaults \
		$(DESTDIR)$(man1dir) $(DESTDIR)$(man8dir)
	
	# rename some files that conflict with the cdbackup package
	set -e ; \
	for file in backup make move serv ; do \
		[ -x $(CERN_BINDIR)/cd$$file ] && \
		mv $(CERN_BINDIR)/cd$$file $(CERN_BINDIR)/hep$$file || true ; \
	done
	
	# install binaries
	for binary in dzedit dzeX11 fatback fatmen fatnew fatsend fatsrv \
		hepbackup hepdb hepmake hepmove hepserv kuesvr kuipc kxterm \
		fcasplit nycheck nydiff nyindex nylist nymerge nypatchy \
		nyshell nysynopt nytidy yexpand zftp ; do \
		install -p -m 0755 $(CERN_BINDIR)/$$binary \
			$(DESTDIR)$(bindir)/ ; \
	done
	for binary in zserv ; do \
		install -p -m 0755 $(CERN_BINDIR)/$$binary \
			$(DESTDIR)$(sbindir)/ ; \
	done
	[ -z "`diff $(DESTDIR)$(sbindir)/zserv $(CERN_BINDIR)/pawserv`" ] \
		&& ln -sf zserv $(DESTDIR)$(sbindir)/pawserv \
		|| install -p $(CERN_BINDIR)/pawserv $(DESTDIR)$(sbindir)/
	
	# 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 KXterm app-defaults
	install -p -m 0644 $(ADDONDIR)/app-defaults/KXterm \
		$(DESTDIR)$(sysconfdir)/X11/app-defaults/
	
	# install KXterm icon
	install -p -m 0644 $(ADDONDIR)/icons/kxterm*.xpm \
		$(DESTDIR)$(datadir)/pixmaps/
	
	# install man pages
	for binary in dzedit dzeX11 kuesvr kuipc kxterm zftp \
		fcasplit nycheck nydiff nyindex nylist nymerge nypatchy \
		nyshell nysynopt nytidy yexpand ypatchy ; do \
		install -p -m 0644 $(ADDONDIR)/manpages/$$binary.1 \
			$(DESTDIR)$(man1dir)/ ; \
	done
	for binary in pawserv zserv ; do \
		install -p -m 0644 $(ADDONDIR)/manpages/$$binary.8 \
			$(DESTDIR)$(man8dir)/ ; \
	done

# target to install files in arch-independent packages
install-indep:
	install -d -m 0755 $(DESTDIR)$(bindir) $(DESTDIR)$(datadir)/aclocal \
		$(DESTDIR)$(man1dir) $(DESTDIR)$(datadir)/cernlib \
		$(DESTDIR)$(datadir)/cernlib/config
	
	# Install scripts + man pages
	install -p -m 0755 $(CERN_BINDIR)/cernlib $(DESTDIR)$(bindir)/
	install -p -m 0644 $(ADDONDIR)/manpages/cernlib.1 $(DESTDIR)$(man1dir)/

	# Contributed Autoconf macros
	install -p -m 0644 $(ADDONDIR)/misc/cernlib.m4 \
		$(DESTDIR)$(datadir)/aclocal/

	# Imake config files
	install -p -m 0644 $(CVSCOSRC)/config/* \
		$(DESTDIR)$(datadir)/cernlib/config/
	chmod a+x $(DESTDIR)$(datadir)/cernlib/config/imake_boot

	# Makefile fragment
	install -p -m 0644 $(ADDONDIR)/cernlib.mk $(DESTDIR)$(datadir)/cernlib/

	# gmake script
	install -p -m 0755 $(ADDONDIR)/bin/gmake $(DESTDIR)$(datadir)/cernlib/

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

