#!/usr/bin/make -f

CFLAGS = -Wall -g
INSTALL = install
INSTALL_FILE    = $(INSTALL) -p    -o root -g root  -m  644
INSTALL_PROGRAM = $(INSTALL) -p    -o root -g root  -m  755
INSTALL_SCRIPT  = $(INSTALL) -p    -o root -g root  -m  755
INSTALL_DIR     = $(INSTALL) -p -d -o root -g root  -m  755

ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
CFLAGS += -O0
else
CFLAGS += -O2
endif
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
INSTALL_PROGRAM += -s
endif

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

ifeq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
       CONFIGURE_VARS = CC=gcc CFLAGS="$(CFLAGS)"
else
       CONFIGURE_VARS = CC=$(DEB_HOST_GNU_TYPE)-gcc CFLAGS="$(CFLAGS)"
endif

CONFIGURE_SWITCHES =    --prefix=/usr \
			--mandir=\$${prefix}/share/man \
			--localstatedir=/var \
			--sysconfdir=/etc \
			--libdir=/usr/lib/ \
			--libexecdir=/usr/lib \
			--disable-cxx \
			--enable-compat185 \
			--with-tcl=/usr/lib \
			--enable-tcl \
			--enable-test

DB_BINARY_PKGS = db4.8-util

ifeq (zx86_64-linux-gnuz,z$(DEB_HOST_GNU_TYPE)z)
CONFIGURE_SWITCHES += --with-mutex=POSIX/pthreads/library
endif

ifeq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
        STRIP = strip
        OBJCOPY = objcopy
else
        STRIP = $(DEB_HOST_GNU_TYPE)-strip
        OBJCOPY = $(DEB_HOST_GNU_TYPE)-objcopy
        CONFIGURE_SWITCHES += --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) 
endif

ifneq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
CONFIGURE_VARS += STRIP=":"
endif

package=db4.8
bdbversion=4.8

version=$(shell expr `pwd` : '.*-\([0-9.]*\)')
version_major=$(shell expr `pwd` : '.*-\([0-9]*\).[0-9.]*')

build:
	$(checkdir)

	mkdir -p obj

	cd obj && $(CONFIGURE_VARS) \
		../dist/configure $(CONFIGURE_SWITCHES)

	cd obj && $(MAKE)

	touch build

clean:
	$(checkdir)
	rm -rf obj
	rm -f build install-stamp
	-rm -rf debian/tmp debian/$(package)* core
	-rm -f debian/substvars.*
	rm -rf debian/libdb*

install-stamp: build
	$(checkdir)

	rm -rf debian/tmp
	$(INSTALL_DIR) debian/tmp

	cd obj && $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp

	touch install-stamp

binary-arch: checkroot build install-stamp
	$(checkdir)

	rm -rf debian/$(package)-util
	$(INSTALL_DIR) debian/$(package)-util/usr/share/man/man1 \
		       debian/$(package)-util/usr/lib

ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
	strip --remove-section=.note --remove-section=.comment \
	      debian/tmp/usr/lib/*.so debian/tmp/usr/bin/*
endif

	chmod 644 debian/tmp/usr/lib/*.so
	chmod 755 debian/tmp/usr/bin/*

	cp -a debian/tmp/usr/bin debian/$(package)-util/usr
	cp -a debian/tmp/usr/lib/libdb-$(bdbversion)*.so \
	        debian/$(package)-util/usr/lib

	cd debian/$(package)-util/usr/bin && for i in * ; \
	 do mv $$i `echo $$i | sed 's/db/$(package)/'` ; \
	done

	cp debian/manpages/*.1 debian/$(package)-util/usr/share/man/man1
	gzip -9frq debian/$(package)-util/usr/share/man/man1/*.1

	for i in $(DB_BINARY_PKGS); \
	do $(INSTALL_DIR) debian/$${i}/DEBIAN debian/$${i}/usr/share/doc/$${i} ; \
	   $(INSTALL_FILE) debian/copyright debian/$${i}/usr/share/doc/$${i} ; \
	   $(INSTALL_FILE) debian/changelog debian/$${i}/usr/share/doc/$${i}/changelog.Debian ; \
	   gzip -9fq debian/$${i}/usr/share/doc/$${i}/changelog.Debian ; \
	done

	echo 'libdb $(bdbversion) $(package)-util' >debian/$(package)-util/DEBIAN/shlibs
	$(INSTALL_SCRIPT) debian/lib.postinst debian/$(package)-util/DEBIAN/postinst

	for i in $(DB_BINARY_PKGS); \
	do dpkg-shlibdeps -Tdebian/substvars.$${i} -dDepends `find debian/$${i}/usr/lib -name "*.so"` `find debian/$${i}/usr/bin -type f` ; \
	   (cd debian/$${i} && find * -type f ! -regex '^DEBIAN/.*' -print0 | xargs -r0 md5sum > DEBIAN/md5sums) ; \
	   dpkg-gencontrol -isp -p$${i} -Pdebian/$${i} -Tdebian/substvars.$${i} ; \
	   chown -R root:root debian/$${i} ; \
	   chmod -R ugo=rX,u+w debian/$${i} ; \
	   dpkg --build debian/$${i} .. ; \
	done

define checkdir
	test -f debian/rules
endef

binary: binary-indep binary-arch

checkroot:
	$(checkdir)
	test root = "`whoami`"

.PHONY: binary binary-arch binary-indep clean checkroot
