From patchwork Fri Nov 3 04:01:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Dave Young X-Patchwork-Id: 133800 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 4853F43274; Fri, 3 Nov 2023 05:02:33 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 76742427E0; Fri, 3 Nov 2023 05:02:24 +0100 (CET) Received: from mail-yb1-f171.google.com (mail-yb1-f171.google.com [209.85.219.171]) by mails.dpdk.org (Postfix) with ESMTP id DB5A840EDC for ; Fri, 3 Nov 2023 05:02:22 +0100 (CET) Received: by mail-yb1-f171.google.com with SMTP id 3f1490d57ef6-d9fdc712b8fso411004276.1 for ; Thu, 02 Nov 2023 21:02:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=youngcopy-com.20230601.gappssmtp.com; s=20230601; t=1698984141; x=1699588941; 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=T0s5PJymRqJSHAfx7IZl3Fx9/NsUdw56W3yoatr8kUM=; b=Nr2dJ12XhlKnpIvhvQyUQQSCU1Q/kUTCcCW1uV9L9i1j8n6NtxRuryAUjaegv5amQh OH1K3b2iQp55/cdJAEj6/Ufny4FLmiVAX/f6JGPC6iJoKbePr/TyA9hp79SA8YJm1Ihy 4SFfOPeyV9Hi/ouSuljtvXlkbyV8GduLqs0pInLFynf4eLqpgsnGZOebuPDAbIbT8DEd FLyTRjkfyPHlVGWwxESfL+fnMMyMPX3x4MsiREhX7r6v7lGM7nzz5Fd0o4ynkMv6ciC0 mbcmZK1s0mx1/1lMD3uX5vh4zekk9hddR+Y5mq+XnH2+lZNZu+4vbk8SDQ5iIGwlXiNe +1hA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698984141; x=1699588941; 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=T0s5PJymRqJSHAfx7IZl3Fx9/NsUdw56W3yoatr8kUM=; b=uaXKyWgcYFv/Vq6oJyNySgqqSVc1ykY2Gk3ZFSNc1XndIY0V9O6Jjnh1NB6P3siorp qZuTacnQVMSPYAv1P0IZf3cbvX72g8o3BvRtG3kdBW0VsIH7krPrBrgndyluuiD/NXN5 U1pz2n0PrvkaejYwKO/Kbjee53LLzadvRx7uZBRo7iwZh0gcYg3Hg27d8zIxIxbaBREh a5GBn14BMMtFH3f6PARCGQ76O/6HCrGxy8P6QvoPV0HDcas7oKOPJItxw3dA6U8VpD01 CwuORp4p8srBWfrcYqtf6lA090RsvGtUFEMatj4FeqjlCpClSZnkwAh+a2Cx+ZtSEaIR BmRA== X-Gm-Message-State: AOJu0Yw1OZ0kXWJg3wEMZcQXSd1uhpvCEnCkk9g11UCA4ow8MJnrAZRF ZdpzRe0b0qOwnTs8Pi26uouynedlgfnDyFOTi0U= X-Google-Smtp-Source: AGHT+IHjeyRqgTJR6qC82XJXu3ueFtYBCMSAZpk2Q3utzItwrDTORQNxbPKEubOu0i8rNzoK6uv69w== X-Received: by 2002:a05:690c:4803:b0:5b3:1c41:733f with SMTP id hc3-20020a05690c480300b005b31c41733fmr10236897ywb.5.1698984141089; Thu, 02 Nov 2023 21:02:21 -0700 (PDT) Received: from localhost.localdomain ([2600:1700:20c0:a560:c076:581e:323d:c06e]) by smtp.gmail.com with ESMTPSA id x64-20020a817c43000000b0059b1f6d1959sm493958ywc.101.2023.11.02.21.02.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Nov 2023 21:02:19 -0700 (PDT) From: David Young To: dev@dpdk.org Cc: Bruce Richardson , Aaron Conole , David Young Subject: [PATCH v3 2/7] Section 2: Install and Build DPDK Date: Fri, 3 Nov 2023 00:01:48 -0400 Message-ID: <20231103040202.2849-3-dave@youngcopy.com> X-Mailer: git-send-email 2.41.0.windows.1 In-Reply-To: <20231103040202.2849-1-dave@youngcopy.com> References: <20231103040202.2849-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 Section 2: Install and Build DPDK - Updated based on feedback; Merged windows_install_build.rst into building_from_sources.rst; Updated Meson 0.57.x to be required for Windows. --- .../building_from_sources.rst | 174 ++++++++++++++++++ .../install_and_build/index.rst | 14 ++ .../installing_prebuilt_packages.rst | 54 ++++++ 3 files changed, 242 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..fd7e2e9b30 --- /dev/null +++ b/doc/guides/getting_started_guide/install_and_build/building_from_sources.rst @@ -0,0 +1,174 @@ +.. 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 Linux, FreeBSD, and Windows. 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 +^^^^^ + +Common Tools for All Distributions: + +.. code-block:: bash + + sudo apt install gcc pkg-config python3 meson ninja pyelftools + +Alpine + +.. code-block:: bash + + sudo apk add alpine-sdk bsd-compat-headers + +Debian, Ubuntu, and derivatives + +.. code-block:: bash + + sudo apt install build-essential + +Fedora and RedHat Enterprise Linux RHEL + +.. code-block:: bash + + sudo dnf groupinstall "Development Tools" + +openSUSE + +.. code-block:: bash + + sudo zypper install -t pattern devel_basis python3-pyelftools + +FreeBSD +^^^^^^^ + +Common Tools for FreeBSD: + +.. code-block:: bash + + pkg install gcc 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. + +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 `_. +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-.tar.xz + tar -xvf dpdk-.tar.xz + cd dpdk- + +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- + +Building DPDK +------------- + +Linux and FreeBSD +^^^^^^^^^^^^^^^^^ + +.. code-block:: bash + + meson build + ninja -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`. \ No newline at end of file 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