[2/6] Section 2: Install and Build DPDK

Message ID 20230920154817.617-3-dave@youngcopy.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series docs: Unify Getting Started Guides |

Checks

Context Check Description
ci/checkpatch warning coding style issues

Commit Message

Dave Young Sept. 20, 2023, 3:48 p.m. UTC
  ---
 .../building_from_sources.rst                 | 108 ++++++++++++++++++
 .../install_and_build/index.rst               |  15 +++
 .../installing_prebuilt_packages.rst          |  54 +++++++++
 .../windows_install_build.rst                 |  93 +++++++++++++++
 4 files changed, 270 insertions(+)
 create mode 100644 doc/guides/getting_started_guide/install_and_build/building_from_sources.rst
 create mode 100644 doc/guides/getting_started_guide/install_and_build/index.rst
 create mode 100644 doc/guides/getting_started_guide/install_and_build/installing_prebuilt_packages.rst
 create mode 100644 doc/guides/getting_started_guide/install_and_build/windows_install_build.rst
  

Comments

Ferruh Yigit Sept. 25, 2023, 11:30 a.m. UTC | #1
On 9/20/2023 4:48 PM, David Young wrote:
> ---
>  .../building_from_sources.rst                 | 108 ++++++++++++++++++
>  .../install_and_build/index.rst               |  15 +++
>  .../installing_prebuilt_packages.rst          |  54 +++++++++
>  .../windows_install_build.rst                 |  93 +++++++++++++++
>  4 files changed, 270 insertions(+)
>  create mode 100644 doc/guides/getting_started_guide/install_and_build/building_from_sources.rst
>  create mode 100644 doc/guides/getting_started_guide/install_and_build/index.rst
>  create mode 100644 doc/guides/getting_started_guide/install_and_build/installing_prebuilt_packages.rst
>  create mode 100644 doc/guides/getting_started_guide/install_and_build/windows_install_build.rst
> 
> diff --git a/doc/guides/getting_started_guide/install_and_build/building_from_sources.rst b/doc/guides/getting_started_guide/install_and_build/building_from_sources.rst
> new file mode 100644
> index 0000000000..e4ee8e436d
> --- /dev/null
> +++ b/doc/guides/getting_started_guide/install_and_build/building_from_sources.rst
> @@ -0,0 +1,108 @@
> +..  SPDX-License-Identifier: BSD-3-Clause
> +    Copyright(c) 2010-2025 Intel Corporation.
> +
> +.. _building_from_sources:
> +
> +Building and Installing DPDK from Sources
> +=========================================
> +
> +This chapter provides a comprehensive guide for building DPDK from sources on both
> +Linux and FreeBSD platforms. It covers the necessary steps, prerequisites, 
> +and considerations for different architectures and compilers.
> +
> +Required Tools
> +--------------
> +
> +To build DPDK, you'll need the following tools:
> +
> +- A C compiler like ``gcc`` (version 5+) or ``clang`` (version 3.6+)
> +- ``pkg-config`` or ``pkgconf``
> +- Python 3.6 or later
> +- ``meson`` (version 0.53.2+) and ``ninja``
> +- ``pyelftools`` (version 0.22+)
> +
>

Is 'libnuma' also a dependency?

When I remove it in my platform and build DPDK again, getting following
in meson stage:

"
config/meson.build:419:4: ERROR: Problem encountered:
No NUMA library (development package) found, yet DPDK configured for
multiple NUMA nodes.
Please install libnuma, or set 'max_numa_nodes' option to '1' to build
without NUMA support.
"



> +Here's how to install them:
> +
> +Linux
> +^^^^^
> +
> +Alpine
> +
> +.. code-block:: bash
> +
> +   sudo apk add alpine-sdk bsd-compat-headers
> +   pip install meson ninja
> +
> +Debian and Ubuntu and derivatives
> +
> +.. code-block:: bash
> +
> +   sudo apt install build-essential
> +   pip install meson ninja
> +
> +Fedora and RedHat Enterprise Linux RHEL
> +
> +.. code-block:: bash
> +
> +   sudo dnf groupinstall "Development Tools"
> +   pip install meson ninja
> +

Above are missing some of the dependencies above, just to confirm if
they are installed by default?
And even if so, if we should provide explicit commands to install all,
to be sure?



> +openSUSE
> +
> +.. code-block:: bash
> +
> +   sudo zypper install -t pattern devel_basis python3-pyelftools
> +   pip install meson ninja
> +
> +FreeBSD
> +^^^^^^^
> +
> +FreeBSD (as root)
> +
> +.. code-block:: bash
> +
> +   pkg install meson pkgconf py38-pyelftools
> +
> +Note: If you're using FreeBSD, you'll also need kernel sources. Make sure they're included during the FreeBSD installation.
> +
> +Getting the DPDK Source
> +-----------------------
> +
> +Download the DPDK source code from the official repository 
> +``https://fast.dpdk.org/rel/``.
> +
> +Use ``wget`` to grab the DPDK version::
> +
> +        wget https://fast.dpdk.org/rel/dpdk-<version>.tar.xz
> +
> +Extract the downloaded archive:
> +
> +.. code-block:: bash
> +
> +   tar -xvf dpdk-<version>.tar.gz
> +
> +Navigate to the DPDK directory:
> +
> +.. code-block:: bash
> +
> +   cd dpdk-<version>
> +
> +Building DPDK
> +-------------
> +
> +Configure the build based on your needs, hardware, and environment. 
> +This might include setting specific flags or options. For example: “meson setup -Dbuildtype=debugoptimized build”. Then compile using “ninja” and install using “meson install”.
> +
> +.. code-block:: bash
> +
> +   ninja -C build
> +   cd build
> +   sudo ninja install>

Above mentions from "meson install", here using "ninja install", should
we unify it to one?



> +   ldconfig
> +
> +For detailed information on Meson build configuration options specific to DPDK, see :ref:`DPDK Meson Build Configuration Options <dpdk_meson_build_options>`.
> +
> +Cross-Compilation Instructions for Different Architectures
> +----------------------------------------------------------
> +
> +For instructions on building DPDK for ARM64, LoongArch, and RISC-V, refer to :ref:`cross_compile_dpdk`.
> diff --git a/doc/guides/getting_started_guide/install_and_build/index.rst b/doc/guides/getting_started_guide/install_and_build/index.rst
> new file mode 100644
> index 0000000000..f4d8740fb6
> --- /dev/null
> +++ b/doc/guides/getting_started_guide/install_and_build/index.rst
> @@ -0,0 +1,15 @@
> +..  SPDX-License-Identifier: BSD-3-Clause
> +    Copyright(c) 2010-2025 Intel Corporation.
> +

2025?



> +.. _install_and_build:
> +
> +Install and Build DPDK
> +======================
> +
> +.. toctree::
> +    :maxdepth: 2
> +
> +    
> +    installing_prebuilt_packages
> +    building_from_sources
> +    windows_install_build
> \ No newline at end of file
> diff --git a/doc/guides/getting_started_guide/install_and_build/installing_prebuilt_packages.rst b/doc/guides/getting_started_guide/install_and_build/installing_prebuilt_packages.rst
> new file mode 100644
> index 0000000000..3e395d65f1
> --- /dev/null
> +++ b/doc/guides/getting_started_guide/install_and_build/installing_prebuilt_packages.rst
> @@ -0,0 +1,54 @@
> +..  SPDX-License-Identifier: BSD-3-Clause
> +    Copyright(c) 2010-2025 Intel Corporation.
> +
> +.. _installing_prebuilt_packages:
> +
> +Installing Pre-built Packages
> +=============================
> +
> +Pre-built packages provide a convenient way to install DPDK without the need to compile
> +the source code manually. These packages are created and maintained by the DPDK
> +community or OS vendors and are available for various operating systems and
> +distributions.
> +
> +Available Distributions
> +-----------------------
> +
> +Linux
> +^^^^^
> +
> +Pre-built DPDK packages are available for several popular Linux distributions,
> +including but not limited to:
> +
> +Alpine
> +
> +.. code-block:: bash
> +
> +   sudo apk add dpdk
> +
> +Debian and Ubuntu and derivatives
> +
> +.. code-block:: bash
> +
> +   sudo apt-get install dpdk
> +
> +Fedora and RedHat Enterprise Linux RHEL
> +
> +.. code-block:: bash
> +
> +   sudo dnf install dpdk
> +
> +openSUSE
> +
> +.. code-block:: bash
> +
> +   sudo zypper install dpdk
> +
> +FreeBSD
> +^^^^^^^
> +
> +To install DPDK on FreeBSD, use the following command:
> +
> +.. code-block:: bash
> +
> +   sudo pkg install dpdk
> \ No newline at end of file
> diff --git a/doc/guides/getting_started_guide/install_and_build/windows_install_build.rst b/doc/guides/getting_started_guide/install_and_build/windows_install_build.rst
> new file mode 100644
> index 0000000000..ea0e131766
> --- /dev/null
> +++ b/doc/guides/getting_started_guide/install_and_build/windows_install_build.rst
> @@ -0,0 +1,93 @@
> +..  SPDX-License-Identifier: BSD-3-Clause
> +    Copyright(c) 2010-2015 Intel Corporation.
> +
> +.. _windows_install_build:
> +
> +Windows DPDK Build
> +==================
> +
> +Before you begin the process of building DPDK on Windows, 
> +make sure your system meets all the necessary requirements as outlined below.
> +
> +Windows System Requirements
> +---------------------------
> +
> +Building the DPDK and its applications on Windows requires one of the following
> +environments:
> +
> +- The Clang-LLVM C compiler and Microsoft MSVC linker.
> +- The MinGW-w64 toolchain (either native or cross).
> +
>

