#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
#
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dh-make.
#
# Modified to make a template file for a multi-binary package with separated
# build-arch and build-indep targets  by Bill Allombert 2001

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

# This has to be exported to make some magic below work.
export DH_OPTIONS

PN:=hol88
VR:=$(shell awk '{if (i) next;i=1;a=$$2;gsub("[()]","",a);split(a,A,"-");print A[1];}' debian/changelog)
PD:=$(PN)-$(VR)

CFLAGS = -Wall -g

ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
	CFLAGS += -O0
else
	CFLAGS += -O2
endif

configure: configure-stamp
configure-stamp:
	dh_testdir
#	cat debian/dash.p | patch -p1
	touch configure-stamp


build: build-arch build-indep

build-arch: build-arch-stamp
build-arch-stamp: configure-stamp 

	echo '#-native-reloc(bye -1)' | gcl || cat debian/gcl_patch.l debian/gcl_save.l | gcl
	PATH=$$(pwd):$$PATH $(MAKE) all
	find -name "raw_*_map" -exec rm {} \;
	for i in $$(find -maxdepth 1 -name "*hol*"); do \
		printf 'install `'/usr/share/$(PD)'`;;\nlisp `(ml-save "foo")`;;\n' | ./$$i &&\
		mv foo $$i; done
	touch $@

build-indep: build-indep-stamp
build-indep-stamp: configure-stamp 


	for i in Manual/Tutorial/ack.tex Manual/Reference/ack.tex Manual/Description/ack.tex; do\
		ln -snf ../Latex/ack.tex $$i ; done
	for i in $$(find Library -name index.tex) Library/pred_sets/Manual/theorems.tex Library/record_proof/Manual/record_proof.ind ; do\
		[ -e $$i.sve ] || cp $$i $$i.sve ; done
	$(MAKE) -C Manual all
	touch $@

INSTALLA:=$(addprefix debian/,$(addsuffix .install,\
	hol88 hol88-library))
INSTALLI:=$(addprefix debian/,$(addsuffix .install,\
	hol88-source hol88-help hol88-library-source\
	hol88-library-help hol88-contrib-source hol88-contrib-help hol88-doc))
LINKS:=$(addprefix debian/,$(addsuffix .links,hol88 hol88-library))

clean:
	dh_testdir
	dh_testroot

#	! [ -e configure-stamp ] || cat debian/dash.p | patch -p1 -R
	rm -f build-arch-stamp build-indep-stamp configure-stamp

	[ ! -f Makefile ] || $(MAKE) clean
	[ ! -f Makefile ] || $(MAKE) clobber
	for i in $$(find Library -name index.tex) Library/pred_sets/Manual/theorems.tex Library/record_proof/Manual/record_proof.ind ; do\
		[ -e $$i.sve ] || cp $$i $$i.sve ; done
	[ ! -f Makefile ] || $(MAKE) -C Manual clean

	[ ! -f Makefile ] || for i in $$(find Library -name Manual); do $(MAKE) -C $$i clean ; done
	find -name X.tex -exec rm -rf {} \;

	dh_clean -X./ml/site.ml.orig -X./contrib/tooltool/Makefile.orig \
		 -X./contrib/tooltool/events.c.orig -X./contrib/tooltool/func_fix.c.orig \
	         -X./contrib/tooltool/lex.c.orig -X./contrib/tooltool/parse.y.orig \
		 -X./contrib/tooltool/patchlevel.h.orig -X./contrib/tooltool/windows.c.orig \
		 -X./contrib/Xhelp/hol_apro.orig -X./contrib/Xhelp/hol_ref.orig \
		 -X./contrib/Xhelp/xholhelp.h.orig -X./contrib/Xhelp/hol_thm.orig

	for i in $$(find Library -name "*.sve") ; do mv $$i $$(echo $$i | sed "s,\.sve,,1"); done

	rm -f $(INSTALLA) $(INSTALLI) $(LINKS) debian/hol88.sh
	find -name "*.dvi" -exec rm {} \;
	rm -f Manual/Tutorial/ack.tex Manual/Reference/ack.tex Manual/Description/ack.tex
	rm -f Manual/Covers/titlepages.ps Manual/Covers/endpages.ps
	rm -f bm.l foo* gcl ./lisp/f-ol-syntax.data
	cp debian/site_ml_orig ml/site.ml.orig
	rm -f   Library/finite_sets/Manual/entries.tex \
		Library/finite_sets/Manual/theorems.tex \
		Library/more_arithmetic/Manual/theorems.tex \
		Library/numeral/Manual/theorems.tex \
		Library/pred_sets/Manual/entries.tex \
		Library/prettyp/Manual/entries.tex \
		Library/reals/Manual/theorems.tex \
		Library/res_quan/Manual/entries.tex \
		Library/sets/Manual/entries.tex \
		Library/sets/Manual/theorems.tex \
		Library/string/Manual/theorems.tex \
		Library/wellorder/Manual/theorems.tex \
		Library/word/Manual/theorems.tex \
		Manual/Reference/entries.tex \
		Manual/Reference/theorems.tex



debian/hol88.install:: 
	find -maxdepth 1 -name "*hol*" | awk '{a=$$1;sub("/[^/]*$$","",a);printf("%s usr/lib/$(PD)/%s\n",$$1,a);}' >>$@
	echo debian/hol88.sh usr/bin >>$@
