[CMake] CHECK_FUNCTION_EXISTS and -Werror
Mathieu Malaterre
mathieu.malaterre at gmail.com
Sat Dec 6 05:23:52 EST 2008
On Sat, Dec 6, 2008 at 11:20 AM, Mathieu Malaterre
<mathieu.malaterre at gmail.com> wrote:
> On Fri, Dec 5, 2008 at 12:27 PM, Mathieu Malaterre
> <mathieu.malaterre at gmail.com> wrote:
>> On Fri, Dec 5, 2008 at 12:12 PM, Eric Noulard <eric.noulard at gmail.com> wrote:
>>> 2008/12/5 Mathieu Malaterre <mathieu.malaterre at gmail.com>:
>>>> 'lo there,
>>>>
>>>> I had my CFLAGS set to -Werror, and because of that a try compile failed with:
>>>>
>>> [...]
>>>> /usr/share/cmake-2.6/Modules/CheckFunctionExists.c:3: warning:
>>>> conflicting types for built-in function 'strncasecmp'
>>>>
>>>>
>>>> Does this means strncasecmp is some kinf of function known by the
>>>> gcc compiler ?
>>>
>>> It should comes from #include <string.h>
>>> and not from gcc itself but I may be wrong...
>>
>> Ok that's a builtin function since gcc 4.1 (at least).
>>
>> http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Other-Builtins.html
>>
>
>
> Would it make sense to prepend: -fno-builtin when gcc is detected ?
>
> Thanks
> --
> Mathieu
>
>
> Ref:
> -fno-builtin
> -fno-builtin-function
> Don't recognize built-in functions that do not begin with
> __builtin_ as prefix.
>
> GCC normally generates special code to handle certain
> built-in functions more efficiently; for instance, calls to "alloca"
> may become single instructions that adjust the stack directly, and
> calls to "memcpy" may become
> inline copy loops. The resulting code is often both
> smaller and faster, but since the function calls no longer appear as
> such, you cannot set a breakpoint on those calls, nor can you change
> the behavior of the
> functions by linking with a different library. In
> addition, when a function is recognized as a built-in function, GCC
> may use information about that function to warn about problems with
> calls to that function, or to
> generate more efficient code, even if the resulting code
> still contains calls to that function. For example, warnings are
> given with -Wformat for bad calls to "printf", when "printf" is built
> in, and "strlen" is known
> not to modify global memory.
>
> With the -fno-builtin-function option only the built-in
> function function is disabled. function must not begin with
> __builtin_. If a function is named this is not built-in in this
> version of GCC, this option is
> ignored. There is no corresponding -fbuiltin-function
> option; if you wish to enable built-in functions selectively when
> using -fno-builtin or -ffreestanding, you may define macros such as:
>
> #define abs(n) __builtin_abs ((n))
> #define strcpy(d, s) __builtin_strcpy ((d), (s))
>
Logged:
http://cmake.org/Bug/view.php?id=8246
Thx
--
Mathieu
More information about the CMake
mailing list