[dpdk-dev] [PATCH 01/10] mk: remove multi-target install

Thomas Monjalon thomas.monjalon at 6wind.com
Wed Dec 2 04:57:47 CET 2015


The multi-target install create some subdirectories with the target name
which is not standard for a "make install" procedure.

The uninstall procedure cannot be applied properly (without removing
all files in a directory). It would need to pre-compute paths.
As it is a packaging issue, it is removed from the build system capabilities.

Signed-off-by: Thomas Monjalon <thomas.monjalon at 6wind.com>
---
 doc/build-sdk-quick.txt |  5 ++--
 mk/rte.sdkinstall.mk    | 61 +++++++++++++------------------------------------
 mk/rte.sdkroot.mk       |  4 ++--
 3 files changed, 20 insertions(+), 50 deletions(-)

diff --git a/doc/build-sdk-quick.txt b/doc/build-sdk-quick.txt
index bf18b48..b5f752e 100644
--- a/doc/build-sdk-quick.txt
+++ b/doc/build-sdk-quick.txt
@@ -5,8 +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) and install in DESTDIR
-	uninstall        remove all installed targets
+	install          configure, build and install a target in DESTDIR
 	examples         build examples for given targets (T=)
 	examples_clean   clean examples for given targets (T=)
 Build variables
@@ -20,6 +19,6 @@ Build variables
 	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
+	T         target template - 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 86c98a5..e8355eb 100644
--- a/mk/rte.sdkinstall.mk
+++ b/mk/rte.sdkinstall.mk
@@ -30,58 +30,29 @@
 #   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 # Build directory is given with O=
-ifdef O
-BUILD_DIR=$(O)
-else
-BUILD_DIR=.
-endif
+O ?= .
 
-# Targets to install can be specified in command line. It can be a
-# target name or a name containing jokers "*". Example:
-# x86_64-native-*-gcc
-ifndef T
-T=*
-endif
-
-#
-# install: build sdk for all supported targets
-#
-INSTALL_CONFIGS := $(patsubst $(RTE_SRCDIR)/config/defconfig_%,%,\
-	$(wildcard $(RTE_SRCDIR)/config/defconfig_$(T)))
-INSTALL_TARGETS := $(addsuffix _install,\
-	$(filter-out %~,$(INSTALL_CONFIGS)))
+# Configuration, compilation and installation can be done at once
+# with make install T=<config>
+# The build directory is T and may be prepended with O
+BUILD_DIR := $O/$T
 
 .PHONY: install
-install: $(INSTALL_TARGETS)
-
-%_install:
-	@echo ================== Installing $*
-	$(Q)if [ ! -f $(BUILD_DIR)/$*/.config ]; then \
-		$(MAKE) config T=$* O=$(BUILD_DIR)/$*; \
-	elif cmp -s $(BUILD_DIR)/$*/.config.orig $(BUILD_DIR)/$*/.config; then \
-		$(MAKE) config T=$* O=$(BUILD_DIR)/$*; \
+install:
+	@echo ================== Installing $T
+	$(Q)if [ ! -f $(BUILD_DIR)/.config ]; then \
+		$(MAKE) config T=$T O=$(BUILD_DIR); \
+	elif cmp -s $(BUILD_DIR)/.config.orig $(BUILD_DIR)/.config; then \
+		$(MAKE) config T=$T O=$(BUILD_DIR); \
 	else \
-		if [ -f $(BUILD_DIR)/$*/.config.orig ] ; then \
-			tmp_build=$(BUILD_DIR)/$*/.config.tmp; \
-			$(MAKE) config T=$* O=$$tmp_build; \
-			if ! cmp -s $(BUILD_DIR)/$*/.config.orig $$tmp_build/.config ; then \
+		if [ -f $(BUILD_DIR)/.config.orig ] ; then \
+			tmp_build=$(BUILD_DIR)/.config.tmp; \
+			$(MAKE) config T=$T O=$$tmp_build; \
+			if ! cmp -s $(BUILD_DIR)/.config.orig $$tmp_build/.config ; then \
 				echo "Conflict: local config and template config have both changed"; \
 				exit 1; \
 			fi; \
 		fi; \
 		echo "Using local configuration"; \
 	fi
-	$(Q)$(MAKE) all O=$(BUILD_DIR)/$*
-
-#
-# uninstall: remove all built sdk
-#
-UNINSTALL_TARGETS := $(addsuffix _uninstall,\
-	$(filter-out %~,$(INSTALL_CONFIGS)))
-
-.PHONY: uninstall
-uninstall: $(UNINSTALL_TARGETS)
-
-%_uninstall:
-	@echo ================== Uninstalling $*
-	$(Q)rm -rf $(BUILD_DIR)/$*
+	$(Q)$(MAKE) all O=$(BUILD_DIR)
diff --git a/mk/rte.sdkroot.mk b/mk/rte.sdkroot.mk
index e8423b0..18180fa 100644
--- a/mk/rte.sdkroot.mk
+++ b/mk/rte.sdkroot.mk
@@ -97,8 +97,8 @@ test fast_test ring_test mempool_test perf_test coverage:
 testall:
 	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdktestall.mk $@
 
-.PHONY: install uninstall
-install uninstall:
+.PHONY: install
+install:
 	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkinstall.mk $@
 
 .PHONY: doc help
-- 
2.5.2



More information about the dev mailing list