debian/hol88-source.install:: 
	find lisp -name "*.l" | awk '{a=$$1;sub("/[^/]*$$","",a);printf("%s usr/share/$(PD)/%s\n",$$1,a);}' >>$@
	find ml -type f -name "*ml" | awk '{a=$$1;sub("/[^/]*$$","",a);printf("%s usr/share/$(PD)/%s\n",$$1,a);}' >>$@
	find theories -type f -name "*ml" | awk '{a=$$1;sub("/[^/]*$$","",a);printf("%s usr/share/$(PD)/%s\n",$$1,a);}' >>$@
	find theories -type f -name "*th" | awk '{a=$$1;sub("/[^/]*$$","",a);printf("%s usr/share/$(PD)/%s\n",$$1,a);}' >>$@
debian/hol88-help.install:: 
	find help -name "*.doc" | awk '{a=$$1;sub("/[^/]*$$","",a);printf("%s usr/share/$(PD)/%s\n",$$1,a);}' >>$@

debian/hol88-library.install:: 
	find Library -name "*.o" | awk '{a=$$1;sub("/[^/]*$$","",a);printf("%s usr/lib/$(PD)/%s\n",$$1,a);}' >>$@
debian/hol88-library-source.install:: 
	find Library -name "*.ml" | awk '{a=$$1;sub("/[^/]*$$","",a);printf("%s usr/share/$(PD)/%s\n",$$1,a);}' >>$@
debian/hol88-library-help.install:: 
	find Library -name "*.doc" | awk '{a=$$1;sub("/[^/]*$$","",a);printf("%s usr/share/$(PD)/%s\n",$$1,a);}' >>$@

debian/hol88-contrib-source.install:: 
	find contrib -name "*.ml" | awk '{a=$$1;sub("/[^/]*$$","",a);printf("%s usr/share/$(PD)/%s\n",$$1,a);}' >>$@
	find contrib -name "Makefile" | awk '{a=$$1;sub("/[^/]*$$","",a);printf("%s usr/share/$(PD)/%s\n",$$1,a);}' >>$@
debian/hol88-contrib-help.install:: 
	find contrib -name "*.doc" | awk '{a=$$1;sub("/[^/]*$$","",a);printf("%s usr/share/$(PD)/%s\n",$$1,a);}' >>$@

debian/hol88-doc.install:: 
	find Manual -name "*dvi" | grep -v makeindex | grep -v psfig | \
		awk '{a=$$1;sub("/[^/]*$$","",a);printf("%s usr/share/doc/hol88-doc/%s\n",$$1,a);}' >>$@
	find Manual -name "*ps" | grep -v makeindex | grep -v psfig | \
		awk '{a=$$1;sub("/[^/]*$$","",a);printf("%s usr/share/doc/hol88-doc/%s\n",$$1,a);}' >>$@


debian/hol88.links:: 
	find * -maxdepth 0 -name "*hol*" | awk '{printf("/usr/lib/$(PD)/%s usr/share/$(PD)/%s\n",$$1,$$1);}' >>$@
debian/hol88-library.links:: 
	find Library -name "*.o" | awk '{printf("/usr/lib/$(PD)/%s usr/share/$(PD)/%s\n",$$1,$$1);}' >>$@


debian/hol88.sh:
	echo "#!/bin/bash" >$@
	echo >>$@
	echo "exec /usr/lib/$(PD)/hol" >>$@
	chmod 755 $@


install: install-indep install-arch
install-indep: $(INSTALLI)
	dh_testdir
	dh_testroot
	dh_prep -i -X./ml/site.ml.orig -X./contrib/tooltool/Makefile.orig \
		 -X./contrib/tooltool/events.c.orig -X./contrib/tooltool/func_fix.c.orig \
	         -X./contrib/tooltool/lex.c.orig -X./contrib/tooltool/parse.y.orig \
		 -X./contrib/tooltool/patchlevel.h.orig -X./contrib/tooltool/windows.c.orig \
		 -X./contrib/Xhelp/hol_apro.orig -X./contrib/Xhelp/hol_ref.orig \
		 -X./contrib/Xhelp/xholhelp.h.orig -X./contrib/Xhelp/hol_thm.orig

	dh_installdirs -i

	dh_install -i

install-arch: $(INSTALLA) $(LINKS) debian/hol88.sh
	dh_testdir
	dh_testroot
	dh_prep -a -X./ml/site.ml.orig -X./contrib/tooltool/Makefile.orig \
		 -X./contrib/tooltool/events.c.orig -X./contrib/tooltool/func_fix.c.orig \
	         -X./contrib/tooltool/lex.c.orig -X./contrib/tooltool/parse.y.orig \
		 -X./contrib/tooltool/patchlevel.h.orig -X./contrib/tooltool/windows.c.orig \
		 -X./contrib/Xhelp/hol_apro.orig -X./contrib/Xhelp/hol_ref.orig \
		 -X./contrib/Xhelp/xholhelp.h.orig -X./contrib/Xhelp/hol_thm.orig

	dh_installdirs -a

	dh_install -a

	mv debian/hol88/usr/bin/hol88.sh debian/hol88/usr/bin/hol88

binary-common:
	dh_testdir
	dh_testroot
	dh_installchangelogs 
	dh_installdocs
	dh_installexamples
#	dh_installmenu
#	dh_installdebconf	
#	dh_installlogrotate	
#	dh_installemacsen
#	dh_installpam
#	dh_installmime
#	dh_python
#	dh_installinit
#	dh_installcron
#	dh_installinfo
	dh_installman
	dh_lintian
	dh_link
	dh_strip
	dh_compress 
	dh_fixperms
#	dh_perl
	dh_makeshlibs
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb
# Build architecture independant packages using the common target.
binary-indep: build-indep install-indep
	$(MAKE) -f debian/rules DH_OPTIONS=-i binary-common

# Build architecture dependant packages using the common target.
binary-arch: build-arch install-arch
	$(MAKE) -f debian/rules DH_OPTIONS=-a binary-common

binary: binary-arch binary-indep
.PHONY: build clean binary-indep binary-arch binary install install-indep install-arch configure