@@ -22,6 +22,59 @@ target_include_directories(${LIB}
22
22
$<BUILD_INTERFACE:${CMAKE_Fortran_MODULE_DIRECTORY} >
23
23
)
24
24
25
+ function (check_fortran_source_runs code resultVar)
26
+ cmake_parse_arguments (PARSE_ARGV 2 check "" "SRC_EXT" "FAIL_REGEX" )
27
+ # message("${code}")
28
+ # message("${check_SRC_EXT}")
29
+ # message("${check_FAIL_REGEX}")
30
+ if (DEFINED call_SRC_EXT)
31
+ set (ext "${check_SRC_EXT} " )
32
+ else ()
33
+ set (ext "f90" )
34
+ endif ()
35
+ file (WRITE ${CMAKE_CURRENT_BINARY_DIR} /CMakeFiles/check_fortran_source_runs.${ext} "${code} " )
36
+ try_run (run_result compile_result
37
+ ${CMAKE_CURRENT_BINARY_DIR} /CMakeFiles/try_run
38
+ ${CMAKE_CURRENT_BINARY_DIR} /CMakeFiles/check_fortran_source_runs.${ext}
39
+ RUN_OUTPUT_VARIABLE run_output
40
+ )
41
+ # message("compile_result: ${compile_result}")
42
+ if (compile_result)
43
+ # message("run_result: ${run_result}")
44
+ if (DEFINED check_FAIL_REGEX)
45
+ set (tmpVar FALSE )
46
+ foreach (regexp in check_FAIL_REGEXP)
47
+ string (REGEXP MATCH ${regexp} match run_output)
48
+ if (NOT (${match} STREQUAL "" ))
49
+ set (tmpVar TRUE )
50
+ break ()
51
+ endif ()
52
+ endforeach ()
53
+ set (${resultVar} ${tmpVar} PARENT_SCOPE)
54
+ else ()
55
+ if (${run_result} EQUAL 0)
56
+ set (${resultVar} TRUE PARENT_SCOPE)
57
+ else ()
58
+ set (${resultVar} FALSE PARENT_SCOPE)
59
+ endif ()
60
+ endif ()
61
+ else ()
62
+ set (${resultVar} FALSE PARENT_SCOPE)
63
+ endif ()
64
+ endfunction ()
65
+
66
+ if (NOT (DEFINED _R16P_SUPPORTED))
67
+ check_fortran_source_runs("program r16p_support; integer, parameter :: r16p = selected_real_kind(33, 4931) - 16; stop r16p; end program r16p_support" _r16p_supported SRC_EXT f90)
68
+ message (STATUS "Checking wether ${CMAKE_Fortran_COMPILER} supports 16 byte reals -- ${_r16p_supported} " )
69
+ set (_R16P_SUPPORTED ${_r16p_supported} CACHE BOOL "Fortran compiler supports 16 byte precision reals" )
70
+ endif ()
71
+
72
+ target_compile_definitions (${LIB}
73
+ PRIVATE
74
+ $<$<BOOL :${_R16P_SUPPORTED} >:_R16P_SUPPORTED>
75
+ ${_ascii_supported}
76
+ ${_ucs4_supported}
77
+ )
25
78
set_target_properties (${LIB} PROPERTIES
26
79
VERSION
27
80
${PROJECT_VERSION}
0 commit comments