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

ARCH := $(shell uname -m)
regexp := ^Version: ([^.]+)\.([^.]+)\.([^.]+)-(.*)
major := $(shell dpkg-parsechangelog | grep "^Version: " |  sed -r 's/$(regexp)/\1/')
minor := $(shell dpkg-parsechangelog | grep "^Version: " |  sed -r 's/$(regexp)/\2/')
extra := $(shell dpkg-parsechangelog | grep "^Version: " |  sed -r 's/$(regexp)/\3/')
upload := $(shell dpkg-parsechangelog | grep "^Version: " |  sed -r 's/$(regexp)/\4/')
NARVAL_BASE := debian/tmp/rev-$(major).$(minor).$(extra)/$(ARCH)
CPUS := $(shell getconf _NPROCESSORS_ONLN)
mtnversion_base := 9a1094a7eb05746dba3ff10f107f34dac90eb12a
mtnversion_actors := 428e9d48ff1894d9f48a225568a342489809d61b
branch_base := narval.core.pro
branch_actors := narval.actors.generics
mtnbase := base_debian.db
orig_dir := narval-$(major).$(minor).$(extra).orig
orig_tgz := narval_$(major).$(minor).$(extra).orig.tar.gz
aliversion := $(shell sed -n -r 's/^Package: libnarval(.*)-dev$$/\1/p' debian/control)
soname := libnarval.so.1.10.1

test_env:
	@echo "major=" $(major)
	@echo "minor=" $(minor)
	@echo "extra=" $(extra)
	@echo "aliversion=" $(aliversion)
	@echo "soname=" $(soname)
	@echo "upload=" $(upload)

get-orig-source:
	if [ ! -e ../$(mtnbase) ]; then \
	   mtn -d../$(mtnbase) db init; \
	fi; \
	cd .. && \
	mtn -d$(mtnbase) pull ipnvcs.in2p3.fr '$(branch_base)'; \
	mtn -d$(mtnbase) pull ipnvcs.in2p3.fr '$(branch_actors)'; \
	mtn -d$(mtnbase) co -r$(mtnversion_base) -b$(branch_base) $(orig_dir) && \
	rm -r $(orig_dir)/_MTN && \
	mtn -d$(mtnbase) co -r$(mtnversion_actors) -b$(branch_actors) && \
	rm -r $(branch_actors)/_MTN && \
	mv $(branch_actors)/ $(orig_dir)/generic_actors && \
	tar czf $(orig_tgz) $(orig_dir) && \
	rm -r $(orig_dir)

build:

build-arch: build-arch-stamp
build-arch-stamp: configure-stamp
	dh_testdir
	$(MAKE) all
	touch $@

build-indep: build-indep-stamp
build-indep-stamp: configure-stamp
	dh_testdir
	$(MAKE) doc_latex
	touch $@

install: build-arch
	$(MAKE) install
	sed -e s+TEMPLATE_LIB_DIR/adalib+/usr/lib/ada/adalib/narval+ adainclude/narval_lib.gpr > debian/tmp/narval_lib.gpr
	sed -i -e s+TEMPLATE_INC_DIR/adainclude+/usr/share/ada/adainclude/narval+ debian/tmp/narval_lib.gpr
	sed -e s+TEMPLATE_INC_DIR/adainclude+/usr/share/ada/adainclude/narval+ adainclude/narval_lib_annex_e.gpr > debian/tmp/narval_lib_annex_e.gpr
	sed -e s+TEMPLATE_INC_DIR/adainclude+/usr/share/ada/adainclude/narval+ adainclude/system_lib.gpr > debian/tmp/system_lib.gpr
	sed -e 's+@_CONF_PREFIX_@/\$$ARCH/bin+/etc/narval+' bin/narval_launch.in > debian/tmp/narval_launch
	chmod uog+x debian/tmp/narval_launch

install-indep: build-indep
	$(MAKE) doc_install

clean:pre-whatever-checks
	rm -f build-arch-stamp build-indep-stamp
	[ ! -f GNUmakefile ] || $(MAKE) distclean
	$(MAKE) -C generic_actors clean
	rm -Rf configure config.log config.status
	dh_clean -a -i

pre-whatever-checks:
	dh_testdir
	dh_testroot

$(soname) libnarval.a:configure-stamp
	$(MAKE) -C gnatdist_config build_libs

configure-stamp: configure
	dh_testdir
	NARVALTOPDIR=`pwd` ./configure --prefix=`pwd`/debian/tmp
	touch $@

configure: configure.ac
	autoconf

binary-arch:libnarval1.10.1 libnarval$(aliversion)-dev narval-servers narval-generic-actors narval-tests-actors narval-utils
	dh_installchangelogs -a
	dh_installdocs -a
	dh_compress -a
	dh_fixperms -a
	dh_makeshlibs -a
	dh_installdeb -a
	dh_shlibdeps -a -Llibnarval1.10.1 -ldebian/libnarval1.10.1/usr/lib
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a

