Skip to content

Commit a32737a

Browse files
committed
Add NDEBUG flag to meson builds
1 parent 17909f2 commit a32737a

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

easybuild/easyblocks/generic/mesonninja.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ def extra_options(extra_vars=None):
5656
'build_type': [None, "Build type for meson, e.g. release."
5757
"Defaults to 'release', 'debugoptimized' or 'debug' depending on "
5858
"toolchainopts[debug,noopt]", CUSTOM],
59+
'ndebug': [True, "Sets -Db_ndebug which in turn defines NDEBUG for C/C++ builds."
60+
"This disabled costly asserts in code, typical for production.", CUSTOM],
5961
'configure_cmd': [DEFAULT_CONFIGURE_CMD, "Configure command to use", CUSTOM],
6062
'install_cmd': [DEFAULT_INSTALL_CMD, "Install command to use", CUSTOM],
6163
'separate_build_dir': [True, "Perform build in a separate directory", CUSTOM],
@@ -69,9 +71,9 @@ def build_type(self):
6971
# While we do set optimization and debug flag separately, build scripts may be adding additional
7072
# defines and flags based on the build_type as well so we pick the closest match.
7173
if build_type is None:
72-
if self.toolchain.options.get('noopt', None): # also implies debug but is the closest match
74+
if self.toolchain.options.get('noopt', False): # also implies debug but is the closest match
7375
build_type = 'debug'
74-
elif self.toolchain.options.get('debug', None):
76+
elif self.toolchain.options.get('debug', False):
7577
build_type = 'debugoptimized'
7678
else:
7779
build_type = 'release'
@@ -121,15 +123,16 @@ def configure_step(self, cmd_prefix=''):
121123
build_dir = self.cfg.get('build_dir') or self.start_dir
122124

123125
cmd = ("%(preconfigopts)s %(configure_cmd)s --prefix %(installdir)s --buildtype %(buildtype)s %(configopts)s "
124-
"--optimization %(optimization)s %(debug)s %(source_dir)s") % {
126+
"--optimization %(optimization)s %(debug)s -Db_ndebug=%(ndebug)s %(source_dir)s") % {
125127
'configopts': self.cfg['configopts'],
126128
'configure_cmd': configure_cmd,
127129
'installdir': self.installdir,
128130
'preconfigopts': self.cfg['preconfigopts'],
129-
'source_dir': build_dir,
130131
'buildtype': self.build_type,
131132
'optimization': self.optimization,
132133
'debug': '--debug' if self.toolchain.options.get('debug', False) else '',
134+
'ndebug': self.cfg.get('ndebug'),
135+
'source_dir': build_dir,
133136
}
134137
res = run_shell_cmd(cmd)
135138
return res.output
@@ -144,7 +147,7 @@ def build_step(self, verbose=False, path=None):
144147
if self.cfg['parallel']:
145148
parallel = "-j %s" % self.cfg['parallel']
146149

147-
cmd = "%(prebuildopts)s %(build_cmd)s %(parallel)s %(buildopts)s" % {
150+
cmd = "%(prebuildopts)s %(build_cmd)s -v %(parallel)s %(buildopts)s" % {
148151
'buildopts': self.cfg['buildopts'],
149152
'build_cmd': build_cmd,
150153
'parallel': parallel,

0 commit comments

Comments
 (0)