#!/usr/bin/make -f

# Uncomment this to turn on verbose mode. 
#export DH_VERBOSE=1

FB_MAJOR:= $(shell awk '/FB_MAJOR_VER/ { v=$$3; gsub("\"", "", v); print v}' < src/jrd/build_no.h )
FB_MINOR:= $(shell awk '/FB_MINOR_VER/ { v=$$3; gsub("\"", "", v); print v}' < src/jrd/build_no.h )
FB_REV	:= $(shell awk '/FB_REV_NO/    { v=$$3; gsub("\"", "", v); print v}' < src/jrd/build_no.h )
FB_VER	:= $(FB_MAJOR).$(FB_MINOR)
FB_FULL_VER:= $(FB_VER).$(FB_REV)

CLIENT_SOVER=2
UTIL_SOVER=

ifndef FB_MAJOR
$(error FB_MAJOR not defined)
else ifndef FB_MINOR
$(error FB_MINOR not defined)
else ifndef FB_REV
$(error FB_REV not defined)
else ifndef FB_VER
$(error FB_VER not defined)
else ifndef FB_FULL_VER
$(error FB_FULL_VER not defined)
else ifndef CLIENT_SOVER
$(error CLIENT_SOVER not defined)
endif

# Use the following lines to set the compiler if
# the default Debian one can't be used (or you want to try
# the bleeding edge)
#export CC=gcc-4.3
#export CXX=g++-4.3
#export CPP=cpp-4.3
#export CXXPP=cpp-4.3


export DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)

ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
	confflags += --build $(DEB_HOST_GNU_TYPE)
else
	confflags += --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE)
endif

DOC=/usr/share/doc/firebird${FB_VER}-common-doc
ULFB=/usr/lib/firebird/${FB_VER}
USFB=/usr/share/firebird/${FB_VER}
VAR=/var/lib/firebird/${FB_VER}
RUN=/var/run/firebird/${FB_VER}

confflags += --disable-rpath --with-gpre-cobol \
	     --with-system-editline --prefix=/usr --with-fbsbin=/usr/sbin \
	     --with-fbconf=/etc/firebird/${FB_VER} --with-fbdoc=${DOC} \
	     --with-fbudf=${ULFB}/UDF --with-fbsample=${DOC}/examples \
	     --with-fbsample-db=${DOC}/examples/empbuild \
	     --with-fbhelp=${VAR}/system --with-fbintl=${ULFB}/intl \
	     --with-fbmisc=${ULFB}/misc --with-fbsecure-db=${VAR}/system \
	     --with-fbmsg=${USFB} --with-fblog=/var/log --with-fbglock=${RUN} \
	     --with-fblogfilename=firebird$(FB_VER).log \
	     --with-fbplugins=${ULFB}/plugins

# see #575564
export FIREBIRD_LOCK=$(CURDIR)/debian/tmp-lock

# Packaging is split into several packages:
# * firebirdVV-server (incl libengineXX)
# * libfbclient2
# * libib-util
# * firebirdVV-utils
# * firebirdVV-common (common parts to client and utils)
# * firebirdVV-common-doc (big copyright and changelog one place)
# * firebirdVV-doc
# * firebirdVV-examples
# * firebird-dev

autogen: autogen-stamp
autogen-stamp:
	NOCONFIGURE=1 sh autogen.sh
	touch $@

.PHONY: configure
configure: configure-stamp
configure-stamp: autogen-stamp
	@echo ================================
	@echo ==== Starting configuration ====
	@echo ================================
	dh_testdir

	-sh debian/clean-after-build.sh

	chmod u+x ./configure
	CFLAGS= CXXFLAGS= ./configure $(confflags)

	touch $@

.PHONY: build
build: build-stamp
build-stamp: build-manuals build-server
	touch $@

MANUALS_BASE = isql-fb gbak gfix gpre gsec fbstat qli nbackup \
	       fbsvcmgr fbtracemgr fbguard \
	       fb_lock_print firebird
MANUALS = $(addprefix debian/man/,$(addsuffix .1,$(MANUALS_BASE)))

.PHONY: build-manuals
build-manuals: $(MANUALS)

