# This file is used by GN for building, which is NOT the build system used for
# building official binaries.
# Please take a look at node.gyp if you are making changes to build system.

# Embedder options.
declare_args() {
  # The location of Node.js in source code tree.
  node_path = "//node"

  # The location of V8, use the one from node's deps by default.
  node_v8_path = "$node_path/deps/v8"

  # The NODE_MODULE_VERSION defined in node_version.h.
  node_module_version = exec_script("$node_path/tools/getmoduleversion.py", [], "value")

  # Support for external shareable builtins.
  # TODO(zcbenz): This is currently copied from configure.py, we should share
  # the list between configure.py and GN configurations.
  node_builtin_shareable_builtins = [
    "deps/cjs-module-lexer/lexer.js",
    "deps/cjs-module-lexer/dist/lexer.js",
    "deps/undici/undici.js",
  ]
}

# Equivalent of gyp file's configurations.
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.
  node_use_v8_platform = true

  # 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 = ""

  # Use code cache to speed up startup. Disabled for cross compilation.
  node_use_node_code_cache = host_os == target_os && host_cpu == target_cpu

  # Use snapshot to speed up startup.
  # TODO(zcbenz): There are few broken things for now:
  #   1. cross-os compilation is not supported.
  #   2. node_mksnapshot crashes when cross-compiling for x64 from arm64.
  node_use_node_snapshot = (host_os == target_os) && !(host_cpu == "arm64" && target_cpu == "x64")
}

assert(!node_enable_inspector || node_use_openssl,
       "node_enable_inspector requires node_use_openssl")