 +  public_configs = [ ":node_lib_config" ]
 +  include_dirs = [ "src" ]
 +  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",


diff --git a/BUILD.gn b/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..9e34a074cfa7dec61c4e11821ba5f1969f393dfb
--- /dev/null
+++ b/BUILD.gn
@@ -0,0 +1,403 @@
+import("//v8/gni/v8.gni")
+import("node.gni")
+

+component("node_lib") {
+  deps = [
+    ":node_js2c",
+    "deps/googletest:gtest",
+    "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",
