#!/usr/bin/make -f

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


# These are used for cross-compiling and for saving the configure script
# from having to guess our platform (since we know it already)
DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)

VERSION=$(shell echo `head -2 $(CURDIR)/include/VERSION`|sed -e 's/ //')
ABI=$(shell echo `head -3 $(CURDIR)/include/VERSION`|sed -e 's/ //g' -e 's/RC/-/')
BASE_NAME=grass$(VERSION)
PKG_NAME=grass

CFLAGS=-Wall -g

ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
	CFLAGS += -O0
else
	CFLAGS += -O
endif
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
	STRIP = 
else
	STRIP = strip
endif

TCLINC = /usr/include/tcl

versions: 
	@echo "Version: $(VERSION)"
	@echo "ABI: $(ABI)"

templates: $(patsubst %.in,%,$(wildcard debian/*.in))

debian/% :: debian/%.in
	sed -e 's/@VERSION@/$(VERSION)/' -e 's/@ABI@/$(ABI)/' $< >$@

configure: config.status
config.status: 
	dh_testdir

ifneq "$(wildcard /usr/share/misc/config.sub)" ""
	cp -f config.sub config.sub.original
	cp -f /usr/share/misc/config.sub config.sub
endif
ifneq "$(wildcard /usr/share/misc/config.guess)" ""
	cp -f config.guess config.guess.original
	cp -f /usr/share/misc/config.guess config.guess
endif

	# Add here commands to configure the package.
	CFLAGS="$(CFLAGS)" ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \
                    --prefix=/usr/lib \
                    --sysconfdir=/etc \
                    --sharedstatedir=/var \
                    --enable-socket \
                    --enable-shared \
                    --with-postgres \
                    --with-mysql \
                    --with-cxx \
                    --with-x \
                    --with-gdal \
                    --with-freetype \
                    --with-motif \
                    --with-readline \
                    --with-nls \
                    --with-odbc \
		    --with-sqlite \
		    --enable-largefile \
                    --with-freetype-includes=/usr/include/freetype2 \
                    --with-tcltk-includes=$(TCLINC) \
                    --with-postgres-includes=$(shell pg_config --includedir) \
                    --with-mysql-includes=$(shell mysql_config --include|sed -e 's/-I//') \
		    --with-proj-share=/usr/share/proj \
		    --with-wxwidgets=/usr/lib/$(shell dpkg-architecture -qDEB_HOST_MULTIARCH)/wx/config/gtk2-unicode-release-2.8 \
		    --with-python=/usr/bin/python-config \
		    --with-cairo

	touch $@

# This target generates arch-dep stuff, unfortunately most doc requires working bins to 
# be properly generated...
build: configure build-stamp
build-stamp:  
	dh_testdir
	$(MAKE) 
	chmod 755 debian/fixpaths.sh debian/fixscripts.sh
	touch $@

# This target generates truly arch-indep stuff
build-indep: configure build-indep-stamp
build-indep-stamp: 
	dh_testdir
	$(MAKE) htmldocs
	touch $@

clean: templates true-clean 
true-clean:
	dh_testdir
	dh_testroot
	
ifneq "$(wildcard /usr/share/misc/config.sub.original)" ""
	mv -f config.sub.original config.sub
endif
ifneq "$(wildcard /usr/share/misc/config.guess.original)" ""
	mv -f config.guess.original config.guess
endif
	
	# Add here commands to clean up after the build process.
	[ ! -f $(CURDIR)/include/Make/Platform.make ] || $(MAKE) distclean
	dh_clean 
	
	rm -f lib/proj/nad2bin
	rm -f tools/timer/main.o
	rm -f raster/r.le/r.le.setup/polytocell/*.o
	rm -f raster/r.terraflow/IOStream/lib/src/libiostream.a
	rm -f debian/$(BASE_NAME).1
	rm -f error.log
	# clean doxygen documentation (programming man)
	rm -rf doxygenhtml lib/vector/html lib/db/html lib/gis/html \
		lib/vector/latex lib/db/latex lib/gis/latex \
		lib/g3d/html \
		lib/ogsf/html \
		lib/proj/html \
		lib/gmath/html \
		lib/segment/html \
		lib/vector/dglib/html \
		rfc/html \
		swig/html \
		lib/g3d/latex \
		lib/ogsf/latex \
		lib/proj/latex \
		lib/gmath/latex \
		lib/segment/latex \
		lib/vector/dglib/latex \
		rfc/latex \
		swig/latex

install: build
	dh_testdir
	dh_testroot
	dh_prep
	dh_installdirs

	# install grass core into debian/tmp
	$(MAKE) $(STRIP)
	$(MAKE) install \
		INST_DIR=$(CURDIR)/debian/tmp/usr/lib/$(BASE_NAME) \
		PREFIX=$(CURDIR)/debian/tmp/usr/lib/$(BASE_NAME) \
		BINDIR=$(CURDIR)/debian/tmp/usr/bin

	# fix all the braindead scripts
	debian/fixscripts.sh

	# fix links
	debian/fixpaths.sh $(CURDIR)/debian/tmp debian/tmp
	
	# delete extra license files
	rm -f debian/tmp/usr/lib/$(BASE_NAME)/bwidget/LICENSE.txt

	# change section from 1 to .1grass 
	mv debian/tmp/usr/lib/$(BASE_NAME)/man/man1/grass6.1 debian/$(BASE_NAME).1
	for m in debian/tmp/usr/lib/$(BASE_NAME)/man/man1/*.1; do n=`basename $$m .1`; mv $$m debian/tmp/usr/lib/$(BASE_NAME)/man/man1/$$n.1grass; done
	for m in debian/tmp/usr/lib/$(BASE_NAME)/man/man1/*.1grass; do sed -i -e 's/^.TH \(.*\) 1/.TH \1 1grass/' $$m; done

	# install module makefile	
	install -m 644 include/Make/Module.make debian/$(PKG_NAME)-dev/usr/lib/$(BASE_NAME)/include/Make/Module.make

	# install pkg-config file
	install -m 644 grass.pc debian/$(PKG_NAME)-dev/usr/share/pkgconfig/$(BASE_NAME).pc

	# install icon file for debian menu system
	install -d debian/tmp/usr/share/icons debian/tmp/usr/bin
	install -m 644 debian/grass.xpm debian/tmp/usr/share/icons/$(BASE_NAME).xpm
	# install x-grass wrapper script
	install -m 755 debian/x-grass debian/tmp/usr/bin/x-grass

	ln -fs /usr/lib/$(shell objdump -p /usr/lib/`gdal-config --libs|cut -d' ' -f2|sed -e 's/-l/lib/'`.so|grep SONAME|cut -d' ' -f18) \
		debian/tmp/usr/lib/$(BASE_NAME)/lib/libgdal.so

install-indep: build-indep
	dh_testdir -i
	dh_testroot -i
	install -m 644  -d debian/tmp
	install -m 644  -d debian/tmp/programming-manual/vector/html/search \
			   debian/tmp/programming-manual/db/html/search \
			   debian/tmp/programming-manual/gis/html/search 
			   
	-install -m 644 lib/vector/html/* debian/tmp/programming-manual/vector/html
	-install -m 644 lib/vector/html/search/* debian/tmp/programming-manual/vector/html/search
	-install -m 644 lib/db/html/* debian/tmp/programming-manual/db/html
	-install -m 644 lib/db/html/search/* debian/tmp/programming-manual/db/html/search
	-install -m 644 lib/gis/html/* debian/tmp/programming-manual/gis/html
	-install -m 644 lib/gis/html/search/* debian/tmp/programming-manual/gis/html/search

# Build architecture-independent files here.
binary-indep: install install-indep 
	dh_testdir -i
	dh_testroot -i
	dh_installchangelogs -i CHANGES
	dh_installdocs -i
	dh_install -i
	dh_link -i
	dh_strip -i
	dh_compress -i
	dh_fixperms -i
	dh_installdeb -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

# Build architecture-dependent files here.
binary-arch: install
	dh_testdir -a
	dh_testroot  -a
	dh_installchangelogs -a CHANGES
	dh_installdocs  -a
	dh_installexamples  -a
	dh_install -a
	dh_installmenu -a
	dh_installman -p$(PKG_NAME) debian/$(BASE_NAME).1 -a
	dh_link -a
	dh_link usr/share/doc/grass/AUTHORS usr/lib/$(BASE_NAME)/AUTHORS \
		    usr/share/doc/grass/COPYING usr/lib/$(BASE_NAME)/COPYING \
		    usr/share/common-licenses/GPL-2 usr/lib/$(BASE_NAME)/GPL.TXT
	dh_strip -a
	dh_compress -a -XAUTHORS
	dh_fixperms -a
	dh_makeshlibs -a -a
	dh_installdeb -a
	dh_shlibdeps -a -l$(CURDIR)/debian/$(PKG_NAME)/usr/lib/$(BASE_NAME)/lib
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install configure true-clean versions

