[Mesa-dev] [PATCH 1/3] meson: Define NDEBUG for non-debug-builds

Rob Clark robdclark at gmail.com
Tue Jul 17 17:28:20 UTC 2018


On Tue, Jul 17, 2018 at 12:40 PM, Dylan Baker <dylan at pnwbakers.com> wrote:
> Quoting Eric Engestrom (2018-07-17 07:05:32)
>> On Tuesday, 2018-07-17 09:01:46 -0400, mesa-dev-bounces at lists.freedesktop.org wrote:
>> > On Mon, Apr 16, 2018 at 5:19 PM, Dylan Baker <dylan at pnwbakers.com> wrote:
>> > > Quoting Jan Alexander Steffens (heftig) (2018-04-14 10:23:20)
>> > >> This is for parity with autotools. We were suddenly getting assertion
>> > >> failures after switching to meson, see [1].
>> > >>
>> > >> [1]: https://bugs.archlinux.org/task/58218
>> > >>
>> > >> Signed-off-by: Jan Alexander Steffens (heftig) <jan.steffens at gmail.com>
>> > >> ---
>> > >>  meson.build | 2 ++
>> > >>  1 file changed, 2 insertions(+)
>> > >>
>> > >> diff --git a/meson.build b/meson.build
>> > >> index a4dfa62255..931e0389e6 100644
>> > >> --- a/meson.build
>> > >> +++ b/meson.build
>> > >> @@ -705,6 +705,8 @@ endif
>> > >>  # Define DEBUG for debug builds only (debugoptimized is not included on this one)
>> > >>  if get_option('buildtype') == 'debug'
>> > >>    pre_args += '-DDEBUG'
>> > >> +else
>> > >> +  pre_args += '-DNDEBUG'
>> > >>  endif
>> > >>
>> > >>  if get_option('shader-cache')
>> > >> --
>> > >> 2.16.2
>> > >
>> > > NAK.
>> > >
>> > > meson has -Db_ndebug for controlling NDEBUG, which is done separately from
>> > > optimization levels, this is in our documentation as well as the meson
>> > > documentation. For builds without asserts, set b_ndebug=true.
>> > >
>> >
>> > Is it possible to make b_ndebug default to true for release builds?
>> > That would be far less surprising..
>>
>> Since 0.45 (we support 0.44.1 right now, so we would need to bump),
>> b_ndebug is no longer a boolean, but now accepts `if-release` as well.
>>
>> If that's the preferred solution, I can send this patch:
>> ----8<----
>> diff --git a/meson.build b/meson.build
>> index c62cdd0e395259ec984e..eb90f4cf9b265435fb19 100644
>> --- a/meson.build
>> +++ b/meson.build
>> @@ -25,8 +25,8 @@ project(
>>      [find_program('python', 'python2', 'python3'), 'bin/meson_get_version.py']
>>    ).stdout(),
>>    license : 'MIT',
>> -  meson_version : '>= 0.44.1',
>> -  default_options : ['buildtype=debugoptimized', 'c_std=c99', 'cpp_std=c++11']
>> +  meson_version : '>= 0.45',
>> +  default_options : ['buildtype=debugoptimized', 'b_ndebug=if-release', 'c_std=c99', 'cpp_std=c++11']
>>  )
>>
>>  cc = meson.get_compiler('c')
>> ---->8----
>>
>> Dylan, thoughts?
>>
>>
>
> I don't know if others are okay bumping to 0.45 yet, but in my
> not-always-so-humble opinion I like this option, or Michel's option to switch
> some of the very expensive checks to be guarded by DEBUG instead of NDEBUG.
> Or maybe both, since a lot of people equate assertions with debug builds.

I think there is a lot of assumption that DEBUG == !NDEBUG, from the
years of autotools

perhaps purging NDEBUG and using DEBUG as the switch is a good idea..

BR,
-R


More information about the mesa-dev mailing list