1d71455306
Add Meson configuration to cross-compile for Windows using MinGW-w64. It may require adjustments in some cases, but at least it provides the foundation. Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com> Tested-by: William Tu <u9012063@gmail.com> Tested-by: Pallavi Kadam <pallavi.kadam@intel.com>
134 lines
3.7 KiB
ReStructuredText
134 lines
3.7 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
|
|
-----------------------------
|
|
|
|
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.
|
|
|
|
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/>`_.
|
|
|
|
|
|
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.47.1 (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/meson_mingw.txt -Dexamples=helloworld build
|
|
ninja -C build
|
|
|
|
|
|
Run the helloworld example
|
|
==========================
|
|
|
|
Navigate to the examples in the build directory and run `dpdk-helloworld.exe`.
|
|
|
|
.. code-block:: console
|
|
|
|
cd C:\Users\me\dpdk\build\examples
|
|
dpdk-helloworld.exe
|
|
hello from core 1
|
|
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).
|