From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id D706C4318A; Tue, 17 Oct 2023 15:37:53 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 86E5F40273; Tue, 17 Oct 2023 15:37:53 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id EE3EA40270 for ; Tue, 17 Oct 2023 15:37:51 +0200 (CEST) Received: by linux.microsoft.com (Postfix, from userid 1086) id 4589120B74C0; Tue, 17 Oct 2023 06:37:51 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 4589120B74C0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1697549871; bh=EyNeFEWv35flQS1GMD9fVQdTNXI27N7pg12aV+bGc5s=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=L8DYVqNZ/BMPUimQiTmQrDnRlsAxewb/L9FRcCrkeMN8/T/zwraU4Rk4GROEUXe4z hR4P6o/OIU/oH6dahz+sHapU2cImpyoUEAtjfwgtQsYxgX7GWnE+VqFTe17XBVOMwW WtgY4PFKnCCryFKRagFKoDS2a4M8mbvDfIwbSRc4= Date: Tue, 17 Oct 2023 06:37:51 -0700 From: Tyler Retzlaff To: Dave Young Cc: dev@dpdk.org, Bruce Richardson Subject: Re: [PATCH 2/6] Section 2: Install and Build DPDK Message-ID: <20231017133751.GA10072@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net> References: <20230920154817.617-1-dave@youngcopy.com> <20230920154817.617-3-dave@youngcopy.com> <20230925160516.GA28993@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org 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/`` . > > > + > > > +Use ``wget`` to grab the DPDK version:: > > > + > > > + wget https://fast.dpdk.org/rel/dpdk-.tar.xz > > > + > > > +Extract the downloaded archive: > > > + > > > +.. code-block:: bash > > > + > > > + tar -xvf dpdk-.tar.gz > > > + > > > +Navigate to the DPDK directory: > > > + > > > +.. code-block:: bash > > > + > > > + cd dpdk- > > > + > > > +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 > > `. > > > + > > > +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 `_. > > > + > > > +2. Install the Linker: Download and install the Build Tools for Visual > > Studio from the > > > +`Microsoft website `_. > > > +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 `_. > > > +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 `_ 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 > >