What is the difference of both two, as a new DPDK user which one should
I select?



> +The Meson Build system is used to prepare the sources for compilation with the Ninja backend.
> +
> +Option 1: Clang-LLVM C Compiler and Microsoft MSVC Linker
> +---------------------------------------------------------
> +
> +1. Install the Compiler: Download and install the clang compiler from the 
> +`LLVM website <http://releases.llvm.org/>`_.
> +
> +2. Install the Linker: Download and install the Build Tools for Visual Studio from the
> +`Microsoft website <https://visualstudio.microsoft.com/downloads/>`_. 
> +When installing build tools, select the “Visual C++ build tools” option and make sure
> +the Windows SDK is selected.
> +
> +Option 2: MinGW-w64 Toolchain
> +-----------------------------
> +
> +1. On Linux (for cross-compilation): Install MinGW-w64 via a package manager. 
> +Version 4.0.4 for Ubuntu 16.04 cannot be used due to a MinGW-w64 bug.
> +
> +2. On Windows: Obtain the latest version installer from the
> +`MinGW-w64 repository <https://mingw-w64.org/doku.php>`_. 
> +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.
> +
> +Install the Build System
> +------------------------
> +
> +Download and install the build system from the
> +`Meson website <http://mesonbuild.com/Getting-meson.html#installing-meson-and-ninja-with-the-msi-installer>`_. 
> +A good option to choose is the MSI installer for both meson and ninja together.
> +Recommended version is either Meson 0.57.0 (baseline) or the latest release.
> +
> +Install the Backend
> +-------------------
> +
> +If using Ninja, download and install the backend from the
> +`Ninja website <https://ninja-build.org/>`_ or install along with the meson build
> +system. 
> +
> +Once you have verified that your system meets these requirements, 
> +you can proceed with the following steps to build DPDK.
> +
> +Build the Code
> +--------------
> +
> +The build environment is setup to build the EAL and the helloworld example by default.
> +To compile the examples, the flag -Dexamples is required.
> +

What do you think to emphasis 'helloworld' & '-Dexamples', with `` or *
  
Bruce Richardson Sept. 25, 2023, 12:20 p.m. UTC | #2
On Mon, Sep 25, 2023 at 12:30:35PM +0100, Ferruh Yigit wrote:
> On 9/20/2023 4:48 PM, David Young wrote:
> > ---
> >  .../building_from_sources.rst                 | 108 ++++++++++++++++++
> >  .../install_and_build/index.rst               |  15 +++
> >  .../installing_prebuilt_packages.rst          |  54 +++++++++
> >  .../windows_install_build.rst                 |  93 +++++++++++++++
> >  4 files changed, 270 insertions(+)
> >  create mode 100644 doc/guides/getting_started_guide/install_and_build/building_from_sources.rst
> >  create mode 100644 doc/guides/getting_started_guide/install_and_build/index.rst
> >  create mode 100644 doc/guides/getting_started_guide/install_and_build/installing_prebuilt_packages.rst
> >  create mode 100644 doc/guides/getting_started_guide/install_and_build/windows_install_build.rst
> > 
> > diff --git a/doc/guides/getting_started_guide/install_and_build/building_from_sources.rst b/doc/guides/getting_started_guide/install_and_build/building_from_sources.rst
> > new file mode 100644
> > index 0000000000..e4ee8e436d
> > --- /dev/null
> > +++ b/doc/guides/getting_started_guide/install_and_build/building_from_sources.rst
> > @@ -0,0 +1,108 @@
> > +..  SPDX-License-Identifier: BSD-3-Clause
> > +    Copyright(c) 2010-2025 Intel Corporation.
> > +
> > +.. _building_from_sources:
> > +
> > +Building and Installing DPDK from Sources
> > +=========================================
> > +
> > +This chapter provides a comprehensive guide for building DPDK from sources on both
> > +Linux and FreeBSD platforms. It covers the necessary steps, prerequisites, 
> > +and considerations for different architectures and compilers.
> > +
> > +Required Tools
> > +--------------
> > +
> > +To build DPDK, you'll need the following tools:
> > +
> > +- A C compiler like ``gcc`` (version 5+) or ``clang`` (version 3.6+)
> > +- ``pkg-config`` or ``pkgconf``
> > +- Python 3.6 or later
> > +- ``meson`` (version 0.53.2+) and ``ninja``
> > +- ``pyelftools`` (version 0.22+)
> > +
> >
> 
> Is 'libnuma' also a dependency?
> 
> When I remove it in my platform and build DPDK again, getting following
> in meson stage:
> 
> "
> config/meson.build:419:4: ERROR: Problem encountered:
> No NUMA library (development package) found, yet DPDK configured for
> multiple NUMA nodes.
> Please install libnuma, or set 'max_numa_nodes' option to '1' to build
> without NUMA support.
> "
> 

Realistically, yes it is a dependency and we should include it here.

> 
> 
> > +Here's how to install them:
> > +
> > +Linux
> > +^^^^^
> > +
> > +Alpine
> > +
> > +.. code-block:: bash
> > +
> > +   sudo apk add alpine-sdk bsd-compat-headers
> > +   pip install meson ninja
> > +
> > +Debian and Ubuntu and derivatives
> > +
> > +.. code-block:: bash
> > +
> > +   sudo apt install build-essential
> > +   pip install meson ninja
> > +
> > +Fedora and RedHat Enterprise Linux RHEL
> > +
> > +.. code-block:: bash
> > +
> > +   sudo dnf groupinstall "Development Tools"
> > +   pip install meson ninja
> > +
> 
> Above are missing some of the dependencies above, just to confirm if
> they are installed by default?
> And even if so, if we should provide explicit commands to install all,
> to be sure?
> 
> 
> 
> > +openSUSE
> > +
> > +.. code-block:: bash
> > +
> > +   sudo zypper install -t pattern devel_basis python3-pyelftools
> > +   pip install meson ninja
> > +
> > +FreeBSD
> > +^^^^^^^
> > +
> > +FreeBSD (as root)
> > +
> > +.. code-block:: bash
> > +
> > +   pkg install meson pkgconf py38-pyelftools
> > +
> > +Note: If you're using FreeBSD, you'll also need kernel sources. Make sure they're included during the FreeBSD installation.
> > +
> > +Getting the DPDK Source
> > +-----------------------
> > +
> > +Download the DPDK source code from the official repository 
> > +``https://fast.dpdk.org/rel/``.
> > +
> > +Use ``wget`` to grab the DPDK version::
> > +
> > +        wget https://fast.dpdk.org/rel/dpdk-<version>.tar.xz
> > +
> > +Extract the downloaded archive:
> > +
> > +.. code-block:: bash
> > +
> > +   tar -xvf dpdk-<version>.tar.gz
> > +
> > +Navigate to the DPDK directory:
> > +
> > +.. code-block:: bash
> > +
> > +   cd dpdk-<version>
> > +
> > +Building DPDK
> > +-------------
> > +
> > +Configure the build based on your needs, hardware, and environment. 
> > +This might include setting specific flags or options. For example: “meson setup -Dbuildtype=debugoptimized build”. Then compile using “ninja” and install using “meson install”.
> > +
> > +.. code-block:: bash
> > +
> > +   ninja -C build
> > +   cd build
> > +   sudo ninja install>
> 
> Above mentions from "meson install", here using "ninja install", should
> we unify it to one?
> 

