[dpdk-dev] [PATCH 1/3] mk: allow to specify O= in install rule

Thomas Monjalon thomas.monjalon at 6wind.com
Fri Jul 26 15:13:43 CEST 2013


From: Olivier Matz <olivier.matz at 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 at 6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon at 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



More information about the dev mailing list