[v2,5/5] build: select optional libraries
Checks
Commit Message
There is currently no way to know which libraries are optional.
Introduce a enable_libs option (close to what we have for drivers) so
that packagers or projects consuming DPDK can more easily select the
optional libraries that matter to them and disable other optional
libraries.
Note: the enabled_libs variable is renamed for sake of consistency.
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
buildtools/chkincs/meson.build | 2 +-
lib/meson.build | 34 ++++++++++++++++++----------------
meson.build | 3 ++-
meson_options.txt | 2 ++
4 files changed, 23 insertions(+), 18 deletions(-)
@@ -18,7 +18,7 @@ sources = files('main.c')
sources += gen_c_files.process(dpdk_chkinc_headers)
deps = []
-foreach l:enabled_libs
+foreach l:dpdk_libs_enabled
deps += get_variable('static_rte_' + l)
endforeach
@@ -78,17 +78,10 @@ optional_libs = [
'vhost',
]
-disabled_libs = []
-opt_disabled_libs = run_command(list_dir_globs, get_option('disable_libs'),
+enable_libs = run_command(list_dir_globs, get_option('enable_libs'),
+ check: true).stdout().split()
+disable_libs = run_command(list_dir_globs, get_option('disable_libs'),
check: true).stdout().split()
-foreach l:opt_disabled_libs
- if not optional_libs.contains(l)
- warning('Cannot disable mandatory library "@0@"'.format(l))
- continue
- endif
- disabled_libs += l
-endforeach
-
default_cflags = machine_args
default_cflags += ['-DALLOW_EXPERIMENTAL_API']
@@ -98,8 +91,6 @@ if cc.has_argument('-Wno-format-truncation')
default_cflags += '-Wno-format-truncation'
endif
-enabled_libs = [] # used to print summary at the end
-
foreach l:libraries
build = true
reason = '<unknown reason>' # set if build == false to explain why
@@ -123,10 +114,21 @@ foreach l:libraries
deps += ['eal']
endif
- if disabled_libs.contains(l)
- build = false
- reason = 'explicitly disabled via build config'
+ if optional_libs.contains(l)
+ # check for enabled libraries only if one is set in config
+ if enable_libs.length() != 0 and not enable_libs.contains(l)
+ build = false
+ reason = 'not in enabled libraries build config'
+ elif disable_libs.contains(l)
+ build = false
+ reason = 'explicitly disabled via build config'
+ endif
else
+ if disable_libs.contains(l)
+ warning('Cannot disable mandatory library "@0@"'.format(l))
+ endif
+ endif
+ if build
subdir(l)
endif
if name != l
@@ -150,7 +152,7 @@ foreach l:libraries
static_deps += [get_variable('static_rte_' + d)]
endforeach
- enabled_libs += name
+ dpdk_libs_enabled += name
dpdk_conf.set('RTE_LIB_' + name.to_upper(), 1)
install_headers(headers)
install_headers(indirect_headers)
@@ -35,6 +35,7 @@ dpdk_driver_classes = []
dpdk_drivers = []
dpdk_extra_ldflags = []
dpdk_libs_disabled = []
+dpdk_libs_enabled = []
dpdk_drvs_disabled = []
abi_version_file = files('ABI_VERSION')
@@ -102,7 +103,7 @@ subdir('buildtools/pkg-config')
output_message = '\n=================\nLibraries Enabled\n=================\n'
output_message += '\nlibs:\n\t'
output_count = 0
-foreach lib:enabled_libs
+foreach lib:dpdk_libs_enabled
output_message += lib + ', '
output_count += 1
if output_count == 8
@@ -16,6 +16,8 @@ option('enable_docs', type: 'boolean', value: false, description:
'build documentation')
option('enable_drivers', type: 'string', value: '', description:
'Comma-separated list of drivers to build. If unspecified, build all drivers.')
+option('enable_libs', type: 'string', value: '', description:
+ 'Comma-separated list of libraries to explicitly enable.')
option('enable_driver_sdk', type: 'boolean', value: false, description:
'Install headers to build drivers.')
option('enable_kmods', type: 'boolean', value: false, description: