#!/usr/bin/make -f
# See debhelper(7) (uncomment to enable)
# output every command that modifies files on the build system.
#export DH_VERBOSE = 1


# see FEATURE AREAS in dpkg-buildflags(1)
export DEB_BUILD_MAINT_OPTIONS = hardening=+all,-pie

# see ENVIRONMENT in dpkg-buildflags(1)
# package maintainers to append CFLAGS
#export DEB_CFLAGS_MAINT_APPEND  = -Wall -pedantic
# package maintainers to append LDFLAGS
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed

# gnustep-base throws and catches exceptions across different shared libraries.
# Thus we use the shared libgcc.
export DEB_LDFLAGS_MAINT_APPEND = -shared-libgcc

# config.mk is provided by gnustep-make package
include /usr/share/GNUstep/debian/config.mk

# Install in debian/tmp
export DESTDIR=$(CURDIR)/debian/tmp

##### VERSION NUMBERS #################################

# Objective-C version :
v_objc := 4:5.4

# GNUstep Make version :
v_make	:= 2.6.8

# GNUstep Base version :
v_base	:= $(shell . ./Version; echo $$VERSION)

# GNUstep Base SONAME version :
sov_base := $(shell . ./Version; echo $$MAJOR_VERSION.$$MINOR_VERSION)

#### PACKAGES NAMES ###################################
p_com	= gnustep-base-common
p_run	= gnustep-base-runtime
p_lib	= libgnustep-base$(sov_base)
p_dev	= libgnustep-base-dev
p_dbg	= $(p_lib)-dbg
p_exam	= gnustep-base-examples
p_doc	= gnustep-base-doc

### DIRS ##############################################
GS_DTDs_DEBIAN = usr/share/xml/gnustep
GS_BASE_RESOURCES_UPSTREAM = $(GNUSTEP_SYSTEM_LIBRARY)/Libraries/gnustep-base/Versions/$(sov_base)/Resources
GS_BASE_RESOURCES_DEBIAN = usr/share/GNUstep/Libraries/gnustep-base/Versions/$(sov_base)/Resources

#####################################################"#

%:
	dh $@ \
	    --with autoreconf
	#   --builddirectory=build-gnustep-base


override_dh_auto_configure:
	# generate control file
	m4 \
	    -DV_OBJC='$(v_objc)' \
	    -DV_MAKE='$(v_make)' \
	    -DSOV_BASE='$(sov_base)' \
	    debian/templates/control.m4 > debian/control
	
	# generate maintainer scripts
	b=$(p_run); \
	for ext in preinst postinst prerm postrm; do \
	    if [ -f debian/templates/$$b.$$ext.in ]; then \
		sed -e 's,@GDOMAP@,$(GNUSTEP_SYSTEM_TOOLS)/gdomap,g' \
		    debian/templates/$$b.$$ext.in > debian/$$b.$$ext; \
	    fi; \
	done
	
	# generate gdomap.init file
		sed -e 's,@GDOMAP@,$(GNUSTEP_SYSTEM_TOOLS)/gdomap,g' \
		    -e 's,@GSMAKEFILES@,$(GNUSTEP_MAKEFILES),g' \
		    debian/templates/$(p_run).gdomap.init.in > debian/$(p_run).gdomap.init;
	
	# generate gnustep-base-runtime.install file
	sed -e 's,@GS_TOOLS@,$(GNUSTEP_SYSTEM_TOOLS),g' \
	    debian/templates/$(p_run).install.in > debian/$(p_run).install; \
		chmod a+x debian/$(p_run).install
	
	# generate gnustep-base-runtime.links file
	sed -e 's,@GS_MANPAGES@,$(GNUSTEP_SYSTEM_DOC_MAN),g' \
	    debian/templates/$(p_run).links.in > debian/$(p_run).links;
	
	# generate gnustep-base-common.install file
	sed -e 's,@GS_BASE_RESOURCES_UPSTREAM@,$(GS_BASE_RESOURCES_UPSTREAM),g' \
	    -e 's,@GS_BASE_RESOURCES_DEBIAN@,$(GS_BASE_RESOURCES_DEBIAN),g' \
	    debian/templates/$(p_com).install.in > debian/$(p_com).install
	
	# generate gnustep-base-common.links file
	sed -e 's,@GS_BASE_RESOURCES_DEBIAN@,$(GS_BASE_RESOURCES_DEBIAN),g' \
	    debian/templates/$(p_com).links.in > debian/$(p_com).links
	
	# generate gnustep-base-common.xmlcatalogs file
	sed -e 's,@GS_DTDs_DEBIAN@,/$(GS_DTDs_DEBIAN),g' \
	    debian/templates/$(p_com).xmlcatalogs.in > debian/$(p_com).xmlcatalogs
	
	# generate libgnustep-baseN.install file
	sed -e 's,@GS_LIBS@,$(GNUSTEP_SYSTEM_LIBRARIES),g' \
	    debian/templates/libgnustep-baseN.install.in > debian/$(p_lib).install
	
	# generate libgnustep-baseN-dbg.docs file
	cat debian/templates/libgnustep-baseN-dbg.docs.in > debian/$(p_dbg).docs
	
	# generate libgnustep-base-dev.install file
	sed -e 's,@GS_HEADERS@,$(GNUSTEP_SYSTEM_HEADERS),g' \
	    -e 's,@GS_LIBS@,$(GNUSTEP_SYSTEM_LIBRARIES),g' \
	    -e 's,@GS_MAKEFILES@,$(GNUSTEP_MAKEFILES),g' \
	    debian/templates/$(p_dev).install.in > debian/$(p_dev).install
	
	# generate gnustep-base-doc.install file
	sed -e 's,@GS_DOC@,$(GNUSTEP_SYSTEM_DOC),g' \
	    -e 's,@GS_INFO@,$(GNUSTEP_SYSTEM_DOC_INFO),g' \
	    debian/templates/$(p_doc).install.in > debian/$(p_doc).install; \
		chmod a+x debian/$(p_doc).install
	
	# Override the test for libkvm to ensure that /proc is used on
	# GNU/kFreeBSD even if libkvm-dev is installed (#593898).	
	dh_auto_configure -- \
	    ac_cv_lib_kvm_kvm_getenvv=no \
	    --disable-bfd  || (cat config.log; exit 1)

