DPDK patches and discussions
 help / color / mirror / Atom feed
* [PATCH] build: deprecate enable_kmods option
@ 2023-08-10 13:18 Bruce Richardson
  2023-08-10 15:03 ` Stephen Hemminger
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Bruce Richardson @ 2023-08-10 13:18 UTC (permalink / raw)
  To: dev; +Cc: david.marchand, stephen, Bruce Richardson

With the removal of the kni kernel driver, there are no longer any
Linux kernel modules in our repository, leaving only modules for FreeBSD
present. Since:

* BSD has no issues with out-of-tree modules and
* There are no in-tree equivalents for those modules in BSD

there is no point in building for BSD without those modules.

Therefore, we can remove the enable_kmods option, always building the
kmods for BSD.

We can also remove the infrastructure for Linux kmods too, since use of
out-of-tree modules for Linux is not something the DPDK project wants to
pursue in future.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
 doc/guides/rel_notes/deprecation.rst |   7 ++
 kernel/linux/meson.build             | 103 ---------------------------
 kernel/meson.build                   |   4 +-
 meson.build                          |   6 +-
 meson_options.txt                    |   4 +-
 5 files changed, 14 insertions(+), 110 deletions(-)
 delete mode 100644 kernel/linux/meson.build

diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
index 317875c505..d5d04ff8d7 100644
--- a/doc/guides/rel_notes/deprecation.rst
+++ b/doc/guides/rel_notes/deprecation.rst
@@ -21,6 +21,13 @@ Deprecation Notices
   won't be possible anymore through the use of the ``disable_libs`` build option.
   A new build option for deprecated libraries will be introduced instead.
 
+* build: The ``enable_kmods`` option is deprecated and will be removed in a future release.
+  Setting/clearing the option has no impact on the build.
+  Instead, kernel modules will be always built for OS's where out-of-tree kernel modules
+  are required for DPDK operation.
+  Currently, this means that modules will only be build for FreeBSD.
+  No modules are shipped with DPDK for either Linux or Windows.
+
 * kvargs: The function ``rte_kvargs_process`` will get a new parameter
   for returning key match count. It will ease handling of no-match case.
 
diff --git a/kernel/linux/meson.build b/kernel/linux/meson.build
deleted file mode 100644
index 8d47074621..0000000000
--- a/kernel/linux/meson.build
+++ /dev/null
@@ -1,103 +0,0 @@
-# SPDX-License-Identifier: BSD-3-Clause
-# Copyright(c) 2018 Intel Corporation
-
-subdirs = []
-
-kernel_build_dir = get_option('kernel_dir')
-kernel_source_dir = get_option('kernel_dir')
-kernel_install_dir = ''
-install = not meson.is_cross_build()
-cross_args = []
-
-if not meson.is_cross_build()
-    # native build
-    kernel_version = run_command('uname', '-r', check: true).stdout().strip()
-    if kernel_source_dir != ''
-        # Try kernel release from sources first
-        r = run_command('make', '-s', '-C', kernel_source_dir, 'kernelrelease', check: false)
-        if r.returncode() == 0
-            kernel_version = r.stdout().strip()
-        endif
-    else
-        # use default path for native builds
-        kernel_source_dir = '/lib/modules/' + kernel_version + '/source'
-    endif
-    kernel_install_dir = '/lib/modules/' + kernel_version + '/extra/dpdk'
-    if kernel_build_dir == ''
-        # use default path for native builds
-        kernel_build_dir = '/lib/modules/' + kernel_version + '/build'
-    endif
-
-    # test running make in kernel directory, using "make kernelversion"
-    make_returncode = run_command('make', '-sC', kernel_build_dir,
-            'kernelversion', check: true).returncode()
-    if make_returncode != 0
-        # backward compatibility:
-        # the headers could still be in the 'build' subdir
-        if not kernel_build_dir.endswith('build') and not kernel_build_dir.endswith('build/')
-            kernel_build_dir = join_paths(kernel_build_dir, 'build')
-            make_returncode = run_command('make', '-sC', kernel_build_dir,
-                    'kernelversion', check: true).returncode()
-        endif
-    endif
-
-    if make_returncode != 0
-        error('Cannot compile kernel modules as requested - are kernel headers installed?')
-    endif
-
-    # DO ACTUAL MODULE BUILDING
-    foreach d:subdirs
-        subdir(d)
-    endforeach
-
-    subdir_done()
-endif
-
-# cross build
-# if we are cross-compiling we need kernel_build_dir specified
-if kernel_build_dir == ''
-    error('Need "kernel_dir" option for kmod compilation when cross-compiling')
-endif
-cross_compiler = find_program('c').path()
-if cross_compiler.endswith('gcc')
-    cross_prefix = run_command([py3, '-c', 'print("' + cross_compiler + '"[:-3])'],
-            check: true).stdout().strip()
-elif cross_compiler.endswith('clang')
-    cross_prefix = ''
-    found_target = false
-    # search for '-target' and use the arg that follows
-    # (i.e. the value of '-target') as cross_prefix
-    foreach cross_c_arg : meson.get_cross_property('c_args')
-        if found_target and cross_prefix == ''
-            cross_prefix = cross_c_arg
-        endif
-        if cross_c_arg == '-target'
-            found_target = true
-        endif
-    endforeach
-    if cross_prefix == ''
-        error('Did not find -target and its value in c_args in input cross-file.')
-    endif
-    linker = 'lld'
-    foreach cross_c_link_arg : meson.get_cross_property('c_link_args')
-        if cross_c_link_arg.startswith('-fuse-ld')
-            linker = cross_c_link_arg.split('=')[1]
-        endif
-    endforeach
-    cross_args += ['CC=@0@'.format(cross_compiler), 'LD=ld.@0@'.format(linker)]
-else
-    error('Unsupported cross compiler: @0@'.format(cross_compiler))
-endif
-
-cross_arch = host_machine.cpu_family()
-if host_machine.cpu_family() == 'aarch64'
-    cross_arch = 'arm64'
-endif
-
-cross_args += ['ARCH=@0@'.format(cross_arch),
-        'CROSS_COMPILE=@0@'.format(cross_prefix)]
-
-# DO ACTUAL MODULE BUILDING
-foreach d:subdirs
-    subdir(d)
-endforeach
diff --git a/kernel/meson.build b/kernel/meson.build
index b247e2df42..417735b010 100644
--- a/kernel/meson.build
+++ b/kernel/meson.build
@@ -1,4 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-subdir(exec_env)
+if is_freebsd
+    subdir(exec_env)
+endif
diff --git a/meson.build b/meson.build
index 70b54f0c98..edfdc7f276 100644
--- a/meson.build
+++ b/meson.build
@@ -94,10 +94,8 @@ install_subdir('examples',
         install_dir: get_option('datadir') + '/dpdk',
         exclude_files: ex_file_excludes)
 
-# build kernel modules if enabled
-if get_option('enable_kmods')
-    subdir('kernel')
-endif
+# build kernel modules
+subdir('kernel')
 
 # check header includes if requested
 if get_option('check_includes')
diff --git a/meson_options.txt b/meson_options.txt
index 621e1ca9ba..f830856158 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -22,8 +22,8 @@ option('enable_drivers', type: 'string', value: '', description:
        'Comma-separated list of drivers to build. If unspecified, build all drivers.')
 option('enable_driver_sdk', type: 'boolean', value: false, description:
        'Install headers to build drivers.')
-option('enable_kmods', type: 'boolean', value: false, description:
-       'build kernel modules')
+option('enable_kmods', type: 'boolean', value: true, description:
+       '[Deprecated - will be removed in future release] build kernel modules')
 option('examples', type: 'string', value: '', description:
        'Comma-separated list of examples to build by default')
 option('ibverbs_link', type: 'combo', choices : ['static', 'shared', 'dlopen'], value: 'shared', description:
-- 
2.39.2


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

end of thread, other threads:[~2023-10-06  9:54 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-08-10 13:18 [PATCH] build: deprecate enable_kmods option Bruce Richardson
2023-08-10 15:03 ` Stephen Hemminger
2023-08-10 15:44 ` Morten Brørup
2023-08-29  9:30 ` Thomas Monjalon
2023-10-06  9:53 ` David Marchand

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).