diff --git a/doc/guides/bbdevs/turbo_sw.rst b/doc/guides/bbdevs/turbo_sw.rst index 1e23e37027..1056e7a47a 100644 --- a/doc/guides/bbdevs/turbo_sw.rst +++ b/doc/guides/bbdevs/turbo_sw.rst @@ -81,7 +81,8 @@ The following table maps DPDK versions with past FlexRAN SDK releases: ===================== ============================ DPDK version FlexRAN FEC SDK release ===================== ============================ - 19.08 19.04 + 19.08 to 22.07 19.04 + 22.11+ 22.11 ===================== ============================ FlexRAN SDK Installation @@ -136,7 +137,8 @@ In order to enable this virtual bbdev PMD, the user may: FlexRAN SDK libraries were installed. And ``DIR_WIRELESS_SDK`` to the path where the libraries were extracted. -* Tune the meson build option pointing the location of the FlexRAN SDK libraries ``flexran_sdk`` +* Point pkgconfig towards these libraries so that they can be automatically found by meson. + If not, DPDK will still compile but the related functionality would be stubbed out. Example: @@ -144,8 +146,9 @@ Example: export FLEXRAN_SDK=/FlexRAN-FEC-SDK-19-04/sdk/build-avx2-icc/install export DIR_WIRELESS_SDK=/FlexRAN-FEC-SDK-19-04/sdk/build-avx2-icc/ + export PKG_CONFIG_PATH=$DIR_WIRELESS_SDK/pkgcfg:$PKG_CONFIG_PATH cd build - meson configure -Dflexran_sdk=/FlexRAN-FEC-SDK-19-04/sdk/build-avx512-icc/install + meson configure * For AVX512 machines with SDK libraries installed then both 4G and 5G can be enabled for full real time FEC capability. For AVX2 machines it is possible to only enable the 4G libraries and the PMD capabilities will be limited to 4G FEC. diff --git a/drivers/baseband/turbo_sw/meson.build b/drivers/baseband/turbo_sw/meson.build index 477b8b371f..417ec63394 100644 --- a/drivers/baseband/turbo_sw/meson.build +++ b/drivers/baseband/turbo_sw/meson.build @@ -1,38 +1,28 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2019 Intel Corporation -path = get_option('flexran_sdk') +# check for FlexRAN SDK libraries +dep_turbo = dependency('flexran_sdk_turbo', required: false) +dep_dec5g = dependency('flexran_sdk_ldpc_decoder_5gnr', required: false) -# check for FlexRAN SDK libraries for AVX2 -lib4g = cc.find_library('libturbo', dirs: [path + '/lib_turbo'], required: false) -if lib4g.found() - ext_deps += cc.find_library('libturbo', dirs: [path + '/lib_turbo'], required: true) - ext_deps += cc.find_library('libcrc', dirs: [path + '/lib_crc'], required: true) - ext_deps += cc.find_library('librate_matching', dirs: [path + '/lib_rate_matching'], required: true) - ext_deps += cc.find_library('libcommon', dirs: [path + '/lib_common'], required: true) +if dep_turbo.found() ext_deps += cc.find_library('libstdc++', required: true) ext_deps += cc.find_library('libirc', required: true) ext_deps += cc.find_library('libimf', required: true) ext_deps += cc.find_library('libipps', required: true) ext_deps += cc.find_library('libsvml', required: true) - includes += include_directories(path + '/lib_turbo') - includes += include_directories(path + '/lib_crc') - includes += include_directories(path + '/lib_rate_matching') - includes += include_directories(path + '/lib_common') + ext_deps += dep_turbo + ext_deps += dependency('flexran_sdk_crc', required: true) + ext_deps += dependency('flexran_sdk_rate_matching', required: true) + ext_deps += dependency('flexran_sdk_common', required: true) cflags += ['-DRTE_BBDEV_SDK_AVX2'] endif -# check for FlexRAN SDK libraries for AVX512 -lib5g = cc.find_library('libldpc_decoder_5gnr', dirs: [path + '/lib_ldpc_decoder_5gnr'], required: false) -if lib5g.found() - ext_deps += cc.find_library('libldpc_encoder_5gnr', dirs: [path + '/lib_ldpc_encoder_5gnr'], required: true) - ext_deps += cc.find_library('libldpc_decoder_5gnr', dirs: [path + '/lib_ldpc_decoder_5gnr'], required: true) - ext_deps += cc.find_library('libLDPC_ratematch_5gnr', dirs: [path + '/lib_LDPC_ratematch_5gnr'], required: true) - ext_deps += cc.find_library('librate_dematching_5gnr', dirs: [path + '/lib_rate_dematching_5gnr'], required: true) - includes += include_directories(path + '/lib_ldpc_encoder_5gnr') - includes += include_directories(path + '/lib_ldpc_decoder_5gnr') - includes += include_directories(path + '/lib_LDPC_ratematch_5gnr') - includes += include_directories(path + '/lib_rate_dematching_5gnr') +if dep_dec5g.found() + ext_deps += dep_dec5g + ext_deps += dependency('flexran_sdk_ldpc_encoder_5gnr', required: true) + ext_deps += dependency('flexran_sdk_LDPC_ratematch_5gnr', required: true) + ext_deps += dependency('flexran_sdk_rate_dematching_5gnr', required: true) cflags += ['-DRTE_BBDEV_SDK_AVX512'] endif diff --git a/meson_options.txt b/meson_options.txt index 14604f79a3..08528492f7 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -26,8 +26,6 @@ option('enable_kmods', type: 'boolean', value: false, description: 'build kernel modules') option('examples', type: 'string', value: '', description: 'Comma-separated list of examples to build by default') -option('flexran_sdk', type: 'string', value: '', description: - 'Path to FlexRAN SDK optional Libraries for BBDEV device') option('ibverbs_link', type: 'combo', choices : ['static', 'shared', 'dlopen'], value: 'shared', description: 'Linkage method (static/shared/dlopen) for NVIDIA PMDs with ibverbs dependencies.') option('include_subdir_arch', type: 'string', value: '', description: