mk: remove multi-target install
authorThomas Monjalon <thomas.monjalon@6wind.com>
Tue, 1 Dec 2015 07:36:00 +0000 (08:36 +0100)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Sun, 6 Dec 2015 14:41:04 +0000 (15:41 +0100)
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.

The variable BUILD_DIR is also renamed to RTE_OUTPUT used in other files.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Panu Matilainen <pmatilai@redhat.com>
doc/build-sdk-quick.txt
doc/guides/linux_gsg/build_dpdk.rst
doc/guides/prog_guide/dev_kit_root_make_help.rst
mk/rte.sdkinstall.mk
mk/rte.sdkroot.mk
tools/setup.sh

index bf18b48..b5f752e 100644 (file)
@@ -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_*
index 2680e66..fd0fcc8 100644 (file)
@@ -110,22 +110,6 @@ To compile a 32-bit build using gcc, the make command should be:
 
     make install T=i686-native-linuxapp-gcc
 
-To compile all 64-bit targets using gcc, use:
-
-.. code-block:: console
-
-    make install T=x86_64*gcc
-
-To compile all 64-bit targets using both gcc and icc, use:
-
-.. code-block:: console
-
-    make install T=x86_64-*
-
-.. note::
-
-    The wildcard operator (*) can be used to create multiple targets at the same time.
-
 To prepare a target without building it, for example, if the configuration changes need to be made before compilation,
 use the make config T=<target> command:
 
index eb7da02..6910b74 100644 (file)
@@ -108,21 +108,14 @@ Install Targets
 *   Install
 
     Build the DPDK binary.
-    Actually, this builds each supported target in a separate directory.
-    The name of each directory is the name of the target.
-    The name of the targets to install can be optionally specified using T=mytarget.
-    The target name can contain wildcard \* characters.
+    The name of the target to install is specified using T=mytarget.
     The list of available targets are in $(RTE_SDK)/config (remove the defconfig\_ prefix).
 
     Example:
 
     .. code-block:: console
 
-        make install T=x86_64-*
-
-*   Uninstall
-
-    Remove installed target directories.
+        make install T=x86_64-native-linuxapp-gcc
 
 Test Targets
 ------------
index 86c98a5..0b80104 100644 (file)
 #   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 #   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
+# Configuration, compilation and installation can be done at once
+# with make install T=<config>
 
-# 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)))
+# The build directory is T and may be prepended with O
+O ?= .
+RTE_OUTPUT := $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 $(RTE_OUTPUT)/.config ]; then \
+               $(MAKE) config O=$(RTE_OUTPUT); \
+       elif cmp -s $(RTE_OUTPUT)/.config.orig $(RTE_OUTPUT)/.config; then \
+               $(MAKE) config O=$(RTE_OUTPUT); \
        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 $(RTE_OUTPUT)/.config.orig ] ; then \
+                       tmp_build=$(RTE_OUTPUT)/.config.tmp; \
+                       $(MAKE) config O=$$tmp_build; \
+                       if ! cmp -s $(RTE_OUTPUT)/.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=$(RTE_OUTPUT)
index 0e97308..9fdecf4 100644 (file)
@@ -93,8 +93,8 @@ config showconfigs showversion:
 test fast_test ring_test mempool_test perf_test coverage:
        $(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdktest.mk $@
 
-.PHONY: install uninstall
-install uninstall:
+.PHONY: install
+install:
        $(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkinstall.mk $@
 
 .PHONY: doc help
index fbd3853..faa5eee 100755 (executable)
@@ -110,14 +110,6 @@ setup_target()
        echo "------------------------------------------------------------------------------"
 }
 
-#
-# Uninstall all targets.
-#
-uninstall_targets()
-{
-       make uninstall
-}
-
 #
 # Creates hugepage filesystem.
 #
@@ -577,23 +569,20 @@ step5_func()
 {
        TITLE="Uninstall and system cleanup"
 
-       TEXT[1]="Uninstall all targets"
-       FUNC[1]="uninstall_targets"
-
-       TEXT[2]="Unbind NICs from IGB UIO or VFIO driver"
-       FUNC[2]="unbind_nics"
+       TEXT[1]="Unbind NICs from IGB UIO or VFIO driver"
+       FUNC[1]="unbind_nics"
 
-       TEXT[3]="Remove IGB UIO module"
-       FUNC[3]="remove_igb_uio_module"
+       TEXT[2]="Remove IGB UIO module"
+       FUNC[2]="remove_igb_uio_module"
 
-       TEXT[4]="Remove VFIO module"
-       FUNC[4]="remove_vfio_module"
+       TEXT[3]="Remove VFIO module"
+       FUNC[3]="remove_vfio_module"
 
-       TEXT[5]="Remove KNI module"
-       FUNC[5]="remove_kni_module"
+       TEXT[4]="Remove KNI module"
+       FUNC[4]="remove_kni_module"
 
-       TEXT[6]="Remove hugepage mappings"
-       FUNC[6]="clear_huge_pages"
+       TEXT[5]="Remove hugepage mappings"
+       FUNC[5]="clear_huge_pages"
 }
 
 STEPS[1]="step1_func"