#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# GNU copyright 1997 to 1999 by Joey Hess.

# Uncomment this to turn on verbose mode.
export DH_VERBOSE=1

# for hardening
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk

PACKAGE = monitoring-plugins

# These are used for cross-compiling and for saving the configure script
# from having to guess our platform (since we know it already)
include /usr/share/dpkg/architecture.mk

DEBIANDIR=$(CURDIR)/debian
NP_LIBEXEC:=/usr/lib/nagios/plugins
NP_COMMON_DIR:=$(DEBIANDIR)/monitoring-plugins-common
NP_BASIC_DIR:=$(DEBIANDIR)/monitoring-plugins-basic
NP_BASIC_TEMPLATES:=$(NP_BASIC_DIR)/usr/share/monitoring-plugins/templates-basic
NP_STD_DIR:=$(DEBIANDIR)/monitoring-plugins-standard
NP_STD_TEMPLATES:=$(NP_STD_DIR)/usr/share/monitoring-plugins/templates-standard

std_plugins:=check_breeze check_ifoperstatus check_hpjd check_ifstatus \
	check_rpc check_snmp check_wave check_fping check_game \
	check_radius check_mysql check_mysql_query check_pgsql \
	check_disk_smb check_ldap check_ldaps \
	check_mailq \
	check_dns check_dig check_flexlm check_oracle \
	check_dbi

common_files:=negate urlize utils.pm utils.sh

basic_plugin_cfgs:=apt dhcp disk dummy ftp http curl-http load mail news ntp ping procs \
	real ssh tcp_udp telnet users
std_plugin_cfgs:=breeze disk-smb dns flexlm fping games hppjd ifstatus ldap \
	mailq mrtg mysql netware nt pgsql radius rpc-nfs snmp

PATH = /bin:/sbin:/usr/bin:/usr/sbin


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

ifeq ($(DEB_HOST_ARCH_OS),linux)
PING_CONFIGURE_ARGS = --with-ping-command="/bin/ping -4 -n -U -w %d -c %d %s" \
                      --with-ping6-command="/bin/ping -6 -n -U -w %d -c %d %s"
else
PING_CONFIGURE_ARGS = --with-ping-command="/bin/ping -n -w %d -c %d %s" \
                      --with-ping6-command="/bin/ping6 -n -w %d -c %d %s"
endif


config.status: configure
	export PATH=$(PATH)
	dh_testdir
	
	# if /proc is not mounted, check_nagios and check_procs are
	# silently omitted from build.
	@if ! [ -d /proc/$$$$ ]; then \
	  echo "monitoring-plugins needs a mounted /proc to correctly build"; \
	  exit 1; \
	fi
	
	ln -sf /usr/share/misc/config.sub build-aux
	ln -sf /usr/share/misc/config.guess build-aux
	rm -f config.cache
	
	# Add here commands to configure the package.
	# Append 'All warnings', 'Immediate binding' and dpkg-buildflags flags
	CFLAGS="$$(DEB_CFLAGS_MAINT_APPEND='-Wall -Wl,-z,now' dpkg-buildflags --get CFLAGS)" \
	PATH_TO_APTGET=/usr/bin/apt-get \
	PGINCLUDE="-I`pg_config --includedir`" PGLIBS="-lpq -lcrypt" \
	./configure \
		--disable-maintainer-mode \
		--host=$(DEB_HOST_GNU_TYPE) \
		--build=$(DEB_BUILD_GNU_TYPE) \
		--prefix=/usr \
		--mandir=/usr/share/man \
		--infodir=/usr/share/info \
		--libexecdir=${NP_LIBEXEC} \
		--with-perl=/usr/bin/perl \
		--with-openssl=/usr \
		--with-pgsql=/usr \
		--with-mysql=/usr \
		--with-proc-loadavg=/proc/loadavg \
		--with-ps-command="/bin/ps axwwo 'stat uid pid ppid vsz rss pcpu etime comm args'" \
		--with-ps-format="%s %d %d %d %d %d %f %s %s %n" \
		--with-ps-cols=10 \
		--with-ps-varlist="procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procetime,procprog,&pos" \
		$(PING_CONFIGURE_ARGS) \
		--with-nslookup-command="/usr/bin/nslookup -sil" \
		--with-uptime-command="/usr/bin/uptime" \
		--with-rpcinfo-command="/usr/sbin/rpcinfo" \
		--with-smbclient-command="/usr/bin/smbclient" \
		--with-snmpget-command="/usr/bin/snmpget" \
		--with-snmpgetnext-command="/usr/bin/snmpgetnext" \
		--with-qstat-command="/usr/bin/quakestat" \
		--with-fping-command="/usr/bin/fping" \
		--with-fping6-command="/usr/bin/fping6" \
		--with-ssh-command="/usr/bin/ssh" \
		--with-sudo-command="/usr/bin/sudo" \
		--with-mailq-command="/usr/bin/mailq" \
		--with-proc-meminfo="/proc/meminfo" \
		--with-dig-command="/usr/bin/dig" \
		--with-apt-get-command="/usr/bin/apt-get" \
		--enable-extra-opts \
		--disable-rpath


build: build-arch build-indep
build-arch: build-stamp
build-indep: build-stamp

build-stamp:  config.status
	dh_testdir
	$(MAKE)
	touch build-stamp

