#!/usr/bin/make -f

CC=gnatgcc

aliversion := $(shell sed -n -r 's/^Package: libaws(.*)-dev$$/\1/p' debian/control)
soversion := $(shell sed -n -r 's/^Package: libaws([^-]+)$$/\1/p' debian/control)
mtnbase := base_debian.db
mtnversion := d0941d1d06f72dd5bedb60e6a558643d9d97e45e
branch := com.adacore.aws.debian
orig_dir := libaws_$(aliversion).orig
orig_tgz := libaws_$(aliversion).orig.tar.gz
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)

file_to_spec=sed -e "s/\.ads//" -e "s/-/./g" -e "s!.*/!!g"

CPUS := $(shell getconf _NPROCESSORS_ONLN)

.SUFFIXES:

get-orig-source:
	if [ ! -e ../$(mtnbase) ]; then \
		mtn -d../$(mtnbase) db init; \
	fi; \
	mtn -d../$(mtnbase) -k "" pull www.ada-france.org '$(branch)'; \
	cd .. && \
	mtn -d$(mtnbase) co -r$(mtnversion) -b$(branch) $(orig_dir) && \
	rm -rf $(orig_dir)/_MTN $(orig_dir)/.*ignore&& \
	tar czf $(orig_tgz) $(orig_dir) && \
	rm -r $(orig_dir)

clean:
	dh_testdir
	dh_testroot
# to avoid conflict with libtemplateparser includes
	rm -rf debian/tmp
	rm -f $(addprefix docs/,*.html *.info *.pdf *.txt ada.sed genout)
	rm -f $(filter-out docs/style-guide.texi,$(wildcard docs/*.texi))
	dh_clean -a -i

build:
# do nothing

build-arch: static-lib shared-lib tools
build-indep: doc

binary: binary-arch binary-indep

pre-binary-checks:
	dh_testdir
	dh_testroot

binary-indep: build-indep pre-binary-checks libaws-doc
	dh_fixperms -i
	dh_installchangelogs -i
	dh_lintian -i
	dh_compress -i -X.adb -X.ads -X.thtml -X.wsdl
	dh_installdeb -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

libaws-doc:
	: # The doc package
	dh_installinfo -p$@ docs/aws.info docs/style-guide.info
	dh_installdocs -p$@ docs/*.html docs/*.txt docs/features* docs/known-problems readme.txt
	dh_installexamples -p$@ demos/*

DIRS := config config/src include src/soap src/core ssl src/xsrc src/extended
SOURCES := $(foreach d,$(DIRS),$(wildcard $(d)/*.ad[bs]))

binary-arch: build-arch libaws$(aliversion)-dev libaws-bin libaws$(soversion)
	: # Common to all architecture-dependent packages
	dh_installchangelogs -a
	dh_installdocs -a
	dh_lintian -a
	dh_compress -a
	dh_fixperms -a
	dh_makeshlibs -a
	dh_installdeb -a
	dh_shlibdeps -a -Llibaws$(soversion) -ldebian/libaws$(soversion)/usr/lib
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a

libaws$(aliversion)-dev: pre-binary-checks
	: # The development package
	dh_installdirs -p$@ \
		usr/lib/$(DEB_HOST_MULTIARCH) \
		usr/share/ada/adainclude/aws \
		usr/lib/ada/adalib/aws
	dh_install -p$@ debian/tmp/static/libaws.a /usr/lib/$(DEB_HOST_MULTIARCH)
	dh_install -p$@ debian/tmp/dynamic/*.ali /usr/lib/ada/adalib/aws
	dh_install -p$@ debian/aws.gpr /usr/share/ada/adainclude
	dh_install -p$@ $(SOURCES) /usr/share/ada/adainclude/aws
	dh_install -p$@ debian/tmp/aws-os_lib-definitions.ads \
	   /usr/share/ada/adainclude/aws
	dh_link -p$@ usr/lib/$(DEB_HOST_MULTIARCH)/libaws.so.$(soversion) \
	             usr/lib/$(DEB_HOST_MULTIARCH)/libaws.so
	dh_strip -p$@ -X.a

libaws-bin: build-arch pre-binary-checks
	: # The -bin package
	dh_installdirs -p$@ /usr/bin
	for i in ada2wsdl awsres wsdl2aws; do \
	   if [ -x debian/tmp/$$i ] ; then \
	      dh_install    -p$@ debian/tmp/$$i /usr/bin; \
	      dh_installman -p$@ debian/$$i.1; \
	   fi \
	done
	dh_strip -p$@

libaws$(soversion): build-arch pre-binary-checks
	: # The shared library package
	dh_installdirs -p$@ usr/lib/$(DEB_HOST_MULTIARCH)
	dh_install -p$@ debian/tmp/dynamic/libaws.so.$(soversion) usr/lib/$(DEB_HOST_MULTIARCH)
	: # The package containing debugging symbols
	dh_strip -p$@ --dbg-package=libaws-dbg

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary pre-binary-checks
.PHONY: libaws-doc libaws$(aliversion)-dev libaws-bin libaws$(soversion)

static-lib: debian/tmp/static/libaws.a
debian/tmp/static/libaws.a: debian/tmp/aws-os_lib-definitions.ads
	: # Build the static library
	gnatmake -j$(CPUS) -p -Pdebian/build_aws.gpr -Xkind=static

shared-lib: debian/tmp/dynamic/libaws.so.$(soversion)
debian/tmp/dynamic/libaws.so.$(soversion): debian/tmp/aws-os_lib-definitions.ads
	: # Build the shared library
	gnatmake -j$(CPUS) -fPIC -p -Pdebian/build_aws.gpr -Xkind=dynamic -Xsoname=libaws.so.$(soversion)

debian/tmp/aws-os_lib-definitions.ads: debian/tmp/check_config | debian/tmp
	$< $@

debian/tmp/check_config: config/setup/check_config.c | debian/tmp
	$(CC) -o $@ $<

tools: debian/tmp/ada2wsdl debian/tmp/awsres debian/tmp/wsdl2aws

debian/tmp/ada2wsdl: shared-lib
	: # Build ada2wsdl
	gnatmake -j$(CPUS) -p -Pdebian/ada2wsdl.gpr -Xkind=dynamic -Xsoname=libaws.so.$(soversion)

debian/tmp/awsres debian/tmp/wsdl2aws: shared-lib
	: # Build awsres and wsdl2aws
	gnatmake -j$(CPUS) -p -Pdebian/tools.gpr -Xkind=dynamic -Xsoname=libaws.so.$(soversion)

debian/tmp:
	-mkdir $@

doc:
	chmod u+x docs/gentexifile
	$(MAKE) -C docs

.PHONY: static-lib shared-lib tools doc
