xref: /dpdk/doc/guides/windows_gsg/build_dpdk.rst (revision f8dbaebbf1c9efcbb2e2354b341ed62175466a57)
1..  SPDX-License-Identifier: BSD-3-Clause
2    Copyright(c) 2019 Intel Corporation.
3
4Compiling the DPDK Target from Source
5=====================================
6
7System Requirements
8-------------------
9
10Building the DPDK and its applications requires one of the following
11environments:
12
13* The Clang-LLVM C compiler and Microsoft MSVC linker.
14* The MinGW-w64 toolchain (either native or cross).
15
16The Meson Build system is used to prepare the sources for compilation
17with the Ninja backend.
18The installation of these tools is covered in this section.
19
20
21Option 1. Clang-LLVM C Compiler and Microsoft MSVC Linker
22---------------------------------------------------------
23
24Install the Compiler
25~~~~~~~~~~~~~~~~~~~~
26
27Download and install the clang compiler from
28`LLVM website <http://releases.llvm.org/download.html>`_.
29For example, Clang-LLVM direct download link::
30
31	http://releases.llvm.org/7.0.1/LLVM-7.0.1-win64.exe
32
33
34Install the Linker
35~~~~~~~~~~~~~~~~~~
36
37Download and install the Build Tools for Visual Studio to link and build the
38files on windows,
39from `Microsoft website <https://visualstudio.microsoft.com/downloads>`_.
40When installing build tools, select the "Visual C++ build tools" option
41and ensure the Windows SDK is selected.
42
43
44Option 2. MinGW-w64 Toolchain
45-----------------------------
46
47On Linux, i.e. for cross-compilation, install MinGW-w64 via a package manager.
48Version 4.0.4 for Ubuntu 16.04 cannot be used due to a
49`MinGW-w64 bug <https://sourceforge.net/p/mingw-w64/bugs/562/>`_.
50
51On Windows, obtain the latest version installer from
52`MinGW-w64 repository <https://sourceforge.net/projects/mingw-w64/files/>`_.
53Any thread model (POSIX or Win32) can be chosen, DPDK does not rely on it.
54Install to a folder without spaces in its name, like ``C:\MinGW``.
55This path is assumed for the rest of this guide.
56
57
58Install the Build System
59------------------------
60
61Download and install the build system from
62`Meson website <http://mesonbuild.com/Getting-meson.html>`_.
63A good option to choose is the MSI installer for both meson and ninja together::
64
65	http://mesonbuild.com/Getting-meson.html#installing-meson-and-ninja-with-the-msi-installer%22
66
67Recommended version is Meson 0.57.
68
69Versions starting from 0.58 are unusable with LLVM toolchain
70because of a `Meson issue <https://github.com/mesonbuild/meson/issues/8981>`_.
71
72
73Install the Backend
74-------------------
75
76If using Ninja, download and install the backend from
77`Ninja website <https://ninja-build.org/>`_ or
78install along with the meson build system.
79
80Build the code
81--------------
82
83The build environment is setup to build the EAL and the helloworld example by
84default.
85
86Option 1. Native Build on Windows
87~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
88
89When using Clang-LLVM, specifying the compiler might be required to complete
90the meson command:
91
92.. code-block:: console
93
94    set CC=clang
95
96When using MinGW-w64, it is sufficient to have toolchain executables in PATH:
97
98.. code-block:: console
99
100    set PATH=C:\MinGW\mingw64\bin;%PATH%
101
102To compile the examples, the flag ``-Dexamples`` is required.
103
104.. code-block:: console
105
106    cd C:\Users\me\dpdk
107    meson -Dexamples=helloworld build
108    ninja -C build
109
110Option 2. Cross-Compile with MinGW-w64
111~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
112
113The cross-file option must be specified for Meson.
114Depending on the distribution, paths in this file may need adjustments.
115
116.. code-block:: console
117
118    meson --cross-file config/x86/cross-mingw -Dexamples=helloworld build
119    ninja -C build
120