Yes, we should standardize on meson install.

> 
<snip for brevity>
  
Tyler Retzlaff Sept. 25, 2023, 4:05 p.m. UTC | #3
On Wed, Sep 20, 2023 at 11:48:06AM -0400, David Young wrote:
> ---
>  .../building_from_sources.rst                 | 108 ++++++++++++++++++
>  .../install_and_build/index.rst               |  15 +++
>  .../installing_prebuilt_packages.rst          |  54 +++++++++
>  .../windows_install_build.rst                 |  93 +++++++++++++++
>  4 files changed, 270 insertions(+)
>  create mode 100644 doc/guides/getting_started_guide/install_and_build/building_from_sources.rst
>  create mode 100644 doc/guides/getting_started_guide/install_and_build/index.rst
>  create mode 100644 doc/guides/getting_started_guide/install_and_build/installing_prebuilt_packages.rst
>  create mode 100644 doc/guides/getting_started_guide/install_and_build/windows_install_build.rst
> 
> diff --git a/doc/guides/getting_started_guide/install_and_build/building_from_sources.rst b/doc/guides/getting_started_guide/install_and_build/building_from_sources.rst
> new file mode 100644
> index 0000000000..e4ee8e436d
> --- /dev/null
> +++ b/doc/guides/getting_started_guide/install_and_build/building_from_sources.rst
> @@ -0,0 +1,108 @@
> +..  SPDX-License-Identifier: BSD-3-Clause
> +    Copyright(c) 2010-2025 Intel Corporation.
> +
> +.. _building_from_sources:
> +
> +Building and Installing DPDK from Sources
> +=========================================
> +
> +This chapter provides a comprehensive guide for building DPDK from sources on both
> +Linux and FreeBSD platforms. It covers the necessary steps, prerequisites, 
> +and considerations for different architectures and compilers.

when the title of the section is general it shouldn't mention a specific
OS in the content. if the content is OS specific then the parent section
or the title of the section should identify to which OS it applies. in
general it would be nice to convey that windows is an equally supported
platform to the other operating systems.

i know it's a bit of a dance i hope you can help interpret what i'm
trying to convey.

> +
> +Required Tools
> +--------------
> +
> +To build DPDK, you'll need the following tools:
> +
> +- A C compiler like ``gcc`` (version 5+) or ``clang`` (version 3.6+)
> +- ``pkg-config`` or ``pkgconf``
> +- Python 3.6 or later
> +- ``meson`` (version 0.53.2+) and ``ninja``
> +- ``pyelftools`` (version 0.22+)
> +
> +Here's how to install them:
> +
> +Linux
> +^^^^^
> +
> +Alpine
> +
> +.. code-block:: bash
> +
> +   sudo apk add alpine-sdk bsd-compat-headers
> +   pip install meson ninja
> +
> +Debian and Ubuntu and derivatives
> +
> +.. code-block:: bash
> +
> +   sudo apt install build-essential
> +   pip install meson ninja
> +
> +Fedora and RedHat Enterprise Linux RHEL
> +
> +.. code-block:: bash
> +
> +   sudo dnf groupinstall "Development Tools"
> +   pip install meson ninja
> +
> +openSUSE
> +
> +.. code-block:: bash
> +
> +   sudo zypper install -t pattern devel_basis python3-pyelftools
> +   pip install meson ninja
> +
> +FreeBSD
> +^^^^^^^
> +
> +FreeBSD (as root)
> +
> +.. code-block:: bash
> +
> +   pkg install meson pkgconf py38-pyelftools
> +
> +Note: If you're using FreeBSD, you'll also need kernel sources. Make sure they're included during the FreeBSD installation.
> +
> +Getting the DPDK Source
> +-----------------------
> +
> +Download the DPDK source code from the official repository 
> +``https://fast.dpdk.org/rel/``.
> +
> +Use ``wget`` to grab the DPDK version::
> +
> +        wget https://fast.dpdk.org/rel/dpdk-<version>.tar.xz
> +
> +Extract the downloaded archive:
> +
> +.. code-block:: bash
> +
> +   tar -xvf dpdk-<version>.tar.gz
> +
> +Navigate to the DPDK directory:
> +
> +.. code-block:: bash
> +
> +   cd dpdk-<version>
> +
> +Building DPDK
> +-------------
> +
> +Configure the build based on your needs, hardware, and environment. 
> +This might include setting specific flags or options. For example: “meson setup -Dbuildtype=debugoptimized build”. Then compile using “ninja” and install using “meson install”.
> +
> +.. code-block:: bash
> +
> +   ninja -C build
> +   cd build
> +   sudo ninja install
> +   ldconfig
> +
> +For detailed information on Meson build configuration options specific to DPDK, see :ref:`DPDK Meson Build Configuration Options <dpdk_meson_build_options>`.
> +
> +Cross-Compilation Instructions for Different Architectures
> +----------------------------------------------------------
> +
> +For instructions on building DPDK for ARM64, LoongArch, and RISC-V, refer to :ref:`cross_compile_dpdk`.
> diff --git a/doc/guides/getting_started_guide/install_and_build/index.rst b/doc/guides/getting_started_guide/install_and_build/index.rst
> new file mode 100644
> index 0000000000..f4d8740fb6
> --- /dev/null
> +++ b/doc/guides/getting_started_guide/install_and_build/index.rst
> @@ -0,0 +1,15 @@
> +..  SPDX-License-Identifier: BSD-3-Clause
> +    Copyright(c) 2010-2025 Intel Corporation.
> +
> +.. _install_and_build:
> +
> +Install and Build DPDK
> +======================
> +
> +.. toctree::
> +    :maxdepth: 2
> +
> +    
> +    installing_prebuilt_packages
> +    building_from_sources
> +    windows_install_build
> \ No newline at end of file
> diff --git a/doc/guides/getting_started_guide/install_and_build/installing_prebuilt_packages.rst b/doc/guides/getting_started_guide/install_and_build/installing_prebuilt_packages.rst
> new file mode 100644
> index 0000000000..3e395d65f1
> --- /dev/null
> +++ b/doc/guides/getting_started_guide/install_and_build/installing_prebuilt_packages.rst
> @@ -0,0 +1,54 @@
> +..  SPDX-License-Identifier: BSD-3-Clause
> +    Copyright(c) 2010-2025 Intel Corporation.
> +
> +.. _installing_prebuilt_packages:
> +
> +Installing Pre-built Packages
> +=============================
> +
> +Pre-built packages provide a convenient way to install DPDK without the need to compile
> +the source code manually. These packages are created and maintained by the DPDK
> +community or OS vendors and are available for various operating systems and
> +distributions.
> +
> +Available Distributions
> +-----------------------
> +
> +Linux
> +^^^^^
> +
> +Pre-built DPDK packages are available for several popular Linux distributions,
> +including but not limited to:
> +
> +Alpine
> +
> +.. code-block:: bash
> +
> +   sudo apk add dpdk
> +
> +Debian and Ubuntu and derivatives
> +
> +.. code-block:: bash
> +
> +   sudo apt-get install dpdk
> +
> +Fedora and RedHat Enterprise Linux RHEL
> +
> +.. code-block:: bash
> +
> +   sudo dnf install dpdk
> +
> +openSUSE
> +
> +.. code-block:: bash
> +
> +   sudo zypper install dpdk
> +
> +FreeBSD
> +^^^^^^^
> +
> +To install DPDK on FreeBSD, use the following command:
> +
> +.. code-block:: bash
> +
> +   sudo pkg install dpdk
> \ No newline at end of file
> diff --git a/doc/guides/getting_started_guide/install_and_build/windows_install_build.rst b/doc/guides/getting_started_guide/install_and_build/windows_install_build.rst
> new file mode 100644
> index 0000000000..ea0e131766
> --- /dev/null
> +++ b/doc/guides/getting_started_guide/install_and_build/windows_install_build.rst
> @@ -0,0 +1,93 @@
> +..  SPDX-License-Identifier: BSD-3-Clause
> +    Copyright(c) 2010-2015 Intel Corporation.
> +
> +.. _windows_install_build:
> +
> +Windows DPDK Build
> +==================
> +
> +Before you begin the process of building DPDK on Windows, 
> +make sure your system meets all the necessary requirements as outlined below.
> +
> +Windows System Requirements
> +---------------------------
> +
> +Building the DPDK and its applications on Windows requires one of the following
> +environments:
> +
> +- The Clang-LLVM C compiler and Microsoft MSVC linker.

