Boost: Better asan fix (#4279)

pull/4293/head
Jérôme Leclercq 10 months ago committed by GitHub
parent dde7ad731a
commit 41d2e33954
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 50
      packages/b/boost/xmake.lua

@ -1,5 +1,4 @@
package("boost") package("boost")
set_homepage("https://www.boost.org/") set_homepage("https://www.boost.org/")
set_description("Collection of portable C++ source libraries.") set_description("Collection of portable C++ source libraries.")
set_license("BSL-1.0") set_license("BSL-1.0")
@ -81,7 +80,7 @@ package("boost")
end end
on_load(function (package) on_load(function (package)
function get_linkname(package, libname) local function get_linkname(package, libname)
local linkname local linkname
if package:is_plat("windows") then if package:is_plat("windows") then
linkname = (package:config("shared") and "boost_" or "libboost_") .. libname linkname = (package:config("shared") and "boost_" or "libboost_") .. libname
@ -100,11 +99,11 @@ package("boost")
if package:debug() then if package:debug() then
linkname = linkname .. "-gd" linkname = linkname .. "-gd"
end end
elseif package:config("asan") or vs_runtime == "MTd" then
linkname = linkname .. "-sgd"
elseif vs_runtime == "MT" then elseif vs_runtime == "MT" then
linkname = linkname .. "-s" linkname = linkname .. "-s"
elseif vs_runtime == "MTd" then elseif package:config("asan") or vs_runtime == "MDd" then
linkname = linkname .. "-sgd"
elseif vs_runtime == "MDd" then
linkname = linkname .. "-gd" linkname = linkname .. "-gd"
end end
else else
@ -115,20 +114,18 @@ package("boost")
return linkname return linkname
end end
if not package:is_plat("windows") then -- we need the fixed link order
-- we need the fixed link order local sublibs = {log = {"log_setup", "log"},
local sublibs = {log = {"log_setup", "log"}, python = {"python", "numpy"},
python = {"python", "numpy"}, stacktrace = {"stacktrace_backtrace", "stacktrace_basic"}}
stacktrace = {"stacktrace_backtrace", "stacktrace_basic"}} for _, libname in ipairs(libnames) do
for _, libname in ipairs(libnames) do local libs = sublibs[libname]
local libs = sublibs[libname] if libs then
if libs then for _, lib in ipairs(libs) do
for _, lib in ipairs(libs) do package:add("links", get_linkname(package, lib))
package:add("links", get_linkname(package, lib))
end
else
package:add("links", get_linkname(package, libname))
end end
else
package:add("links", get_linkname(package, libname))
end end
end end
-- disable auto-link all libs -- disable auto-link all libs
@ -147,7 +144,7 @@ package("boost")
on_install("macosx", "linux", "windows", "bsd", "mingw", "cross", function (package) on_install("macosx", "linux", "windows", "bsd", "mingw", "cross", function (package)
import("core.base.option") import("core.base.option")
function get_compiler(package, toolchain) local function get_compiler(package, toolchain)
local cxx = package:build_getenv("cxx") local cxx = package:build_getenv("cxx")
if package:is_plat("macosx") then if package:is_plat("macosx") then
-- we uses ld/clang++ for link stdc++ for shared libraries -- we uses ld/clang++ for link stdc++ for shared libraries
@ -394,4 +391,19 @@ package("boost")
} }
]]}, {configs = {languages = "c++14"}})) ]]}, {configs = {languages = "c++14"}}))
end end
if package:config("filesystem") then
assert(package:check_cxxsnippets({test = [[
#include <boost/filesystem.hpp>
#include <iostream>
static void test() {
boost::filesystem::path path("/path/to/directory");
if (boost::filesystem::exists(path)) {
std::cout << "Directory exists" << std::endl;
} else {
std::cout << "Directory does not exist" << std::endl;
}
}
]]}, {configs = {languages = "c++14"}}))
end
end) end)

Loading…
Cancel
Save