f-stack/dpdk/doc/guides/windows_gsg/build_dpdk.rst

120 lines
3.4 KiB
ReStructuredText
Raw Normal View History

2020-06-18 16:55:50 +00:00
.. SPDX-License-Identifier: BSD-3-Clause
Copyright(c) 2019 Intel Corporation.
Compiling the DPDK Target from Source
=====================================
System Requirements
-------------------
2021-01-28 17:08:59 +00:00
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).
2020-06-18 16:55:50 +00:00
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.
2021-01-28 17:08:59 +00:00
Option 1. Clang-LLVM C Compiler and Microsoft MSVC Linker
---------------------------------------------------------
2020-06-18 16:55:50 +00:00
Install the Compiler
2021-01-28 17:08:59 +00:00
~~~~~~~~~~~~~~~~~~~~
2020-06-18 16:55:50 +00:00
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
2021-01-28 17:08:59 +00:00
~~~~~~~~~~~~~~~~~~
2020-06-18 16:55:50 +00:00
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.
2021-01-28 17:08:59 +00:00
Option 2. MinGW-w64 Toolchain
-----------------------------
2021-02-05 08:48:47 +00:00
On Linux, i.e. for cross-compilation, install MinGW-w64 via a package manager.
2021-01-28 17:08:59 +00:00
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/>`_.
2021-02-05 08:48:47 +00:00
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.
2021-01-28 17:08:59 +00:00
2020-06-18 16:55:50 +00:00
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
2022-09-06 04:00:10 +00:00
Recommended version is Meson 0.57.
Versions starting from 0.58 are unusable with LLVM toolchain
because of a `Meson issue <https://github.com/mesonbuild/meson/issues/8981>`_.
2021-01-28 17:08:59 +00:00
2020-06-18 16:55:50 +00:00
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.
2021-01-28 17:08:59 +00:00
Option 1. Native Build on Windows
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2020-06-18 16:55:50 +00:00
2021-01-28 17:08:59 +00:00
When using Clang-LLVM, specifying the compiler might be required to complete
the meson command:
2020-06-18 16:55:50 +00:00
.. code-block:: console
set CC=clang
2021-01-28 17:08:59 +00:00
When using MinGW-w64, it is sufficient to have toolchain executables in PATH:
.. code-block:: console
set PATH=C:\MinGW\mingw64\bin;%PATH%
2020-06-18 16:55:50 +00:00
To compile the examples, the flag ``-Dexamples`` is required.
.. code-block:: console
cd C:\Users\me\dpdk
2023-09-11 06:58:14 +00:00
meson setup -Dexamples=helloworld build
2021-01-28 17:08:59 +00:00
ninja -C build
2021-02-05 08:48:47 +00:00
Option 2. Cross-Compile with MinGW-w64
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2020-06-18 16:55:50 +00:00
2021-02-05 08:48:47 +00:00
The cross-file option must be specified for Meson.
Depending on the distribution, paths in this file may need adjustments.
2020-06-18 16:55:50 +00:00
.. code-block:: console
2023-09-11 06:58:14 +00:00
meson setup --cross-file config/x86/cross-mingw -Dexamples=helloworld build
2021-02-05 08:48:47 +00:00
ninja -C build