View Issue Details [ Jump to Notes ] | [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
0010044 | CMake | Modules | public | 2009-12-12 19:04 | 2011-01-31 16:02 | ||||
Reporter | Johannes Simon | ||||||||
Assigned To | Brad King | ||||||||
Priority | normal | Severity | minor | Reproducibility | always | ||||
Status | closed | Resolution | fixed | ||||||
Platform | OS | OS Version | |||||||
Product Version | CMake-2-8 | ||||||||
Target Version | CMake 2.8.4 | Fixed in Version | CMake 2.8.4 | ||||||
Summary | 0010044: check_function_exists( fdatasync HAVE_FDATASYNC ) erroneously sets HAVE_FDATASYNC to 1 | ||||||||
Description | On Mac OS X 10.6 (Snow Leopard), and probably on Mac OS X in general, check_function_exists(fdatasync HAVE_FDATASYNC) will wrongly set HAVE_FDATASYNC to 1, though there is no such function on Mac OS. There's only fsync. | ||||||||
Additional Information | To test it, the following CMakeLists.txt will do: 1 include(CheckFunctionExists) 2 check_function_exists(fdatasync HAVE_FDATASYNC) 3 message( ${HAVE_FDATASYNC} ) | ||||||||
Tags | No tags attached. | ||||||||
Attached Files | |||||||||
Relationships | ||||||
|
Relationships |
Notes | |
(0024773) David Cole (manager) 2011-01-17 12:26 |
Brad, I can reproduce this, but I'm not 100% certain about what's going wrong yet... Is this just a short-coming of CheckFunctionExists, or is this a real problem that needs fixing? |
(0024774) Brad King (manager) 2011-01-17 12:50 |
The effective test source file used by the try_compile is: $ cat test.c char fdatasync(); int main(void) { fdatasync(); return 0; } which does compile: $ gcc test.c The CheckSymbolExists module is better because it actually ensures there is a declaration in the header file. |
(0024775) Brad King (manager) 2011-01-17 12:51 |
$ nm /usr/lib/libSystem.B.dylib |grep fdatasync 00000000000b46f0 t ___fdatasync 00000000000b46f0 T _fdatasync |
(0024776) Brad King (manager) 2011-01-17 12:52 |
$ grep fdatasync /usr/include/* /usr/include/sys/* /usr/include/sys/syscall.h:#define SYS_fdatasync 187 |
(0024784) Brad King (manager) 2011-01-17 14:08 |
I clarified the documentation of the module to state exactly what is checked: http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=114c3224 [^] In that sense this is "fixed". Use CheckSymbolExists to verify that a declaration is available too. Use CheckCSourceCompiles to try compiling and linking an actual call to the function. |
Notes |
Issue History | |||
Date Modified | Username | Field | Change |
2009-12-12 19:04 | Johannes Simon | New Issue | |
2010-08-03 12:24 | Kovarththanan Rajaratnam | Category | CMake => Modules |
2011-01-17 12:25 | David Cole | Assigned To | => Brad King |
2011-01-17 12:25 | David Cole | Status | new => assigned |
2011-01-17 12:26 | David Cole | Note Added: 0024773 | |
2011-01-17 12:50 | Brad King | Note Added: 0024774 | |
2011-01-17 12:51 | Brad King | Note Added: 0024775 | |
2011-01-17 12:52 | Brad King | Note Added: 0024776 | |
2011-01-17 12:55 | Brad King | Relationship added | related to 0011685 |
2011-01-17 14:08 | Brad King | Note Added: 0024784 | |
2011-01-17 14:08 | Brad King | Status | assigned => closed |
2011-01-17 14:08 | Brad King | Resolution | open => fixed |
2011-01-31 16:02 | David Cole | Fixed in Version | => CMake 2.8.4 |
2011-01-31 16:02 | David Cole | Target Version | => CMake 2.8.4 |
Issue History |
Copyright © 2000 - 2018 MantisBT Team |