real "make install" rule
cover real "make install" rule
The current "make install" rule don't install anything. It builds one or more targets with different configurations.
These patches allow to install only files needed to build and run a DPDK appplication. The old behaviour is kept for compatibility and the new behaviour is
a second stage triggered by setting the DESTDIR variable.
So, the command "make install T=x86_64-default-linuxapp-gcc O=aaa DESTDIR=bbb" will build in aaa/x86_64-default-linuxapp-gcc/ and install in bbb/.
The install directory can then be used as RTE_SDK path to build an application.
Signature · 16 lines
Thomas --- Olivier Matz (3): mk: allow to specify O= in install rule mk: in install rule, don't overwrite .config if it already exists mk: allow to specify DESTDIR in build rule doc/build-sdk-quick.txt | 13 +++++++------ mk/rte.sdkbuild.mk | 16 ++++++++++++++++ mk/rte.sdkinstall.mk | 17 +++++++++-------- 3 files changed, 32 insertions(+), 14 deletions(-) -- 1.7.10.4
A message that is not in the archive (sent off-list or not yet received): cover.1374843652.git.thomas.monjalon-pdR9zngts4EAvxtiuMwx3w@public.gmane.org
PATCH 1/3 mk: allow to specify O= in install rule
From: Olivier Matz <[email protected]>
This variable $(O) can be used to specify a build directory when doing an "install" procedure. The default is ".", which means that targets will be built in the source dpdk.
This option is useful to compile outside of the source tree that may be read-only.
--- doc/build-sdk-quick.txt | 4 ++-- mk/rte.sdkinstall.mk | 15 +++++++-------- 2 files changed, 9 insertions(+), 10 deletions(-)
doc/build-sdk-quick.txt +2 -2
@@ -5,7 +5,7 @@ Build commands all same as build (default rule) build build in a configured directory clean remove files but keep configuration - install build many targets (wildcard allowed) in fixed directories + install build many targets (wildcard allowed) uninstall remove all installed targets Build variables CROSS toolchain prefix
@@ -14,7 +14,7 @@ Build variables EXTRA_LDFLAGS linker options V verbose D debug dependencies - O output directory (default: build/) - cannot be used with install + O output directory (default: build/ - install default: ./) T target template (install default: *) - used with config or install format: <arch-machine-execenv-toolchain> templates in config/defconfig_*
mk/rte.sdkinstall.mk +7 -8
@@ -30,10 +30,11 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # +# Build directory is given with O= ifdef O -ifeq ("$(origin O)", "command line") -$(error "Cannot use O= with install target") -endif +BUILD_DIR=$(O) +else +BUILD_DIR=. endif # Targets to install can be specified in command line. It can be a
@@ -56,8 +57,8 @@ install: $(INSTALL_TARGETS) %_install: @echo ================== Installing $* - $(Q)$(MAKE) config T=$* O=$* - $(Q)$(MAKE) all O=$* + $(Q)$(MAKE) config T=$* O=$(BUILD_DIR)/$* + $(Q)$(MAKE) all O=$(BUILD_DIR)/$* # # uninstall: remove all built sdk
@@ -70,6 +71,4 @@ uninstall: $(UNINSTALL_TARGETS) %_uninstall: @echo ================== Uninstalling $* - $(Q)rm -rf $* - - + $(Q)rm -rf $(BUILD_DIR)/$*
Signature · 1 line
1.7.10.4
PATCH 2/3 mk: in install rule, don't overwrite .config if it already exists
In reply to a message not in the archiveFrom: Olivier Matz <[email protected]>
This allows the user to prepare a configuration with make config before using make install.
--- mk/rte.sdkinstall.mk | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
mk/rte.sdkinstall.mk +3 -1
@@ -57,7 +57,9 @@ install: $(INSTALL_TARGETS) %_install: @echo ================== Installing $* - $(Q)$(MAKE) config T=$* O=$(BUILD_DIR)/$* + $(Q)if [ ! -f $(BUILD_DIR)/$*/.config ]; then \ + $(MAKE) config T=$* O=$(BUILD_DIR)/$*; \ + fi $(Q)$(MAKE) all O=$(BUILD_DIR)/$* #
Signature · 1 line
1.7.10.4
PATCH 3/3 mk: allow to specify DESTDIR in build rule
In reply to a message not in the archiveFrom: Olivier Matz <[email protected]>
This will install the binary sdk (bin + modules + libs + headers + mk) in the specified directory.
This directory can be used as RTE_SDK by external applications.
--- doc/build-sdk-quick.txt | 13 +++++++------ mk/rte.sdkbuild.mk | 16 ++++++++++++++++ 2 files changed, 23 insertions(+), 6 deletions(-)
doc/build-sdk-quick.txt +7 -6
@@ -5,16 +5,17 @@ Build commands all same as build (default rule) build build in a configured directory clean remove files but keep configuration - install build many targets (wildcard allowed) + install build many targets (wildcard allowed) and install in DESTDIR uninstall remove all installed targets Build variables - CROSS toolchain prefix EXTRA_CPPFLAGS preprocessor options EXTRA_CFLAGS compiler options EXTRA_LDFLAGS linker options - V verbose - D debug dependencies - O output directory (default: build/ - install default: ./) - T target template (install default: *) - used with config or install + CROSS toolchain prefix + V verbose + D debug dependencies + O build directory (default: build/ - install default: ./) + DESTDIR second-stage install directory + T target template (install default: *) - used with config or install format: <arch-machine-execenv-toolchain> templates in config/defconfig_*
mk/rte.sdkbuild.mk +16 -0
@@ -30,6 +30,8 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # +# If DESTDIR variable is given, install binary dpdk + # # include rte.vars.mk if config file exists #
@@ -60,6 +62,20 @@ CLEANDIRS = $(addsuffix _clean,$(ROOTDIRS-y) $(ROOTDIRS-n) $(ROOTDIRS-)) .PHONY: build build: $(ROOTDIRS-y) @echo Build complete +ifneq ($(DESTDIR),) + $(Q)mkdir -p $(DESTDIR) + $(Q)tar -C $(RTE_SDK) -cf - mk | tar -C $(DESTDIR) -x \ + --keep-newer-files --warning=no-ignore-newer -f - + $(Q)mkdir -p $(DESTDIR)/`basename $(RTE_OUTPUT)` + $(Q)tar -C $(RTE_OUTPUT) -chf - \ + --exclude app --exclude hostapp --exclude build \ + --exclude Makefile --exclude .depdirs . | \ + tar -C $(DESTDIR)/`basename $(RTE_OUTPUT)` -x --keep-newer-files \ + --warning=no-ignore-newer -f - + $(Q)install -D $(RTE_OUTPUT)/app/testpmd \ + $(DESTDIR)/`basename $(RTE_OUTPUT)`/app/testpmd + @echo Installation in $(DESTDIR) complete +endif .PHONY: clean clean: $(CLEANDIRS)
Signature · 1 line
1.7.10.4
26/07/2013 15:13, Thomas Monjalon :
Quoted 7 lines
The current "make install" rule don't install anything. It builds one or more targets with different configurations.
These patches allow to install only files needed to build and run a DPDK appplication. The old behaviour is kept for compatibility and the new behaviour is a second stage triggered by setting the DESTDIR variable.
Quoted 6 lines
So, the command "make install T=x86_64-default-linuxapp-gcc O=aaa DESTDIR=bbb" will build in aaa/x86_64-default-linuxapp-gcc/ and install in bbb/.
The install directory can then be used as
RTE_SDKpath to build an application.
all pushed
Signature · 1 line
Thomas