DPDK patches and discussions
 help / color / mirror / Atom feed
* [PATCH v1] doc: arm64 cross docs improvements/fixes
@ 2021-11-18 10:00 Juraj Linkeš
  2021-11-26 13:53 ` Thomas Monjalon
  2021-12-07 11:05 ` [PATCH v2 0/4] " Juraj Linkeš
  0 siblings, 2 replies; 18+ messages in thread
From: Juraj Linkeš @ 2021-11-18 10:00 UTC (permalink / raw)
  To: thomas, david.marchand, bruce.richardson, Honnappa.Nagarahalli,
	Ruifeng.Wang, ferruh.yigit
  Cc: dev, Juraj Linkeš

Numactl cross compilation doesn't work with clang, remove it and fix the
gcc cross compiler executable name.

Remove CFLAGS and LDFLAGS since Meson doesn't support them well enough.
Add alternatives.

The names of the downloaded gcc binaries differ from those in cross
files, so point this out in docs.

Fixes: eb0e12c0c299 ("doc: add clang to aarch64 cross build guide")

Signed-off-by: Juraj Linkeš <juraj.linkes@pantheon.tech>
---
Let me know if I should split the patch.
---
 .../linux_gsg/cross_build_dpdk_for_arm64.rst  | 69 ++++++++++++++++---
 1 file changed, 60 insertions(+), 9 deletions(-)

diff --git a/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst b/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst
index d59af58235..71f3f6c878 100644
--- a/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst
+++ b/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst
@@ -35,13 +35,14 @@ NUMA is required by most modern machines, not needed for non-NUMA architectures.
    git checkout v2.0.13 -b v2.0.13
    ./autogen.sh
    autoconf -i
-   ./configure --host=aarch64-linux-gnu CC=<compiler> --prefix=<numa install dir>
+   ./configure --host=aarch64-linux-gnu CC=aarch64-none-linux-gnu-gcc--prefix=<numa install dir>
    make install
 
 .. note::
 
-   The compiler above can be either aarch64-linux-gnu-gcc or clang.
-   See below for information on how to get specific compilers.
+   The compiler is aarch64-none-linux-gnu-gcc if you download gcc using the
+   below guide. If you're using a different compiler, make sure you're using
+   the proper executable name.
 
 The numa header files and lib file is generated in the include and lib folder
 respectively under ``<numa install dir>``.
@@ -98,10 +99,6 @@ For aarch32::
 Augment the GNU toolchain with NUMA support
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-.. note::
-
-   This way is optional, an alternative is to use extra CFLAGS and LDFLAGS.
-
 Copy the NUMA header files and lib to the cross compiler's directories:
 
 .. code-block:: console
@@ -110,9 +107,62 @@ Copy the NUMA header files and lib to the cross compiler's directories:
    cp <numa_install_dir>/lib/libnuma.a <cross_install_dir>/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/lib/gcc/aarch64-none-linux-gnu/9.2.1/
    cp <numa_install_dir>/lib/libnuma.so <cross_install_dir>/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/lib/gcc/aarch64-none-linux-gnu/9.2.1/
 
