#!/usr/bin/make -f
# Sample debian/rules that uses debhelper. 
# GNU copyright 1997 by Joey Hess.
# Modified for GAP by Bill Allombert 2002-2013

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

# These are used for cross-compiling and for saving the configure script
# from having to guess our platform (since we know it already)
DEB_HOST_GNU_CPU    ?= $(shell dpkg-architecture -qDEB_HOST_GNU_CPU)
DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DEB_HOST_MULTIARCH  ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
export FORCE_SOURCE_DATE = 1
export SOURCE_DATE_EPOCH = $(shell date -d "$$(dpkg-parsechangelog -SDate)" +%s)

triplet = $(DEB_HOST_MULTIARCH)
libtriplet = usr/lib/$(triplet)
gaptriplet = $(libtriplet)/gap
library = libgap7

#strip is handled by dh_strip
CFLAGS = -g -Wall
ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
CFLAGS += -O0
else
CFLAGS += -O2
endif
export CFLAGS

LDFLAGS = -Wl,-z,relro
ifneq (,$(filter terse, $(DEB_BUILD_OPTIONS)))
SILENT=""
else
SILENT="V=1"
endif

ifeq ($(shell dpkg-vendor --derives-from Ubuntu && echo yes),yes)
	SUBSTVARS = -Vdist:Recommends="gap"
else
	SUBSTVARS = -Vdist:Recommends="gap-online-help"
endif

config.status: configure
	dh_testdir
	GAPHOST=$(DEB_HOST_MULTIARCH) LDFLAGS=$(LDFLAGS) ./configure --host=$(DEB_HOST_GNU_TYPE) --target=$(DEB_HOST_GNU_TYPE)  --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-gmp=system SHELL=/bin/sh GREP=/bin/grep SED=/bin/sed DD=/bin/dd --enable-static

prep: prep-stamp
prep-stamp:
	mkdir pkg
	ln -s /usr/share/gap/pkg/GAPDoc pkg
	ln -s /usr/share/gap/pkg/AtlasRep pkg
	ln -s /usr/share/gap/pkg/CTblLib pkg
	ln -s /usr/share/gap/pkg/ctbllib pkg
	ln -s /usr/share/gap/pkg/TomLib pkg
	ln -s /usr/share/gap/pkg/SmallGrp pkg
	ln -s /usr/share/gap/pkg/PrimGrp pkg
	ln -s /usr/share/gap/pkg/TransGrp pkg
	touch prep-stamp

build-arch:  config.status build-arch-stamp
build-arch-stamp: prep-stamp
	dh_testdir
	$(MAKE) all libgap.la $(SILENT)
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
	env GAP_DIR=`pwd` LC_CTYPE=C.UTF-8 \
          $(MAKE) check $(SILENT)
endif
	$(MAKE) -C debian/doc gap.1
	touch build-arch-stamp

build-indep: config.status  build-indep-stamp
build-indep-stamp: build-arch-stamp
	dh_testdir
	env GAP_DIR=`pwd` LC_CTYPE=C.UTF-8 $(MAKE) doc $(SILENT)
	$(MAKE) -C debian/doc

	touch build-indep-stamp

build: build-arch build-indep

clean:
	dh_testdir
	dh_testroot
	rm -f build-arch-stamp build-indep-stamp prep-stamp

	cp -p configure configure.good && $(MAKE) distclean && mv configure.good configure
	cd cnf && rm -f GAP-VERSION-FILE GAP-CFLAGS GAP-CXXFLAGS GAP-CPPFLAGS GAP-LDFLAGS GAP-LIBS GAP-OBJS

	$(MAKE) -C doc clean
	$(MAKE) -C debian/doc clean

	rm -f sysinfo.gap 
	rm -rf bin pkg .libs
	rm -f debian/gap.tst
	rm -f configure.lineno

	dh_clean

