#!/usr/bin/make -f
# Made with the aid of dh_make, by Craig Small
# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess.
# Some lines taken from debmake, by Cristoph Lameter.

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

CC_NORMAL = -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wconversion
CC_STRICT = $(CC_NORMAL) -W -Wbad-function-cast -Wcast-align -Wcast-qual -Wmissing-declarations -Wnested-externs -Wpointer-arith -Wwrite-strings -ansi -pedantic

NCURSES_PKG = ncurses-examples

TARGET    = x86_64-w64-mingw32
MINGW_BIN = /usr/bin
MINGW_TOP = /usr/$(TARGET)
MINGW_TMP = $(CURDIR)/debian/mingw64-ncurses-examples

CFLAGS = $(CC_NORMAL)

ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
        CFLAGS += -O0
else
        CFLAGS += -O2
endif
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
        INSTALL_PROGRAM += -s
endif


configure: configure-stamp
configure-stamp:
	dh_testdir

	CFLAGS="$(CFLAGS)" ./configure \
		--host=$(TARGET) \
		--target=$(TARGET) \
		--prefix=$(MINGW_TOP) \
		--bindir=\$${prefix}/bin/$(NCURSES_PKG) \
		--datadir=\$${prefix}/share/$(NCURSES_PKG) \
		--with-screen=ncursesw6 \
		--with-pkg-config-libdir=/usr/$(TARGET)/lib/pkgconfig

	touch configure-stamp

build: build-stamp
build-stamp: configure-stamp
	dh_testdir

	$(MAKE)

	touch build-stamp

clean:
	dh_testdir
	dh_testroot

	[ ! -f makefile ] || $(MAKE) distclean

	rm -f configure-stamp build-stamp install-stamp

	dh_clean

install: install-stamp
install-stamp: build-stamp
	dh_testdir
	dh_testroot
	dh_prep
	dh_installdirs

	$(MAKE) install DESTDIR=$(MINGW_TMP)

	touch install-stamp

# Build architecture-independent files here.
binary-indep: build install
# No binary-indep target.

# Build architecture-dependent files here.
binary-arch: build install
	dh_testdir
	dh_testroot
	dh_installdocs
	dh_installexamples
	dh_installchangelogs NEWS
	dh_strip
	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 install-stamp
