DPDK patches and discussions
 help / color / mirror / Atom feed
From: William Tu <u9012063@gmail.com>
To: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
Cc: dev@dpdk.org,
	Harini Ramakrishnan <harini.ramakrishnan@microsoft.com>,
	 Omar Cardona <ocardona@microsoft.com>,
	Pallavi Kadam <pallavi.kadam@intel.com>,
	Ranjit Menon <ranjit.menon@intel.com>,
	John McNamara <john.mcnamara@intel.com>,
	Marko Kovacevic <marko.kovacevic@intel.com>
Subject: Re: [dpdk-dev] [PATCH v3 6/7] doc: guide for Windows build using MinGW-w64
Date: Tue, 18 Feb 2020 13:27:47 -0800	[thread overview]
Message-ID: <CALDO+SY=J1eQukQYnZ_cc2EzcJSMvZqG+N8s9eiCDkqRjz_PRA@mail.gmail.com> (raw)
In-Reply-To: <20200218000229.86621-7-dmitry.kozliuk@gmail.com>

On Mon, Feb 17, 2020 at 4:03 PM Dmitry Kozlyuk <dmitry.kozliuk@gmail.com> wrote:
>
> Instructions for different toolchains presented as options on the
> corresponging steps of the guide, so that common parts may be reused.
>
> Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
> ---
>  doc/guides/windows_gsg/build_dpdk.rst | 63 +++++++++++++++++++++++----
>  1 file changed, 54 insertions(+), 9 deletions(-)
>
> diff --git a/doc/guides/windows_gsg/build_dpdk.rst b/doc/guides/windows_gsg/build_dpdk.rst
> index 6711e07e2..c77384785 100644
> --- a/doc/guides/windows_gsg/build_dpdk.rst
> +++ b/doc/guides/windows_gsg/build_dpdk.rst
> @@ -7,15 +7,22 @@ Compiling the DPDK Target from Source
>  System Requirements
>  -------------------
>
> -The DPDK and its applications require the Clang-LLVM C compiler
> -and Microsoft MSVC linker.
> +Building the DPDK and its applications requires one of the following
> +environments:
> +
> +* The Clang-LLVM C compiler and Microsoft MSVC linker.
> +* The MinGW-w64 toolchain (either native or cross).
> +
>  The Meson Build system is used to prepare the sources for compilation
>  with the Ninja backend.
>  The installation of these tools is covered in this section.
>
>
> +Option 1. Clang-LLVM C Compiler and Microsoft MSVC Linker
> +---------------------------------------------------------
> +
>  Install the Compiler
> ---------------------
> +~~~~~~~~~~~~~~~~~~~~
>
>  Download and install the clang compiler from
>  `LLVM website <http://releases.llvm.org/download.html>`_.
> @@ -25,7 +32,7 @@ For example, Clang-LLVM direct download link::
>
>
>  Install the Linker
> -------------------
> +~~~~~~~~~~~~~~~~~~
>
>  Download and install the Build Tools for Visual Studio to link and build the
>  files on windows,
> @@ -34,6 +41,15 @@ When installing build tools, select the "Visual C++ build tools" option
>  and ensure the Windows SDK is selected.
>
>
> +Option 2. MinGW-w64 Toolchain
> +-----------------------------
> +
> +Obtain the latest version from
> +`MinGW-w64 website <http://mingw-w64.org/doku.php/download>`_.
> +On Windows, install to a folder without spaces in its name, like ``C:\MinGW``.
> +This path is assumed for the rest of this guide.
> +
> +
>  Install the Build System
>  ------------------------
>
> @@ -43,6 +59,12 @@ A good option to choose is the MSI installer for both meson and ninja together::
>
>         http://mesonbuild.com/Getting-meson.html#installing-meson-and-ninja-with-the-msi-installer%22
>
> +.. warning::
> +
> +    Meson 0.47.1 is recommended, Meson 0.52 is the latest version known
> +    to build DPDK successfully. Meson 0.53 has fatal issues with Clang
> +    that prevent both native and cross-compilation.
> +
>  Install the Backend
>  -------------------
>
> @@ -56,23 +78,41 @@ Build the code
>  The build environment is setup to build the EAL and the helloworld example by
>  default.
>
> -Using the ninja backend
> -~~~~~~~~~~~~~~~~~~~~~~~~
> +Option 1. Native Build on Windows
> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> -Specifying the compiler might be required to complete the meson command.
> +When using Clang-LLVM, specifying the compiler might be required to complete
> +the meson command:
>
>  .. code-block:: console
>
>      set CC=clang
>
> +When using MinGW-w64, it is sufficient to have toolchain executables in PATH:
> +
> +.. code-block:: console
> +
> +    set PATH=C:\MinGW\mingw64\bin;%PATH%
> +
>  To compile the examples, the flag ``-Dexamples`` is required.
>
>  .. code-block:: console
>
>      cd C:\Users\me\dpdk
>      meson -Dexamples=helloworld build
> -    cd build
> -    ninja
> +    ninja -C build
> +
> +Option 2. Cross-Compile with MinGW-w64
> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +The cross-file option must be specified for Meson.
> +Depending on the distribution, paths in this file may need adjustments.
> +
> +.. code-block:: console
> +
> +    meson --cross-file config/x86/meson_mingw.txt -Dexamples=helloworld build
> +    ninja -C build
> +
>
>  Run the helloworld example
>  ==========================
> @@ -87,3 +127,8 @@ Navigate to the examples in the build directory and run `dpdk-helloworld.exe`.
>      hello from core 3
>      hello from core 0
>      hello from core 2
> +
> +Note for MinGW-w64: applications are linked to ``libwinpthread-1.dll``
> +by default. To run the example, either add toolchain executables directory
> +to the PATH or copy the library to the working directory.
> +Alternatively, static linking may be used (mind the LGPLv2.1 license).
> --

