path: root/
diff options
authorBruce Richardson <>2017-11-03 17:27:32 +0000
committerBruce Richardson <>2018-01-30 21:58:59 +0100
commit3e5c3d58e1dbbcdc803ca87ebf1d26129645d70a (patch)
tree188606c0ac590f4da9aa92640361b7ad3fb0d468 /
parent029ea64575b6ba8b7cac60b9d1ddd08cbbbb3737 (diff)
build: build as both static and shared libs
This patch changes the build process to group all .o files for a driver or library into a static archive first, and then link the .o files together into a shared library. This eliminates the need for separate static or shared object builds when packaging, for instance. The "default_library" configuration option now only affects the apps and examples, which are either linked against the static or shared library versions depending on the value of the option. Signed-off-by: Bruce Richardson <> Acked-by: Luca Boccassi <>
Diffstat (limited to '')
1 files changed, 7 insertions, 15 deletions
diff --git a/ b/
index 8c08436..df10f5f 100644
--- a/
+++ b/
@@ -43,15 +43,8 @@ dpdk_libraries = []
dpdk_drivers = []
dpdk_extra_ldflags = []
-# for static libs, treat the drivers as regular libraries, otherwise
-# for shared libs, put them in a driver folder
-if get_option('default_library') == 'static'
- driver_install_path = get_option('libdir')
- eal_pmd_path = ''
- driver_install_path = join_paths(get_option('libdir'), 'dpdk/drivers')
- eal_pmd_path = join_paths(get_option('prefix'), driver_install_path)
+driver_install_path = join_paths(get_option('libdir'), 'dpdk/drivers')
+eal_pmd_path = join_paths(get_option('prefix'), driver_install_path)
# configure the build, and make sure configs here and in config folder are
# able to be included in any file. We also store a global array of include dirs
@@ -80,18 +73,17 @@ configure_file(output: build_cfg,
install_dir: join_paths(get_option('includedir'),
-# for static builds, include the drivers as libs, and also any
-# other dependent libs that DPDK needs to link against
-if get_option('default_library') == 'static'
- dpdk_drivers = ['-Wl,--whole-archive'] + dpdk_drivers + ['-Wl,--no-whole-archive']
- dpdk_libraries = dpdk_drivers + dpdk_libraries + dpdk_extra_ldflags
+# for static builds, include the drivers as libs and we need to "whole-archive"
+# them.
+dpdk_drivers = ['-Wl,--whole-archive'] + dpdk_drivers + ['-Wl,--no-whole-archive']
pkg = import('pkgconfig')
pkg.generate(name: meson.project_name(),
filebase: 'lib' + meson.project_name().to_lower(),
version: meson.project_version(),
libraries: dpdk_libraries,
+ libraries_private: dpdk_drivers + dpdk_libraries +
+ ['-Wl,-Bdynamic'] + dpdk_extra_ldflags,
description: 'The Data Plane Development Kit (DPDK)',
subdirs: [get_option('include_subdir_arch'), '.'],
extra_cflags: ['-include', 'rte_config.h', '-march=@0@'.format(machine)]