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
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_*
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:
* 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
------------
# (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)
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
echo "------------------------------------------------------------------------------"
}
-#
-# Uninstall all targets.
-#
-uninstall_targets()
-{
- make uninstall
-}
-
#
# Creates hugepage filesystem.
#
{
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"