From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A1DFBA034F; Thu, 1 Apr 2021 10:44:34 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 685F2140FAC; Thu, 1 Apr 2021 10:44:34 +0200 (CEST) Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2061.outbound.protection.outlook.com [40.107.236.61]) by mails.dpdk.org (Postfix) with ESMTP id 1C1A0140FA7 for ; Thu, 1 Apr 2021 10:44:33 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HtgQa8hN0bZA4YiZMY9lqEtHwWGdZRQlnDbWeACDhu0s6hR6HGnO1vFT1sjNDbt9XSjOlUDT8s+lZLw1dCl0iI3nLlIuF7aFVzzDd4JaZrDx/YT4uQ32mZfSttBhMc5RLx4wWrqNtHbb3jVkqOU/pQtKq2txkKUwhTEliXMHxfiEU17qjCEDYKRrwB/aohYHAJhx/zVv4xnqyk4XF/NjX9d0c4l4v2IneJKodTlML7LrIkGf8zTKCCucZdNhQh//PtNOk7D9Au1/mSqCy9Ubcv93iG2ukWKq9InkGsPojO9m2DbBrN30WSsDZ4zEKO7KN2VBcbrTEdBJwIDmFlfLiw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FGGLfocaKwMYZfeDOQpAomonpp8TM5xoxCAszEwzWlU=; b=ahoWiT2nO402EklYyvD5W3zGSLZ8qw083t65ogaMyfhcYNWjFuFgi9DQHwIFCIIiGHw/vT6qcpSeUZCOqz6S/Aa5MJkvpVCU5PRT675lRPrhmQ9Oplt5SMTgUnx7d0ljRWBbF6KquAyVWULqgDQx10w9LJy4DJrDzAxK9IQrGjEgCeJwhCWhBPvxIHzFqaiCIM2UGMyKKwGIDQG8PggYzNKIINGfmsPJtDmZikeJ6N032Q1QlQmndH7OYJNdqXRoff4PCLblukcFeC2xNKrPYX+dyDmBC7IqAaIo6eRdhmAhk+QWShHegTYqu5jIDy6xke165lLWf/YrPti26vBoqA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FGGLfocaKwMYZfeDOQpAomonpp8TM5xoxCAszEwzWlU=; b=WwA6CkdEoLeWl9d4VWcvHzfngC5hg77lQbpfPEFIdxomaDYXcgLHnjXBRUnFzebuSTdLLYMnqTPGVOyslG+R0o1F4I2HyK3p7fLov7w6MFzLkVkaN9hernWW7UMK6QWD6Kdc6d68yMkvpQZ8+kZBEGt3KAh5WtX7gZTP8nx/WSxIuWE2I2S+R4VfwL2RqtU2qNCzWxVcUX4FjImjebkcd9HnefprfSSsoTn1WYTgbXGH9RzmgKLCnhWcG78Wq2XYIOtv+vU3mdLMhZ6WEbLdJVJ6cOR08qRcKNe2zTN+zZL4cZLFypQZBIVRR1sEC7cxF7umMmlWqLWTYzGBhUJjIg== Received: from DM6PR12MB3945.namprd12.prod.outlook.com (2603:10b6:5:1c2::27) by DM5PR12MB1307.namprd12.prod.outlook.com (2603:10b6:3:79::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3977.29; Thu, 1 Apr 2021 08:44:31 +0000 Received: from DM6PR12MB3945.namprd12.prod.outlook.com ([fe80::9d62:2f16:264b:285d]) by DM6PR12MB3945.namprd12.prod.outlook.com ([fe80::9d62:2f16:264b:285d%5]) with mapi id 15.20.3977.033; Thu, 1 Apr 2021 08:44:31 +0000 From: Tal Shnaiderman To: Jie Zhou , "dev@dpdk.org" CC: "dmitry.kozliuk@gmail.com" , "xiaoyun.li@intel.com" , "roretzla@microsoft.com" , "pallavi.kadam@intel.com" , NBU-Contact-Thomas Monjalon , "bruce.richardson@intel.com" , "ferruh.yigit@intel.com" Thread-Topic: [dpdk-dev] [PATCH v2] app/test-pmd: enable testpmd on windows Thread-Index: AQHXHOA34wrMbeKUgUWj+QXiQgtcHKqfYdog Date: Thu, 1 Apr 2021 08:44:31 +0000 Message-ID: References: <1616048795-16906-1-git-send-email-jizh@linux.microsoft.com> <1616172695-28505-1-git-send-email-jizh@linux.microsoft.com> In-Reply-To: <1616172695-28505-1-git-send-email-jizh@linux.microsoft.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: linux.microsoft.com; dkim=none (message not signed) header.d=none;linux.microsoft.com; dmarc=none action=none header.from=nvidia.com; x-originating-ip: [5.29.59.30] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: e27925bb-9500-42f7-8b6b-08d8f4ea5e43 x-ms-traffictypediagnostic: DM5PR12MB1307: x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr x-microsoft-antispam-prvs: x-ms-exchange-transport-forked: True x-ms-oob-tlc-oobclassifiers: OLM:291; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: FLj7pLZ6oGLFB45s60k0fRG6f12OO1EKneN4Rxm78OBFaOROLF9GWPZCxgETf/EUtATxqRKPJnlXJJUaiZc8SL91P2LOvRjJtAYJlMtxKuS4EpK+m4c0ZdOnzkpvfO1WHImze51tZZIhWSCpNz89Ge75A0aNTipu0QtUWJnSR35NjfZYlFxMHFnEd9YVjhb5T9oxTLVyousZKemGtLb122JWaHjyMd4j+q+PHNqXQ/0Cr92q9UrBK0DxDw1TYmls2p8bV9eLK/N/eJXdtpFX6dbVcJH0jnQfL6Q0DRtJXspbL4BJ2VFXcNX0IcUuDjr4rsf06H9I2ZLOF7q/KUAb5UptLZltCiAFMbdkn1bTkqDp9OKJYs+QqhywCx53jsDjrlXerJeUVPg/e4ejsH3ROAOgZ4GhNJanUl7DK9/Z4OyW3EPAR6r7CJ2xIwME8sVdtVMn1bfJIMi7BlYF9z4uRUvFlF22GYW1UKPhXhXFlWN9KH3+655fwwPnY0ts+OocC4vaco/Iz5idAepZr0pQhqlsC2x1PQ+bMiUTwnzCarr8EP71wMGbeE8k4nW14OaEfhP5QEYkrECEAHViEFf+UXSzMmu98aBf1+YTcQi0BSGjzocbzuzxBPutQTq0oxemwkCkgy/nPoJFOp2UGef2SmMS6M0GO5lw8mkeEe7pj+Q= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR12MB3945.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(39860400002)(346002)(396003)(136003)(366004)(110136005)(4326008)(33656002)(54906003)(66476007)(66446008)(64756008)(66556008)(66946007)(52536014)(316002)(6506007)(38100700001)(83380400001)(8676002)(76116006)(26005)(7696005)(86362001)(8936002)(2906002)(478600001)(55016002)(5660300002)(9686003)(186003)(71200400001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?KDtuFFVCwR4UWxf83tvwvaGPOhHE37jYwbpClmmeWh3p9TPH1AJXIKXjmH6g?= =?us-ascii?Q?323XZD0HxyBkX15ziw/e1sh4KYEEqXTaSEniS3mCjlgP+apGnn1D0hVDUnN8?= =?us-ascii?Q?iabwc7QS15QZ957CoEDfT8V8MaC6GA1lIS4Jd7EZzdTghojRn8DOifta2rU3?= =?us-ascii?Q?ay5dMSo8++DMueKHRTdn5IOP89/TrdKZvbw2P1DmriadesTIu5/Qb6ZaCV+B?= =?us-ascii?Q?6+zqzwz93sFTN1nb7iS+m6gXRzp344vM9wimxoRruqENtjuNgtGdr7DF4gOz?= =?us-ascii?Q?/xvOi9pOU4e7CNHaLvbLOJDxhYi9s617IelNry6HNZSmrgSuW/julTcSrLya?= =?us-ascii?Q?S2OyT/m1+a67M1QqZ/eph1YKLZbuicW3eIuCJyVUcFyxgaQxhU2Z3hF0G02T?= =?us-ascii?Q?CUDkhJKlO/7JKa/DMTumzfpEim0WEHKIIQv2u3QPvOfPCIzYPOXo4aXiKVyn?= =?us-ascii?Q?X2vv0nFKzBLQAPUSelWehtwJmxXkvw4KhNqwd/Uc202NMj3jAvo0E1bMYN+x?= =?us-ascii?Q?8LVBynSlvi7zQPewpn2jnDuvzosFKSbDe+oltFBVyQuX3wBHHH7tyhjEkgka?= =?us-ascii?Q?s534YHJN2URp/pdupdat92QYc4CP6paZFxKVpku4lFoC+a87PJmESKrZfa3B?= =?us-ascii?Q?vAxHGTktkrnEOtcrUfv1BMWUyC/DslFggWQTdg3m5xYlTTHFzSFPEtSzo+g4?= =?us-ascii?Q?fZdeROmm02kZ8Y2CiVjPVC5UugBXJFeh8fzYc6B3B9/idyplutcL6hPxzXSP?= =?us-ascii?Q?LLL0o6J/qELIW5rDcn0hg94iU1FcRCjmYaXurcNNH+GwX6urMm/FFvLZu+oH?= =?us-ascii?Q?xSR6Mfn2wOVAL58qEFefSvyb+yloO+iN3SRzyebTcjjN0tMyyaiujE8du97v?= =?us-ascii?Q?5Kga7ssf/8ceUCVXFhDTtOtKw1AcKcJ73j+i+e6knWyQJOYTtAn86aHk7NNY?= =?us-ascii?Q?6jNix9DrHhmIIjmmhSmMpG5MABSTg2NmLbZnMj8lbvon3lxQKHNWj02VhauC?= =?us-ascii?Q?6Cxqm6qtjkhp9gJ3hLJe17wFpB/QQFNzcL2OulPfZFmhGcfO+XLtlWbFRIk0?= =?us-ascii?Q?YzlhvQvQjLINNlDPE3tlXC2qPXDLyKqr89gnu+GdiEKv3EuWudHMEGKbWj/X?= =?us-ascii?Q?V6AufqSOE9Owaf8M55nPFT/K2EiLgq2uqHVxQ/qa3A7kXDdPQwtvCAaYwsfK?= =?us-ascii?Q?olis5X1HbyJE8YyHfsJYkPfY4pAc9+5fN4nor/0YJJljfV2RtjUAzb3LS4cA?= =?us-ascii?Q?66prLII+WUcDK+sA5sqsNIvLJqUMqxothpXCjMeXQc50qxPIDWU+wW0bL5pJ?= =?us-ascii?Q?fB8=3D?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR12MB3945.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e27925bb-9500-42f7-8b6b-08d8f4ea5e43 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Apr 2021 08:44:31.1855 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: XAPeWRMpqzFNX1JS5I1m8zug0OGy/SjgPct86wSW8PfjeXyvq6+dSALdnVxaIQZu3BnIKvK55OCbtnZbrmOasA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1307 Subject: Re: [dpdk-dev] [PATCH v2] app/test-pmd: enable testpmd on windows X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" > Subject: [dpdk-dev] [PATCH v2] app/test-pmd: enable testpmd on windows >=20 > From: Jie Zhou >=20 > This patch is to enable testpmd on windows. It mainly includes: > - Enable building libraries on Windows that TestPMD depends on > - Enable building testpmd on Windows > - Resolve name collisions with Windows types > - Add clock_gettime_monotic for testpmd on Windows > - Make printf format work for both Linux and Windows > - Add missing macros > - Add missing IPPROTO_RAW to in.h > - Replace htons with RTE_BE16 > - Replace inet_aton with inet_pton > - Fix parse_fec_mode to return fec_capa to remove compilation warning > - ... Hi Jie, I think each topic above deserves it's own patch, some can be squashed toge= ther, e.g - one patch for all missing macros. >=20 > Issue under active investigation: > - Recent DPDK upstream change "eal: detach memsegs on cleanup" exposed > failure at eal exit with "EAL: Could not unmap memory: No Error". > Investigating KERNELBASE!UnmapViewOfFile. The issue will cause system > crash. Currently temporarily remove cleanup at exit on Windows. > Will revert after issue root caused and fixed >=20 > Future work: > - Some issues discovered at validation which need further investigations > * Perf inconsistency issues: TPUT fluctuated significantly from runs > * After traffic stop, port stats shows pps being 0 while bps not > * Currently mempool allocation only succeed with native. Other methods > failed at rte_mem_lock/VirtualLock. Thus currently only allow native > - Hot-plug not supported yet >=20 > Signed-off-by: Jie Zhou > Signed-off-by: Jie Zhou >=20 > --- > V2 changes: > - Fix commit message log long line issue > - Fix coding style issues of pointer location > - Fix indentation issue > - Fix FreeBSD2101 compilation issue of AF_INET undeclared > --- > app/meson.build | 15 +- > app/test-pmd/cmdline.c | 12 +- > app/test-pmd/cmdline_flow.c | 440 ++++++++++---------- > app/test-pmd/config.c | 37 +- > app/test-pmd/csumonly.c | 4 + > app/test-pmd/icmpecho.c | 4 +- > app/test-pmd/ieee1588fwd.c | 10 +- > app/test-pmd/parameters.c | 18 +- > app/test-pmd/testpmd.c | 38 +- > app/test-pmd/testpmd.h | 6 +- > lib/librte_eal/windows/include/netinet/in.h | 1 + > lib/librte_eal/windows/include/rte_os.h | 8 + > lib/meson.build | 7 + > 13 files changed, 352 insertions(+), 248 deletions(-) >=20 > diff --git a/app/meson.build b/app/meson.build > index 87fc195db..00622933e 100644 > --- a/app/meson.build > +++ b/app/meson.build > @@ -1,10 +1,6 @@ > # SPDX-License-Identifier: BSD-3-Clause > # Copyright(c) 2017-2019 Intel Corporation >=20 > -if is_windows > - subdir_done() > -endif > - > apps =3D [ > 'pdump', > 'proc-info', > @@ -21,6 +17,11 @@ apps =3D [ > 'test-regex', > 'test-sad'] >=20 > +if is_windows > + apps =3D [ > + 'test-pmd'] > +endif > + Please disable each unsupported app instead of adding this part, see how it= was done in the PMDs enablement [b9d60b5434e9df46f5 ("drivers/net: build i= 40e and mlx5 on Windows")]. =20 > # for BSD only > lib_execinfo =3D cc.find_library('execinfo', required: false) >=20 > @@ -73,5 +74,7 @@ foreach app:apps > endif > endforeach >=20 > -# special case the autotests > -subdir('test') > +if not(is_windows) > + # special case the autotests > + subdir('test') > +endif Same, disable in ..\app\test\meson.build > diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c > index 6b4df335f..0fb03b9f9 100644 > --- a/app/test-pmd/csumonly.c > +++ b/app/test-pmd/csumonly.c > @@ -696,7 +696,11 @@ pkt_copy_split(const struct rte_mbuf *pkt) > mp =3D current_fwd_lcore()->mbp; >=20 > if (tx_pkt_split =3D=3D TX_PKT_SPLIT_RND) > +#ifndef RTE_EXEC_ENV_WINDOWS > nb_seg =3D random() % tx_pkt_nb_segs + 1; > +#else > + nb_seg =3D rand() % tx_pkt_nb_segs + 1; > +#endif Can we use a common function for both OSs instead? Rte_rand()? > else > nb_seg =3D tx_pkt_nb_segs; > =20 > - > +#ifndef RTE_EXEC_ENV_WINDOWS > if (hot_plug) { > ret =3D rte_dev_event_monitor_stop(); > if (ret) { > @@ -3096,6 +3118,7 @@ pmd_test_exit(void) > return; > } > } > +#endif I think it's better to add stubs for Windows instead of ifndefs in the code= if possible. > for (i =3D 0 ; i < RTE_DIM(mempools) ; i++) { > if (mempools[i]) > rte_mempool_free(mempools[i]); > @@ -3259,6 +3282,7 @@ register_eth_event_callback(void) > return 0; > } >=20 > +#ifndef RTE_EXEC_ENV_WINDOWS > /* This function is used by the interrupt thread */ > static void > dev_event_callback(const char *device_name, enum rte_dev_event_type > type, > @@ -3308,6 +3332,7 @@ dev_event_callback(const char *device_name, > enum rte_dev_event_type type, > break; > } > } > +#endif >=20 > static void > rxtx_port_config(struct rte_port *port) > @@ -3759,7 +3784,9 @@ signal_handler(int signum) > f_quit =3D 1; > /* exit with the expected status */ > signal(signum, SIG_DFL); > +#ifndef RTE_EXEC_ENV_WINDOWS > kill(getpid(), signum); > +#endif > } > } >=20 > @@ -3834,10 +3861,12 @@ main(int argc, char** argv) > if (argc > 1) > launch_args_parse(argc, argv); >=20 > +#ifndef RTE_EXEC_ENV_WINDOWS > if (do_mlockall && mlockall(MCL_CURRENT | MCL_FUTURE)) { > TESTPMD_LOG(NOTICE, "mlockall() failed with error > \"%s\"\n", > strerror(errno)); > } > +#endif >=20 > if (tx_first && interactive) > rte_exit(EXIT_FAILURE, "--tx-first cannot be used on " > @@ -3859,6 +3888,7 @@ main(int argc, char** argv) >=20 > init_config(); >=20 > +#ifndef RTE_EXEC_ENV_WINDOWS > if (hot_plug) { > ret =3D rte_dev_hotplug_handle_enable(); > if (ret) { > @@ -3882,6 +3912,7 @@ main(int argc, char** argv) > return -1; > } > } > +#endif Same as above. >=20 > if (!no_device_start && start_port(RTE_PORT_ALL) !=3D 0) > rte_exit(EXIT_FAILURE, "Start ports failed\n"); > @@ -3969,10 +4000,11 @@ main(int argc, char** argv) > return 1; > } >=20 > +#ifndef RTE_EXEC_ENV_WINDOWS > ret =3D rte_eal_cleanup(); > if (ret !=3D 0) > rte_exit(EXIT_FAILURE, > "EAL cleanup failed: %s\n", strerror(-ret)); > - > +#endif > return EXIT_SUCCESS; > } > diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h > index af4085917..c56c813d6 100644 > --- a/app/test-pmd/testpmd.h > +++ b/app/test-pmd/testpmd.h > @@ -761,7 +761,7 @@ inc_tx_burst_stats(struct fwd_stream *fs, uint16_t > nb_tx) > } >=20 > /* Prototypes */ > -unsigned int parse_item_list(char* str, const char* item_name, > +unsigned int parse_item_list(const char *str, const char *item_name, > unsigned int max_items, > unsigned int *parsed_items, int > check_unique_values); > void launch_args_parse(int argc, char** argv); > @@ -881,7 +881,7 @@ void show_tx_pkt_segments(void); > void set_tx_pkt_times(unsigned int *tx_times); > void show_tx_pkt_times(void); > void set_tx_pkt_split(const char *name); > -int parse_fec_mode(const char *name, enum rte_eth_fec_mode *mode); > +int parse_fec_mode(const char *name, uint32_t *fec_capa); > void show_fec_capability(uint32_t num, struct rte_eth_fec_capa > *speed_fec_capa); > void set_nb_pkt_per_burst(uint16_t pkt_burst); > char *list_pkt_forwarding_modes(void); > @@ -936,7 +936,7 @@ int set_vf_rate_limit(portid_t port_id, uint16_t vf, > uint16_t rate, >=20 > void port_rss_hash_conf_show(portid_t port_id, int show_rss_key); > void port_rss_hash_key_update(portid_t port_id, char rss_type[], > - uint8_t *hash_key, uint hash_key_len); > + uint8_t *hash_key, unsigned int hash_key_len); > int rx_queue_id_is_invalid(queueid_t rxq_id); > int tx_queue_id_is_invalid(queueid_t txq_id); > void setup_gro(const char *onoff, portid_t port_id); > diff --git a/lib/librte_eal/windows/include/netinet/in.h > b/lib/librte_eal/windows/include/netinet/in.h > index 6455b9ba5..38268cf80 100644 > --- a/lib/librte_eal/windows/include/netinet/in.h > +++ b/lib/librte_eal/windows/include/netinet/in.h > @@ -24,6 +24,7 @@ > #define IPPROTO_NONE 59 > #define IPPROTO_DSTOPTS 60 > #define IPPROTO_SCTP 132 > +#define IPPROTO_RAW 255 >=20 > #define INET6_ADDRSTRLEN 46 >=20 > diff --git a/lib/librte_eal/windows/include/rte_os.h > b/lib/librte_eal/windows/include/rte_os.h > index 7ef38ff06..f318a66b8 100644 > --- a/lib/librte_eal/windows/include/rte_os.h > +++ b/lib/librte_eal/windows/include/rte_os.h > @@ -25,6 +25,14 @@ extern "C" { > #define PATH_MAX _MAX_PATH > #endif >=20 > +#define strcasecmp _stricmp > +#define open _open > +#define read _read > + > +#ifndef S_ISREG > +#define S_ISREG(mode) (((mode)&S_IFMT) =3D=3D S_IFREG) > +#endif > + > #ifndef sleep > #define sleep(x) Sleep(1000 * (x)) > #endif > diff --git a/lib/meson.build b/lib/meson.build > index 7712aa497..295976a4d 100644 > --- a/lib/meson.build > +++ b/lib/meson.build > @@ -46,6 +46,13 @@ if is_windows > 'cmdline', > 'hash', > 'cfgfile', > + 'metrics', > + 'timer', > + 'gro', > + 'gso', > + 'pdump', > + 'bitratestats', > + 'latencystats', > ] # only supported libraries for windows > endif >=20 > -- > 2.30.0.vfs.0.2