From patchwork Thu Nov 23 01:26:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Dave Young X-Patchwork-Id: 134543 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9A7984339F; Thu, 23 Nov 2023 02:27:07 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A4A7542D78; Thu, 23 Nov 2023 02:27:01 +0100 (CET) Received: from mail-yw1-f180.google.com (mail-yw1-f180.google.com [209.85.128.180]) by mails.dpdk.org (Postfix) with ESMTP id 8A8AD42D55 for ; Thu, 23 Nov 2023 02:26:57 +0100 (CET) Received: by mail-yw1-f180.google.com with SMTP id 00721157ae682-5bbfc735572so758887b3.0 for ; Wed, 22 Nov 2023 17:26:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=youngcopy-com.20230601.gappssmtp.com; s=20230601; t=1700702816; x=1701307616; darn=dpdk.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=C1UUsNdXPdQgjdfOSf0ecgxqsoOeMVfdZrRmWPA7nkw=; b=PH1EGJzmBgKk69aczNvjNgB9L80kD5vwqDRCzQBGWbDcWgSmpPR2w2zF3kATxcvajh gR89GtfjiglXWgwREBVWpa6d+yVkBbYTGAE1yCXzlTp3ncN9Nff6WHIUr+UZ7VZ5HRoK PyUzTPitHxVTuWApNY4w+NXKKuC4wlcqEmarNdUyxh9umuX+ex6MuOUrgLQf3VH1B2NC tl4tF60Jk4p2T5YiS/LEMxQ2/mo1Zt2mYCY5z+zqW4q4pecQ5/2hT0Wb3nBEYh5F7nhC cvJHSVi/ba3K648/DJpIW3Gdr6/djL1TdpYCHKUXgXHyaBHzBRNrR1TOMyRDUeazUqi2 6uPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700702816; x=1701307616; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=C1UUsNdXPdQgjdfOSf0ecgxqsoOeMVfdZrRmWPA7nkw=; b=cGntWECgU7KUvzEIxM/0TtIx09sEGG13hL+foNuZZNe2CfGqxGUJvR3sbeeo++IOOh BJsJtAxo5XJVvIsskHsjzjC4NZqiltcRh8K3i+XqXAfQ1h05s4ZjNxwf7Pn0MHvajrez pixilMiJOUQFlwVXTawGnawCyD4Cs81THJNJv7s7GvtUGebRkcRjD48fHUO8SDXQ1gI+ UseZOKP2q17U88etdIv0RyFV4Ydnjx5uIkO25G8/vVjvHgZCcX09gMEsRxaw6QgNe+rP zaYXvmtreQPuuX/r83+KBC893IU4S5BcQBgFZ5AgdahiMPGvCa/5WrmF0w/frTIiMOj7 /fAw== X-Gm-Message-State: AOJu0YwutXRJ3IGgA1UPPVK66K9yTicbXykZ6K1/TLvXQ0/UsoKDt4r5 LzQtW3i/ZjbGO5ML4I2AbT4BrJ83lAhynTbhM50= X-Google-Smtp-Source: AGHT+IHut0VVWriLBZnfWEJ0HkDluNfqasmJvU8BfKQj54axnPXuwtSjxP2WHyfliMXYp94YFdsa0w== X-Received: by 2002:a05:690c:2c06:b0:5cc:382c:bc78 with SMTP id eo6-20020a05690c2c0600b005cc382cbc78mr2789712ywb.2.1700702815954; Wed, 22 Nov 2023 17:26:55 -0800 (PST) Received: from localhost.localdomain ([2600:1700:20c0:a560:40f7:d2c:d53a:d071]) by smtp.gmail.com with ESMTPSA id j184-20020a0dc7c1000000b005a815346d95sm89832ywd.71.2023.11.22.17.26.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Nov 2023 17:26:55 -0800 (PST) From: David Young To: dev@dpdk.org Cc: Bruce Richardson , Aaron Conole , David Young Subject: [PATCH v4 2/6] Section 2: Install and Build DPDK Date: Wed, 22 Nov 2023 20:26:23 -0500 Message-ID: <20231123012633.2005-3-dave@youngcopy.com> X-Mailer: git-send-email 2.41.0.windows.1 In-Reply-To: <20231123012633.2005-1-dave@youngcopy.com> References: <20231103040202.2849-1-dave@youngcopy.com> <20231123012633.2005-1-dave@youngcopy.com> MIME-Version: 1.0 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 -Common Tools for All Distributions: The common tools installation instructions for all Linux distributions and FreeBSD have been removed. Instead, the tools are now listed under each specific distribution. -Linux Distributions: The Linux distributions have been restructured to include Alpine, Debian, Ubuntu, Fedora, RedHat Enterprise Linux (RHEL), and openSUSE. Each distribution now has its own section with specific installation commands. -Windows: The Windows section remains largely unchanged, but the instructions for navigating to the directory where the DPDK source code is located have been updated. -Building DPDK: The commands for setting up and compiling with the Meson build system have been updated for both Linux, FreeBSD, and Windows. -Cross-Compilation Instructions: The cross-compilation instructions for different architectures were left unchanged. -Formatting Changes: There are several formatting changes throughout the document, including the addition of notes and changes to the headers for better readability and organization. --- .../building_from_sources.rst | 180 ++++++++++++++++++ .../install_and_build/index.rst | 14 ++ .../installing_prebuilt_packages.rst | 54 ++++++ 3 files changed, 248 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 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..ab54521ac5 --- /dev/null +++ b/doc/guides/getting_started_guide/install_and_build/building_from_sources.rst @@ -0,0 +1,180 @@ +.. 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. +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.57.0) and ``ninja`` +- ``pyelftools`` (version 0.22+) + +Platform-Specific Tool Installation +----------------------------------- + +Linux +^^^^^ + +Alpine +"""""" + +.. code-block:: bash + + sudo apk add alpine-sdk bsd-compat-headers gcc pkg-config python3 meson ninja pyelftools numactl-dev + +Debian, Ubuntu, and derivatives +""""""""""""""""""""""""""""""" + +.. code-block:: bash + + sudo apt install build-essential gcc pkg-config python3 meson ninja pyelftools libnuma-dev + +Fedora and RedHat Enterprise Linux (RHEL) +""""""""""""""""""""""""""""""""""""""""" + +.. code-block:: bash + + sudo dnf groupinstall "Development Tools" + sudo dnf install gcc pkg-config python3 meson ninja python3-pyelftools numactl-devel + +openSUSE +"""""""" + +.. code-block:: bash + + sudo zypper install -t pattern devel_basis + sudo zypper install gcc pkg-config python3 meson ninja python3-pyelftools libnuma-devel + +FreeBSD +^^^^^^^ + +.. code-block:: bash + + pkg install pkgconf python3 meson ninja pyelftools + +.. note:: + + If you're using FreeBSD, make sure kernel sources are included during the FreeBSD installation. + +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. + +.. _clang_llvm: + +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. + +.. _mingw_w64_toolchain: + +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 `_. +A good option to choose is the MSI installer for both meson and ninja together. +Required version is Meson 0.57.x (baseline). + +Getting the DPDK Source +----------------------- + +Linux and FreeBSD +^^^^^^^^^^^^^^^^^ + +.. code-block:: bash + + wget https://fast.dpdk.org/rel/dpdk-20.11.tar.xz + tar -xJf dpdk-20.11.tar.xz + cd dpdk-20.11 + +Windows +^^^^^^^ + +Download the DPDK source code from `DPDK's official website `_ or clone the repository using a Git client. Extract the downloaded archive, if applicable, and navigate to the DPDK directory. + +Navigate to the directory where the DPDK source code is located: + +.. code-block:: bash + + cd C:\path\to\dpdk-20.11 + +Building DPDK +------------- + +.. note:: + + In all examples below, "build" is used as the name of the build directory. It is not part of the command itself. + +Linux and FreeBSD +^^^^^^^^^^^^^^^^^ + +.. code-block:: bash + + meson setup build + meson compile -C build + +Windows +^^^^^^^ + +**Option 1: Using Clang-LLVM** + +.. code-block:: bash + + set CC=clang + meson setup -Dexamples=helloworld build + meson compile -C build + +**Option 2: Using MinGW-w64** + +.. code-block:: bash + + set PATH=C:\MinGW\mingw64\bin;%PATH% + meson setup -Dexamples=helloworld build + meson compile -C build + +.. note:: + + 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..48e438282f --- /dev/null +++ b/doc/guides/getting_started_guide/install_and_build/index.rst @@ -0,0 +1,14 @@ +.. 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 \ 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