would it be overly objectionable to state specific LLVM >= 16.0.x as
required?

> +- The MinGW-w64 toolchain (either native or cross).
> +
> +The Meson Build system is used to prepare the sources for compilation with the Ninja backend.
> +
> +Option 1: Clang-LLVM C Compiler and Microsoft MSVC Linker
> +---------------------------------------------------------
> +
> +1. Install the Compiler: Download and install the clang compiler from the 
> +`LLVM website <http://releases.llvm.org/>`_.
> +
> +2. Install the Linker: Download and install the Build Tools for Visual Studio from the
> +`Microsoft website <https://visualstudio.microsoft.com/downloads/>`_. 
> +When installing build tools, select the “Visual C++ build tools” option and make sure
> +the Windows SDK is selected.
> +
> +Option 2: MinGW-w64 Toolchain
> +-----------------------------
> +
> +1. On Linux (for cross-compilation): Install MinGW-w64 via a package manager. 
> +Version 4.0.4 for Ubuntu 16.04 cannot be used due to a MinGW-w64 bug.
> +
> +2. On Windows: Obtain the latest version installer from the
> +`MinGW-w64 repository <https://mingw-w64.org/doku.php>`_. 
> +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.
> +
> +Install the Build System
> +------------------------
> +
> +Download and install the build system from the
> +`Meson website <http://mesonbuild.com/Getting-meson.html#installing-meson-and-ninja-with-the-msi-installer>`_. 
> +A good option to choose is the MSI installer for both meson and ninja together.
> +Recommended version is either Meson 0.57.0 (baseline) or the latest release.

s/Recommended/Required/ is 0.57.0 i do not believe their latest release
works?

> +
> +Install the Backend
> +-------------------
> +
> +If using Ninja, download and install the backend from the
> +`Ninja website <https://ninja-build.org/>`_ or install along with the meson build
> +system. 

i'm not sure we need to mention the installation of the ninja backend
since you acquire it along with meson 0.57.0? anyone call me wrong on
this or does windows use any other backend that we are aware? if not i
think we can delete the 'install the backend' section entirely.

> +
> +Once you have verified that your system meets these requirements, 
> +you can proceed with the following steps to build DPDK.
> +
> +Build the Code
> +--------------
> +
> +The build environment is setup to build the EAL and the helloworld example by default.
> +To compile the examples, the flag -Dexamples is required.
> +
> +**Option 1. Native Build on Windows**
> +
> +When using Clang-LLVM, specifying the compiler might be required to complete the meson
> +command::
> +
> +        set CC=clang
> +
> +When using MinGW-w64, it is sufficient to have toolchain executables in PATH::
> +
> +        set PATH=C:\MinGW\mingw64\bin;%PATH%
> +
> +To compile the examples::
> +
> +        cd C:\Users\me\dpdk
> +        meson -Dexamples=helloworld build

        meson setup -Dexamples=helloworld build

> +        ninja -C build

	meson compile -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::
> +
> +        meson --cross-file config/x86/cross-mingw -Dexamples=helloworld build
> +        ninja -C build
> \ No newline at end of file
> -- 
> 2.41.0.windows.1
  
Dave Young Oct. 12, 2023, 6:08 p.m. UTC | #4
Tyler, can you provide an example of the OS specific section/title you're
thinking would make sense to use?

Can you confirm the following?

1. The Clang-LLVM C compiler (version >= 16.0.x)
2. Meson Build system (Required version: 0.57.0)
3. Updated commands:

# Previous Command
meson -Dexamples=helloworld build
# Updated Command
meson setup -Dexamples=helloworld build

# Previous Command
ninja -C build
# Updated Command
meson compile -C build

4. Since Ninja is bundled with Meson 0.57.0, a separate section for its
installation may not be necessary. Is this correct?

Thanks!
David Young
Professional Copywriter/Technical Writer
Young Copy
+1 (678) 500-9550
https://www.youngcopy.com


On Mon, Sep 25, 2023 at 12:05 PM Tyler Retzlaff <
roretzla@linux.microsoft.com> wrote:

> On Wed, Sep 20, 2023 at 11:48:06AM -0400, David Young wrote:
> > ---
> >  .../building_from_sources.rst                 | 108 ++++++++++++++++++
> >  .../install_and_build/index.rst               |  15 +++
> >  .../installing_prebuilt_packages.rst          |  54 +++++++++
> >  .../windows_install_build.rst                 |  93 +++++++++++++++
> >  4 files changed, 270 insertions(+)
> >  create mode 100644
> doc/guides/getting_started_guide/install_and_build/building_from_sources.rst
> >  create mode 100644
> doc/guides/getting_started_guide/install_and_build/index.rst
> >  create mode 100644
> doc/guides/getting_started_guide/install_and_build/installing_prebuilt_packages.rst
> >  create mode 100644
> doc/guides/getting_started_guide/install_and_build/windows_install_build.rst
> >
> > diff --git
> a/doc/guides/getting_started_guide/install_and_build/building_from_sources.rst
> b/doc/guides/getting_started_guide/install_and_build/building_from_sources.rst
> > new file mode 100644
> > index 0000000000..e4ee8e436d
> > --- /dev/null
> > +++
> b/doc/guides/getting_started_guide/install_and_build/building_from_sources.rst
> > @@ -0,0 +1,108 @@
> > +..  SPDX-License-Identifier: BSD-3-Clause
> > +    Copyright(c) 2010-2025 Intel Corporation.
> > +
> > +.. _building_from_sources:
> > +
> > +Building and Installing DPDK from Sources
> > +=========================================
> > +
> > +This chapter provides a comprehensive guide for building DPDK from
> sources on both
> > +Linux and FreeBSD platforms. It covers the necessary steps,
> prerequisites,
> > +and considerations for different architectures and compilers.
>
> when the title of the section is general it shouldn't mention a specific
> OS in the content. if the content is OS specific then the parent section
> or the title of the section should identify to which OS it applies. in
> general it would be nice to convey that windows is an equally supported
> platform to the other operating systems.
>
> i know it's a bit of a dance i hope you can help interpret what i'm
> trying to convey.
>
> > +
> > +Required Tools
> > +--------------
> > +
> > +To build DPDK, you'll need the following tools:
> > +
> > +- A C compiler like ``gcc`` (version 5+) or ``clang`` (version 3.6+)
> > +- ``pkg-config`` or ``pkgconf``
> > +- Python 3.6 or later
> > +- ``meson`` (version 0.53.2+) and ``ninja``
> > +- ``pyelftools`` (version 0.22+)
> > +
> > +Here's how to install them:
> > +
> > +Linux
> > +^^^^^
> > +
> > +Alpine
> > +
> > +.. code-block:: bash
> > +
> > +   sudo apk add alpine-sdk bsd-compat-headers
> > +   pip install meson ninja
> > +
> > +Debian and Ubuntu and derivatives
> > +
> > +.. code-block:: bash
> > +
> > +   sudo apt install build-essential
> > +   pip install meson ninja
> > +
> > +Fedora and RedHat Enterprise Linux RHEL
> > +
> > +.. code-block:: bash
> > +
> > +   sudo dnf groupinstall "Development Tools"
> > +   pip install meson ninja
> > +
> > +openSUSE
> > +
> > +.. code-block:: bash
> > +
> > +   sudo zypper install -t pattern devel_basis python3-pyelftools
> > +   pip install meson ninja
> > +
> > +FreeBSD
> > +^^^^^^^
> > +
> > +FreeBSD (as root)
> > +
> > +.. code-block:: bash
> > +
> > +   pkg install meson pkgconf py38-pyelftools
> > +
> > +Note: If you're using FreeBSD, you'll also need kernel sources. Make
> sure they're included during the FreeBSD installation.
> > +
> > +Getting the DPDK Source
> > +-----------------------
> > +
> > +Download the DPDK source code from the official repository
> > +``https://fast.dpdk.org/rel/`` <https://fast.dpdk.org/rel/>.
> > +
> > +Use ``wget`` to grab the DPDK version::
> > +
> > +        wget https://fast.dpdk.org/rel/dpdk-<version>.tar.xz
> > +
> > +Extract the downloaded archive:
> > +
> > +.. code-block:: bash
> > +
> > +   tar -xvf dpdk-<version>.tar.gz
> > +
> > +Navigate to the DPDK directory:
> > +
> > +.. code-block:: bash
> > +
> > +   cd dpdk-<version>
> > +
> > +Building DPDK
> > +-------------
> > +
> > +Configure the build based on your needs, hardware, and environment.
> > +This might include setting specific flags or options. For example:
> “meson setup -Dbuildtype=debugoptimized build”. Then compile using “ninja”
> and install using “meson install”.
> > +
> > +.. code-block:: bash
> > +
> > +   ninja -C build
> > +   cd build
> > +   sudo ninja install
> > +   ldconfig
> > +
> > +For detailed information on Meson build configuration options specific
> to DPDK, see :ref:`DPDK Meson Build Configuration Options
> <dpdk_meson_build_options>`.
> > +
> > +Cross-Compilation Instructions for Different Architectures
> > +----------------------------------------------------------
> > +
> > +For instructions on building DPDK for ARM64, LoongArch, and RISC-V,
> refer to :ref:`cross_compile_dpdk`.
> > diff --git
> a/doc/guides/getting_started_guide/install_and_build/index.rst
> b/doc/guides/getting_started_guide/install_and_build/index.rst
> > new file mode 100644
> > index 0000000000..f4d8740fb6
> > --- /dev/null
> > +++ b/doc/guides/getting_started_guide/install_and_build/index.rst
> > @@ -0,0 +1,15 @@
> > +..  SPDX-License-Identifier: BSD-3-Clause
> > +    Copyright(c) 2010-2025 Intel Corporation.
> > +
> > +.. _install_and_build:
> > +
> > +Install and Build DPDK
> > +======================
> > +
> > +.. toctree::
> > +    :maxdepth: 2
> > +
> > +
> > +    installing_prebuilt_packages
> > +    building_from_sources
> > +    windows_install_build
> > \ No newline at end of file
> > diff --git
> a/doc/guides/getting_started_guide/install_and_build/installing_prebuilt_packages.rst
> b/doc/guides/getting_started_guide/install_and_build/installing_prebuilt_packages.rst
> > new file mode 100644
> > index 0000000000..3e395d65f1
> > --- /dev/null
> > +++
> b/doc/guides/getting_started_guide/install_and_build/installing_prebuilt_packages.rst
> > @@ -0,0 +1,54 @@
> > +..  SPDX-License-Identifier: BSD-3-Clause
> > +    Copyright(c) 2010-2025 Intel Corporation.
> > +
> > +.. _installing_prebuilt_packages:
> > +
> > +Installing Pre-built Packages
> > +=============================
> > +
> > +Pre-built packages provide a convenient way to install DPDK without the
> need to compile
> > +the source code manually. These packages are created and maintained by
> the DPDK
> > +community or OS vendors and are available for various operating systems
> and
> > +distributions.
> > +
> > +Available Distributions
> > +-----------------------
> > +
> > +Linux
> > +^^^^^
> > +
> > +Pre-built DPDK packages are available for several popular Linux
> distributions,
> > +including but not limited to:
> > +
> > +Alpine
> > +
> > +.. code-block:: bash
> > +
> > +   sudo apk add dpdk
> > +
> > +Debian and Ubuntu and derivatives
> > +
> > +.. code-block:: bash
> > +
> > +   sudo apt-get install dpdk
> > +
> > +Fedora and RedHat Enterprise Linux RHEL
> > +
> > +.. code-block:: bash
> > +
> > +   sudo dnf install dpdk
> > +
> > +openSUSE
> > +
> > +.. code-block:: bash
> > +
> > +   sudo zypper install dpdk
> > +
> > +FreeBSD
> > +^^^^^^^
> > +
> > +To install DPDK on FreeBSD, use the following command:
> > +
> > +.. code-block:: bash
> > +
> > +   sudo pkg install dpdk
> > \ No newline at end of file
> > diff --git
> a/doc/guides/getting_started_guide/install_and_build/windows_install_build.rst
> b/doc/guides/getting_started_guide/install_and_build/windows_install_build.rst
> > new file mode 100644
> > index 0000000000..ea0e131766
> > --- /dev/null
> > +++
> b/doc/guides/getting_started_guide/install_and_build/windows_install_build.rst
> > @@ -0,0 +1,93 @@
> > +..  SPDX-License-Identifier: BSD-3-Clause
> > +    Copyright(c) 2010-2015 Intel Corporation.
> > +
> > +.. _windows_install_build:
> > +
> > +Windows DPDK Build
> > +==================
> > +
> > +Before you begin the process of building DPDK on Windows,
> > +make sure your system meets all the necessary requirements as outlined
> below.
> > +
> > +Windows System Requirements
> > +---------------------------
> > +
> > +Building the DPDK and its applications on Windows requires one of the
> following
> > +environments:
> > +
> > +- The Clang-LLVM C compiler and Microsoft MSVC linker.
>
> would it be overly objectionable to state specific LLVM >= 16.0.x as
> required?
>
> > +- The MinGW-w64 toolchain (either native or cross).
> > +
> > +The Meson Build system is used to prepare the sources for compilation
> with the Ninja backend.
> > +
> > +Option 1: Clang-LLVM C Compiler and Microsoft MSVC Linker
> > +---------------------------------------------------------
> > +
> > +1. Install the Compiler: Download and install the clang compiler from
> the
> > +`LLVM website <http://releases.llvm.org/>`_.
> > +
> > +2. Install the Linker: Download and install the Build Tools for Visual
> Studio from the
> > +`Microsoft website <https://visualstudio.microsoft.com/downloads/>`_.
> > +When installing build tools, select the “Visual C++ build tools” option
> and make sure
> > +the Windows SDK is selected.
> > +
> > +Option 2: MinGW-w64 Toolchain
> > +-----------------------------
> > +
> > +1. On Linux (for cross-compilation): Install MinGW-w64 via a package
> manager.
> > +Version 4.0.4 for Ubuntu 16.04 cannot be used due to a MinGW-w64 bug.
> > +
> > +2. On Windows: Obtain the latest version installer from the
> > +`MinGW-w64 repository <https://mingw-w64.org/doku.php>`_.
> > +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.
> > +
> > +Install the Build System
> > +------------------------
> > +
> > +Download and install the build system from the
> > +`Meson website <
> http://mesonbuild.com/Getting-meson.html#installing-meson-and-ninja-with-the-msi-installer>`_.
>
> > +A good option to choose is the MSI installer for both meson and ninja
> together.
> > +Recommended version is either Meson 0.57.0 (baseline) or the latest
> release.
>
> s/Recommended/Required/ is 0.57.0 i do not believe their latest release
> works?
>
> > +
> > +Install the Backend
> > +-------------------
> > +
> > +If using Ninja, download and install the backend from the
> > +`Ninja website <https://ninja-build.org/>`_ or install along with the
> meson build
> > +system.
>
> i'm not sure we need to mention the installation of the ninja backend
> since you acquire it along with meson 0.57.0? anyone call me wrong on
> this or does windows use any other backend that we are aware? if not i
> think we can delete the 'install the backend' section entirely.
>
> > +
> > +Once you have verified that your system meets these requirements,
> > +you can proceed with the following steps to build DPDK.
> > +
> > +Build the Code
> > +--------------
> > +
> > +The build environment is setup to build the EAL and the helloworld
> example by default.
> > +To compile the examples, the flag -Dexamples is required.
> > +
> > +**Option 1. Native Build on Windows**
> > +
> > +When using Clang-LLVM, specifying the compiler might be required to
> complete the meson
> > +command::
> > +
> > +        set CC=clang
> > +
> > +When using MinGW-w64, it is sufficient to have toolchain executables in
> PATH::
> > +
> > +        set PATH=C:\MinGW\mingw64\bin;%PATH%
> > +
> > +To compile the examples::
> > +
> > +        cd C:\Users\me\dpdk
> > +        meson -Dexamples=helloworld build
>
>         meson setup -Dexamples=helloworld build
>
> > +        ninja -C build
>
>         meson compile -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::
> > +
> > +        meson --cross-file config/x86/cross-mingw -Dexamples=helloworld
> build
> > +        ninja -C build
> > \ No newline at end of file
> > --
> > 2.41.0.windows.1
>
  
