#!/usr/bin/make -f

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

# This has to be exported to make some magic below work.
export DH_OPTIONS

include /usr/share/quilt/quilt.make

# This is the Squeak version we are compiling
#debversion=$(shell grep AC_VM_VERSION  unix/config/configure.ac  | tr -dc '0-9a-z,' | cut -d ',' -f 1-3 | tr ',' '.')
debversion=$(shell grep VMMaker unix/src/vm/interp.h|tr '\015 ' '\012\012'|sed '1,/VMMaker/d;q')
debianmajor=$(shell echo $(debversion) | cut -d . -f 1)
debianminor=$(shell echo $(debversion) | cut -d . -f 2)
debianultraminor=$(shell echo $(debversion) | cut -d . -f 3)
svnversion=2357
debianversion=$(debianmajor).$(debianminor).$(debianultraminor)-$(svnversion)
#debianversion=$(debversion)-$(svnversion)

BUILD_TREE=$(CURDIR)/build-tree

# 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)
DEB_HOST_ARCH  ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)

INSTALL_PROGRAM = install
CFLAGS = -Wall -g

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

CMAKE_OPTS = -Wno-dev -D CMAKE_INSTALL_PREFIX=/usr -D CMAKE_SKIP_RPATH=TRUE -D BINDINGS_GLOBAL_INSTALL=TRUE -D PEDANTIC=TRUE
ifneq ($(DEB_HOST_ARCH),i386)
	CONFIG_OPTS=--without-RomePlugin --without-Mpeg3Plugin
endif

configure: patch configure-stamp
configure-stamp: 
	dh_testdir
ifneq "$(wildcard /usr/share/misc/config.sub)" ""
	cp -f /usr/share/misc/config.sub unix/cmake/config.sub
endif
ifneq "$(wildcard /usr/share/misc/config.guess)" ""
	cp -f /usr/share/misc/config.guess unix/cmake/config.guess
endif
	
	#put svn version for the squeak lib directory:
#	echo $(svnversion)>unix/svnversion
	# Perform an out-of-tree build to keep a clean source tree
	$(RM) Cross/plugins/RePlugin/pcre.c
	$(RM) Cross/plugins/RePlugin/pcre.h
	find Cross/plugins/JPEGReadWriter2Plugin/ -not -name 'jmemd*.c' -and -name 'j*.c' -delete
	find Cross/plugins/JPEGReadWriter2Plugin/ -not -name 'jinclude.h' -and -name 'j*.h' -delete
	mkdir $(BUILD_TREE)
	cd $(BUILD_TREE); ../unix/cmake/configure $(CONFIG_OPTS) \
		--host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE)  \
		--with-npsqueak --prefix=/usr --mandir=/usr/share/man 
	cd $(BUILD_TREE); cmake .. \
		-DCMAKE_INSTALL_PREFIX:STRING="/usr" \
		-DCMAKE_C_FLAGS:STRING="$(CFLAGS)" \
		../unix		

	touch $@


build: configure build-stamp
build-stamp:
	dh_testdir

	cd $(BUILD_TREE); $(MAKE)

    # uudecode desktop icons:
	for i in changeset changes image project sources; do \
	  f=linex/gnome-mime-application-squeak-$$i.png; \
	  if [ ! -s $$f ]; then \
	    uudecode -o $$f $$f.uu ; \
	    touch -r $$f.uu $$f ;\
	fi; \
	done    
	if [ ! -s linex/squeak.png ]; then \
	    uudecode -o linex/squeak.png linex/squeak.png.uu ; \
	    touch -r linex/squeak.png.uu linex/squeak.png;\
	fi
	    	
	touch $@

clean: 
	dh_testdir
	dh_testroot
	rm -f build-stamp configure-stamp
	rm -f unix/cmake/config.sub unix/cmake/config.guess
	${MAKE} -f debian/rules unpatch	
#	rm -f unix/svnversion
#	rm -Rf unix/config
	rm -rf $(BUILD_TREE)
	rm -rf linex
		
	dh_clean 

install: build
	dh_testdir
	dh_testroot
	dh_clean -k
	dh_installdirs

	cd $(BUILD_TREE); $(MAKE) install DESTDIR=$(CURDIR)/debian/squeak-vm $(INSTALL_OVERRIDES)
	cp -f $(CURDIR)/linex/squeakmime.debian $(CURDIR)/debian/squeak-vm/usr/lib/mime/packages/squeak
	strip -s --remove-section=.comment debian/squeak-vm/usr/lib/squeak/$(debianversion)/*
	rm -f $(CURDIR)/debian/squeak-vm/usr/bin/squeak.sh
	for y in linex/po/*.po; do \
	  i=`basename $$y .po`; \
	  mkdir -p $(CURDIR)/debian/squeak-vm/usr/share/locale/$$i/LC_MESSAGES/; \
	  msgfmt $$y -o $(CURDIR)/debian/squeak-vm/usr/share/locale/$$i/LC_MESSAGES/squeak.mo --statistics ; \
	done 

	dh_install

binary-indep: build install

binary-arch: build install
	dh_testdir
	dh_testroot
	dh_installdocs
	dh_installmenu
	dh_installchangelogs unix/ChangeLog
	dh_installmenu
	dh_installmime
	dh_installman
	dh_compress
	dh_fixperms
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb


binary:  binary-arch  binary-indep

# print the current version, as this file sees it
version::
	@echo "The Debian version is $(debversion)"
	@echo "Ian's version number is $(debianversion)"

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