#!/usr/bin/make -f

#export DH_VERBOSE=1
export DH_OPTIONS=

CFLAGS+=$(if $(findstring debug,$(DEB_BUILD_OPTIONS)),-g)
CFLAGS+=$(if $(findstring noopt,$(DEB_BUILD_OPTIONS)),-O0,-O2)
CONFIGUREFLAGS+=$(if $(findstring nostrip,$(DEB_BUILD_OPTIONS)),,--enable-strip)
CONFIGUREFLAGS+=--build=$(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
CONFIGUREFLAGS+=--host=$(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
CONFIGUREFLAGS+=$(if $(wildcard /usr/include/linux/hiddev.h),--with-linux-hiddev=/usr/include/linux/hiddev.h,--without-linux-hiddev)
DEB_HOST_ARCH_OS := $(shell dpkg-architecture -qDEB_HOST_ARCH_OS 2>/dev/null)

configure: patch configure-stamp
configure-stamp:
	dh_testdir
	CFLAGS='$(CFLAGS)' ./configure $(CONFIGUREFLAGS) \
	    --prefix=/ \
	    --sysconfdir=/etc/nut \
	    --mandir=/usr/share/man \
	    --libdir=/usr/lib \
	    --includedir=/usr/include \
	    --without-ssl \
	    --with-hal \
	    --with-cgi \
	    --with-lib \
	    --disable-shared \
	    --with-statepath=/var/run/nut \
	    --with-altpidpath=/var/run/nut \
	    --with-drvpath=/lib/nut \
	    --with-cgipath=/usr/lib/cgi-bin/nut \
	    --with-htmlpath=/var/www/nut \
	    --with-pidpath=/var/run/nut \
	    --datadir=/usr/share/nut \
	    --with-user=nut --with-group=nut
	touch $@

build: configure
build: build-stamp
build-stamp:
	dh_testdir
	$(MAKE) all cgi snmp usb
	touch $@

clean: clean-patched unpatch
clean-patched:
	dh_testdir
	dh_testroot
	rm -f configure-stamp build-stamp install-stamp
#	-$(MAKE) clean
	# temp. workaround to clean drivers/tripplite_usb
#	rm -f $(CURDIR)/drivers/tripplite_usb
	-$(MAKE) distclean
	dh_clean
	-test -r /usr/share/misc/config.sub && \
	  cp -f /usr/share/misc/config.sub config.sub
	-test -r /usr/share/misc/config.guess && \
	  cp -f /usr/share/misc/config.guess config.guess

patch: patch-stamp
patch-stamp:
	# dpatch apply-all
	touch $@

unpatch:
	# dpatch deapply-all
	rm -rf patch-stamp debian/patched

uninstall:
	dh_testdir
	dh_testroot
	rm -f install-stamp
	dh_clean -k

install: build
install: install-stamp
install-stamp: DH_OPTIONS=
install-stamp:
	dh_testdir
	dh_testroot
	dh_clean -k
	dh_installdirs
	$(MAKE) install \
		DESTDIR=$(CURDIR)/debian/nut RUNUID=65534 RUNGID=65534
	# install dummy-ups test driver (manpage already installed)
#	mkdir -p $(CURDIR)/debian/nut-dev/lib/nut
#	mkdir -p $(CURDIR)/debian/nut-dev/usr/share/man/man8/
#	cp $(CURDIR)/drivers/dummy-ups $(CURDIR)/debian/nut-dev/lib/nut
    
	mkdir -p $(CURDIR)/debian/nut-dev/usr/bin $(CURDIR)/debian/nut-dev/usr/include
	mkdir -p $(CURDIR)/debian/nut-dev/usr/share/man/man8 $(CURDIR)/debian/nut-dev/usr/lib 
	mkdir -p $(CURDIR)/debian/nut-dev/lib/nut 
	mv $(CURDIR)/debian/nut/usr/include/*                  $(CURDIR)/debian/nut-dev/usr/include/ 
	mv $(CURDIR)/debian/nut/usr/share/man/man3             $(CURDIR)/debian/nut-dev/usr/share/man 
	mv $(CURDIR)/debian/nut/lib/nut/dummy-ups              $(CURDIR)/debian/nut-dev/lib/nut
	mv $(CURDIR)/debian/nut/usr/share/man/man8/dummy-ups.8 $(CURDIR)/debian/nut-dev/usr/share/man/man8
	mv $(CURDIR)/debian/nut/bin/libupsclient-config        $(CURDIR)/debian/nut-dev/usr/bin
	mv $(CURDIR)/debian/nut/usr/lib/pkgconfig              $(CURDIR)/debian/nut-dev/usr/lib
	mv $(CURDIR)/debian/nut/usr/lib/libupsclient.a         $(CURDIR)/debian/nut-dev/usr/lib
	mv $(CURDIR)/debian/nut/usr/lib/libupsclient.la        $(CURDIR)/debian/nut-dev/usr/lib

	rm $(CURDIR)/debian/nut/lib/nut/skel
	
	### FIXME: create a new package for shared library later, and remove --disable-shared above
	# rm $(CURDIR)/debian/nut/usr/lib/libupsclient.so* $(CURDIR)/debian/nut/usr/lib/libupsclient.la 

	# CGI:
	mkdir -p $(CURDIR)/debian/nut-cgi/usr/lib/cgi-bin/nut $(CURDIR)/debian/nut-cgi/usr/share/man/man5 $(CURDIR)/debian/nut-cgi/usr/share/man/man8 
	mv $(CURDIR)/debian/nut/usr/lib/cgi-bin/nut/* $(CURDIR)/debian/nut-cgi/usr/lib/cgi-bin/nut/ 
	rm -rf $(CURDIR)/debian/nut/usr/lib/cgi-bin 

	mkdir -p $(CURDIR)/debian/nut-cgi/var
	mv $(CURDIR)/debian/nut/var/www $(CURDIR)/debian/nut-cgi/var
 
	for manpage in man5/upsstats.html.5 man5/hosts.conf.5 man5/upsset.conf.5 \
	    man8/upsimage.cgi.8 man8/upsset.cgi.8 man8/upsstats.cgi.8 ; do \
	    mv $(CURDIR)/debian/nut/usr/share/man/$$manpage \
	     $(CURDIR)/debian/nut-cgi/usr/share/man/$$manpage ; \
	done 
 
	# SNMP:
	mkdir -p $(CURDIR)/debian/nut-snmp/lib/nut $(CURDIR)/debian/nut-snmp/usr/share/man/man8
	mv $(CURDIR)/debian/nut/usr/share/man/man8/snmp-ups.8 $(CURDIR)/debian/nut-snmp/usr/share/man/man8
	mv $(CURDIR)/debian/nut/lib/nut/snmp-ups $(CURDIR)/debian/nut-snmp/lib/nut

	mv $(CURDIR)/debian/nut/lib/nut/upsdrvctl $(CURDIR)/debian/nut/sbin

	# HAL:
	mkdir -p $(CURDIR)/debian/nut-hal-drivers/usr/lib/hal \
		$(CURDIR)/debian/nut-hal-drivers/usr/share/hal/fdi/information/20thirdparty \
		$(CURDIR)/debian/nut-hal-drivers/etc/udev/rules.d
	mv $(CURDIR)/debian/nut/lib/nut/hald-addon-* $(CURDIR)/debian/nut-hal-drivers/usr/lib/hal
	# FIXME: this should have a 'make install' rule:
	cp $(CURDIR)/scripts/hal/* $(CURDIR)/debian/nut-hal-drivers/usr/share/hal/fdi/information/20thirdparty
	# HAL support also requires the udev rules
	install -m 644 $(CURDIR)/scripts/udev/nut-usbups.rules \
		$(CURDIR)/debian/nut-hal-drivers/etc/udev/rules.d/025_nut-usbups.rules


	dh_installexamples
	rm $(CURDIR)/debian/nut/etc/nut/*

	dh_installdocs -X.svn
	rm $(CURDIR)/debian/nut/usr/share/doc/nut/docs/Makefile*

	mv $(CURDIR)/debian/nut/bin/upssched-cmd $(CURDIR)/debian/nut/usr/share/doc/nut/examples

	dh_installchangelogs ChangeLog
	dh_installinit
	dh_link
	touch $@

binary-indep: DH_OPTIONS=-i
binary-indep: install

binary-arch: DH_OPTIONS=-a
binary-arch: install
	dh_testdir
	dh_testroot
	dh_installdebconf
	dh_strip
	dh_compress
	dh_fixperms
	dh_installdeb
	dh_shlibdeps -Xlibupsclient.a
ifeq (linux,$(DEB_HOST_ARCH_OS))
	dh_gencontrol -- -Vudev="udev"
else
	dh_gencontrol -- -Vudev=""
endif
	dh_md5sums
	dh_builddeb

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary configure install uninstall patch unpatch