+.. note::
+
+   Using LDFLAGS and CFLAGS is not a viable alternative to copying the files.
+   The Meson docs say it is not recommended, as there are many caveats to their
+   use with Meson, especially when rebuilding the project. A viable alternative
+   would be to use the ``c_args`` and ``c_link_args`` options with Meson 0.51.0
+   and higher:
+
+.. code-block:: console
+
+   -Dc_args=-I<numa_install_dir>/include -Dc_link_args=-L<numa_install_dir>/lib
+
+   For Meson versions lower than 0.51.0, the ``c_args`` and ``c_link_args``
+   options don't apply to cross compilation. However, the compiler/linker flags
+   may be added to cross files under [properties]:
+
+.. code-block:: console
+
+   c_args = ['-I<numa_install_dir>/include']
+   c_link_args = ['-L<numa_install_dir>/lib']
+
 Cross Compiling DPDK with GNU toolchain using Meson
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
+.. note::
+
+   The names of gcc binaries in cross files differ from the downloaded
+   ones, which have an extra "-none-" in their name. Please modify the cross
+   file binaries accordingly when using the downloaded cross compilers.
+
+   A example cross file with modified names and added numa paths would look
+   like this:
+
+.. code-block:: console
+
+   [binaries]
+   c = 'aarch64-none-linux-gnu-gcc'
+   cpp = 'aarch64-none-linux-gnu-cpp'
+   ar = 'aarch64-none-linux-gnu-gcc-ar'
+   strip = 'aarch64-none-linux-gnu-strip'
+   pkgconfig = 'aarch64-linux-gnu-pkg-config' # the downloaded binaries
+      # don't contain a pkgconfig binary, so it's not modified
+   pcap-config = ''
+
+   [host_machine]
+   system = 'linux'
+   cpu_family = 'aarch64'
+   cpu = 'armv8-a'
+   endian = 'little'
+
+   [properties]
+   # Generate binaries that are portable across all Armv8 machines
+   platform = 'generic'
+   c_args = ['-I<numa_install_dir>/include']  # replace <numa_install_dir>
+   c_link_args = ['-L<numa_install_dir>/lib'] # with your path
+
 To cross-compile DPDK on a desired target machine we can use the following
 command::
 
@@ -120,12 +170,13 @@ command::
    ninja -C cross-build
 
 For example if the target machine is aarch64 we can use the following
-command::
+command, provided the cross file has been modified accordingly::
 
    meson aarch64-build-gcc --cross-file config/arm/arm64_armv8_linux_gcc
    ninja -C aarch64-build-gcc
 
-If the target machine is aarch32 we can use the following command::
+If the target machine is aarch32 we can use the following command, provided
+the cross file has been modified accordingly::
 
    meson aarch32-build --cross-file config/arm/arm32_armv8_linux_gcc
    ninja -C aarch32-build
-- 
2.20.1


^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2022-03-16 19:19 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-18 10:00 [PATCH v1] doc: arm64 cross docs improvements/fixes Juraj Linkeš
2021-11-26 13:53 ` Thomas Monjalon
2021-11-26 14:17   ` Juraj Linkeš
2021-12-07 11:05 ` [PATCH v2 0/4] " Juraj Linkeš
2021-12-07 11:05   ` [PATCH v2 1/4] doc: arm64 cross build CFLAGS/LDFLAGS alternatives Juraj Linkeš
2021-12-15  8:00     ` Ruifeng Wang
2021-12-07 11:05   ` [PATCH v2 2/4] doc: arm64 cross build binary names update Juraj Linkeš
2021-12-15  8:02     ` Ruifeng Wang
2021-12-07 11:05   ` [PATCH v2 3/4] doc: arm64 cross build numactl compilers Juraj Linkeš
2021-12-15  8:38     ` Ruifeng Wang
2021-12-07 11:05   ` [PATCH v2 4/4] docs: add an example arm64 cross file Juraj Linkeš
2021-12-15  8:59     ` Ruifeng Wang
2022-01-25 13:19   ` [PATCH v3 0/4] arm64 cross docs improvements/fixes Juraj Linkeš
2022-01-25 13:19     ` [PATCH v3 1/4] doc: arm64 cross build CFLAGS/LDFLAGS alternatives Juraj Linkeš
2022-01-25 13:20     ` [PATCH v3 2/4] doc: arm64 cross build binary names update Juraj Linkeš
2022-01-25 13:20     ` [PATCH v3 3/4] doc: arm64 cross build numactl compilers Juraj Linkeš
2022-01-25 13:20     ` [PATCH v3 4/4] doc: add an example arm64 cross file Juraj Linkeš
2022-03-16 19:19     ` [PATCH v3 0/4] arm64 cross docs improvements/fixes Thomas Monjalon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).