#!/usr/bin/make -f

# standard Debian options & profiles

export DEB_BUILD_MAINT_OPTIONS = hardening=+all

ifneq (,$(filter terse,$(DEB_BUILD_OPTIONS)))
  MAKE_SILENT="V=0"
  export DH_VERBOSE=0
else
  MAKE_SILENT="V=1"
  export DH_VERBOSE=1
  export DH_OPTIONS=-v
endif

# package-specific build profiles

ifeq ($(filter pkg.frr.nortrlib,$(DEB_BUILD_PROFILES)),)
  CONF_RPKI=--enable-rpki
else
  CONF_RPKI=--disable-rpki
endif

ifeq ($(filter pkg.frr.lua,$(DEB_BUILD_PROFILES)),)
  CONF_LUA=--disable-scripting
else
  CONF_LUA=--enable-scripting
endif

ifeq ($(filter pkg.frr.nopim6d,$(DEB_BUILD_PROFILES)),)
  CONF_PIM6=--enable-pim6d
else
  CONF_PIM6=--disable-pim6d
endif

ifeq ($(filter pkg.frr.grpc,$(DEB_BUILD_PROFILES)),)
  CONF_GRPC=--disable-grpc
else
  CONF_GRPC=--enable-grpc
endif

export PYTHON=python3

%:
	dh $@ -Bbuild --with=sphinxdoc

override_dh_auto_configure:
	$(shell dpkg-buildflags --export=sh); \
	dh_auto_configure -- \
		--sbindir=/usr/lib/frr \
		--with-vtysh-pager=/usr/bin/pager \
		--libdir=/usr/lib/$(DEB_HOST_MULTIARCH)/frr \
		--with-moduledir=/usr/lib/$(DEB_HOST_MULTIARCH)/frr/modules \
		LIBTOOLFLAGS="-rpath /usr/lib/$(DEB_HOST_MULTIARCH)/frr" \
		--disable-dependency-tracking \
		\
		$(CONF_RPKI) \
		$(CONF_LUA) \
		$(CONF_PIM6) \
		$(CONF_GRPC) \
		--with-libpam \
		--enable-doc \
		--enable-doc-html \
		--enable-snmp \
		--enable-fpm \
		--disable-protobuf \
		--disable-zeromq \
		--enable-ospfapi \
		--enable-bgp-vnc \
		--enable-multipath=256 \
		\
		--enable-user=frr \
		--enable-group=frr \
		--enable-vty-group=frrvty \
		--enable-configfile-mask=0640 \
		--enable-logfile-mask=0640 \
		# end

override_dh_auto_install:
	dh_auto_install

	sed -e '1c #!/usr/bin/python3' -i debian/tmp/usr/lib/frr/frr-reload.py
	sed -e '1c #!/usr/bin/python3' -i debian/tmp/usr/lib/frr/generate_support_bundle.py
	sed -e '1c #!/usr/bin/python3' -i debian/tmp/usr/lib/frr/frr_babeltrace.py
	sed -e '1c #!/usr/bin/python3' -i debian/tmp/usr/lib/frr/ospfclient.py

# let dh_systemd_* and dh_installinit do their thing automatically
	cp build/tools/frr.service debian/frr.service
	cp build/tools/frr@.service debian/frr@.service
	cp build/tools/frrinit.sh debian/frr.init
	-rm -f debian/tmp/usr/lib/frr/frr

# install config files
	mkdir -p debian/tmp/etc
	cp -r tools/etc/* debian/tmp/etc/
	-rm debian/tmp/etc/frr/daemons.conf

# drop dev-only files
	find debian/tmp -name '*.la' -o -name '*.a' -o -name 'lib*.so' | xargs rm -f
	rm -rf debian/tmp/usr/include
	-rm debian/tmp/usr/lib/frr/ssd

override_dh_auto_build:
	dh_auto_build -- $(MAKE_SILENT)

override_dh_installinit:
	dh_installinit -r

override_dh_installsystemd:
	dh_installsystemd -r

override_dh_makeshlibs:
	dh_makeshlibs -n

override_dh_missing:
	dh_missing --fail-missing

ifneq ($(filter nocheck,$(DEB_BUILD_PROFILES) $(DEB_BUILD_OPTIONS)),)
override_dh_auto_test:
	true
endif

override_dh_auto_clean:
# we generally do NOT want a full distclean since that wipes both
# debian/changelog and config.version
	if test -f Makefile; then make redistclean; fi
	-rm -f debian/frr.init
	-rm -f debian/frr.service
	-rm -f debian/frr@.service
