From fae202e2e21cb50cd4df4b1f5688eb5bfeb4a771 Mon Sep 17 00:00:00 2001 From: Thomas Monjalon Date: Tue, 1 Dec 2015 15:04:01 +0100 Subject: [PATCH] mk: introduce new install syntax The old install command was: make install T=x86_64-native-linuxapp-gcc DESTDIR=install It still works and can be replaced by these more standard commands: 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 It means the "make install" do not perform any compilation anymore when T is not used. It is done only in pre_install to keep compatibility with the old syntax based on T= option. The default prefix /usr/local is empty in the T= case which is used only for a local install. Signed-off-by: Thomas Monjalon Acked-by: Panu Matilainen --- doc/build-sdk-quick.txt | 7 ++++--- doc/guides/prog_guide/dev_kit_root_make_help.rst | 4 +--- mk/rte.sdkinstall.mk | 12 ++++++++++++ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/doc/build-sdk-quick.txt b/doc/build-sdk-quick.txt index 662ef63051..acd1bfe636 100644 --- a/doc/build-sdk-quick.txt +++ b/doc/build-sdk-quick.txt @@ -5,7 +5,8 @@ Build commands all same as build (default rule) build build in a configured directory clean remove files but keep configuration - install configure, build and install a target in DESTDIR + install T= configure, build and install a target in DESTDIR + install install optionally staged in DESTDIR examples build examples for given targets (T=) examples_clean clean examples for given targets (T=) Build variables @@ -17,8 +18,8 @@ Build variables CROSS toolchain prefix V verbose D debug dependencies - O build directory (default: build/ - install default: ./) - DESTDIR second-stage install directory + O build directory (default: build/ - install T= default: ./) + DESTDIR staging install directory prefix root install directory T target template - used with config or install format: diff --git a/doc/guides/prog_guide/dev_kit_root_make_help.rst b/doc/guides/prog_guide/dev_kit_root_make_help.rst index c1eda3425e..6a48665e33 100644 --- a/doc/guides/prog_guide/dev_kit_root_make_help.rst +++ b/doc/guides/prog_guide/dev_kit_root_make_help.rst @@ -107,8 +107,6 @@ Install Targets * Install - Build the DPDK binary. - The name of the target to install is specified using T=mytarget. The list of available targets are in $(RTE_SDK)/config (remove the defconfig\_ prefix). The GNU standards variables may be used: @@ -119,7 +117,7 @@ Install Targets .. code-block:: console - make install T=x86_64-native-linuxapp-gcc prefix=/usr + make install DESTDIR=myinstall prefix=/usr Test Targets ------------ diff --git a/mk/rte.sdkinstall.mk b/mk/rte.sdkinstall.mk index 3201b5bf76..dc57baf6eb 100644 --- a/mk/rte.sdkinstall.mk +++ b/mk/rte.sdkinstall.mk @@ -33,11 +33,21 @@ # Configuration, compilation and installation can be done at once # with make install T= +ifdef T # config, build and install combined # The build directory is T and may be prepended with O O ?= . RTE_OUTPUT := $O/$T +else # standard install +# Build directory is given with O= +O ?= build +RTE_OUTPUT := $O +endif +ifdef T # defaults with T= will install an almost flat staging tree +export prefix ?= +else prefix ?= /usr/local +endif exec_prefix ?= $(prefix) bindir ?= $(exec_prefix)/bin libdir ?= $(exec_prefix)/lib @@ -58,6 +68,7 @@ rte_symlink = ln -snf $$($(RTE_SDK)/scripts/relpath.sh $1 $(dir $2)) $2 .PHONY: pre_install pre_install: +ifdef T $(Q)if [ ! -f $(RTE_OUTPUT)/.config ]; then \ $(MAKE) config O=$(RTE_OUTPUT); \ elif cmp -s $(RTE_OUTPUT)/.config.orig $(RTE_OUTPUT)/.config; then \ @@ -74,6 +85,7 @@ pre_install: echo "Using local configuration"; \ fi $(Q)$(MAKE) all O=$(RTE_OUTPUT) +endif .PHONY: install install: -- 2.20.1