* [PATCH v3 0/6] examples: add a new makefile to build all examples
@ 2014-05-16 8:18 Olivier Matz
[not found] ` <1400228341-29334-1-git-send-email-olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
0 siblings, 1 reply; 8+ messages in thread
From: Olivier Matz @ 2014-05-16 8:18 UTC (permalink / raw)
To: dev-VfR2kkLFssw
This patch series adds a makefile to build all examples supported
by the configuration. It helps to check that all examples compile
after a dpdk modification.
After applying the patches, it is possible to build all examples for
given targets, given the installation directory:
# first, install the x86_64-default-linuxapp-gcc in
# ${RTE_SDK}/x86_64-default-linuxapp-gcc directory
user@droids:~/dpdk.org$ make install T=x86_64-default-linuxapp-gcc
# build examples for this new installation in
# ${RTE_SDK}/examples directory
user@droids:~/dpdk.org$ make examples T=x86_64-default-linuxapp-gcc
Or directly from examples directory:
user@droids:~/dpdk.org$ cd examples
user@droids:~/dpdk.org/examples$ make RTE_SDK=${PWD}/.. \
RTE_TARGET=x86_64-default-linuxapp-gcc
Changes included in v3:
- use x86_64-default-linuxapp-gcc instead of x86_64-ivshmem-linuxapp-gcc
for default RTE_TARGET of multi_process example (was a bad copy/paste).
- replace ifndef by ?=
- fix when O= is a relative directory
- exit if the installation directory does not exist
Changes included in v2:
- do not build kni example if CONFIG_RTE_LIBRTE_KNI is not set
- fix rte.extsubdir.mk when there are several levels of subdirectories
- allow to build examples directly from dpdk root directory
- explain in commit logs that it requires an install directory
Olivier Matz (6):
mk: introduce rte.extsubdir.mk
examples: use rte.extsubdir.mk to process subdirectories
examples: add a makefile to build all examples
examples: fix qos_sched makefile
examples: fix netmap_compat example
mk: add "make examples" target in root makefile
doc/build-sdk-quick.txt | 14 +++--
examples/Makefile | 68 ++++++++++++++++++++
examples/l2fwd-ivshmem/Makefile | 9 +--
examples/multi_process/Makefile | 16 +++--
examples/multi_process/client_server_mp/Makefile | 15 ++---
examples/netmap_compat/bridge/Makefile | 5 +-
examples/qos_sched/Makefile | 2 -
examples/quota_watermark/Makefile | 12 +---
mk/rte.extsubdir.mk | 53 ++++++++++++++++
mk/rte.sdkexamples.mk | 79 ++++++++++++++++++++++++
mk/rte.sdkroot.mk | 4 ++
11 files changed, 233 insertions(+), 44 deletions(-)
create mode 100644 examples/Makefile
create mode 100644 mk/rte.extsubdir.mk
create mode 100644 mk/rte.sdkexamples.mk
--
1.9.2
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 1/6] mk: introduce rte.extsubdir.mk
[not found] ` <1400228341-29334-1-git-send-email-olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
@ 2014-05-16 8:18 ` Olivier Matz
2014-05-16 8:18 ` [PATCH v3 2/6] examples: use rte.extsubdir.mk to process subdirectories Olivier Matz
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Olivier Matz @ 2014-05-16 8:18 UTC (permalink / raw)
To: dev-VfR2kkLFssw
This makefile can be included by a project that needs to build several
applications or libraries that are located in different directories.
Signed-off-by: Olivier Matz <olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
---
mk/rte.extsubdir.mk | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 53 insertions(+)
create mode 100644 mk/rte.extsubdir.mk
diff --git a/mk/rte.extsubdir.mk b/mk/rte.extsubdir.mk
new file mode 100644
index 0000000..f50f006
--- /dev/null
+++ b/mk/rte.extsubdir.mk
@@ -0,0 +1,53 @@
+# BSD LICENSE
+#
+# Copyright(c) 2014 6WIND S.A.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of 6WIND S.A. nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+MAKEFLAGS += --no-print-directory
+
+# output directory
+O ?= .
+BASE_OUTPUT ?= $(O)
+CUR_SUBDIR ?= .
+
+.PHONY: all
+all: $(DIRS-y)
+
+.PHONY: clean
+clean: $(DIRS-y)
+
+.PHONY: $(DIRS-y)
+$(DIRS-y):
+ @echo "== $@"
+ $(Q)$(MAKE) -C $(@) \
+ M=$(CURDIR)/$(@)/Makefile \
+ O=$(BASE_OUTPUT)/$(CUR_SUBDIR)/$(@)/$(RTE_TARGET) \
+ BASE_OUTPUT=$(BASE_OUTPUT) \
+ CUR_SUBDIR=$(CUR_SUBDIR)/$(@) \
+ S=$(CURDIR)/$(@) \
+ $(filter-out $(DIRS-y),$(MAKECMDGOALS))
--
1.9.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 2/6] examples: use rte.extsubdir.mk to process subdirectories
[not found] ` <1400228341-29334-1-git-send-email-olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-05-16 8:18 ` [PATCH v3 1/6] mk: introduce rte.extsubdir.mk Olivier Matz
@ 2014-05-16 8:18 ` Olivier Matz
2014-05-16 8:18 ` [PATCH v3 3/6] examples: add a makefile to build all examples Olivier Matz
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Olivier Matz @ 2014-05-16 8:18 UTC (permalink / raw)
To: dev-VfR2kkLFssw
Signed-off-by: Olivier Matz <olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
---
examples/l2fwd-ivshmem/Makefile | 9 +--------
examples/multi_process/Makefile | 16 +++++++---------
examples/multi_process/client_server_mp/Makefile | 15 ++++++---------
examples/quota_watermark/Makefile | 12 +++---------
4 files changed, 17 insertions(+), 35 deletions(-)
diff --git a/examples/l2fwd-ivshmem/Makefile b/examples/l2fwd-ivshmem/Makefile
index 7286b37..df59ed8 100644
--- a/examples/l2fwd-ivshmem/Makefile
+++ b/examples/l2fwd-ivshmem/Makefile
@@ -37,14 +37,7 @@ endif
RTE_TARGET ?= x86_64-ivshmem-linuxapp-gcc
include $(RTE_SDK)/mk/rte.vars.mk
-unexport RTE_SRCDIR RTE_OUTPUT RTE_EXTMK
DIRS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += host guest
-.PHONY: all clean $(DIRS-y)
-
-all: $(DIRS-y)
-clean: $(DIRS-y)
-
-$(DIRS-y):
- $(MAKE) -C $@ $(MAKECMDGOALS)
+include $(RTE_SDK)/mk/rte.extsubdir.mk
diff --git a/examples/multi_process/Makefile b/examples/multi_process/Makefile
index ba96a7e..5e01f9a 100644
--- a/examples/multi_process/Makefile
+++ b/examples/multi_process/Makefile
@@ -33,15 +33,13 @@ ifeq ($(RTE_SDK),)
$(error "Please define RTE_SDK environment variable")
endif
-include $(RTE_SDK)/mk/rte.vars.mk
-unexport RTE_SRCDIR RTE_OUTPUT RTE_EXTMK
-
-DIRS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += $(wildcard *_mp)
+# Default target, can be overriden by command line or environment
+RTE_TARGET ?= x86_64-default-linuxapp-gcc
-.PHONY: all clean $(DIRS-y)
+include $(RTE_SDK)/mk/rte.vars.mk
-all: $(DIRS-y)
-clean: $(DIRS-y)
+DIRS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += client_server_mp
+DIRS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += simple_mp
+DIRS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += symmetric_mp
-$(DIRS-y):
- $(MAKE) -C $@ $(MAKECMDGOALS)
+include $(RTE_SDK)/mk/rte.extsubdir.mk
diff --git a/examples/multi_process/client_server_mp/Makefile b/examples/multi_process/client_server_mp/Makefile
index 24d31b0..d2046ba 100644
--- a/examples/multi_process/client_server_mp/Makefile
+++ b/examples/multi_process/client_server_mp/Makefile
@@ -33,15 +33,12 @@ ifeq ($(RTE_SDK),)
$(error "Please define RTE_SDK environment variable")
endif
-include $(RTE_SDK)/mk/rte.vars.mk
-unexport RTE_SRCDIR RTE_OUTPUT RTE_EXTMK
-
-DIRS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += $(wildcard mp_*)
+# Default target, can be overriden by command line or environment
+RTE_TARGET ?= x86_64-default-linuxapp-gcc
-.PHONY: all clean $(DIRS-y)
+include $(RTE_SDK)/mk/rte.vars.mk
-all: $(DIRS-y)
-clean: $(DIRS-y)
+DIRS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += mp_client
+DIRS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += mp_server
-$(DIRS-y):
- $(MAKE) -C $@ $(MAKECMDGOALS)
+include $(RTE_SDK)/mk/rte.extsubdir.mk
diff --git a/examples/quota_watermark/Makefile b/examples/quota_watermark/Makefile
index 5596dcc..e4d54c2 100644
--- a/examples/quota_watermark/Makefile
+++ b/examples/quota_watermark/Makefile
@@ -37,14 +37,8 @@ endif
RTE_TARGET ?= x86_64-default-linuxapp-gcc
include $(RTE_SDK)/mk/rte.vars.mk
-unexport RTE_SRCDIR RTE_OUTPUT RTE_EXTMK
-DIRS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += $(wildcard qw*)
+DIRS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += qw
+DIRS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += qwctl
-.PHONY: all clean $(DIRS-y)
-
-all: $(DIRS-y)
-clean: $(DIRS-y)
-
-$(DIRS-y):
- $(MAKE) -C $@ $(MAKECMDGOALS)
+include $(RTE_SDK)/mk/rte.extsubdir.mk
--
1.9.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 3/6] examples: add a makefile to build all examples
[not found] ` <1400228341-29334-1-git-send-email-olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-05-16 8:18 ` [PATCH v3 1/6] mk: introduce rte.extsubdir.mk Olivier Matz
2014-05-16 8:18 ` [PATCH v3 2/6] examples: use rte.extsubdir.mk to process subdirectories Olivier Matz
@ 2014-05-16 8:18 ` Olivier Matz
2014-05-16 8:18 ` [PATCH v3 4/6] examples: fix qos_sched makefile Olivier Matz
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Olivier Matz @ 2014-05-16 8:18 UTC (permalink / raw)
To: dev-VfR2kkLFssw
It is now possible to build all examples by doing the following:
user@droids:~/dpdk.org$ cd examples
user@droids:~/dpdk.org/examples$ make RTE_SDK=${PWD}/.. \
RTE_TARGET=x86_64-default-linuxapp-gcc
Signed-off-by: Olivier Matz <olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
---
examples/Makefile | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 68 insertions(+)
create mode 100644 examples/Makefile
diff --git a/examples/Makefile b/examples/Makefile
new file mode 100644
index 0000000..5e36c92
--- /dev/null
+++ b/examples/Makefile
@@ -0,0 +1,68 @@
+# BSD LICENSE
+#
+# Copyright(c) 2014 6WIND S.A.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of 6WIND S.A. nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ifeq ($(RTE_SDK),)
+$(error "Please define RTE_SDK environment variable")
+endif
+
+# Default target, can be overriden by command line or environment
+RTE_TARGET ?= x86_64-default-linuxapp-gcc
+
+include $(RTE_SDK)/mk/rte.vars.mk
+
+DIRS-y += cmdline
+ifneq ($(ICP_ROOT),)
+DIRS-y += dpdk_qat
+endif
+DIRS-y += exception_path
+DIRS-y += helloworld
+DIRS-y += ip_reassembly
+DIRS-$(CONFIG_RTE_MBUF_SCATTER_GATHER) += ipv4_frag
+DIRS-$(CONFIG_RTE_MBUF_SCATTER_GATHER) += ipv4_multicast
+DIRS-$(CONFIG_RTE_LIBRTE_KNI) += kni
+DIRS-y += l2fwd
+DIRS-$(CONFIG_RTE_LIBRTE_IVSHMEM) += l2fwd-ivshmem
+DIRS-y += l3fwd
+DIRS-y += l3fwd-power
+DIRS-y += l3fwd-vf
+DIRS-y += link_status_interrupt
+DIRS-y += load_balancer
+DIRS-y += multi_process
+DIRS-y += netmap_compat/bridge
+DIRS-$(CONFIG_RTE_LIBRTE_METER) += qos_meter
+DIRS-$(CONFIG_RTE_LIBRTE_SCHED) += qos_sched
+DIRS-y += quota_watermark
+DIRS-y += timer
+DIRS-y += vhost
+DIRS-$(CONFIG_RTE_LIBRTE_XEN_DOM0) += vhost_xen
+DIRS-y += vmdq
+DIRS-y += vmdq_dcb
+
+include $(RTE_SDK)/mk/rte.extsubdir.mk
--
1.9.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 4/6] examples: fix qos_sched makefile
[not found] ` <1400228341-29334-1-git-send-email-olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
` (2 preceding siblings ...)
2014-05-16 8:18 ` [PATCH v3 3/6] examples: add a makefile to build all examples Olivier Matz
@ 2014-05-16 8:18 ` Olivier Matz
2014-05-16 8:19 ` [PATCH v3 5/6] examples: fix netmap_compat example Olivier Matz
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Olivier Matz @ 2014-05-16 8:18 UTC (permalink / raw)
To: dev-VfR2kkLFssw
The example does not compile as the linker complains about duplicated
symbols.
Remove -lsched from LDLIBS, it is already present in rte.app.mk and
added by the DPDK framework automatically.
Signed-off-by: Olivier Matz <olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
---
examples/qos_sched/Makefile | 2 --
1 file changed, 2 deletions(-)
diff --git a/examples/qos_sched/Makefile b/examples/qos_sched/Makefile
index b91fe37..9366efe 100755
--- a/examples/qos_sched/Makefile
+++ b/examples/qos_sched/Makefile
@@ -54,6 +54,4 @@ CFLAGS += $(WERROR_FLAGS)
CFLAGS_args.o := -D_GNU_SOURCE
CFLAGS_cfg_file.o := -D_GNU_SOURCE
-LDLIBS += -lrte_sched
-
include $(RTE_SDK)/mk/rte.extapp.mk
--
1.9.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 5/6] examples: fix netmap_compat example
[not found] ` <1400228341-29334-1-git-send-email-olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
` (3 preceding siblings ...)
2014-05-16 8:18 ` [PATCH v3 4/6] examples: fix qos_sched makefile Olivier Matz
@ 2014-05-16 8:19 ` Olivier Matz
2014-05-16 8:19 ` [PATCH v3 6/6] mk: add "make examples" target in root makefile Olivier Matz
2014-05-16 14:37 ` [PATCH v3 0/6] examples: add a new makefile to build all examples Thomas Monjalon
6 siblings, 0 replies; 8+ messages in thread
From: Olivier Matz @ 2014-05-16 8:19 UTC (permalink / raw)
To: dev-VfR2kkLFssw
It is not allowed to reference a an absolute file name in SRCS-y.
A VPATH has to be used, else the dependencies won't be checked
properly.
Signed-off-by: Olivier Matz <olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
---
examples/netmap_compat/bridge/Makefile | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/examples/netmap_compat/bridge/Makefile b/examples/netmap_compat/bridge/Makefile
index 74feb1e..ebc6b1c 100644
--- a/examples/netmap_compat/bridge/Makefile
+++ b/examples/netmap_compat/bridge/Makefile
@@ -41,9 +41,12 @@ include $(RTE_SDK)/mk/rte.vars.mk
# binary name
APP = bridge
+# for compat_netmap.c
+VPATH := $(SRCDIR)/../lib
+
# all source are stored in SRCS-y
SRCS-y := bridge.c
-SRCS-y += $(SRCDIR)/../lib/compat_netmap.c
+SRCS-y += compat_netmap.c
CFLAGS += -O3 -I$(SRCDIR)/../lib -I$(SRCDIR)/../netmap
CFLAGS += $(WERROR_FLAGS)
--
1.9.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 6/6] mk: add "make examples" target in root makefile
[not found] ` <1400228341-29334-1-git-send-email-olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
` (4 preceding siblings ...)
2014-05-16 8:19 ` [PATCH v3 5/6] examples: fix netmap_compat example Olivier Matz
@ 2014-05-16 8:19 ` Olivier Matz
2014-05-16 14:37 ` [PATCH v3 0/6] examples: add a new makefile to build all examples Thomas Monjalon
6 siblings, 0 replies; 8+ messages in thread
From: Olivier Matz @ 2014-05-16 8:19 UTC (permalink / raw)
To: dev-VfR2kkLFssw
It is now possible to build all projects from the examples/ directory
using one command from root directory.
Some illustration of what is possible:
- build examples in the DPDK tree for one target
# install the x86_64-default-linuxapp-gcc in
# ${RTE_SDK}/x86_64-default-linuxapp-gcc directory
user@droids:~/dpdk.org$ make install T=x86_64-default-linuxapp-gcc
# build examples for this new installation in
# ${RTE_SDK}/examples directory
user@droids:~/dpdk.org$ make examples T=x86_64-default-linuxapp-gcc
- build examples outside DPDK tree for several targets
# install all targets matching x86_64-*-linuxapp-gcc in
# ${RTE_SDK}/x86_64-*-linuxapp-gcc directories
user@droids:~/dpdk.org$ make install T=x86_64-*-linuxapp-gcc
# build examples for these installations in /tmp/foobar
user@droids:~/dpdk.org$ make examples T=x86_64-*-linuxapp-gcc O=/tmp/foobar
Signed-off-by: Olivier Matz <olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
---
doc/build-sdk-quick.txt | 14 +++++----
mk/rte.sdkexamples.mk | 77 +++++++++++++++++++++++++++++++++++++++++++++++++
mk/rte.sdkroot.mk | 4 +++
3 files changed, 89 insertions(+), 6 deletions(-)
create mode 100644 mk/rte.sdkexamples.mk
diff --git a/doc/build-sdk-quick.txt b/doc/build-sdk-quick.txt
index 8989a32..d768c44 100644
--- a/doc/build-sdk-quick.txt
+++ b/doc/build-sdk-quick.txt
@@ -1,12 +1,14 @@
Basic build
make config T=x86_64-default-linuxapp-gcc && make
Build commands
- config get configuration from target template (T=)
- 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
+ config get configuration from target template (T=)
+ 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
+ examples build examples for given targets (T=)
+ examples_clean clean examples for given targets (T=)
Build variables
EXTRA_CPPFLAGS preprocessor options
EXTRA_CFLAGS compiler options
diff --git a/mk/rte.sdkexamples.mk b/mk/rte.sdkexamples.mk
new file mode 100644
index 0000000..111ce91
--- /dev/null
+++ b/mk/rte.sdkexamples.mk
@@ -0,0 +1,77 @@
+# BSD LICENSE
+#
+# Copyright(c) 2014 6WIND S.A.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of 6WIND S.A. nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# examples application are seen as external applications which are
+# not part of SDK.
+BUILDING_RTE_SDK :=
+export BUILDING_RTE_SDK
+
+# Build directory is given with O=
+O ?= $(RTE_SDK)/examples
+
+# Target for which examples should be built.
+T ?= *
+
+# list all available configurations
+EXAMPLES_CONFIGS := $(patsubst $(RTE_SRCDIR)/config/defconfig_%,%,\
+ $(wildcard $(RTE_SRCDIR)/config/defconfig_$(T)))
+EXAMPLES_TARGETS := $(addsuffix _examples,\
+ $(filter-out %~,$(EXAMPLES_CONFIGS)))
+
+.PHONY: examples
+examples: $(EXAMPLES_TARGETS)
+
+%_examples:
+ @echo ================== Build examples for $*
+ $(Q)if [ ! -d "${RTE_SDK}/${*}" ]; then \
+ echo "Target ${*} does not exist in ${RTE_SDK}/${*}." ; \
+ echo -n "Please install DPDK first (make install) or use another " ; \
+ echo "target argument (T=target)." ; \
+ false ; \
+ else \
+ $(MAKE) -C examples O=$(abspath $(O)) RTE_TARGET=$(*); \
+ fi
+
+EXAMPLES_CLEAN_TARGETS := $(addsuffix _examples_clean,\
+ $(filter-out %~,$(EXAMPLES_CONFIGS)))
+
+.PHONY: examples_clean
+examples_clean: $(EXAMPLES_CLEAN_TARGETS)
+
+%_examples_clean:
+ @echo ================== Clean examples for $*
+ $(Q)if [ ! -d "${RTE_SDK}/${*}" ]; then \
+ echo "Target ${*} does not exist in ${RTE_SDK}/${*}." ; \
+ echo -n "Please install DPDK first (make install) or use another " ; \
+ echo "target argument (T=target)." ; \
+ false ; \
+ else \
+ $(MAKE) -C examples O=$(abspath $(O)) RTE_TARGET=$(*) clean; \
+ fi
diff --git a/mk/rte.sdkroot.mk b/mk/rte.sdkroot.mk
index 28e404b..54aa204 100644
--- a/mk/rte.sdkroot.mk
+++ b/mk/rte.sdkroot.mk
@@ -115,6 +115,10 @@ depdirs depgraph:
gcov gcovclean:
$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkgcov.mk $@
+.PHONY: examples examples_clean
+examples examples_clean:
+ $(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkexamples.mk $@
+
# all other build targets
%:
$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkconfig.mk checkconfig
--
1.9.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v3 0/6] examples: add a new makefile to build all examples
[not found] ` <1400228341-29334-1-git-send-email-olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
` (5 preceding siblings ...)
2014-05-16 8:19 ` [PATCH v3 6/6] mk: add "make examples" target in root makefile Olivier Matz
@ 2014-05-16 14:37 ` Thomas Monjalon
6 siblings, 0 replies; 8+ messages in thread
From: Thomas Monjalon @ 2014-05-16 14:37 UTC (permalink / raw)
To: Olivier Matz; +Cc: dev-VfR2kkLFssw
2014-05-16 10:18, Olivier Matz:
> This patch series adds a makefile to build all examples supported
> by the configuration. It helps to check that all examples compile
> after a dpdk modification.
>
> After applying the patches, it is possible to build all examples for
> given targets, given the installation directory:
>
> # first, install the x86_64-default-linuxapp-gcc in
> # ${RTE_SDK}/x86_64-default-linuxapp-gcc directory
> user@droids:~/dpdk.org$ make install T=x86_64-default-linuxapp-gcc
> # build examples for this new installation in
> # ${RTE_SDK}/examples directory
> user@droids:~/dpdk.org$ make examples T=x86_64-default-linuxapp-gcc
>
> Or directly from examples directory:
>
> user@droids:~/dpdk.org$ cd examples
> user@droids:~/dpdk.org/examples$ make RTE_SDK=${PWD}/.. \
> RTE_TARGET=x86_64-default-linuxapp-gcc
>
>
> Changes included in v3:
> - use x86_64-default-linuxapp-gcc instead of x86_64-ivshmem-linuxapp-gcc
> for default RTE_TARGET of multi_process example (was a bad copy/paste).
> - replace ifndef by ?=
> - fix when O= is a relative directory
> - exit if the installation directory does not exist
>
> Changes included in v2:
> - do not build kni example if CONFIG_RTE_LIBRTE_KNI is not set
> - fix rte.extsubdir.mk when there are several levels of subdirectories
> - allow to build examples directly from dpdk root directory
> - explain in commit logs that it requires an install directory
>
> Olivier Matz (6):
> mk: introduce rte.extsubdir.mk
> examples: use rte.extsubdir.mk to process subdirectories
> examples: add a makefile to build all examples
> examples: fix qos_sched makefile
> examples: fix netmap_compat example
> mk: add "make examples" target in root makefile
Acked-by: Thomas Monjalon <thomas.monjalon-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
Applied for version 1.7.0.
--
Thomas
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2014-05-16 14:37 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-16 8:18 [PATCH v3 0/6] examples: add a new makefile to build all examples Olivier Matz
[not found] ` <1400228341-29334-1-git-send-email-olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-05-16 8:18 ` [PATCH v3 1/6] mk: introduce rte.extsubdir.mk Olivier Matz
2014-05-16 8:18 ` [PATCH v3 2/6] examples: use rte.extsubdir.mk to process subdirectories Olivier Matz
2014-05-16 8:18 ` [PATCH v3 3/6] examples: add a makefile to build all examples Olivier Matz
2014-05-16 8:18 ` [PATCH v3 4/6] examples: fix qos_sched makefile Olivier Matz
2014-05-16 8:19 ` [PATCH v3 5/6] examples: fix netmap_compat example Olivier Matz
2014-05-16 8:19 ` [PATCH v3 6/6] mk: add "make examples" target in root makefile Olivier Matz
2014-05-16 14:37 ` [PATCH v3 0/6] examples: add a new makefile to build all examples Thomas Monjalon
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.