build: process dependencies before main build check

If we want to add support for turning off components because of missing
dependencies, then we need to check for those dependencies before we
make a determination as to whether a component should be built or not,
assuming that the component says it should be built.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Luca Boccassi <bluca@debian.org>
Acked-by: Maxime Coquelin <maxime.coquelin@redhat.com>
This commit is contained in:
Bruce Richardson 2019-09-25 15:55:30 +01:00 committed by Thomas Monjalon
parent e162b8e910
commit 7f8f7f4d0a
2 changed files with 27 additions and 23 deletions

View File

@ -59,6 +59,20 @@ foreach class:dpdk_driver_classes
# pull in driver directory which should assign to each of the above
subdir(drv_path)
if build
# get dependency objs from strings
shared_deps = ext_deps
static_deps = ext_deps
foreach d:deps
if not is_variable('shared_rte_' + d)
error('Missing internal dependency "@0@" for @1@ [@2@]'
.format(d, name, 'drivers/' + drv_path))
endif
shared_deps += [get_variable('shared_rte_' + d)]
static_deps += [get_variable('static_rte_' + d)]
endforeach
endif
if not build
# some driver directories are placeholders which
# are never built, so we allow suppression of the
@ -78,19 +92,6 @@ foreach class:dpdk_driver_classes
cflags += '-DALLOW_EXPERIMENTAL_API'
endif
# get dependency objs from strings
shared_deps = []
static_deps = []
foreach d:deps
if not is_variable('shared_rte_' + d)
error('Missing dependency ' + d +
' for driver ' + lib_name)
endif
shared_deps += [get_variable('shared_rte_' + d)]
static_deps += [get_variable('static_rte_' + d)]
endforeach
shared_deps += ext_deps
static_deps += ext_deps
dpdk_extra_ldflags += pkgconfig_extra_libs
# generate pmdinfo sources by building a temporary

View File

@ -66,6 +66,19 @@ foreach l:libraries
dir_name = 'librte_' + l
subdir(dir_name)
if build
shared_deps = ext_deps
static_deps = ext_deps
foreach d:deps
if not is_variable('shared_rte_' + d)
error('Missing internal dependency "@0@" for @1@ [@2@]'
.format(d, name, 'lib/' + dir_name))
endif
shared_deps += [get_variable('shared_rte_' + d)]
static_deps += [get_variable('static_rte_' + d)]
endforeach
endif
if not build
dpdk_libs_disabled += name
set_variable(name.underscorify() + '_disable_reason', reason)
@ -82,16 +95,6 @@ foreach l:libraries
shared_dep = declare_dependency(include_directories: includes)
static_dep = shared_dep
else
shared_deps = ext_deps
static_deps = ext_deps
foreach d:deps
if not is_variable('shared_rte_' + d)
error('Missing dependency ' + d +
' for library ' + libname)
endif
shared_deps += [get_variable('shared_rte_' + d)]
static_deps += [get_variable('static_rte_' + d)]
endforeach
if allow_experimental_apis
cflags += '-DALLOW_EXPERIMENTAL_API'