View Issue Details [ Jump to Notes ] | [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
0008246 | CMake | CMake | public | 2008-12-06 05:23 | 2008-12-16 09:33 | ||||
Reporter | Mathieu Malaterre | ||||||||
Assigned To | Brad King | ||||||||
Priority | normal | Severity | feature | Reproducibility | always | ||||
Status | closed | Resolution | won't fix | ||||||
Platform | OS | OS Version | |||||||
Product Version | CMake-2-6 | ||||||||
Target Version | Fixed in Version | ||||||||
Summary | 0008246: CHECK_FUNCTION_EXISTS and -Werror are incompatible with gcc builtins functions | ||||||||
Description | If CFLAGS contains -Werror and checktestfunctionsexits test for a builtins function, cmake fails to determine if a function truly exist: Run Build Command:/usr/bin/make "cmTryCompileExec/fast" /usr/bin/make -f CMakeFiles/cmTryCompileExec.dir/build.make CMakeFiles/cmTryCompileExec.dir/build make[1]: Entering directory `/home/mmalaterre/Projects/gdcm/foo/CMakeFiles/CMakeTmp' /usr/bin/cmake -E cmake_progress_report /home/mmalaterre/Projects/gdcm/foo/CMakeFiles/CMakeTmp/CMakeFiles 1 Building C object CMakeFiles/cmTryCompileExec.dir/CheckFunctionExists.c.o /usr/bin/gcc -Werror -DCHECK_FUNCTION_EXISTS=strncasecmp -o CMakeFiles/cmTryCompileExec.dir/CheckFunctionExists.c.o -c /usr/share/cmake-2.6/Modules/CheckFunctionExists.c cc1: warnings being treated as errors /usr/share/cmake-2.6/Modules/CheckFunctionExists.c:3: warning: conflicting types for built-in function 'strncasecmp' make[1]: *** [CMakeFiles/cmTryCompileExec.dir/CheckFunctionExists.c.o] Error 1 make[1]: Leaving directory `/home/mmalaterre/Projects/gdcm/foo/CMakeFiles/CMakeTmp' make: *** [cmTryCompileExec/fast] Error 2 | ||||||||
Tags | No tags attached. | ||||||||
Attached Files | |||||||||
Relationships | |
Relationships |
Notes | |
(0014304) Mathieu Malaterre (developer) 2008-12-06 05:23 |
One possible solution would be to pass -fno-builtin to the cflags when gcc is detected. -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)) |
(0014338) Brad King (manager) 2008-12-15 10:33 |
Does check_symbol_exists work? |
(0014339) Mathieu Malaterre (developer) 2008-12-15 10:46 |
Yes. Thanks. $ export CFLAGS=-Werror $ cmake . ... -- Looking for strcasecmp -- Looking for strcasecmp - found ... |
(0014367) Brad King (manager) 2008-12-16 09:33 |
I'd prefer not to mess with this. It should only be a problem for functions whose signatures are built in to the compiler. Further, I think check_symbol_exists is a better solution in pretty much all cases, so we can just leave check_function_exists as-is for compatibility. |
Notes |
Issue History | |||
Date Modified | Username | Field | Change |
2008-12-06 05:23 | Mathieu Malaterre | New Issue | |
2008-12-06 05:23 | Mathieu Malaterre | Note Added: 0014304 | |
2008-12-15 10:05 | Bill Hoffman | Status | new => assigned |
2008-12-15 10:05 | Bill Hoffman | Assigned To | => Brad King |
2008-12-15 10:33 | Brad King | Note Added: 0014338 | |
2008-12-15 10:46 | Mathieu Malaterre | Note Added: 0014339 | |
2008-12-16 09:33 | Brad King | Note Added: 0014367 | |
2008-12-16 09:33 | Brad King | Status | assigned => closed |
2008-12-16 09:33 | Brad King | Resolution | open => won't fix |
Issue History |
Copyright © 2000 - 2018 MantisBT Team |