doc: update links in nfb guide
[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 On Linux, i.e. for cross-compilation, install MinGW-w64 via a package manager.
48 Version 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
51 On Windows, obtain the latest version installer from
52 `MinGW-w64 repository <https://sourceforge.net/projects/mingw-w64/files/>`_.
53 Any thread model (POSIX or Win32) can be chosen, DPDK does not rely on it.
54 Install to a folder without spaces in its name, like ``C:\MinGW``.
55 This path is assumed for the rest of this guide.
56
57
58 Install the Build System
59 ------------------------
60
61 Download and install the build system from
62 `Meson website <http://mesonbuild.com/Getting-meson.html>`_.
63 A 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
67 Recommended version is Meson 0.57.
68
69 Versions starting from 0.58 are unusable with LLVM toolchain
70 because of a `Meson issue <https://github.com/mesonbuild/meson/issues/8981>`_.
71
72
73 Install the Backend
74 -------------------
75
76 If using Ninja, download and install the backend from
77 `Ninja website <https://ninja-build.org/>`_ or
78 install along with the meson build system.
79
80 Build the code
81 --------------
82
83 The build environment is setup to build the EAL and the helloworld example by
84 default.
85
86 Option 1. Native Build on Windows
87 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
88
89 When using Clang-LLVM, specifying the compiler might be required to complete
90 the meson command:
91
92 .. code-block:: console
93
94     set CC=clang
95
96 When 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
102 To 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
110 Option 2. Cross-Compile with MinGW-w64
111 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
112
113 The cross-file option must be specified for Meson.
114 Depending 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