#!/usr/bin/make -f

CABFILE=wine_gecko-1.0.0-x86.cab
TARGET=i686-w64-mingw32
SUFFIX=-unstable

#ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
#NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
#MAKEFLAGS += -j$(NUMJOBS)
#endif

MOZCONFIG_STD=$(CURDIR)/wine/mozconfig
MOZCONFIG_DBG=$(CURDIR)/wine/mozconfig-dbg

export CROSS_COMPILE=1
# for primary build system
export CFLAGS=-I$(CURDIR)/include
export CXXFLAGS=-I$(CURDIR)/include
export LDFLAGS=-L$(CURDIR)/lib
# for secondary build system (in security/)
export OS_CFLAGS=-I$(CURDIR)/include
export OS_DLLFLAGS=-L$(CURDIR)/lib

DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)

# Preparing Win32 API
# Currently, wine-gecko is meant to be built with mingw32.
# Unfortunately, the w32api in mingw32-runtime may be buggy
# and incomplete, so some patching may be needed here.

include:
	rm -rf include lib
	mkdir include lib

	# Install new and patched headers
	cp wine/include/* include
	# Some of the mingw headers no longer need patching
	rm -f include/shlobj.h include/windows.h

	# this hack is needed because of annoying mingw bug
	(cd js/src && ln -sf /usr/$(TARGET)/include/float.h)

# Build Tools

buildtools:
	dh_testdir
	rm -rf buildtools
#	# unpack Mozilla build tools
#	unzip -q wintools.zip
#	# convert .h files to unix eol convention
#	(cd buildtools/windows/include && dos2unix *.h)
#	(cd buildtools/windows/include/libIDL && dos2unix *.h)
#	# create dummy buildtools directory
#	mkdir -p buildtools/windows

# targets for configuring

wine_gecko: buildtools include
	dh_testdir
	rm -rf wine_gecko
	MOZCONFIG="$(MOZCONFIG_STD)" \
	$(MAKE) -f client.mk configure

wine_gecko-dbg: buildtools include wine_gecko
	dh_testdir
	rm -rf wine_gecko-dbg
	MOZCONFIG="$(MOZCONFIG_DBG)" \
	$(MAKE) -f client.mk configure

# targets for building

wine_gecko/dist: wine_gecko
	dh_testdir
	MOZCONFIG="$(MOZCONFIG_STD)" \
	$(MAKE) -f client.mk build

wine_gecko-dbg/dist: wine_gecko-dbg
	dh_testdir
	MOZCONFIG="$(MOZCONFIG_DBG)" \
	$(MAKE) -f client.mk build

# targets for cleaning

build-clean:
	dh_testdir
	-$(MAKE) -f client.mk cleansrcdir
	rm -rf wine_gecko wine_gecko-dbg
	rm -f a.out confdefs.h configure js/src/configure \
	 .mozconfig.mk .mozconfig.out security/manager/.nss.checkout
	dh_clean

# standard targets

configure: wine_gecko

build: wine_gecko/dist wine_gecko-dbg/dist

clean: build-clean
	dh_testdir
	rm -rf buildtools include lib
	rm -f js/src/float.h
	find -name "*.pyc" -exec rm {} \;

binary-arch:

binary-indep: build
	dh_testdir
	dh_testroot
	dh_prep -i

	MOZCONFIG="$(MOZCONFIG_STD)" \
	wine/make_package wine_gecko
	mkdir -p debian/libwine-gecko$(SUFFIX)/usr/share/wine$(SUFFIX)/gecko
	(cd wine_gecko/dist && lcab -r wine_gecko \
	 $(CURDIR)/debian/libwine-gecko$(SUFFIX)/usr/share/wine$(SUFFIX)/gecko/$(CABFILE))
	install -D toolkit/content/license.html \
	 debian/libwine-gecko$(SUFFIX)/usr/share/doc/libwine-gecko$(SUFFIX)/mozilla-copyright.html
	install -D LICENSE \
	 debian/libwine-gecko$(SUFFIX)/usr/share/doc/libwine-gecko$(SUFFIX)/MPL

	MOZCONFIG="$(MOZCONFIG_DBG)" \
	wine/make_package-dbg wine_gecko-dbg
	mkdir -p debian/libwine-gecko-dbg$(SUFFIX)/usr/share/wine$(SUFFIX)/gecko
	(cd wine_gecko-dbg/dist && lcab -r wine_gecko \
	 $(CURDIR)/debian/libwine-gecko-dbg$(SUFFIX)/usr/share/wine$(SUFFIX)/gecko/$(CABFILE))
	install -D toolkit/content/license.html \
	 debian/libwine-gecko-dbg$(SUFFIX)/usr/share/doc/libwine-gecko-dbg$(SUFFIX)/mozilla-copyright.html
	install -D LICENSE \
	 debian/libwine-gecko-dbg$(SUFFIX)/usr/share/doc/libwine-gecko-dbg$(SUFFIX)/MPL

	dh_installdocs -i
	dh_installchangelogs -i
	dh_compress -i
	dh_fixperms -i
	dh_installdeb -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

binary: binary-indep

patch: wine-mozilla buildtools include

# Upstream source must be repacked for DFSG compliance
get-orig-source:
	uscan --download --destdir . --force-download

.PHONY: configure build build-clean clean install \
 binary-arch binary-indep binary patch get-orig-source
