build: enable a developer mode setting
authorBruce Richardson <bruce.richardson@intel.com>
Thu, 25 Feb 2021 15:29:01 +0000 (15:29 +0000)
committerThomas Monjalon <thomas@monjalon.net>
Fri, 9 Apr 2021 17:07:25 +0000 (19:07 +0200)
To allow support for additional build checks and tests only really
relevant for developers, we add support for a developer mode option to
DPDK. The default, "auto", value for this enables developer mode if a
".git" folder is found at the root of the source tree - as was the case
with the previous "make" build system. There is also support for
explicitly enabling or disabling this option using "meson configure" if
so desired.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
doc/guides/contributing/coding_style.rst
meson.build
meson_options.txt

index 734d190..fdcd218 100644 (file)
@@ -798,6 +798,14 @@ Integrating with the Build System
 
 DPDK is built using the tools ``meson`` and ``ninja``.
 
+.. note::
+
+   In order to catch possible issues as soon as possible,
+   it is recommended that developers build DPDK in "developer mode" to enable additional checks.
+   By default, this mode is enabled if the build is being done from a git checkout,
+   but the mode can be manually enabled/disabled using the
+   ``developer_mode`` meson configuration option.
+
 Therefore all new component additions should include a ``meson.build`` file,
 and should be added to the component lists in the ``meson.build`` files in the
 relevant top-level directory:
index 7778e18..c914bc6 100644 (file)
@@ -11,6 +11,20 @@ project('DPDK', 'C',
        meson_version: '>= 0.47.1'
 )
 
+# check for developer mode
+developer_mode = false
+if get_option('developer_mode').auto()
+       if meson.version().version_compare('>=0.53') # fs module available
+               fs = import('fs')
+               developer_mode = fs.is_dir('.git')
+       endif
+else
+       developer_mode = get_option('developer_mode').enabled()
+endif
+if developer_mode
+       message('## Building in Developer Mode ##')
+endif
+
 # set up some global vars for compiler, platform, configuration, etc.
 cc = meson.get_compiler('c')
 dpdk_conf = configuration_data()
index 86bc6c8..c53011d 100644 (file)
@@ -2,6 +2,8 @@
 
 option('check_includes', type: 'boolean', value: false,
        description: 'build "chkincs" to verify each header file can compile alone')
+option('developer_mode', type: 'feature',
+       description: 'turn on additional build checks relevant for DPDK developers')
 option('disable_drivers', type: 'string', value: '',
        description: 'Comma-separated list of drivers to explicitly disable.')
 option('drivers_install_subdir', type: 'string', value: 'dpdk/pmds-<VERSION>',