File debian.rules of Package dpdk-22.11

#!/usr/bin/make -f

# see EXAMPLES in dpkg-buildflags(1) and read /usr/share/dpkg/*
DPKG_EXPORT_BUILDFLAGS = 1
export DEB_BUILD_MAINT_OPTIONS = hardening=+all optimize=-lto
include /usr/share/dpkg/default.mk

DPDK_ABI := $(shell echo $(DEB_VERSION_UPSTREAM) | cut -d '-' -f1 | cut -d '.'  -f1-2 | cut -d '~' -f1)

ifeq (,$(findstring terse,$(DEB_BUILD_OPTIONS)))
	export DH_VERBOSE=1
	export DH_OPTIONS=-v
endif

export DEB_CFLAGS_MAINT_APPEND = -Werror
# Disable debugging symbols, as they cause each build to cost 1GB of storage space for OBS
export DEB_CFLAGS_STRIP = -g

DEB_BUILD_OPTIONS+= kernel_modules

# People rebuilding this package can overwrite RTE_MACHINE
# via DEB_BUILD_OPTIONS if they like
ifneq (,$(filter rte_machine=%,$(DEB_BUILD_OPTIONS)))
    RTE_MACHINE ?= $(patsubst rte_machine=%,%,$(filter rte_machine=%,$(DEB_BUILD_OPTIONS)))
endif
# default to minimal base, without setting this it would build
# -march=native which is a non portable invariant
RTE_MACHINE ?= "default"

# now stable with parallel comilation, so support -j
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
    PAR := $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
    MAKEFLAGS += -j$(PAR)
endif

ifneq (,$(findstring nodoc,$(DEB_BUILD_PROFILES)))
BUILD_DOCS=n
else
ifneq (,$(findstring nodoc,$(DEB_BUILD_OPTIONS)))
BUILD_DOCS=n
# to stop dh_installdoc from running
export DEB_BUILD_PROFILES += nodoc
else
BUILD_DOCS=y
endif
endif

# Allow to pass specific configure flags to meson as a comma separated list
ifneq (,$(filter dpdk_config_options=%,$(DEB_BUILD_OPTIONS)))
# GNU Makefile hack: can't directly escape comma and spaces, so use variables
    comma := ,
    space :=
    space +=
    DPDK_CONFIG_OPTIONS ?= $(subst $(comma),$(space),$(patsubst dpdk_config_options=%,%,$(filter dpdk_config_options=%,$(DEB_BUILD_OPTIONS))))
endif

# MLX PMDs are no longer supported on i386
ifeq ($(DEB_HOST_ARCH),i386)
	DPDK_CONFIG_OPTIONS += -Ddisable_drivers=net/mlx4,net/mlx5
endif

%:
	dh $@ --with python3 --buildsystem=meson

override_dh_auto_configure:
	dh_auto_configure -- $(DPDK_CONFIG_OPTIONS) \
		--includedir=include/dpdk \
		--default-library=shared \
		-Dinclude_subdir_arch=../$(DEB_HOST_MULTIARCH)/dpdk \
		-Dmachine=$(RTE_MACHINE)

override_dh_auto_build-indep:
ifeq (y,$(BUILD_DOCS))
	dh_auto_build -- doc
	# NINJA DOC INSTALL DOES NOT WORK - .buildinfo present, css missing
	rm -f obj-$(DEB_HOST_MULTIARCH)/doc/guides/guides/.buildinfo
endif

# ninja install doc does not work, will rebuild everything,
# only dpdk-doc as arch: all so just skip it
override_dh_auto_install-indep:

override_dh_auto_install-arch:
	dh_auto_install
	dh_install -p dpdk usr/bin
	dh_install -p libdpdk0 usr/lib/$(DEB_HOST_MULTIARCH)/*.so.*
	dh_install -p libdpdk0 usr/lib/$(DEB_HOST_MULTIARCH)/*/*/*.so.*
	dh_install -p libdpdk-dev usr/lib/$(DEB_HOST_MULTIARCH)/*.so
	dh_install -p libdpdk-dev usr/lib/$(DEB_HOST_MULTIARCH)/*/*/*.so
	dh_install -p libdpdk-dev usr/lib/$(DEB_HOST_MULTIARCH)/*.a
	dh_install -p libdpdk-dev usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig
	dh_install -p libdpdk-dev usr/include

override_dh_auto_test:
ifneq (,$(filter i386 amd64 arm64, $(DEB_HOST_ARCH)))
	meson test -C obj-$(DEB_HOST_GNU_TYPE) --verbose --suite fast-tests -t 5
endif

override_dh_python3:
	# dh_python only looks in /usr/share/package_name but dpdk-doc installs in
	# /usr/share/dpdk, so pass /usr to catch all
	dh_python3 --shebang=/usr/bin/python3 /usr

override_dh_strip:
openSUSE Build Service is sponsored by