clean: really-clean

really-clean:
	dh_testdir
	dh_testroot
	rm -f build-stamp debian/README.Debian.plugins debian/monitoring-plugins-standard.substvars.in

	# Add here commands to clean up after the build process.
	[ ! -f Makefile ] || $(MAKE) distclean
	find -type d -name autom4te.cache -print0 | xargs -0 -r rm -rf \;
	-rm -f platform.h auto-include.h
	find -type d -name build -print0 | xargs -0 -r rm -rf \;
	find \( -name config.sub -o -name config.guess \) -print0 | xargs -0 -r rm -f \;
	-rm -f $(DEBIANDIR)/monitoring-plugins-basic.postrm $(DEBIANDIR)/monitoring-plugins-standard.postrm
	dh_clean

install: build
	dh_testdir
	dh_testroot
	dh_prep
	dh_installdirs

	# Add here commands to install the package into debian/monitoring-plugins.
	$(MAKE) install DESTDIR=${NP_BASIC_DIR}
	$(MAKE) install-root DESTDIR=${NP_BASIC_DIR}
	chmod 644 ${NP_BASIC_DIR}/usr/lib/nagios/plugins/utils.pm
	# split up basic vs. standard plugins
	for p in ${std_plugins}; do \
		mv ${NP_BASIC_DIR}/${NP_LIBEXEC}/$$p ${NP_STD_DIR}/${NP_LIBEXEC}; \
	done
	# rename check_http to check_http_deprecated for making use of update-alternatives
	mv ${NP_BASIC_DIR}/${NP_LIBEXEC}/check_http ${NP_BASIC_DIR}/${NP_LIBEXEC}/check_http.deprecated
	# slit out common files
	for p in ${common_files}; do \
		mv ${NP_BASIC_DIR}/${NP_LIBEXEC}/$$p ${NP_COMMON_DIR}/${NP_LIBEXEC}; \
	done
	# remove check_uptime for now (conflicting with check_uptime from n-p-c)
	rm ${NP_BASIC_DIR}/${NP_LIBEXEC}/check_uptime
	# now do the same for their configs, copying them into seperate
	# "template" directories outside of /usr/share/doc for ucf to use.
	for c in ${basic_plugin_cfgs}; do \
		cp $(DEBIANDIR)/pluginconfig/$${c}.cfg ${NP_BASIC_TEMPLATES}; \
	done
	for c in ${std_plugin_cfgs}; do \
		cp $(DEBIANDIR)/pluginconfig/$${c}.cfg ${NP_STD_TEMPLATES}; \
	done
	# dynamically create the postrm scripts using a template, so that we
	# don't have to define the same list of plugin configs over and over.
	sed -e 's/@BASIC_PLUGINS@/${basic_plugin_cfgs}/' \
		< $(DEBIANDIR)/monitoring-plugins-basic.postrm.in \
		> $(DEBIANDIR)/monitoring-plugins-basic.postrm
	sed -e 's/@STD_PLUGINS@/${std_plugin_cfgs}/' \
		< $(DEBIANDIR)/monitoring-plugins-standard.postrm.in \
		> $(DEBIANDIR)/monitoring-plugins-standard.postrm
	# copy our dpkg-sourced functions etc into place
	mkdir -p ${NP_COMMON_DIR}/usr/share/monitoring-plugins/dpkg
	install -t ${NP_COMMON_DIR}/usr/share/monitoring-plugins/dpkg \
		$(DEBIANDIR)/functions
	# remove /usr/include from monitoring-plugins-basic (in case its empty and exists)
	[ ! -d ${NP_BASIC_DIR}/usr/include ] || rmdir ${NP_BASIC_DIR}/usr/include
	# generate debian/README.Debian.plugins
	perl ./debian/bin/gen_plugin_deps.pl

# Build architecture-independent files here.
binary-indep: build install
	dh_testdir -i
	dh_testroot -i
	dh_installchangelogs -i
	dh_installdocs -i
	dh_link -i
	dh_installexamples -i
	dh_installman -i
	dh_compress -i
	dh_fixperms -i
	dh_installdeb -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

# Build architecture-dependent files here.
binary-arch: build install
	dh_testdir -a
	dh_testroot -a
	dh_installchangelogs -p monitoring-plugins-basic -a ChangeLog
	dh_installchangelogs -Nmonitoring-plugins-basic
	dh_installdocs -a
	dh_link -a
	dh_installexamples -a
	dh_installman -a
	dh_installalternatives -a
	dh_strip -a
	dh_compress -a
	dh_fixperms -a -X utils.pm
	dh_installdeb -a
	dh_shlibdeps -a -Nmonitoring-plugins-standard
	dpkg-shlibdeps -Tdebian/monitoring-plugins-standard.substvars \
		${NP_STD_DIR}/${NP_LIBEXEC}/check_dns
	dpkg-shlibdeps -Tdebian/monitoring-plugins-standard.substvars.in \
		-dSuggests ${NP_STD_DIR}/${NP_LIBEXEC}/check_*
	grep shlibs:Suggests debian/monitoring-plugins-standard.substvars.in \
		| sed -e 's/shlibs:Suggests/shlibs:Recommends/' \
		>> debian/monitoring-plugins-standard.substvars
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a

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