Merge "Don't rerun checks and be quiet 2nd time cmake is run" into release-4-6
[alexxy/gromacs.git] / cmake / gmxTestIsfinite.cmake
1 # - Define macro to check if isfinite or _isfinite exists
2 #
3 #  gmx_test_isfinite(VARIABLE)
4 #
5 #  VARIABLE will be set to true if isfinite exists
6 #
7 #  gmx_test__isfinite(VARIABLE)
8 #
9 #  VARIABLE will be set to true if _isfinite exists
10 #
11 #  gmx_test__finite(VARIABLE) - disabled since it doesn't seem to work the way the MSVC docs suggest
12 #
13 #  VARIABLE will be set to true if _finite exists
14 #
15
16 MACRO(gmx_test_isfinite VARIABLE)
17   if(NOT DEFINED isfinite_compile_ok)
18     MESSAGE(STATUS "Checking for isfinite")
19
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)
28
29     if(isfinite_compile_ok)
30         MESSAGE(STATUS "Checking for isfinite - yes")
31     else(isfinite_compile_ok)
32         MESSAGE(STATUS "Checking for isfinite - no")
33     endif(isfinite_compile_ok)
34     set(isfinite_compile_ok "${isfinite_compile_ok}" CACHE INTERNAL "Result of isfinite check")
35   endif(NOT DEFINED isfinite_compile_ok)
36   if(isfinite_compile_ok)
37     set(${VARIABLE} ${isfinite_compile_ok}
38                 "Result of test for isfinite")
39   endif()
40 ENDMACRO(gmx_test_isfinite VARIABLE)
41
42 MACRO(gmx_test__isfinite VARIABLE)
43   if(NOT DEFINED _isfinite_compile_ok)
44     MESSAGE(STATUS "Checking for _isfinite")
45
46     set(CMAKE_REQUIRED_INCLUDES "math.h")
47     set(CMAKE_REQUIRED_LIBRARIES "m")
48     check_c_source_compiles(
49       "#include <math.h>
50 int main(void) {
51   float f;
52   _isfinite(f);
53 }" _isfinite_compile_ok)
54
55     if(_isfinite_compile_ok)
56         MESSAGE(STATUS "Checking for _isfinite - yes")
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   if(_isfinite_compile_ok)
63     set(${VARIABLE} ${_isfinite_compile_ok}
64                 "Result of test for _isfinite")
65   endif()
66 ENDMACRO(gmx_test__isfinite VARIABLE)
67
68 # Necessary for MSVC
69 MACRO(gmx_test__finite VARIABLE)
70   if(NOT DEFINED _finite_compile_ok)
71     MESSAGE(STATUS "Checking for _finite")
72
73     set(CMAKE_REQUIRED_INCLUDES "float.h")
74     check_c_source_compiles(
75       "#include <float.h>
76 int main(void) {
77   float f;
78   _finite(f);
79 }" _finite_compile_ok)
80
81     if(_finite_compile_ok)
82         MESSAGE(STATUS "Checking for _finite - yes")
83     else(_finite_compile_ok)
84         MESSAGE(STATUS "Checking for _finite - no")
85     endif(_finite_compile_ok)
86     set(_finite_compile_ok "${_finite_compile_ok}" CACHE INTERNAL "Result of _finite check")
87   endif(NOT DEFINED _finite_compile_ok)
88   if(_finite_compile_ok)
89     set(${VARIABLE} ${_finite_compile_ok}
90                 "Result of test for _finite")
91   endif()
92 ENDMACRO(gmx_test__finite VARIABLE)