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