https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=292636

John Hein <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |[email protected]

--- Comment #7 from John Hein <[email protected]> ---
(In reply to Gleb Popov from comment #5)
According to the docs at least (https://mesonbuild.com/Builtin-options.html),
b_ndebug defaults to false.

"Details for buildtype" in that documentation says "debug" should be false for
"release" builds.  But that (debug=false) doesn't explicitly mean that b_ndebug
gets set to true (at least not anywhere that I could see in the doc).

In fact, there is the following statement in that doc:

"Note that -Ddebug=false does not cause the compiler preprocessor macro NDEBUG
to be defined. The macro can be defined using the base option b_ndebug,
described below."

Later in that doc in "Base options", the default for b_ndebug is false.  And
the possible settings are false, true and if-release.

Though this is not a direct question to meson upstream, I think this answers
Gleb's question in a RTFM context.

So assuming that documentation (untested by me for correctness), Daniel's patch
seems mostly right.

Or we could explicitly always set b_ndebug=if-release outside the .if .. .elif
.. .else (rather only explicitly setting b_ndebug in the .else part as in
Daniel's patch to meson.mk).  Then, b_ndebug will be set according to the
intent of the if-release setting - true if a release buildtype or false if it
is one of the WITH_DEBUG* cases (where buildtype is set to debug or
debugoptimized).

I think if someone is building WITH_DEBUG or WITH_DEBUGINFO, it is appropriate
and expected (POLA-wise) for assertions to be enabled (i.e., b_ndebug=false). 
I think using if-release does that for the user automatically.

In other words:

========
--- a/Mk/Uses/meson.mk
+++ b/Mk/Uses/meson.mk
@@ -78,6 +78,7 @@ CONFIGURE_ARGS+=      --buildtype release \
                        --optimization plain \
                        --strip
 .  endif
+MESON_ARGS+=           -Db_ndebug=if-release

 .  for _bool in true false enabled disabled
 .    if defined(MESON_${_bool:tu})
========

Daniel, do you have a fairly easy (even if contrived) reproduction case for a
particular port that exhibits the problem (not getting built with disabled
asserts)?

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to