install: install-arch install-indep
install-arch: build-arch
	dh_testdir -a
	dh_testroot -a
	dh_prep -a
	dh_installdirs -a
	dh_install -a
	dh_install -p gap-dev obj ${gaptriplet}
	rm -r debian/gap-dev/${gaptriplet}/obj/*/.deps
	rm -r debian/gap-dev/${gaptriplet}/obj/src/*.o
	$(MAKE) install-headers DESTDIR=$(CURDIR)/debian/libgap-dev/ $(SILENT)
	dh_install -p libgap-dev gen/config.h /usr/include/${triplet}/gap/
	(cd debian/libgap-dev/usr/include/${triplet}/gap/ && mv config.h config-arch.h)
	echo '#include <gap/config-arch.h>' > debian/libgap-dev/usr/include/gap/config.h
	dh_link -p gap-dev ${gaptriplet}/obj /usr/lib/gap/`echo bin/*-default*`
	chmod 644 debian/libgap-dev/usr/include/gap/config.h
	install -m 755 -d debian/gap-dev/usr/include/gap/src
	for i in $$(cd debian/libgap-dev && echo usr/include/gap/*.h); do \
	  dh_link -p gap-dev $$i usr/include/gap/src/$$(basename $$i); done
	install -m 755 doc/manualindex debian/gap-core/usr/share/gap/etc
	dh_install -p gap-core sysinfo.gap usr/lib/gap
	dh_install -p gap-core sysinfo.gap ${gaptriplet}
	$(MAKE) install-libgap DESTDIR=$(CURDIR)/debian/${library}/ libdir=/${libtriplet} $(SILENT)
	cd debian/${library}/${libtriplet} && rm libgap.a libgap.la libgap.so
	$(MAKE) install-libgap DESTDIR=$(CURDIR)/debian/libgap-dev/ libdir=/${libtriplet} $(SILENT)
	cd debian/libgap-dev/${libtriplet} && rm libgap.la libgap.so.*
	install -m 755 -d debian/gap-core/${gaptriplet}
	install -m 755 bin/*/gap debian/gap-core/${gaptriplet}
	install -m 755 libtool debian/gap-core/${gaptriplet}
	# ah libtool, libtool! Combien de hack ont été commis en ton nom
	perl -pi -e "s,^build_old_libs=yes,build_old_libs=no," \
	         debian/gap-core/${gaptriplet}/libtool
	install -m 755 debian/gap.debian debian/gap-core/usr/bin/gap
	perl -pi -e "s,\@GAP_PRG\@,/${gaptriplet}/gap,g" \
                 debian/gap-core/usr/bin/gap
	install -m 755 bin/*/gac debian/gap-dev/usr/bin/gac
	perl -pi -e "s,\@GAP_BIN\@,/${gaptriplet},g" \
                 debian/gap-dev/usr/bin/gac

	dh_installdocs -a
	dh_installdocs -p gap debian/changelog-*.Debian
	dh_installexamples -a
	dh_installmenu -a
	dh_installman -a
	dh_installinfo -a
	dh_installchangelogs  -a CHANGES.md

install-indep: build-indep
	dh_testdir -i
	dh_testroot -i
	dh_prep -i

	$(MAKE) -C doc install-pdf install-html "DESTDIR=../debian/gap-doc"
	$(MAKE) -C doc install-help "DESTDIR=../debian/gap-online-help"
	$(MAKE) -C debian/doc install "DESTDIR=../gap-doc"
	
	dh_installdirs -i
	dh_install -i
	dh_installdocs -p gap-doc CITATION CONTRIBUTING.md README.md
	dh_installdocs -i --all debian/changelog-*.Debian
	dh_installexamples -i 
	dh_installinfo -i
	dh_installchangelogs  -i CHANGES.md

# Build architecture-independent files here.
# Pass -i to all debhelper commands in this target to reduce clutter.
binary-indep: build-indep install-indep
	dh_testdir -i
	dh_testroot -i
	dh_link -i
	dh_compress -i 
	dh_fixperms -i
	dh_installdeb -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

# Build architecture-dependent files here.
binary-arch: build-arch install-arch
	dh_testdir -a
	dh_testroot -a
	dh_strip -a
	dh_link -a
	dh_compress -a
	dh_fixperms -a
	dh_makeshlibs -p $(library) -V '$(library) (>= 4.11.0-1)'
	dh_shlibdeps -a
	dh_installdeb -a
	dh_gencontrol -a -- $(SUBSTVARS)
	dh_md5sums -a
	dh_builddeb -a

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