#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dh-make.

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

# Determine Maemo version
MAEMO_VERSION := $(shell cut -d"." -f1 /etc/maemo_version)

# Determine app version from debian changelog
GAME_VERSION := $(shell head -n 1 debian/changelog | sed 's/[^0-9.-]//g')

# Default CFLAGS
CFLAGS := -Wall -g -DMAEMO -DMAEMO_VERSION=$(MAEMO_VERSION)
CXXFLAGS := -Wall -g -DMAEMO -DMAEMO_VERSION=$(MAEMO_VERSION)
GUI_CFLAGS := -std=c99 -fPIC -shared $(CFLAGS)
LDFLAGS := -Wl,-z,defs -Wl,-O1
GUI_LDFLAGS := -export-dynamic -avoid-version -module -shared $(LDFLAGS)
ASFLAGS := -g

# Compiler optimization settings
OPT_CFLAGS := -O2 -fomit-frame-pointer -ffast-math
OPT_CXXFLAGS := $(OPT_CFLAGS) -fno-exceptions -fno-rtti

M4=m4
M4DEFS=-DMAEMO_MAJOR=$(MAEMO_VERSION)

# Architecture specific CFLAGS
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
	CFLAGS += -O0
	CXXFLAGS += -O0
	GUI_CFLAGS += -O0
else ifneq (,$(findstring armel,$(ARCH)))
	CFLAGS += $(OPT_CFLAGS)
	CXXFLAGS += $(OPT_CXXFLAGS)
	GUI_CFLAGS += -Os
	ifneq (,$(findstring vfp,$(DEB_BUILD_OPTIONS)))
		CFLAGS += -march=armv6j -mtune=arm1136jf-s -mfpu=vfp -mfloat-abi=softfp
		ASFLAGS += -march=armv6j -mfpu=vfp -mfloat-abi=softfp
	endif
	ifeq ($(shell expr "$(MAEMO_VERSION)" "<" 5), 1)
		# Fixes hang while exiting in Diablo.
		CFLAGS += -static-libgcc
	endif
else ifneq (,$(findstring i386,$(ARCH)))
	CFLAGS += $(OPT_CFLAGS)
	CXXFLAGS += $(OPT_CXXFLAGS)
	GUI_CFLAGS += -O2
else
	# Don't support anything else
	crash
endif

debian/control: debian/control.m4
	$(M4) $(M4DEFS) debian/control.m4 > debian/control

configure: configure-stamp
configure-stamp:
	dh_testdir
	$(M4) $(M4DEFS) debian/control.m4 > debian/control
	$(M4) $(M4DEFS) debian/drnoksnes.postinst.m4 > debian/drnoksnes.postinst
	
	echo ARCH="$(ARCH)" > config.mk
	echo CONF_GUI=1 >> config.mk
ifeq ($(shell expr "$(MAEMO_VERSION)" ">" 4), 1)
	# Maemo 5 devices do not support Xsp
	# But they support hildon compositing stuff
	echo CONF_HD=1 >> config.mk
else
	echo CONF_XSP=1 >> config.mk
endif
	echo CONF_ZEEMOTE=1 >> config.mk
	echo ASFLAGS="$(ASFLAGS)" >> config.mk
	echo CFLAGS="$(CFLAGS)" >> config.mk
	echo CXXFLAGS="$(CXXFLAGS)" >> config.mk
	echo LDFLAGS="$(LDFLAGS)" >> config.mk
	
	echo CONF_NLS=1 > gui/config.mk
	echo CFLAGS="$(GUI_CFLAGS)" >> gui/config.mk
	echo LDFLAGS="$(GUI_LDFLAGS)" >> gui/config.mk
	echo MAEMO_VERSION="$(MAEMO_VERSION)" >> gui/config.mk
	echo GAME_VERSION="$(GAME_VERSION)" >> gui/config.mk
	
	touch configure-stamp

build: build-stamp
build-stamp: configure-stamp 
	dh_testdir
	$(MAKE)
	touch $@

clean:
	dh_testdir
	dh_testroot
	rm -f build-stamp configure-stamp
	-$(MAKE) clean
	rm -f config.mk gui/config.mk
	dh_clean

install: build
	dh_testdir
	dh_testroot
	dh_clean -k 
	dh_installdirs
	$(MAKE) DESTDIR=$(CURDIR)/debian/drnoksnes GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 install

# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.

# Build architecture-dependent files here.
binary-arch: build install
	dh_testdir
	dh_testroot
#	dh_installchangelogs 
#	dh_installdocs
#	dh_installexamples
#	dh_installman
	dh_gconf
#	Fixes a nasty bug with dh_gconf & busybox
	rm -f $(CURDIR)/debian/drnoksnes.postrm.debhelper
	dh_link
	dh_strip --dbg-package=drnoksnes-dbg
	dh_compress
	dh_fixperms
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

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