%.1 : %.pod
	pod2man -c "Firebird documentation" --release "Firebird $(FB_VER)"  $< > $@

%.1 : %.sgml
	docbook-to-man $< > $@

.PHONY: build-server
build-server: build-server-stamp
build-server-stamp: configure-stamp
	echo Starting build
	dh_testdir
	[ -d $(FIREBIRD_TMP) ] || mkdir $(FIREBIRD_TMP)
	$(MAKE) QUIET=1

	rm -rf ./debian/firebird-image
	#fakeroot $(MAKE) -C gen -f Makefile.install buildRoot
	#mv ./gen/buildroot ./debian/firebird-build
	cp -a ./gen/Release/firebird debian/firebird-image

	echo "Built image contents"
	cd debian/firebird-image && ls -lR

	touch $@

.PHONY: clean
clean:
	dh_testdir
	
	sh debian/clean-after-build.sh
	
	rm -f $(MANUALS)
	
	rm -f 	build-stamp build-server-stamp configure-stamp \
		autogen-stamp
	
	# re-generated in autogen target
	rm -f builds/make.new/config/config		\
	      builds/make.new/config/config.guess	\
	      builds/make.new/config/config.h.in	\
	      builds/make.new/config/config.sub 	\
	      builds/make.new/config/ltmain.sh		\
	      builds/make.new/config/install-sh		\
	      aclocal.m4				\
	      configure
	
	rm -rf	debian/firebird-image
	
	debconf-updatepo
	
	dh_clean
	
	@echo FB_MAJOR = $(FB_MAJOR)
	@echo FB_MINOR = $(FB_MINOR)
	@echo FB_REV   = $(FB_REV)
	@echo FB_VER   = $(FB_VER)
	@echo FB_FULL_VER = $(FB_FULL_VER)
	@echo CLIENT_SOVER= $(CLIENT_SOVER)
	@echo UTIL_SOVER= $(UTIL_SOVER)

.PHONY: install
install: DH_OPTIONS=
install: build
	dh_testdir
	dh_testroot
	dh_prep
	dh_installdirs

	sh debian/make_packages.sh

.PHONY: binary-indep
binary-indep: install
	dh_testdir -i
	dh_testroot -i
	dh_installdocs -p firebird$(FB_VER)-common-doc
	dh_installdocs -Xchangelog -Xcopyright -p firebird$(FB_VER)-doc
	dh_installman -i
	dh_installexamples -i
	dh_installlogrotate -i --name firebird$(FB_VER)
	dh_installchangelogs ChangeLog -p firebird$(FB_VER)-common-doc
	dh_lintian -i
	dh_link -i
	dh_compress -i
	dh_fixperms -i

	dh_installdeb -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i


.PHONY: binary-arch
# Build architecture-dependent files here.
binary-arch: install
	dh_testdir -a
	dh_testroot -a
	dh_installdebconf -a
	dh_installexamples -a
	dh_installmenu -a
	dh_installinit -pfirebird$(FB_VER)-server --name=firebird$(FB_VER)
	dh_installcron -a
	dh_installman -a
	dh_installinfo -a
	dh_installlogrotate -a --name firebird$(FB_VER)
	dh_lintian -a
	dh_strip -a --dbg-package firebird$(FB_VER)-dbg
	dh_link -a -A
	dh_compress -a
	dh_fixperms -a

	dh_makeshlibs -p libfbclient$(CLIENT_SOVER) -V'libfbclient$(CLIENT_SOVER) (>= $(FB_FULL_VER)~)'
	dh_makeshlibs -p libib-util$(UTIL_SOVER) -V'libib-util$(UTIL_SOVER) (>= $(FB_FULL_VER)~)'

	dpkg-gensymbols -plibfbclient$(CLIENT_SOVER) -Pdebian/libfbclient$(CLIENT_SOVER)
	dpkg-gensymbols -plibib-util$(UTIL_SOVER) -Pdebian/libib-util$(UTIL_SOVER)

	dh_installdeb -a
	dh_shlibdeps -a -X /plugins/
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a

.PHONY: binary
binary: binary-indep binary-arch

.PHONY: get-orig-source
get-orig-source:
	uscan
