electron/patches/node/build_add_gn_build_files.patch
Shelley Vohr 9c94fd7afb
chore: upgrade to Node.js v20 (#40545)
* chore: upgrade to Node.js v20

* src: allow embedders to override NODE_MODULE_VERSION

https://github.com/nodejs/node/pull/49279

* src: fix missing trailing ,

https://github.com/nodejs/node/pull/46909

* src,tools: initialize cppgc

https://github.com/nodejs/node/pull/45704

* tools: allow passing absolute path of config.gypi in js2c

https://github.com/nodejs/node/pull/49162

* tools: port js2c.py to C++

https://github.com/nodejs/node/pull/46997

* doc,lib: disambiguate the old term, NativeModule

https://github.com/nodejs/node/pull/45673

* chore: fixup Node.js BSSL tests

* https://github.com/nodejs/node/pull/49492
* https://github.com/nodejs/node/pull/44498

* deps: upgrade to libuv 1.45.0

https://github.com/nodejs/node/pull/48078

* deps: update V8 to 10.7

https://github.com/nodejs/node/pull/44741

* test: use gcUntil() in test-v8-serialize-leak

https://github.com/nodejs/node/pull/49168

* module: make CJS load from ESM loader

https://github.com/nodejs/node/pull/47999

* src: make BuiltinLoader threadsafe and non-global

https://github.com/nodejs/node/pull/45942

* chore: address changes to CJS/ESM loading

* module: make CJS load from ESM loader (https://github.com/nodejs/node/pull/47999)
* lib: improve esm resolve performance (https://github.com/nodejs/node/pull/46652)

* bootstrap: optimize modules loaded in the built-in snapshot

https://github.com/nodejs/node/pull/45849

* test: mark test-runner-output as flaky

https://github.com/nodejs/node/pull/49854

* lib: lazy-load deps in modules/run_main.js

https://github.com/nodejs/node/pull/45849

* url: use private properties for brand check

https://github.com/nodejs/node/pull/46904

* test: refactor `test-node-output-errors`

https://github.com/nodejs/node/pull/48992

* assert: deprecate callTracker

https://github.com/nodejs/node/pull/47740

* src: cast v8::Object::GetInternalField() return value to v8::Value

https://github.com/nodejs/node/pull/48943

* test: adapt test-v8-stats for V8 update

https://github.com/nodejs/node/pull/45230

* tls: ensure TLS Sockets are closed if the underlying wrap closes

https://github.com/nodejs/node/pull/49327

* test: deflake test-tls-socket-close

https://github.com/nodejs/node/pull/49575

* net: fix crash due to simultaneous close/shutdown on JS Stream Sockets

https://github.com/nodejs/node/pull/49400

* net: use asserts in JS Socket Stream to catch races in future

https://github.com/nodejs/node/pull/49400

* lib: fix BroadcastChannel initialization location

https://github.com/nodejs/node/pull/46864

* src: create BaseObject with node::Realm

https://github.com/nodejs/node/pull/44348

* src: implement DataQueue and non-memory resident Blob

https://github.com/nodejs/node/pull/45258

* sea: add support for V8 bytecode-only caching

https://github.com/nodejs/node/pull/48191

* chore: fixup patch indices

* gyp: put filenames in variables

https://github.com/nodejs/node/pull/46965

* build: modify js2c.py into GN executable

* fix: (WIP) handle string replacement of fs -> original-fs

* [v20.x] backport vm-related memory fixes

https://github.com/nodejs/node/pull/49874

* src: make BuiltinLoader threadsafe and non-global

https://github.com/nodejs/node/pull/45942

* src: avoid copying string in fs_permission

https://github.com/nodejs/node/pull/47746

* look upon my works ye mighty

and dispair

* chore: patch cleanup

* [api] Remove AllCan Read/Write

https://chromium-review.googlesource.com/c/v8/v8/+/5006387

* fix: missing include for NODE_EXTERN

* chore: fixup patch indices

* fix: fail properly when js2c fails in Node.js

* build: fix js2c root_gen_dir

* fix: lib/fs.js -> lib/original-fs.js

* build: fix original-fs file xforms

* fixup! module: make CJS load from ESM loader

* build: get rid of CppHeap for now

* build: add patch to prevent extra fs lookup on esm load

* build: greatly simplify js2c modifications

Moves our original-fs modifications back into a super simple python script action, wires up the output of that action into our call to js2c

* chore: update to handle moved internal/modules/helpers file

* test: update @types/node test

* feat: enable preventing cppgc heap creation

* feat: optionally prevent calling V8::EnableWebAssemblyTrapHandler

* fix: no cppgc initialization in the renderer

* gyp: put filenames in variables

https://github.com/nodejs/node/pull/46965

* test: disable single executable tests

* fix: nan tests failing on node headers missing file

* tls,http2: send fatal alert on ALPN mismatch

https://github.com/nodejs/node/pull/44031

* test: disable snapshot tests

* https://github.com/nodejs/node/pull/47887
* https://github.com/nodejs/node/pull/49684
* https://github.com/nodejs/node/pull/44193

* build: use deps/v8 for v8/tools

Node.js hard depends on these in their builtins

* test: fix edge snapshot stack traces

https://github.com/nodejs/node/pull/49659

* build: remove js2c //base dep

* build: use electron_js2c_toolchain to build node_js2c

* fix: don't create SafeSet outside packageResolve

Fixes failure in parallel/test-require-delete-array-iterator:

=== release test-require-delete-array-iterator ===
Path: parallel/test-require-delete-array-iterator
node:internal/per_context/primordials:426
    constructor(i) { super(i); } // eslint-disable-line no-useless-constructor
                     ^

TypeError: object is not iterable (cannot read property Symbol(Symbol.iterator))
    at new Set (<anonymous>)
    at new SafeSet (node:internal/per_context/primordials:426:22)

* fix: failing crashReporter tests on Linux

These were failing because our change from node::InitializeNodeWithArgs to
node::InitializeOncePerProcess meant that we now inadvertently called
PlatformInit, which reset signal handling. This meant that our intentional
crash function ElectronBindings::Crash no longer worked and the renderer process
no longer crashed when process.crash() was called. We don't want to use Node.js'
default signal handling in the renderer process, so we disable it by passing
kNoDefaultSignalHandling to node::InitializeOncePerProcess.

* build: only create cppgc heap on non-32 bit platforms

* chore: clean up util:CompileAndCall

* src: fix compatility with upcoming V8 12.1 APIs

https://github.com/nodejs/node/pull/50709

* fix: use thread_local BuiltinLoader

* chore: fixup v8 patch indices

---------

Co-authored-by: Keeley Hammond <vertedinde@electronjs.org>
Co-authored-by: Samuel Attard <marshallofsound@electronjs.org>
2023-11-30 09:51:35 -05:00

2645 lines
80 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jeremy Apthorp <nornagon@nornagon.net>
Date: Tue, 26 Feb 2019 17:07:45 -0800
Subject: build: add GN build files
This adds GN build files for Node, so we don't have to build with GYP.
diff --git a/BUILD.gn b/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..24c122008e0fc009833cf9189ebf43883207c754
--- /dev/null
+++ b/BUILD.gn
@@ -0,0 +1,402 @@
+import("//v8/gni/v8.gni")
+import("//electron/js2c_toolchain.gni")
+import("node.gni")
+
+declare_args() {
+ # Enable the V8 inspector protocol for use with node.
+ node_enable_inspector = true
+
+ # Build node with SSL support.
+ # The variable is called "openssl" for parity with node's GYP build.
+ node_use_openssl = true
+
+ # Use the specified path to system CA (PEM format) in addition to
+ # the BoringSSL supplied CA store or compiled-in Mozilla CA copy.
+ node_openssl_system_ca_path = ""
+
+ # Initialize v8 platform during node.js startup.
+ # NB. this must be turned off in Electron, because Electron initializes the
+ # v8 platform itself.
+ node_use_v8_platform = false
+
+ # Build with DTrace support.
+ node_use_dtrace = false
+
+ # Build with ETW support.
+ node_use_etw = false
+
+ # Build JavaScript in lib/ with DCHECK macros.
+ node_debug_lib = false
+
+ # Custom build tag.
+ node_tag = ""
+
+ # V8 options to pass, see `node --v8-options` for examples
+ node_v8_options = ""
+
+ # Provide a custom URL prefix for the `process.release` properties
+ # `sourceUrl` and `headersUrl`. When compiling a release build, this will
+ # default to https://nodejs.org/download/release/')
+ node_release_urlbase = ""
+
+ # Allows downstream packagers (eg. Linux distributions) to build Electron against system shared libraries.
+ use_system_cares = false
+ use_system_nghttp2 = false
+ use_system_llhttp = false
+ use_system_histogram = false
+}
+
+if (is_linux) {
+ import("//build/config/linux/pkg_config.gni")
+ if (use_system_cares) {
+ pkg_config("cares") {
+ packages = [ "libcares" ]
+ }
+ }
+ if (use_system_nghttp2) {
+ pkg_config("nghttp2") {
+ packages = [ "libnghttp2" ]
+ }
+ }
+}
+
+assert(!node_use_dtrace, "node_use_dtrace not supported in GN")
+assert(!node_use_etw, "node_use_etw not supported in GN")
+
+assert(!node_enable_inspector || node_use_openssl,
+ "node_enable_inspector requires node_use_openssl")
+
+config("node_internals") {
+ defines = [ "NODE_WANT_INTERNALS=1" ]
+}
+
+node_files = read_file("filenames.json", "json")
+library_files = node_files.library_files
+fs_files = node_files.fs_files
+original_fs_files = []
+foreach(file, fs_files) {
+ original_fs_files += [string_replace(string_replace(file, "internal/fs/", "internal/original-fs/"), "lib/fs.js", "lib/original-fs.js")]
+}
+
+copy("node_js2c_inputs") {
+ sources = library_files
+ outputs = [
+ "$target_gen_dir/js2c_inputs/{{source_target_relative}}",
+ ]
+}
+
+action("node_js2c_original_fs") {
+ script = "tools/generate_original_fs.py"
+ inputs = fs_files
+ outputs = []
+ foreach(file, fs_files + original_fs_files) {
+ outputs += ["$target_gen_dir/js2c_inputs/$file"]
+ }
+
+ args = [rebase_path("$target_gen_dir/js2c_inputs")] + fs_files
+}
+
+action("node_js2c_exec") {
+ deps = [
+ "//electron:generate_config_gypi",
+ ":node_js2c_original_fs",
+ ":node_js2c_inputs",
+ ":node_js2c($electron_js2c_toolchain)"
+ ]
+ config_gypi = [ "$root_gen_dir/config.gypi" ]
+ inputs = library_files + get_target_outputs(":node_js2c_original_fs") + config_gypi
+ outputs = [
+ "$target_gen_dir/node_javascript.cc",
+ ]
+
+ script = "//electron/build/run-in-dir.py"
+ out_dir = get_label_info(":anything($electron_js2c_toolchain)", "root_out_dir")
+ args = [ rebase_path("$target_gen_dir/js2c_inputs"), rebase_path("$out_dir/node_js2c") ] +
+ rebase_path(outputs) + library_files + fs_files + original_fs_files + rebase_path(config_gypi)
+}
+
+config("node_features") {
+ defines = []
+ if (node_enable_inspector) {
+ defines += [ "HAVE_INSPECTOR=1" ]
+ } else {
+ defines += [ "HAVE_INSPECTOR=0" ]
+ }
+ if (node_use_openssl) {
+ defines += [ "HAVE_OPENSSL=1" ]
+ } else {
+ defines += [ "HAVE_OPENSSL=0" ]
+ }
+ if (v8_enable_i18n_support) {
+ defines += [ "NODE_HAVE_I18N_SUPPORT=1" ]
+ } else {
+ defines += [ "NODE_HAVE_I18N_SUPPORT=0" ]
+ }
+ if (node_use_v8_platform) {
+ defines += [ "NODE_USE_V8_PLATFORM=1" ]
+ } else {
+ defines += [ "NODE_USE_V8_PLATFORM=0" ]
+ }
+}
+
+config("node_lib_config") {
+ include_dirs = [ "src" ]
+
+ # FIXME(deepak1556): include paths should be corrected,
+ # refer https://docs.google.com/presentation/d/1oxNHaVjA9Gn_rTzX6HIpJHP7nXRua_0URXxxJ3oYRq0/edit#slide=id.g71ecd450e_2_702
+ cflags = [ "-Wno-microsoft-include" ]
+
+ configs = [ ":node_features" ]
+
+ if (is_debug) {
+ defines = [ "DEBUG" ]
+ }
+}
+
+config("node_internal_config") {
+ visibility = [
+ ":*",
+ "src/inspector:*",
+ ]
+ defines = [
+ "NODE_WANT_INTERNALS=1",
+ "NODE_IMPLEMENTATION",
+ ]
+ if (node_module_version != "") {
+ defines += [ "NODE_EMBEDDER_MODULE_VERSION=" + node_module_version ]
+ }
+ if (is_component_build) {
+ defines += [
+ "NODE_SHARED_MODE",
+ ]
+ }
+
+ if (target_cpu == "x86") {
+ node_arch = "ia32"
+ } else {
+ node_arch = target_cpu
+ }
+ defines += [ "NODE_ARCH=\"$node_arch\"" ]
+
+ if (target_os == "win") {
+ node_platform = "win32"
+ } else if (target_os == "mac") {
+ node_platform = "darwin"
+ } else {
+ node_platform = target_os
+ }
+ defines += [ "NODE_PLATFORM=\"$node_platform\"" ]
+
+ if (is_win) {
+ defines += [
+ "NOMINMAX",
+ "_UNICODE=1",
+ ]
+ } else {
+ defines += [ "__POSIX__" ]
+ }
+
+ if (node_tag != "") {
+ defines += [ "NODE_TAG=\"$node_tag\"" ]
+ }
+ if (node_v8_options != "") {
+ defines += [ "NODE_V8_OPTIONS=\"$node_v8_options\"" ]
+ }
+ if (node_release_urlbase != "") {
+ defines += [ "NODE_RELEASE_URLBASE=\"$node_release_urlbase\"" ]
+ }
+
+ if (node_use_openssl) {
+ defines += [
+ "NODE_OPENSSL_SYSTEM_CERT_PATH=\"$node_openssl_system_ca_path\"",
+ "EVP_CTRL_CCM_SET_TAG=EVP_CTRL_GCM_SET_TAG",
+ ]
+ }
+}
+
+executable("overlapped-checker") {
+ sources = []
+ if (is_win) {
+ sources += [ "test/overlapped-checker/main_win.c" ]
+ } else {
+ sources += [ "test/overlapped-checker/main_unix.c" ]
+ }
+}
+
+if (current_toolchain == electron_js2c_toolchain) {
+ executable("node_js2c") {
+ defines = []
+ sources = [
+ "tools/js2c.cc",
+ "tools/executable_wrapper.h"
+ ]
+ include_dirs = [ "tools" ]
+ deps = [
+ "deps/simdutf($electron_js2c_toolchain)",
+ "deps/uv($electron_js2c_toolchain)",
+ "//v8"
+ ]
+
+ if (!is_win) {
+ defines += [ "NODE_JS2C_USE_STRING_LITERALS" ]
+ }
+ if (is_debug) {
+ cflags_cc = [ "-g", "-O0" ]
+ defines += [ "DEBUG" ]
+ }
+ }
+}
+
+component("node_lib") {
+ deps = [
+ ":node_js2c_exec",
+ "deps/googletest:gtest",
+ "deps/ada",
+ "deps/base64",
+ "deps/simdutf",
+ "deps/uvwasi",
+ "//third_party/zlib",
+ "//third_party/brotli:dec",
+ "//third_party/brotli:enc",
+ "//v8:v8_libplatform",
+ ]
+ if (use_system_cares) {
+ configs += [ ":cares" ]
+ } else {
+ deps += [ "deps/cares" ]
+ }
+ if (use_system_nghttp2) {
+ configs += [ ":nghttp2" ]
+ } else {
+ deps += [ "deps/nghttp2" ]
+ }
+ public_deps = [
+ "deps/uv",
+ "//electron:electron_js2c",
+ "//v8",
+ ]
+ configs += [ ":node_internal_config" ]
+ public_configs = [ ":node_lib_config" ]
+ include_dirs = [
+ "src",
+ "deps/postject"
+ ]
+ libs = []
+ if (use_system_llhttp) {
+ libs += [ "llhttp" ]
+ } else {
+ deps += [ "deps/llhttp" ]
+ }
+ if (use_system_histogram) {
+ libs += [ "hdr_histogram" ]
+ include_dirs += [ "/usr/include/hdr" ]
+ } else {
+ deps += [ "deps/histogram" ]
+ }
+ frameworks = []
+ cflags_cc = [
+ "-Wno-deprecated-declarations",
+ "-Wno-implicit-fallthrough",
+ "-Wno-return-type",
+ "-Wno-sometimes-uninitialized",
+ "-Wno-string-plus-int",
+ "-Wno-unused-function",
+ "-Wno-unused-label",
+ "-Wno-unused-private-field",
+ "-Wno-unused-variable",
+ "-Wno-shadow",
+ ]
+
+ if (v8_enable_i18n_support) {
+ deps += [ "//third_party/icu" ]
+ }
+
+ sources = node_files.node_sources
+ sources += [
+ "$root_gen_dir/electron_natives.cc",
+ "$target_gen_dir/node_javascript.cc",
+ "src/node_snapshot_stub.cc",
+ ]
+
+ if (is_win) {
+ libs += [ "psapi.lib" ]
+ }
+ if (is_mac) {
+ frameworks += [ "CoreFoundation.framework" ]
+ }
+
+ if (node_enable_inspector) {
+ sources += [
+ "src/inspector_agent.cc",
+ "src/inspector_agent.h",
+ "src/inspector_io.cc",
+ "src/inspector_io.h",
+ "src/inspector_js_api.cc",
+ "src/inspector_profiler.cc",
+ "src/inspector_socket.cc",
+ "src/inspector_socket.h",
+ "src/inspector_socket_server.cc",
+ "src/inspector_socket_server.h",
+ ]
+ deps += [ "src/inspector" ]
+ }
+
+ if (node_use_openssl) {
+ deps += [ "//third_party/boringssl" ]
+ sources += [
+ "src/crypto/crypto_aes.cc",
+ "src/crypto/crypto_aes.h",
+ "src/crypto/crypto_bio.cc",
+ "src/crypto/crypto_bio.h",
+ "src/crypto/crypto_cipher.cc",
+ "src/crypto/crypto_cipher.h",
+ "src/crypto/crypto_clienthello-inl.h",
+ "src/crypto/crypto_clienthello.cc",
+ "src/crypto/crypto_clienthello.h",
+ "src/crypto/crypto_common.cc",
+ "src/crypto/crypto_common.h",
+ "src/crypto/crypto_context.cc",
+ "src/crypto/crypto_context.h",
+ "src/crypto/crypto_dh.cc",
+ "src/crypto/crypto_dh.h",
+ "src/crypto/crypto_dsa.cc",
+ "src/crypto/crypto_dsa.h",
+ "src/crypto/crypto_ec.cc",
+ "src/crypto/crypto_ec.h",
+ "src/crypto/crypto_groups.h",
+ "src/crypto/crypto_hash.cc",
+ "src/crypto/crypto_hash.h",
+ "src/crypto/crypto_hkdf.cc",
+ "src/crypto/crypto_hkdf.h",
+ "src/crypto/crypto_hmac.cc",
+ "src/crypto/crypto_hmac.h",
+ "src/crypto/crypto_keygen.cc",
+ "src/crypto/crypto_keygen.h",
+ "src/crypto/crypto_keys.cc",
+ "src/crypto/crypto_keys.h",
+ "src/crypto/crypto_pbkdf2.cc",
+ "src/crypto/crypto_pbkdf2.h",
+ "src/crypto/crypto_random.cc",
+ "src/crypto/crypto_random.h",
+ "src/crypto/crypto_rsa.cc",
+ "src/crypto/crypto_rsa.h",
+ "src/crypto/crypto_scrypt.cc",
+ "src/crypto/crypto_scrypt.h",
+ "src/crypto/crypto_sig.cc",
+ "src/crypto/crypto_sig.h",
+ "src/crypto/crypto_spkac.cc",
+ "src/crypto/crypto_spkac.h",
+ "src/crypto/crypto_timing.cc",
+ "src/crypto/crypto_timing.h",
+ "src/crypto/crypto_tls.cc",
+ "src/crypto/crypto_tls.h",
+ "src/crypto/crypto_util.cc",
+ "src/crypto/crypto_util.h",
+ "src/crypto/crypto_x509.cc",
+ "src/crypto/crypto_x509.h",
+ "src/node_crypto.cc",
+ "src/node_crypto.h",
+ ]
+ cflags_cc += [ "-Wno-sign-compare" ]
+ }
+}
diff --git a/deps/ada/BUILD.gn b/deps/ada/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..a564653c3f05608d59fed5aa071d63b81f4e0e42
--- /dev/null
+++ b/deps/ada/BUILD.gn
@@ -0,0 +1,28 @@
+import("//v8/gni/v8.gni")
+
+config("ada_config") {
+ include_dirs = [ "." ]
+}
+
+static_library("ada") {
+ include_dirs = [ "." ]
+ sources = [ "ada.cpp" ]
+
+ public_configs = [ ":ada_config" ]
+
+ defines = []
+ deps = []
+
+ if (v8_enable_i18n_support) {
+ deps += [
+ "//third_party/icu:icui18n",
+ "//third_party/icu:icuuc",
+ ]
+
+ if (is_win) {
+ deps += [ "//third_party/icu:icudata" ]
+ }
+ } else {
+ defines += [ "ADA_HAS_ICU=0" ]
+ }
+}
diff --git a/deps/base64/BUILD.gn b/deps/base64/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..9b97aabe865e4cf12f6c3ccda196b372769a823b
--- /dev/null
+++ b/deps/base64/BUILD.gn
@@ -0,0 +1,135 @@
+config("base64_config") {
+ include_dirs = [
+ "base64/include",
+ "base64/lib",
+ ]
+
+ defines = [ "BASE64_STATIC_DEFINE" ]
+}
+
+static_library("base64") {
+ defines = []
+ deps = [
+ ":base64_neon32",
+ ":base64_neon64",
+ ":base64_avx",
+ ":base64_avx2",
+ ":base64_sse41",
+ ":base64_sse42",
+ ":base64_ssse3",
+ ]
+
+ public_configs = [ ":base64_config" ]
+
+ cflags_c = [
+ "-Wno-implicit-fallthrough",
+ "-Wno-unused-but-set-variable",
+ "-Wno-shadow",
+ ]
+
+ sources = [
+ "base64/include/libbase64.h",
+ "base64/lib/arch/generic/codec.c",
+ "base64/lib/codec_choose.c",
+ "base64/lib/codecs.h",
+ "base64/lib/lib.c",
+ "base64/lib/tables/tables.c",
+ ]
+}
+
+source_set("base64_ssse3") {
+ public_configs = [ ":base64_config" ]
+
+ if (target_cpu == "ia32" || target_cpu == "x64" || target_cpu == "x32") {
+ defines = [ "HAVE_SSSE3=1" ]
+
+ cflags = [ "-mssse3" ]
+ cflags_c = [ "-Wno-implicit-fallthrough" ]
+ }
+
+ sources = [ "base64/lib/arch/ssse3/codec.c" ]
+}
+
+source_set("base64_sse41") {
+ public_configs = [ ":base64_config" ]
+
+ if (target_cpu == "ia32" || target_cpu == "x64" || target_cpu == "x32") {
+ defines = [ "HAVE_SSE41=1" ]
+
+ cflags = [ "-msse4.1" ]
+ cflags_c = [ "-Wno-implicit-fallthrough" ]
+ }
+
+ sources = [ "base64/lib/arch/sse41/codec.c" ]
+}
+
+
+source_set("base64_sse42") {
+ public_configs = [ ":base64_config" ]
+
+ if (target_cpu == "ia32" || target_cpu == "x64" || target_cpu == "x32") {
+ defines = [
+ "BASE64_STATIC_DEFINE",
+ "HAVE_SSE42=1",
+ ]
+
+ cflags = [ "-msse4.2" ]
+ cflags_c = [ "-Wno-implicit-fallthrough" ]
+ }
+
+ sources = [ "base64/lib/arch/sse42/codec.c" ]
+}
+
+source_set("base64_avx") {
+ public_configs = [ ":base64_config" ]
+
+ if (target_cpu == "ia32" || target_cpu == "x64" || target_cpu == "x32") {
+ defines = [ "HAVE_AVX=1" ]
+
+ cflags = [ "-mavx" ]
+ cflags_c = [ "-Wno-implicit-fallthrough" ]
+ }
+
+ sources = [ "base64/lib/arch/avx/codec.c" ]
+}
+
+source_set("base64_avx2") {
+ public_configs = [ ":base64_config" ]
+
+ if (target_cpu == "ia32" || target_cpu == "x64" || target_cpu == "x32") {
+ defines = [ "HAVE_AVX2=1" ]
+
+ cflags = [ "-mavx2" ]
+ cflags_c = [
+ "-Wno-implicit-fallthrough",
+ "-Wno-implicit-function-declaration",
+ ]
+ }
+
+ sources = [ "base64/lib/arch/avx2/codec.c" ]
+}
+
+source_set("base64_neon32") {
+ public_configs = [ ":base64_config" ]
+
+ if (target_cpu == "arm") {
+ defines = [ "HAVE_NEON32=1" ]
+
+ cflags = [ "-mfpu=neon" ]
+ cflags_c = [ "-Wno-implicit-fallthrough" ]
+ }
+
+ sources = [ "base64/lib/arch/neon32/codec.c" ]
+}
+
+source_set("base64_neon64") {
+ public_configs = [ ":base64_config" ]
+
+ if (target_cpu == "arm64") {
+ defines = [ "HAVE_NEON64=1" ]
+
+ cflags_c = [ "-Wno-implicit-fallthrough" ]
+ }
+
+ sources = [ "base64/lib/arch/neon64/codec.c" ]
+}
diff --git a/deps/cares/BUILD.gn b/deps/cares/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..2a902c68ca445b8451e442c314c60ee5a30719e4
--- /dev/null
+++ b/deps/cares/BUILD.gn
@@ -0,0 +1,135 @@
+config("cares_config") {
+ include_dirs = [ "include", "src/lib" ]
+}
+static_library("cares") {
+ defines = [ "CARES_STATICLIB" ]
+ include_dirs = [ "include" ]
+ public_configs = [ ":cares_config" ]
+
+ libs = []
+ cflags_c = [
+ "-Wno-logical-not-parentheses",
+ "-Wno-implicit-fallthrough",
+ "-Wno-sign-compare",
+ ]
+
+ sources = [
+ "include/ares.h",
+ "include/ares_dns.h",
+ "include/ares_nameser.h",
+ "include/ares_rules.h",
+ "include/ares_version.h",
+ "src/lib/ares__addrinfo2hostent.c",
+ "src/lib/ares__addrinfo_localhost.c",
+ "src/lib/ares_android.c",
+ "src/lib/ares_cancel.c",
+ "src/lib/ares__close_sockets.c",
+ "src/lib/ares_create_query.c",
+ "src/lib/ares_data.c",
+ "src/lib/ares_data.h",
+ "src/lib/ares_destroy.c",
+ "src/lib/ares_expand_name.c",
+ "src/lib/ares_expand_string.c",
+ "src/lib/ares_fds.c",
+ "src/lib/ares_free_hostent.c",
+ "src/lib/ares_free_string.c",
+ "src/lib/ares_freeaddrinfo.c",
+ "src/lib/ares_getenv.h",
+ "src/lib/ares_getaddrinfo.c",
+ "src/lib/ares_gethostbyaddr.c",
+ "src/lib/ares_gethostbyname.c",
+ "src/lib/ares__get_hostent.c",
+ "src/lib/ares_getnameinfo.c",
+ "src/lib/ares_getsock.c",
+ "src/lib/ares_init.c",
+ "src/lib/ares_ipv6.h",
+ "src/lib/ares_library_init.c",
+ "src/lib/ares_library_init.h",
+ "src/lib/ares_llist.c",
+ "src/lib/ares_llist.h",
+ "src/lib/ares_mkquery.c",
+ "src/lib/ares_nameser.h",
+ "src/lib/ares_nowarn.c",
+ "src/lib/ares_nowarn.h",
+ "src/lib/ares_options.c",
+ "src/lib/ares__parse_into_addrinfo.c",
+ "src/lib/ares_parse_aaaa_reply.c",
+ "src/lib/ares_parse_a_reply.c",
+ "src/lib/ares_parse_caa_reply.c",
+ "src/lib/ares_parse_mx_reply.c",
+ "src/lib/ares_parse_naptr_reply.c",
+ "src/lib/ares_parse_ns_reply.c",
+ "src/lib/ares_parse_ptr_reply.c",
+ "src/lib/ares_parse_soa_reply.c",
+ "src/lib/ares_parse_srv_reply.c",
+ "src/lib/ares_parse_txt_reply.c",
+ "src/lib/ares_parse_uri_reply.c",
+ "src/lib/ares_platform.h",
+ "src/lib/ares_private.h",
+ "src/lib/ares_process.c",
+ "src/lib/ares_query.c",
+ "src/lib/ares_rand.c",
+ "src/lib/ares__read_line.c",
+ "src/lib/ares__readaddrinfo.c",
+ "src/lib/ares_search.c",
+ "src/lib/ares_send.c",
+ "src/lib/ares_setup.h",
+ "src/lib/ares__sortaddrinfo.c",
+ "src/lib/ares_strcasecmp.c",
+ "src/lib/ares_strcasecmp.h",
+ "src/lib/ares_strdup.c",
+ "src/lib/ares_strdup.h",
+ "src/lib/ares_strerror.c",
+ "src/lib/ares_strsplit.c",
+ "src/lib/ares_timeout.c",
+ "src/lib/ares__timeval.c",
+ "src/lib/ares_version.c",
+ "src/lib/ares_writev.c",
+ "src/lib/ares_writev.h",
+ "src/lib/bitncmp.c",
+ "src/lib/bitncmp.h",
+ "src/lib/inet_net_pton.c",
+ "src/lib/inet_ntop.c",
+ "src/lib/ares_inet_net_pton.h",
+ "src/lib/setup_once.h",
+ "src/tools/ares_getopt.c",
+ "src/tools/ares_getopt.h",
+ ]
+
+ if (!is_win) {
+ defines += [
+ "_DARWIN_USE_64_BIT_INODE=1",
+ "_LARGEFILE_SOURCE",
+ "_FILE_OFFSET_BITS=64",
+ "_GNU_SOURCE",
+ ]
+ }
+
+ if (is_win) {
+ defines += [ "CARES_PULL_WS2TCPIP_H=1" ]
+ include_dirs += [ "config/win32" ]
+ sources += [
+ "src/lib/ares_getenv.c",
+ "src/lib/ares_iphlpapi.h",
+ "src/lib/ares_platform.c",
+ "src/lib/config-win32.h",
+ "src/lib/windows_port.c",
+ ]
+ libs += [
+ "ws2_32.lib",
+ "iphlpapi.lib",
+ ]
+ } else {
+ defines += [ "HAVE_CONFIG_H" ]
+ }
+
+ if (is_linux) {
+ include_dirs += [ "config/linux" ]
+ sources += [ "config/linux/ares_config.h" ]
+ }
+
+ if (is_mac) {
+ include_dirs += [ "config/darwin" ]
+ sources += [ "config/darwin/ares_config.h" ]
+ }
+}
diff --git a/deps/googletest/BUILD.gn b/deps/googletest/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..0daf8c006cef89e76d7eccec3e924bd2718021c9
--- /dev/null
+++ b/deps/googletest/BUILD.gn
@@ -0,0 +1,64 @@
+config("gtest_config") {
+ include_dirs = [ "include" ]
+ defines = [ "UNIT_TEST" ]
+}
+
+static_library("gtest") {
+ include_dirs = [
+ "include",
+ "." # src
+ ]
+
+ public_configs = [ ":gtest_config" ]
+
+ cflags_cc = [
+ "-Wno-c++98-compat-extra-semi",
+ "-Wno-unused-const-variable",
+ "-Wno-unreachable-code-return",
+ ]
+
+ defines = [
+ "GTEST_HAS_POSIX_RE=0",
+ "GTEST_LANG_CXX11=1",
+ ]
+
+ sources = [
+ "include/gtest/gtest_pred_impl.h",
+ "include/gtest/gtest_prod.h",
+ "include/gtest/gtest-death-test.h",
+ "include/gtest/gtest-matchers.h",
+ "include/gtest/gtest-message.h",
+ "include/gtest/gtest-param-test.h",
+ "include/gtest/gtest-printers.h",
+ "include/gtest/gtest-spi.h",
+ "include/gtest/gtest-test-part.h",
+ "include/gtest/gtest-typed-test.h",
+ "include/gtest/gtest.h",
+ "include/gtest/internal/gtest-death-test-internal.h",
+ "include/gtest/internal/gtest-filepath.h",
+ "include/gtest/internal/gtest-internal.h",
+ "include/gtest/internal/gtest-param-util.h",
+ "include/gtest/internal/gtest-port-arch.h",
+ "include/gtest/internal/gtest-port.h",
+ "include/gtest/internal/gtest-string.h",
+ "include/gtest/internal/gtest-type-util.h",
+ "include/gtest/internal/custom/gtest-port.h",
+ "include/gtest/internal/custom/gtest-printers.h",
+ "include/gtest/internal/custom/gtest.h",
+ "src/gtest-all.cc",
+ "src/gtest-death-test.cc",
+ "src/gtest-filepath.cc",
+ "src/gtest-internal-inl.h",
+ "src/gtest-matchers.cc",
+ "src/gtest-port.cc",
+ "src/gtest-printers.cc",
+ "src/gtest-test-part.cc",
+ "src/gtest-typed-test.cc",
+ "src/gtest.cc",
+ ]
+}
+
+static_library("gtest_main") {
+ deps = [ ":gtest" ]
+ sources = [ "src/gtest_main.cc" ]
+}
diff --git a/deps/histogram/BUILD.gn b/deps/histogram/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..02bc887db7c8545e1d8adc57f73f203eec2f2592
--- /dev/null
+++ b/deps/histogram/BUILD.gn
@@ -0,0 +1,19 @@
+config("histogram_config") {
+ include_dirs = [ "include" ]
+
+ cflags = [
+ "-Wno-implicit-function-declaration",
+ "-Wno-incompatible-pointer-types",
+ "-Wno-unused-function",
+ "-Wno-atomic-alignment",
+ ]
+}
+
+static_library("histogram") {
+ public_configs = [ ":histogram_config" ]
+
+ sources = [
+ "src/hdr_histogram.c",
+ "src/hdr_histogram.h",
+ ]
+}
\ No newline at end of file
diff --git a/deps/llhttp/BUILD.gn b/deps/llhttp/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..fb000f8ee7647c375bc190d1729d67bb7770d109
--- /dev/null
+++ b/deps/llhttp/BUILD.gn
@@ -0,0 +1,15 @@
+config("llhttp_config") {
+ include_dirs = [ "include" ]
+ cflags = [ "-Wno-unreachable-code" ]
+}
+
+static_library("llhttp") {
+ include_dirs = [ "include" ]
+ public_configs = [ ":llhttp_config" ]
+ cflags_c = [ "-Wno-implicit-fallthrough" ]
+ sources = [
+ "src/api.c",
+ "src/http.c",
+ "src/llhttp.c",
+ ]
+}
diff --git a/deps/nghttp2/BUILD.gn b/deps/nghttp2/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..7d2ca477db2415f43ababa270d8aefa3124b2765
--- /dev/null
+++ b/deps/nghttp2/BUILD.gn
@@ -0,0 +1,51 @@
+config("nghttp2_config") {
+ defines = [ "NGHTTP2_STATICLIB" ]
+ include_dirs = [ "lib/includes" ]
+}
+static_library("nghttp2") {
+ public_configs = [ ":nghttp2_config" ]
+ defines = [
+ "_U_",
+ "BUILDING_NGHTTP2",
+ "NGHTTP2_STATICLIB",
+ "HAVE_CONFIG_H",
+ ]
+ include_dirs = [ "lib/includes" ]
+
+ cflags_c = [
+ "-Wno-implicit-function-declaration",
+ "-Wno-implicit-fallthrough",
+ "-Wno-string-plus-int",
+ "-Wno-unreachable-code-return",
+ "-Wno-unused-but-set-variable",
+ ]
+
+ sources = [
+ "lib/nghttp2_buf.c",
+ "lib/nghttp2_callbacks.c",
+ "lib/nghttp2_debug.c",
+ "lib/nghttp2_extpri.c",
+ "lib/nghttp2_frame.c",
+ "lib/nghttp2_hd.c",
+ "lib/nghttp2_hd_huffman.c",
+ "lib/nghttp2_hd_huffman_data.c",
+ "lib/nghttp2_helper.c",
+ "lib/nghttp2_http.c",
+ "lib/nghttp2_map.c",
+ "lib/nghttp2_mem.c",
+ "lib/nghttp2_npn.c",
+ "lib/nghttp2_option.c",
+ "lib/nghttp2_outbound_item.c",
+ "lib/nghttp2_pq.c",
+ "lib/nghttp2_priority_spec.c",
+ "lib/nghttp2_queue.c",
+ "lib/nghttp2_ratelim.c",
+ "lib/nghttp2_rcbuf.c",
+ "lib/nghttp2_session.c",
+ "lib/nghttp2_stream.c",
+ "lib/nghttp2_submit.c",
+ "lib/nghttp2_time.c",
+ "lib/nghttp2_version.c",
+ "lib/sfparse.c"
+ ]
+}
diff --git a/deps/simdutf/BUILD.gn b/deps/simdutf/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..bfbd4e656db1a6c73048443f96f1d576a0df7519
--- /dev/null
+++ b/deps/simdutf/BUILD.gn
@@ -0,0 +1,20 @@
+config("simdutf_config") {
+ include_dirs = [ "." ]
+}
+
+static_library("simdutf") {
+ include_dirs = [ "." ]
+ sources = [
+ "simdutf.cpp",
+ ]
+
+ public_configs = [ ":simdutf_config" ]
+
+ cflags_cc = [
+ "-Wno-ambiguous-reversed-operator",
+ "-Wno-c++98-compat-extra-semi",
+ "-Wno-unreachable-code-break",
+ "-Wno-unused-const-variable",
+ "-Wno-unused-function",
+ ]
+}
diff --git a/deps/uv/BUILD.gn b/deps/uv/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..7518168141db7958550c7f5dc1ed17ccdbbe4a60
--- /dev/null
+++ b/deps/uv/BUILD.gn
@@ -0,0 +1,194 @@
+config("libuv_config") {
+ include_dirs = [ "include" ]
+
+ defines = []
+
+ if (is_linux) {
+ defines += [ "_POSIX_C_SOURCE=200112" ]
+ }
+ if (!is_win) {
+ defines += [
+ "_LARGEFILE_SOURCE",
+ "_FILE_OFFSET_BITS=64",
+ ]
+ }
+ if (is_mac) {
+ defines += [ "_DARWIN_USE_64_BIT_INODE=1" ]
+ }
+}
+
+static_library("uv") {
+ include_dirs = [
+ "include",
+ "src",
+ ]
+
+ public_configs = [ ":libuv_config" ]
+
+ ldflags = []
+
+ defines = []
+
+ # This only has an effect on Windows, where it will cause libuv's symbols to be exported in node.lib
+ defines += [ "BUILDING_UV_SHARED=1" ]
+
+ cflags_c = [
+ "-Wno-incompatible-pointer-types",
+ "-Wno-bitwise-op-parentheses",
+ "-Wno-implicit-fallthrough",
+ "-Wno-implicit-function-declaration",
+ "-Wno-missing-braces",
+ "-Wno-sign-compare",
+ "-Wno-sometimes-uninitialized",
+ "-Wno-string-conversion",
+ "-Wno-switch",
+ "-Wno-unused-function",
+ "-Wno-unused-result",
+ "-Wno-unused-variable",
+ "-Wno-unreachable-code",
+ "-Wno-unreachable-code-return",
+ "-Wno-unused-but-set-variable",
+ "-Wno-shadow",
+ ]
+
+ libs = []
+
+ sources = [
+ "include/uv.h",
+ "include/uv/tree.h",
+ "include/uv/errno.h",
+ "include/uv/threadpool.h",
+ "include/uv/version.h",
+ "src/fs-poll.c",
+ "src/heap-inl.h",
+ "src/idna.c",
+ "src/idna.h",
+ "src/inet.c",
+ "src/queue.h",
+ "src/random.c",
+ "src/strscpy.c",
+ "src/strscpy.h",
+ "src/strtok.c",
+ "src/strtok.h",
+ "src/thread-common.c",
+ "src/threadpool.c",
+ "src/timer.c",
+ "src/uv-data-getter-setters.c",
+ "src/uv-common.c",
+ "src/uv-common.h",
+ "src/version.c",
+ ]
+
+ if (is_win) {
+ defines += [ "_GNU_SOURCE" ]
+ sources += [
+ "include/uv/win.h",
+ "src/win/async.c",
+ "src/win/atomicops-inl.h",
+ "src/win/core.c",
+ "src/win/detect-wakeup.c",
+ "src/win/dl.c",
+ "src/win/error.c",
+ "src/win/fs.c",
+ "src/win/fs-event.c",
+ "src/win/getaddrinfo.c",
+ "src/win/getnameinfo.c",
+ "src/win/handle.c",
+ "src/win/handle-inl.h",
+ "src/win/internal.h",
+ "src/win/loop-watcher.c",
+ "src/win/pipe.c",
+ "src/win/thread.c",
+ "src/win/poll.c",
+ "src/win/process.c",
+ "src/win/process-stdio.c",
+ "src/win/req-inl.h",
+ "src/win/signal.c",
+ "src/win/snprintf.c",
+ "src/win/stream.c",
+ "src/win/stream-inl.h",
+ "src/win/tcp.c",
+ "src/win/tty.c",
+ "src/win/udp.c",
+ "src/win/util.c",
+ "src/win/winapi.c",
+ "src/win/winapi.h",
+ "src/win/winsock.c",
+ "src/win/winsock.h",
+ ]
+
+ libs += [
+ "advapi32.lib",
+ "iphlpapi.lib",
+ "psapi.lib",
+ "shell32.lib",
+ "user32.lib",
+ "userenv.lib",
+ "ws2_32.lib",
+ ]
+ } else {
+ sources += [
+ "include/uv/unix.h",
+ "include/uv/linux.h",
+ "include/uv/sunos.h",
+ "include/uv/darwin.h",
+ "include/uv/bsd.h",
+ "include/uv/aix.h",
+ "src/unix/async.c",
+ "src/unix/core.c",
+ "src/unix/dl.c",
+ "src/unix/fs.c",
+ "src/unix/getaddrinfo.c",
+ "src/unix/getnameinfo.c",
+ "src/unix/internal.h",
+ "src/unix/loop.c",
+ "src/unix/loop-watcher.c",
+ "src/unix/pipe.c",
+ "src/unix/poll.c",
+ "src/unix/process.c",
+ "src/unix/random-devurandom.c",
+ "src/unix/signal.c",
+ "src/unix/stream.c",
+ "src/unix/tcp.c",
+ "src/unix/thread.c",
+ "src/unix/tty.c",
+ "src/unix/udp.c",
+ ]
+ libs += [ "m" ]
+ ldflags += [ "-pthread" ]
+ }
+ if (is_mac || is_linux) {
+ sources += [ "src/unix/proctitle.c" ]
+ }
+ if (is_mac) {
+ sources += [
+ "src/unix/darwin-proctitle.c",
+ "src/unix/darwin.c",
+ "src/unix/fsevents.c",
+ "src/unix/random-getentropy.c",
+ ]
+ defines += [
+ "_DARWIN_USE_64_BIT_INODE=1",
+ "_DARWIN_UNLIMITED_SELECT=1",
+ ]
+ }
+ if (is_linux) {
+ defines += [ "_GNU_SOURCE" ]
+ sources += [
+ "src/unix/linux.c",
+ "src/unix/procfs-exepath.c",
+ "src/unix/random-getrandom.c",
+ "src/unix/random-sysctl-linux.c",
+ ]
+ libs += [
+ "dl",
+ "rt",
+ ]
+ }
+ if (is_mac) { # is_bsd
+ sources += [
+ "src/unix/bsd-ifaddrs.c",
+ "src/unix/kqueue.c",
+ ]
+ }
+}
diff --git a/deps/uvwasi/BUILD.gn b/deps/uvwasi/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..2c9d2826c85bdd033f1df1d6188df6369a765c07
--- /dev/null
+++ b/deps/uvwasi/BUILD.gn
@@ -0,0 +1,38 @@
+config("uvwasi_config") {
+ include_dirs = [ "include" ]
+}
+
+static_library("uvwasi") {
+ include_dirs = [
+ "include",
+ "src",
+ ]
+
+ defines = []
+ if (is_linux) {
+ defines += [
+ "_GNU_SOURCE",
+ "_POSIX_C_SOURCE=200112"
+ ]
+ }
+
+ deps = [ "../../deps/uv" ]
+
+ public_configs = [ ":uvwasi_config" ]
+
+ cflags_c = []
+ if (!is_win) {
+ cflags_c += [ "-fvisibility=hidden" ]
+ }
+
+ sources = [
+ "src/clocks.c",
+ "src/fd_table.c",
+ "src/path_resolver.c",
+ "src/poll_oneoff.c",
+ "src/uv_mapping.c",
+ "src/uvwasi.c",
+ "src/wasi_rights.c",
+ "src/wasi_serdes.c"
+ ]
+}
diff --git a/filenames.json b/filenames.json
new file mode 100644
index 0000000000000000000000000000000000000000..aa118ab320d83745723a2275efc556555c1e7768
--- /dev/null
+++ b/filenames.json
@@ -0,0 +1,733 @@
+// This file is automatically generated by generate_gn_filenames_json.py
+// DO NOT EDIT
+{
+ "fs_files": [
+ "lib/internal/fs/cp/cp-sync.js",
+ "lib/internal/fs/cp/cp.js",
+ "lib/internal/fs/dir.js",
+ "lib/internal/fs/promises.js",
+ "lib/internal/fs/read/context.js",
+ "lib/internal/fs/recursive_watch.js",
+ "lib/internal/fs/rimraf.js",
+ "lib/internal/fs/streams.js",
+ "lib/internal/fs/sync.js",
+ "lib/internal/fs/sync_write_stream.js",
+ "lib/internal/fs/utils.js",
+ "lib/internal/fs/watchers.js",
+ "lib/fs.js"
+ ],
+ "headers": [
+ {
+ "dest_dir": "include/node/",
+ "files": [
+ "src/js_native_api.h",
+ "src/js_native_api_types.h",
+ "src/node.h",
+ "src/node_api.h",
+ "src/node_api_types.h",
+ "src/node_buffer.h",
+ "src/node_object_wrap.h"
+ ]
+ },
+ {
+ "dest_dir": "include/node//",
+ "files": [
+ "//v8/include/v8-array-buffer.h",
+ "//v8/include/v8-callbacks.h",
+ "//v8/include/v8-container.h",
+ "//v8/include/v8-context.h",
+ "//v8/include/v8-cppgc.h",
+ "//v8/include/v8-data.h",
+ "//v8/include/v8-date.h",
+ "//v8/include/v8-debug.h",
+ "//v8/include/v8-embedder-heap.h",
+ "//v8/include/v8-embedder-state-scope.h",
+ "//v8/include/v8-exception.h",
+ "//v8/include/v8-extension.h",
+ "//v8/include/v8-external.h",
+ "//v8/include/v8-forward.h",
+ "//v8/include/v8-function-callback.h",
+ "//v8/include/v8-function.h",
+ "//v8/include/v8-handle-base.h",
+ "//v8/include/v8-initialization.h",
+ "//v8/include/v8-internal.h",
+ "//v8/include/v8-isolate.h",
+ "//v8/include/v8-json.h",
+ "//v8/include/v8-local-handle.h",
+ "//v8/include/v8-locker.h",
+ "//v8/include/v8-maybe.h",
+ "//v8/include/v8-memory-span.h",
+ "//v8/include/v8-message.h",
+ "//v8/include/v8-microtask-queue.h",
+ "//v8/include/v8-microtask.h",
+ "//v8/include/v8-object.h",
+ "//v8/include/v8-persistent-handle.h",
+ "//v8/include/v8-platform.h",
+ "//v8/include/v8-primitive-object.h",
+ "//v8/include/v8-primitive.h",
+ "//v8/include/v8-profiler.h",
+ "//v8/include/v8-promise.h",
+ "//v8/include/v8-proxy.h",
+ "//v8/include/v8-regexp.h",
+ "//v8/include/v8-script.h",
+ "//v8/include/v8-snapshot.h",
+ "//v8/include/v8-source-location.h",
+ "//v8/include/v8-statistics.h",
+ "//v8/include/v8-template.h",
+ "//v8/include/v8-traced-handle.h",
+ "//v8/include/v8-typed-array.h",
+ "//v8/include/v8-unwinder.h",
+ "//v8/include/v8-value-serializer.h",
+ "//v8/include/v8-value.h",
+ "//v8/include/v8-version.h",
+ "//v8/include/v8-wasm.h",
+ "//v8/include/v8-weak-callback-info.h",
+ "//v8/include/v8.h",
+ "//v8/include/v8config.h"
+ ]
+ },
+ {
+ "dest_dir": "include/node//libplatform/",
+ "files": [
+ "//v8/include/libplatform/libplatform-export.h",
+ "//v8/include/libplatform/libplatform.h",
+ "//v8/include/libplatform/v8-tracing.h"
+ ]
+ },
+ {
+ "dest_dir": "include/node//cppgc/",
+ "files": [
+ "//v8/include/cppgc/allocation.h",
+ "//v8/include/cppgc/common.h",
+ "//v8/include/cppgc/cross-thread-persistent.h",
+ "//v8/include/cppgc/custom-space.h",
+ "//v8/include/cppgc/default-platform.h",
+ "//v8/include/cppgc/ephemeron-pair.h",
+ "//v8/include/cppgc/explicit-management.h",
+ "//v8/include/cppgc/garbage-collected.h",
+ "//v8/include/cppgc/heap-consistency.h",
+ "//v8/include/cppgc/heap-handle.h",
+ "//v8/include/cppgc/heap-state.h",
+ "//v8/include/cppgc/heap-statistics.h",
+ "//v8/include/cppgc/heap.h",
+ "//v8/include/cppgc/liveness-broker.h",
+ "//v8/include/cppgc/macros.h",
+ "//v8/include/cppgc/member.h",
+ "//v8/include/cppgc/name-provider.h",
+ "//v8/include/cppgc/object-size-trait.h",
+ "//v8/include/cppgc/persistent.h",
+ "//v8/include/cppgc/platform.h",
+ "//v8/include/cppgc/prefinalizer.h",
+ "//v8/include/cppgc/process-heap-statistics.h",
+ "//v8/include/cppgc/sentinel-pointer.h",
+ "//v8/include/cppgc/source-location.h",
+ "//v8/include/cppgc/testing.h",
+ "//v8/include/cppgc/trace-trait.h",
+ "//v8/include/cppgc/type-traits.h",
+ "//v8/include/cppgc/visitor.h"
+ ]
+ },
+ {
+ "dest_dir": "include/node//cppgc/internal/",
+ "files": [
+ "//v8/include/cppgc/internal/api-constants.h",
+ "//v8/include/cppgc/internal/atomic-entry-flag.h",
+ "//v8/include/cppgc/internal/base-page-handle.h",
+ "//v8/include/cppgc/internal/caged-heap-local-data.h",
+ "//v8/include/cppgc/internal/caged-heap.h",
+ "//v8/include/cppgc/internal/compiler-specific.h",
+ "//v8/include/cppgc/internal/finalizer-trait.h",
+ "//v8/include/cppgc/internal/gc-info.h",
+ "//v8/include/cppgc/internal/logging.h",
+ "//v8/include/cppgc/internal/member-storage.h",
+ "//v8/include/cppgc/internal/name-trait.h",
+ "//v8/include/cppgc/internal/persistent-node.h",
+ "//v8/include/cppgc/internal/pointer-policies.h",
+ "//v8/include/cppgc/internal/write-barrier.h"
+ ]
+ },
+ {
+ "dest_dir": "include/node//",
+ "files": [
+ "deps/uv/include/uv.h"
+ ]
+ },
+ {
+ "dest_dir": "include/node//uv/",
+ "files": [
+ "deps/uv/include/uv/aix.h",
+ "deps/uv/include/uv/bsd.h",
+ "deps/uv/include/uv/darwin.h",
+ "deps/uv/include/uv/errno.h",
+ "deps/uv/include/uv/linux.h",
+ "deps/uv/include/uv/os390.h",
+ "deps/uv/include/uv/posix.h",
+ "deps/uv/include/uv/sunos.h",
+ "deps/uv/include/uv/threadpool.h",
+ "deps/uv/include/uv/tree.h",
+ "deps/uv/include/uv/unix.h",
+ "deps/uv/include/uv/version.h",
+ "deps/uv/include/uv/win.h"
+ ]
+ }
+ ],
+ "library_files": [
+ "lib/_http_agent.js",
+ "lib/_http_client.js",
+ "lib/_http_common.js",
+ "lib/_http_incoming.js",
+ "lib/_http_outgoing.js",
+ "lib/_http_server.js",
+ "lib/_stream_duplex.js",
+ "lib/_stream_passthrough.js",
+ "lib/_stream_readable.js",
+ "lib/_stream_transform.js",
+ "lib/_stream_wrap.js",
+ "lib/_stream_writable.js",
+ "lib/_tls_common.js",
+ "lib/_tls_wrap.js",
+ "lib/assert.js",
+ "lib/assert/strict.js",
+ "lib/async_hooks.js",
+ "lib/buffer.js",
+ "lib/child_process.js",
+ "lib/cluster.js",
+ "lib/console.js",
+ "lib/constants.js",
+ "lib/crypto.js",
+ "lib/dgram.js",
+ "lib/diagnostics_channel.js",
+ "lib/dns.js",
+ "lib/dns/promises.js",
+ "lib/domain.js",
+ "lib/events.js",
+ "lib/fs/promises.js",
+ "lib/http.js",
+ "lib/http2.js",
+ "lib/https.js",
+ "lib/inspector.js",
+ "lib/inspector/promises.js",
+ "lib/internal/abort_controller.js",
+ "lib/internal/assert.js",
+ "lib/internal/assert/assertion_error.js",
+ "lib/internal/assert/calltracker.js",
+ "lib/internal/async_hooks.js",
+ "lib/internal/blob.js",
+ "lib/internal/blocklist.js",
+ "lib/internal/bootstrap/node.js",
+ "lib/internal/bootstrap/realm.js",
+ "lib/internal/bootstrap/switches/does_not_own_process_state.js",
+ "lib/internal/bootstrap/switches/does_own_process_state.js",
+ "lib/internal/bootstrap/switches/is_main_thread.js",
+ "lib/internal/bootstrap/switches/is_not_main_thread.js",
+ "lib/internal/bootstrap/web/exposed-wildcard.js",
+ "lib/internal/bootstrap/web/exposed-window-or-worker.js",
+ "lib/internal/buffer.js",
+ "lib/internal/child_process.js",
+ "lib/internal/child_process/serialization.js",
+ "lib/internal/cli_table.js",
+ "lib/internal/cluster/child.js",
+ "lib/internal/cluster/primary.js",
+ "lib/internal/cluster/round_robin_handle.js",
+ "lib/internal/cluster/shared_handle.js",
+ "lib/internal/cluster/utils.js",
+ "lib/internal/cluster/worker.js",
+ "lib/internal/console/constructor.js",
+ "lib/internal/console/global.js",
+ "lib/internal/constants.js",
+ "lib/internal/crypto/aes.js",
+ "lib/internal/crypto/certificate.js",
+ "lib/internal/crypto/cfrg.js",
+ "lib/internal/crypto/cipher.js",
+ "lib/internal/crypto/diffiehellman.js",
+ "lib/internal/crypto/ec.js",
+ "lib/internal/crypto/hash.js",
+ "lib/internal/crypto/hashnames.js",
+ "lib/internal/crypto/hkdf.js",
+ "lib/internal/crypto/keygen.js",
+ "lib/internal/crypto/keys.js",
+ "lib/internal/crypto/mac.js",
+ "lib/internal/crypto/pbkdf2.js",
+ "lib/internal/crypto/random.js",
+ "lib/internal/crypto/rsa.js",
+ "lib/internal/crypto/scrypt.js",
+ "lib/internal/crypto/sig.js",
+ "lib/internal/crypto/util.js",
+ "lib/internal/crypto/webcrypto.js",
+ "lib/internal/crypto/webidl.js",
+ "lib/internal/crypto/x509.js",
+ "lib/internal/debugger/inspect.js",
+ "lib/internal/debugger/inspect_client.js",
+ "lib/internal/debugger/inspect_repl.js",
+ "lib/internal/dgram.js",
+ "lib/internal/dns/callback_resolver.js",
+ "lib/internal/dns/promises.js",
+ "lib/internal/dns/utils.js",
+ "lib/internal/encoding.js",
+ "lib/internal/error_serdes.js",
+ "lib/internal/errors.js",
+ "lib/internal/event_target.js",
+ "lib/internal/events/symbols.js",
+ "lib/internal/file.js",
+ "lib/internal/fixed_queue.js",
+ "lib/internal/freelist.js",
+ "lib/internal/freeze_intrinsics.js",
+ "lib/internal/heap_utils.js",
+ "lib/internal/histogram.js",
+ "lib/internal/http.js",
+ "lib/internal/http2/compat.js",
+ "lib/internal/http2/core.js",
+ "lib/internal/http2/util.js",
+ "lib/internal/idna.js",
+ "lib/internal/inspector_async_hook.js",
+ "lib/internal/js_stream_socket.js",
+ "lib/internal/legacy/processbinding.js",
+ "lib/internal/linkedlist.js",
+ "lib/internal/main/check_syntax.js",
+ "lib/internal/main/embedding.js",
+ "lib/internal/main/eval_stdin.js",
+ "lib/internal/main/eval_string.js",
+ "lib/internal/main/inspect.js",
+ "lib/internal/main/mksnapshot.js",
+ "lib/internal/main/print_help.js",
+ "lib/internal/main/prof_process.js",
+ "lib/internal/main/repl.js",
+ "lib/internal/main/run_main_module.js",
+ "lib/internal/main/test_runner.js",
+ "lib/internal/main/watch_mode.js",
+ "lib/internal/main/worker_thread.js",
+ "lib/internal/mime.js",
+ "lib/internal/modules/cjs/loader.js",
+ "lib/internal/modules/esm/assert.js",
+ "lib/internal/modules/esm/create_dynamic_module.js",
+ "lib/internal/modules/esm/fetch_module.js",
+ "lib/internal/modules/esm/formats.js",
+ "lib/internal/modules/esm/get_format.js",
+ "lib/internal/modules/esm/handle_process_exit.js",
+ "lib/internal/modules/esm/hooks.js",
+ "lib/internal/modules/esm/initialize_import_meta.js",
+ "lib/internal/modules/esm/load.js",
+ "lib/internal/modules/esm/loader.js",
+ "lib/internal/modules/esm/module_job.js",
+ "lib/internal/modules/esm/module_map.js",
+ "lib/internal/modules/esm/package_config.js",
+ "lib/internal/modules/esm/resolve.js",
+ "lib/internal/modules/esm/shared_constants.js",
+ "lib/internal/modules/esm/translators.js",
+ "lib/internal/modules/esm/utils.js",
+ "lib/internal/modules/esm/worker.js",
+ "lib/internal/modules/helpers.js",
+ "lib/internal/modules/package_json_reader.js",
+ "lib/internal/modules/run_main.js",
+ "lib/internal/net.js",
+ "lib/internal/options.js",
+ "lib/internal/per_context/domexception.js",
+ "lib/internal/per_context/messageport.js",
+ "lib/internal/per_context/primordials.js",
+ "lib/internal/perf/event_loop_delay.js",
+ "lib/internal/perf/event_loop_utilization.js",
+ "lib/internal/perf/nodetiming.js",
+ "lib/internal/perf/observe.js",
+ "lib/internal/perf/performance.js",
+ "lib/internal/perf/performance_entry.js",
+ "lib/internal/perf/resource_timing.js",
+ "lib/internal/perf/timerify.js",
+ "lib/internal/perf/usertiming.js",
+ "lib/internal/perf/utils.js",
+ "lib/internal/policy/manifest.js",
+ "lib/internal/policy/sri.js",
+ "lib/internal/priority_queue.js",
+ "lib/internal/process/esm_loader.js",
+ "lib/internal/process/execution.js",
+ "lib/internal/process/per_thread.js",
+ "lib/internal/process/permission.js",
+ "lib/internal/process/policy.js",
+ "lib/internal/process/pre_execution.js",
+ "lib/internal/process/promises.js",
+ "lib/internal/process/report.js",
+ "lib/internal/process/signal.js",
+ "lib/internal/process/task_queues.js",
+ "lib/internal/process/warning.js",
+ "lib/internal/process/worker_thread_only.js",
+ "lib/internal/promise_hooks.js",
+ "lib/internal/querystring.js",
+ "lib/internal/readline/callbacks.js",
+ "lib/internal/readline/emitKeypressEvents.js",
+ "lib/internal/readline/interface.js",
+ "lib/internal/readline/promises.js",
+ "lib/internal/readline/utils.js",
+ "lib/internal/repl.js",
+ "lib/internal/repl/await.js",
+ "lib/internal/repl/history.js",
+ "lib/internal/repl/utils.js",
+ "lib/internal/socket_list.js",
+ "lib/internal/socketaddress.js",
+ "lib/internal/source_map/prepare_stack_trace.js",
+ "lib/internal/source_map/source_map.js",
+ "lib/internal/source_map/source_map_cache.js",
+ "lib/internal/stream_base_commons.js",
+ "lib/internal/streams/add-abort-signal.js",
+ "lib/internal/streams/buffer_list.js",
+ "lib/internal/streams/compose.js",
+ "lib/internal/streams/destroy.js",
+ "lib/internal/streams/duplex.js",
+ "lib/internal/streams/duplexify.js",
+ "lib/internal/streams/end-of-stream.js",
+ "lib/internal/streams/from.js",
+ "lib/internal/streams/lazy_transform.js",
+ "lib/internal/streams/legacy.js",
+ "lib/internal/streams/operators.js",
+ "lib/internal/streams/passthrough.js",
+ "lib/internal/streams/pipeline.js",
+ "lib/internal/streams/readable.js",
+ "lib/internal/streams/state.js",
+ "lib/internal/streams/transform.js",
+ "lib/internal/streams/utils.js",
+ "lib/internal/streams/writable.js",
+ "lib/internal/structured_clone.js",
+ "lib/internal/test/binding.js",
+ "lib/internal/test/transfer.js",
+ "lib/internal/test_runner/coverage.js",
+ "lib/internal/test_runner/harness.js",
+ "lib/internal/test_runner/mock/mock.js",
+ "lib/internal/test_runner/mock/mock_timers.js",
+ "lib/internal/test_runner/reporter/dot.js",
+ "lib/internal/test_runner/reporter/junit.js",
+ "lib/internal/test_runner/reporter/spec.js",
+ "lib/internal/test_runner/reporter/tap.js",
+ "lib/internal/test_runner/reporter/v8-serializer.js",
+ "lib/internal/test_runner/runner.js",
+ "lib/internal/test_runner/test.js",
+ "lib/internal/test_runner/tests_stream.js",
+ "lib/internal/test_runner/utils.js",
+ "lib/internal/timers.js",
+ "lib/internal/tls/secure-context.js",
+ "lib/internal/tls/secure-pair.js",
+ "lib/internal/trace_events_async_hooks.js",
+ "lib/internal/tty.js",
+ "lib/internal/url.js",
+ "lib/internal/util.js",
+ "lib/internal/util/colors.js",
+ "lib/internal/util/comparisons.js",
+ "lib/internal/util/debuglog.js",
+ "lib/internal/util/embedding.js",
+ "lib/internal/util/inspect.js",
+ "lib/internal/util/inspector.js",
+ "lib/internal/util/iterable_weak_map.js",
+ "lib/internal/util/parse_args/parse_args.js",
+ "lib/internal/util/parse_args/utils.js",
+ "lib/internal/util/types.js",
+ "lib/internal/v8/startup_snapshot.js",
+ "lib/internal/v8_prof_polyfill.js",
+ "lib/internal/v8_prof_processor.js",
+ "lib/internal/validators.js",
+ "lib/internal/vm.js",
+ "lib/internal/vm/module.js",
+ "lib/internal/wasm_web_api.js",
+ "lib/internal/watch_mode/files_watcher.js",
+ "lib/internal/watchdog.js",
+ "lib/internal/webidl.js",
+ "lib/internal/webstreams/adapters.js",
+ "lib/internal/webstreams/compression.js",
+ "lib/internal/webstreams/encoding.js",
+ "lib/internal/webstreams/queuingstrategies.js",
+ "lib/internal/webstreams/readablestream.js",
+ "lib/internal/webstreams/transfer.js",
+ "lib/internal/webstreams/transformstream.js",
+ "lib/internal/webstreams/util.js",
+ "lib/internal/webstreams/writablestream.js",
+ "lib/internal/worker.js",
+ "lib/internal/worker/io.js",
+ "lib/internal/worker/js_transferable.js",
+ "lib/module.js",
+ "lib/net.js",
+ "lib/os.js",
+ "lib/path.js",
+ "lib/path/posix.js",
+ "lib/path/win32.js",
+ "lib/perf_hooks.js",
+ "lib/process.js",
+ "lib/punycode.js",
+ "lib/querystring.js",
+ "lib/readline.js",
+ "lib/readline/promises.js",
+ "lib/repl.js",
+ "lib/stream.js",
+ "lib/stream/consumers.js",
+ "lib/stream/promises.js",
+ "lib/stream/web.js",
+ "lib/string_decoder.js",
+ "lib/sys.js",
+ "lib/test.js",
+ "lib/test/reporters.js",
+ "lib/timers.js",
+ "lib/timers/promises.js",
+ "lib/tls.js",
+ "lib/trace_events.js",
+ "lib/tty.js",
+ "lib/url.js",
+ "lib/util.js",
+ "lib/util/types.js",
+ "lib/v8.js",
+ "lib/vm.js",
+ "lib/wasi.js",
+ "lib/worker_threads.js",
+ "lib/zlib.js",
+ "deps/v8/tools/splaytree.mjs",
+ "deps/v8/tools/codemap.mjs",
+ "deps/v8/tools/consarray.mjs",
+ "deps/v8/tools/csvparser.mjs",
+ "deps/v8/tools/profile.mjs",
+ "deps/v8/tools/profile_view.mjs",
+ "deps/v8/tools/logreader.mjs",
+ "deps/v8/tools/arguments.mjs",
+ "deps/v8/tools/tickprocessor.mjs",
+ "deps/v8/tools/sourcemap.mjs",
+ "deps/v8/tools/tickprocessor-driver.mjs",
+ "deps/acorn/acorn/dist/acorn.js",
+ "deps/acorn/acorn-walk/dist/walk.js",
+ "deps/minimatch/index.js",
+ "deps/cjs-module-lexer/lexer.js",
+ "deps/cjs-module-lexer/dist/lexer.js",
+ "deps/undici/undici.js"
+ ],
+ "node_sources": [
+ "src/api/async_resource.cc",
+ "src/api/callback.cc",
+ "src/api/embed_helpers.cc",
+ "src/api/encoding.cc",
+ "src/api/environment.cc",
+ "src/api/exceptions.cc",
+ "src/api/hooks.cc",
+ "src/api/utils.cc",
+ "src/async_wrap.cc",
+ "src/base_object.cc",
+ "src/cares_wrap.cc",
+ "src/cleanup_queue.cc",
+ "src/connect_wrap.cc",
+ "src/connection_wrap.cc",
+ "src/dataqueue/queue.cc",
+ "src/debug_utils.cc",
+ "src/encoding_binding.cc",
+ "src/env.cc",
+ "src/fs_event_wrap.cc",
+ "src/handle_wrap.cc",
+ "src/heap_utils.cc",
+ "src/histogram.cc",
+ "src/js_native_api.h",
+ "src/js_native_api_types.h",
+ "src/js_native_api_v8.cc",
+ "src/js_native_api_v8.h",
+ "src/js_native_api_v8_internals.h",
+ "src/js_stream.cc",
+ "src/json_utils.cc",
+ "src/js_udp_wrap.cc",
+ "src/json_parser.h",
+ "src/json_parser.cc",
+ "src/module_wrap.cc",
+ "src/node.cc",
+ "src/node_api.cc",
+ "src/node_binding.cc",
+ "src/node_blob.cc",
+ "src/node_buffer.cc",
+ "src/node_builtins.cc",
+ "src/node_config.cc",
+ "src/node_constants.cc",
+ "src/node_contextify.cc",
+ "src/node_credentials.cc",
+ "src/node_dir.cc",
+ "src/node_dotenv.cc",
+ "src/node_env_var.cc",
+ "src/node_errors.cc",
+ "src/node_external_reference.cc",
+ "src/node_file.cc",
+ "src/node_http_parser.cc",
+ "src/node_http2.cc",
+ "src/node_i18n.cc",
+ "src/node_main_instance.cc",
+ "src/node_messaging.cc",
+ "src/node_metadata.cc",
+ "src/node_options.cc",
+ "src/node_os.cc",
+ "src/node_perf.cc",
+ "src/node_platform.cc",
+ "src/node_postmortem_metadata.cc",
+ "src/node_process_events.cc",
+ "src/node_process_methods.cc",
+ "src/node_process_object.cc",
+ "src/node_realm.cc",
+ "src/node_report.cc",
+ "src/node_report_module.cc",
+ "src/node_report_utils.cc",
+ "src/node_sea.cc",
+ "src/node_serdes.cc",
+ "src/node_shadow_realm.cc",
+ "src/node_snapshotable.cc",
+ "src/node_sockaddr.cc",
+ "src/node_stat_watcher.cc",
+ "src/node_symbols.cc",
+ "src/node_task_queue.cc",
+ "src/node_trace_events.cc",
+ "src/node_types.cc",
+ "src/node_url.cc",
+ "src/node_util.cc",
+ "src/node_v8.cc",
+ "src/node_wasi.cc",
+ "src/node_wasm_web_api.cc",
+ "src/node_watchdog.cc",
+ "src/node_worker.cc",
+ "src/node_zlib.cc",
+ "src/permission/child_process_permission.cc",
+ "src/permission/fs_permission.cc",
+ "src/permission/inspector_permission.cc",
+ "src/permission/permission.cc",
+ "src/permission/worker_permission.cc",
+ "src/pipe_wrap.cc",
+ "src/process_wrap.cc",
+ "src/signal_wrap.cc",
+ "src/spawn_sync.cc",
+ "src/stream_base.cc",
+ "src/stream_pipe.cc",
+ "src/stream_wrap.cc",
+ "src/string_bytes.cc",
+ "src/string_decoder.cc",
+ "src/tcp_wrap.cc",
+ "src/timers.cc",
+ "src/timer_wrap.cc",
+ "src/tracing/agent.cc",
+ "src/tracing/node_trace_buffer.cc",
+ "src/tracing/node_trace_writer.cc",
+ "src/tracing/trace_event.cc",
+ "src/tracing/traced_value.cc",
+ "src/tty_wrap.cc",
+ "src/udp_wrap.cc",
+ "src/util.cc",
+ "src/uv.cc",
+ "src/aliased_buffer.h",
+ "src/aliased_buffer-inl.h",
+ "src/aliased_struct.h",
+ "src/aliased_struct-inl.h",
+ "src/async_wrap.h",
+ "src/async_wrap-inl.h",
+ "src/base_object.h",
+ "src/base_object-inl.h",
+ "src/base_object_types.h",
+ "src/base64.h",
+ "src/base64-inl.h",
+ "src/blob_serializer_deserializer.h",
+ "src/blob_serializer_deserializer-inl.h",
+ "src/callback_queue.h",
+ "src/callback_queue-inl.h",
+ "src/cleanup_queue.h",
+ "src/cleanup_queue-inl.h",
+ "src/connect_wrap.h",
+ "src/connection_wrap.h",
+ "src/dataqueue/queue.h",
+ "src/debug_utils.h",
+ "src/debug_utils-inl.h",
+ "src/encoding_binding.h",
+ "src/env_properties.h",
+ "src/env.h",
+ "src/env-inl.h",
+ "src/handle_wrap.h",
+ "src/histogram.h",
+ "src/histogram-inl.h",
+ "src/js_stream.h",
+ "src/json_utils.h",
+ "src/large_pages/node_large_page.cc",
+ "src/large_pages/node_large_page.h",
+ "src/memory_tracker.h",
+ "src/memory_tracker-inl.h",
+ "src/module_wrap.h",
+ "src/node.h",
+ "src/node_api.h",
+ "src/node_api_types.h",
+ "src/node_binding.h",
+ "src/node_blob.h",
+ "src/node_buffer.h",
+ "src/node_builtins.h",
+ "src/node_constants.h",
+ "src/node_context_data.h",
+ "src/node_contextify.h",
+ "src/node_dir.h",
+ "src/node_dotenv.h",
+ "src/node_errors.h",
+ "src/node_exit_code.h",
+ "src/node_external_reference.h",
+ "src/node_file.h",
+ "src/node_file-inl.h",
+ "src/node_http_common.h",
+ "src/node_http_common-inl.h",
+ "src/node_http2.h",
+ "src/node_http2_state.h",
+ "src/node_i18n.h",
+ "src/node_internals.h",
+ "src/node_main_instance.h",
+ "src/node_mem.h",
+ "src/node_mem-inl.h",
+ "src/node_messaging.h",
+ "src/node_metadata.h",
+ "src/node_mutex.h",
+ "src/node_object_wrap.h",
+ "src/node_options.h",
+ "src/node_options-inl.h",
+ "src/node_perf.h",
+ "src/node_perf_common.h",
+ "src/node_platform.h",
+ "src/node_process.h",
+ "src/node_process-inl.h",
+ "src/node_realm.h",
+ "src/node_realm-inl.h",
+ "src/node_report.h",
+ "src/node_revert.h",
+ "src/node_root_certs.h",
+ "src/node_sea.h",
+ "src/node_shadow_realm.h",
+ "src/node_snapshotable.h",
+ "src/node_snapshot_builder.h",
+ "src/node_sockaddr.h",
+ "src/node_sockaddr-inl.h",
+ "src/node_stat_watcher.h",
+ "src/node_union_bytes.h",
+ "src/node_url.h",
+ "src/node_version.h",
+ "src/node_v8.h",
+ "src/node_v8_platform-inl.h",
+ "src/node_wasi.h",
+ "src/node_watchdog.h",
+ "src/node_worker.h",
+ "src/permission/child_process_permission.h",
+ "src/permission/fs_permission.h",
+ "src/permission/inspector_permission.h",
+ "src/permission/permission.h",
+ "src/permission/worker_permission.h",
+ "src/pipe_wrap.h",
+ "src/req_wrap.h",
+ "src/req_wrap-inl.h",
+ "src/spawn_sync.h",
+ "src/stream_base.h",
+ "src/stream_base-inl.h",
+ "src/stream_pipe.h",
+ "src/stream_wrap.h",
+ "src/string_bytes.h",
+ "src/string_decoder.h",
+ "src/string_decoder-inl.h",
+ "src/string_search.h",
+ "src/tcp_wrap.h",
+ "src/timers.h",
+ "src/tracing/agent.h",
+ "src/tracing/node_trace_buffer.h",
+ "src/tracing/node_trace_writer.h",
+ "src/tracing/trace_event.h",
+ "src/tracing/trace_event_common.h",
+ "src/tracing/traced_value.h",
+ "src/timer_wrap.h",
+ "src/timer_wrap-inl.h",
+ "src/tty_wrap.h",
+ "src/udp_wrap.h",
+ "src/util.h",
+ "src/util-inl.h",
+ "//v8/include/v8.h",
+ "deps/postject/postject-api.h"
+ ]
+}
diff --git a/node.gni b/node.gni
new file mode 100644
index 0000000000000000000000000000000000000000..af9cbada10203b387fb9732b346583b1c4349223
--- /dev/null
+++ b/node.gni
@@ -0,0 +1,4 @@
+declare_args() {
+ # Allows embedders to override the NODE_MODULE_VERSION define
+ node_module_version = ""
+}
diff --git a/src/inspector/BUILD.gn b/src/inspector/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..4ab828dcbf322a9e28674e48c4a6868bd1321be2
--- /dev/null
+++ b/src/inspector/BUILD.gn
@@ -0,0 +1,200 @@
+import("//v8/gni/v8.gni")
+
+inspector_protocol_dir = "../../tools/inspector_protocol"
+
+_protocol_generated = [
+ "protocol/Forward.h",
+ "protocol/Protocol.cpp",
+ "protocol/Protocol.h",
+ "protocol/NodeWorker.cpp",
+ "protocol/NodeWorker.h",
+ "protocol/NodeTracing.cpp",
+ "protocol/NodeTracing.h",
+ "protocol/NodeRuntime.cpp",
+ "protocol/NodeRuntime.h",
+]
+
+# These are from node_protocol_config.json
+# These convoluted path hacks are to work around the fact that node.js is very
+# confused about what paths are in its includes, without changing node at all.
+# Hopefully, keying everything in this file off the paths that are in
+# node_protocol_config.json will mean that the paths stay in sync.
+inspector_protocol_package = "src/node/inspector/protocol"
+inspector_protocol_output = "node/inspector/protocol"
+
+config("inspector_config") {
+ include_dirs = [
+ "$target_gen_dir",
+ "$target_gen_dir/src",
+ ]
+
+ configs = [ "../..:node_features" ]
+}
+
+source_set("inspector") {
+ sources = [
+ "main_thread_interface.cc",
+ "main_thread_interface.h",
+ "node_string.cc",
+ "node_string.h",
+ "runtime_agent.cc",
+ "runtime_agent.h",
+ "tracing_agent.cc",
+ "tracing_agent.h",
+ "worker_agent.cc",
+ "worker_agent.h",
+ "worker_inspector.cc",
+ "worker_inspector.h",
+ ]
+ sources += rebase_path(_protocol_generated,
+ ".",
+ "$target_gen_dir/$inspector_protocol_package/..")
+ include_dirs = [
+ "//v8/include",
+ "..",
+ ]
+ deps = [
+ ":protocol_generated_sources",
+ ":v8_inspector_compress_protocol_json",
+ "../../deps/uv",
+ "../../deps/simdutf",
+ "//third_party/icu:icuuc",
+ ]
+ configs += [ "../..:node_internal_config" ]
+ public_configs = [ ":inspector_config" ]
+}
+
+# This based on the template from //v8/../inspector_protocol.gni
+action("protocol_generated_sources") {
+ # This is to ensure that the output directory exists--the code generator
+ # doesn't create it.
+ write_file("$target_gen_dir/$inspector_protocol_package/.dummy", "")
+ script = "$inspector_protocol_dir/code_generator.py"
+
+ inputs = [
+ "$target_gen_dir/node_protocol_config.json",
+ "$target_gen_dir/src/node_protocol.json",
+ "$inspector_protocol_dir/lib/base_string_adapter_cc.template",
+ "$inspector_protocol_dir/lib/base_string_adapter_h.template",
+ "$inspector_protocol_dir/lib/Allocator_h.template",
+ "$inspector_protocol_dir/lib/Array_h.template",
+ "$inspector_protocol_dir/lib/DispatcherBase_cpp.template",
+ "$inspector_protocol_dir/lib/DispatcherBase_h.template",
+ "$inspector_protocol_dir/lib/ErrorSupport_cpp.template",
+ "$inspector_protocol_dir/lib/ErrorSupport_h.template",
+ "$inspector_protocol_dir/lib/Forward_h.template",
+ "$inspector_protocol_dir/lib/FrontendChannel_h.template",
+ "$inspector_protocol_dir/lib/Maybe_h.template",
+ "$inspector_protocol_dir/lib/Object_cpp.template",
+ "$inspector_protocol_dir/lib/Object_h.template",
+ "$inspector_protocol_dir/lib/Parser_cpp.template",
+ "$inspector_protocol_dir/lib/Parser_h.template",
+ "$inspector_protocol_dir/lib/Protocol_cpp.template",
+ "$inspector_protocol_dir/lib/ValueConversions_h.template",
+ "$inspector_protocol_dir/lib/Values_cpp.template",
+ "$inspector_protocol_dir/lib/Values_h.template",
+ "$inspector_protocol_dir/templates/Exported_h.template",
+ "$inspector_protocol_dir/templates/Imported_h.template",
+ "$inspector_protocol_dir/templates/TypeBuilder_cpp.template",
+ "$inspector_protocol_dir/templates/TypeBuilder_h.template",
+ ]
+
+ deps = [
+ ":node_protocol_config",
+ ":node_protocol_json",
+ ]
+
+ args = [
+ "--jinja_dir",
+ rebase_path("//third_party/", root_build_dir), # jinja is in chromium's third_party
+ "--output_base",
+ rebase_path("$target_gen_dir/src", root_build_dir),
+ "--config",
+ rebase_path("$target_gen_dir/node_protocol_config.json", root_build_dir),
+ ]
+
+ outputs =
+ get_path_info(rebase_path(rebase_path(_protocol_generated,
+ ".",
+ "$inspector_protocol_output/.."),
+ ".",
+ "$target_gen_dir/src"),
+ "abspath")
+}
+
+template("generate_protocol_json") {
+ copy_target_name = target_name + "_copy"
+ copy(copy_target_name) {
+ sources = invoker.sources
+ outputs = [
+ "$target_gen_dir/{{source_file_part}}",
+ ]
+ }
+ copied_pdl = get_target_outputs(":$copy_target_name")
+ action(target_name) {
+ deps = [
+ ":$copy_target_name",
+ ]
+ sources = copied_pdl
+ outputs = invoker.outputs
+ script = "$inspector_protocol_dir/convert_protocol_to_json.py"
+ args = rebase_path(sources + outputs, root_build_dir)
+ }
+}
+
+copy("node_protocol_config") {
+ sources = [
+ "node_protocol_config.json",
+ ]
+ outputs = [
+ "$target_gen_dir/{{source_file_part}}",
+ ]
+}
+
+generate_protocol_json("node_protocol_json") {
+ sources = [
+ "node_protocol.pdl",
+ ]
+ outputs = [
+ "$target_gen_dir/src/node_protocol.json",
+ ]
+}
+
+generate_protocol_json("v8_protocol_json") {
+ sources = [
+ "//v8/include/js_protocol.pdl",
+ ]
+ outputs = [
+ "$target_gen_dir/js_protocol.json",
+ ]
+}
+
+action("concatenate_protocols") {
+ deps = [
+ ":node_protocol_json",
+ ":v8_protocol_json",
+ ]
+ inputs = [
+ "$target_gen_dir/js_protocol.json",
+ "$target_gen_dir/src/node_protocol.json",
+ ]
+ outputs = [
+ "$target_gen_dir/concatenated_protocol.json",
+ ]
+ script = "//v8/third_party/inspector_protocol/concatenate_protocols.py"
+ args = rebase_path(inputs + outputs, root_build_dir)
+}
+
+action("v8_inspector_compress_protocol_json") {
+ deps = [
+ ":concatenate_protocols",
+ ]
+ inputs = [
+ "$target_gen_dir/concatenated_protocol.json",
+ ]
+ outputs = [
+ "$target_gen_dir/v8_inspector_protocol_json.h",
+ ]
+ script = "../../tools/compress_json.py"
+ args = rebase_path(inputs + outputs, root_build_dir)
+}
diff --git a/src/node_builtins.cc b/src/node_builtins.cc
index 84815969b6d1faa7cc3ed177e04248d9cb074596..80b36dc1aefca4d5d4124d7f84b12b9762a8de2c 100644
--- a/src/node_builtins.cc
+++ b/src/node_builtins.cc
@@ -738,6 +738,7 @@ void BuiltinLoader::RegisterExternalReferences(
registry->Register(GetNatives);
RegisterExternalReferencesForInternalizedBuiltinCode(registry);
+ EmbedderRegisterExternalReferencesForInternalizedBuiltinCode(registry);
}
} // namespace builtins
diff --git a/src/node_builtins.h b/src/node_builtins.h
index 9f2fbc1e53937448aa27c1f5fe110eabc7edc0df..ea77c7598153bb8a9ba20c89a4ece2c1580b9a25 100644
--- a/src/node_builtins.h
+++ b/src/node_builtins.h
@@ -74,6 +74,8 @@ using BuiltinCodeCacheMap =
// Generated by tools/js2c.py as node_javascript.cc
void RegisterExternalReferencesForInternalizedBuiltinCode(
ExternalReferenceRegistry* registry);
+void EmbedderRegisterExternalReferencesForInternalizedBuiltinCode(
+ ExternalReferenceRegistry* registry);
// Handles compilation and caching of built-in JavaScript modules and
// bootstrap scripts, whose source are bundled into the binary as static data.
diff --git a/tools/generate_gn_filenames_json.py b/tools/generate_gn_filenames_json.py
new file mode 100755
index 0000000000000000000000000000000000000000..7848ddb1841b6d4f36e9376c73564eb4ff6d7c08
--- /dev/null
+++ b/tools/generate_gn_filenames_json.py
@@ -0,0 +1,90 @@
+#!/usr/bin/env python3
+import json
+import os
+import sys
+
+import install
+
+from utils import SearchFiles
+
+def LoadPythonDictionary(path):
+ file_string = open(path).read()
+ try:
+ file_data = eval(file_string, {'__builtins__': None}, None)
+ except SyntaxError as e:
+ e.filename = path
+ raise
+ except Exception as e:
+ raise Exception("Unexpected error while reading %s: %s" % (path, str(e)))
+
+ assert isinstance(file_data, dict), "%s does not eval to a dictionary" % path
+
+ return file_data
+
+
+FILENAMES_JSON_HEADER = '''
+// This file is automatically generated by generate_gn_filenames_json.py
+// DO NOT EDIT
+'''.lstrip()
+
+
+if __name__ == '__main__':
+ node_root_dir = os.path.dirname(os.path.dirname(__file__))
+ node_gyp_path = os.path.join(node_root_dir, 'node.gyp')
+ out = {}
+ node_gyp = LoadPythonDictionary(node_gyp_path)
+ node_lib_target = next(
+ t for t in node_gyp['targets']
+ if t['target_name'] == '<(node_lib_target_name)')
+ node_source_blocklist = {
+ '<@(library_files)',
+ '<@(deps_files)',
+ '<@(node_sources)',
+ 'common.gypi',
+ '<(SHARED_INTERMEDIATE_DIR)/node_javascript.cc',
+ }
+
+ def filter_v8_files(files):
+ if any(f.startswith('deps/v8/') for f in files):
+ files = [f.replace('deps/v8/', '../../v8/', 1) if f.endswith('js') else f.replace('deps/v8/', '//v8/') for f in files]
+
+ if any(f == '<@(node_builtin_shareable_builtins)' for f in files):
+ files.remove('<@(node_builtin_shareable_builtins)')
+ shared_builtins = ['deps/cjs-module-lexer/lexer.js', 'deps/cjs-module-lexer/dist/lexer.js', 'deps/undici/undici.js']
+ files.extend(shared_builtins)
+
+ return files
+
+ def filter_fs_files(files):
+ return [f for f in files if f.startswith('lib/internal/fs/')] + ['lib/fs.js']
+
+ lib_files = SearchFiles('lib', 'js')
+ out['library_files'] = filter_v8_files(lib_files)
+ out['library_files'] += filter_v8_files(node_gyp['variables']['deps_files'])
+ out['node_sources'] = node_gyp['variables']['node_sources']
+
+ out['fs_files'] = filter_fs_files(out['library_files'])
+ # fs files are handled separately
+ out['library_files'] = [f for f in out['library_files'] if f not in out['fs_files']]
+
+ blocklisted_sources = [
+ f for f in node_lib_target['sources']
+ if f not in node_source_blocklist]
+ out['node_sources'] += filter_v8_files(blocklisted_sources)
+
+ out['headers'] = []
+ def add_headers(files, dest_dir):
+ if 'src/node.h' in files:
+ files = [f for f in files if f.endswith('.h') and f != 'src/node_version.h']
+ elif any(f.startswith('../../v8/') for f in files):
+ files = [f.replace('../../v8/', '//v8/', 1) for f in files]
+ if files:
+ hs = {'files': sorted(files), 'dest_dir': dest_dir}
+ out['headers'].append(hs)
+
+ install.variables = {'node_shared_libuv': 'false'}
+ install.headers(add_headers)
+ with open(os.path.join(node_root_dir, 'filenames.json'), 'w') as f:
+ f.write(FILENAMES_JSON_HEADER)
+ f.write(json.dumps(out, sort_keys=True, indent=2, separators=(',', ': ')))
+ f.write('\n')
diff --git a/tools/generate_original_fs.py b/tools/generate_original_fs.py
new file mode 100644
index 0000000000000000000000000000000000000000..98d569e6ba6d85a29a215a8f9ce3c1f6a9bd655e
--- /dev/null
+++ b/tools/generate_original_fs.py
@@ -0,0 +1,18 @@
+import os
+import sys
+
+node_root_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
+out_dir = sys.argv[1]
+fs_files = sys.argv[2:]
+
+for fs_file in fs_files:
+ with open(os.path.join(node_root_dir, fs_file), 'r') as f:
+ contents = f.read()
+ original_fs_file = fs_file.replace('internal/fs/', 'internal/original-fs/').replace('lib/fs.js', 'lib/original-fs.js')
+
+ with open(os.path.join(out_dir, fs_file), 'w') as original_f:
+ original_f.write(contents)
+
+ with open(os.path.join(out_dir, original_fs_file), 'w') as transformed_f:
+ transformed_contents = contents.replace('internal/fs/', 'internal/original-fs/')
+ transformed_f.write(transformed_contents)
diff --git a/tools/install.py b/tools/install.py
index 11616e1bcac5308020eb68fdb811bfb86cb14dd5..74b01f8352021f1105c080dbbf8bb29121a13501 100755
--- a/tools/install.py
+++ b/tools/install.py
@@ -199,105 +199,108 @@ def headers(action):
v8_headers = [
# The internal cppgc headers are depended on by the public
# ones, so they need to be included as well.
- 'deps/v8/include/cppgc/internal/api-constants.h',
- 'deps/v8/include/cppgc/internal/atomic-entry-flag.h',
- 'deps/v8/include/cppgc/internal/base-page-handle.h',
- 'deps/v8/include/cppgc/internal/caged-heap-local-data.h',
- 'deps/v8/include/cppgc/internal/caged-heap.h',
- 'deps/v8/include/cppgc/internal/compiler-specific.h',
- 'deps/v8/include/cppgc/internal/finalizer-trait.h',
- 'deps/v8/include/cppgc/internal/gc-info.h',
- 'deps/v8/include/cppgc/internal/logging.h',
- 'deps/v8/include/cppgc/internal/member-storage.h',
- 'deps/v8/include/cppgc/internal/name-trait.h',
- 'deps/v8/include/cppgc/internal/persistent-node.h',
- 'deps/v8/include/cppgc/internal/pointer-policies.h',
- 'deps/v8/include/cppgc/internal/write-barrier.h',
+ '../../v8/include/cppgc/internal/api-constants.h',
+ '../../v8/include/cppgc/internal/atomic-entry-flag.h',
+ '../../v8/include/cppgc/internal/base-page-handle.h',
+ '../../v8/include/cppgc/internal/caged-heap-local-data.h',
+ '../../v8/include/cppgc/internal/caged-heap.h',
+ '../../v8/include/cppgc/internal/compiler-specific.h',
+ '../../v8/include/cppgc/internal/finalizer-trait.h',
+ '../../v8/include/cppgc/internal/gc-info.h',
+ '../../v8/include/cppgc/internal/logging.h',
+ '../../v8/include/cppgc/internal/member-storage.h',
+ '../../v8/include/cppgc/internal/name-trait.h',
+ '../../v8/include/cppgc/internal/persistent-node.h',
+ '../../v8/include/cppgc/internal/pointer-policies.h',
+ '../../v8/include/cppgc/internal/write-barrier.h',
# cppgc headers
- 'deps/v8/include/cppgc/allocation.h',
- 'deps/v8/include/cppgc/common.h',
- 'deps/v8/include/cppgc/cross-thread-persistent.h',
- 'deps/v8/include/cppgc/custom-space.h',
- 'deps/v8/include/cppgc/default-platform.h',
- 'deps/v8/include/cppgc/ephemeron-pair.h',
- 'deps/v8/include/cppgc/explicit-management.h',
- 'deps/v8/include/cppgc/garbage-collected.h',
- 'deps/v8/include/cppgc/heap-consistency.h',
- 'deps/v8/include/cppgc/heap-handle.h',
- 'deps/v8/include/cppgc/heap-state.h',
- 'deps/v8/include/cppgc/heap-statistics.h',
- 'deps/v8/include/cppgc/heap.h',
- 'deps/v8/include/cppgc/liveness-broker.h',
- 'deps/v8/include/cppgc/macros.h',
- 'deps/v8/include/cppgc/member.h',
- 'deps/v8/include/cppgc/name-provider.h',
- 'deps/v8/include/cppgc/object-size-trait.h',
- 'deps/v8/include/cppgc/persistent.h',
- 'deps/v8/include/cppgc/platform.h',
- 'deps/v8/include/cppgc/prefinalizer.h',
- 'deps/v8/include/cppgc/process-heap-statistics.h',
- 'deps/v8/include/cppgc/sentinel-pointer.h',
- 'deps/v8/include/cppgc/source-location.h',
- 'deps/v8/include/cppgc/testing.h',
- 'deps/v8/include/cppgc/trace-trait.h',
- 'deps/v8/include/cppgc/type-traits.h',
- 'deps/v8/include/cppgc/visitor.h',
+ '../../v8/include/cppgc/allocation.h',
+ '../../v8/include/cppgc/common.h',
+ '../../v8/include/cppgc/cross-thread-persistent.h',
+ '../../v8/include/cppgc/custom-space.h',
+ '../../v8/include/cppgc/default-platform.h',
+ '../../v8/include/cppgc/ephemeron-pair.h',
+ '../../v8/include/cppgc/explicit-management.h',
+ '../../v8/include/cppgc/garbage-collected.h',
+ '../../v8/include/cppgc/heap-consistency.h',
+ '../../v8/include/cppgc/heap-handle.h',
+ '../../v8/include/cppgc/heap-state.h',
+ '../../v8/include/cppgc/heap-statistics.h',
+ '../../v8/include/cppgc/heap.h',
+ '../../v8/include/cppgc/liveness-broker.h',
+ '../../v8/include/cppgc/macros.h',
+ '../../v8/include/cppgc/member.h',
+ '../../v8/include/cppgc/name-provider.h',
+ '../../v8/include/cppgc/object-size-trait.h',
+ '../../v8/include/cppgc/persistent.h',
+ '../../v8/include/cppgc/platform.h',
+ '../../v8/include/cppgc/prefinalizer.h',
+ '../../v8/include/cppgc/process-heap-statistics.h',
+ '../../v8/include/cppgc/sentinel-pointer.h',
+ '../../v8/include/cppgc/source-location.h',
+ '../../v8/include/cppgc/testing.h',
+ '../../v8/include/cppgc/trace-trait.h',
+ '../../v8/include/cppgc/type-traits.h',
+ '../../v8/include/cppgc/visitor.h',
# libplatform headers
- 'deps/v8/include/libplatform/libplatform-export.h',
- 'deps/v8/include/libplatform/libplatform.h',
- 'deps/v8/include/libplatform/v8-tracing.h',
+ '../../v8/include/libplatform/libplatform-export.h',
+ '../../v8/include/libplatform/libplatform.h',
+ '../../v8/include/libplatform/v8-tracing.h',
# v8 headers
- 'deps/v8/include/v8-array-buffer.h',
- 'deps/v8/include/v8-callbacks.h',
- 'deps/v8/include/v8-container.h',
- 'deps/v8/include/v8-context.h',
- 'deps/v8/include/v8-cppgc.h',
- 'deps/v8/include/v8-data.h',
- 'deps/v8/include/v8-date.h',
- 'deps/v8/include/v8-debug.h',
- 'deps/v8/include/v8-embedder-heap.h',
- 'deps/v8/include/v8-embedder-state-scope.h',
- 'deps/v8/include/v8-exception.h',
- 'deps/v8/include/v8-extension.h',
- 'deps/v8/include/v8-external.h',
- 'deps/v8/include/v8-forward.h',
- 'deps/v8/include/v8-function-callback.h',
- 'deps/v8/include/v8-function.h',
- 'deps/v8/include/v8-initialization.h',
- 'deps/v8/include/v8-internal.h',
- 'deps/v8/include/v8-isolate.h',
- 'deps/v8/include/v8-json.h',
- 'deps/v8/include/v8-local-handle.h',
- 'deps/v8/include/v8-locker.h',
- 'deps/v8/include/v8-maybe.h',
- 'deps/v8/include/v8-memory-span.h',
- 'deps/v8/include/v8-message.h',
- 'deps/v8/include/v8-microtask-queue.h',
- 'deps/v8/include/v8-microtask.h',
- 'deps/v8/include/v8-object.h',
- 'deps/v8/include/v8-persistent-handle.h',
- 'deps/v8/include/v8-platform.h',
- 'deps/v8/include/v8-primitive-object.h',
- 'deps/v8/include/v8-primitive.h',
- 'deps/v8/include/v8-profiler.h',
- 'deps/v8/include/v8-promise.h',
- 'deps/v8/include/v8-proxy.h',
- 'deps/v8/include/v8-regexp.h',
- 'deps/v8/include/v8-script.h',
- 'deps/v8/include/v8-snapshot.h',
- 'deps/v8/include/v8-statistics.h',
- 'deps/v8/include/v8-template.h',
- 'deps/v8/include/v8-traced-handle.h',
- 'deps/v8/include/v8-typed-array.h',
- 'deps/v8/include/v8-unwinder.h',
- 'deps/v8/include/v8-value-serializer.h',
- 'deps/v8/include/v8-value.h',
- 'deps/v8/include/v8-version.h',
- 'deps/v8/include/v8-wasm.h',
- 'deps/v8/include/v8-weak-callback-info.h',
- 'deps/v8/include/v8.h',
- 'deps/v8/include/v8config.h',
+ '../../v8/include/v8-array-buffer.h',
+ '../../v8/include/v8-callbacks.h',
+ '../../v8/include/v8-container.h',
+ '../../v8/include/v8-context.h',
+ '../../v8/include/v8-cppgc.h',
+ '../../v8/include/v8-data.h',
+ '../../v8/include/v8-date.h',
+ '../../v8/include/v8-debug.h',
+ '../../v8/include/v8-embedder-heap.h',
+ '../../v8/include/v8-embedder-state-scope.h',
+ '../../v8/include/v8-exception.h',
+ '../../v8/include/v8-extension.h',
+ '../../v8/include/v8-external.h',
+ '../../v8/include/v8-forward.h',
+ '../../v8/include/v8-function-callback.h',
+ '../../v8/include/v8-function.h',
+ '../../v8/include/v8-handle-base.h',
+ '../../v8/include/v8-initialization.h',
+ '../../v8/include/v8-internal.h',
+ '../../v8/include/v8-isolate.h',
+ '../../v8/include/v8-json.h',
+ '../../v8/include/v8-local-handle.h',
+ '../../v8/include/v8-locker.h',
+ '../../v8/include/v8-maybe.h',
+ '../../v8/include/v8-memory-span.h',
+ '../../v8/include/v8-message.h',
+ '../../v8/include/v8-microtask-queue.h',
+ '../../v8/include/v8-microtask.h',
+ '../../v8/include/v8-object.h',
+ '../../v8/include/v8-persistent-handle.h',
+ '../../v8/include/v8-platform.h',
+ '../../v8/include/v8-primitive-object.h',
+ '../../v8/include/v8-primitive.h',
+ '../../v8/include/v8-profiler.h',
+ '../../v8/include/v8-promise.h',
+ '../../v8/include/v8-proxy.h',
+ '../../v8/include/v8-regexp.h',
+ '../../v8/include/v8-script.h',
+ '../../v8/include/v8-snapshot.h',
+ '../../v8/include/v8-source-location.h',
+ '../../v8/include/v8-statistics.h',
+ '../../v8/include/v8-template.h',
+ '../../v8/include/v8-traced-handle.h',
+ '../../v8/include/v8-typed-array.h',
+ '../../v8/include/v8-unwinder.h',
+ '../../v8/include/v8-value-serializer.h',
+ '../../v8/include/v8-value.h',
+ '../../v8/include/v8-version.h',
+ '../../v8/include/v8-wasm.h',
+ '../../v8/include/v8-weak-callback-info.h',
+ '../../v8/include/v8.h',
+ '../../v8/include/v8config.h',
]
+ v8_headers = [h.replace('deps/', '../../') for h in v8_headers]
files_arg = [name for name in files_arg if name in v8_headers]
action(files_arg, dest)
@@ -324,7 +327,7 @@ def headers(action):
if sys.platform.startswith('aix') or sys.platform == "os400":
action(['out/Release/node.exp'], 'include/node/')
- subdir_files('deps/v8/include', 'include/node/', wanted_v8_headers)
+ subdir_files('../../v8/include', 'include/node/', wanted_v8_headers)
if 'false' == variables.get('node_shared_libuv'):
subdir_files('deps/uv/include', 'include/node/', action)
diff --git a/tools/js2c.cc b/tools/js2c.cc
old mode 100644
new mode 100755
index 904fb6fa44d4f56fb67476e937edcbb797d78fe7..129cd4b2c12b58464fbab8355afa0c26721d1413
--- a/tools/js2c.cc
+++ b/tools/js2c.cc
@@ -29,6 +29,7 @@ namespace js2c {
int Main(int argc, char* argv[]);
static bool is_verbose = false;
+static bool only_js = false;
void Debug(const char* format, ...) {
va_list arguments;
@@ -195,6 +196,7 @@ const char* kTemplate = R"(
#include "node_builtins.h"
#include "node_external_reference.h"
#include "node_internals.h"
+#include "node_threadsafe_cow-inl.h"
namespace node {
@@ -210,7 +212,11 @@ const ThreadsafeCopyOnWrite<BuiltinSourceMap> global_source_map {
} // anonymous namespace
void BuiltinLoader::LoadJavaScriptSource() {
- source_ = global_source_map;
+ BuiltinSourceMap map = *source_.read();
+ BuiltinSourceMap new_map = *global_source_map.read();
+
+ map.merge(new_map);
+ source_ = ThreadsafeCopyOnWrite<BuiltinSourceMap>(map);
}
void RegisterExternalReferencesForInternalizedBuiltinCode(
@@ -227,6 +233,45 @@ UnionBytes BuiltinLoader::GetConfig() {
} // namespace node
)";
+const char* kEmbedderTemplate = R"(
+#include "env-inl.h"
+#include "node_builtins.h"
+#include "node_external_reference.h"
+#include "node_internals.h"
+#include "node_threadsafe_cow-inl.h"
+
+namespace node {
+
+namespace builtins {
+
+%.*s
+namespace {
+const ThreadsafeCopyOnWrite<BuiltinSourceMap> global_source_map {
+ BuiltinSourceMap {
+%.*s
+ } // BuiltinSourceMap
+
+}; // ThreadsafeCopyOnWrite
+} // anonymous namespace
+
+void BuiltinLoader::LoadEmbedderJavaScriptSource() {
+ BuiltinSourceMap map = *source_.read();
+ BuiltinSourceMap new_map = *global_source_map.read();
+
+ map.merge(new_map);
+ source_ = ThreadsafeCopyOnWrite<BuiltinSourceMap>(map);
+}
+
+void EmbedderRegisterExternalReferencesForInternalizedBuiltinCode(
+ ExternalReferenceRegistry* registry) {
+%.*s
+}
+
+} // namespace builtins
+
+} // namespace node
+)";
+
Fragment Format(const Fragments& definitions,
const Fragments& initializers,
const Fragments& registrations) {
@@ -236,13 +281,12 @@ Fragment Format(const Fragments& definitions,
size_t init_size = init_buf.size();
std::vector<char> reg_buf = Join(registrations, "\n");
size_t reg_size = reg_buf.size();
-
- size_t result_size =
- def_size + init_size + reg_size + strlen(kTemplate) + 100;
+ size_t result_size = def_size + init_size + reg_size +
+ strlen(only_js ? kEmbedderTemplate: kTemplate) + 300;
std::vector<char> result(result_size, 0);
int r = snprintf(result.data(),
result_size,
- kTemplate,
+ only_js ? kEmbedderTemplate: kTemplate,
static_cast<int>(def_buf.size()),
def_buf.data(),
static_cast<int>(init_buf.size()),
@@ -711,12 +755,15 @@ int JS2C(const FileList& js_files,
}
}
+ if (!only_js) {
assert(FilenameIsConfigGypi(config));
// "config.gypi" -> config_raw.
int r = AddGypi("config", config, &definitions);
if (r != 0) {
return r;
}
+ }
+
Fragment out = Format(definitions, initializers, registrations);
return WriteIfChanged(out, dest);
}
@@ -742,6 +789,8 @@ int Main(int argc, char* argv[]) {
std::string arg(argv[i]);
if (arg == "--verbose") {
is_verbose = true;
+ } else if (arg == "--only-js") {
+ only_js = true;
} else if (arg == "--root") {
if (i == argc - 1) {
fprintf(stderr, "--root must be followed by a path\n");
@@ -790,6 +839,14 @@ int Main(int argc, char* argv[]) {
}
}
+ if (only_js) {
+ auto js_it = file_map.find(".js");
+
+ assert(file_map.size() == 1);
+ assert(js_it != file_map.end());
+
+ return JS2C(js_it->second, FileList(), std::string(), output);
+ } else {
// Should have exactly 3 types: `.js`, `.mjs` and `.gypi`.
assert(file_map.size() == 3);
auto gypi_it = file_map.find(".gypi");
@@ -809,6 +866,7 @@ int Main(int argc, char* argv[]) {
std::sort(mjs_it->second.begin(), mjs_it->second.end());
return JS2C(js_it->second, mjs_it->second, gypi_it->second[0], output);
+ }
}
} // namespace js2c
} // namespace node
@@ -817,4 +875,4 @@ NODE_MAIN(int argc, node::argv_type raw_argv[]) {
char** argv;
node::FixupMain(argc, raw_argv, &argv);
return node::js2c::Main(argc, argv);
-}
+}
\ No newline at end of file