mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
484 lines
17 KiB
Diff
484 lines
17 KiB
Diff
# What: adapt upstream V8 Bazel rules to this workspace's hermetic toolchains
|
|
# and externally provided dependencies.
|
|
# Scope: Bazel BUILD/defs/BUILD.icu integration only, including dependency
|
|
# wiring, generated sources, and visibility; no standalone V8 source patching.
|
|
|
|
diff --git a/orig/v8-14.9.207.2/bazel/defs.bzl b/mod/v8-14.9.207.2/bazel/defs.bzl
|
|
index bbe1495..6673518 100644
|
|
--- a/orig/v8-14.9.207.2/bazel/defs.bzl
|
|
+++ b/mod/v8-14.9.207.2/bazel/defs.bzl
|
|
@@ -33,9 +33,21 @@ _create_option_int = rule(
|
|
)
|
|
|
|
def v8_flag(name, default = False):
|
|
- _create_option_flag(name = name, build_setting_default = default)
|
|
- native.config_setting(name = "is_" + name, flag_values = {name: "True"})
|
|
- native.config_setting(name = "is_not_" + name, flag_values = {name: "False"})
|
|
+ _create_option_flag(
|
|
+ name = name,
|
|
+ build_setting_default = default,
|
|
+ visibility = ["//visibility:public"],
|
|
+ )
|
|
+ native.config_setting(
|
|
+ name = "is_" + name,
|
|
+ flag_values = {name: "True"},
|
|
+ visibility = ["//visibility:public"],
|
|
+ )
|
|
+ native.config_setting(
|
|
+ name = "is_not_" + name,
|
|
+ flag_values = {name: "False"},
|
|
+ visibility = ["//visibility:public"],
|
|
+ )
|
|
|
|
def v8_string(name, default = ""):
|
|
_create_option_string(name = name, build_setting_default = default)
|
|
@@ -97,7 +109,13 @@ v8_config = rule(
|
|
|
|
def _default_args():
|
|
return struct(
|
|
- deps = [":define_flags", "@libcxx//:libc++"],
|
|
+ deps = [":define_flags"] + select({
|
|
+ "@v8//:is_v8_use_rusty_v8_custom_libcxx": [
|
|
+ "@@//third_party/v8:rusty_v8_custom_libcxx_headers",
|
|
+ "@@//third_party/v8:rusty_v8_custom_libcxx_runtime",
|
|
+ ],
|
|
+ "//conditions:default": [],
|
|
+ }),
|
|
defines = select({
|
|
"@v8//bazel/config:is_windows": [
|
|
"UNICODE",
|
|
@@ -127,12 +145,15 @@ def _default_args():
|
|
],
|
|
"//conditions:default": [],
|
|
}) + select({
|
|
- "@v8//bazel/config:is_clang": [
|
|
- "-Wno-invalid-offsetof",
|
|
- "-Wno-deprecated-this-capture",
|
|
- "-Wno-deprecated-declarations",
|
|
- "-std=c++20",
|
|
+ "@v8//:is_v8_use_rusty_v8_custom_libcxx": [
|
|
+ "-nostdinc++",
|
|
+ "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
|
|
+ "-D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE",
|
|
+ "-D_LIBCPP_INSTRUMENTED_WITH_ASAN=0",
|
|
+ "-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS",
|
|
],
|
|
+ "//conditions:default": [],
|
|
+ }) + select({
|
|
"@v8//bazel/config:is_gcc": [
|
|
"-Wno-extra",
|
|
"-Wno-array-bounds",
|
|
@@ -152,9 +173,17 @@ def _default_args():
|
|
"-std=gnu++2a",
|
|
],
|
|
"@v8//bazel/config:is_windows": [
|
|
- "/std:c++20",
|
|
+ "-Wno-invalid-offsetof",
|
|
+ "-Wno-deprecated-this-capture",
|
|
+ "-Wno-deprecated-declarations",
|
|
+ "-std=c++20",
|
|
+ ],
|
|
+ "//conditions:default": [
|
|
+ "-Wno-invalid-offsetof",
|
|
+ "-Wno-deprecated-this-capture",
|
|
+ "-Wno-deprecated-declarations",
|
|
+ "-std=c++20",
|
|
],
|
|
- "//conditions:default": [],
|
|
}) + select({
|
|
"@v8//bazel/config:is_gcc_fastbuild": [
|
|
# Non-debug builds without optimizations fail because
|
|
@@ -178,12 +207,12 @@ def _default_args():
|
|
includes = ["include"],
|
|
linkopts = select({
|
|
"@v8//bazel/config:is_windows": [
|
|
- "Winmm.lib",
|
|
- "DbgHelp.lib",
|
|
- "Advapi32.lib",
|
|
+ "-lwinmm",
|
|
+ "-ldbghelp",
|
|
+ "-ladvapi32",
|
|
],
|
|
"@v8//bazel/config:is_macos": ["-pthread"],
|
|
- "//conditions:default": ["-Wl,--no-as-needed -ldl -latomic -pthread"],
|
|
+ "//conditions:default": ["-Wl,--no-as-needed -ldl -pthread"],
|
|
}) + select({
|
|
":should_add_rdynamic": ["-rdynamic"],
|
|
"//conditions:default": [],
|
|
@@ -459,6 +488,11 @@
|
|
def _mksnapshot(ctx):
|
|
prefix = ctx.attr.prefix
|
|
suffix = ctx.attr.suffix
|
|
+ # Windows cross-builds use Linux for the exec configuration, but the
|
|
+ # snapshot generator must match the target ABI and run on the Windows
|
|
+ # runner. Action strategies only choose where an action runs; they cannot
|
|
+ # change this executable from the exec to the target configuration.
|
|
+ tool = ctx.executable.target_tool if ctx.attr.target_os == "win" else ctx.executable.tool
|
|
outs = [
|
|
ctx.actions.declare_file(prefix + "/snapshot" + suffix + ".cc"),
|
|
ctx.actions.declare_file(prefix + "/embedded" + suffix + ".S"),
|
|
@@ -477,6 +511,6 @@
|
|
outs[1].path,
|
|
] + ctx.attr.args,
|
|
- executable = ctx.executable.tool,
|
|
+ executable = tool,
|
|
progress_message = "Running mksnapshot",
|
|
)
|
|
return [DefaultInfo(files = depset(outs))]
|
|
@@ -491,6 +525,12 @@
|
|
executable = True,
|
|
cfg = "exec",
|
|
),
|
|
+ "target_tool": attr.label(
|
|
+ mandatory = True,
|
|
+ allow_files = True,
|
|
+ executable = True,
|
|
+ cfg = "target",
|
|
+ ),
|
|
"target_os": attr.string(mandatory = True),
|
|
"prefix": attr.string(mandatory = True),
|
|
"suffix": attr.string(mandatory = True),
|
|
@@ -504,6 +544,7 @@
|
|
args = args,
|
|
prefix = "noicu",
|
|
tool = ":noicu/mksnapshot" + suffix,
|
|
+ target_tool = ":noicu/mksnapshot" + suffix,
|
|
suffix = suffix,
|
|
target_os = select({
|
|
"@v8//bazel/config:is_macos": "mac",
|
|
@@ -516,6 +557,7 @@
|
|
args = args,
|
|
prefix = "icu",
|
|
tool = ":icu/mksnapshot" + suffix,
|
|
+ target_tool = ":icu/mksnapshot" + suffix,
|
|
suffix = suffix,
|
|
target_os = select({
|
|
"@v8//bazel/config:is_macos": "mac",
|
|
diff --git a/orig/v8-14.9.207.2/BUILD.bazel b/mod/v8-14.9.207.2/BUILD.bazel
|
|
index b432f86..28c567b 100644
|
|
--- a/orig/v8-14.9.207.2/BUILD.bazel
|
|
+++ b/mod/v8-14.9.207.2/BUILD.bazel
|
|
@@ -148,6 +148,10 @@ v8_flag(name = "v8_enable_trace_maps")
|
|
|
|
v8_flag(name = "v8_enable_v8_checks")
|
|
|
|
+v8_flag(name = "v8_enable_sandbox")
|
|
+
|
|
+v8_flag(name = "v8_use_rusty_v8_custom_libcxx")
|
|
+
|
|
v8_flag(name = "v8_enable_verify_csa")
|
|
|
|
v8_flag(name = "v8_enable_verify_heap")
|
|
@@ -313,7 +317,7 @@ v8_int(
|
|
# If no explicit value for v8_enable_pointer_compression, we set it to 'none'.
|
|
v8_string(
|
|
name = "v8_enable_pointer_compression",
|
|
- default = "none",
|
|
+ default = "False",
|
|
)
|
|
|
|
# Default setting for v8_enable_pointer_compression.
|
|
@@ -513,6 +517,7 @@ v8_config(
|
|
"v8_enable_slow_dchecks": "ENABLE_SLOW_DCHECKS",
|
|
"v8_enable_runtime_call_stats": "V8_RUNTIME_CALL_STATS",
|
|
"v8_enable_snapshot_native_code_counters": "V8_SNAPSHOT_NATIVE_CODE_COUNTERS",
|
|
+ "v8_enable_sandbox": "V8_ENABLE_SANDBOX",
|
|
"v8_enable_trace_maps": "V8_TRACE_MAPS",
|
|
"v8_enable_turbofan": "V8_ENABLE_TURBOFAN",
|
|
"v8_enable_v8_checks": "V8_ENABLE_CHECKS",
|
|
@@ -4125,28 +4130,14 @@ filegroup(
|
|
}),
|
|
)
|
|
|
|
-v8_library(
|
|
- name = "lib_dragonbox",
|
|
- srcs = ["third_party/dragonbox/src/include/dragonbox/dragonbox.h"],
|
|
- hdrs = [
|
|
- "third_party/dragonbox/src/include/dragonbox/dragonbox.h",
|
|
- ],
|
|
- includes = [
|
|
- "third_party/dragonbox/src/include",
|
|
- ],
|
|
+alias(
|
|
+ name = "lib_dragonbox",
|
|
+ actual = "@dragonbox//:dragonbox",
|
|
)
|
|
|
|
-v8_library(
|
|
- name = "lib_fp16",
|
|
- srcs = ["third_party/fp16/src/include/fp16.h"],
|
|
- hdrs = [
|
|
- "third_party/fp16/src/include/fp16/fp16.h",
|
|
- "third_party/fp16/src/include/fp16/bitcasts.h",
|
|
- "third_party/fp16/src/include/fp16/macros.h",
|
|
- ],
|
|
- includes = [
|
|
- "third_party/fp16/src/include",
|
|
- ],
|
|
+alias(
|
|
+ name = "lib_fp16",
|
|
+ actual = "@fp16//:fp16",
|
|
)
|
|
|
|
filegroup(
|
|
@@ -4441,6 +4432,20 @@ genrule(
|
|
srcs = [
|
|
"include/js_protocol.pdl",
|
|
"src/inspector/inspector_protocol_config.json",
|
|
+ "third_party/inspector_protocol/code_generator.py",
|
|
+ "third_party/inspector_protocol/pdl.py",
|
|
+ "third_party/inspector_protocol/lib/Forward_h.template",
|
|
+ "third_party/inspector_protocol/lib/Object_cpp.template",
|
|
+ "third_party/inspector_protocol/lib/Object_h.template",
|
|
+ "third_party/inspector_protocol/lib/Protocol_cpp.template",
|
|
+ "third_party/inspector_protocol/lib/ValueConversions_cpp.template",
|
|
+ "third_party/inspector_protocol/lib/ValueConversions_h.template",
|
|
+ "third_party/inspector_protocol/lib/Values_cpp.template",
|
|
+ "third_party/inspector_protocol/lib/Values_h.template",
|
|
+ "third_party/inspector_protocol/templates/Exported_h.template",
|
|
+ "third_party/inspector_protocol/templates/Imported_h.template",
|
|
+ "third_party/inspector_protocol/templates/TypeBuilder_cpp.template",
|
|
+ "third_party/inspector_protocol/templates/TypeBuilder_h.template",
|
|
],
|
|
outs = [
|
|
"include/inspector/Debugger.h",
|
|
@@ -4462,15 +4467,19 @@ genrule(
|
|
"src/inspector/protocol/Schema.cpp",
|
|
"src/inspector/protocol/Schema.h",
|
|
],
|
|
- cmd = "$(location :code_generator) --jinja_dir . \
|
|
- --inspector_protocol_dir third_party/inspector_protocol \
|
|
+ cmd = "INSPECTOR_PROTOCOL_DIR=$$(dirname $(execpath third_party/inspector_protocol/code_generator.py)); \
|
|
+ PYTHONPATH=$$INSPECTOR_PROTOCOL_DIR:external/rules_python++pip+v8_python_deps_311_jinja2/site-packages:external/rules_python++pip+v8_python_deps_311_markupsafe/site-packages:$${PYTHONPATH-} \
|
|
+ $(execpath @rules_python//python/bin:python) $(execpath third_party/inspector_protocol/code_generator.py) --jinja_dir . \
|
|
+ --inspector_protocol_dir $$INSPECTOR_PROTOCOL_DIR \
|
|
--config $(location :src/inspector/inspector_protocol_config.json) \
|
|
--config_value protocol.path=$(location :include/js_protocol.pdl) \
|
|
+ --config_value crdtp.dir=third_party/inspector_protocol/crdtp \
|
|
--output_base $(@D)/src/inspector",
|
|
- local = 1,
|
|
message = "Generating inspector files",
|
|
tools = [
|
|
- ":code_generator",
|
|
+ "@rules_python//python/bin:python",
|
|
+ requirement("jinja2"),
|
|
+ requirement("markupsafe"),
|
|
],
|
|
)
|
|
|
|
@@ -4484,6 +4493,35 @@ filegroup(
|
|
],
|
|
)
|
|
|
|
+cc_library(
|
|
+ name = "rusty_v8_internal_headers",
|
|
+ hdrs = [
|
|
+ "src/libplatform/default-platform.h",
|
|
+ ],
|
|
+ strip_include_prefix = "",
|
|
+ visibility = ["//visibility:public"],
|
|
+)
|
|
+
|
|
+cc_library(
|
|
+ name = "rusty_v8_crdtp_headers",
|
|
+ hdrs = [
|
|
+ "third_party/inspector_protocol/crdtp/cbor.h",
|
|
+ "third_party/inspector_protocol/crdtp/dispatch.h",
|
|
+ "third_party/inspector_protocol/crdtp/error_support.h",
|
|
+ "third_party/inspector_protocol/crdtp/export.h",
|
|
+ "third_party/inspector_protocol/crdtp/find_by_first.h",
|
|
+ "third_party/inspector_protocol/crdtp/frontend_channel.h",
|
|
+ "third_party/inspector_protocol/crdtp/json.h",
|
|
+ "third_party/inspector_protocol/crdtp/parser_handler.h",
|
|
+ "third_party/inspector_protocol/crdtp/protocol_core.h",
|
|
+ "third_party/inspector_protocol/crdtp/serializable.h",
|
|
+ "third_party/inspector_protocol/crdtp/span.h",
|
|
+ "third_party/inspector_protocol/crdtp/status.h",
|
|
+ ],
|
|
+ strip_include_prefix = "",
|
|
+ visibility = ["//visibility:public"],
|
|
+)
|
|
+
|
|
filegroup(
|
|
name = "d8_files",
|
|
srcs = [
|
|
@@ -4603,16 +4641,9 @@ cc_library(
|
|
],
|
|
)
|
|
|
|
-cc_library(
|
|
- name = "simdutf",
|
|
- srcs = ["third_party/simdutf/simdutf.cpp"],
|
|
- hdrs = ["third_party/simdutf/simdutf.h"],
|
|
- copts = select({
|
|
- "@v8//bazel/config:is_clang": ["-std=c++20"],
|
|
- "@v8//bazel/config:is_gcc": ["-std=gnu++2a"],
|
|
- "@v8//bazel/config:is_windows": ["/std:c++20"],
|
|
- "//conditions:default": [],
|
|
- }),
|
|
+alias(
|
|
+ name = "simdutf",
|
|
+ actual = "@simdutf//:simdutf",
|
|
)
|
|
|
|
v8_library(
|
|
@@ -4629,7 +4660,7 @@ v8_library(
|
|
copts = ["-Wno-implicit-fallthrough"],
|
|
icu_deps = [
|
|
":icu/generated_torque_definitions_headers",
|
|
- "//external:icu",
|
|
+ "@icu//:icu",
|
|
],
|
|
icu_srcs = [
|
|
":generated_regexp_special_case",
|
|
@@ -4644,7 +4675,7 @@ v8_library(
|
|
],
|
|
deps = [
|
|
":lib_dragonbox",
|
|
- "//third_party/fast_float/src:fast_float",
|
|
+ "@fast_float//:fast_float",
|
|
":lib_fp16",
|
|
":simdutf",
|
|
":v8_libbase",
|
|
@@ -4700,6 +4731,7 @@ alias(
|
|
alias(
|
|
name = "core_lib_icu",
|
|
actual = "icu/v8",
|
|
+ visibility = ["//visibility:public"],
|
|
)
|
|
|
|
v8_library(
|
|
@@ -4751,7 +4783,7 @@ v8_binary(
|
|
],
|
|
deps = [
|
|
":v8_libbase",
|
|
- "//external:icu",
|
|
+ "@icu//:icu",
|
|
],
|
|
)
|
|
|
|
@@ -4791,9 +4823,20 @@ v8_binary(
|
|
":icu/generated_torque_initializers",
|
|
":icu/v8_initializers_files",
|
|
],
|
|
+ # Match GN's mksnapshot `disable_icf` config. If the linker folds distinct
|
|
+ # external-reference helpers together while producing the snapshot, the
|
|
+ # final embedder binary may not fold the same pair and startup
|
|
+ # deserialization will reject the snapshot.
|
|
+ # GN also increases the x64 Windows stack reserve because constructing the
|
|
+ # snapshot overflows the linker's 1 MiB default.
|
|
linkopts = select({
|
|
"@v8//bazel/config:is_android": ["-llog"],
|
|
- "//conditions:default": [],
|
|
+ "@v8//bazel/config:is_macos": ["-Wl,-no_deduplicate"],
|
|
+ "@v8//bazel/config:is_windows": [
|
|
+ "-Wl,/OPT:NOICF",
|
|
+ "-Wl,/STACK:2097152",
|
|
+ ],
|
|
+ "//conditions:default": ["-Wl,--icf=none"],
|
|
}),
|
|
noicu_deps = [":v8_libshared_noicu"],
|
|
noicu_srcs = [
|
|
diff --git a/orig/v8-14.9.207.2/bazel/BUILD.icu b/mod/v8-14.9.207.2/bazel/BUILD.icu
|
|
index 5fda2f4..8c3c372 100644
|
|
--- a/orig/v8-14.9.207.2/bazel/BUILD.icu
|
|
+++ b/mod/v8-14.9.207.2/bazel/BUILD.icu
|
|
@@ -1,3 +1,24 @@
|
|
+load("@rules_cc//cc:defs.bzl", "cc_library")
|
|
+
|
|
+CUSTOM_LIBCXX_COPTS = select({
|
|
+ "@v8//:is_v8_use_rusty_v8_custom_libcxx": [
|
|
+ "-nostdinc++",
|
|
+ "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
|
|
+ "-D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE",
|
|
+ "-D_LIBCPP_INSTRUMENTED_WITH_ASAN=0",
|
|
+ "-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS",
|
|
+ ],
|
|
+ "//conditions:default": [],
|
|
+})
|
|
+
|
|
+CUSTOM_LIBCXX_DEPS = select({
|
|
+ "@v8//:is_v8_use_rusty_v8_custom_libcxx": [
|
|
+ "@@//third_party/v8:rusty_v8_custom_libcxx_headers",
|
|
+ "@@//third_party/v8:rusty_v8_custom_libcxx_runtime",
|
|
+ ],
|
|
+ "//conditions:default": [],
|
|
+})
|
|
+
|
|
# Copyright 2021 the V8 project authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
@@ -16,15 +37,12 @@ cc_library(
|
|
]),
|
|
copts = select({
|
|
"@platforms//os:windows": [
|
|
- "/wd4005", # Macro redefinition.
|
|
- "/wd4068", # Unknown pragmas.
|
|
- "/wd4267", # Conversion from size_t on 64-bits.
|
|
- "/utf-8", # ICU source files are in UTF-8.
|
|
+ "-Wno-deprecated-declarations",
|
|
],
|
|
"//conditions:default": [
|
|
"-Wno-deprecated-declarations",
|
|
],
|
|
- }),
|
|
+ }) + CUSTOM_LIBCXX_COPTS,
|
|
data = [":icudata"],
|
|
defines = [
|
|
"HAVE_DLOPEN=0",
|
|
@@ -54,6 +72,7 @@ cc_library(
|
|
"U_ICUDATAENTRY_IN_COMMON",
|
|
],
|
|
tags = ["requires-rtti"],
|
|
+ deps = CUSTOM_LIBCXX_DEPS,
|
|
alwayslink = 1,
|
|
)
|
|
|
|
@@ -65,19 +84,16 @@ cc_library(
|
|
]),
|
|
copts = select({
|
|
"@platforms//os:windows": [
|
|
- "/wd4005", # Macro redefinition.
|
|
- "/wd4068", # Unknown pragmas.
|
|
- "/wd4267", # Conversion from size_t on 64-bits.
|
|
- "/utf-8", # ICU source files are in UTF-8.
|
|
+ "-Wno-deprecated-declarations",
|
|
],
|
|
"//conditions:default": [
|
|
"-Wno-deprecated-declarations",
|
|
],
|
|
- }),
|
|
+ }) + CUSTOM_LIBCXX_COPTS,
|
|
local_defines = [
|
|
"U_I18N_IMPLEMENTATION",
|
|
],
|
|
- deps = [":icuuc"],
|
|
+ deps = [":icuuc"] + CUSTOM_LIBCXX_DEPS,
|
|
alwayslink = 1,
|
|
)
|
|
|
|
@@ -93,13 +109,10 @@ cc_library(
|
|
]),
|
|
copts = select({
|
|
"@platforms//os:windows": [
|
|
- "/wd4005", # Macro redefinition.
|
|
- "/wd4068", # Unknown pragmas.
|
|
- "/wd4267", # Conversion from size_t on 64-bits.
|
|
- "/utf-8", # ICU source files are in UTF-8.
|
|
+ "-Wno-deprecated-declarations",
|
|
],
|
|
"//conditions:default": [],
|
|
- }),
|
|
+ }) + CUSTOM_LIBCXX_COPTS,
|
|
include_prefix = "third_party/icu",
|
|
local_defines = [
|
|
"U_COMMON_IMPLEMENTATION",
|
|
@@ -108,6 +121,6 @@ cc_library(
|
|
deps = [
|
|
":icui18n",
|
|
":icuuc",
|
|
- ],
|
|
+ ] + CUSTOM_LIBCXX_DEPS,
|
|
alwayslink = 1,
|
|
)
|