binary-indep: narval-doc
	dh_installchangelogs -i
	dh_installdocs -i
	dh_compress -i -X.pdf
	dh_fixperms -i
	dh_installdeb -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

binary: binary-arch binary-indep

libnarval1.10.1:pre-whatever-checks install
	dh_installdirs -p$@ /usr/lib
	dh_install -p$@ $(soname) /usr/lib
	dh_strip -p$@ --dbg-package=libnarval-dbg

libnarval$(aliversion)-dev: pre-whatever-checks install
	dh_installdirs -p$@ \
		/usr/lib \
		/usr/share/ada/adainclude/narval \
		/usr/share/ada/adainclude/narval/annex_e \
		/usr/share/ada/adainclude/narval/system \
		/usr/lib/ada/adalib/narval
	dh_install -p$@ libnarval.a /usr/lib
	dh_install -p$@ $(NARVAL_BASE)/adalib/*.ali /usr/lib/ada/adalib/narval
	dh_install -p$@ $(NARVAL_BASE)/adainclude/*.ad[sb] /usr/share/ada/adainclude/narval
	dh_install -p$@ $(NARVAL_BASE)/adainclude/system/*.ad[sb] /usr/share/ada/adainclude/narval/system
	dh_install -p$@ $(NARVAL_BASE)/adainclude/annex_e/*.ad[sb] /usr/share/ada/adainclude/narval/annex_e
	dh_install -p$@ debian/tmp/system_lib.gpr /usr/share/ada/adainclude
	dh_install -p$@ debian/tmp/narval_lib.gpr /usr/share/ada/adainclude
	dh_install -p$@ debian/tmp/narval_lib_annex_e.gpr /usr/share/ada/adainclude
	dh_link -p$@ usr/lib/libnarval.so.1.10.1 usr/lib/libnarval.so
	dh_strip -p$@ -X.a

narval-servers: pre-whatever-checks install
	dh_installdirs -p$@ /etc/narval
	dh_installman -p$@ doc/aws_shell.1
	dh_installman -p$@ doc/central_log.1
	dh_installman -p$@ doc/narval_naming_service.1
	dh_installman -p$@ doc/narval_launch.1
	dh_installman -p$@ doc/sub_system_coordinator.1
	dh_install -p$@ bin/screen_commands_for_narval etc/narval
	dh_install -p$@ debian/tmp/narval_launch usr/bin
	dh_install -p$@ $(NARVAL_BASE)/bin/narval_naming_service usr/bin
	dh_install -p$@ $(NARVAL_BASE)/bin/aws_shell usr/bin
	dh_install -p$@ $(NARVAL_BASE)/bin/central_log usr/bin
	dh_install -p$@ $(NARVAL_BASE)/bin/sub_system_coordinator usr/bin
	dh_strip -p$@

narval-generic-actors: build_generic pre-whatever-checks install
	dh_installman -p$@ generic_actors/manpages/generic_producer.1
	dh_installman -p$@ generic_actors/manpages/generic_consumer.1
	dh_installman -p$@ generic_actors/manpages/generic_filter.1
	dh_install -p$@ generic_actors/producers/generic_producer usr/bin
	dh_install -p$@ generic_actors/consumers/generic_consumer usr/bin
	dh_install -p$@ generic_actors/filters/generic_filter usr/bin
	dh_strip -p$@

narval-tests-actors: pre-whatever-checks install
	dh_installman -p$@ doc/basic_consumer.1
	dh_installman -p$@ doc/basic_producer.1
	dh_installman -p$@ doc/data_rate_consumer.1
	dh_installman -p$@ doc/data_rate_producer.1
	dh_install -p$@ $(NARVAL_BASE)/bin/basic_producer usr/bin
	dh_install -p$@ $(NARVAL_BASE)/bin/basic_consumer usr/bin
	dh_install -p$@ $(NARVAL_BASE)/bin/data_rate_producer usr/bin
	dh_install -p$@ $(NARVAL_BASE)/bin/data_rate_consumer usr/bin
	dh_strip -p$@

narval-utils: pre-whatever-checks install
	dh_installman -p$@ doc/clean_narval.1
	dh_installman -p$@ doc/force_clean_narval.1
	dh_installman -p$@ doc/narval_shell.1
	dh_installman -p$@ doc/setup_narval_keys.1
	dh_install -p$@ gnatdist_config/narval_shell usr/bin
	dh_install -p$@ bin/clean_narval usr/bin
	dh_install -p$@ bin/force_clean_narval usr/bin
	dh_install -p$@ bin/setup_narval_keys usr/bin
	dh_strip -p$@

narval-doc: pre-whatever-checks install-indep
	dh_installdocs -p$@ doc/*.pdf
	dh_installexamples -p$@ scripts/run_example \
	nrv_conf/example.xml

build_generic:
	NARVAL_ADA_PROJECT_PATH=`pwd`/$(NARVAL_BASE)/adainclude $(MAKE) -C generic_actors actors
