#!/usr/bin/make -f 
# Sample debian/rules that uses debhelper.
# GNU copyright 1997 to 1999 by Joey Hess.
# Adapted for the PARI Debian package by Bill Allombert 2001-2011

# 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
#Architecture 
#I want to support "fakeroot debian/rules binary" way of building.
#PARI use sparcv7 for Debian/sparc and sparcv9 for Debian/sparc64
#
PARI_CPU:=$(shell dpkg-architecture -qDEB_HOST_GNU_CPU)
PARI_CPU:=$(if $(findstring $(PARI_CPU),sparc),sparcv8_micro,$(PARI_CPU))
PARI_CPU:=$(if $(findstring $(PARI_CPU),mipsel),mips,$(PARI_CPU))
PARI_CPU:=$(if $(findstring $(PARI_CPU),powerpc),ppc,$(PARI_CPU))

PARI_SYSTEM:=$(shell dpkg-architecture -qDEB_HOST_GNU_SYSTEM)
PARI_SYSTEM:=$(patsubst linux-gnu%,linux,$(PARI_SYSTEM))
PARI_SYSTEM:=$(patsubst %-gnu,gnu%,$(PARI_SYSTEM))
DEBIAN_ARCH:=$(shell dpkg-architecture -qDEB_HOST_ARCH)

DBGCFLAGS = -g -O0 -Wall -fno-strict-aliasing
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
CFLAGS = $(DBGCFLAGS)
else
CFLAGS = -g -O3 -Wall -fomit-frame-pointer -fno-strict-aliasing
endif

major = 5
libpkg = libpari-gmp3

build: build-arch 

config: config-stamp
config-stamp:
	dh_testdir
	CC=cc CFLAGS="$(CFLAGS)" \
	  ./Configure \
            --prefix=/usr --host=$(PARI_CPU)-$(PARI_SYSTEM) \
            --builddir=obj-dyn --graphic=X11 --with-gmp 
	CC=cc CFLAGS="$(CFLAGS)" \
	  ./Configure \
            --prefix=/usr --host=$(PARI_CPU)-$(PARI_SYSTEM) \
            --builddir=obj-sta --graphic=X11 --with-gmp
	CC=cc CFLAGS="$(DBGCFLAGS)" \
	  ./Configure \
            --prefix=/usr --host=$(PARI_CPU)-$(PARI_SYSTEM) \
            --builddir=obj-dbg --graphic=X11 --with-gmp
	touch config-stamp

build-arch: build-arch-stamp
build-arch-stamp: config-stamp
	$(MAKE) -C obj-dyn lib-dyn "LIBS=-lc -lm -lgmp"
	$(MAKE) -C obj-sta lib-sta DLCFLAGS=""
	$(MAKE) -C obj-dyn gp-dyn
ifeq (,$(findstring notest,$(DEB_BUILD_OPTIONS)))
	$(MAKE) dobench -C obj-dyn
	$(MAKE) -C obj-sta gp-sta
	$(MAKE) dobench -C obj-sta
endif
	touch build-arch-stamp

build-indep: build-indep-stamp
build-indep-stamp: config-stamp
	$(MAKE) doc docpdf
	touch build-indep-stamp
clean:
	dh_testdir
	dh_testroot
	rm -f build-arch-stamp build-indep-stamp config-stamp
	if [ -f doc/Makefile ]; then $(MAKE) clean -C doc; fi
	-rm -rf obj-dyn obj-sta obj-dbg
	-rm -f gp Makefile* examples/Makefile* 
	-rm -f doc/Makefile doc/gphelp doc/paricfg.tex
	-rm -f emacs/pari-conf.el misc/tex2mail
	-rm -f pari.log
	-rm -f Odos/paricfg.h
	-rm -f src/desc/pari.desc
	dh_clean -Xnumber_theoretical/core

install: install-indep install-arch
install-indep:
	dh_testdir
	dh_testroot
	dh_clean -k -i -Xnumber_theoretical/core
	dh_installdirs -i
	$(MAKE) -C obj-dyn install-doc install-docpdf DESTDIR=`pwd`/debian/pari-doc/
	gzip --best debian/pari-doc/usr/share/pari/doc/*.pdf
	#But why this files are installed ??
	rm debian/pari-doc/usr/share/pari/doc/Makefile
	dh_install -i
	dh_installman -i

install-arch:
	dh_testdir
	dh_testroot
	dh_clean -k -a -Xnumber_theoretical/core
	dh_installdirs -a
	$(MAKE) -C obj-dyn install-bin-dyn install-man LIBS="-lm -ldl" RLLIBS=-lreadline STRIP=true RUNPTH_FINAL= DESTDIR=`pwd`/debian/pari-gp
	rm debian/pari-gp/usr/share/man/man1/gphelp.1
	rm -r debian/pari-gp/usr/lib
	$(MAKE) -C obj-dyn install-lib-dyn DESTDIR=`pwd`/debian/$(libpkg)
	$(MAKE) -C obj-sta install-lib-sta DESTDIR=`pwd`/debian/libpari-dev
	$(MAKE) -C obj-dyn install-include install-cfg DESTDIR=`pwd`/debian/libpari-dev
	mv debian/$(libpkg)/usr/lib/libpari.so debian/libpari-dev/usr/lib/
	dh_install -a
	install -p -m 644 obj-dbg/pari.cfg debian/libpari-dev/usr/lib/pari/pari.cfg.dbg
	install -p -m 644 debian/misc-readme debian/pari-gp/usr/share/doc/pari-gp/misc/README.Debian
	install -p -m 644 debian/gprc.dft debian/pari-gp/etc/gprc
	dh_strip -a --dbg-package=libpari-dbg
	dh_makeshlibs -a -V '$(libpkg) (>= 2.5.0-1)'
	dh_shlibdeps -a -l debian/$(libpkg)/usr/lib -L$(libpkg)

#Must not depend on anything. This is to be called by binary-arch/binary-indep
# in another 'make' thread.
binary-common:
	dh_testdir
	dh_testroot
	dh_installdocs
	dh_installexamples
	dh_installmenu
	dh_installchangelogs CHANGES
	dh_link
	dh_compress -Xparimacro -X.el
	dh_fixperms
	dh_installdeb
	dh_perl
	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: clean binary-indep binary-arch binary config 
.PHONY: install install-indep install-arch 
.PHONY: build build-arch build-indep
