update boost (#2955)

pull/2967/head
Hoildkv 1 year ago committed by GitHub
parent 593c17be90
commit 9ef7c8e31f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 62
      packages/b/boost/xmake.lua

@ -10,6 +10,7 @@ package("boost")
add_urls("https://github.com/xmake-mirror/boost/releases/download/boost-$(version).tar.bz2", {version = function (version)
return version .. "/boost_" .. (version:gsub("%.", "_"))
end})
add_versions("1.84.0", "cc4b893acf645c9d4b698e9a0f08ca8846aa5d6c68275c14c3e7949c24109454")
add_versions("1.83.0", "6478edfe2f3305127cffe8caf73ea0176c53769f4bf1585be237eb30798c3b8e")
add_versions("1.82.0", "a6e1ab9b0860e6a2881dd7b21fe9f737a095e5f33a3a874afc6a345228597ee6")
add_versions("1.81.0", "71feeed900fbccca04a3b4f2f84a7c217186f28a940ed8b7ed4725986baf99fa")
@ -142,17 +143,7 @@ package("boost")
on_install("macosx", "linux", "windows", "bsd", "mingw", "cross", function (package)
import("core.base.option")
-- get toolchain
local toolchain
if package:is_plat("windows") then
toolchain = package:toolchain("clang-cl") or package:toolchain("msvc") or
import("core.tool.toolchain").load("msvc", {plat = package:plat(), arch = package:arch()})
end
-- force boost to compile with the desired compiler
local win_toolset
local file = io.open("user-config.jam", "a")
if file then
function get_compiler(package, toolchain)
local cxx = package:build_getenv("cxx")
if package:is_plat("macosx") then
-- we uses ld/clang++ for link stdc++ for shared libraries
@ -161,11 +152,11 @@ package("boost")
if cc and cc:find("clang", 1, true) and cc:find("Xcode", 1, true) then
cc = "xcrun -sdk macosx clang++"
end
file:print("using darwin : : %s ;", cc)
return format("using darwin : : %s ;", cc)
elseif package:is_plat("windows") then
local vs_toolset = toolchain:config("vs_toolset")
local msvc_ver = ""
win_toolset = "msvc"
local win_toolset = "msvc"
if toolchain:name() == "clang-cl" then
win_toolset = "clang-win"
cxx = cxx:gsub("(clang%-cl)$", "%1.exe", 1)
@ -177,12 +168,29 @@ package("boost")
-- Specifying a version will disable b2 from forcing tools
-- from the latest installed msvc version.
file:print("using %s : %s : \"%s\" ;", win_toolset, msvc_ver, cxx:gsub("\\", "\\\\"))
return format("using %s : %s : \"%s\" ;", win_toolset, msvc_ver, cxx:gsub("\\", "\\\\"))
else
cxx = cxx:gsub("gcc$", "g++")
cxx = cxx:gsub("clang$", "clang++")
file:print("using gcc : : %s ;", cxx:gsub("\\", "/"))
return format("using gcc : : %s ;", cxx:gsub("\\", "/"))
end
end
-- get host toolchain
import("core.tool.toolchain")
local host_toolchain
if package:is_plat("windows") then
host_toolchain = toolchain.load("msvc", {plat = "windows", arch = os.arch()})
if not host_toolchain:check() then
host_toolchain = toolchain.load("clang-cl", {plat = "windows", arch = os.arch()})
end
assert(host_toolchain:check(), "host msvc or clang-cl not found!")
end
-- force boost to compile with the desired compiler
local file = io.open("user-config.jam", "w")
if file then
file:write(get_compiler(package, host_toolchain))
file:close()
end
@ -193,12 +201,10 @@ package("boost")
"--without-icu"
}
local runenvs
if package:is_plat("windows") then
runenvs = toolchain:runenvs()
-- for bootstrap.bat, all other arguments are useless
bootstrap_argv = { "msvc" }
os.vrunv("bootstrap.bat", bootstrap_argv, {envs = runenvs})
os.vrunv("bootstrap.bat", bootstrap_argv, {envs = host_toolchain:runenvs()})
elseif package:is_plat("mingw") and is_host("windows") then
bootstrap_argv = { "gcc" }
os.vrunv("bootstrap.bat", bootstrap_argv)
@ -207,6 +213,24 @@ package("boost")
else
os.vrunv("./bootstrap.sh", bootstrap_argv)
end
-- get build toolchain
local build_toolchain
local build_toolset
local runenvs
if package:is_plat("windows") then
build_toolchain = package:toolchain("clang-cl") or package:toolchain("msvc") or
toolchain.load("msvc", {plat = package:plat(), arch = package:arch()})
assert(build_toolchain:check(), "build toolchain not found!")
build_toolset = build_toolchain:name() == "clang-cl" and "clang-win" or "msvc"
runenvs = build_toolchain:runenvs()
end
local file = io.open("user-config.jam", "w")
if file then
file:write(get_compiler(package, build_toolchain))
file:close()
end
os.vrun("./b2 headers")
local njobs = option.get("jobs") or tostring(os.default_njob())
@ -251,7 +275,7 @@ package("boost")
table.insert(argv, "runtime-link=shared")
end
table.insert(argv, "cxxflags=-std:c++14")
table.insert(argv, "toolset=" .. win_toolset)
table.insert(argv, "toolset=" .. build_toolset)
elseif package:is_plat("mingw") then
table.insert(argv, "toolset=gcc")
else

Loading…
Cancel
Save