#!/usr/bin/make -f

#export DH_VERBOSE=1

pkg		:= opensp
pkg-osp		:= $(pkg)
libosp-maj-ver	:= $(shell egrep 'SP_LIBOSP_CUR=[0-9]+' configure.in|cut -d= -f2)
ifeq (,$(libosp-maj-ver))
$(error "Could not get value of SP_LIBOSP_CUR")
endif
pkg-libosp	:= libosp$(libosp-maj-ver)
pkg-libosp-dev	:= libosp-dev

# default SGML dir
sgmldir			:= /usr/share/sgml
local-sgmldir		:= /usr/local/share/sgml

# default SGML pathing - see /usr/share/doc/opensp/sysid.htm
default-sgml-path	:= $(local-sgmldir):$(sgmldir)
default-catalogs	:= /etc/sgml/catalog

# build tool abstraction
install_	:= install -o root -g root -p
install_file	:= install -o root -g root -m 644 -p
install_script	:= install -o root -g root -m 755 -p
install_program	:= install -o root -g root -m 755 -p
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
  install_program += --strip
endif
make_directory	:= install -d -o root -g root -m 755
compress	:= gzip -9f

DEB_BUILD_ARCH  := $(shell dpkg-architecture -qDEB_BUILD_ARCH)
ifeq (somearch,$(DEB_BUILD_ARCH))
  CC	:= gcc-fubar
  CXX	:= g++-fubar
else
  CC	:= gcc
  CXX	:= g++
endif

CFLAGS		:= $(shell dpkg-buildflags --get CFLAGS)
CPPFLAGS	:= $(shell dpkg-buildflags --get CPPFLAGS)
CXXFLAGS	:= $(shell dpkg-buildflags --get CXXFLAGS)
LDFLAGS		:= $(shell dpkg-buildflags --get LDFLAGS)
export CFLAGS
export CPPFLAGS
export CXXFLAGS
export LDFLAGS

ifeq (,$(findstring stage1,$(DEB_BUILD_PROFILES)))
enable_doc_build := --enable-full-doc-build
else
enable_doc_build := --disable-doc-build
endif

# flags to get automake to use the above
inst_flags	:= INSTALL='$(install_)'
inst_flags	+= INSTALL_PROGRAM='$(install_program)'
inst_flags	+= INSTALL_SCRIPT='$(install_script)'
inst_flags	+= INSTALL_DATA='$(install_file)'

# first version of package providing the right shlibs
SHLIBS_PKGVER	:= 1.5.2-1

# determine our version numbers
SRC_VERSION	:= $(shell LC_ALL=C dpkg-parsechangelog | grep ^Version: | sed 's/^Version: *//')
UPSTREAM_VERSION:= $(shell echo $(SRC_VERSION) | sed -e 's/^\(.*\)-[^-]*$$/\1/')
# stuff for cvs retrieval
cvs_src		:= $(pkg)-$(UPSTREAM_VERSION)
orig_name	:= $(pkg)_$(UPSTREAM_VERSION).orig.tar.gz
cvs_base_dir	:= ../cvs
cvs_src_dir	:= $(cvs_base_dir)/$(cvs_src)
cvs_module	:= sp
cvs_tag		:= opensp_1_5_branch
cvs_root	:= :pserver:anonymous@cvs.openjade.sourceforge.net:/cvsroot/openjade

sources-update:
	rm -fr $(cvs_base_dir)
	mkdir $(cvs_base_dir)
	cd $(cvs_base_dir) && CVSROOT=$(cvs_root) \
		cvs checkout -d $(cvs_src) -r $(cvs_tag) $(cvs_module)
	# Upstream has an ancient debian subdirectory, but we do not use it.
	rm -fr $(cvs_src_dir)/debian
	find $(cvs_src_dir) -name .cvsignore -print | xargs rm -f
	find $(cvs_src_dir) -type d -name CVS -print | xargs rm -fr
	cd $(cvs_base_dir) && tar -zcf $(orig_name) $(cvs_src)

# Maintainer target; set AM_MAINTAINER_MODE in configure.in, so this needs to
# be run when autotools input files change.
autoinit:
	./autoinit.sh

clean-stamp:
	rm -f config-stamp build-stamp install-stamp

clean:
	dh_testdir
	rm -f debian/buildinfo
	[ ! -f Makefile ] || $(MAKE) distclean
	dh_autoreconf_clean
	dh_clean config-stamp build-stamp install-stamp debian/copyright \
	    debian/$(pkg-libosp).shlibs debian/$(pkg-libosp-dev).substvars \
	    debian/README.Debian debian/$(pkg-libosp).README.Debian
	# See /usr/share/doc/autotools-dev/README.Debian.gz
	-test -r /usr/share/misc/config.sub && \
		cp -f /usr/share/misc/config.sub config.sub
	-test -r /usr/share/misc/config.guess && \
		cp -f /usr/share/misc/config.guess config.guess

