#!/usr/bin/make -f

CC =gcc
CFLAGS =-O2 -Wall
STRIP =strip
SO =$(shell IFS=:; read v r a <LIBVERSION && echo $$(($$v-$$a)))
PGINCL =$(shell pg_config --includedir)

ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
  CFLAGS +=-g
endif
ifneq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
  STRIP =: nostrip
endif

DIR =$(shell pwd)/debian/cvm
LDIR =$(shell pwd)/debian/libcvm$(SO)

patch: deb-checkdir patch-stamp
patch-stamp:
	for i in `ls -1 debian/diff/*.diff || :`; do \
	  patch -p1 <$$i || exit 1; \
	done
	touch patch-stamp

build: deb-checkdir build-stamp
build-stamp: patch-stamp
	-'$(CC)' -v
	test -e conf-cc'{orig}' || cp conf-cc conf-cc'{orig}'
	echo '$(CC) $(CFLAGS)' >conf-cc
	test -e conf-bin'{orig}' || cp conf-bin conf-bin'{orig}'
	echo /usr/bin >conf-bin
	test -e conf-include'{orig}' || cp conf-include conf-include'{orig}'
	echo /usr/include >conf-include
	test -e conf-lib'{orig}' || cp conf-lib conf-lib'{orig}'
	echo /usr/lib >conf-lib
	$(MAKE)
	$(MAKE) sqlite
	sh ./tests.sh
	$(MAKE) mysql
	@test -n "$(PGINCL)" || sh -cx '! : postgresql include path unknown.'
	echo '$(CC) $(CFLAGS) -I$(PGINCL)' >conf-cc
	$(MAKE) pgsql
	touch build-stamp

clean: deb-checkdir deb-checkuid
	$(MAKE) clean
	rm -rf .libs
	for i in conf-cc conf-bin conf-include conf-lib; do \
	  test ! -r $$i'{orig}' || mv -f $$i'{orig}' $$i || exit 1; \
	done
	test ! -e patch-stamp || \
	  for i in `ls -1r debian/diff/*.diff || :`; do patch -p1 -R <$$i; done
	rm -f patch-stamp build-stamp
	rm -rf '$(LDIR)' '$(LDIR)'-dev '$(DIR)' '$(DIR)'-mysql '$(DIR)'-pgsql
	rm -f debian/libcvm'$(SO)'.shlibs debian/shlibs.local debian/files \
	  debian/substvars changelog

