#!/usr/bin/make -f

ORIG_SRC_VERSION = 6.0.0

DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk

# 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

ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
  NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
  JOBSFLAG = -j$(NUMJOBS)
endif

DEB_HOST_ARCH  ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
export DEB_HOST_GNU_TYPE  := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
export DEB_BUILD_GNU_TYPE := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
export DEB_HOST_MULTIARCH := $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)

MAKE_CHECK = : disabled make check
ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
  ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
    MAKE_CHECK = $(MAKE) check
  endif
endif

#export CFLAGS = -Wall -g 
#export LDFLAGS = -Wl,-Bsymbolic-functions

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


confflags = --prefix=/usr --enable-cxx

ifneq (,$(filter $(DEB_HOST_ARCH), amd64 kfreebsd-amd64 lpia))
  confflags += --disable-fat
else
  confflags += --enable-fat
endif

ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
  AR = ar
  confflags_build += --build $(DEB_BUILD_GNU_TYPE)
else
  AR = $(DEB_HOST_GNU_TYPE)-ar
  confflags_build += --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE) --target $(DEB_HOST_GNU_TYPE)
endif

ifneq (,$(findstring $(DEB_HOST_ARCH), x32))
  confflags += ABI=x32
endif

ifneq (,$(filter $(DEB_HOST_ARCH), mips64 mips64el))
  confflags += ABI=64
endif

confflags_ma = $(confflags) $(confflags_build) --libdir=/usr/lib/$(DEB_HOST_MULTIARCH)

CC   = $(DEB_HOST_GNU_TYPE)-gcc
CXX   = $(DEB_HOST_GNU_TYPE)-g++


get-orig-source: gmp-$(ORIG_SRC_VERSION).tar.xz
	tar --xz -xf $<
	mv gmp-$(ORIG_SRC_VERSION) gmp-$(ORIG_SRC_VERSION)+dfsg
	mkdir gmp-doc-$(ORIG_SRC_VERSION)
	mv gmp-$(ORIG_SRC_VERSION)+dfsg/doc/ gmp-doc-$(ORIG_SRC_VERSION)/
	mkdir gmp-$(ORIG_SRC_VERSION)+dfsg/doc
	touch gmp-$(ORIG_SRC_VERSION)+dfsg/doc/Makefile.am
	touch gmp-$(ORIG_SRC_VERSION)+dfsg/doc/Makefile.in
	cd gmp-$(ORIG_SRC_VERSION)+dfsg/ && autoreconf --force --install
	tar --xz -cf gmp_$(ORIG_SRC_VERSION)+dfsg.orig.tar.xz gmp-$(ORIG_SRC_VERSION)+dfsg
	tar --xz -cf gmp-doc_$(ORIG_SRC_VERSION).orig.tar.xz gmp-doc-$(ORIG_SRC_VERSION)
	rm -rf gmp-$(ORIG_SRC_VERSION)+dfsg gmp-doc-$(ORIG_SRC_VERSION)

gmp-$(ORIG_SRC_VERSION).tar.xz:
	wget ftp://ftp.gnu.org/gnu/gmp/$@

configure: configure-stamp
configure-stamp:
	mkdir -p build
	cd build && ../configure $(confflags_ma) \
	    AR=$(AR) CC="$(CC)" CFLAGS="$(CFLAGS)" \
	    CXX="$(CXX)" CXXFLAGS="$(CXXFLAGS)"
	touch $@

build: build-stamp
build-stamp: configure
	dh_testdir
	$(MAKE) $(JOBSFLAG) -C build
	$(MAKE_CHECK) -C build
	touch $@

clean:
	dh_testdir
	dh_testroot
	rm -rf build build-stamp
	dh_clean

install-prep:
	dh_testdir
	dh_testroot
	dh_prep
	dh_installdirs

install: build-stamp install-prep
	rm -rf debian/tmp
	# Install places gmp.h in 'includeexecdir' which is non-standard and cannot be set at compile time,
	# so override it at install.
	$(MAKE) DESTDIR=`pwd`/debian/tmp includeexecdir=/usr/include/$(DEB_HOST_MULTIARCH) -C build install

	dh_install -plibgmp10 usr/lib/*/libgmp.so.*
	dh_install -plibgmpxx4ldbl usr/lib/*/libgmpxx.so.*

	dh_install -plibgmp-dev usr/lib/*/lib*.so
	dh_install -plibgmp-dev usr/lib/*/lib*.a
	dh_install -plibgmp-dev usr/include

	# Install upstream ChangeLog, AUTHORS, NEWS, and README only in -dev package
	dh_installchangelogs -plibgmp-dev
	dh_installdocs -plibgmp-dev AUTHORS NEWS README

# This single target is used to build all the packages, all at once, or
# one at a time. So keep in mind: any options passed to commands here will
# affect _all_ packages. Anything you want to only affect one package
# should be put in another target, such as the install target.
binary-common:
	# See 633312, http://wiki.debian.org/ReleaseGoals/LAFileRemoval
	sed -i "/dependency_libs/ s/'.*'/''/" `find debian/ -name '*.la'`
	dh_testdir
	dh_testroot
	# User lower compatibility to avoid installing upstream changelog in all packages
	DH_COMPAT=6 dh_installchangelogs
	dh_installdocs
	dh_installexamples
	dh_installmenu
	dh_lintian
	dh_strip
	dh_link
	dh_compress
	dh_fixperms
	dh_makeshlibs
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

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

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

# Any other binary targets build just one binary package at a time.
binary-%: build install
	make -f debian/rules binary-common DH_OPTIONS=-p$*

build-arch: build
build-indep: build

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