#!/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
export DH_OPTIONS

include /usr/share/cdbs/1/class/mingw64.mk

MINGW64_CONFIGURE	= RANLIB=/usr/bin/x86_64-w64-mingw32-ranlib \
				CC=/usr/bin/x86_64-w64-mingw32-gcc \
				./configure \
				--prefix=$(MINGW64_SYSROOT)mingw

MINGW32_CONFIGURE	= RANLIB=/usr/bin/i686-w64-mingw32-ranlib \
				CC=/usr/bin/i686-w64-mingw32-gcc \
				./configure \
				--prefix=$(MINGW32_SYSROOT)mingw


MINGW64_ENVARS		= CFLAGS="-I$(MINGW64_SYSROOT)mingw/include" \
				CXXFLAGS="-I$(MINGW64_SYSROOT)mingw/include" \
				LDFLAGS="-L$(MINGW64_SYSROOT)mingw/lib" \
				CC=/usr/bin/x86_64-w64-mingw32-gcc \
				CXX=/usr/bin/x86_64-w64-mingw32-g++ \
				AR=/usr/bin/x86_64-w64-mingw32-ar \
				DLLWRAP=/usr/bin/x86_64-w64-mingw32-dllwrap \
				STRIP=/usr/bin/x86_64-w64-mingw32-strip \
				RC=/usr/bin/x86_64-w64-mingw32-windres

MINGW32_ENVARS		= CFLAGS="-I$(MINGW32_SYSROOT)mingw/include" \
				CXXFLAGS="-I$(MINGW32_SYSROOT)mingw/include" \
				LDFLAGS="-L$(MINGW32_SYSROOT)mingw/lib" \
				CC=/usr/bin/i686-w64-mingw32-gcc \
				CXX=/usr/bin/i686-w64-mingw32-g++ \
				AR=/usr/bin/i686-w64-mingw32-ar \
				DLLWRAP=/usr/bin/i686-w64-mingw32-dllwrap \
				STRIP=/usr/bin/i686-w64-mingw32-strip \
				RC=/usr/bin/i686-w64-mingw32-windres

BUILD_ROOT	= debian/tmp
PREFIX		= /usr

CFLAGS		= -Wall -g
INSTALL		= install
INSTALL_FILE	= $(INSTALL) -p -o root -g root -m 644
INSTALL_PROGRAM	= $(INSTALL) -p -o root -g root -m 755
INSTALL_SCIPRT	= $(INSTALL) -p -o root -g root -m 755
INSTALL_DIR	= $(INSTALL) -p -d -o root -g root -m 755

ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
	CFLAGS += -O0
else
	CFLAGS += -O2
endif

ifeq (,$(filter nostrip,$(DEB_BUILD_OPTIONS)))
	INSTALL_PROGRAM += -s
endif

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

configure: configure-stamp
configure-stamp:
	dh_testdir
	
	mkdir -p build/64
	mkdir -p build/32
	# Limitations of the zlib build system phenomenon
	for l in $$(ls -A); do \
		if [ "$$l" != "build" ]; then \
			cp -R $$l build/64; \
			cp -R $$l build/32; \
		fi \
	done
	cd build/64 && $(MINGW64_ENVARS) $(MINGW64_CONFIGURE) 
	
	cd build/32 && $(MINGW32_ENVARS) $(MINGW32_CONFIGURE) 
	
	touch configure-stamp

build: build-stamp
build-stamp: configure-stamp
	
	# Build 32
	
	cd build/32 && $(MAKE) $(MAKEOPTS) -f win32/Makefile.gcc \
		$(MINGW32_ENVARS) \
		all
	
	#cd build/32/contrib/minizip && \
	#autoreconf -fi && \
	#echo "lt_cv_deplibs_check_method='pass_all'" >> config.cache && \
	#CFLAGS="-I$(CURDIR)/" LDFLAGS="-L$(CURDIR)/build/32" $(MINGW32_CONFIGURE) --host=$(MINGW32_TARGET) && \
	#$(MAKE) $(MAKEOPTS) CFLAGS=-shared LDFLAGS=-no-undefined
	
	# Build 64
	
	cd build/64 && $(MAKE) $(MAKEOPTS) -f win32/Makefile.gcc \
		$(MINGW64_ENVARS) \
		all
	
	#cd build/64/contrib/minizip && \
	#autoreconf --install && \
	#echo "lt_cv_deplibs_check_method='pass_all'" >> config.cache && \
	#CFLAGS="-I$(CURDIR)" LDFLAGS="-L$(CURDIR)/build/64" $(MINGW64_CONFIGURE) --host=$(MINGW64_TARGET) && \
	#$(MAKE) $(MAKEOPTS) CFLAGS=-shared LDFLAGS=-no-undefined
	
	touch build-stamp

