#!/usr/bin/make -f

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

export DEB_BUILD_MAINT_OPTIONS = hardening=+all
include /usr/share/dpkg/buildflags.mk
include /usr/share/dpkg/architecture.mk

GTK_VERSIONS = 2.0 3.0

CFLAGS += -Wall -fno-delete-null-pointer-checks -Wno-expansion-to-defined
LDFLAGS += -Wl,--as-needed

COMMON_CONFIGURE_ARGUMENTS = \
	--libdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH) \
	--disable-silent-rules \
	--host=$(DEB_HOST_GNU_TYPE) \
	--build=$(DEB_BUILD_GNU_TYPE) \
	--enable-introspection \
	--enable-geolocation

# Sacrifice speed in order to make it more likely resource limits
# won't be hit.
ifeq ($(DEB_HOST_ARCH_BITS),32)
	LDFLAGS += -Wl,--no-keep-memory
endif

ifeq ($(DEB_BUILD_ARCH),alpha)
        LDFLAGS += -Wl,--no-relax
endif

# The size of the debugging symbols is causing problems
# in all these arches, so use -g1
ifneq (,$(filter $(DEB_BUILD_ARCH),i386 hurd-i386 ia64 kfreebsd-i386 kfreebsd-amd64 mips mipsel mips64el powerpc powerpcspe s390 s390x sparc armel armhf hppa arm64))
	CFLAGS := $(CFLAGS:-g=-g1)
endif

# disable jit on some architectures (bug #651636)
ifneq (,$(filter $(DEB_BUILD_ARCH),armel armhf mips mipsel))
	COMMON_CONFIGURE_ARGUMENTS += --disable-jit
endif

# See https://bugs.webkit.org/show_bug.cgi?id=113638
ifeq (,$(filter $(DEB_BUILD_ARCH),i386 amd64 hurd-i386 kfreebsd-i386 kfreebsd-amd64 armel armhf mips mipsel))
	CPPFLAGS += -DENABLE_JIT=0 -DENABLE_YARR_JIT=0 -DENABLE_ASSEMBLER=0
endif

# Disabling GLX on ARM will make it use EGL, which works better.
ifneq (,$(filter $(DEB_BUILD_ARCH),armel armhf arm64))
       COMMON_CONFIGURE_ARGUMENTS += --enable-glx=no
endif

ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
	COMMON_CONFIGURE_ARGUMENTS += --disable-fast-malloc --disable-optimizations
endif

ifneq (,$(filter debug,$(DEB_BUILD_OPTIONS)))
	COMMON_CONFIGURE_ARGUMENTS += --enable-debug
else
	CPPFLAGS += -DNDEBUG -DG_DISABLE_CAST_CHECKS
endif

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

ifeq ($(shell dpkg-vendor --derives-from Ubuntu && echo yes),yes)
	DEB_DH_GENCONTROL_ARGS += -- -Vgst:Recommends=""
else
	DEB_DH_GENCONTROL_ARGS += -- -Vgst:Recommends="gstreamer1.0-plugins-bad, gstreamer1.0-libav,"
endif

clean:
	dh_testdir
	dh_testroot

	rm -f reconf-stamp build-stamp install-stamp
	rm -rf build-*
	rm -rf debian/tmp-*
	rm -f Source/WebKit/gtk/docs/version.xml
	find . -name \*.pyc -delete

	dh_autoreconf_clean

	dh_clean

build: build-arch build-indep

build-indep:

build-arch: build-stamp

reconf-stamp:
	dh_testdir
	# See https://bugs.webkit.org/show_bug.cgi?id=117334
	dh_autoreconf autoreconf -- -fiv -I Source/autotools
	touch reconf-stamp

build-stamp: reconf-stamp
	dh_testdir

ifeq (3.0,$(filter 3.0,$(GTK_VERSIONS)))
	test -d build-3.0 || mkdir build-3.0
	cd build-3.0; \
	env -u AR_FLAGS \
	CFLAGS="$(CFLAGS)" \
	CXXFLAGS="$(CFLAGS)" \
	CPPFLAGS="$(CPPFLAGS)" \
	LDFLAGS="$(LDFLAGS)" \
	../configure --prefix=/usr \
		--with-gtk=3.0 \
		$(COMMON_CONFIGURE_ARGUMENTS) \
		--disable-webkit2

	$(MAKE) $(MAKEARGUMENTS) -C build-3.0

	$(MAKE) -C build-3.0 install DESTDIR="$(CURDIR)"/debian/tmp-3.0
	ln -s JavaScriptCore-3.0.typelib \
		debian/tmp-3.0/usr/lib/$(DEB_HOST_MULTIARCH)/girepository-1.0/JSCore-3.0.typelib
	mv debian/tmp-3.0/usr/bin/jsc-3 debian/tmp-3.0/usr/bin/jsc

	rm -rf build-3.0
endif

ifeq (2.0,$(filter 2.0,$(GTK_VERSIONS)))
	test -d build-2.0 || mkdir build-2.0
	cd build-2.0; \
	env -u AR_FLAGS \
	CFLAGS="$(CFLAGS)" \
	CXXFLAGS="$(CFLAGS)" \
	CPPFLAGS="$(CPPFLAGS)" \
	LDFLAGS="$(LDFLAGS)" \
	../configure --prefix=/usr \
		--with-gtk=2.0 \
		$(COMMON_CONFIGURE_ARGUMENTS) \
		--disable-webkit2

	$(MAKE) $(MAKEARGUMENTS) -C build-2.0

	$(MAKE) -C build-2.0 install DESTDIR="$(CURDIR)"/debian/tmp-2.0

	rm -rf build-2.0
endif

	touch $@

# Build architecture-independent files here.
binary-indep: build
	dh_testdir
	dh_testroot
	dh_installdocs -i
	dh_installchangelogs -i
	dh_install -plibwebkitgtk-doc
	dh_lintian -i
	dh_link -i
	dh_compress -i
	dh_fixperms -i
	dh_installdeb -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i -- -Zxz

# Build architecture-dependent files here.
binary-arch: build install
	dh_testdir
	dh_testroot
	dh_installdocs -a
	dh_installchangelogs -a
ifeq (2.0,$(filter 2.0,$(GTK_VERSIONS)))
	dh_install -plibjavascriptcoregtk-1.0-0 --sourcedir=debian/tmp-2.0
	dh_install -plibjavascriptcoregtk-1.0-dev --sourcedir=debian/tmp-2.0
	dh_install -plibwebkitgtk-1.0-0 --sourcedir=debian/tmp-2.0
	dh_install -plibwebkitgtk-dev --sourcedir=debian/tmp-2.0
endif
ifeq (3.0,$(filter 3.0,$(GTK_VERSIONS)))
	dh_install -plibjavascriptcoregtk-3.0-0 --sourcedir=debian/tmp-3.0
	dh_install -plibjavascriptcoregtk-3.0-dev --sourcedir=debian/tmp-3.0
	dh_install -plibjavascriptcoregtk-3.0-bin --sourcedir=debian/tmp-3.0
	dh_install -pgir1.2-javascriptcoregtk-3.0 --sourcedir=debian/tmp-3.0
	dh_install -plibwebkitgtk-3.0-0 --sourcedir=debian/tmp-3.0
	dh_install -plibwebkitgtk-3.0-dev --sourcedir=debian/tmp-3.0
	dh_install -pgir1.2-webkit-3.0 --sourcedir=debian/tmp-3.0
	dh_installman -plibjavascriptcoregtk-3.0-bin
endif
	dh_link -a
	dh_lintian -a
ifeq (2.0,$(filter 2.0,$(GTK_VERSIONS)))
	dh_strip -plibjavascriptcoregtk-1.0-0 --ddeb-migration='libjavascriptcoregtk-1.0-0-dbg (<< 2.4.10)'
	dh_strip -plibwebkitgtk-1.0-0 --ddeb-migration='libwebkitgtk-1.0-0-dbg (<< 2.4.10)'
endif
ifeq (3.0,$(filter 3.0,$(GTK_VERSIONS)))
	dh_strip -plibjavascriptcoregtk-3.0-0 --ddeb-migration='libjavascriptcoregtk-3.0-0-dbg (<< 2.4.10)'
	dh_strip -plibwebkitgtk-3.0-0 --ddeb-migration='libwebkitgtk-3.0-0-dbg (<< 2.4.10)'
endif
	dh_strip -a
	dh_compress -a
	dh_fixperms -a
ifeq (2.0,$(filter 2.0,$(GTK_VERSIONS)))
	dh_makeshlibs -plibjavascriptcoregtk-1.0-0 -V 'libjavascriptcoregtk-1.0-0 (>= 1.5.1)' -- -c4
	dh_makeshlibs -plibwebkitgtk-1.0-0 -V 'libwebkitgtk-1.0-0 (>= 1.3.9)' -- -c4
endif
ifeq (3.0,$(filter 3.0,$(GTK_VERSIONS)))
	dh_makeshlibs -plibjavascriptcoregtk-3.0-0 -V 'libjavascriptcoregtk-3.0-0 (>= 1.5.1)' -- -c4
	dh_makeshlibs -plibwebkitgtk-3.0-0 -V 'libwebkitgtk-3.0-0 (>= 1.3.9)' -- -c4
	dh_girepository --package=gir1.2-javascriptcoregtk-3.0
	dh_girepository --package=gir1.2-webkit-3.0
endif
	dh_installdeb -a
	dh_shlibdeps -a
	dh_gencontrol -a
	dh_md5sums -a
	DEB_BUILD_OPTIONS="$(filter-out parallel=%,$(DEB_BUILD_OPTIONS))" \
		dh_builddeb -a -- -Zxz

binary: binary-indep binary-arch

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