#!/usr/bin/make -f
include /usr/share/python/python.mk
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk

DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH)

LDFLAGS += -Wl,--as-needed

# For building bindings/swig/ and bindings/python/ for all Python version, these directories are cloned and build in addition to the main library
PYDEFAULTVER := $(shell pyversions --default --version)                                                                                        
PYVERS := $(shell pyversions --requested --version debian/control)                                                                             
PYVERS := $(filter-out $(PYDEFAULTVER), $(PYVERS)) # $(PYDEFAULTVER)
PY3DEFAULTVER := $(shell py3versions --default --version)
PY3VERS := $(shell py3versions --requested --version debian/control)
PY3VERS := $(filter-out $(PY3DEFAULTVER), $(PY3VERS))

ifeq ($(DEB_HOST_ARCH),alpha)
  EXTRA_ARCH_TABLE := --with-alpha
endif
ifeq ($(DEB_HOST_ARCH),hppa)
  EXTRA_ARCH_TABLE := --with-hppa
endif

%:
	dh $@ --builddirectory=debian/build --buildsystem=autoconf --with autoreconf --with python2 --with python3 --with systemd #--with golang

override_dh_auto_configure: debian/config-python-stamp $(PYVERS:%=debian/config-python%-stamp) $(PY3VERS:%=debian/config-python3-%-stamp)
debian/config-python-stamp:
	dh_testdir
# We should also have "--with-golang" but it's not available in all arch and
# the golang binding package is arch:all anyway.
	dh_auto_configure -- \
		--sbindir=/sbin \
		--libdir=/lib/${DEB_HOST_MULTIARCH} \
		--enable-shared=audit \
		--enable-gssapi-krb5 \
		--with-apparmor \
		--with-prelude \
		--with-libwrap \
		--with-libcap-ng \
		--with-python \
		--with-python3 \
		--with-arm --with-aarch64 ${EXTRA_ARCH_TABLE}
	touch $@
debian/config-python%-stamp: debian/config-python-stamp
	cp -lpr debian/build/bindings/swig   debian/build/bindings/swig.$*
	cp -lpr debian/build/bindings/python debian/build/bindings/python.$*
	touch $@
debian/config-python3-%-stamp: debian/config-python-stamp
	cp -lpr debian/build/bindings/swig   debian/build/bindings/swig3.$*
	cp -lpr debian/build/bindings/python debian/build/bindings/python3.$*
	touch $@

override_dh_auto_clean:
	$(RM) debian/*-stamp
	dh_auto_clean

override_dh_auto_build: debian/build-python-stamp $(PYVERS:%=debian/build-python%-stamp) $(PY3VERS:%=debian/build-python3-%-stamp)
debian/build-python-stamp: debian/config-python-stamp
	dh_testdir
	dh_auto_build
	touch $@
debian/build-python%-stamp: debian/config-python%-stamp debian/build-python-stamp
	PYTHON=/usr/bin/python$* $(MAKE) -C debian/build/bindings/swig.$*/python    pyexecdir=$(call py_libdir_sh, $*)
	PYTHON=/usr/bin/python$* $(MAKE) -C debian/build/bindings/python.$*/python2 pyexecdir=$(call py_libdir_sh, $*)
	touch $@
debian/build-python3-%-stamp: debian/config-python3-%-stamp debian/build-python-stamp
	PYTHON=/usr/bin/python$* $(MAKE) -C debian/build/bindings/swig3.$*/python3   py3execdir=/usr/lib/python$*/dist-packages \
	    PYTHON3_CFLAGS="$(shell python$*-config --cflags 2> /dev/null)" PYTHON3_LIBS="$(shell python$*-config --libs 2> /dev/null)" PYTHON3_INCLUDES="$(shell python$*-config --includes 2> /dev/null)"
	PYTHON=/usr/bin/python$* $(MAKE) -C debian/build/bindings/python3.$*/python3 py3execdir=/usr/lib/python$*/dist-packages \
	    PYTHON3_CFLAGS="$(shell python$*-config --cflags 2> /dev/null)" PYTHON3_LIBS="$(shell python$*-config --libs 2> /dev/null)" PYTHON3_INCLUDES="$(shell python$*-config --includes 2> /dev/null)"
	touch $@

debian/install-python-stamp: debian/build-python-stamp
	dh_testdir
	dh_auto_install --sourcedir=debian/build --destdir=debian/tmp
	touch $@
debian/install-python%-stamp: debian/build-python%-stamp debian/install-python-stamp
	PYTHON=/usr/bin/python$* $(MAKE) -C debian/build/bindings/swig.$*   pyexecdir=$(call py_libdir_sh, $*) DESTDIR=$(CURDIR)/debian/tmp install
	PYTHON=/usr/bin/python$* $(MAKE) -C debian/build/bindings/python.$* pyexecdir=$(call py_libdir_sh, $*) DESTDIR=$(CURDIR)/debian/tmp install
	touch $@