config-stamp:
	dh_buildinfo generate cat
	dh_autoreconf
	CC=$(CC) CXX=$(CXX) ./configure --prefix=/usr \
	   --enable-http --enable-shared --enable-static \
	   --enable-default-catalog=$(default-catalogs) \
	   --enable-default-search-path=$(default-sgml-path) \
	   --disable-dtddecl $(enable_doc_build)
	touch $@

configure: config-stamp

build-stamp: configure
	dh_testdir
	$(MAKE) SUBDIRS=lib CXXFLAGS="$(CXXFLAGS) -D_REENTRANT"
	$(MAKE)
	touch $@

build: build-arch build-indep
build-arch: build-stamp
build-indep: build-stamp

debian/copyright:	COPYING debian/copyright.Debian
#	 to ensure we have a verbatim copy of the upstream copyright, 
#	 cat the Debian-specific stuff to the end of the upstream file
	cat $^ > $@

debian/$(pkg-libosp-dev).substvars:
#	 indicate our providing version of shlibs; this must be
#	 sync'd with debian/control
	: > $@
	echo "opensp:Version=$(pkg-osp) (= $(SRC_VERSION))"            >> $@
	echo "libosp:Version=$(pkg-libosp) (= $(SRC_VERSION))"         >> $@
	echo "libosp:ShlibVersion=$(pkg-libosp) (>= $(SHLIBS_PKGVER))" >> $@

debian/$(pkg-libosp).shlibs:
#	 std shlibs file, with the first version that supplied the version
#	 that applications should build with
	echo "libosp      $(libosp-maj-ver) $(pkg-libosp) (>= $(SHLIBS_PKGVER))" > $@

debian/README.Debian:	debian/README.Debian.in
#	 substitute the catalog paths
	sed -e 's|%{default-catalogs}|$(default-catalogs)|' \
	-e 's|%{default-sgml-path}|$(default-sgml-path)|' $^ > $@

debian/$(pkg-libosp).README.Debian:	debian/$(pkg-libosp).README.Debian.in
#	 substitute the catalog paths
	sed -e 's|%{default-catalogs}|$(default-catalogs)|' \
	-e 's|%{default-sgml-path}|$(default-sgml-path)|' $^ > $@

install-common := debian/copyright debian/$(pkg-libosp-dev).substvars \
		  debian/$(pkg-libosp).shlibs \
		  debian/README.Debian debian/$(pkg-libosp).README.Debian

# Install into DESTDIR, then move everything later. CURDIR is set by make.
DESTDIR = $(CURDIR)/debian/tmp
export DESTDIR
install-stamp:
	dh_testdir
	dh_testroot
	dh_prep
	$(MAKE) install $(inst_flags)
	cd $(DESTDIR)/usr/share/OpenSP && \
	( [ -f unicode.decl ] || mv unicode.sd unicode.decl ) && \
	( sed -e 's/unicode.sd/unicode.decl/' catalog > catalog.tmp && \
	mv -f catalog.tmp catalog ) && \
	chmod +x gensyntax.pl
ifeq (,$(findstring stage1,$(DEB_BUILD_PROFILES)))
	# Ugly fix for man page generation error
	sed 's~\.HP.*\[\\fIsysid\\fR\.\.\.\]~[\\fIsysid\\fR...]~' $(DESTDIR)/usr/share/man/man1/onsgmls.1 > $(DESTDIR)/usr/share/man/man1/onsgmls.1.tmp && mv $(DESTDIR)/usr/share/man/man1/onsgmls.1.tmp $(DESTDIR)/usr/share/man/man1/onsgmls.1
else
	mkdir -p $(DESTDIR)/usr/share/man/man1 $(DESTDIR)/usr/share/doc/OpenSP
	for f in onsgmls.1 osgmlnorm.1 ospam.1 ospcat.1 ospent.1 osx.1; do \
		touch $(DESTDIR)/usr/share/man/man1/$$f; \
	done
	for ext in html pdf ps; do \
		touch $(DESTDIR)/usr/share/doc/OpenSP/releasenotes.$$ext; \
	done
endif
	touch $@

install: build install-stamp $(install-common)

binary-indep: install
# There are no architecture-independent binary packages generated from this
# source package.

binary-arch: install
	dh_testdir
	dh_testroot

	dh_installdirs
	dh_installdocs
	dh_installchangelogs -A ChangeLog
	dh_installman -p opensp
	dh_install

	dh_strip -a
	dh_compress -a
	dh_fixperms -a

	dh_buildinfo install

	dh_makeshlibs
	dh_installdeb
	dh_shlibdeps

	dh_gencontrol
	dh_md5sums
	dh_builddeb

binary: binary-indep binary-arch

TAGS:
	etags $$(find . -path ./debian -prune -o -regex '.*\.\(cxx\|c\|h\)' -print|sed -e 's/^.\///')

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

# vim: set syntax=makefile:
# Local variables:
# compile-command: "cd .. && fakeroot dpkg-buildpackage -uc -us"
# End:
