#!/usr/bin/make -f
# Sample debian/rules that uses debhelper.
# GNU copyright 1997 to 1999 by Joey Hess.

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

#VER:=$(shell basename `pwd` | sed 's,.*-,,1')
PN:=axiom
VER:=$(shell awk '{if (i) next;i=1;a=$$2;gsub("[()]","",a);split(a,A,"-");print A[1];}' debian/changelog)
PD:=$(PN)-$(VER)

export DH_OPTIONS

CFLAGS = -Wall -g

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

#NO_SAVE_SYS?=
#ARCHT:=$(shell dpkg --print-architecture)

#ARCHT:=$(DEB_BUILD_ARCH)
#ifeq ($(ARCHT),ia64)
#NO_SAVE_SYS:=t
#endif
#ifeq ($(ARCHT),mips)
#NO_SAVE_SYS:=t
#endif
#ifeq ($(ARCHT),mipsel)
#NO_SAVE_SYS:=t
#endif
#ifeq ($(ARCHT),hppa)
#NO_SAVE_SYS:=t
#endif
#ifeq ($(ARCHT),alpha)
#NO_SAVE_SYS:=t
#endif

# ifeq ($(ARCHT),powerpc)
# NO_STRIP:=--exclude=axiom
# endif

debian/patches_applied: 
	! [ -e debian/patches_unapplied ] || patch -p0 <debian/patch.all
#	! [ -e debian/patches_unapplied ] || [ "$(NO_SAVE_SYS)" = "" ] || patch -p0 <debian/patch.save
#	! [ -e debian/patches_unapplied ] || [ "$(NO_SAVE_SYS)" != "" ] || patch -p0 <debian/patch.nosave
	! [ -e debian/patches_unapplied ] || patch -p0 <debian/patch.merge
	rm -f debian/patches_unapplied
	touch $@

debian/patches_unapplied: 
	! [ -e debian/patches_applied ] || patch -R  -p0 <debian/patch.all
#	! [ -e debian/patches_applied ] || [ "$(NO_SAVE_SYS)" = "" ] || patch -R -p0 <debian/patch.save
#	! [ -e debian/patches_applied ] || [ "$(NO_SAVE_SYS)" != "" ] || patch -R -p0 <debian/patch.nosave
	! [ -e debian/patches_applied ] || patch -R -p0 <debian/patch.merge
	rm -f debian/patches_applied
#	touch $@
	echo foo > $@

debian/Makefile:
	cp $(@F) $@
	patch < debian/Makefile.patch

configure: configure-stamp
configure-stamp: debian/Makefile
	dh_testdir

	touch configure-stamp

build: build-arch build-indep
build-arch: build-stamp
build-indep: build-stamp
build-stamp: configure-stamp #debian/patches_applied
	dh_testdir