Tyler Retzlaff Oct. 17, 2023, 1:37 p.m. UTC | #5
On Thu, Oct 12, 2023 at 02:08:46PM -0400, Dave Young wrote:
> Tyler, can you provide an example of the OS specific section/title you're
> thinking would make sense to use?

I think what is below is okay, but it probably just needs a Windows
section?

Right now there is, so just adding Windows into the list would be
enough? If I didn't understand the question ask again :)

  Required Tools
  --------------

  Linux

    Tools applicable to all distributions, maybe?

    Distribution 1

      Tools applicable to specific distribution 1.

    Distribution 2

      Tools applicable to specific distribution 2.

  FreeBSD

    Tools applicable for FreeBSD

    .. Maybe there are per-release or per toolchain speicic things, maybe not?

  Windows

    Tools applicable to Windows

    .. Probably per-toolchain specific things.

I might get a brick thrown at me but I might also suggest sorting by OS
name? I know Linux is important, regardless Windows ends up last either
way so it's just a suggestion.

Hope this is what you were asking.

> 
> Can you confirm the following?
> 
> 1. The Clang-LLVM C compiler (version >= 16.0.x)
> 2. Meson Build system (Required version: 0.57.0)
> 3. Updated commands:

Yes, this is what I use today. I wonder if we can provide links?
But also MinGW is also used as an alternative to LLVM.

> 
> # Previous Command
> meson -Dexamples=helloworld build
> # Updated Command
> meson setup -Dexamples=helloworld build

Yes, updated command is what I use currently.

> 
> # Previous Command
> ninja -C build
> # Updated Command
> meson compile -C build

Yes, updated command is what I use currently.

> 
> 4. Since Ninja is bundled with Meson 0.57.0, a separate section for its
> installation may not be necessary. Is this correct?

Yes, I believe this is the case. I have never had to separately install
ninja or another backend.

Once all of your changes have settled I plan to add some additional
detail related to MSVC as well but for the moment it is *not* supported
usefully so we don't need to mention it yet.

