lib: allow disabling optional libraries

Add support for the disable_libs option, to allow disabling the build of
particular libraries. As part of this, maintain a list of what libraries
can safely be disabled, without breaking the build - for now this list is
solely those libraries which are not built on FreeBSD, kni, power and
vhost. This list can be expanded by future patches.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
This commit is contained in:
Bruce Richardson 2021-04-20 11:22:32 +01:00 committed by Thomas Monjalon
parent 7e06c0fe30
commit 0bf5832222
2 changed files with 25 additions and 1 deletions

View File

@ -81,6 +81,23 @@ if is_windows
] # only supported libraries for windows ] # only supported libraries for windows
endif endif
optional_libs = [
'kni',
'power',
'vhost',
]
disabled_libs = []
opt_disabled_libs = run_command(list_dir_globs, get_option('disable_libs')).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 = machine_args
default_cflags += ['-DALLOW_EXPERIMENTAL_API'] default_cflags += ['-DALLOW_EXPERIMENTAL_API']
default_cflags += ['-DALLOW_INTERNAL_API'] default_cflags += ['-DALLOW_INTERNAL_API']
@ -114,7 +131,12 @@ foreach l:libraries
deps += ['eal'] deps += ['eal']
endif endif
if disabled_libs.contains(l)
build = false
reason = 'explicitly disabled via build config'
else
subdir(l) subdir(l)
endif
if name != l if name != l
warning('Library name, "@0@", and directory name, "@1@", do not match'.format(name, l)) warning('Library name, "@0@", and directory name, "@1@", do not match'.format(name, l))
endif endif

View File

@ -6,6 +6,8 @@ option('developer_mode', type: 'feature', description:
'turn on additional build checks relevant for DPDK developers') 'turn on additional build checks relevant for DPDK developers')
option('disable_drivers', type: 'string', value: '', description: option('disable_drivers', type: 'string', value: '', description:
'Comma-separated list of drivers to explicitly disable.') 'Comma-separated list of drivers to explicitly disable.')
option('disable_libs', type: 'string', value: '', description:
'Comma-separated list of libraries to explicitly disable. [NOTE: not all libs can be disabled]')
option('drivers_install_subdir', type: 'string', value: 'dpdk/pmds-<VERSION>', description: option('drivers_install_subdir', type: 'string', value: 'dpdk/pmds-<VERSION>', description:
'Subdirectory of libdir where to install PMDs. Defaults to using a versioned subdirectory.') 'Subdirectory of libdir where to install PMDs. Defaults to using a versioned subdirectory.')
option('enable_docs', type: 'boolean', value: false, description: option('enable_docs', type: 'boolean', value: false, description: