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