#!/usr/bin/make -f

include /usr/share/dpkg/pkg-info.mk

#export DH_VERBOSE=1
upstream_commit = $(shell v="$(DEB_VERSION_UPSTREAM)"; echo $${v\#\#*~})

# take from control?
SOVERSION = 0
SONAME = libgnucap.so.${SOVERSION}

# upstream_commit_short = $(shell echo $(upstream_commit) | sed -e 's/\(........\).*/\1/')
#
UPSTREAM_REPO=git://git.savannah.gnu.org/gnucap.git
ORIG_TARBALL=../gnucap_${DEB_VERSION_UPSTREAM}.orig.tar.gz

DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)

CFLAGS := $(shell dpkg-buildflags --get CFLAGS)
CPPFLAGS := $(shell dpkg-buildflags --get CPPFLAGS)
CXXFLAGS := $(shell dpkg-buildflags --get CXXFLAGS)
LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS)

LN_S = ln -sf

libdir = /usr/lib/$(DEB_HOST_MULTIARCH)
pkglibdir = ${libdir}/gnucap${SOVERSION}
pcdir	= ${libdir}/pkgconfig

%:
	dh $@

override_dh_auto_configure:
	./configure --prefix=/usr
	sed -e '/GNUCAP_PLUGPATH/s#/lib/gnucap#'/lib/${DEB_HOST_MULTIARCH}/gnucap0'#' -i main/config.h

	sed -e '/^$$/s##triplet=$$\( g++ --print-multiarch \)#' -i main/gnucap.conf
	sed -e '/^libdir/s#=.*#=/usr/lib/$${triplet}#' -i main/gnucap.conf
	sed -e '/^pkglibdir/s#=.*#=$${libdir}/gnucap'${SOVERSION}'#' -i main/gnucap.conf
	sed -e '/^sysconfdir/s#=.*#=/etc#' -i main/gnucap-conf
	sed -e '/^sysconfdir/s#=.*#=/etc#' -i main/gnucap.conf

	sed -e 's#-ltermcap##' -i lib/Make2

	sed -i '/SYSTEMSTARTPATH/s/OS::getenv("PATH")/"\/etc"/' main/config.h

# workaround: these are hardwired, need to pass them back
LIB_LDFLAGS = -shared
EXEC_LDFLAGS = -rdynamic -L../../lib/O

override_dh_auto_build:
	$(MAKE) -C lib \
	        LDFLAGS="$(LIB_LDFLAGS) \
	                 -Wl,-soname -Wl,${SONAME} \
	                  $(LDFLAGS)" \
	        CPPFLAGS="$(CPPFLAGS)" \
	        CXXFLAGS="$(CXXFLAGS)"
	cd $(CURDIR)/lib/O; $(LN_S) libgnucap.so ${SONAME}

	$(MAKE) -C modelgen \
	        LDFLAGS="$(EXEC_LDFLAGS) $(LDFLAGS)" \
	        CPPFLAGS="$(CPPFLAGS)" \
	        CXXFLAGS="$(CXXFLAGS)"

	$(MAKE) -C apps \
	        LDFLAGS="$(LIB_LDFLAGS) $(LDFLAGS)" \
	        CPPFLAGS="$(CPPFLAGS)" \
	        CXXFLAGS="$(CXXFLAGS)"

	dh_auto_build --parallel -- \
	            LDFLAGS="$(EXEC_LDFLAGS) $(LDFLAGS)" \
	            CPPFLAGS="$(CPPFLAGS)" \
	            CXXFLAGS="$(CXXFLAGS)"
#	#$(MAKE) -C man html/index.html

# pick subdirectories one by one. options do not propagate correctly
# (this is a terrible mess...)

override_dh_auto_install:
	$(MAKE) install -C lib \
	        DESTDIR=$(CURDIR)/debian/tmp
	mkdir -p $(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)
	mv $(CURDIR)/debian/tmp/usr/lib/libgnucap.so \
	   $(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/${SONAME}
	cd $(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH); $(LN_S) ${SONAME} libgnucap.so

	$(MAKE) install -C modelgen \
	        DESTDIR=$(CURDIR)/debian/tmp

	$(MAKE) install -C apps \
	        INSTALL_DIR=${pkglibdir} install \
	        DESTDIR=$(CURDIR)/debian/tmp

	$(MAKE) install -C include \
	        DESTDIR=$(CURDIR)/debian/tmp

	$(MAKE) install -C main \
	        DESTDIR=$(CURDIR)/debian/tmp

	mkdir -p $(CURDIR)/debian/tmp/etc
	mv $(CURDIR)/debian/tmp/usr/etc/gnucap.conf \
	    $(CURDIR)/debian/tmp/etc/gnucap.conf

	# mv $(CURDIR)/debian/tmp/usr/bin/gnucap-conf $(CURDIR)/debian/tmp/${pkglibdir}/
	
	mkdir -p $(CURDIR)/debian/tmp/usr/share/doc/gnucap/examples
	cp tests/*.gc $(CURDIR)/debian/tmp/usr/share/doc/gnucap/examples
	cp tests/*.ckt $(CURDIR)/debian/tmp/usr/share/doc/gnucap/examples

	# workaround: some are duplicate (reported upstream, trivial),
	# remove a superset, for now.
	rm $(CURDIR)/debian/tmp/usr/share/doc/gnucap/examples/d_mos6*.ckt
	rm $(CURDIR)/debian/tmp/usr/share/doc/gnucap/examples/d_mos49.nand1.ckt

override_dh_auto_clean:
	dh_auto_clean
	rm -rf main/gnucap-conf
	rm -rf main/gnucap.conf
	rm -rf main/config.h
	rm -rf */Makefile -f
	rm -rf */Make2 -f
	rm -rf */O/ -rf

override_dh_installdocs:
	dh_installdocs
	# Remove LaTeX sources from HTML documentation:
	##rm debian/gnucap/usr/share/doc/gnucap/html/*.hi??
	# Remove un-necessary docs installed by upstream:
	#rm debian/gnucap/usr/share/doc/gnucap/COPYING
	#rm debian/gnucap/usr/share/doc/gnucap/INSTALL
	#rm debian/gnucap/usr/share/doc/gnucap/history

override_dh_compress:
	dh_compress -X.pdf -X.ckt

# disable debugging symbol packages, for now
# - these don't really help (-O2)
# - and they do not work with the current build system
#   (switch to autotools planned anyways..)
override_dh_strip:
	dh_strip --no-ddebs

# create tarball equivalent to upstream. use
# tar -xOzf ../gnucap-20171003.tar.gz | sort | sha1sum
# to check.
get-orig-source:
	@echo creating tarball from ${upstream_commit}
	[ -d .git ] && git archive ${upstream_commit} | \
	               gzip > $(ORIG_TARBALL) || :
	[ -d .git ] || git archive --format=tar \
		--remote=$(UPSTREAM_REPO) ${upstream_commit}  | \
	             tar -xzf > $(ORIG_TARBALL)

.PHONY: get-orig-source
