DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH 0/3] real "make install" rule
@ 2013-07-26 13:13 Thomas Monjalon
  2013-07-26 13:13 ` [dpdk-dev] [PATCH 1/3] mk: allow to specify O= in install rule Thomas Monjalon
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Thomas Monjalon @ 2013-07-26 13:13 UTC (permalink / raw)
  To: dev

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.

-- 
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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [dpdk-dev] [PATCH 1/3] mk: allow to specify O= in install rule
  2013-07-26 13:13 [dpdk-dev] [PATCH 0/3] real "make install" rule Thomas Monjalon
@ 2013-07-26 13:13 ` Thomas Monjalon
  2013-07-26 13:13 ` [dpdk-dev] [PATCH 2/3] mk: in install rule, don't overwrite .config if it already exists Thomas Monjalon
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Thomas Monjalon @ 2013-07-26 13:13 UTC (permalink / raw)
  To: dev

From: Olivier Matz <olivier.matz@6wind.com>

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.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
---
 doc/build-sdk-quick.txt |    4 ++--
 mk/rte.sdkinstall.mk    |   15 +++++++--------
 2 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/doc/build-sdk-quick.txt b/doc/build-sdk-quick.txt
index c839676..d66f0d5 100644
--- a/doc/build-sdk-quick.txt
+++ b/doc/build-sdk-quick.txt
@@ -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_*
diff --git a/mk/rte.sdkinstall.mk b/mk/rte.sdkinstall.mk
index 022cd70..a280234 100644
--- a/mk/rte.sdkinstall.mk
+++ b/mk/rte.sdkinstall.mk
@@ -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)/$*
-- 
1.7.10.4

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [dpdk-dev] [PATCH 2/3] mk: in install rule, don't overwrite .config if it already exists
  2013-07-26 13:13 [dpdk-dev] [PATCH 0/3] real "make install" rule Thomas Monjalon
  2013-07-26 13:13 ` [dpdk-dev] [PATCH 1/3] mk: allow to specify O= in install rule Thomas Monjalon
@ 2013-07-26 13:13 ` Thomas Monjalon
  2013-07-26 13:13 ` [dpdk-dev] [PATCH 3/3] mk: allow to specify DESTDIR in build rule Thomas Monjalon
  2013-07-26 13:36 ` [dpdk-dev] [PATCH 0/3] real "make install" rule Thomas Monjalon
  3 siblings, 0 replies; 5+ messages in thread
From: Thomas Monjalon @ 2013-07-26 13:13 UTC (permalink / raw)
  To: dev

From: Olivier Matz <olivier.matz@6wind.com>

This allows the user to prepare a configuration with make config
before using make install.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
---
 mk/rte.sdkinstall.mk |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/mk/rte.sdkinstall.mk b/mk/rte.sdkinstall.mk
index a280234..ee98981 100644
--- a/mk/rte.sdkinstall.mk
+++ b/mk/rte.sdkinstall.mk
@@ -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)/$*
 
 #
-- 
1.7.10.4

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [dpdk-dev] [PATCH 3/3] mk: allow to specify DESTDIR in build rule
  2013-07-26 13:13 [dpdk-dev] [PATCH 0/3] real "make install" rule Thomas Monjalon
  2013-07-26 13:13 ` [dpdk-dev] [PATCH 1/3] mk: allow to specify O= in install rule Thomas Monjalon
  2013-07-26 13:13 ` [dpdk-dev] [PATCH 2/3] mk: in install rule, don't overwrite .config if it already exists Thomas Monjalon
@ 2013-07-26 13:13 ` Thomas Monjalon
  2013-07-26 13:36 ` [dpdk-dev] [PATCH 0/3] real "make install" rule Thomas Monjalon
  3 siblings, 0 replies; 5+ messages in thread
From: Thomas Monjalon @ 2013-07-26 13:13 UTC (permalink / raw)
  To: dev

From: Olivier Matz <olivier.matz@6wind.com>

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.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
---
 doc/build-sdk-quick.txt |   13 +++++++------
 mk/rte.sdkbuild.mk      |   16 ++++++++++++++++
 2 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/doc/build-sdk-quick.txt b/doc/build-sdk-quick.txt
index d66f0d5..18b0ee6 100644
--- a/doc/build-sdk-quick.txt
+++ b/doc/build-sdk-quick.txt
@@ -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_*
diff --git a/mk/rte.sdkbuild.mk b/mk/rte.sdkbuild.mk
index 5ea4202..087d3ab 100644
--- a/mk/rte.sdkbuild.mk
+++ b/mk/rte.sdkbuild.mk
@@ -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)
-- 
1.7.10.4

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [dpdk-dev] [PATCH 0/3] real "make install" rule
  2013-07-26 13:13 [dpdk-dev] [PATCH 0/3] real "make install" rule Thomas Monjalon
                   ` (2 preceding siblings ...)
  2013-07-26 13:13 ` [dpdk-dev] [PATCH 3/3] mk: allow to specify DESTDIR in build rule Thomas Monjalon
@ 2013-07-26 13:36 ` Thomas Monjalon
  3 siblings, 0 replies; 5+ messages in thread
From: Thomas Monjalon @ 2013-07-26 13:36 UTC (permalink / raw)
  To: dev

26/07/2013 15:13, Thomas Monjalon :
> 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.

all pushed

-- 
Thomas

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-07-26 13:35 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-07-26 13:13 [dpdk-dev] [PATCH 0/3] real "make install" rule Thomas Monjalon
2013-07-26 13:13 ` [dpdk-dev] [PATCH 1/3] mk: allow to specify O= in install rule Thomas Monjalon
2013-07-26 13:13 ` [dpdk-dev] [PATCH 2/3] mk: in install rule, don't overwrite .config if it already exists Thomas Monjalon
2013-07-26 13:13 ` [dpdk-dev] [PATCH 3/3] mk: allow to specify DESTDIR in build rule Thomas Monjalon
2013-07-26 13:36 ` [dpdk-dev] [PATCH 0/3] real "make install" rule Thomas Monjalon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).