#!/usr/bin/make -f

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
export MONO_SHARED_DIR=$(CURDIR)
DEB_CLI_API_VERSION = 2.0
MAKEFILE = $(firstword $(MAKEFILE_LIST))
DEBIAN_DIR = $(dir $(MAKEFILE))
SOURCE_DIR = $(DEBIAN_DIR)/..

DEB_VERSION = $(shell dpkg-parsechangelog -l$(DEBIAN_DIR)/changelog | grep ^Version | cut -d" " -f2)   
DEB_SOURCE_NAME = $(shell dpkg-parsechangelog -l$(DEBIAN_DIR)/changelog | grep ^Source | cut -d" " -f2)
VERSION = $(shell echo $(DEB_VERSION) | cut -d"-" -f1 | sed 's/+dfsg.*//')

include /usr/share/cli-common/cli.make

clean:
	[ ! -f mono-2-6/Makefile ] || $(MAKE) -C mono-2-6 distclean
	[ ! -f mono-basic-2-6/Makefile ] || $(MAKE) -C mono-basic-2-6 clean
	[ ! -f Makefile ] || $(MAKE) clean
	rm -fr monoprefix
	rm -f *-stamp
	# distclean misses stuff
	#find is so fucking obtuse, i give up on it & declare grep my new master
	find . -name "Makefile" | grep -v 'mono-2-6\|mono-basic-2-6' | xargs rm -f
	find -name "*.mdb" -delete
	find -name ".stamp" -delete
	rm -f mono-basic-2-6/tools/moonlight/*.exe*
	rm -fr mono-basic-2-6/class/lib/2.1/
	rm -fr mono-basic-2-6/class/lib/moonlight/
	rm -fr mono-2-6/mcs/class/lib/net_*/
	rm -f src/xaml-to-header.exe*
	rm -rf mono-2-6/mcs/tools/csharplib/out
	rm -f class/Microsoft.SilverlightControls/Controls/Resource.resources
	rm -f mono-2-6/mcs/class/System.Web.Mvc/System.Web.Mvc/Resources/MvcResources.resources
	rm -f mono-2-6/mcs/class/Managed.Windows.Forms/resources/keyboards.resources
	rm -f mono-2-6/mcs/class/Mono.Data.Sqlite/resources/SR.resources
	rm -f mono-basic-2-6/vbnc/vbnc/vbnc.vbnc.rsp
	rm -f mono-2-6/mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap.Utilclass/ResultCodeMessages.resources
	rm -f mono-2-6/mcs/class/System.Web/resources/TranslationResources.resources
	rm -f mono-2-6/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Rnc/RncParser.cs
	rm -f mono-2-6/mcs/class/Commons.Xml.Relaxng/y.output
	rm -f mono-2-6/mcs/class/Mono.WebBrowser/Mono.WebBrowser2K5.csproj
	rm -f class/System.Windows.Controls/*.resources
	rm -f mono-2-6/mcs/class/System.Data/Mono.Data.SqlExpressions/Parser.cs
	rm -f mono-2-6/mcs/class/System.Web/System.Web/UplevelHelper.cs
	rm -f mono-2-6/mcs/class/System.XML/Mono.Xml.Xsl/PatternParser.jay
	rm -f mono-2-6/mcs/class/corlib/net_1_1_aot.log
	rm -rf mono-2-6/mcs/build/deps/
	rm -f mono-2-6/dolt*
	rm -f stamp-h1
	rm -f config.h config.log config.status dolt* libtool
	rm -f mono-2-6/mcs/build/config.make
	rm -f plugin/install/install.rdf plugin/silverlight-versions.h
	rm -f tools/sockpol/sockpol
	rm -f moon.pc moonlight.spec
	rm -f src/codec-version.h src/drm.h src/fullscreen.h src/incomplete-support.h
	dh_prep
	dh_clean

configure: mono-install-stamp moonlight-configure-stamp

build: mono-build-stamp moonlight-build-stamp
	touch build-stamp

build-indep: build-stamp

build-arch: build-stamp

install-stamp: moonlight-build-stamp
	dh_testdir
	dh_testroot
	dh_installdirs
	$(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
	install -m 644 monoprefix/lib/libmono.so.0.0.0  debian/tmp/usr/lib/moonlight/
	install -m 755 monoprefix/bin/mono  debian/tmp/usr/lib/moonlight/
	chrpath -r /usr/lib/moonlight/ $(MONO_SHARED_DIR)/debian/tmp/usr/lib/libmoon.so.0.0.0
	chrpath -r /usr/lib/moonlight/ $(MONO_SHARED_DIR)/debian/tmp/usr/lib/moonlight/plugin/libmoonplugin.so
	dh_install --list-missing
	touch install-stamp

mono-install-stamp: mono-build-stamp
	cd mono-2-6 && $(MAKE) install

	#manually insert GTK# into monoprefix GAC
	$(MONO_SHARED_DIR)/monoprefix/bin/gacutil -i /usr/lib/cli/gtk-sharp-2.0/gtk-sharp.dll
	$(MONO_SHARED_DIR)/monoprefix/bin/gacutil -i /usr/lib/cli/atk-sharp-2.0/atk-sharp.dll
	$(MONO_SHARED_DIR)/monoprefix/bin/gacutil -i /usr/lib/cli/gdk-sharp-2.0/gdk-sharp.dll
	$(MONO_SHARED_DIR)/monoprefix/bin/gacutil -i /usr/lib/cli/glib-sharp-2.0/glib-sharp.dll
	$(MONO_SHARED_DIR)/monoprefix/bin/gacutil -i /usr/lib/cli/gtk-dotnet-2.0/gtk-dotnet.dll
	$(MONO_SHARED_DIR)/monoprefix/bin/gacutil -i /usr/lib/cli/pango-sharp-2.0/pango-sharp.dll

	touch mono-install-stamp

mono-build-stamp: mono-configure-stamp
	cd mono-2-6 && $(MAKE)
	touch mono-build-stamp

mono-configure-stamp:
	cd mono-2-6 && ./configure --prefix=$(MONO_SHARED_DIR)/monoprefix
	touch mono-configure-stamp

moonlight-build-stamp: moonlight-configure-stamp
	PATH=$(MONO_SHARED_DIR)/monoprefix/bin:$(PATH) $(MAKE)
	touch moonlight-build-stamp	

moonlight-configure-stamp: mono-install-stamp
	autoreconf
	PKG_CONFIG_PATH=$(MONO_SHARED_DIR)/monoprefix/lib/pkgconfig ./configure --with-mcspath=$(MONO_SHARED_DIR)/mono-2-6/mcs --with-mono-basic-path=$(MONO_SHARED_DIR)/mono-basic-2-6 --with-cairo=system --with-ff36=yes --with-ff3=no --prefix=/usr
	touch moonlight-configure-stamp

get-orig-source:
	uscan \
		--package $(DEB_SOURCE_NAME) \
		--watchfile $(DEBIAN_DIR)/watch \
		--upstream-version $(VERSION) \
		--download-version $(VERSION) \
		--destdir . \
		--force-download \
		--rename
	wget -c http://ftp.novell.com/pub/mono/sources/moon/$(VERSION)/mono-2.6.1.tar.bz2 
	wget -c http://ftp.novell.com/pub/mono/sources/moon/$(VERSION)/mono-basic-2.6.tar.bz2 
	mv mono-2.6.1.tar.bz2 ./moon_$(VERSION).orig-mono-2-6.tar.bz2
	mv mono-basic-2.6.tar.bz2 ./moon_$(VERSION).orig-mono-basic-2-6.tar.bz2

binary: install-stamp

binary-arch: install-stamp

override_dh_makeshlibs:
	dh_makeshlibs
	dh_makeshlibs -p libmoon -V'libmoon (>= $(VERSION)), libmoon (<< $(VERSION).)'

override_dh_makeclilibs:
	dh_makeclilibs -V

%:
	dh $@

.PHONY: build build-arch build-indep
