From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ranjit.menon@intel.com>
Received: from mga17.intel.com (mga17.intel.com [192.55.52.151])
 by dpdk.org (Postfix) with ESMTP id A7F611B39E;
 Wed, 30 Jan 2019 17:32:33 +0100 (CET)
X-Amp-Result: SKIPPED(no attachment in message)
X-Amp-File-Uploaded: False
Received: from fmsmga006.fm.intel.com ([10.253.24.20])
 by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;
 30 Jan 2019 08:32:32 -0800
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.56,541,1539673200"; d="scan'208";a="314911362"
Received: from orsmsx104.amr.corp.intel.com ([10.22.225.131])
 by fmsmga006.fm.intel.com with ESMTP; 30 Jan 2019 08:32:32 -0800
Received: from orsmsx110.amr.corp.intel.com ([169.254.10.158]) by
 ORSMSX104.amr.corp.intel.com ([169.254.4.11]) with mapi id 14.03.0415.000;
 Wed, 30 Jan 2019 08:32:31 -0800
From: "Menon, Ranjit" <ranjit.menon@intel.com>
To: Thomas Monjalon <thomas@monjalon.net>, 'Jason Messer'
 <jmesser@microsoft.com>, 'Harini Ramakrishnan'
 <harini.ramakrishnan@microsoft.com>, 'Omar Cardona' <ocardona@microsoft.com>
CC: "dev@dpdk.org" <dev@dpdk.org>, "Burakov, Anatoly"
 <anatoly.burakov@intel.com>, "Richardson, Bruce"
 <bruce.richardson@intel.com>, Stephen Hemminger <stephen@networkplumber.org>, 
 =?iso-8859-1?Q?=27Mattias_R=F6nnblom=27?= <mattias.ronnblom@ericsson.com>,
 "Shaw, Jeffrey B" <jeffrey.b.shaw@intel.com>, "techboard@dpdk.org"
 <techboard@dpdk.org>
Thread-Topic: [dpdk-dev] Compiler for Windows
Thread-Index: AQHUouzwJGe3Uh77QkCuhJc2h6N7zqWdnJ2AgAaTD4CAAFJVAIAABrKAgAAD3YCAAAYmgIAAAoAAgAACQwCAASFxgIAi1YUA//+b9wA=
Date: Wed, 30 Jan 2019 16:32:31 +0000
Message-ID: <7603DC8746F9FC4D82EF0929C467267A72BF89A7@ORSMSX110.amr.corp.intel.com>
References: <7824863.MkUOD0j12R@xps> <24170945.hIekyy4cRm@xps>
 <0922dbbe-4d58-3bbb-b84e-1df70d504b76@intel.com> <1697453.3RAGQi5EJb@xps>
In-Reply-To: <1697453.3RAGQi5EJb@xps>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiYmJjMWI1MTYtZjNkZi00NTEyLWIxYWQtZDhhMGZjYWI5NTMxIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiNWFZcHN2M09cL2k1ek5zdDYwZXBRcFBNcW1rcXYwcXN1QXUwOXd3a2lnRXlcL3lxTG9UdlJEOENOT1dkNWt2SnlIIn0=
x-ctpclassification: CTP_NT
dlp-product: dlpe-windows
dlp-version: 11.0.400.15
dlp-reaction: no-action
x-originating-ip: [10.22.254.138]
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Subject: Re: [dpdk-dev] Compiler for Windows
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Wed, 30 Jan 2019 16:32:34 -0000

Thank you for the direction, Thomas and Tech Board members.

If clang-win64 has support for GCC extensions (__attribute(constructor/alig=
n/etc...)), then the changes to common DPDK code should be minimal. Also, J=
eff got meson to output VS project files to compile with MSVC - we'll just =
need to make sure that they can compile with clang-win64. Thanks, Bruce for=
 helping us out here.

ranjit m.

-----Original Message-----
From: Thomas Monjalon <thomas@monjalon.net>=20
Sent: Wednesday, January 30, 2019 6:21 AM
To: 'Jason Messer' <jmesser@microsoft.com>; 'Harini Ramakrishnan' <harini.r=
amakrishnan@microsoft.com>; 'Omar Cardona' <ocardona@microsoft.com>; Menon,=
 Ranjit <ranjit.menon@intel.com>
Cc: dev@dpdk.org; Burakov, Anatoly <anatoly.burakov@intel.com>; Richardson,=
 Bruce <bruce.richardson@intel.com>; Stephen Hemminger <stephen@networkplum=
ber.org>; 'Mattias R=F6nnblom' <mattias.ronnblom@ericsson.com>; Shaw, Jeffr=
ey B <jeffrey.b.shaw@intel.com>; techboard@dpdk.org
Subject: Re: [dpdk-dev] Compiler for Windows

08/01/2019 11:24, Burakov, Anatoly:
> On 07-Jan-19 5:08 PM, Thomas Monjalon wrote:
> > 07/01/2019 18:00, Bruce Richardson:
> >> I think for windows we probably want to start with the MS compiler=20
> >> first, since from my understanding it's probably the default go-to=20
> >> compiler for developers on windows, and look at alternatives from ther=
e.
> >=20
> > Not sure. I feel clang is a better option.
> > This is the purpose of this thread: which compiler can work with the=20
> > DPDK code base? Which modifications of code are acceptable?
> >=20
> > Unfortunately we lost my original attempt of getting some facts.
>=20
> i'm developing on a Windows machine, and use clang as code analyzer.=20
> so while the compiling and linking may take some effort, the bulk of=20
> it appears to be working without too much complaints from clang. it's=20
> easy to install as well - just install LLVM and you're good to go.

This discussion continued in a private thread (for no good reason).
Let's conclude here publicly.

About the compiler,
	- cygwin is not native -> no go
	- mingw-w64 (latest) brings a specific DLL -> one more unknown piece
	- icc is not free -> no go
	- msvc supports not all C99 and GNU extensions -> difficult to support
	- clang is now native on Windows -> best choice
	  http://releases.llvm.org/7.0.1/LLVM-7.0.1-win64.exe

About the build system,
	- DPDK makefiles are not Windows-friendly and will be removed
	- meson is supported on Windows and can generate VS project
	  https://github.com/mesonbuild/meson/releases/download/0.49.1/meson-0.49.=
1-64.msi

About the Linux/BSD code,
	- we can use some #ifdef
	- most of the specific code should be in EAL
	- it must be tried to share a maximum of common code

About the steps,
	1/ meson files must be prepared for Windows target
	2/ EAL for Windows must be an empty stub first
	3/ The core libraries must compile with meson+clang
	4/ Documentation for Windows must be started
	5/ EAL for Windows can be completed with real code
	6/ PMDs can be tested on Windows
	7/ Examples should compile on Windows

Please restart from a fresh 19.02 branch in the draft repository and submit=
 the steps one by one on the mailing list.
We need to validate the steps and approve the choices.
If some choices are done, they must be explained in the commit logs.
The commits must be small enough to be reviewed.
If some issues are encountered, we'll fix them as a community.

Thanks for facilitating community adoption of Windows port.