override_dh_auto_build-arch:
	# build shared libs
	dh_auto_build -- \
	    messages=yes \
	    doc=no
	
	# build dev/static lib
	dh_auto_build -- \
	    -C Source \
	    messages=yes \
	    doc=no \
	    shared=no
	
	# Rebuild Tools with hardening pie option
	$(MAKE) -C Tools clean
	dh_auto_build -- \
	    -C Tools \
	    messages=yes \
	    doc=no \
	    $(shell DEB_BUILD_MAINT_OPTIONS=hardening=+all dpkg-buildflags --export=cmdline)

override_dh_auto_build-indep:
	# build shared libs
	dh_auto_build -- \
	    messages=yes \
	    doc=no
	
	# build main doc. Make sure autogsdoc can find the libraries.
	LD_LIBRARY_PATH=$(CURDIR)/Source/obj:$$LD_LIBRARY_PATH \
	dh_auto_build -- \
	    -C Documentation \
	    message=yes \
	    doc=yes

override_dh_auto_test:
ifneq (,$(filter $(DEB_HOST_ARCH), armhf))
	-dh_auto_test -- \
	    messages=yes  || (cat Tests/tests.log; exit 1)
else
	dh_auto_test -- \
	    messages=yes  || (cat Tests/tests.log; exit 1)
endif

override_dh_auto_install-arch:
	# install shared version of libraries
	dh_auto_install -- \
	    messages=yes \
	    doc=no
	
	# install dev/static lib
	dh_auto_install -- \
	    -C Source \
	    messages=yes \
	    doc=no \
	    shared=no

override_dh_auto_install-indep:
	# install shared version of libraries
	dh_auto_install -- \
	    messages=yes \
	    doc=no
	
	# install doc
	dh_auto_install -- \
	    -C Documentation \
	    message=yes \
	    doc=yes

override_dh_auto_clean-indep:
	dh_auto_clean -- \
	    messages=yes \
	    doc=yes


override_dh_installcatalogs-indep:
	# Bug #637093
	dh_installxmlcatalogs -p$(p_com) -n
	dh_installcatalogs --remaining-packages

# Doc symlinks
override_dh_installdocs:
	dh_installdocs -p$(p_run) --link-doc=$(p_com)
	dh_installdocs -p$(p_lib) --link-doc=$(p_com)
	dh_installdocs -p$(p_dev) --link-doc=$(p_com)
	dh_installdocs -p$(p_exam) --link-doc=$(p_com)
	dh_installdocs --remaining-packages

# Install the gdomap  init script
override_dh_installinit:
	dh_installinit -p$(p_run) --name=gdomap

# Save debug symbols in -dbg package
override_dh_strip:
	dh_strip --dbg-package=$(p_dbg)

# Don't install gsdoc files.
override_dh_install:
	dh_install -p$(p_doc) -X.gsdoc -X.igsdoc
	dh_install --remaining-packages

# Install examples
override_dh_installexamples:
	dh_installexamples -p$(p_exam) -X.cvsignore -X.gdbinit -X.arch-ids
	dh_installexamples --remaining-packages

# Don't compress example source files
override_dh_compress:
	dh_compress -p$(p_exam) -X.m -XGNUmakefile
	dh_compress --remaining-packages