#	[ "$(NO_SAVE_SYS)" = "" ] || \
#		( mkdir -p $(CURDIR)/mnt/linux/algebra && cp debian/*aase mnt/linux/algebra/ )

	mkdir -p $(CURDIR)/mnt/linux/algebra
	cp -pr src/share/algebra/*.daase mnt/linux/algebra

#	export AXIOM=$(CURDIR)/mnt/linux ; \
	export PATH=$$AXIOM/bin:$$PATH ; \
	while sleep 1800 ; do echo tick; done & j=$$!; \
	$(MAKE) PASS1=t ; i=$$? ; \
	kill $$j || true ; exit $$i

#	find -name "*.lsp" -exec touch {} \;
#	find -name "*.lisp" -exec touch {} \;

#	while sleep 1800 ; do echo tick; done & j=$$!; \
#       i=$$? ; kill $$j || true ; exit $$i

	export AXIOM=$(CURDIR)/mnt/linux ; \
	export PATH=$$AXIOM/bin:$$PATH ; \
	export GCL=`which gcl` ; \
	eval `dpkg-buildflags --export=sh` && $(MAKE) TESTSET=regresstests GCL=$$(which gcl)

	find mnt/linux -name bessintr.eps -exec rm {} \;
	find mnt/linux -name htsearch -exec chmod 755 {} \;
	find mnt/linux -name command.list -exec chmod -x {} \;
	for i in $$(find mnt/linux -name presea); do cat $$i | sed 's,!/bin/awk,!/usr/bin/awk,1' >tmp && mv tmp $$i; done
	find mnt/linux -name presea -exec chmod 755 {} \;

	echo ")lisp (progn (setq compiler::*default-system-p* nil)(si::save-system \"foo\"))" | AXIOM=$(CURDIR)/mnt/linux $(CURDIR)/mnt/linux/bin/AXIOMsys && mv foo mnt/linux/bin/AXIOMsys

	for i in $$(find mnt/linux -wholename "*.daase/*.daase" -type d); do rm -rf $$i; done

	touch build-stamp

IFS:=$(addprefix debian/,axiom.install axiom.links axiom-doc.install axiom-doc.links axiom-source.install axiom-source.links axiom-test.install axiom-test.links axiom-databases.install axiom-databases.links axiom-tex.install axiom-graphics.install axiom-graphics-data.install axiom-hypertex.install axiom-hypertex-data.install )

fooclean:
	rm -f $(IFS)

clean: #debian/patches_unapplied
	dh_testdir
	dh_testroot
	rm -f build-stamp configure-stamp
	set

	AXIOM=$(CURDIR)/mnt/linux  \
	C_INCLUDE_PATH=/usr/include:$C_INCLUDE_PATH \
	$(MAKE) clean
	rm -f lsp/Makefile.dvi src/algebra/Makefile.dvi src/input/Makefile.dvi obj/noweb/contrib/kostas/Makefile obj/noweb/src/c/notangle.o obj/noweb/src/c/getline.o obj/noweb/src/c/match.o obj/noweb/src/c/modules.o obj/noweb/src/c/modtrees.o obj/noweb/src/c/strsave.o obj/noweb/src/c/main.o obj/noweb/src/c/errors.o obj/noweb/src/c/columns.o obj/noweb/src/c/nt obj/noweb/src/c/markmain.o obj/noweb/src/c/markup.o obj/noweb/src/c/markup obj/noweb/src/c/mnt.o obj/noweb/src/c/mnt obj/noweb/src/c/finduses.o obj/noweb/src/c/recognize.o obj/noweb/src/c/finduses mnt/bin/lib/nt mnt/bin/lib/markup mnt/bin/lib/mnt mnt/bin/lib/finduses mnt/bin/Makefile.dvi  Makefile.dvi src/Makefile.dvi src/interp/Makefile.dvi src/doc/Makefile.dvi
	rm -f lsp/Makefile src/Makefile src/boot/Makefile src/clef/Makefile src/doc/Makefile src/etc/Makefile src/input/Makefile src/interp/Makefile src/lib/Makefile src/scripts/Makefile src/share/Makefile 
	rm -f src/algebra/Makefile lastBuildDate
	find -name Makefile.dvi -exec rm {} \;
	rm -f Makefile.linux
	rm -f $(IFS)
	rm -rf debian/axiom_tutorialu debian/bin debian/axiom.1
	! [ -e debian/Makefile ] || mv debian/Makefile ./
	find -mindepth 2 -name Makefile -exec rm {} \;
	rm -f books/tangle.o
	mv books/axiom.sty books/axiom.sty.ori
	mv src/axiom-website/CATS/axiom.sty src/axiom-website/CATS/axiom.sty.ori
	find -name axiom.sty -exec rm {} \;
	mv books/axiom.sty.ori books/axiom.sty
	mv src/axiom-website/CATS/axiom.sty.ori src/axiom-website/CATS/axiom.sty
	rm -rf kaf*.sdata
	rm -f src/interp/bookvol5.pamphlet src/interp/bookvol9.pamphlet src/algebra/bookvol10.2.spad.pamphlet
	rm -f src/algebra/bookvol10.4.spad.pamphlet src/algebra/bookvol10.3.spad.pamphlet 
	rm -f src/interp/Makefile.pamphlet.new debian/test_results
	rm -f libdb.text src/algebra/Makefile.help src/algebra/ELTAB.nrlib/ELTAB.data
	rm -f src/interp/bookvol10.5.pamphlet src/algebra/*.spad src/lib/Makefile.pdf books/tangle1.lisp
	dh_clean 

debian/axiom.install: 
	find mnt/linux -name "*.o" | awk '{a=$$1;sub("/[^/]*$$","",a);sub("mnt/linux/","",a);printf("%s usr/lib/$(PD)/%s\n",$$1,a);}' >>$@
	find mnt/linux -name "*.lsp" | awk '{a=$$1;sub("/[^/]*$$","",a);sub("mnt/linux/","",a);printf("%s usr/lib/$(PD)/%s\n",$$1,a);}' >>$@
	find mnt/linux/bin/* -maxdepth 0 -type f | grep -v /h[yt] | grep -v /view | grep -v /gcl | grep -v html | awk '{a=$$1;sub("/[^/]*$$","",a);sub("mnt/linux/","",a);printf("%s usr/lib/$(PD)/%s\n",$$1,a);}' >>$@
	find mnt/linux/lib/* | grep -v copyright | grep -v /h[yt] | grep -v /view | grep -v /graph | awk '{a=$$1;sub("/[^/]*$$","",a);sub("mnt/linux/","",a);printf("%s usr/lib/$(PD)/%s\n",$$1,a);}' >>$@
	echo debian/bin/axiom usr/bin >>$@
	echo debian/axiom.1 usr/share/man/man1 >>$@

debian/axiom-graphics.install: 
	find mnt/linux/bin/view* mnt/linux/lib/view* | awk '{a=$$1;sub("/[^/]*$$","",a);sub("mnt/linux/","",a);printf("%s usr/lib/$(PD)/%s\n",$$1,a);}' >>$@

debian/axiom-graphics-data.install: 
	echo mnt/linux/lib/graph | awk '{a=$$1;sub("/[^/]*$$","",a);sub("mnt/linux/","",a);printf("%s usr/lib/$(PD)/%s\n",$$1,a);}' >>$@
	echo mnt/linux/doc/viewports | awk '{printf("%s usr/share/doc/axiom-doc\n",$$1);}' >>$@

debian/axiom-hypertex.install: 
	find mnt/linux/bin/h[ty]* mnt/linux/lib/h[ty]* | awk '{a=$$1;sub("/[^/]*$$","",a);sub("mnt/linux/","",a);printf("%s usr/lib/$(PD)/%s\n",$$1,a);}' >>$@

debian/axiom-hypertex-data.install: 
	echo mnt/linux/doc/hypertex | awk '{printf("%s usr/share/doc/axiom-doc\n",$$1);}' >>$@
	echo mnt/linux/doc/ps | awk '{printf("%s usr/share/doc/axiom-doc\n",$$1);}' >>$@
	echo mnt/linux/doc/bitmaps | awk '{printf("%s usr/share/doc/axiom-doc\n",$$1);}' >>$@
	echo mnt/linux/doc/ht.db | awk '{printf("%s usr/share/doc/axiom-doc\n",$$1);}' >>$@
	find mnt/linux/doc/*.pamphlet | awk '{printf("%s usr/share/doc/axiom-doc\n",$$1);}' >>$@

debian/axiom.links:
	echo usr/share/doc/axiom/copyright usr/lib/$(PD)/lib/copyright >>$@
#	echo usr/bin/axiom usr/bin/AXIOMsys >>$@
	echo usr/share/man/man1/axiom.1 usr/share/man/man1/AXIOMsys.1 >>$@

debian/axiom-doc.install: debian/axiom-hypertex-data.install debian/axiom-graphics-data.install
	find mnt/linux/doc/* -maxdepth 0 | \
		$(shell cat $^ | awk '{print "grep -v " $$1 " | "}') \
		awk '{printf("%s usr/share/doc/axiom-doc\n",$$1);}' >>$@
	echo debian/axiom_tutorialu usr/share/doc/axiom-doc >>$@

debian/axiom-doc.links:
	echo usr/share/doc/axiom-doc usr/lib/$(PD)/doc >>$@

debian/axiom-source.install:
	echo mnt/linux/src usr/share/$(PD) >>$@

debian/axiom-source.links:
	echo usr/share/$(PD)/src usr/lib/$(PD)/src >>$@

debian/axiom-test.install:
	echo mnt/linux/input usr/share/$(PD) >>$@
	echo debian/test_results usr/share/doc/axiom-test >>$@
	echo debian/bin/axiom-test usr/bin >>$@
	echo debian/axiom-test.1 usr/share/man/man1 >>$@

debian/axiom-test.links:
	echo usr/share/$(PD)/input usr/lib/$(PD)/input >>$@

debian/axiom-databases.install:
	find mnt/linux -name "*.daase" | awk '{a=$$1;sub("/[^/]*$$","",a);sub("mnt/linux/","",a);printf("%s usr/share/$(PD)/%s\n",$$1,a);}' >>$@
	find mnt/linux -name "*.text" | awk '{a=$$1;sub("/[^/]*$$","",a);sub("mnt/linux/","",a);printf("%s usr/share/$(PD)/%s\n",$$1,a);}' >>$@
	find mnt/linux -name "*.data" | awk '{a=$$1;sub("/[^/]*$$","",a);sub("mnt/linux/","",a);printf("%s usr/share/$(PD)/%s\n",$$1,a);}' >>$@

debian/axiom-databases.links:
	find mnt/linux -name "*.daase" | awk '{a=$$1;sub("mnt/linux/","",a);printf("usr/share/$(PD)/%s usr/lib/$(PD)/%s\n",a,a);}' >>$@
	find mnt/linux -name "*.text" | awk '{a=$$1;sub("mnt/linux/","",a);printf("usr/share/$(PD)/%s usr/lib/$(PD)/%s\n",a,a);}' >>$@
	find mnt/linux -name "*.data" | awk '{a=$$1;sub("mnt/linux/","",a);printf("usr/share/$(PD)/%s usr/lib/$(PD)/%s\n",a,a);}' >>$@

debian/axiom-tex.install:
	echo books/axiom.sty | awk '{a=$$1;sub("/[^/]*$$","",a);sub("mnt/linux/","",a);printf("%s usr/share/texmf/tex/plain/misc\n",$$1);}' >>$@


debian/axiom_tutorialu: debian/axiom_tutorial
	cp -a $< $@
	rm -f $@/images/*.uu

GIFS:=$(shell ls -1 debian/axiom_tutorial/images/*.gif.uu | sed -e "s,\.uu$$,,1" -e "s,axiom_tutorial,axiom_tutorialu,1")
$(GIFS): debian/axiom_tutorialu/images/%.gif: debian/axiom_tutorial/images/%.gif.uu debian/axiom_tutorialu
	cd $(@D) && uudecode ../../../$<

debian/bin/axiom: mnt/linux/bin/axiom debian/run-sman.sh
	mkdir -p $(@D)
	cat $< | sed -e "s,^SPADDEFAULT=\(.*\),SPADDEFAULT=\1;export AXIOM=/usr/lib/axiom-$(VER);export PATH=\$$AXIOM/bin:\$$PATH,1" \
		     -e 	"s,^otheropts=.*,otheropts=\"\$$([ -x /usr/lib/axiom-$(VER)/bin/hypertex ] || echo -noht) \$$([ -x /usr/lib/axiom-$(VER)/lib/viewman ] || echo -nogr)\",1" \
		     -e "s,^exec[ \t]\(.*\),#exec \1,1"	 >$@
	cat debian/run-sman.sh >>$@
	chmod +x $@

debian/axiom.1: debian/axiom.1.in
	mkdir -p $(@D)
	cat $< | sed "s,@VER@,$(VER),g"  >$@
	chmod +x $@

debian/bin/axiom-test: debian/axiom-test.sh
	mkdir -p $(@D)
	cat $< | sed "s,@PD@,$(PD),g"  >$@
	chmod +x $@

#mnt/linux/doc/book.pdf: mnt/linux/doc/book.dvi
#	cd $(@D) && dvipdfm $(subst .pdf,,$(@F))

debian/test_results: build
	rm -f $@
	find -name "*.output" -exec cat {} \; >>$@

install: DH_OPTIONS=
install: build $(GIFS)  debian/axiom.1 debian/bin/axiom debian/bin/axiom-test \
	 debian/test_results $(IFS) # mnt/linux/doc/book.pdf
	dh_testdir
	dh_testroot
	dh_prep
	dh_installdirs

	for i in sty data text daase; do find mnt/linux -type f -name "*.$$i" -exec chmod -x {} \; ; done
	find mnt/linux/doc -type f -exec chmod -x {} \;
	find mnt/linux -name "summary" -exec chmod -x {} \;
	for i in $$(find mnt/linux -name CVS -type d); do rm -rf $$i ; done

# Build architecture-independent files here.
binary-indep: DH_OPTIONS:=-i
binary-indep: build install
	dh_testdir
	dh_testroot
	dh_installchangelogs changelog
	dh_installdocs
	dh_installexamples
	dh_install
	dh_installmenu
	dh_installtex -p axiom-tex
#	dh_installdebconf	
#	dh_installlogrotate
#	dh_installemacsen
#	dh_installpam
#	dh_installmime
#	dh_installinit
#	dh_installcron
#	dh_installinfo
	dh_installman
	dh_link
	dh_strip $(NO_STRIP)
	dh_compress -X.xhtml $(shell cat debian/axiom-hypertex-data.install debian/axiom-graphics-data.install | grep axiom-doc | sed 's,mnt/linux/doc/\([^ ]*\).*,-Xaxiom-doc/\1,g')
	dh_fixperms
#	dh_perl
#	dh_python
#	dh_makeshlibs
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

# Build architecture-dependent files here.
binary-arch: DH_OPTIONS:=-a
binary-arch: build install
	dh_testdir
	dh_testroot
	dh_installchangelogs changelog
	dh_installdocs
	dh_installexamples
	dh_install
	dh_installmenu
#	dh_installdebconf	
#	dh_installlogrotate
#	dh_installemacsen
#	dh_installpam
#	dh_installmime
#	dh_installinit
#	dh_installcron
#	dh_installinfo
	dh_installman
	dh_link
	dh_strip $(NO_STRIP)
	dh_compress
	dh_fixperms
#	dh_perl
#	dh_python
#	dh_makeshlibs
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

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