#!/usr/bin/make -f
# The template for this file was originally written by Joey Hess and Craig Small.
# Developed for Gnash by Miriam Ruiz

# 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)

MAIN_VERSION = $(shell head -n 1 debian/changelog | cut '-d ' -f 2 | sed 's/[()]//g')
#BUILD_VERSION = cvs$(shell head -n 1 debian/changelog | cut '-d ' -f 2 | sed 's/^.*cvs//' | sed 's/\..*-.*//')
BUILD_VERSION = $(shell head -n 1 debian/changelog | cut '-d ' -f 2 | sed 's/^[()]//' | sed 's/-.*//' | sed 's/~.*//' | sed 's/+.*//')

INFILES := $(wildcard debian/*.desktop.in)
OUTFILES := $(INFILES:.desktop.in=.desktop)
MANPTOFIX := $(addprefix debian/tmp/usr/share/man/man1/, $(notdir $(basename $(wildcard doc/C/preformatted/*.1.in))))

%.desktop: %.desktop.in
	intltool-merge -d debian/po $< $@

CFLAGS = -Wall -g -Werror-implicit-function-declaration
LDFLAGS = -Wl,--no-add-needed

ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
	CFLAGS += -O0
else
	CFLAGS += -O2
endif
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
	NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
	MAKEFLAGS += -j$(NUMJOBS)
endif

# shared library versions, option 1
#version=2.0.5
#major=2
# option 2, assuming the library is created as src/.libs/libfoo.so.2.0.5 or so
#version=`ls src/.libs/lib*.so.* | \
# awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'`
#major=`ls src/.libs/lib*.so.* | \
# awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'`

# CONFIGURE

CONFIGURE_FLAGS = \
		CFLAGS="$(CFLAGS)" \
		CXXFLAGS="$(CXXFLAGS)" \
		LDFLAGS="$(LDFLAGS)" \
		--host=$(DEB_HOST_GNU_TYPE) \
		--build=$(DEB_BUILD_GNU_TYPE) \
		--prefix=/usr \
		--sysconfdir=/etc \
		--mandir=\$${prefix}/share/man \
		--infodir=\$${prefix}/share/info \
		--disable-testsuite \
		--without-swfdec-testsuite \
		--without-ming \
		--disable-dependency-tracking \
		--disable-rpath \
		--enable-cygnal \
		--enable-python \
		--enable-jemalloc \
		--enable-hwaccel=none \
		--enable-media='gst,ffmpeg' \
		--enable-gui='gtk,kde4' \
		--enable-renderer=all \
		--enable-docbook \
		--with-npapi-plugindir=\$${prefix}/lib/gnash \
		--with-plugins-install=system \
		--enable-shared=yes \
		--without-included-ltdl

config: config-stamp
config-stamp:
	dh_testdir

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

	printf "\n == AUTOGEN ===================================================== \n\n"
	if test -e autogen.sh; then ./autogen.sh; else sh debian/autogen.sh; fi
	printf "\n -------------------------------------------- End of AUTOGEN ---- \n\n"

	printf "\n == CONFIGURE =================================================== \n\n"
	# In the future, I want to add LDFLAGS="-Wl,-z,defs"
	if ! test -d tmp.build; then printf "\ntmp.build already exists!!!\n\n"; fi
	mkdir -p tmp.build
	cd tmp.build && ../configure VERSION="$(BUILD_VERSION)" $(CONFIGURE_FLAGS); \
	printf "\n ------------------------------------------- End of CONFIGURE ---- \n\n"

	touch $@

# BUILD

build: build-stamp
build-stamp: config-stamp $(OUTFILES)
	dh_testdir

	printf "\n == MAKE ======================================================== \n\n"
	$(MAKE) -C tmp.build VERSION="$(BUILD_VERSION)"
	$(MAKE) -C tmp.build apidoc
	printf "\n ----------------------------------------------- End of MAKE ---- \n\n"

	printf "\n == CHECK ======================================================= \n\n"
	$(MAKE) -C tmp.build check
	printf "\n ---------------------------------------------- End of CHECK ---- \n\n"

	cd debian && for i in *.sng; do sng "$$i"; done

	touch $@

# CLEAN

clean:
	dh_testdir
	dh_testroot
	rm -f config-stamp build-stamp
	rm -f $(OUTFILES)
	ls $(INFILES) | sed 's#^#../#' >debian/po/POTFILES.in
	cd debian/po && intltool-update -g debian --pot && \
		for i in *.po; do intltool-update -g debian --dist $${i%.po}; done
	rm -f debian/po/POTFILES.in

#ifeq (Makefile,$(wildcard Makefile))
#	[ ! -f Makefile ] || $(MAKE) maintainer-clean
#	[ ! -f Makefile ] || $(MAKE) distclean
#endif

ifneq ($(wildcard ${AUTO_JUNK}),)
	rm $(wildcard ${AUTO_JUNK})
endif

	rm -f config.sub config.guess config.log config.status
	rm -f libtool
	rm -f `find . -name "Makefile"| grep -v "debian/"`
	rm -f `find . -name "*.o"`
	rm -rf `find . -name ".libs"`
	rm -rf `find . -name ".deps"`
	rm -rf po/*.gmo
	rm -f compile

	rm -f configure aclocal.m4 config.h.in
	#-find . -name Makefile.in -exec rm {} \;
	-rm `find . -name Makefile.in`

	-rm -f debian/*.png

	rm -rf debian/tmp debian/tmp.opengl tmp.build

	dh_clean 

# INSTALL

install: build
	dh_testdir
	dh_testroot
	dh_clean -k 
	dh_installdirs

	install -d $(CURDIR)/debian/tmp/usr/bin
	install -d $(CURDIR)/debian/tmp/usr/lib
	install -d $(CURDIR)/debian/tmp/usr/lib/gnash/

	printf "\n == INSTALL ===================================================== \n\n"
	$(MAKE) -C tmp.build install VERSION="$(BUILD_VERSION)" DESTDIR=$(CURDIR)/debian/tmp
	printf "\n -------------------------------------------- End of INSTALL ---- \n\n"

	install -d $(CURDIR)/debian/tmp/usr/share/apps/klash
	install -d $(CURDIR)/debian/tmp/usr/share/services

	printf "\n == INSTALL PLUGINS ============================================= \n\n"
	$(MAKE) -C tmp.build install-plugins VERSION="$(BUILD_VERSION)" DESTDIR=$(CURDIR)/debian/tmp
	printf "\n ------------------------------------ End of INSTALL PLUGINS ---- \n\n"

	printf "\n == LIST OF FILES =============================================== \n\n"
	cd $(CURDIR)/debian/tmp && find
	printf "\n -------------------------------------- End of LIST OF FILES ---- \n\n"

# CREATE PACKAGES

# Build architecture-independent files here.
binary-indep: install
	dh_testdir
	dh_testroot
	dh_installchangelogs -i NEWS
	dh_installdocs -i
	dh_installexamples -i
	dh_install -i --sourcedir=$(CURDIR)/debian
	dh_installmime -i
	dh_link -i
	dh_strip -i
	dh_compress -i
	dh_fixperms -i
	dh_installdeb -i
	dh_shlibdeps -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

# Build architecture-dependent files here.
binary-arch: install
	dh_testdir
	dh_testroot
	dh_installchangelogs -a NEWS
	dh_installinfo -a
	dh_installdocs -a
	dh_installexamples -a
	dh_install -a --sourcedir=$(CURDIR)/debian

	cd "$(CURDIR)"/debian/overrides/ && for i in *; do \
		echo "Installing Lintian override file for \"$$i\"" ; \
		mkdir -p "$(CURDIR)"/debian/"$$i"/usr/share/lintian/overrides/ ; \
		cp "$$i" "$(CURDIR)"/debian/"$$i"/usr/share/lintian/overrides/ ; \
	done

#	dh_installmenu -a
	dh_installmime -a
	# lintian: hyphen-used-as-minus-sign
	for manfile in $(MANPTOFIX); do \
			sed -i '2,$$s/[:alnum:\\]\?\-/\\\-/g' $$manfile; \
	done
	dh_installman -a
	dh_link -a
	dh_strip -a --dbg-package=gnash-dbg
	dh_compress -a
	dh_fixperms -a
	dh_makeshlibs -a -n
	dh_shlibdeps -a
	# dh_buildinfo output only in gnash-common
	dh_buildinfo -pgnash-common
	dh_installdeb -a
	dh_gencontrol -a -Nswfdec-gnome
	# add epoch to swfdec-gnome for transition
	dh_gencontrol -pswfdec-gnome -- -v1:$(MAIN_VERSION)
	dh_md5sums -a
	dh_builddeb -a

VER = $(BUILD_VERSION).git$(shell date -u '+%Y%m%d')
TMPDIR = gnash-$(VER)
get-git-source:
	@echo Git cloning gnash $(VER)...
	git clone --depth 1 git://git.savannah.gnu.org/gnash.git $(TMPDIR)
	tar --exclude .git -zcf ../gnash_$(VER).orig.tar.gz $(TMPDIR)
	rm -rf $(TMPDIR) && dch -v $(VER)-1 "Git snapshot."

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