> 
> Thanks!
> David Young
> Professional Copywriter/Technical Writer
> Young Copy
> +1 (678) 500-9550
> https://www.youngcopy.com
> 
> 
> On Mon, Sep 25, 2023 at 12:05 PM Tyler Retzlaff <
> roretzla@linux.microsoft.com> wrote:
> 
> > On Wed, Sep 20, 2023 at 11:48:06AM -0400, David Young wrote:
> > > ---
> > >  .../building_from_sources.rst                 | 108 ++++++++++++++++++
> > >  .../install_and_build/index.rst               |  15 +++
> > >  .../installing_prebuilt_packages.rst          |  54 +++++++++
> > >  .../windows_install_build.rst                 |  93 +++++++++++++++
> > >  4 files changed, 270 insertions(+)
> > >  create mode 100644
> > doc/guides/getting_started_guide/install_and_build/building_from_sources.rst
> > >  create mode 100644
> > doc/guides/getting_started_guide/install_and_build/index.rst
> > >  create mode 100644
> > doc/guides/getting_started_guide/install_and_build/installing_prebuilt_packages.rst
> > >  create mode 100644
> > doc/guides/getting_started_guide/install_and_build/windows_install_build.rst
> > >
> > > diff --git
> > a/doc/guides/getting_started_guide/install_and_build/building_from_sources.rst
> > b/doc/guides/getting_started_guide/install_and_build/building_from_sources.rst
> > > new file mode 100644
> > > index 0000000000..e4ee8e436d
> > > --- /dev/null
> > > +++
> > b/doc/guides/getting_started_guide/install_and_build/building_from_sources.rst
> > > @@ -0,0 +1,108 @@
> > > +..  SPDX-License-Identifier: BSD-3-Clause
> > > +    Copyright(c) 2010-2025 Intel Corporation.
> > > +
> > > +.. _building_from_sources:
> > > +
> > > +Building and Installing DPDK from Sources
> > > +=========================================
> > > +
> > > +This chapter provides a comprehensive guide for building DPDK from
> > sources on both
> > > +Linux and FreeBSD platforms. It covers the necessary steps,
> > prerequisites,
> > > +and considerations for different architectures and compilers.
> >
> > when the title of the section is general it shouldn't mention a specific
> > OS in the content. if the content is OS specific then the parent section
> > or the title of the section should identify to which OS it applies. in
> > general it would be nice to convey that windows is an equally supported
> > platform to the other operating systems.
> >
> > i know it's a bit of a dance i hope you can help interpret what i'm
> > trying to convey.
> >
> > > +
> > > +Required Tools
> > > +--------------
> > > +
> > > +To build DPDK, you'll need the following tools:
> > > +
> > > +- A C compiler like ``gcc`` (version 5+) or ``clang`` (version 3.6+)
> > > +- ``pkg-config`` or ``pkgconf``
> > > +- Python 3.6 or later
> > > +- ``meson`` (version 0.53.2+) and ``ninja``
> > > +- ``pyelftools`` (version 0.22+)
> > > +
> > > +Here's how to install them:
> > > +
> > > +Linux
> > > +^^^^^
> > > +
> > > +Alpine
> > > +
> > > +.. code-block:: bash
> > > +
> > > +   sudo apk add alpine-sdk bsd-compat-headers
> > > +   pip install meson ninja
> > > +
> > > +Debian and Ubuntu and derivatives
> > > +
> > > +.. code-block:: bash
> > > +
> > > +   sudo apt install build-essential
> > > +   pip install meson ninja
> > > +
> > > +Fedora and RedHat Enterprise Linux RHEL
> > > +
> > > +.. code-block:: bash
> > > +
> > > +   sudo dnf groupinstall "Development Tools"
> > > +   pip install meson ninja
> > > +
> > > +openSUSE
> > > +
> > > +.. code-block:: bash
> > > +
> > > +   sudo zypper install -t pattern devel_basis python3-pyelftools
> > > +   pip install meson ninja
> > > +
> > > +FreeBSD
> > > +^^^^^^^
> > > +
> > > +FreeBSD (as root)
> > > +
> > > +.. code-block:: bash
> > > +
> > > +   pkg install meson pkgconf py38-pyelftools
> > > +
> > > +Note: If you're using FreeBSD, you'll also need kernel sources. Make
> > sure they're included during the FreeBSD installation.
> > > +
> > > +Getting the DPDK Source
> > > +-----------------------
> > > +
> > > +Download the DPDK source code from the official repository
> > > +``https://fast.dpdk.org/rel/`` <https://fast.dpdk.org/rel/>.
> > > +
> > > +Use ``wget`` to grab the DPDK version::
> > > +
> > > +        wget https://fast.dpdk.org/rel/dpdk-<version>.tar.xz
> > > +
> > > +Extract the downloaded archive:
> > > +
> > > +.. code-block:: bash
> > > +
> > > +   tar -xvf dpdk-<version>.tar.gz
> > > +
> > > +Navigate to the DPDK directory:
> > > +
> > > +.. code-block:: bash
> > > +
> > > +   cd dpdk-<version>
> > > +
> > > +Building DPDK
> > > +-------------
> > > +
> > > +Configure the build based on your needs, hardware, and environment.
> > > +This might include setting specific flags or options. For example:
> > “meson setup -Dbuildtype=debugoptimized build”. Then compile using “ninja”
> > and install using “meson install”.
> > > +
> > > +.. code-block:: bash
> > > +
> > > +   ninja -C build
> > > +   cd build
> > > +   sudo ninja install
> > > +   ldconfig
> > > +
> > > +For detailed information on Meson build configuration options specific
> > to DPDK, see :ref:`DPDK Meson Build Configuration Options
> > <dpdk_meson_build_options>`.
> > > +
> > > +Cross-Compilation Instructions for Different Architectures
> > > +----------------------------------------------------------
> > > +
> > > +For instructions on building DPDK for ARM64, LoongArch, and RISC-V,
> > refer to :ref:`cross_compile_dpdk`.
> > > diff --git
> > a/doc/guides/getting_started_guide/install_and_build/index.rst
> > b/doc/guides/getting_started_guide/install_and_build/index.rst
> > > new file mode 100644
> > > index 0000000000..f4d8740fb6
> > > --- /dev/null
> > > +++ b/doc/guides/getting_started_guide/install_and_build/index.rst
> > > @@ -0,0 +1,15 @@
> > > +..  SPDX-License-Identifier: BSD-3-Clause
> > > +    Copyright(c) 2010-2025 Intel Corporation.
> > > +
> > > +.. _install_and_build:
> > > +
> > > +Install and Build DPDK
> > > +======================
> > > +
> > > +.. toctree::
> > > +    :maxdepth: 2
> > > +
> > > +
> > > +    installing_prebuilt_packages
> > > +    building_from_sources
> > > +    windows_install_build
> > > \ No newline at end of file
> > > diff --git
> > a/doc/guides/getting_started_guide/install_and_build/installing_prebuilt_packages.rst
> > b/doc/guides/getting_started_guide/install_and_build/installing_prebuilt_packages.rst
> > > new file mode 100644
> > > index 0000000000..3e395d65f1
> > > --- /dev/null
> > > +++
> > b/doc/guides/getting_started_guide/install_and_build/installing_prebuilt_packages.rst
> > > @@ -0,0 +1,54 @@
> > > +..  SPDX-License-Identifier: BSD-3-Clause
> > > +    Copyright(c) 2010-2025 Intel Corporation.
> > > +
> > > +.. _installing_prebuilt_packages:
> > > +
> > > +Installing Pre-built Packages
> > > +=============================
> > > +
> > > +Pre-built packages provide a convenient way to install DPDK without the
> > need to compile
> > > +the source code manually. These packages are created and maintained by
> > the DPDK
> > > +community or OS vendors and are available for various operating systems
> > and
> > > +distributions.
> > > +
> > > +Available Distributions
> > > +-----------------------
> > > +
> > > +Linux
> > > +^^^^^
> > > +
> > > +Pre-built DPDK packages are available for several popular Linux
> > distributions,
> > > +including but not limited to:
> > > +
> > > +Alpine
> > > +
> > > +.. code-block:: bash
> > > +
> > > +   sudo apk add dpdk
> > > +
> > > +Debian and Ubuntu and derivatives
> > > +
> > > +.. code-block:: bash
> > > +
> > > +   sudo apt-get install dpdk
> > > +
> > > +Fedora and RedHat Enterprise Linux RHEL
> > > +
> > > +.. code-block:: bash
> > > +
> > > +   sudo dnf install dpdk
> > > +
> > > +openSUSE
> > > +
> > > +.. code-block:: bash
> > > +
> > > +   sudo zypper install dpdk
> > > +
> > > +FreeBSD
> > > +^^^^^^^
> > > +
> > > +To install DPDK on FreeBSD, use the following command:
> > > +
> > > +.. code-block:: bash
> > > +
> > > +   sudo pkg install dpdk
> > > \ No newline at end of file
> > > diff --git
> > a/doc/guides/getting_started_guide/install_and_build/windows_install_build.rst
> > b/doc/guides/getting_started_guide/install_and_build/windows_install_build.rst
> > > new file mode 100644
> > > index 0000000000..ea0e131766
> > > --- /dev/null
> > > +++
> > b/doc/guides/getting_started_guide/install_and_build/windows_install_build.rst
> > > @@ -0,0 +1,93 @@
> > > +..  SPDX-License-Identifier: BSD-3-Clause
> > > +    Copyright(c) 2010-2015 Intel Corporation.
> > > +
> > > +.. _windows_install_build:
> > > +
> > > +Windows DPDK Build
> > > +==================
> > > +
> > > +Before you begin the process of building DPDK on Windows,
> > > +make sure your system meets all the necessary requirements as outlined
> > below.
> > > +
> > > +Windows System Requirements
> > > +---------------------------
> > > +
> > > +Building the DPDK and its applications on Windows requires one of the
> > following
> > > +environments:
> > > +
> > > +- The Clang-LLVM C compiler and Microsoft MSVC linker.
> >
> > would it be overly objectionable to state specific LLVM >= 16.0.x as
> > required?
> >
> > > +- The MinGW-w64 toolchain (either native or cross).
> > > +
> > > +The Meson Build system is used to prepare the sources for compilation
> > with the Ninja backend.
> > > +
> > > +Option 1: Clang-LLVM C Compiler and Microsoft MSVC Linker
> > > +---------------------------------------------------------
> > > +
> > > +1. Install the Compiler: Download and install the clang compiler from
> > the
> > > +`LLVM website <http://releases.llvm.org/>`_.
> > > +
> > > +2. Install the Linker: Download and install the Build Tools for Visual
> > Studio from the
> > > +`Microsoft website <https://visualstudio.microsoft.com/downloads/>`_.
> > > +When installing build tools, select the “Visual C++ build tools” option
> > and make sure
> > > +the Windows SDK is selected.
> > > +
> > > +Option 2: MinGW-w64 Toolchain
> > > +-----------------------------
> > > +
> > > +1. On Linux (for cross-compilation): Install MinGW-w64 via a package
> > manager.
> > > +Version 4.0.4 for Ubuntu 16.04 cannot be used due to a MinGW-w64 bug.
> > > +
> > > +2. On Windows: Obtain the latest version installer from the
> > > +`MinGW-w64 repository <https://mingw-w64.org/doku.php>`_.
> > > +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.
> > > +
> > > +Install the Build System
> > > +------------------------
> > > +
> > > +Download and install the build system from the
> > > +`Meson website <
> > http://mesonbuild.com/Getting-meson.html#installing-meson-and-ninja-with-the-msi-installer>`_.
> >
> > > +A good option to choose is the MSI installer for both meson and ninja
> > together.
> > > +Recommended version is either Meson 0.57.0 (baseline) or the latest
> > release.
> >
> > s/Recommended/Required/ is 0.57.0 i do not believe their latest release
> > works?
> >
> > > +
> > > +Install the Backend
> > > +-------------------
> > > +
> > > +If using Ninja, download and install the backend from the
> > > +`Ninja website <https://ninja-build.org/>`_ or install along with the
> > meson build
> > > +system.
> >
> > i'm not sure we need to mention the installation of the ninja backend
> > since you acquire it along with meson 0.57.0? anyone call me wrong on
> > this or does windows use any other backend that we are aware? if not i
> > think we can delete the 'install the backend' section entirely.
> >
> > > +
> > > +Once you have verified that your system meets these requirements,
> > > +you can proceed with the following steps to build DPDK.
> > > +
> > > +Build the Code
> > > +--------------
> > > +
> > > +The build environment is setup to build the EAL and the helloworld
> > example by default.
> > > +To compile the examples, the flag -Dexamples is required.
> > > +
> > > +**Option 1. Native Build on Windows**
> > > +
> > > +When using Clang-LLVM, specifying the compiler might be required to
> > complete the meson
> > > +command::
> > > +
> > > +        set CC=clang
> > > +
> > > +When using MinGW-w64, it is sufficient to have toolchain executables in
> > PATH::
> > > +
> > > +        set PATH=C:\MinGW\mingw64\bin;%PATH%
> > > +
> > > +To compile the examples::
> > > +
> > > +        cd C:\Users\me\dpdk
> > > +        meson -Dexamples=helloworld build
> >
> >         meson setup -Dexamples=helloworld build
> >
> > > +        ninja -C build
> >
> >         meson compile -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::
> > > +
> > > +        meson --cross-file config/x86/cross-mingw -Dexamples=helloworld
> > build
> > > +        ninja -C build
> > > \ No newline at end of file
> > > --
> > > 2.41.0.windows.1
> >
  

Patch

