#!/usr/bin/make -f

#export DH_VERBOSE=1
export DEB_BUILD_MAINT_OPTIONS=hardening=+all
export DEB_CFLAGS_MAINT_APPEND=-Wp,-D_FORTIFY_SOURCE=2 -fPIC
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk

BUILDDIR_nginx = $(CURDIR)/debian/build-nginx
BUILDDIR_nginx_debug = $(CURDIR)/debian/build-nginx-debug
INSTALLDIR = $(CURDIR)/debian/nginx%%MODULE_SUFFIX%%-module-%%MODULE%%
BASEDIR = $(CURDIR)

ifeq (%%MODULE_CONFIGURE_ARGS%%,"")
META_MODULE=1
else
META_MODULE=0
endif

ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
	NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
	ifeq (${NUMJOBS}, 0)
		NUMJOBS = 1
	endif
else
	NUMJOBS = 1
endif

%%MODULE_DEFINITIONS%%

config.env.%:
	dh_testdir
	mkdir -p $(BUILDDIR_$*)
	cp -Pa $(CURDIR)/auto $(BUILDDIR_$*)/
	cp -Pa $(CURDIR)/conf $(BUILDDIR_$*)/
	if ! test -e $(CURDIR)/configure ; then ln -s $(CURDIR)/auto/configure $(CURDIR)/configure ; fi
	cp -Pa $(CURDIR)/configure $(BUILDDIR_$*)/
	cp -Pa $(CURDIR)/contrib $(BUILDDIR_$*)/
	if test -e $(CURDIR)/man ; then  cp -Pa $(CURDIR)/man $(BUILDDIR_$*)/ ; fi
	if test -e $(CURDIR)/docs ; then cp -Pa $(CURDIR)/docs $(BUILDDIR_$*)/ ; fi
	cp -Pa $(CURDIR)/src $(BUILDDIR_$*)/
	test -d $(CURDIR)/debian/extra && cp -Pa $(CURDIR)/debian/extra $(BUILDDIR_$*)/
	touch $@

config.pre.nginx:
	dh_testdir
%%MODULE_PREBUILD%%
	touch $@

config.pre.nginx_debug: config.pre.nginx
	dh_testdir
	rm -rf $(BUILDDIR_nginx_debug)/extra && cp -Pa $(BUILDDIR_nginx)/extra $(BUILDDIR_nginx_debug)/
	touch $@

config.status.nginx: config.env.nginx config.pre.nginx
ifeq ($(META_MODULE), 0)
	cd $(BUILDDIR_nginx) && \
	CFLAGS="" %%MODULE_ENV%% ./configure %%BASE_CONFIGURE_ARGS%% %%MODULE_CONFIGURE_ARGS%% --with-cc-opt="$(CFLAGS) %%MODULE_CC_OPT%%" --with-ld-opt="$(LDFLAGS) %%MODULE_LD_OPT%%"
endif
	touch $@

config.status.nginx_debug: config.env.nginx_debug config.pre.nginx_debug
ifeq ($(META_MODULE), 0)
	cd $(BUILDDIR_nginx_debug) && \
	CFLAGS="" %%MODULE_ENV%% ./configure %%BASE_CONFIGURE_ARGS%% %%MODULE_CONFIGURE_ARGS%% --with-cc-opt="$(CFLAGS) %%MODULE_CC_OPT_DEBUG%%" --with-ld-opt="$(LDFLAGS) %%MODULE_LD_OPT_DEBUG%%" --with-debug
endif
	touch $@

build-arch.%: config.status.%
	dh_testdir
	dh_prep
ifeq ($(META_MODULE), 0)
	$(MAKE) -j$(NUMJOBS) -C $(BUILDDIR_$*) modules
endif

build-arch: build-arch.nginx build-arch.nginx_debug
	dh_testdir
	touch $@

build-dbg.%: install
	dh_testdir
ifeq ($(META_MODULE), 0)
	dh_strip --dbg-package=nginx%%MODULE_SUFFIX%%-module-%%MODULE%%-dbg
endif

build-dbg: build-dbg.nginx
	dh_testdir
	touch $@

build-indep:
	dh_testdir
	touch $@

build: build-arch build-indep
	dh_testdir
	touch $@

clean:
	dh_testdir
	dh_testroot
	dh_clean
	rm -rf $(CURDIR)/debian/build-*
	find $(CURDIR) -maxdepth 1 -size 0 -delete

post-build:
ifeq ($(META_MODULE), 0)
	for so in `find $(BUILDDIR_nginx_debug)/objs/ -maxdepth 1 -type f -name "*.so"`; do \
	    debugso=`echo $${so} | sed -e 's|\.so$$|-debug.so|'` ; \
	    mv $${so} $${debugso} ; \
	done
endif

install:
	dh_testdir
	dh_testroot
	dh_prep
	dh_installdirs
	dh_install
%%MODULE_PREINSTALL%%
ifeq ($(META_MODULE), 0)
	mkdir -p $(INSTALLDIR)/usr/lib/nginx/modules
	for so in `find $(BUILDDIR_nginx_debug)/objs/ -maxdepth 1 -type f -name "*.so"`; do \
	    install -m755 $${so} $(INSTALLDIR)/usr/lib/nginx/modules/ ; \
	done
	for so in `find $(BUILDDIR_nginx)/objs/ -maxdepth 1 -type f -name "*.so"`; do \
	    install -m755 $${so} $(INSTALLDIR)/usr/lib/nginx/modules/ ; \
	done
endif

binary-indep: build post-build install

binary-arch: install build-dbg
	dh_testdir
	dh_testroot
	dh_installchangelogs -a
	dh_installdocs -a
	dh_lintian -a
	dh_link -aA
	dh_compress -a
	dh_perl -a
	dh_fixperms -a
	dh_installdeb -a
ifeq ($(META_MODULE), 0)
	dh_shlibdeps -a
endif
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a

binary: binary-indep binary-arch

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