debian/install-python3-%-stamp: debian/build-python3-%-stamp debian/install-python-stamp
	PYTHON=/usr/bin/python$* $(MAKE) -C debian/build/bindings/swig3.$*/python3   py3execdir=/usr/lib/python$*/dist-packages DESTDIR=$(CURDIR)/debian/tmp install \
	    PYTHON3_CFLAGS="$(shell python$*-config --cflags 2> /dev/null)" PYTHON3_LIBS="$(shell python$*-config --libs 2> /dev/null)" PYTHON3_INCLUDES="$(shell python$*-config --includes 2> /dev/null)"
	PYTHON=/usr/bin/python$* $(MAKE) -C debian/build/bindings/python3.$*/python3 py3execdir=/usr/lib/python$*/dist-packages DESTDIR=$(CURDIR)/debian/tmp install \
	    PYTHON3_CFLAGS="$(shell python$*-config --cflags 2> /dev/null)" PYTHON3_LIBS="$(shell python$*-config --libs 2> /dev/null)" PYTHON3_INCLUDES="$(shell python$*-config --includes 2> /dev/null)"
	touch $@
override_dh_auto_install: debian/install-python-stamp $(PYVERS:%=debian/install-python%-stamp) $(PY3VERS:%=debian/install-python3-%-stamp)
	# Remove some RedHat specific files
	$(RM) debian/tmp/etc/rc.d/init.d/auditd
	$(RM) debian/tmp/etc/sysconfig/auditd

	# Move the development library to /usr/lib
	$(RM) debian/tmp/lib/${DEB_HOST_MULTIARCH}/libaudit.so
	$(RM) debian/tmp/lib/${DEB_HOST_MULTIARCH}/libauparse.so

	# Install the default configuration
	install -o root -g root -m 0750 -d debian/tmp/etc/audit/rules.d/
	install -o root -g root -m 0640 rules/10-base-config.rules debian/tmp/etc/audit/rules.d/audit.rules

	mkdir -p debian/tmp/usr/lib/${DEB_HOST_MULTIARCH}/

	ln -s /lib/${DEB_HOST_MULTIARCH}/libaudit.so.1.0.0 \
		debian/tmp/usr/lib/${DEB_HOST_MULTIARCH}/libaudit.so
	ln -s /lib/${DEB_HOST_MULTIARCH}/libauparse.so.0.0.0 \
		debian/tmp/usr/lib/${DEB_HOST_MULTIARCH}/libauparse.so

	mv debian/tmp/lib/${DEB_HOST_MULTIARCH}/libaudit.a \
		debian/tmp/usr/lib/${DEB_HOST_MULTIARCH}/libaudit.a
	mv debian/tmp/lib/${DEB_HOST_MULTIARCH}/libauparse.a \
		debian/tmp/usr/lib/${DEB_HOST_MULTIARCH}/libauparse.a

	mkdir -p debian/tmp/usr/lib/${DEB_HOST_MULTIARCH}/pkgconfig/

	mv debian/tmp/lib/${DEB_HOST_MULTIARCH}/pkgconfig/audit.pc \
		debian/tmp/usr/lib/${DEB_HOST_MULTIARCH}/pkgconfig/audit.pc
	mv debian/tmp/lib/${DEB_HOST_MULTIARCH}/pkgconfig/auparse.pc \
		debian/tmp/usr/lib/${DEB_HOST_MULTIARCH}/pkgconfig/auparse.pc

override_dh_install:
	dh_install --list-missing

override_dh_installexamples:
	dh_installexamples -XMakefile

override_dh_installlogrotate:
	# auditd has a equivalent built-in feature

override_dh_installinit:
	dh_installinit --restart-after-upgrade -- start 37 2 3 4 5 . stop 39 0 1 6 .

override_dh_fixperms-arch:
	dh_fixperms -a
	#chmod o-wx debian/auditd/usr/bin/aulastlog
	#chmod o-wx debian/auditd/sbin/auditctl
	#chmod o-wx debian/auditd/sbin/auditd
	#chmod o-wx debian/auditd/sbin/autrace
	#chmod 750 debian/auditd/sbin/audispd
	chmod -R o-rwx debian/auditd/var/log/audit
	chmod -R o-rwx debian/auditd/etc/audit debian/auditd/etc/audisp debian/auditd/etc/audisp/plugins.d

get-orig-source:
	-uscan --upstream-version 0

my-check:
	find debian/*aud*/ -mindepth 0 -name DEBIAN -prune -o -not -type d -print|sed -e 's,debian/[^/]*/,,' -e 's/\.gz$$//'