btw, just share my experience.

Using mingw-w64 4.0.4 on ubuntu 1604 does not work due to
lib/librte_eal.a(librte_eal_common_eal_common_thread.c.obj):eal_common_thread.c:(.text+0x1f):
undefined reference to `EnterSynchronizationBarrier'
https://sourceforge.net/p/mingw-w64/bugs/562/

This is fixed in mingw-w64 5.0.3 ubuntu 1804.
William

  reply	other threads:[~2020-02-18 21:28 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-18  0:02 [dpdk-dev] [PATCH v3 0/7] MinGW-w64 support Dmitry Kozlyuk
2020-02-18  0:02 ` [dpdk-dev] [PATCH v3 1/7] eal: introduce portable format attribute Dmitry Kozlyuk
2020-02-18  0:02 ` [dpdk-dev] [PATCH v3 2/7] eal/windows: use lowercase filenames for system headers Dmitry Kozlyuk
2020-02-18  0:02 ` [dpdk-dev] [PATCH v3 3/7] eal/windows: support builing with MinGW-w64 Dmitry Kozlyuk
2020-02-18  0:02 ` [dpdk-dev] [PATCH v3 4/7] build: MinGW-w64 support for Meson Dmitry Kozlyuk
2020-02-18 14:26   ` Thomas Monjalon
2020-02-18 14:54     ` Bruce Richardson
2020-02-18  0:02 ` [dpdk-dev] [PATCH v3 5/7] build: add cross-file for MinGW-w64 Dmitry Kozlyuk
2020-02-18  0:02 ` [dpdk-dev] [PATCH v3 6/7] doc: guide for Windows build using MinGW-w64 Dmitry Kozlyuk
2020-02-18 21:27   ` William Tu [this message]
2020-02-18  0:02 ` [dpdk-dev] [PATCH v3 7/7] build: fix linker warnings with Clang on Windows Dmitry Kozlyuk
2020-02-18 21:16 ` [dpdk-dev] [PATCH v3 0/7] MinGW-w64 support William Tu
2020-02-27  4:25 ` [dpdk-dev] [PATCH v4 " Dmitry Kozlyuk
2020-02-27  4:25   ` [dpdk-dev] [PATCH v4 1/7] eal: introduce portable format attribute Dmitry Kozlyuk
2020-03-12 22:33     ` Thomas Monjalon
2020-03-13 23:38       ` Dmitry Kozlyuk
2020-03-15  8:36         ` Thomas Monjalon
2020-03-16 10:54           ` Bruce Richardson
2020-03-16 11:02             ` Bruce Richardson
2020-03-16 11:14               ` Thomas Monjalon
2020-03-16 11:18                 ` Bruce Richardson
2020-03-16 11:35                 ` Bruce Richardson
2020-03-16 14:27         ` Thomas Monjalon
2020-02-27  4:25   ` [dpdk-dev] [PATCH v4 2/7] eal/windows: use lowercase filenames for system headers Dmitry Kozlyuk
2020-02-27  4:25   ` [dpdk-dev] [PATCH v4 3/7] eal/windows: support builing with MinGW-w64 Dmitry Kozlyuk
2020-02-27  4:25   ` [dpdk-dev] [PATCH v4 4/7] build: MinGW-w64 support for Meson Dmitry Kozlyuk
2020-02-27  4:25   ` [dpdk-dev] [PATCH v4 5/7] build: add cross-file for MinGW-w64 Dmitry Kozlyuk
2020-02-27  4:25   ` [dpdk-dev] [PATCH v4 6/7] doc: guide for Windows build using MinGW-w64 Dmitry Kozlyuk
2020-02-27  4:25   ` [dpdk-dev] [PATCH v4 7/7] build: fix linker warnings with Clang on Windows Dmitry Kozlyuk
2020-03-11 17:22   ` [dpdk-dev] [PATCH v4 0/7] MinGW-w64 support William Tu
2020-03-18  0:24     ` Thomas Monjalon
2020-03-11 22:36   ` Kadam, Pallavi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CALDO+SY=J1eQukQYnZ_cc2EzcJSMvZqG+N8s9eiCDkqRjz_PRA@mail.gmail.com' \
    --to=u9012063@gmail.com \
    --cc=dev@dpdk.org \
    --cc=dmitry.kozliuk@gmail.com \
    --cc=harini.ramakrishnan@microsoft.com \
    --cc=john.mcnamara@intel.com \
    --cc=marko.kovacevic@intel.com \
    --cc=ocardona@microsoft.com \
    --cc=pallavi.kadam@intel.com \
    --cc=ranjit.menon@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).