1# SPDX-License-Identifier: BSD-3-Clause 2# Copyright(c) 2017 Intel Corporation 3 4project('DPDK', 'C', 5 version: '18.02.0', 6 license: 'BSD', 7 default_options: ['buildtype=release', 'default_library=static'], 8 meson_version: '>= 0.41' 9) 10 11# set up some global vars for compiler, platform, configuration, etc. 12cc = meson.get_compiler('c') 13dpdk_conf = configuration_data() 14dpdk_libraries = [] 15dpdk_drivers = [] 16dpdk_extra_ldflags = [] 17 18driver_install_path = join_paths(get_option('libdir'), 'dpdk/drivers') 19eal_pmd_path = join_paths(get_option('prefix'), driver_install_path) 20 21# configure the build, and make sure configs here and in config folder are 22# able to be included in any file. We also store a global array of include dirs 23# for passing to pmdinfogen scripts 24global_inc = include_directories('.', 'config') 25subdir('config') 26 27# build libs and drivers 28subdir('lib') 29subdir('kernel') 30subdir('buildtools') 31subdir('drivers') 32 33# build binaries and installable tools 34subdir('usertools') 35subdir('app') 36subdir('test') 37 38# build any examples explicitly requested - useful for developers 39if get_option('examples') != '' 40 subdir('examples') 41endif 42 43# write the build config 44build_cfg = 'rte_build_config.h' 45configure_file(output: build_cfg, 46 configuration: dpdk_conf, 47 install_dir: join_paths(get_option('includedir'), 48 get_option('include_subdir_arch'))) 49 50# for static builds, include the drivers as libs and we need to "whole-archive" 51# them. 52dpdk_drivers = ['-Wl,--whole-archive'] + dpdk_drivers + ['-Wl,--no-whole-archive'] 53 54# driver .so files often depend upon the bus drivers for their connect bus, 55# e.g. ixgbe depends on librte_bus_pci. This means that the bus drivers need 56# to be in the library path, so symlink the drivers from the main lib directory. 57meson.add_install_script('buildtools/symlink-drivers-solibs.sh', 58 driver_install_path, 59 get_option('libdir')) 60 61pkg = import('pkgconfig') 62pkg.generate(name: meson.project_name(), 63 filebase: 'lib' + meson.project_name().to_lower(), 64 version: meson.project_version(), 65 libraries: dpdk_libraries, 66 libraries_private: dpdk_drivers + dpdk_libraries + 67 ['-Wl,-Bdynamic'] + dpdk_extra_ldflags, 68 description: 'The Data Plane Development Kit (DPDK)', 69 subdirs: [get_option('include_subdir_arch'), '.'], 70 extra_cflags: ['-include', 'rte_config.h'] + machine_args 71) 72