support building ethtool example using meson
cover support building ethtool example using meson
Add support for building the ethtool example as part of a meson build, or separately using the pkgconfig file produced by meson.
Bruce Richardson (2):
examples/ethtool: add to meson build examples/ethtool: enable build using pkg-config vars
examples/ethtool/Makefile | 50 ++++++++++++++++++++++++++++++++++++++++++++ examples/ethtool/meson.build | 13 ++++++++++-- 2 files changed, 61 insertions(+), 2 deletions(-)
Signature · 1 line
2.14.3
PATCH 1/2 examples/ethtool: add to meson build
Add the ethtool example to the meson build. This example is more complicated than the previously added ones as it has files in two subdirectories. An ethtool "wrapper lib" in one, used by the actual example "ethtool app" in the other.
Rather than using recursive operation, like is done with the makefiles, we instead can just special-case the building of the library from the single .c file, and then use that as a dependency when building the app proper.
--- examples/ethtool/meson.build | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-)
examples/ethtool/meson.build +11 -2
@@ -6,5 +6,14 @@ # To build this example as a standalone application with an already-installed # DPDK instance, use 'make' -# Example app currently unsupported by meson build -build = false +# build the ethtool wrapper as a lib, which app uses as a dependency +ethtool_inc = include_directories('lib') +ethtool_lib = static_library('rte_ethtool', 'lib/rte_ethtool.c', + include_directories: ethtool_inc, + dependencies: [static_rte_ethdev, static_rte_pmd_ixgbe]) +ethtool_dep = declare_dependency(link_with: ethtool_lib, + include_directories: ethtool_inc) + +# sample app files are in the ethtool-app subdir +sources = files('ethtool-app/ethapp.c', 'ethtool-app/main.c') +ext_deps += ethtool_dep
Signature · 1 line
2.14.3
Re: [PATCH 1/2] examples/ethtool: add to meson build
29/03/2018 16:04, Bruce Richardson:
Quoted 11 lines
Add the ethtool example to the meson build. This example is more complicated than the previously added ones as it has files in two subdirectories. An ethtool "wrapper lib" in one, used by the actual example "ethtool app" in the other.
Rather than using recursive operation, like is done with the makefiles, we instead can just special-case the building of the library from the single .c file, and then use that as a dependency when building the app proper.
Signed-off-by Bruce Richardson <[email protected]>
It does not compile because of experimental function:examples/ethtool/lib/rte_ethtool.c:186:2: error:
‘rte_eth_dev_get_module_info’ is deprecated: Symbol is not yet part of stable ABI
Re: [PATCH 1/2] examples/ethtool: add to meson build
Quoted 11 lines · Thomas Monjalon
29/03/2018 16:04, Bruce Richardson:
Quoted 10 lines
Add the ethtool example to the meson build. This example is more complicated than the previously added ones as it has files in two subdirectories. An ethtool "wrapper lib" in one, used by the actual example "ethtool app" in the other.
Rather than using recursive operation, like is done with the makefiles, we instead can just special-case the building of the library from the single .c file, and then use that as a dependency when building the app proper.
Quoted 6 lines
Quoted 1 line
Signed-off-by Bruce Richardson <[email protected]>It does not compile because of experimental function:
examples/ethtool/lib/rte_ethtool.c:186:2: error:
‘rte_eth_dev_get_module_info’ is deprecated: Symbol is not yet part of stable ABI
Ok. This set is fairly old, and I think I've found other issues with it since. I suggest we drop this set for 18.08 consideration.
PATCH 2/2 examples/ethtool: enable build using pkg-config vars
In reply to Bruce RichardsonWhen provided as an example in a DPDK package, the build of the example app should use the pkg-config-supplied values from the package. As with other examples, set up makefile to allow compilation either using pkg-config or old $RTE_SDK/$RTE_TARGET values.
--- examples/ethtool/Makefile | 50 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+)
examples/ethtool/Makefile +50 -0
@@ -1,6 +1,54 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2015 Intel Corporation +# Build using pkg-config variables if possible +$(shell pkg-config --exists libdpdk) +ifeq ($(.SHELLSTATUS),0) + +# sample app consists of two parts, an example library and app using it +APP := ethtool +SRCS-y := ethtool-app/main.c ethtool-app/ethapp.c + +LIB := rte_ethtool +LIB-SRC := rte_ethtool.c + +all: shared +.PHONY: shared static +shared: build/$(APP)-shared + ln -sf $(APP)-shared build/$(APP) +static: build/$(APP)-static + ln -sf $(APP)-static build/$(APP) + +PC_FILE := $(shell pkg-config --path libdpdk) +CFLAGS += -O3 $(shell pkg-config --cflags libdpdk) +LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk) -lrte_pmd_ixgbe +LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk) + +LIB-OBJ := build/$(LIB-SRC:.c=.o) +AR_FILE := build/lib$(LIB).a + +$(LIB-OBJ): lib/$(LIB-SRC) Makefile $(PC_FILE) | build + $(CC) -c $(CFLAGS) lib/$(LIB-SRC) -o $@ + +$(AR_FILE): $(LIB-OBJ) + $(AR) r $@ $< + +build/$(APP)-shared: $(SRCS-y) $(AR_FILE) Makefile $(PC_FILE) | build + $(CC) -Ilib $(CFLAGS) $(SRCS-y) $(AR_FILE) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED) + +build/$(APP)-static: $(SRCS-y) $(AR_FILE) Makefile $(PC_FILE) | build + $(CC) -Ilib $(CFLAGS) $(SRCS-y) $(AR_FILE) -o $@ $(LDFLAGS) $(LDFLAGS_STATIC) + +build: + @mkdir -p $@ + +.PHONY: clean +clean: + rm -f build/$(APP) build/$(APP)-static build/$(APP)-shared + rmdir --ignore-fail-on-non-empty build + +else + ifeq ($(RTE_SDK),) $(error "Please define RTE_SDK environment variable") endif
@@ -21,3 +69,5 @@ endif DEPDIRS-ethtool-app := lib include $(RTE_SDK)/mk/rte.extsubdir.mk + +endif # no pkg-config for DPDK
Signature · 1 line
2.14.3