X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fmeson.build;h=b41a0f18e8d31f344a31ed0c8827e95dc59bb889;hb=b2400a53e67564bd0d64c58de3bdc8277bfaaba3;hp=f6680ce10774f7244a888c0c0be4af96bdd46d73;hpb=6c9457c27954f16d99f3798711eb253fbaf05fa3;p=dpdk.git diff --git a/drivers/meson.build b/drivers/meson.build index f6680ce107..b41a0f18e8 100644 --- a/drivers/meson.build +++ b/drivers/meson.build @@ -1,7 +1,12 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2017 Intel Corporation -driver_classes = ['bus', 'crypto', 'event', 'mempool', 'net'] +# Defines the order in which the drivers are buit. +driver_classes = ['bus', + 'mempool', # depends on bus. + 'net', # depends on bus and mempool. + 'crypto', # depenss on bus, mempool (net in future). + 'event'] # depends on bus, mempool and net. foreach class:driver_classes drivers = [] @@ -23,7 +28,7 @@ foreach class:driver_classes allow_experimental_apis = false sources = [] objs = [] - cflags = [] + cflags = machine_args includes = [include_directories(drv_path)] # set up internal deps. Drivers can append/override as necessary deps = std_deps @@ -40,6 +45,7 @@ foreach class:driver_classes if build dpdk_conf.set(config_flag_fmt.format(name.to_upper()),1) + lib_name = driver_name_fmt.format(name) if allow_experimental_apis cflags += '-DALLOW_EXPERIMENTAL_API' @@ -56,21 +62,22 @@ foreach class:driver_classes static_objs += ext_deps dpdk_extra_ldflags += pkgconfig_extra_libs - # generate pmdinfo sources - pmdinfogen_srcs = run_command('grep', '--files-with-matches', - 'RTE_PMD_REGISTER_.*(.*)', sources).stdout().strip().split() - foreach src: pmdinfogen_srcs - out_filename = '@0@.pmd.c'.format(src.split('/')[-1]) - tmp_lib = static_library('tmp_@0@'.format(src.underscorify()), - src, include_directories: includes, + # generate pmdinfo sources by building a temporary + # lib and then running pmdinfogen on the contents of + # that lib. The final lib reuses the object files and + # adds in the new source file. + out_filename = lib_name + '.pmd.c' + tmp_lib = static_library('tmp_' + lib_name, + sources, + include_directories: includes, dependencies: static_objs, c_args: cflags) - sources += custom_target(out_filename, - command: [pmdinfo, tmp_lib.full_path(), - '@OUTPUT@', pmdinfogen], - output: out_filename, - depends: [pmdinfogen, tmp_lib]) - endforeach + objs += tmp_lib.extract_all_objects() + sources = custom_target(out_filename, + command: [pmdinfo, tmp_lib.full_path(), + '@OUTPUT@', pmdinfogen], + output: out_filename, + depends: [pmdinfogen, tmp_lib]) if get_option('per_library_versions') lib_version = '@0@.1'.format(version) @@ -83,7 +90,6 @@ foreach class:driver_classes endif # now build the static driver - lib_name = driver_name_fmt.format(name) static_lib = static_library(lib_name, sources, objects: objs, @@ -93,8 +99,6 @@ foreach class:driver_classes install: true) # now build the shared driver - sources = [] - objs += static_lib.extract_all_objects() version_map = '@0@/@1@/@2@_version.map'.format( meson.current_source_dir(), drv_path, lib_name)