#!/usr/bin/make -f
## ----------------------------------------------------------------------
## debian/rules : package script for expat
## ----------------------------------------------------------------------

## uncomment this to turn on verbose mode
#export DH_VERBOSE=1

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

ifneq (,$(filter stage1, $(DEB_BUILD_PROFILES)))
  without_docbook = --without-docbook
  build_targets = lib xmlwf tests examples
endif

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

ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
	CONFFLAGS = --build=$(DEB_HOST_GNU_TYPE)
else
	CONFFLAGS = --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE)
endif

ifneq (,$(filter $(DEB_HOST_ARCH_OS), kfreebsd hurd))
	CONFFLAGS += --with-libbsd
endif

# -pthread -D_REENTRANT #551079
CFLAGS  = `dpkg-buildflags --get CFLAGS`
CFLAGS  += -Wall

LDFLAGS = -Wl,-Bsymbolic-functions
LDFLAGS += `dpkg-buildflags --get LDFLAGS`

CPPFLAGS = `dpkg-buildflags --get CPPFLAGS`

UPACKAGE = $(shell dh_listpackages | grep -- -udeb$$)

COMMA = ,
ifneq (,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS))))
  NJOBS := -j $(subst parallel=,,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS))))
endif

config-common-stamp:
	dh_testdir
	rm -rf $(CURDIR)/src $(CURDIR)/srcw
	mkdir -p $(CURDIR)/src $(CURDIR)/srcw
	tar cf - expat/* | tar --strip-components=1 -C $(CURDIR)/src   -xf -
	tar cf - expat/* | tar --strip-components=1 -C $(CURDIR)/srcw -xf -
	sed -i -e "s,libexpat\.la,libexpatw.la," \
		-e "s,libexpat_la,libexpatw_la," \
		$$(find srcw -name Makefile.am)
	cd $(CURDIR)/src ; ./buildconf.sh
	cd $(CURDIR)/srcw; ./buildconf.sh
	touch $@

build/config.status: config-common-stamp
	dh_testdir
	(mkdir -p $(@D); cd $(@D); CFLAGS="$(CFLAGS)" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" \
	 ../src/configure $(CONFFLAGS) --prefix=/usr --mandir=\$${prefix}/share/man --libdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH) $(without_docbook))

buildw/config.status: config-common-stamp
	dh_testdir
	(mkdir -p $(@D); cd $(@D); CFLAGS="$(CFLAGS) -DXML_UNICODE" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" \
	 ../srcw/configure $(CONFFLAGS) --prefix=/usr --mandir=\$${prefix}/share/man --libdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH) $(without_docbook))

clean:
	dh_testdir
	dh_testroot
	rm -rf src/ srcw/
	rm -rf build/ buildw/
	rm -rf debian/tmp/
	dh_autoreconf_clean
	dh_clean config-common-stamp build-stamp debian/xmlwf.1

build: build-stamp
build-arch: build-stamp
build-indep: build-stamp
build-stamp: build/config.status buildw/config.status
	dh_testdir
	$(MAKE) $(NJOBS) -C build/ $(build_targets)
	$(MAKE) $(NJOBS) -C buildw/lib all
#	docbook-to-man doc/xmlwf.sgml > debian/xmlwf.1
	$(MAKE) -C build/ VERBOSE=1 check
	touch $@

install: build
	dh_testdir
	dh_testroot
	dh_prep
	dh_installdirs
ifneq (,$(filter stage1, $(DEB_BUILD_PROFILES)))
	# fake manpage
	mkdir -p $(CURDIR)/debian/tmp/usr/share/man/man1/
	echo '.SH NAME\nxmlwf - dummy manpage' \
		>$(CURDIR)/debian/tmp/usr/share/man/man1/xmlwf.1
endif
	$(MAKE) -C build/ install DESTDIR=$(CURDIR)/debian/tmp
	$(MAKE) -C buildw/lib install DESTDIR=$(CURDIR)/debian/tmp APIHEADER=
	# Move libexpat.so.* to /lib so that zfsutils can use it.
	mkdir -p $(CURDIR)/debian/tmp/lib/$(DEB_HOST_MULTIARCH)
	mv $(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libexpat.so.* \
		$(CURDIR)/debian/tmp/lib/$(DEB_HOST_MULTIARCH)/
	for i in $(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libexpat.so ; do \
		dest=$$(readlink $$i) ; \
		rm -f $$i ; \
		ln -s /lib/$(DEB_HOST_MULTIARCH)/$$dest $$i ; \
	done
	mkdir -p debian/tmp/usr/include/$(DEB_HOST_MULTIARCH)
	mv debian/tmp/usr/include/expat_config.h debian/tmp/usr/include/$(DEB_HOST_MULTIARCH)/.

binary-indep: build install
binary-arch: build install
	dh_testdir
	dh_testroot
	dh_install -a --sourcedir=debian/tmp
	rm debian/libexpat1-dev/usr/share/doc/libexpat1-dev/expat.html/Makefile.am
	dh_installdocs -a
	dh_installman -a
#	dh_installman -pexpat debian/xmlwf.1
	dh_installexamples -a
	dh_installchangelogs -a expat/Changes
	dh_link -a
	dh_strip -a
	dh_compress -a
	dh_fixperms -a
	chmod 644 $(CURDIR)/debian/libexpat1-dev/usr/share/doc/libexpat1-dev/examples/* \
	          $(CURDIR)/debian/libexpat1-dev/usr/share/aclocal/*
	dh_makeshlibs -a -V $(if $(with_udeb),--add-udeb=$(UPACKAGE))
	dh_installdeb -a
	dh_shlibdeps -a -l $(CURDIR)/debian/libexpat1/usr/lib/$(DEB_HOST_MULTIARCH)
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a

binary: binary-indep binary-arch

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