install: deb-checkdir deb-checkuid build-stamp
	# libcvm-dev
	rm -rf '$(LDIR)' '$(LDIR)'-dev '$(DIR)' '$(DIR)'-mysql '$(DIR)'-pgsql
	$(MAKE) install install_prefix='$(LDIR)'-dev/
	rm -f '$(LDIR)'-dev/usr/lib/*.la
	$(STRIP) --strip-debug '$(LDIR)'-dev/usr/lib/*.a
	# libcvm
	install -d -m0755 '$(LDIR)'/usr/lib
	for i in '$(LDIR)'-dev/usr/lib/*.so.*; do \
	  mv $$i '$(LDIR)'/usr/lib/ || exit 1; \
	done
	chmod 0644 '$(LDIR)'/usr/lib/*
	$(STRIP) -R .note -R .comment --strip-unneeded \
	  '$(LDIR)'/usr/lib/*.so.?.?.?
	rm -f debian/libcvm'$(SO)'.shlibs debian/shlibs.local
	for i in `cd '$(LDIR)'/usr/lib && ls -1 *.so.?`; do \
	  echo "$${i%%.so.?} 1 libcvm$(SO)" >>debian/libcvm'$(SO)'.shlibs; \
	done
	ln -s libcvm'$(SO)'.shlibs debian/shlibs.local
	# cvm
	install -d -m0755 '$(DIR)'/usr
	mv '$(LDIR)'-dev/usr/bin '$(DIR)'/usr/
	# don't install cvm-sqlite for now
	rm -f '$(DIR)'/usr/bin/cvm-sqlite
	$(STRIP) -R .comment -R .note '$(DIR)'/usr/bin/*
	install -d -m0755 '$(DIR)'/usr/share/man/man8
	for i in cvm-benchclient.8 cvm-checkpassword.8 cvm-pwfile.8 \
	 cvm-qmail.8 cvm-testclient.8 cvm-unix.8 cvm-vmailmgr.8; do \
	  install -m0644 debian/$$i '$(DIR)'/usr/share/man/man8/ || exit 1; \
	done
	gzip -9n '$(DIR)'/usr/share/man/man8/*.8
	install -d -m0755 '$(DIR)'/usr/share/man/man7
	install -m0644 debian/cvm-sql.7 '$(DIR)'/usr/share/man/man7/
	gzip -9n '$(DIR)'/usr/share/man/man7/*.7
	# cvm-mysql
	install -d -m0755 '$(DIR)'-mysql/usr/bin
	mv '$(DIR)'/usr/bin/cvm-mysql* '$(DIR)'-mysql/usr/bin/
	install -d -m0755 '$(DIR)'-mysql/usr/share/man/man8
	install -m0644 debian/cvm-mysql.8 '$(DIR)'-mysql/usr/share/man/man8/
	gzip -9n '$(DIR)'-mysql/usr/share/man/man8/*.8
	# cvm-pgsql
	install -d -m0755 '$(DIR)'-pgsql/usr/bin
	mv '$(DIR)'/usr/bin/cvm-pgsql* '$(DIR)'-pgsql/usr/bin/
	install -d -m0755 '$(DIR)'-pgsql/usr/share/man/man8
	install -m0644 debian/cvm-pgsql.8 '$(DIR)'-pgsql/usr/share/man/man8/
	gzip -9n '$(DIR)'-pgsql/usr/share/man/man8/*.8
	# changelog
	rm -f changelog && ln -s ChangeLog changelog
	# fix directory permissions
	find '$(DIR)' '$(LDIR)'-dev -type d -print0 | xargs -0r chmod 0755

binary: binary-indep binary-arch
binary-indep:
binary-arch: deb-checkdir deb-checkuid install cvm.deb cvm-mysql.deb \
	  cvm-pgsql.deb libcvm'$(SO)'.deb libcvm'$(SO)'-dev.deb
	# cvm
	rm -f debian/substvars
	dpkg-shlibdeps '$(DIR)'/usr/bin/*
	dpkg-gencontrol -isp -pcvm -P'$(DIR)'
	dpkg -b '$(DIR)' ..
	# cvm-mysql
	rm -f debian/substvars
	dpkg-shlibdeps '$(DIR)'-mysql/usr/bin/*
	dpkg-gencontrol -isp -pcvm-mysql -P'$(DIR)'-mysql
	dpkg -b '$(DIR)'-mysql ..
	# cvm-pgsql
	rm -f debian/substvars
	dpkg-shlibdeps '$(DIR)'-pgsql/usr/bin/*
	dpkg-gencontrol -isp -pcvm-pgsql -P'$(DIR)'-pgsql
	dpkg -b '$(DIR)'-pgsql ..
	# libcvm-dev
	rm -f debian/substvars
	dpkg-gencontrol -isp -plibcvm'$(SO)'-dev -P'$(LDIR)'-dev
	dpkg -b '$(LDIR)'-dev ..
	# libcvm
	rm -f debian/substvars
	dpkg-shlibdeps '$(LDIR)'/usr/lib/*.so.?.?.?
	dpkg-gencontrol -isp -plibcvm'$(SO)' -P'$(LDIR)'
	echo 'activate-noawait ldconfig' > debian/libcvm1/DEBIAN/triggers
	dpkg -b '$(LDIR)' ..

.PHONY: patch build clean binary-indep binary-arch binary install

include debian/implicit
