@@ -198,7 +198,7 @@ function validate_tags(tags::Dict)
198198 throw_invalid_key (" arch" )
199199 end
200200 # Validate `os`
201- if tags[" os" ] ∉ (" linux" , " macos" , " freebsd" , " windows" )
201+ if tags[" os" ] ∉ (" linux" , " macos" , " freebsd" , " openbsd " , " windows" )
202202 throw_invalid_key (" os" )
203203 end
204204 # Validate `os`/`arch` combination
@@ -375,8 +375,10 @@ function os()
375375 return " windows"
376376 elseif Sys. isapple ()
377377 return " macos"
378- elseif Sys. isbsd ()
378+ elseif Sys. isfreebsd ()
379379 return " freebsd"
380+ elseif Sys. isopenbsd ()
381+ return " openbsd"
380382 else
381383 return " linux"
382384 end
@@ -422,6 +424,7 @@ const platform_names = Dict(
422424 " macos" => " macOS" ,
423425 " windows" => " Windows" ,
424426 " freebsd" => " FreeBSD" ,
427+ " openbsd" => " OpenBSD" ,
425428 nothing => " Unknown" ,
426429)
427430
@@ -556,6 +559,8 @@ function os_str(p::AbstractPlatform)
556559 else
557560 return " -unknown-freebsd"
558561 end
562+ elseif os (p) == " openbsd"
563+ return " -unknown-openbsd"
559564 else
560565 return " -unknown"
561566 end
@@ -581,7 +586,8 @@ Sys.isapple(p::AbstractPlatform) = os(p) == "macos"
581586Sys. islinux (p:: AbstractPlatform ) = os (p) == " linux"
582587Sys. iswindows (p:: AbstractPlatform ) = os (p) == " windows"
583588Sys. isfreebsd (p:: AbstractPlatform ) = os (p) == " freebsd"
584- Sys. isbsd (p:: AbstractPlatform ) = os (p) ∈ (" freebsd" , " macos" )
589+ Sys. isopenbsd (p:: AbstractPlatform ) = os (p) == " openbsd"
590+ Sys. isbsd (p:: AbstractPlatform ) = os (p) ∈ (" freebsd" , " openbsd" , " macos" )
585591Sys. isunix (p:: AbstractPlatform ) = Sys. isbsd (p) || Sys. islinux (p)
586592
587593const arch_mapping = Dict (
632638const os_mapping = Dict (
633639 " macos" => " -apple-darwin[\\ d\\ .]*" ,
634640 " freebsd" => " -(.*-)?freebsd[\\ d\\ .]*" ,
641+ " openbsd" => " -(.*-)?openbsd[\\ d\\ .]*" ,
635642 " windows" => " -w64-mingw32" ,
636643 " linux" => " -(.*-)?linux" ,
637644)
@@ -745,6 +752,9 @@ function Base.parse(::Type{Platform}, triplet::String; validate_strict::Bool = f
745752 if os == " freebsd"
746753 os_version = extract_os_version (" freebsd" , r" .*freebsd([\d .]+)" s a)
747754 end
755+ if os == " openbsd"
756+ os_version = extract_os_version (" openbsd" , r" .*openbsd([\d .]+)" s a)
757+ end
748758 tags[" os_version" ] = os_version
749759
750760 return Platform (arch, os, tags; validate_strict)
@@ -802,7 +812,7 @@ function parse_dl_name_version(path::String, os::String)
802812 # On OSX, libraries look like `libnettle.6.3.dylib`
803813 dlregex = r" ^(.*?)((?:\. [\d ]+)*)\. dylib$" s a
804814 else
805- # On Linux and FreeBSD , libraries look like `libnettle.so.6.3.0`
815+ # On Linux and others BSD , libraries look like `libnettle.so.6.3.0`
806816 dlregex = r" ^(.*?)\. so((?:\. [\d ]+)*)$" s a
807817 end
808818
0 commit comments