X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=buildtools%2Fpkg-config%2Fmeson.build;h=0412883c8fd3bbeae3a0b3188aa858a41003234a;hb=b60d006cd14743907d75a6944ed24a692e4f79ae;hp=dacc5dbfb192a85b2072020f2b4a7b62249441a1;hpb=8549295db07b1f5777a314ee0b75f768e7ec4913;p=dpdk.git diff --git a/buildtools/pkg-config/meson.build b/buildtools/pkg-config/meson.build index dacc5dbfb1..0412883c8f 100644 --- a/buildtools/pkg-config/meson.build +++ b/buildtools/pkg-config/meson.build @@ -4,7 +4,7 @@ pkg = import('pkgconfig') pkg_extra_cflags = ['-include', 'rte_config.h'] + machine_args if is_freebsd - pkg_extra_cflags += ['-D__BSD_VISIBLE'] + pkg_extra_cflags += ['-D__BSD_VISIBLE'] endif # When calling pkg-config --static --libs, pkg-config will always output the @@ -21,28 +21,37 @@ endif # Another requirement is to allow linking dependencies as shared libraries, # while linking static DPDK libraries and drivers. It is satisfied by # listing the static files in Libs.private with the explicit syntax -l:libfoo.a. +# As a consequence, the regular DPDK libraries are already listed as static +# in the field Libs.private. The second occurences of DPDK libraries, +# included from Requires and used for shared library linkage case, +# are skipped in the case of static linkage thanks to the flag --as-needed. + pkg.generate(name: 'dpdk-libs', - filebase: 'libdpdk-libs', - description: '''Internal-only DPDK pkgconfig file. Not for direct use. + filebase: 'libdpdk-libs', + description: '''Internal-only DPDK pkgconfig file. Not for direct use. Use libdpdk.pc instead of this file to query DPDK compile/link arguments''', - version: meson.project_version(), - subdirs: [get_option('include_subdir_arch'), '.'], - extra_cflags: pkg_extra_cflags, - libraries: dpdk_libraries, - libraries_private: dpdk_extra_ldflags) + version: meson.project_version(), + subdirs: [get_option('include_subdir_arch'), '.'], + extra_cflags: pkg_extra_cflags, + libraries: ['-Wl,--as-needed'] + dpdk_libraries, + libraries_private: dpdk_extra_ldflags) +platform_flags = [] +if not is_windows + platform_flags += ['-Wl,--export-dynamic'] # ELF only +endif pkg.generate(name: 'DPDK', # main DPDK pkgconfig file - filebase: 'libdpdk', - version: meson.project_version(), - description: '''The Data Plane Development Kit (DPDK). + filebase: 'libdpdk', + version: meson.project_version(), + description: '''The Data Plane Development Kit (DPDK). Note that CFLAGS might contain an -march flag higher than typical baseline. This is required for a number of static inline functions in the public headers.''', - requires: ['libdpdk-libs', libbsd], # may need libbsd for string funcs - # if libbsd is not enabled, then this is blank - libraries_private: ['-Wl,--whole-archive'] + - dpdk_drivers + dpdk_static_libraries + - ['-Wl,--no-whole-archive'] + requires: ['libdpdk-libs', libbsd], # may need libbsd for string funcs + # if libbsd is not enabled, then this is blank + libraries_private: ['-Wl,--whole-archive'] + + dpdk_drivers + dpdk_static_libraries + + ['-Wl,--no-whole-archive'] + platform_flags ) # For static linking with dependencies as shared libraries,