diff --git a/deps/Versions.make b/deps/Versions.make index db363e28521f5..5993ce2da2149 100644 --- a/deps/Versions.make +++ b/deps/Versions.make @@ -75,7 +75,7 @@ OBJCONV_JLL_NAME := Objconv OBJCONV_JLL_VER := 2.49.1+0 # blastrampoline -BLASTRAMPOLINE_VER := 4.0.0 +BLASTRAMPOLINE_VER := 5.0.1 BLASTRAMPOLINE_JLL_NAME := libblastrampoline # OpenBLAS diff --git a/deps/checksums/blastrampoline b/deps/checksums/blastrampoline index 24e58247de867..c0afa49764b87 100644 --- a/deps/checksums/blastrampoline +++ b/deps/checksums/blastrampoline @@ -1,32 +1,34 @@ -libblastrampoline.v4.0.0+0.aarch64-apple-darwin.tar.gz/md5/7d816200f4a97199996a67af0ba2acd5 -libblastrampoline.v4.0.0+0.aarch64-apple-darwin.tar.gz/sha512/fd3037ba25b9e874cc99bcacddb4a7a7777a493cc2c6323ad34e2dc927c2934d8f2092b6fa0058f3bdd3f2c3bf9b99387ce23590d11b0b7ef06ff9908f051979 -libblastrampoline.v4.0.0+0.aarch64-linux-gnu.tar.gz/md5/5b43a9709a478fe481b55a70b828e951 -libblastrampoline.v4.0.0+0.aarch64-linux-gnu.tar.gz/sha512/6096877375ce430239e7e074c688349669cefd24e3bd677453620ad06fb17b4a6addcca10f8c4d929c24bbf6a80c54b3f922a9db0ad4023cff1e7da7fa82adf7 -libblastrampoline.v4.0.0+0.aarch64-linux-musl.tar.gz/md5/50a474f71ebfc02d70bf2810d4dc460b -libblastrampoline.v4.0.0+0.aarch64-linux-musl.tar.gz/sha512/99293784a634286b44e5aaaf196d88f9bc607cfda24f833c30373f3d35a44fafbbd2203ea9c002826d55208a47f4de6c73dec02b56023f15293f69f7712411ab -libblastrampoline.v4.0.0+0.armv6l-linux-gnueabihf.tar.gz/md5/f68256af2059ac4d64c07529380500ac -libblastrampoline.v4.0.0+0.armv6l-linux-gnueabihf.tar.gz/sha512/804a79c8fcea320e67976b49747a41d5227c7680e0adf3c1c3e925853773418b2240f7a34de34f0fce933234479ef5e33e297cc29749f6187adf9bc15da76382 -libblastrampoline.v4.0.0+0.armv6l-linux-musleabihf.tar.gz/md5/c15fb498f38e2beb983611d505a40924 -libblastrampoline.v4.0.0+0.armv6l-linux-musleabihf.tar.gz/sha512/647454fab5a8600827aea7c5d73b5f6350bd52f4efe8cb452cb0007d7d523caa90912653e0358c58aa6c36488445882e25a212d345c743913a5402fc2db92e73 -libblastrampoline.v4.0.0+0.armv7l-linux-gnueabihf.tar.gz/md5/584366bb093ca3c60fbbde94bb63c18b -libblastrampoline.v4.0.0+0.armv7l-linux-gnueabihf.tar.gz/sha512/e9e1d04a483845b3b62a0270d1ff2ed34b583f21788118cc1fc51ef9047c69cc2633608edefffe629d101736cdb08f87071a233e3bec3ea961d6b7ad27fd55b2 -libblastrampoline.v4.0.0+0.armv7l-linux-musleabihf.tar.gz/md5/3dd37977f077a1ebb07c8cbd7052b906 -libblastrampoline.v4.0.0+0.armv7l-linux-musleabihf.tar.gz/sha512/ef18543df02d643a83b8a68264fa739a3568da624b5a40d16ba22a6ecd9acf3a85a62bb1979dca98574126a0cdd51732795a50665607580f95b8ae08eb5880f1 -libblastrampoline.v4.0.0+0.i686-linux-gnu.tar.gz/md5/e1c7d1d9046a15e0446fd826f17038d0 -libblastrampoline.v4.0.0+0.i686-linux-gnu.tar.gz/sha512/482ee1fbe2a183c11f20b4ebbcd10a053fa6d3bd68190339a39dfbaa768bf5baac0f24b68087b92c5f7489b277ca35f0a84e766d0f23c623f3fcd0cc4bbeb67d -libblastrampoline.v4.0.0+0.i686-linux-musl.tar.gz/md5/34ea6a4e3ec73e842aca69930342bbb7 -libblastrampoline.v4.0.0+0.i686-linux-musl.tar.gz/sha512/97cfcd3659d700a915f0b9ffcd4039bed0dd0bccf786bf2b037304c3cd2f9c033c58ecb5268f2a7a3d43de1f59f85f562e9fd71fd05b2b5e2cba73331fa009e2 -libblastrampoline.v4.0.0+0.i686-w64-mingw32.tar.gz/md5/713fb54fd7373847b314002dc90b0c8e -libblastrampoline.v4.0.0+0.i686-w64-mingw32.tar.gz/sha512/6535266ff16e7487bf3971b29a6662781beb38b385a6a07d1581702f19aa44ba7ab8c02d6d5934304c38cb918ba5ecfc0a05a2af6dd1ac07ea71084d879a0fc3 -libblastrampoline.v4.0.0+0.powerpc64le-linux-gnu.tar.gz/md5/70c5629d1c50fe8d7d036dd272bd38fe -libblastrampoline.v4.0.0+0.powerpc64le-linux-gnu.tar.gz/sha512/69ed2ba821a278f0545df798f084c8a3912966b8831ffadb9a1262ee9212ded65dfcfa9282e3982c02c54d0121f29d6d66bf7d68866c93f34724f87f898a93b1 -libblastrampoline.v4.0.0+0.x86_64-apple-darwin.tar.gz/md5/daf5d34cadbc15912d67b584f59e220e -libblastrampoline.v4.0.0+0.x86_64-apple-darwin.tar.gz/sha512/becfc35ffe9d0db8569b74ff6056dc6e0c685c93f3cb24104e0ae5f8232262fea1ad1507d06a389d95ec761ffd60ee094bcf4cd000a89c959b812bc0271d781e -libblastrampoline.v4.0.0+0.x86_64-linux-gnu.tar.gz/md5/333b89ae831b9b3479542da44a850e44 -libblastrampoline.v4.0.0+0.x86_64-linux-gnu.tar.gz/sha512/27179020499e378fe62217832ef47af6b57fd1abe6eda9cf31432f435157d5c6da025200b827ecf7508141e515cb21192366aba3d60658b7e8ab36e2e3bd7adc -libblastrampoline.v4.0.0+0.x86_64-linux-musl.tar.gz/md5/cf0219c4f8901a961cab5bf1043892d7 -libblastrampoline.v4.0.0+0.x86_64-linux-musl.tar.gz/sha512/b18d1e2d215060e95484e53cc56a7a8dea46d0c58c2b9c6664e3783cbabed7a2838a67f5aeed418c4a4304ecb2419f0f1e362c3161b29967b7d2274b3bb5b960 -libblastrampoline.v4.0.0+0.x86_64-unknown-freebsd.tar.gz/md5/e46abe31f535f8e639ac16900afc8d9d -libblastrampoline.v4.0.0+0.x86_64-unknown-freebsd.tar.gz/sha512/a9ecedc78451ebce290b7ae6ccfd3ee6ba1ab53e73c36f5f22925c9e9520452fd9948954e7f3e1a970a03ec592acf4336227c080cde43a7c89cd049eace502b1 -libblastrampoline.v4.0.0+0.x86_64-w64-mingw32.tar.gz/md5/4f1dfd23d177ba44322a643bf2bd69a4 -libblastrampoline.v4.0.0+0.x86_64-w64-mingw32.tar.gz/sha512/29cf3ab251e521207b1c9ce7bb73495fb33c549ed7f28e08e6b10d299b9aa6a1d4dc41ed63ffbc21ab8df22d983339050e2cd6cda92c84fb4c3fd3d5e1f21631 +blastrampoline-23de7a09bf354fe6f655c457bab5bf47fdd2486d.tar.gz/md5/b81efa951fd909591339189f5909ff6b +blastrampoline-23de7a09bf354fe6f655c457bab5bf47fdd2486d.tar.gz/sha512/1c2558bab0aeaa76e7094d8a6a9798c95f2cf4efe2960640b70f1fd752f3dfb73813d9de93b539426376571febaab22ac22c2f903ccdf3296c7b067af92fecdc +libblastrampoline.v5.0.1+0.aarch64-apple-darwin.tar.gz/md5/8b2b28517ef5db95a0b440f1a936422e +libblastrampoline.v5.0.1+0.aarch64-apple-darwin.tar.gz/sha512/3d479efc47b8c81fa85fd4d2a868a48304051432b92af90a2bcd2142673f2c422419731b8941f987aed429064532e8634ce3ea8f8d71222cf2d9b9e1e8ba2f7f +libblastrampoline.v5.0.1+0.aarch64-linux-gnu.tar.gz/md5/23e53049a0c30c8d24482a25954ee497 +libblastrampoline.v5.0.1+0.aarch64-linux-gnu.tar.gz/sha512/c5ba3609e5c47066d8a10acdd1c13e25a78bea6003a39a354000c832aeb1cf04a29392089600b10f0d6e5544aa910412bb50f238ac1f81d55ac15f70aaeb3161 +libblastrampoline.v5.0.1+0.aarch64-linux-musl.tar.gz/md5/5b6770a56cf3632473726a6da3da8ac4 +libblastrampoline.v5.0.1+0.aarch64-linux-musl.tar.gz/sha512/13f01e51b754a7bb4f78d0217380923e353499815872694718922a842fb1d41774e83ec07305b0ca9df2b054e26a626c20e685127e467b3bbb5adb3b9de3c7d3 +libblastrampoline.v5.0.1+0.armv6l-linux-gnueabihf.tar.gz/md5/32f33430008184705b37afcce7d09fdc +libblastrampoline.v5.0.1+0.armv6l-linux-gnueabihf.tar.gz/sha512/2af9ce233b473f2c81c4ba2e82253a88a519e4cbfa2cd410b27b1f1d7d06559376dd3743951105dbaa784310cce378516978b0d56bd8a196e2eb6c5fb7e6e969 +libblastrampoline.v5.0.1+0.armv6l-linux-musleabihf.tar.gz/md5/52da6ab8b5a9e03aebb032441b668d65 +libblastrampoline.v5.0.1+0.armv6l-linux-musleabihf.tar.gz/sha512/a6f1a375b61642e0b2fd235e27b5bf7e0cd1ff308cdfef27b904f62dfb9ac2bc8fa4e9a7869851310da90af4797994d86d581354070810ffedf3deea5afcc388 +libblastrampoline.v5.0.1+0.armv7l-linux-gnueabihf.tar.gz/md5/08fe2bf27a14e6a6fc4f6b394051aac9 +libblastrampoline.v5.0.1+0.armv7l-linux-gnueabihf.tar.gz/sha512/fdf8d054c67ca3e60dfc7739e02e28817d4510558341d9666b3ccc35818d1ea835a30676cfbe66bbb119c5574c683f1626088119dfc672bf730c87811835e48e +libblastrampoline.v5.0.1+0.armv7l-linux-musleabihf.tar.gz/md5/836fdbe9e759c71b3c7ae6be2ff6cd6a +libblastrampoline.v5.0.1+0.armv7l-linux-musleabihf.tar.gz/sha512/6333f8b9270f51c9e520ef8eee52c1796659bd7574c4e8cc04774d3b5e0574af63e5b252cc3340a62bf44771970331839083a528f402bc7929f32cffdbeba876 +libblastrampoline.v5.0.1+0.i686-linux-gnu.tar.gz/md5/11f127c422a4b51d6cd0abe370176c25 +libblastrampoline.v5.0.1+0.i686-linux-gnu.tar.gz/sha512/ad8510a804637ed144ee931a11629ee86e3c29e36be394c1f020a04e68b64a04a0eaa976961a993be0693b1f57b687f18dd25d3313aafa217a9140913dc9849d +libblastrampoline.v5.0.1+0.i686-linux-musl.tar.gz/md5/c865cd79d083de137714df55dfd015c9 +libblastrampoline.v5.0.1+0.i686-linux-musl.tar.gz/sha512/99f4938626f84e5636231f34842c6877be5ac0d528f7bcae6b15d51b82d0daa06eb7d086a28f2c516234a989dd384f932886303f13cbac33f972fbf64b16dfb9 +libblastrampoline.v5.0.1+0.i686-w64-mingw32.tar.gz/md5/e9e2cbb1c90b691fd06f4df81674d36a +libblastrampoline.v5.0.1+0.i686-w64-mingw32.tar.gz/sha512/c32a7449476f994f8d1bdb576959d6cc54018ac33be2d691b8627467ff5870deac7427e83f275db9b675c5d92bd13254979b06da33b782d6de3b49b1a6dda19c +libblastrampoline.v5.0.1+0.powerpc64le-linux-gnu.tar.gz/md5/5904dce9e258e4bdf71493e6cdc5fb20 +libblastrampoline.v5.0.1+0.powerpc64le-linux-gnu.tar.gz/sha512/e10761289aaf985e96e0c908f988218450b54b78a5ba0ca67b509d63c422849471b38e952b93e1de0ffa92d9b8e76b16cfd733a05940203213f7f10cdb953dc9 +libblastrampoline.v5.0.1+0.x86_64-apple-darwin.tar.gz/md5/2d15a24ce47dc67ef575ca514530734e +libblastrampoline.v5.0.1+0.x86_64-apple-darwin.tar.gz/sha512/5209953e6ed72c5840b926c2c50e67f3ef2e8612877e5c6c4962e687870a9c4f95ab83fab1db77419ffdd21e303e5a951a86d21979cbd2e2e8b9d65a2b86a693 +libblastrampoline.v5.0.1+0.x86_64-linux-gnu.tar.gz/md5/67092e794898efbe1d75bbaf19912538 +libblastrampoline.v5.0.1+0.x86_64-linux-gnu.tar.gz/sha512/cc117c4d6d7a34fc7abfff4d40584f63b3ed80a2aa8be887f22a65b25e9196a2173d624bda77e8a1f2c401792c090948ad0a9069af3e48ee886664e1b2dd771f +libblastrampoline.v5.0.1+0.x86_64-linux-musl.tar.gz/md5/32f65fa0681d81ab4f5a84d18ec0ef40 +libblastrampoline.v5.0.1+0.x86_64-linux-musl.tar.gz/sha512/177f25c3108af15653726871b110d77e0a5e94b06bd6996503f83b7dd7c0d9877beff5eeadbdff4952ac606fcec426c04a97566efc2d88d75ed380e566ffe0c0 +libblastrampoline.v5.0.1+0.x86_64-unknown-freebsd.tar.gz/md5/12494ac279b869c740712b8f774edadf +libblastrampoline.v5.0.1+0.x86_64-unknown-freebsd.tar.gz/sha512/6b896996f20552bb05d22fb314b6b9ad8e4359aec31f90fe7029cd13d37e6db1c305a87d9622ff4b036b155a12a5b305a8fd56e4074149bad8c3e6a225c70c5d +libblastrampoline.v5.0.1+0.x86_64-w64-mingw32.tar.gz/md5/4fdbfc6384ba4dbc74eda97dff919511 +libblastrampoline.v5.0.1+0.x86_64-w64-mingw32.tar.gz/sha512/e752486b9e6f6ed293a42337f432c8dcb86246523864674be5ff35fcc49f8cc848f77c41b2af1903959938f620d68b1de6028afc662f9e893045308eef72d624 diff --git a/stdlib/LinearAlgebra/src/lbt.jl b/stdlib/LinearAlgebra/src/lbt.jl index ea1ab25c9e1a8..e2efcc4b6993c 100644 --- a/stdlib/LinearAlgebra/src/lbt.jl +++ b/stdlib/LinearAlgebra/src/lbt.jl @@ -9,7 +9,9 @@ struct lbt_library_info_t suffix::Cstring active_forwards::Ptr{UInt8} interface::Int32 + complex_retstyle::Int32 f2c::Int32 + cblas::Int32 end const LBT_INTERFACE_LP64 = 32 const LBT_INTERFACE_ILP64 = 64 @@ -31,13 +33,35 @@ const LBT_F2C_MAP = Dict( ) const LBT_INV_F2C_MAP = Dict(v => k for (k, v) in LBT_F2C_MAP) +const LBT_COMPLEX_RETSTYLE_NORMAL = 0 +const LBT_COMPLEX_RETSTYLE_ARGUMENT = 1 +const LBT_COMPLEX_RETSTYLE_UNKNOWN = -1 +const LBT_COMPLEX_RETSTYLE_MAP = Dict( + LBT_COMPLEX_RETSTYLE_NORMAL => :normal, + LBT_COMPLEX_RETSTYLE_ARGUMENT => :argument, + LBT_COMPLEX_RETSTYLE_UNKNOWN => :unknown, +) +const LBT_INV_COMPLEX_RETSTYLE_MAP = Dict(v => k for (k, v) in LBT_COMPLEX_RETSTYLE_MAP) + +const LBT_CBLAS_CONFORMANT = 0 +const LBT_CBLAS_DIVERGENT = 1 +const LBT_CBLAS_UNKNOWN = -1 +const LBT_CBLAS_MAP = Dict( + LBT_CBLAS_CONFORMANT => :conformant, + LBT_CBLAS_DIVERGENT => :divergent, + LBT_CBLAS_UNKNOWN => :unknown, +) +const LBT_INV_CBLAS_MAP = Dict(v => k for (k, v) in LBT_CBLAS_MAP) + struct LBTLibraryInfo libname::String handle::Ptr{Cvoid} suffix::String active_forwards::Vector{UInt8} interface::Symbol + complex_retstyle::Symbol f2c::Symbol + cblas::Symbol function LBTLibraryInfo(lib_info::lbt_library_info_t, num_exported_symbols::UInt32) return new( @@ -46,7 +70,9 @@ struct LBTLibraryInfo unsafe_string(lib_info.suffix), unsafe_wrap(Vector{UInt8}, lib_info.active_forwards, div(num_exported_symbols,8)+1), LBT_INTERFACE_MAP[lib_info.interface], + LBT_COMPLEX_RETSTYLE_MAP[lib_info.complex_retstyle], LBT_F2C_MAP[lib_info.f2c], + LBT_CBLAS_MAP[lib_info.cblas], ) end end @@ -112,7 +138,9 @@ function Base.show(io::IO, mime::MIME{Symbol("text/plain")}, lbt::LBTLibraryInfo summary(io, lbt); println(io) println(io, "├ Library: ", basename(lbt.libname)) println(io, "├ Interface: ", lbt.interface) - print(io, "└ F2C: ", lbt.f2c) + print(io, "├ Complex return style: ", lbt.complex_retstyle) + print(io, "├ F2C: ", lbt.f2c) + print(io, "└ CBLAS: ", lbt.cblas) end function Base.show(io::IO, lbt::LBTConfig) @@ -210,20 +238,29 @@ end ## NOTE: Manually setting forwards is referred to as the 'footgun API'. It allows truly ## bizarre and complex setups to be created. If you run into strange errors while using ## it, the first thing you should ask yourself is whether you've set things up properly. -function lbt_set_forward(symbol_name, addr, interface, f2c = LBT_F2C_PLAIN; verbose::Bool = false) +function lbt_set_forward(symbol_name, addr, interface, + complex_retstyle = LBT_COMPLEX_RETSTYLE_NORMAL, + f2c = LBT_F2C_PLAIN; verbose::Bool = false) return ccall( (:lbt_set_forward, libblastrampoline), Int32, - (Cstring, Ptr{Cvoid}, Int32, Int32, Int32), + (Cstring, Ptr{Cvoid}, Int32, Int32, Int32, Int32), string(symbol_name), addr, Int32(interface), + Int32(complex_retstyle), Int32(f2c), verbose ? Int32(1) : Int32(0), ) end -function lbt_set_forward(symbol_name, addr, interface::Symbol, f2c::Symbol = :plain; kwargs...) - return lbt_set_forward(symbol_name, addr, LBT_INV_INTERFACE_MAP[interface], LBT_INV_F2C_MAP[f2c]; kwargs...) +function lbt_set_forward(symbol_name, addr, interface::Symbol, + complex_retstyle::Symbol = :normal, + f2c::Symbol = :plain; kwargs...) + return lbt_set_forward(symbol_name, addr, + LBT_INV_INTERFACE_MAP[interface], + LBT_INV_COMPLEX_RETSTYLE_MAP[complex_retstyle], + LBT_INV_F2C_MAP[f2c]; + kwargs...) end function lbt_get_forward(symbol_name, interface, f2c = LBT_F2C_PLAIN) diff --git a/stdlib/libblastrampoline_jll/Project.toml b/stdlib/libblastrampoline_jll/Project.toml index 57801bbb7274b..26c67dae8dffd 100644 --- a/stdlib/libblastrampoline_jll/Project.toml +++ b/stdlib/libblastrampoline_jll/Project.toml @@ -1,6 +1,6 @@ name = "libblastrampoline_jll" uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "4.0.0+0" +version = "5.0.1+0" [deps] Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb"