#!/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)
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)

CONFIGURE_VARS = CC=gcc CFLAGS="$(CFLAGS)" 
CONFIGURE_SWITCHES =    --prefix=/usr \
			--mandir=\$${prefix}/share/man \
			--localstatedir=/var \
			--sysconfdir=/etc \
			--libdir=/usr/lib/$(DEB_HOST_MULTIARCH) \
			--libexecdir=/usr/lib \
			--disable-cxx \
			--enable-compat185 \
			--with-tcl=/usr/lib \
			--enable-tcl \
			--enable-test

DB_BINARY_PKGS = libdb4.8 libdb4.8-dev 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)* debian/lib$(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/lib$(package)-dev debian/$(package)-util debian/lib$(package)
	$(INSTALL_DIR) debian/lib$(package)-dev/usr/lib/$(DEB_HOST_MULTIARCH) \
			debian/$(package)-util/usr/share/man/man1 \
			debian/lib$(package)/usr/lib/$(DEB_HOST_MULTIARCH)

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

	chmod 644 debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/*.so debian/tmp/usr/include/*.h
	chmod 755 debian/tmp/usr/bin/*

	rm -f debian/tmp/usr/include/db_cxx.h
	cp -a debian/tmp/usr/include debian/lib$(package)-dev/usr
	cp -a debian/tmp/usr/bin debian/$(package)-util/usr
	cp -a debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/*.so debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/*.a \
	        debian/lib$(package)-dev/usr/lib/$(DEB_HOST_MULTIARCH)
	mv debian/lib$(package)-dev/usr/lib/$(DEB_HOST_MULTIARCH)/libdb-$(bdbversion).so debian/lib$(package)/usr/lib/$(DEB_HOST_MULTIARCH)

	# Remove extra TCL library
	rm -f debian/lib$(package)-dev/usr/lib/$(DEB_HOST_MULTIARCH)/*tcl*

	# Remove -ldb from libdb*-dev packages
	#rm -f debian/lib$(package)-dev/usr/lib/libdb.a
	#rm -f debian/lib$(package)-dev/usr/lib/libdb.so
	rm -f debian/lib$(package)-dev/usr/lib/$(DEB_HOST_MULTIARCH)/libdb-4.so
	rm -f debian/lib$(package)++-dev/usr/lib/$(DEB_HOST_MULTIARCH)/libdb_cxx.a
	rm -f debian/lib$(package)++-dev/usr/lib/$(DEB_HOST_MULTIARCH)/libdb_cxx.so
	rm -f debian/lib$(package)++-dev/usr/lib/$(DEB_HOST_MULTIARCH)/libdb_cxx-4.so
	rm -f debian/lib$(package)-java-dev/usr/lib/$(DEB_HOST_MULTIARCH)/libdb_java.so
	rm -f debian/lib$(package)-java-dev/usr/lib/$(DEB_HOST_MULTIARCH)/libdb_java-4.so
	rm -f debian/lib$(package)-tcl/usr/lib/$(DEB_HOST_MULTIARCH)/libdb_tcl.so
	rm -f debian/lib$(package)-tcl/usr/lib/$(DEB_HOST_MULTIARCH)/libdb_tcl-4.so

	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) lib$(package)' >debian/lib$(package)/DEBIAN/shlibs
	$(INSTALL_SCRIPT) debian/lib.postinst debian/lib$(package)/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
