[tools] g_sans - add OpenMP based parallelism
[gromacs.git] / cmake / gmxTestIsfinite.cmake
blobb4ad7ad8a490bdcf58862411dacdfd433b13a990
1 # - Define macro to check if isfinite or _isfinite exists
3 #  gmx_test_isfinite(VARIABLE)
5 #  VARIABLE will be set to true if isfinite exists
7 #  gmx_test__isfinite(VARIABLE)
9 #  VARIABLE will be set to true if _isfinite exists
11 #  gmx_test__finite(VARIABLE) - disabled since it doesn't seem to work the way the MSVC docs suggest
13 #  VARIABLE will be set to true if _finite exists
16 MACRO(gmx_test_isfinite VARIABLE)
17   if(NOT DEFINED isfinite_compile_ok)
18     MESSAGE(STATUS "Checking for isfinite")
20     set(CMAKE_REQUIRED_INCLUDES "math.h")
21     set(CMAKE_REQUIRED_LIBRARIES "m")
22     check_c_source_compiles(
23       "#include <math.h>
24 int main(void) {
25   float f;
26   isfinite(f);
27 }" isfinite_compile_ok)
29     if(isfinite_compile_ok)
30         MESSAGE(STATUS "Checking for isfinite - yes")
31             set(${VARIABLE} ${isfinite_compile_ok}
32                 "Result of test for isfinite")
33     else(isfinite_compile_ok)
34         MESSAGE(STATUS "Checking for isfinite - no")
35     endif(isfinite_compile_ok)
36     set(isfinite_compile_ok "${isfinite_compile_ok}" CACHE INTERNAL "Result of isfinite check")
37   endif(NOT DEFINED isfinite_compile_ok)
38 ENDMACRO(gmx_test_isfinite VARIABLE)
40 MACRO(gmx_test__isfinite VARIABLE)
41   if(NOT DEFINED _isfinite_compile_ok)
42     MESSAGE(STATUS "Checking for _isfinite")
44     set(CMAKE_REQUIRED_INCLUDES "math.h")
45     set(CMAKE_REQUIRED_LIBRARIES "m")
46     check_c_source_compiles(
47       "#include <math.h>
48 int main(void) {
49   float f;
50   _isfinite(f);
51 }" _isfinite_compile_ok)
53     if(_isfinite_compile_ok)
54         MESSAGE(STATUS "Checking for _isfinite - yes")
55             set(${VARIABLE} ${_isfinite_compile_ok}
56                 "Result of test for _isfinite")
57     else(_isfinite_compile_ok)
58         MESSAGE(STATUS "Checking for _isfinite - no")
59     endif(_isfinite_compile_ok)
60     set(_isfinite_compile_ok "${_isfinite_compile_ok}" CACHE INTERNAL "Result of _isfinite check")
61   endif(NOT DEFINED _isfinite_compile_ok)
62 ENDMACRO(gmx_test__isfinite VARIABLE)
64 # Necessary for MSVC
65 MACRO(gmx_test__finite VARIABLE)
66   if(NOT DEFINED _finite_compile_ok)
67     MESSAGE(STATUS "Checking for _finite")
69     set(CMAKE_REQUIRED_INCLUDES "float.h")
70     check_c_source_compiles(
71       "#include <float.h>
72 int main(void) {
73   float f;
74   _finite(f);
75 }" _finite_compile_ok)
77     if(_finite_compile_ok)
78         MESSAGE(STATUS "Checking for _finite - yes")
79             set(${VARIABLE} ${_finite_compile_ok}
80                 "Result of test for _finite")
81     else(_finite_compile_ok)
82         MESSAGE(STATUS "Checking for _finite - no")
83     endif(_finite_compile_ok)
84     set(_finite_compile_ok "${_finite_compile_ok}" CACHE INTERNAL "Result of _finite check")
85   endif(NOT DEFINED _finite_compile_ok)
86 ENDMACRO(gmx_test__finite VARIABLE)