From 5ffa86a2b4167276212c7f666a8f96fa4f46d3b3 Mon Sep 17 00:00:00 2001 From: Dmitry Kozlyuk Date: Fri, 20 Aug 2021 02:14:46 +0300 Subject: [PATCH] build: propagate Windows system dependencies to pkg-config Windows EAL depends on some system libraries. They were linked using add_project_link_arguments('-l'), which prevented meson from adding them to Libs.private of pkg-config file. As a result, applications using pkg-config to find DPDK hit link errors, for example: librte_eal.a(eal_windows_eal_debug.c.obj) : error LNK2019: unresolved external symbol __imp_SymInitialize referenced in function rte_dump_stack Reference required libraries in EAL using ext_deps meson variable. bus/pci and net/pcap depend on lib/eal and will pull them automatically. Drop advapi32 dependency, as MinGW locates VirtualAlloc2() dynamically. Fixes: 2a5d547a4a9b ("eal/windows: implement basic memory management") Fixes: c91717eb75c8 ("eal/windows: support exit and panic") Cc: stable@dpdk.org Reported-by: William Tu Signed-off-by: Dmitry Kozlyuk Tested-by: William Tu --- config/meson.build | 14 ++------------ lib/eal/windows/meson.build | 10 ++++++++++ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/config/meson.build b/config/meson.build index 3b5966ec2f..0b8359404b 100644 --- a/config/meson.build +++ b/config/meson.build @@ -340,7 +340,8 @@ if is_freebsd endif if is_windows - # VirtualAlloc2() is available since Windows 10 / Server 2016. + # VirtualAlloc2() is available since Windows 10 / Server 2019. + # It's essential for EAL, so we don't support older versions. add_project_arguments('-D_WIN32_WINNT=0x0A00', language: 'c') # Use MinGW-w64 stdio, because DPDK assumes ANSI-compliant formatting. @@ -352,17 +353,6 @@ if is_windows if cc.get_id() == 'clang' add_project_arguments('-D_CRT_SECURE_NO_WARNINGS', language: 'c') endif - - add_project_link_arguments('-lws2_32', language: 'c') - - # Contrary to docs, VirtualAlloc2() is exported by mincore.lib - # in Windows SDK, while MinGW exports it by advapi32.a. - if is_ms_linker - add_project_link_arguments('-lmincore', language: 'c') - endif - - add_project_link_arguments('-ladvapi32', '-lsetupapi', language: 'c') - add_project_link_arguments('-ldbghelp', language: 'c') endif if get_option('b_lto') diff --git a/lib/eal/windows/meson.build b/lib/eal/windows/meson.build index fc12fefd0d..845e406ca1 100644 --- a/lib/eal/windows/meson.build +++ b/lib/eal/windows/meson.build @@ -24,3 +24,13 @@ sources += files( ) dpdk_conf.set10('RTE_EAL_NUMA_AWARE_HUGEPAGES', true) + +ext_deps += [ + cc.find_library('dbghelp'), + cc.find_library('setupapi'), + cc.find_library('ws2_32'), +] +if is_ms_linker + # Contrary to docs, VirtualAlloc2() is exported by mincore.lib. + ext_deps += cc.find_library('mincore') +endif -- 2.39.5