[dpdk-dev] [RFC 2/6] build: use meson warning levels

Kevin Laatz kevin.laatz at intel.com
Wed Oct 23 03:07:50 CEST 2019


From: Bruce Richardson <bruce.richardson at intel.com>

Rather than trying to manage all the cflags ourselves, we can use meson
warning levels to give the user more control. We remove the Wextra flag and
rely on meson to add it, by bumping up our default warning level.

Signed-off-by: Bruce Richardson <bruce.richardson at intel.com>
---
 config/meson.build | 40 +++++++++++++++++++++-------------------
 meson.build        |  3 ++-
 2 files changed, 23 insertions(+), 20 deletions(-)

diff --git a/config/meson.build b/config/meson.build
index b383e79c0..3bcfe0668 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -141,31 +141,33 @@ endif
 # add -include rte_config to cflags
 add_project_arguments('-include', 'rte_config.h', language: 'c')
 
-# enable extra warnings and disable any unwanted warnings
+# enable extra warnings and disable any unwanted warnings. "-Wall" is added
+# by meson at warning level 1, and "-Wextra" at level 2, so we can omit
+# those. Add extra warnings at level 2 or above. (2 is default level).
 warning_flags = [
-	# -Wall is added by meson by default, so add -Wextra only
-	'-Wextra',
-
-	# additional warnings in alphabetical order
-	'-Wcast-qual',
-	'-Wdeprecated',
-	'-Wformat-nonliteral',
-	'-Wformat-security',
-	'-Wmissing-declarations',
-	'-Wmissing-prototypes',
-	'-Wnested-externs',
-	'-Wold-style-definition',
-	'-Wpointer-arith',
-	'-Wsign-compare',
-	'-Wstrict-prototypes',
-	'-Wundef',
-	'-Wwrite-strings',
-
 	# globally disabled warnings
 	'-Wno-address-of-packed-member',
 	'-Wno-packed-not-aligned',
 	'-Wno-missing-field-initializers'
 ]
+if get_option('warning_level').to_int() >= 2
+	warning_flags += [
+		# additional warnings in alphabetical order
+		'-Wcast-qual',
+		'-Wdeprecated',
+		'-Wformat-nonliteral',
+		'-Wformat-security',
+		'-Wmissing-declarations',
+		'-Wmissing-prototypes',
+		'-Wnested-externs',
+		'-Wold-style-definition',
+		'-Wpointer-arith',
+		'-Wsign-compare',
+		'-Wstrict-prototypes',
+		'-Wundef',
+		'-Wwrite-strings',
+	]
+endif
 if not dpdk_conf.get('RTE_ARCH_64')
 # for 32-bit, don't warn about casting a 32-bit pointer to 64-bit int - it's fine!!
 	warning_flags += '-Wno-pointer-to-int-cast'
diff --git a/meson.build b/meson.build
index b77ccd6ef..dd83b0bcb 100644
--- a/meson.build
+++ b/meson.build
@@ -8,7 +8,8 @@ project('DPDK', 'C',
 		files('VERSION')).stdout().strip(),
 	license: 'BSD',
 	default_options: ['buildtype=debugoptimized',
-			'default_library=static'],
+			'default_library=static',
+			'warning_level=2'],
 	meson_version: '>= 0.47.1'
 )
 
-- 
2.17.1



More information about the dev mailing list