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

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

unexport CPPFLAGS CFLAGS CXXFLAGS LDFLAGS

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++
CPPFLAGS = $(shell dpkg-buildflags --get CPPFLAGS)
CFLAGS   = $(shell dpkg-buildflags --get CFLAGS)
LDFLAGS  = $(shell dpkg-buildflags --get LDFLAGS)

ifeq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS)))
  with_check = yes
else
  # override buildd admins to run the testsuite anyway ...
  ifneq (,$(filter $(DEB_HOST_ARCH), m68k powerpcspe sh4))
    with_check = yes
  endif
endif

ifeq (,$(filter noudeb, $(DEB_BUILD_PROFILES)))
  with_udeb = yes
endif

major=8
p=libffi$(major)

configure: stamp-configure
stamp-configure:
	-env | grep PROFILE
	dh_testdir
	dh_autoreconf
	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 \
		--enable-pax_emutramp \
		--disable-exec-static-tramp \
		--without-gcc-arch \
		CC="$(CC)" \
		CXX="$(CXX)" \
		CPPFLAGS="$(CPPFLAGS)" \
		CFLAGS="$(CFLAGS)" \
		CCASFLAGS="$(CFLAGS) -Wa,--gdwarf-5" \
		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_autoreconf_clean
	dh_clean 

install: build
	dh_testdir
	dh_testroot
	dh_prep
	dh_installdirs -a
	$(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)
	cp README.md 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 -a --sourcedir=debian/tmp

	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 -a
	rm -f debian/libffi$(major)/usr/share/doc/libffi$(major)/changelog
	dh_installdocs -a
	dh_installinfo -plibffi-dev doc/libffi.info
	rm -f debian/libffi-dev/usr/share/info/dir*
	rm -rf debian/libffi-dev/usr/share/doc/libffi-dev
	ln -s libffi$(major) debian/libffi-dev/usr/share/doc/libffi-dev
	dh_strip -a
	dh_compress -a
	dh_fixperms -a
	dh_makeshlibs -plibffi$(major) $(if $(with_udeb),--add-udeb=libffi$(major)-udeb)
	dh_makeshlibs -a -Nlibffi$(major)
	dh_installdeb -a
	dh_shlibdeps -a
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a

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