@@ -17,11 +17,17 @@ const libllvm_version = Ref{VersionNumber}()
17
17
function version ()
18
18
if ! isassigned (libllvm_version)
19
19
# FIXME : add a proper C API to LLVM
20
- version_str = unsafe_string (
20
+ version_print = unsafe_string (
21
21
ccall ((:_ZN4llvm16LTOCodeGenerator16getVersionStringEv , libllvm), Cstring, ()))
22
- m = match (r" LLVM version (?<version>.+)" , version_str)
23
- m === nothing && error (" Unrecognized version string: '$version_str '" )
24
- libllvm_version[] = VersionNumber (m[:version ])
22
+ m = match (r" LLVM version (?<version>.+)" , version_print)
23
+ m === nothing && error (" Unrecognized version string: '$version_print '" )
24
+ libllvm_version[] = if endswith (m[:version ], " jl" )
25
+ # strip the "jl" SONAME suffix (JuliaLang/julia#33058)
26
+ # (LLVM does never report a prerelease version anyway)
27
+ VersionNumber (m[:version ][1 : end - 2 ])
28
+ else
29
+ VersionNumber (m[:version ])
30
+ end
25
31
end
26
32
return libllvm_version[]
27
33
end
@@ -76,9 +82,7 @@ include("deprecated.jl")
76
82
function __init__ ()
77
83
libllvm_version = version ()
78
84
@debug " Using LLVM $libllvm_version at $(Libdl. dlpath (libllvm)) "
79
- if libllvm_version. major != Base. libllvm_version. major ||
80
- libllvm_version. minor != Base. libllvm_version. minor ||
81
- libllvm_version. patch != Base. libllvm_version. patch
85
+ if libllvm_version != Base. libllvm_version
82
86
@warn " Using a different version of LLVM ($libllvm_version ) than the one shipped with Julia ($(Base. libllvm_version) ); this is unsupported"
83
87
end
84
88
0 commit comments