#!/usr/bin/make -f

#export DH_VERBOSE=1
CFLAGS ?= $(shell dpkg-buildflags --get CFLAGS)
LDFLAGS ?= $(shell dpkg-buildflags --get LDFLAGS)
WITH_HTTP2 := $(shell printf \
	"Source: nginx\nBuild-Depends: libssl-dev (>= 1.0.1)\n" | \
	dpkg-checkbuilddeps - >/dev/null 2>&1 && \
	echo "--with-http_v2_module")
PKGS = nginx nginx-dbg \
	nginx-module-xslt nginx-module-geoip nginx-module-image-filter \
	nginx-module-perl nginx-module-njs
COMMON_CONFIGURE_ARGS := \
	--prefix=/etc/nginx \
	--sbin-path=/usr/sbin/nginx \
	--modules-path=/usr/lib/nginx/modules \
	--conf-path=/etc/nginx/nginx.conf \
	--error-log-path=/var/log/nginx/error.log \
	--http-log-path=/var/log/nginx/access.log \
	--pid-path=/var/run/nginx.pid \
	--lock-path=/var/run/nginx.lock \
	--http-client-body-temp-path=/var/cache/nginx/client_temp \
	--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
	--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
	--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
	--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
	--user=nginx \
	--group=nginx \
	--with-http_ssl_module \
	--with-http_realip_module \
	--with-http_addition_module \
	--with-http_sub_module \
	--with-http_dav_module \
	--with-http_flv_module \
	--with-http_mp4_module \
	--with-http_gunzip_module \
	--with-http_gzip_static_module \
	--with-http_random_index_module \
	--with-http_secure_link_module \
	--with-http_stub_status_module \
	--with-http_auth_request_module \
	--with-http_xslt_module=dynamic \
	--with-http_image_filter_module=dynamic \
	--with-http_geoip_module=dynamic \
	--with-http_perl_module=dynamic \
	--add-dynamic-module=debian/extra/njs-91543c86f412/nginx \
	--with-threads \
	--with-stream \
	--with-stream_ssl_module \
	--with-http_slice_module \
	--with-mail \
	--with-mail_ssl_module \
	--with-file-aio \
	$(WITH_HTTP2) \
	--with-cc-opt="$(CFLAGS)" \
	--with-ld-opt="$(LDFLAGS)" \
	--with-ipv6

%:
	dh $@ 

override_dh_auto_configure: configure_debug

override_dh_strip:
	dh_strip --dbg-package=nginx-dbg

override_dh_auto_build:
	dh_auto_build
	mv objs/nginx objs/nginx-debug
	mv objs/ngx_http_xslt_filter_module.so objs/ngx_http_xslt_filter_module-debug.so
	mv objs/ngx_http_image_filter_module.so objs/ngx_http_image_filter_module-debug.so
	mv objs/ngx_http_geoip_module.so objs/ngx_http_geoip_module-debug.so
	mv objs/ngx_http_perl_module.so objs/ngx_http_perl_module-debug.so
	mv objs/src/http/modules/perl/blib/arch/auto/nginx/nginx.so objs/src/http/modules/perl/blib/arch/auto/nginx/nginx-debug.so
	mv objs/ngx_http_js_module.so objs/ngx_http_js_module-debug.so
	CFLAGS="" ./configure $(COMMON_CONFIGURE_ARGS)
	dh_auto_build

configure_debug:
	CFLAGS="" ./configure $(COMMON_CONFIGURE_ARGS) \
		--with-debug

override_dh_auto_install:
	sed -e 's/%%PROVIDES%%/nginx/g' \
		-e 's/%%DEFAULTSTART%%/2 3 4 5/g' \
		-e 's/%%DEFAULTSTOP%%/0 1 6/g' \
		< debian/init.d.in > debian/init.d
	dh_auto_install
	mkdir -p debian/nginx/etc/init.d debian/nginx/etc/default \
		debian/nginx/usr/lib/nginx/modules
	sed -e 's/%%PROVIDES%%/nginx-debug/g' \
		-e 's/%%DEFAULTSTART%%//g' \
		-e 's/%%DEFAULTSTOP%%/0 1 2 3 4 5 6/g' \
		< debian/init.d.in > debian/debug.init.d
	/usr/bin/install -m 755 debian/debug.init.d \
		debian/nginx/etc/init.d/nginx-debug
	/usr/bin/install -m 644 debian/nginx-debug.default \
		debian/nginx/etc/default/nginx-debug
	/usr/bin/install -m 644 debian/nginx.conf debian/nginx/etc/nginx/
	/usr/bin/install -m 644 conf/win-utf debian/nginx/etc/nginx/
	/usr/bin/install -m 644 conf/koi-utf debian/nginx/etc/nginx/
	/usr/bin/install -m 644 conf/koi-win debian/nginx/etc/nginx/
	/usr/bin/install -m 644 conf/mime.types debian/nginx/etc/nginx/
	/usr/bin/install -m 644 conf/scgi_params debian/nginx/etc/nginx/
	/usr/bin/install -m 644 conf/fastcgi_params debian/nginx/etc/nginx/
	/usr/bin/install -m 644 conf/uwsgi_params debian/nginx/etc/nginx/
	/usr/bin/install -m 644 html/index.html \
		debian/nginx/usr/share/nginx/html/
	/usr/bin/install -m 644 html/50x.html \
		debian/nginx/usr/share/nginx/html/
	/usr/bin/install -m 644 debian/nginx.vh.default.conf \
		debian/nginx/etc/nginx/conf.d/default.conf
	/usr/bin/install -m 755 objs/nginx  debian/nginx/usr/sbin/
	/usr/bin/install -m 755 objs/nginx-debug  debian/nginx/usr/sbin/
	cd debian/nginx/etc/nginx && /bin/ln -s \
		../../usr/lib/nginx/modules modules && cd -

override_dh_gencontrol:
	for p in $(PKGS); do \
		if [ -e debian/$$p.version ]; then \
			dpkg-gencontrol -p$$p -ldebian/changelog -Tdebian/$$p.substvars -Pdebian/$$p -v`cat debian/$$p.version`~`lsb_release -cs`; \
		else \
			dpkg-gencontrol -p$$p -ldebian/changelog -Tdebian/$$p.substvars -Pdebian/$$p ; \
		fi ; \
	done

override_dh_clean:
	dh_clean
	rm -f debian/*init.d
