Skip to content

Commit 427c67d

Browse files
committed
Non-breaking move of macOS and Darwin checks to Objective-C.jl
1 parent 626b0a3 commit 427c67d

File tree

3 files changed

+12
-75
lines changed

3 files changed

+12
-75
lines changed

src/Metal.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import LLVMDowngrader_jll
99
using Preferences: @load_preference, load_preference
1010
using ExprTools: splitdef, combinedef
1111
using ObjectiveC, .CoreFoundation, .Foundation, .Dispatch, .OS
12+
import ObjectiveC: is_macos, darwin_version, macos_version
1213
import KernelAbstractions
1314

1415
include("version.jl")

src/version.jl

Lines changed: 0 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1,78 +1,3 @@
1-
# version and support queries
2-
3-
@noinline function _syscall_version(name)
4-
size = Ref{Csize_t}()
5-
err = @ccall sysctlbyname(name::Cstring, C_NULL::Ptr{Cvoid}, size::Ptr{Csize_t},
6-
C_NULL::Ptr{Cvoid}, 0::Csize_t)::Cint
7-
Base.systemerror("sysctlbyname", err != 0)
8-
9-
osrelease = Vector{UInt8}(undef, size[])
10-
err = @ccall sysctlbyname(name::Cstring, osrelease::Ptr{Cvoid}, size::Ptr{Csize_t},
11-
C_NULL::Ptr{Cvoid}, 0::Csize_t)::Cint
12-
Base.systemerror("sysctlbyname", err != 0)
13-
14-
verstr = view(String(osrelease), 1:size[]-1)
15-
parse(VersionNumber, verstr)
16-
end
17-
18-
@static if isdefined(Base, :OncePerProcess) # VERSION >= v"1.12.0-DEV.1421"
19-
const darwin_version = OncePerProcess{VersionNumber}() do
20-
_syscall_version("kern.osrelease")
21-
end
22-
const macos_version = OncePerProcess{VersionNumber}() do
23-
_syscall_version("kern.osproductversion")
24-
end
25-
else
26-
const _darwin_version = Ref{VersionNumber}()
27-
function darwin_version()
28-
if !isassigned(_darwin_version)
29-
_darwin_version[] = _syscall_version("kern.osrelease")
30-
end
31-
_darwin_version[]
32-
end
33-
34-
const _macos_version = Ref{VersionNumber}()
35-
function macos_version()
36-
if !isassigned(_macos_version)
37-
_macos_version[] = _syscall_version("kern.osproductversion")
38-
end
39-
_macos_version[]
40-
end
41-
end
42-
43-
@doc """
44-
Metal.darwin_version() -> VersionNumber
45-
46-
Returns the host Darwin kernel version.
47-
48-
See also [`Metal.macos_version`](@ref).
49-
""" darwin_version
50-
51-
@doc """
52-
Metal.macos_version() -> VersionNumber
53-
54-
Returns the host macOS version.
55-
56-
See also [`Metal.darwin_version`](@ref).
57-
""" macos_version
58-
59-
"""
60-
Metal.is_macos([ver::VersionNumber]) -> Bool
61-
62-
Returns whether the OS is macOS with version `ver` or newer.
63-
64-
See also [`Metal.macos_version`](@ref).
65-
"""
66-
function is_macos(ver=nothing)
67-
if !Sys.isapple()
68-
false
69-
elseif ver === nothing
70-
true
71-
else
72-
macos_version() >= ver
73-
end
74-
end
75-
761

772
## support queries
783

test/version.jl

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
@testset "Version" begin
2+
3+
@test Metal.darwin_version() isa VersionNumber
4+
@test Metal.macos_version() isa VersionNumber
5+
@test Metal.is_macos(Metal.macos_version())
6+
7+
@test Metal.metallib_support() isa VersionNumber
8+
@test Metal.air_support() isa VersionNumber
9+
@test Metal.metal_support() isa VersionNumber
10+
11+
end # testset "Version"

0 commit comments

Comments
 (0)