[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: NDEBUG when building packages?




Mathieu Malaterre <malat@debian.org> schrieb:

>On Sat, Feb 23, 2013 at 11:09 AM, Vincent Cheng
><vincentc1208@gmail.com> wrote:
>> On Sat, Feb 23, 2013 at 1:39 AM, Mathieu Malaterre <malat@debian.org>
>wrote:
>>> On Fri, Feb 22, 2013 at 9:52 PM, Russ Allbery <rra@debian.org>
>wrote:
>>>> Ian Jackson <ijackson@chiark.greenend.org.uk> writes:
>>>>> Mathieu Malaterre writes ("Re: NDEBUG when building packages?"):
>>>>
>>>>>> In that case, this should really be clarified. A lot of
>debian/cmake
>>>>>> packages are actually doing:
>>>>
>>>>>> -DCMAKE_BUILD_TYPE:STRING=Release
>>>>
>>>>>> within there debian/rules files. This settings by default
>compiles
>>>>>> with: `-O3 -DNDEBUG`
>>>>
>>>>> OMG WTF BBQ
>>>>
>>>>> Certainly -DNDEBUG should never be used unless upstream explicitly
>say
>>>>> that it's intended to be supported, and usually not even then.
>>>>
>>>> Also, -O3 is generally considered rather iffy.  It's not very
>well-tested
>>>> and in various versions of GCC it tended to make the code slower,
>not
>>>> faster (usually because it unrolled loops too far and blew the CPU
>cache).
>>>> It's also had various code generation bugs from time to time.
>>>>
>>>> I wouldn't use -O3 without benchmarking of that specific code to
>confirm
>>>> that it really improves matters.
>>>
>>> Seems like everyone agreed. I'll report a bug to lintian package to
>>> have it check for this string in d/rules:
>>>
>>>
>http://codesearch.debian.net/search?q=DCMAKE_BUILD_TYPE:STRING%3DRelease
>>
>> We should also suggest that packages use
>> -DCMAKE_BUILD_TYPE=RelWithDebInfo instead (-g -O2). In fact, I think
>> that this would be a sensible default for packages using debhelper's
>> cmake integration. Sounds like another wishlist bug for debhelper...
>
>cmake from sid makes it even harder. RelWithDebInfo now contains
>-DNDEBUG ... I have to source-upload all my packages :(
>
>$ grep NDEBUG ChangeLog.manual
> Add -DNDEBUG to RelWithDebInfo flags where where Release flags had it.
>
>
>The solution (backward compat) is now:
>
>Either do *not* define CMAKE_BUILD_TYPE, or define CMAKE_BUILD_TYPE to
>Debug (and hope -DNDEBUG does not creep in ever)
>
>2cts

Or just define CMAKE_C_FLAGS properly and don't rely on the default values. It's not that hard, actually.


Reply to: