Files
Shelley Vohr 6f38736d63 build: allow linking shared dependencies in the GN build
The GN build always compiles the bundled copies of brotli, c-ares,
HdrHistogram, llhttp, libuv, nghttp2, SQLite and zstd, so anyone
packaging a GN-built Node.js for a Linux distribution has no
counterpart to configure's --shared-* options.

Add node_shared_* args named after the GYP variables. When one is set,
that dependency's GN template defines its target as a group carrying a
pkg-config config instead of the bundled sources, so every existing
"deps/<name>" reference picks up the system library without further
changes, and config.gypi reports the choice like a GYP build does.

Refs: https://github.com/nodejs/node/pull/55903
Signed-off-by: Shelley Vohr <shelley.vohr@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/65797
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
2026-09-07 07:19:20 +00:00

57 lines
1.6 KiB
Plaintext

# This file is used by GN for building, which is NOT the build system used for
# building official binaries.
# Please edit the gyp files if you are making changes to build system.
# The actual configurations are put inside a template in unofficial.gni to
# prevent accidental edits from contributors.
import("../../node.gni")
template("nghttp2_gn_build") {
if (node_shared_nghttp2) {
import("//build/config/linux/pkg_config.gni")
pkg_config("nghttp2_config") {
packages = [ "libnghttp2" ]
}
group(target_name) {
forward_variables_from(invoker, "*")
public_configs = [ ":nghttp2_config" ]
}
} else {
config("nghttp2_config") {
include_dirs = [ "lib/includes" ]
if (!is_component_build) {
defines = [ "NGHTTP2_STATICLIB" ]
}
}
gypi_values = exec_script("../../tools/gypi_to_gn.py",
[ rebase_path("nghttp2.gyp") ],
"scope",
[ "nghttp2.gyp" ])
component(target_name) {
forward_variables_from(invoker, "*")
public_configs = [ ":nghttp2_config" ]
defines = [
"_U_",
"HAVE_CONFIG_H"
]
if (is_component_build) {
defines += [ "BUILDING_NGHTTP2" ]
}
sources = gypi_values.nghttp2_sources
if (is_clang || !is_win) {
cflags_c = [
"-Wno-implicit-fallthrough",
# Ref https://github.com/nghttp2/nghttp2/pull/2258
# This can be removed when the above PR is ingested.
"-Wno-extra-semi",
]
}
}
}
}