diff --git a/doc/guides/getting_started_guide/install_and_build/building_from_sources.rst b/doc/guides/getting_started_guide/install_and_build/building_from_sources.rst
new file mode 100644
index 0000000000..e4ee8e436d
--- /dev/null
+++ b/doc/guides/getting_started_guide/install_and_build/building_from_sources.rst
@@ -0,0 +1,108 @@ 
+..  SPDX-License-Identifier: BSD-3-Clause
+    Copyright(c) 2010-2025 Intel Corporation.
+
+.. _building_from_sources:
+
+Building and Installing DPDK from Sources
+=========================================
+
+This chapter provides a comprehensive guide for building DPDK from sources on both
+Linux and FreeBSD platforms. It covers the necessary steps, prerequisites, 
+and considerations for different architectures and compilers.
+
+Required Tools
+--------------
+
+To build DPDK, you'll need the following tools:
+
+- A C compiler like ``gcc`` (version 5+) or ``clang`` (version 3.6+)
+- ``pkg-config`` or ``pkgconf``
+- Python 3.6 or later
+- ``meson`` (version 0.53.2+) and ``ninja``
+- ``pyelftools`` (version 0.22+)
+
+Here's how to install them:
+
+Linux
+^^^^^
+
+Alpine
+
+.. code-block:: bash
+
+   sudo apk add alpine-sdk bsd-compat-headers
+   pip install meson ninja
+
+Debian and Ubuntu and derivatives
+
+.. code-block:: bash
+
+   sudo apt install build-essential
+   pip install meson ninja
+
+Fedora and RedHat Enterprise Linux RHEL
+
+.. code-block:: bash
+
+   sudo dnf groupinstall "Development Tools"
+   pip install meson ninja
+
+openSUSE
+
+.. code-block:: bash
+
+   sudo zypper install -t pattern devel_basis python3-pyelftools
+   pip install meson ninja
+
+FreeBSD
+^^^^^^^
+
+FreeBSD (as root)
+
+.. code-block:: bash
+
+   pkg install meson pkgconf py38-pyelftools
+
+Note: If you're using FreeBSD, you'll also need kernel sources. Make sure they're included during the FreeBSD installation.
+
+Getting the DPDK Source
+-----------------------
+
+Download the DPDK source code from the official repository 
+``https://fast.dpdk.org/rel/``.
+
+Use ``wget`` to grab the DPDK version::
+
+        wget https://fast.dpdk.org/rel/dpdk-<version>.tar.xz
+
+Extract the downloaded archive:
+
+.. code-block:: bash
+
+   tar -xvf dpdk-<version>.tar.gz
+
+Navigate to the DPDK directory:
+
+.. code-block:: bash
+
+   cd dpdk-<version>
+
+Building DPDK
+-------------
+
+Configure the build based on your needs, hardware, and environment. 
+This might include setting specific flags or options. For example: “meson setup -Dbuildtype=debugoptimized build”. Then compile using “ninja” and install using “meson install”.
+
+.. code-block:: bash
+
+   ninja -C build
+   cd build
+   sudo ninja install
+   ldconfig
+
+For detailed information on Meson build configuration options specific to DPDK, see :ref:`DPDK Meson Build Configuration Options <dpdk_meson_build_options>`.
+
+Cross-Compilation Instructions for Different Architectures
+----------------------------------------------------------
+
+For instructions on building DPDK for ARM64, LoongArch, and RISC-V, refer to :ref:`cross_compile_dpdk`.
diff --git a/doc/guides/getting_started_guide/install_and_build/index.rst b/doc/guides/getting_started_guide/install_and_build/index.rst
new file mode 100644
index 0000000000..f4d8740fb6
--- /dev/null
+++ b/doc/guides/getting_started_guide/install_and_build/index.rst
@@ -0,0 +1,15 @@ 
+..  SPDX-License-Identifier: BSD-3-Clause
+    Copyright(c) 2010-2025 Intel Corporation.
+
+.. _install_and_build:
+
+Install and Build DPDK
+======================
+
+.. toctree::
+    :maxdepth: 2
+
+    
+    installing_prebuilt_packages
+    building_from_sources
+    windows_install_build
\ No newline at end of file
diff --git a/doc/guides/getting_started_guide/install_and_build/installing_prebuilt_packages.rst b/doc/guides/getting_started_guide/install_and_build/installing_prebuilt_packages.rst
new file mode 100644
index 0000000000..3e395d65f1
--- /dev/null
+++ b/doc/guides/getting_started_guide/install_and_build/installing_prebuilt_packages.rst
@@ -0,0 +1,54 @@ 
+..  SPDX-License-Identifier: BSD-3-Clause
+    Copyright(c) 2010-2025 Intel Corporation.
+
+.. _installing_prebuilt_packages:
+
+Installing Pre-built Packages
+=============================
+
+Pre-built packages provide a convenient way to install DPDK without the need to compile
+the source code manually. These packages are created and maintained by the DPDK
+community or OS vendors and are available for various operating systems and
+distributions.
+
+Available Distributions
+-----------------------
+
+Linux
+^^^^^
+
+Pre-built DPDK packages are available for several popular Linux distributions,
+including but not limited to:
+
+Alpine
+
+.. code-block:: bash
+
+   sudo apk add dpdk
+
+Debian and Ubuntu and derivatives
+
+.. code-block:: bash
+
+   sudo apt-get install dpdk
+
+Fedora and RedHat Enterprise Linux RHEL
+
+.. code-block:: bash
+
+   sudo dnf install dpdk
+
+openSUSE
+
+.. code-block:: bash
+
+   sudo zypper install dpdk
+
+FreeBSD
+^^^^^^^
+
+To install DPDK on FreeBSD, use the following command:
+
+.. code-block:: bash
+
+   sudo pkg install dpdk
\ No newline at end of file
diff --git a/doc/guides/getting_started_guide/install_and_build/windows_install_build.rst b/doc/guides/getting_started_guide/install_and_build/windows_install_build.rst
new file mode 100644
index 0000000000..ea0e131766
--- /dev/null
+++ b/doc/guides/getting_started_guide/install_and_build/windows_install_build.rst
@@ -0,0 +1,93 @@ 
+..  SPDX-License-Identifier: BSD-3-Clause
+    Copyright(c) 2010-2015 Intel Corporation.
+
+.. _windows_install_build:
+
+Windows DPDK Build
+==================
+
+Before you begin the process of building DPDK on Windows, 
+make sure your system meets all the necessary requirements as outlined below.
+
+Windows System Requirements
+---------------------------
+
+Building the DPDK and its applications on Windows 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.
+
+Option 1: Clang-LLVM C Compiler and Microsoft MSVC Linker
+---------------------------------------------------------
+
+1. Install the Compiler: Download and install the clang compiler from the 
+`LLVM website <http://releases.llvm.org/>`_.
+
+2. Install the Linker: Download and install the Build Tools for Visual Studio from the
+`Microsoft website <https://visualstudio.microsoft.com/downloads/>`_. 
+When installing build tools, select the “Visual C++ build tools” option and make sure
+the Windows SDK is selected.
+
+Option 2: MinGW-w64 Toolchain
+-----------------------------
+
+1. On Linux (for cross-compilation): Install MinGW-w64 via a package manager. 
+Version 4.0.4 for Ubuntu 16.04 cannot be used due to a MinGW-w64 bug.
+
+2. On Windows: Obtain the latest version installer from the
+`MinGW-w64 repository <https://mingw-w64.org/doku.php>`_. 
+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.
+
+Install the Build System
+------------------------
+
+Download and install the build system from the
+`Meson website <http://mesonbuild.com/Getting-meson.html#installing-meson-and-ninja-with-the-msi-installer>`_. 
+A good option to choose is the MSI installer for both meson and ninja together.
+Recommended version is either Meson 0.57.0 (baseline) or the latest release.
+
+Install the Backend
+-------------------
+
+If using Ninja, download and install the backend from the
+`Ninja website <https://ninja-build.org/>`_ or install along with the meson build
+system. 
+
+Once you have verified that your system meets these requirements, 
+you can proceed with the following steps to build DPDK.
+
+Build the Code
+--------------
+
+The build environment is setup to build the EAL and the helloworld example by default.
+To compile the examples, the flag -Dexamples is required.
+
+**Option 1. Native Build on Windows**
+
+When using Clang-LLVM, specifying the compiler might be required to complete the meson
+command::
+
+        set CC=clang
+
+When using MinGW-w64, it is sufficient to have toolchain executables in PATH::
+
+        set PATH=C:\MinGW\mingw64\bin;%PATH%
+
+To compile the examples::
+
+        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::
+
+        meson --cross-file config/x86/cross-mingw -Dexamples=helloworld build
+        ninja -C build
\ No newline at end of file