#!/usr/bin/make -f
# -*- makefile -*-

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

SHELL = /bin/bash

vafilt = $(subst $(2)=,,$(filter $(2)=%,$(1)))
DPKG_VARS := $(shell dpkg-architecture)
DEB_HOST_ARCH		?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH)
DEB_HOST_GNU_CPU	?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_CPU)
DEB_HOST_GNU_TYPE	?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE	?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_GNU_TYPE)
DEB_HOST_MULTIARCH	?= $(call vafilt,$(DPKG_VARS),DEB_HOST_MULTIARCH)

CC  = $(DEB_HOST_GNU_TYPE)-gcc
CXX = $(DEB_HOST_GNU_TYPE)-g++
CFLAGS = $(shell dpkg-buildflags --get CFLAGS)
LDFLAGS = $(shell dpkg-buildflags --get LDFLAGS)

distribution := $(shell lsb_release -is)
distrelease  := $(shell lsb_release -cs)
# On non official archives, "lsb_release -cs" default to "n/a". Assume
# sid in that case 
ifeq ($(distrelease),n/a)
distrelease     := sid
endif

ifeq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS)))
  with_check = yes
endif

major=6
p=libffi$(major)

configure: stamp-configure
stamp-configure:
	dh_testdir
	rm -rf build
	mkdir -p build
	cd build && ../configure \
		--host=$(DEB_HOST_GNU_TYPE) \
		--build=$(DEB_BUILD_GNU_TYPE) \
		--prefix=/usr \
		--mandir=\$${prefix}/share/man \
		--infodir=\$${prefix}/share/info \
		CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CCASFLAGS="$(CFLAGS) -Wa,--gdwarf2" LDFLAGS="-Wl,-z,defs $(LDFLAGS)"
	touch $@
#		--libdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH) \

build-arch: build
build-indep: build
build: stamp-build $(if $(filter yes, $(with_check)), stamp-check)
stamp-build: stamp-configure
	dh_testdir
ifeq ($(DEB_BUILD_PROFILE),stage1)
	touch doc/libffi.info
endif
	$(MAKE) -C build
ifneq ($(DEB_BUILD_PROFILE),stage1)
	$(MAKE) -C build html
endif
	touch $@

check: stamp-check
stamp-check: stamp-build
	dh_testdir
	-$(MAKE) -C build check 2>&1 | tee build/check.log
	touch $@

clean:
	dh_testdir
	dh_testroot
	rm -f stamp-*
	rm -rf build*
	rm -f doc/libffi.info
	dh_clean 

install: build
	dh_testdir
	dh_testroot
	dh_clean -k
	dh_installdirs -s $(bootstrap_dh_flags)
	$(MAKE) -C build DESTDIR=$(CURDIR)/debian/tmp install
	mkdir -p debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)
	-mv debian/tmp/usr/lib/* debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/.
	cp -p build/.libs/libffi_convenience.a \
		debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libffi_pic.a
	mkdir -p debian/libffi-dev/usr/share/doc/$(p)
ifneq ($(DEB_BUILD_PROFILE),stage1)
	cp -a build/doc/libffi.html debian/libffi-dev/usr/share/doc/$(p)/html
endif
	dh_install -s --sourcedir=debian/tmp $(bootstrap_dh_flags)

	mkdir -p debian/libffi-dev/usr/include/$(DEB_HOST_MULTIARCH)
	mv debian/libffi-dev/usr/include/*.h \
		debian/libffi-dev/usr/include/$(DEB_HOST_MULTIARCH)/


# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.

# Build architecture-dependent files here.
binary-arch: build install
	dh_testdir
	dh_testroot
	dh_installchangelogs -s $(bootstrap_dh_flags)
	dh_installdocs -s $(bootstrap_dh_flags)
	dh_installinfo -plibffi-dev doc/libffi.info
	rm -f debian/libffi-dev/usr/share/info/dir*
	cp -p ChangeLog debian/libffi-dev/usr/share/doc/libffi$(major)/changelog
	cp -p ChangeLog.* debian/libffi-dev/usr/share/doc/libffi$(major)/
ifeq ($(with_check),yes)
	cp -p build/check.log debian/libffi-dev/usr/share/doc/libffi$(major)/test_results_$(DEB_HOST_MULTIARCH).txt
endif
	rm -rf debian/libffi-dev/usr/share/doc/libffi-dev
	ln -s libffi$(major) debian/libffi-dev/usr/share/doc/libffi-dev
	rm -rf debian/libffi$(major)-dbg/usr/share/doc/libffi$(major)-dbg
	ln -s libffi$(major) debian/libffi$(major)-dbg/usr/share/doc/libffi$(major)-dbg
	dh_strip -s --dbg-package=libffi$(major)-dbg $(bootstrap_dh_flags)
	rm -f debian/libffi6-dbg/usr/lib/debug/usr/lib{,32,n32,64}/libffi.so.*
	dh_compress -s $(bootstrap_dh_flags)
	dh_fixperms -s $(bootstrap_dh_flags)
	dh_makeshlibs -plibffi$(major) --add-udeb=libffi$(major)-udeb
	dh_makeshlibs -s -Nlibffi$(major) $(bootstrap_dh_flags)
	dh_installdeb -s $(bootstrap_dh_flags)
	dh_shlibdeps -s $(bootstrap_dh_flags)
	dh_gencontrol -s $(bootstrap_dh_flags)
	dh_md5sums -s $(bootstrap_dh_flags)
	dh_builddeb -s $(bootstrap_dh_flags)

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