Following the recent discussions, this is a proposal to have a standard installation process while keeping compatibility with most of the old behaviours.
v2 changes: - fix default build dir - RTE_TARGET subdir in $(sdkdir). - better kerneldir defaults - fix dpdk_nic_bind symlink - always install doc if generated - doc - pkg/dpdk.spec More details below and in the commit messages. These variables can be overriden: kerneldir ?= /lib/modules/$(shell uname -r)/extra/dpdk prefix ?= /usr/local exec_prefix ?= $(prefix) bindir ?= $(exec_prefix)/bin sbindir ?= $(exec_prefix)/sbin libdir ?= $(exec_prefix)/lib includedir ?= $(prefix)/include/dpdk datarootdir ?= $(prefix)/share docdir ?= $(datarootdir)/doc/dpdk datadir ?= $(datarootdir)/dpdk sdkdir ?= $(datadir) targetdir ?= $(datadir)/$(RTE_TARGET) All paths are prefixed with $(DESTDIR) One rule install = install-runtime install-kmod install-sdk install-doc -------- System-wise install example with DESTDIR= prefix=/usr kerneldir=/lib/modules/kver/extra # make install-runtime /usr/bin/testpmd /usr/lib/libethdev* /usr/lib/librte_* /usr/sbin/dpdk_nic_bind -> /usr/share/dpdk/tools/dpdk_nic_bind.py /usr/share/dpdk/tools/ # make install-kmod /lib/modules/kver/extra/ # make install-sdk /usr/include/dpdk/ /usr/share/dpdk/mk/ /usr/share/dpdk/scripts/ /usr/share/dpdk/x86_64-default-linuxapp-gcc/.config /usr/share/dpdk/x86_64-default-linuxapp-gcc/include -> /usr/include/dpdk/ /usr/share/dpdk/x86_64-default-linuxapp-gcc/lib -> /usr/lib/ # make install-doc /usr/share/doc/dpdk/api/ /usr/share/doc/dpdk/guides/ /usr/share/dpdk/examples/ -------- Local install example with old (compatible) command: # make install T=x86_64-native-linuxapp-gcc DESTDIR=install would be equivalent to: # make config T=x86_64-native-linuxapp-gcc 0=x86_64-native-linuxapp-gcc # make O=x86_64-native-linuxapp-gcc # make install O=x86_64-native-linuxapp-gcc prefix= DESTDIR=install install/bin/testpmd install/include/dpdk/ install/kmod/ install/lib/ install/sbin/dpdk_nic_bind -> ../share/dpdk/tools/dpdk_nic_bind.py install/share/doc/dpdk/ install/share/dpdk/examples/ install/share/dpdk/mk/ install/share/dpdk/scripts/ install/share/dpdk/tools/ install/share/dpdk/x86_64-native-linuxapp-gcc/.config install/share/dpdk/x86_64-native-linuxapp-gcc/include -> install/include/dpdk/ install/share/dpdk/x86_64-native-linuxapp-gcc/lib -> install/lib/ It should be usable to build some applications as before: # make -C examples/helloworld RTE_SDK=$(readlink -m install) RTE_TARGET=x86_64-native-linuxapp-gcc The RTE_SDK directory must point to install/share/dpdk with a default install. -------- Thomas Monjalon (12): mk: remove testall mk: remove multi-target install mk: move installation procedure in install rule mk: install a standard cutomizable tree mk: introduce new install syntax mk: split install rule mk: install kernel modules mk: install binding tool in sbin directory mk: install doc mk: install examples app/proc_info: rename binary with prefix pkg: update RPM with standard install app/proc_info/Makefile | 2 +- doc/build-sdk-quick.txt | 11 +- doc/guides/linux_gsg/build_dpdk.rst | 16 --- doc/guides/prog_guide/dev_kit_root_make_help.rst | 28 +---- doc/guides/sample_app_ug/proc_info.rst | 8 +- mk/internal/rte.extvars.mk | 4 + mk/rte.sdkbuild.mk | 16 --- mk/rte.sdkinstall.mk | 148 +++++++++++++++++------ mk/rte.sdkroot.mk | 10 +- mk/rte.sdktest.mk | 4 +- mk/rte.sdktestall.mk | 57 --------- mk/rte.vars.mk | 10 +- pkg/dpdk.spec | 59 +++------ tools/setup.sh | 31 ++--- 14 files changed, 163 insertions(+), 241 deletions(-) delete mode 100644 mk/rte.sdktestall.mk -- 2.5.2