b729b3c039
Meson with Windows clang generates incorrect linker flag "--subsystem,console" instead of "/subsystem:console" which will fail the DPDK build. This is discovered at porting testpmd. Meson 0.57.0 has the fix and should be used for DPDK Windows build. Update the WindowsGSG DPDK Build document for the proper meson version. Signed-off-by: Jie Zhou <jizh@microsoft.com> Acked-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
116 lines
3.3 KiB
ReStructuredText
116 lines
3.3 KiB
ReStructuredText
.. SPDX-License-Identifier: BSD-3-Clause
|
|
Copyright(c) 2019 Intel Corporation.
|
|
|
|
Compiling the DPDK Target from Source
|
|
=====================================
|
|
|
|
System Requirements
|
|
-------------------
|
|
|
|
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>`_.
|
|
For example, Clang-LLVM direct download link::
|
|
|
|
http://releases.llvm.org/7.0.1/LLVM-7.0.1-win64.exe
|
|
|
|
|
|
Install the Linker
|
|
~~~~~~~~~~~~~~~~~~
|
|
|
|
Download and install the Build Tools for Visual Studio to link and build the
|
|
files on windows,
|
|
from `Microsoft website <https://visualstudio.microsoft.com/downloads>`_.
|
|
When installing build tools, select the "Visual C++ build tools" option
|
|
and ensure the Windows SDK is selected.
|
|
|
|
|
|
Option 2. MinGW-w64 Toolchain
|
|
-----------------------------
|
|
|
|
On Linux, i.e. for cross-compilation, install MinGW-w64 via a package manager.
|
|
Version 4.0.4 for Ubuntu 16.04 cannot be used due to a
|
|
`MinGW-w64 bug <https://sourceforge.net/p/mingw-w64/bugs/562/>`_.
|
|
|
|
On Windows, obtain the latest version installer from
|
|
`MinGW-w64 repository <https://sourceforge.net/projects/mingw-w64/files/>`_.
|
|
Any thread model (POSIX or Win32) can be chosen, DPDK does not rely on it.
|
|
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
|
|
------------------------
|
|
|
|
Download and install the build system from
|
|
`Meson website <http://mesonbuild.com/Getting-meson.html>`_.
|
|
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
|
|
|
|
Recommended version is either Meson 0.57.0 (baseline) or the latest release.
|
|
|
|
Install the Backend
|
|
-------------------
|
|
|
|
If using Ninja, download and install the backend from
|
|
`Ninja website <https://ninja-build.org/>`_ or
|
|
install along with the meson build system.
|
|
|
|
Build the code
|
|
--------------
|
|
|
|
The build environment is setup to build the EAL and the helloworld example by
|
|
default.
|
|
|
|
Option 1. Native Build on Windows
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
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
|
|
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/cross-mingw -Dexamples=helloworld build
|
|
ninja -C build
|