add v8 (#971)
* add v8 * improve v8 * Update xmake.lua * Update xmake.lua * fix gclient config * improve v8 * improve v8 * improve v8 * improve v8 * improve v8 * improve v8 * improve v8 * Update xmake.lua * Update xmake.lua * Create xmake.lua * Create xmake.lua * Update xmake.lua * Update xmake.lua * improve v8 * Update xmake.lua * improve gn configs * fix gn configs * fix copy libs * improve links * add bsd * improve gclient * disable bsd for depot_tools * Update xmake.lua * Update xmake.luapull/991/head
parent
7c43224a2b
commit
c95c2872c4
2 changed files with 115 additions and 4 deletions
@ -0,0 +1,91 @@ |
||||
package("v8") |
||||
set_homepage("https://chromium.googlesource.com/v8/v8.git") |
||||
set_description("V8 JavaScript Engine") |
||||
|
||||
add_urls("https://github.com/v8/v8.git") |
||||
add_versions("10.0.58", "d75903764c8547b6fc35c7a3fe4991320be03135") |
||||
|
||||
add_deps("depot_tools") |
||||
|
||||
if is_plat("linux", "bsd") then |
||||
add_syslinks("pthread", "dl") |
||||
end |
||||
|
||||
add_links("v8_monolith", |
||||
"v8_initializers", |
||||
"v8_init", |
||||
"v8_compiler", |
||||
"v8_compiler_opt", |
||||
"v8_cppgc_shared", |
||||
"v8_bigint", |
||||
"v8_snapshot", |
||||
"v8_base_without_compiler", |
||||
"v8_libplatform", |
||||
"v8_libbase", |
||||
"torque_base", |
||||
"torque_generated_definitions", |
||||
"cppgc_base", |
||||
"torque_ls_base") |
||||
|
||||
on_install("linux", "macosx", function (package) |
||||
import("core.base.global") |
||||
|
||||
-- maybe we need set proxy, e.g. `xmake g --proxy=http://127.0.0.1:xxxx` |
||||
local envs = {} |
||||
local proxy = global.get("proxy") |
||||
if proxy then |
||||
envs.HTTP_PROXY = proxy |
||||
envs.HTTPS_PROXY = proxy |
||||
envs.ALL_PROXY = proxy |
||||
end |
||||
io.writefile(".gclient", [=[solutions = [ |
||||
{ |
||||
"name": ".", |
||||
"url": "https://github.com/v8/v8.git", |
||||
"deps_file": "DEPS", |
||||
"managed": False, |
||||
"custom_deps": {}, |
||||
}]]=]) |
||||
local gclient = is_host("windows") and "gclient.bat" or "gclient" |
||||
os.vrunv(gclient, {"sync", "-v"}, {envs = envs}) |
||||
local configs = { |
||||
is_official_build = false, |
||||
is_component_build = false, |
||||
is_debug = package:debug(), |
||||
is_shared_library = package:config("shared"), |
||||
symbol_level = 0, |
||||
treat_warnings_as_errors = false, |
||||
use_custom_libcxx = false, |
||||
v8_static_library = not package:config("shared"), |
||||
v8_monolithic = true, |
||||
v8_use_external_startup_data = false, |
||||
v8_enable_test_features = false, |
||||
v8_enable_i18n_support = false} |
||||
if package:is_arch("x86", "i386") then |
||||
configs.target_cpu = "x86" |
||||
elseif package:is_arch("x64", "x86_64") then |
||||
configs.target_cpu = "x64" |
||||
elseif package:is_arch("arm64", "arm64-v8a") then |
||||
configs.target_cpu = "arm64" |
||||
end |
||||
if not package:is_plat("windows") then |
||||
configs.cc = package:build_getenv("cc") |
||||
configs.cxx = package:build_getenv("cxx") |
||||
else |
||||
configs.extra_cflags = {(package:config("vs_runtime"):startswith("MT") and "/MT" or "/MD")} |
||||
end |
||||
if package:is_plat("macosx") then |
||||
configs.extra_ldflags = {"-lstdc++"} |
||||
local xcode = import("core.tool.toolchain").load("xcode", {plat = package:plat(), arch = package:arch()}) |
||||
configs.xcode_sysroot = xcode:config("xcode_sysroot") |
||||
end |
||||
import("package.tools.gn").build(package, configs, {buildir = "out"}) |
||||
os.cp("include", package:installdir()) |
||||
os.trycp("out/obj/*.a", package:installdir("lib")) |
||||
os.trycp("out/obj/*.lib", package:installdir("lib")) |
||||
os.trycp("out/obj/*.dll", package:installdir("bin")) |
||||
end) |
||||
|
||||
on_test(function (package) |
||||
assert(package:has_cxxfuncs("v8::V8::InitializePlatform(0)", {configs = {languages = "c++17"}, includes = "v8.h"})) |
||||
end) |
Loading…
Reference in new issue