clean:
	dh_testdir
	dh_testroot
	rm -rf build-stamp configure-stamp build $(BUILD_ROOT)
	dh_clean

install: build
	dh_testdir
	dh_testroot
	dh_installdirs
	
	# Install 32-bit
	mkdir -p $(BUILD_ROOT)/32$(MINGW32_SYSROOT)mingw/bin
	mkdir -p $(BUILD_ROOT)/32$(MINGW32_SYSROOT)mingw/include
	mkdir -p $(BUILD_ROOT)/32$(MINGW32_SYSROOT)mingw/lib
	cd build/32 && $(MAKE) -f win32/Makefile.gcc \
		INCLUDE_PATH=$(CURDIR)/$(BUILD_ROOT)/32$(MINGW32_SYSROOT)mingw/include \
		LIBRARY_PATH=$(CURDIR)/$(BUILD_ROOT)/32$(MINGW32_SYSROOT)mingw/lib \
		BINARY_PATH=$(CURDIR)/$(BUILD_ROOT)/32$(MINGW32_SYSROOT)mingw/bin \
		SHARED_MODE=1 \
		install && \
	$(INSTALL) zlib1.dll $(CURDIR)/$(BUILD_ROOT)/32$(MINGW32_SYSROOT)mingw/bin && \
	mkdir -p $(CURDIR)/$(BUILD_ROOT)/32$(MINGW32_SYSROOT)mingw/lib/pkgconfig && \
	$(INSTALL) zlib.pc $(CURDIR)/$(BUILD_ROOT)/32$(MINGW32_SYSROOT)mingw/lib/pkgconfig
	
	#cd build/32/contrib/minizip && make install DESTDIR=$(CURDIR)/$(BUILD_ROOT)/32
	
	#rm $(BUILD_ROOT)/32$(MINGW32_SYSROOT)mingw/lib/libz.a
	
	# Install 64-bit
	mkdir -p $(BUILD_ROOT)/64$(MINGW64_SYSROOT)mingw/bin
	mkdir -p $(BUILD_ROOT)/64$(MINGW64_SYSROOT)mingw/include
	mkdir -p $(BUILD_ROOT)/64$(MINGW64_SYSROOT)mingw/lib
	cd build/64 && $(MAKE) -f win32/Makefile.gcc \
		INCLUDE_PATH=$(CURDIR)/$(BUILD_ROOT)/64$(MINGW64_SYSROOT)mingw/include \
		LIBRARY_PATH=$(CURDIR)/$(BUILD_ROOT)/64$(MINGW64_SYSROOT)mingw/lib \
		BINARY_PATH=$(CURDIR)/$(BUILD_ROOT)/64$(MINGW64_SYSROOT)mingw/bin \
		SHARED_MODE=1 \
		install && \
	$(INSTALL) zlib1.dll $(CURDIR)/$(BUILD_ROOT)/64$(MINGW64_SYSROOT)mingw/bin && \
	mkdir -p $(CURDIR)/$(BUILD_ROOT)/64$(MINGW64_SYSROOT)mingw/lib/pkgconfig && \
	$(INSTALL) zlib.pc $(CURDIR)/$(BUILD_ROOT)/64$(MINGW64_SYSROOT)mingw/lib/pkgconfig
	
	#cd build/64/contrib/minizip && make install DESTDIR=$(CURDIR)/$(BUILD_ROOT)/64
	
	#rm $(BUILD_ROOT)/64$(MINGW64_SYSROOT)mingw/lib/libz.a

binary-indep: build install
	dh_testdir -i
	dh_testroot -i
	dh_movefiles -i
	dh_installdocs -i
	dh_installexamples -i
	dh_install -i
	dh_link -i
	dh_fixperms -i
	dh_makeshlibs -i
	dh_installdeb -i
	dh_shlibdeps -i
	dh_installchangelogs ChangeLog
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

binary-arch: build install
	#dh_testdir -a
	#dh_testroot -a
	#dh_movefiles -a
	#dh_installdocs -a
	#dh_installexamples -a
	#dh_install -a
	#dh_link -a
	#dh_fixperms -a
	#dh_makeshlibs -a
	#dh_installdeb -a
	#dh_shlibdeps -a
	#dh_installchangelogs ChangeLog
	#dh_gencontrol -a
	#dh_md5sums -a
	#dh_builddeb -a

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