#!/usr/bin/make -f
# Debian build script for log4Ada - Copyright (c) 2009 Xavier Grave

CLIENT_ADA_SOURCES=$(wildcard client/src/*.ad[sb])
ANNEX_E_ADA_SOURCES=$(wildcard server/src_annex_e/*.ad[sb])
EXAMPLES_ADA_SOURCES=$(wildcard server/src/*.ad[sb] server/demos/*.ad[sb])

aliversion := $(shell sed -n -r 's/^Package: liblog4ada(.*)-dev$$/\1/p' debian/control)
soversion := $(shell sed -n -r 's/^Package: liblog4ada([^-]+)$$/\1/p' debian/control)
soname := liblog4ada.so.$(soversion)
regexp := ^Version: ([^.]+)\.([^.]+)-(.*)
major := $(shell dpkg-parsechangelog | grep "^Version: " |  sed -r 's/$(regexp)/\1/')
minor := $(shell dpkg-parsechangelog | grep "^Version: " |  sed -r 's/$(regexp)/\2/')
upload := $(shell dpkg-parsechangelog | grep "^Version: " |  sed -r 's/$(regexp)/\3/')
mtnversion := 5f9230c1de7497ba8aa340b80ea71aaa4d864463
mtnbase := base_debian.db
mtn_uri := mtn://www.ada-france.org?org.log4Ada
orig_dir := liblog4ada.orig
orig_tgz := liblog4ada.orig.tar.gz
orig_pkg_dir := liblog4ada-$(major).$(minor).orig
orig_pkg_tgz := liblog4ada_$(major).$(minor).orig.tar.gz
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)

CPUS := $(shell getconf _NPROCESSORS_ONLN)

test_env:
	@echo $(CLIENT_ADA_SOURCES)
	@echo $(ANNEX_E_ADA_SOURCES)

get-orig-source:
	if [ ! -e ../$(mtnbase) ]; then \
		mtn -d../$(mtnbase) db init; \
	fi; \
	TMPDIR=$$(mktemp --tmpdir --directory liblog4ada-get-orig-source-XXXXXXXXXX) && \
	mtn clone -d ../$(mtnbase) $(mtn_uri) -k "" $$TMPDIR/$(orig_dir) && \
	(cd $$TMPDIR && tar --create --gzip --exclude="_MTN" $(orig_dir)) > $(orig_tgz) ; \
	rm -rf $$TMPDIR
	@echo "The file $(orig_tgz) contains the latest Debian snapshot of upstream sources."

get-pkg-source:
	if [ ! -e ../$(mtnbase) ]; then \
		mtn -d../$(mtnbase) db init; \
	fi; \
	TMPDIR=$$(mktemp --tmpdir --directory liblog4ada-get-pkg-source-XXXXXXXXXX) && \
	mtn clone -d ../$(mtnbase) $(mtn_uri) -r$(mtnversion) -k "" $$TMPDIR/$(orig_pkg_dir) && \
	(cd $$TMPDIR && tar --create --gzip --exclude="_MTN" $(orig_pkg_dir)) > $(orig_pkg_tgz) ; \
	rm -rf $$TMPDIR
	@echo "The file $(orig_pkg_tgz) contains the pkg Debian of upstream sources."


build: build-arch build-indep
build-arch: build-stamp
build-indep: build-doc-stamp

build-stamp: static-lib shared-lib
	touch $@

build-doc-stamp: documentation
	touch $@

documentation:
	if [ -e /usr/bin/pdflatex ]; then $(MAKE) -C doc; fi

static-lib:liblog4ada.a

shared-lib:liblog4ada.so.$(soversion)

clean:pre-whatever-checks
	rm -f build-stamp liblog4ada.a liblog4ada.so.* liblog4ada.so
	rm -Rf debian/obj-static debian/obj-shared
	dh_clean -a -i
	$(MAKE) -C doc clean

pre-whatever-checks:
	dh_testdir
	dh_testroot

liblog4ada-doc: build-doc-stamp pre-whatever-checks
	dh_installdocs -p$@ doc/*.pdf
	dh_installexamples -p$@ server/src/*.ad[sb] \
	server/demos/*.ad[sb] client/demos/*.ad[sb]

liblog4ada$(aliversion)-dev: build-stamp pre-whatever-checks
	dh_installdirs -p$@ \
		usr/lib/$(DEB_HOST_MULTIARCH) \
		usr/share/ada/adainclude/log4ada \
		usr/share/ada/adainclude/log4ada/annex_e \
		usr/lib/ada/adalib/log4ada
	dh_install -p$@ liblog4ada.a usr/lib/$(DEB_HOST_MULTIARCH)
	dh_install -p$@ debian/obj-shared/*.ali /usr/lib/ada/adalib/log4ada
	dh_install -p$@ $(CLIENT_ADA_SOURCES) /usr/share/ada/adainclude/log4ada
	dh_install -p$@ $(ANNEX_E_ADA_SOURCES) \
	/usr/share/ada/adainclude/log4ada/annex_e
	dh_install -p$@ debian/log4Ada.gpr /usr/share/ada/adainclude/
	dh_install -p$@ debian/log4Ada_annex_e.gpr /usr/share/ada/adainclude/
	dh_link -p$@ usr/lib/$(DEB_HOST_MULTIARCH)/liblog4ada.so.$(soversion) \
                     usr/lib/$(DEB_HOST_MULTIARCH)/liblog4ada.so
	dh_strip -p$@ -X.a

liblog4ada$(soversion): build-stamp pre-whatever-checks
	dh_installdirs -p$@ usr/lib/$(DEB_HOST_MULTIARCH)
	dh_install -p$@ liblog4ada.so.$(soversion) usr/lib/$(DEB_HOST_MULTIARCH)
	dh_strip -p$@ --dbg-package=liblog4ada-dbg

binary:binary-arch binary-indep

binary-arch: liblog4ada$(soversion) liblog4ada$(aliversion)-dev
	dh_installchangelogs -a
	dh_installdocs -a
	dh_compress -a
	dh_fixperms -a
	dh_makeshlibs -a
	dh_installdeb -a
	dh_shlibdeps -a -Lliblog4ada$(soversion) -ldebian/liblog4ada$(soversion)/usr/lib
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a

binary-indep: liblog4ada-doc
	dh_installchangelogs -i
	dh_compress -i
	dh_fixperms -i
	dh_installdeb -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

liblog4ada.a:$(ADA_SOURCES)
	gnatmake -p -j$(CPUS) -Pdebian/build_log4ada.gpr \
	-XLIBRARY_KIND=static -XOBJ_DIR=obj-static

liblog4ada.so.$(soversion):$(ADA_SOURCES)
	gnatmake -p -j$(CPUS) -Pdebian/build_log4ada.gpr \
	-XLIBRARY_KIND=dynamic -XOBJ_DIR=obj-shared -XSONAME=$(soname)
