Warn when detecting debug with get_option('buildtype')
Build files should always use `get_option('debug')` since `buildtype`
is set to `custom` in many cases.
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index af6eda3..416d26f 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -2833,7 +2833,7 @@
@stringArgs
@noKwargs
- def func_get_option(self, nodes, args, kwargs):
+ def func_get_option(self, node, args, kwargs):
if len(args) != 1:
raise InterpreterException('Argument required for get_option.')
optname = args[0]
@@ -2843,9 +2843,17 @@
'options of other subprojects.')
opt = self.get_option_internal(optname)
if isinstance(opt, coredata.UserFeatureOption):
- return FeatureOptionHolder(self.environment, optname, opt)
+ opt = FeatureOptionHolder(self.environment, optname, opt)
elif isinstance(opt, coredata.UserOption):
- return opt.value
+ opt = opt.value
+ if optname == 'buildtype':
+ class BuildTypeString(str):
+ def startswith(self, token):
+ if token == 'debug':
+ mlog.warning("Use get_option('debug') to check whether debugging is enabled "
+ "instead of get_option('buildtype').startswith('debug')", location=node)
+ super().startswith(token)
+ opt = BuildTypeString(opt)
return opt
@noKwargs
diff --git a/run_unittests.py b/run_unittests.py
index f867f1c..03ada0c 100755
--- a/run_unittests.py
+++ b/run_unittests.py
@@ -4832,6 +4832,11 @@
"meson.override_dependency('zlib', declare_dependency())",
"""Tried to override dependency 'zlib' which has already been resolved or overridden""")
+ def test_buildtype_debug_warning(self):
+ self.assertMesonOutputs("get_option('buildtype').startswith('debug')\n",
+ r"WARNING:.*get_option\('debug'\)")
+
+
@unittest.skipUnless(is_windows() or is_cygwin(), "requires Windows (or Windows via Cygwin)")
class WindowsTests(BasePlatformTests):
'''