[bazel] Run nodejs inside of bazel for genrules (#1948)

This commit is contained in:
Keith Smiley
2024-02-07 13:29:06 -05:00
committed by GitHub
parent f9c6c9c2be
commit 5cd2f73d77
24 changed files with 2910 additions and 179 deletions

View File

@@ -1,4 +1,6 @@
load("@aspect_rules_js//js:defs.bzl", "js_binary", "js_library", "js_run_binary")
load("@bazel_skylib//rules:common_settings.bzl", "string_flag")
load("@npm//:defs.bzl", "npm_link_all_packages")
load(
"//bazel:core.bzl",
"MLN_CORE_HEADERS",
@@ -20,62 +22,51 @@ load(
load("//bazel:flags.bzl", "CPP_FLAGS", "MAPLIBRE_FLAGS")
# Generate code required by the core
filegroup(
name = "style_data",
srcs = glob(["**/*.ejs"]),
)
genrule(
js_run_binary(
name = "generated_style_code",
srcs = ["style_data"],
srcs = glob(
["**/*.ejs"],
allow_empty = False,
),
outs = MLN_PUBLIC_GENERATED_STYLE_HEADERS +
MLN_PRIVATE_GENERATED_STYLE_HEADERS +
MLN_GENERATED_STYLE_SOURCE,
cmd = "node $(execpath scripts/generate-style-code.js) --root $(RULEDIR)",
tools = ["scripts/generate-style-code.js"],
tool = ":generate-style-code-script",
)
filegroup(
name = "shader_data",
srcs = ["shaders/manifest.json"] + glob(["shaders/*.glsl"]),
)
genrule(
js_run_binary(
name = "generated_shaders",
srcs = ["shader_data"],
srcs = ["shaders/manifest.json"] + glob(
["shaders/*.glsl"],
allow_empty = False,
),
outs = MLN_GENERATED_SHADER_HEADERS +
MLN_GENERATED_OPENGL_SHADER_HEADERS,
cmd = "node $(execpath shaders/generate_shader_code.js) --root $(RULEDIR)",
tools = ["shaders/generate_shader_code.js"],
tool = ":generate-shader-code-script",
)
# This header only target strips the __generated__ prefix for the compiler
# search paths, making the location of generated code transparent to the build
cc_library(
name = "mbgl-core-generated-public-artifacts",
srcs = [],
hdrs = MLN_PUBLIC_GENERATED_STYLE_HEADERS +
hdrs = [
":generated_shaders",
":generated_style_code",
] + MLN_PUBLIC_GENERATED_STYLE_HEADERS +
MLN_GENERATED_SHADER_HEADERS +
select({
"//:metal_renderer": [],
"//conditions:default": MLN_GENERATED_OPENGL_SHADER_HEADERS,
}),
visibility = ["//visibility:public"],
deps = [
":generated_shaders",
":generated_style_code",
],
)
# ditto, but for private headers (under the src/ path)
cc_library(
name = "mbgl-core-generated-private-artifacts",
srcs = [],
hdrs = MLN_PRIVATE_GENERATED_STYLE_HEADERS,
hdrs = [":generated_style_code"] + MLN_PRIVATE_GENERATED_STYLE_HEADERS,
visibility = ["//visibility:private"],
deps = [
":generated_style_code",
],
)
# Generated source is inserted directly into the core target, no need to remove
@@ -207,3 +198,45 @@ exports_files(
],
visibility = ["//visibility:public"],
)
npm_link_all_packages(
name = "node_modules",
)
js_binary(
name = "generate-style-code-script",
data = [
":node_modules/argparse",
":node_modules/csscolorparser",
":style-code",
":style-spec",
],
entry_point = "scripts/generate-style-code.js",
)
js_binary(
name = "generate-shader-code-script",
data = [
":node_modules/argparse",
],
entry_point = "shaders/generate_shader_code.js",
)
js_library(
name = "style-spec",
srcs = ["scripts/style-spec.js"],
data = glob([
"scripts/style-spec-reference/*.js",
"scripts/style-spec-reference/*.json",
]),
visibility = ["//visibility:public"],
)
js_library(
name = "style-code",
srcs = ["scripts/style-code.js"],
visibility = ["//visibility:public"],
deps = [
":node_modules/ejs",
],
)