@@ -40,14 +40,24 @@ integer function get_os_type() result(r)
40
40
character (len= 32 ) :: val
41
41
integer :: length, rc
42
42
logical :: file_exists
43
+ logical , save :: first_run = .true.
44
+ integer , save :: ret = OS_UNKNOWN
45
+ ! omp threadprivate(ret, first_run)
43
46
47
+ if (.not. first_run) then
48
+ r = ret
49
+ return
50
+ end if
51
+
52
+ first_run = .false.
44
53
r = OS_UNKNOWN
45
54
46
55
! Check environment variable `OS`.
47
56
call get_environment_variable(' OS' , val, length, rc)
48
57
49
58
if (rc == 0 .and. length > 0 .and. index (val, ' Windows_NT' ) > 0 ) then
50
59
r = OS_WINDOWS
60
+ ret = r
51
61
return
52
62
end if
53
63
@@ -58,42 +68,49 @@ integer function get_os_type() result(r)
58
68
! Linux
59
69
if (index (val, ' linux' ) > 0 ) then
60
70
r = OS_LINUX
71
+ ret = r
61
72
return
62
73
end if
63
74
64
75
! macOS
65
76
if (index (val, ' darwin' ) > 0 ) then
66
77
r = OS_MACOS
78
+ ret = r
67
79
return
68
80
end if
69
81
70
82
! Windows, MSYS, MinGW, Git Bash
71
83
if (index (val, ' win' ) > 0 .or. index (val, ' msys' ) > 0 ) then
72
84
r = OS_WINDOWS
85
+ ret = r
73
86
return
74
87
end if
75
88
76
89
! Cygwin
77
90
if (index (val, ' cygwin' ) > 0 ) then
78
91
r = OS_CYGWIN
92
+ ret = r
79
93
return
80
94
end if
81
95
82
96
! Solaris, OpenIndiana, ...
83
97
if (index (val, ' SunOS' ) > 0 .or. index (val, ' solaris' ) > 0 ) then
84
98
r = OS_SOLARIS
99
+ ret = r
85
100
return
86
101
end if
87
102
88
103
! FreeBSD
89
104
if (index (val, ' FreeBSD' ) > 0 .or. index (val, ' freebsd' ) > 0 ) then
90
105
r = OS_FREEBSD
106
+ ret = r
91
107
return
92
108
end if
93
109
94
110
! OpenBSD
95
111
if (index (val, ' OpenBSD' ) > 0 .or. index (val, ' openbsd' ) > 0 ) then
96
112
r = OS_OPENBSD
113
+ ret = r
97
114
return
98
115
end if
99
116
end if
@@ -103,6 +120,7 @@ integer function get_os_type() result(r)
103
120
104
121
if (file_exists) then
105
122
r = OS_LINUX
123
+ ret = r
106
124
return
107
125
end if
108
126
@@ -111,6 +129,7 @@ integer function get_os_type() result(r)
111
129
112
130
if (file_exists) then
113
131
r = OS_MACOS
132
+ ret = r
114
133
return
115
134
end if
116
135
@@ -119,6 +138,7 @@ integer function get_os_type() result(r)
119
138
120
139
if (file_exists) then
121
140
r = OS_FREEBSD
141
+ ret = r
122
142
return
123
143
end if
124
144
end function get_os_type
0 commit comments