Bazel Updates, Code generation (#1285)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
mwilsnd
2023-07-05 18:41:03 -05:00
committed by Bart Louwers
parent 220d4af7d1
commit 8779aab3bc
8 changed files with 331 additions and 184 deletions

View File

@@ -1,67 +1,55 @@
load("//bazel:flags.bzl", "CPP_FLAGS", "MAPLIBRE_FLAGS") load("//bazel:flags.bzl", "CPP_FLAGS", "MAPLIBRE_FLAGS")
load("@bazel_skylib//rules:common_settings.bzl", "string_flag") load("@bazel_skylib//rules:common_settings.bzl", "string_flag")
load("//bazel:core.bzl", "MLN_CORE_SOURCE", "MLN_CORE_HEADERS", "MLN_OPENGL_SOURCE", "MLN_OPENGL_HEADERS", "MLN_DRAWABLES_SOURCE", "MLN_DRAWABLES_HEADERS") load("//bazel:core.bzl",
"MLN_PUBLIC_GENERATED_STYLE_HEADERS",
string_flag( "MLN_PRIVATE_GENERATED_STYLE_HEADERS",
name = "renderer", "MLN_GENERATED_STYLE_SOURCE",
build_setting_default = "drawable", "MLN_GENERATED_SHADER_HEADERS",
values=["legacy", "drawable", "split"] "MLN_CORE_SOURCE",
) "MLN_CORE_HEADERS",
"MLN_OPENGL_SOURCE",
config_setting( "MLN_OPENGL_HEADERS",
name = "legacy_renderer", "MLN_DRAWABLES_SOURCE",
flag_values = { "MLN_DRAWABLES_HEADERS",
":renderer": "legacy"
}
)
config_setting(
name = "drawable_renderer",
flag_values = {
":renderer": "drawable"
}
)
config_setting(
name = "split_renderer",
flag_values = {
":renderer": "split"
}
) )
load("//bazel:macros.bzl", "appendList")
# Generate code required by the core # Generate code required by the core
# All generated code is placed in the prefix location __generated__
# by our generator scripts and genrules
PREFIXED = {
"MLN_PUBLIC_GENERATED_STYLE_HEADERS": appendList(MLN_PUBLIC_GENERATED_STYLE_HEADERS, "__generated__/"),
"MLN_PRIVATE_GENERATED_STYLE_HEADERS": appendList(MLN_PRIVATE_GENERATED_STYLE_HEADERS, "__generated__/"),
"MLN_GENERATED_STYLE_SOURCE": appendList(MLN_GENERATED_STYLE_SOURCE, "__generated__/"),
"MLN_GENERATED_SHADER_HEADERS": appendList(MLN_GENERATED_SHADER_HEADERS, "__generated__/"),
}
filegroup( filegroup(
name = "style_data", name = "style_data",
srcs = glob( srcs = glob(["**/*.ejs"], allow_empty = False)
["**/*.ejs"],
allow_empty = False,
),
) )
genrule( genrule(
name = "generated_style_code", name = "generated_style_code",
srcs = ["style_data"],
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)", cmd = "node $(execpath scripts/generate-style-code.js) --root $(RULEDIR)",
tools = ["scripts/generate-style-code.js"], tools = ["scripts/generate-style-code.js"],
srcs = ["style_data"],
outs = PREFIXED["MLN_PUBLIC_GENERATED_STYLE_HEADERS"]
+ PREFIXED["MLN_PRIVATE_GENERATED_STYLE_HEADERS"]
+ PREFIXED["MLN_GENERATED_STYLE_SOURCE"],
) )
filegroup( filegroup(
name = "shader_data", name = "shader_data",
srcs = ["shaders/manifest.json"] + glob( srcs = ["shaders/manifest.json"] + glob(["shaders/*.glsl"], allow_empty = False)
["shaders/*.glsl"],
allow_empty = False,
),
) )
genrule( genrule(
name = "generated_shaders", name = "generated_shaders",
srcs = ["shader_data"],
outs = MLN_GENERATED_SHADER_HEADERS,
cmd = "node $(execpath shaders/generate_shader_code.js) --root $(RULEDIR)", cmd = "node $(execpath shaders/generate_shader_code.js) --root $(RULEDIR)",
tools = ["shaders/generate_shader_code.js"], tools = ["shaders/generate_shader_code.js"],
srcs = ["shader_data"],
outs = PREFIXED["MLN_GENERATED_SHADER_HEADERS"],
) )
# This header only target strips the __generated__ prefix for the compiler # This header only target strips the __generated__ prefix for the compiler
@@ -69,12 +57,13 @@ genrule(
cc_library( cc_library(
name = "mbgl-core-generated-public-artifacts", name = "mbgl-core-generated-public-artifacts",
srcs = [], srcs = [],
hdrs = MLN_PUBLIC_GENERATED_STYLE_HEADERS + hdrs = PREFIXED["MLN_PUBLIC_GENERATED_STYLE_HEADERS"]
MLN_GENERATED_SHADER_HEADERS, + PREFIXED["MLN_GENERATED_SHADER_HEADERS"],
strip_include_prefix = "__generated__/include",
visibility = ["//visibility:public"], visibility = ["//visibility:public"],
deps = [ deps = [
":generated_shaders",
":generated_style_code", ":generated_style_code",
":generated_shaders",
], ],
) )
@@ -82,7 +71,8 @@ cc_library(
cc_library( cc_library(
name = "mbgl-core-generated-private-artifacts", name = "mbgl-core-generated-private-artifacts",
srcs = [], srcs = [],
hdrs = MLN_PRIVATE_GENERATED_STYLE_HEADERS, hdrs = PREFIXED["MLN_PRIVATE_GENERATED_STYLE_HEADERS"],
strip_include_prefix = "__generated__/src",
visibility = ["//visibility:private"], visibility = ["//visibility:private"],
deps = [ deps = [
":generated_style_code", ":generated_style_code",
@@ -93,21 +83,36 @@ cc_library(
# the prefix from the path. # the prefix from the path.
cc_library( cc_library(
name = "mbgl-core", name = "mbgl-core",
srcs = MLN_CORE_SOURCE + select({ srcs = MLN_CORE_SOURCE
+ PREFIXED["MLN_GENERATED_STYLE_SOURCE"]
+ MLN_OPENGL_SOURCE
+ select({
":drawable_renderer": MLN_DRAWABLES_SOURCE, ":drawable_renderer": MLN_DRAWABLES_SOURCE,
":split_renderer": MLN_DRAWABLES_SOURCE, ":split_renderer": MLN_DRAWABLES_SOURCE,
"//conditions:default": [] "//conditions:default": []
}) + MLN_OPENGL_SOURCE, }),
hdrs = MLN_CORE_HEADERS + select({ hdrs = MLN_CORE_HEADERS
+ MLN_OPENGL_HEADERS
+ select({
":drawable_renderer": MLN_DRAWABLES_HEADERS, ":drawable_renderer": MLN_DRAWABLES_HEADERS,
":split_renderer": MLN_DRAWABLES_HEADERS, ":split_renderer": MLN_DRAWABLES_HEADERS,
"//conditions:default": [] "//conditions:default": []
}) + MLN_OPENGL_HEADERS, }),
copts = CPP_FLAGS + MAPLIBRE_FLAGS, copts = CPP_FLAGS + MAPLIBRE_FLAGS,
defines = select({ defines = select({
":legacy_renderer": ["MLN_LEGACY_RENDERER=1", "MLN_DRAWABLE_RENDERER=0"], ":legacy_renderer": [
":drawable_renderer": ["MLN_LEGACY_RENDERER=0", "MLN_DRAWABLE_RENDERER=1"], "MLN_LEGACY_RENDERER=1",
":split_renderer": ["MLN_LEGACY_RENDERER=1", "MLN_DRAWABLE_RENDERER=1", "MLN_RENDERER_SPLIT_VIEW=1"], "MLN_DRAWABLE_RENDERER=0"
],
":drawable_renderer": [
"MLN_LEGACY_RENDERER=0",
"MLN_DRAWABLE_RENDERER=1"
],
":split_renderer": [
"MLN_LEGACY_RENDERER=1",
"MLN_DRAWABLE_RENDERER=1",
"MLN_RENDERER_SPLIT_VIEW=1"
],
}) + select({ }) + select({
"//:ios": ["GLES_SILENCE_DEPRECATION=1"], "//:ios": ["GLES_SILENCE_DEPRECATION=1"],
"//conditions:default": [] "//conditions:default": []
@@ -121,8 +126,8 @@ cc_library(
], ],
visibility = ["//visibility:public"], visibility = ["//visibility:public"],
deps = [ deps = [
":mbgl-core-generated-private-artifacts",
":mbgl-core-generated-public-artifacts", ":mbgl-core-generated-public-artifacts",
":mbgl-core-generated-private-artifacts",
"//vendor:boost", "//vendor:boost",
"//vendor:csscolorparser", "//vendor:csscolorparser",
"//vendor:earcut.hpp", "//vendor:earcut.hpp",
@@ -184,6 +189,35 @@ config_setting(
}, },
) )
# Selects the rendering implementation to utilize in the core
string_flag(
name = "renderer",
build_setting_default = "legacy",
values=["legacy", "drawable", "split"]
)
config_setting(
name = "legacy_renderer",
flag_values = {
":renderer": "legacy"
}
)
config_setting(
name = "drawable_renderer",
flag_values = {
":renderer": "drawable"
}
)
config_setting(
name = "split_renderer",
flag_values = {
":renderer": "split"
}
)
exports_files( exports_files(
[ [
"LICENSE.md", "LICENSE.md",

View File

@@ -1,10 +1,105 @@
# MLN_RENDERER_DEFINES = select({ MLN_PUBLIC_GENERATED_STYLE_HEADERS = [
# ":legacy_renderer": ["MLN_LEGACY_RENDERER=1"], "include/mbgl/style/layers/circle_layer.hpp",
# "//conditions:default": ["MLN_LEGACY_RENDERER=0"] "include/mbgl/style/layers/fill_layer.hpp",
# }) + select({ "include/mbgl/style/layers/line_layer.hpp",
# ":drawable_renderer": ["MLN_DRAWABLE_RENDERER=1"], "include/mbgl/style/layers/symbol_layer.hpp",
# "//conditions:default": ["MLN_DRAWABLE_RENDERER=0"] "include/mbgl/style/layers/heatmap_layer.hpp",
# }) "include/mbgl/style/layers/fill_extrusion_layer.hpp",
"include/mbgl/style/layers/raster_layer.hpp",
"include/mbgl/style/layers/hillshade_layer.hpp",
"include/mbgl/style/layers/background_layer.hpp",
"include/mbgl/style/layers/location_indicator_layer.hpp",
"include/mbgl/style/light.hpp",
]
MLN_PRIVATE_GENERATED_STYLE_HEADERS = [
"src/mbgl/style/layers/fill_layer_properties.hpp",
"src/mbgl/style/layers/line_layer_properties.hpp",
"src/mbgl/style/layers/symbol_layer_properties.hpp",
"src/mbgl/style/layers/circle_layer_properties.hpp",
"src/mbgl/style/layers/heatmap_layer_properties.hpp",
"src/mbgl/style/layers/fill_extrusion_layer_properties.hpp",
"src/mbgl/style/layers/raster_layer_properties.hpp",
"src/mbgl/style/layers/hillshade_layer_properties.hpp",
"src/mbgl/style/layers/background_layer_properties.hpp",
"src/mbgl/style/layers/location_indicator_layer_properties.hpp",
]
MLN_GENERATED_STYLE_SOURCE = [
"src/mbgl/style/layers/fill_layer_properties.cpp",
"src/mbgl/style/layers/fill_layer.cpp",
"src/mbgl/style/layers/line_layer_properties.cpp",
"src/mbgl/style/layers/line_layer.cpp",
"src/mbgl/style/layers/symbol_layer_properties.cpp",
"src/mbgl/style/layers/symbol_layer.cpp",
"src/mbgl/style/layers/circle_layer_properties.cpp",
"src/mbgl/style/layers/circle_layer.cpp",
"src/mbgl/style/layers/heatmap_layer_properties.cpp",
"src/mbgl/style/layers/heatmap_layer.cpp",
"src/mbgl/style/layers/fill_extrusion_layer_properties.cpp",
"src/mbgl/style/layers/fill_extrusion_layer.cpp",
"src/mbgl/style/layers/raster_layer_properties.cpp",
"src/mbgl/style/layers/raster_layer.cpp",
"src/mbgl/style/layers/hillshade_layer_properties.cpp",
"src/mbgl/style/layers/hillshade_layer.cpp",
"src/mbgl/style/layers/background_layer_properties.cpp",
"src/mbgl/style/layers/background_layer.cpp",
"src/mbgl/style/layers/location_indicator_layer_properties.cpp",
"src/mbgl/style/layers/location_indicator_layer.cpp",
"src/mbgl/style/light.cpp",
]
MLN_GENERATED_SHADER_HEADERS = [
"include/mbgl/shaders/shader_source.hpp",
"include/mbgl/shaders/shader_manifest.hpp",
"include/mbgl/shaders/gl/background.hpp",
"include/mbgl/shaders/gl/background_pattern.hpp",
"include/mbgl/shaders/gl/circle.hpp",
"include/mbgl/shaders/gl/clipping_mask.hpp",
"include/mbgl/shaders/gl/collision_box.hpp",
"include/mbgl/shaders/gl/collision_circle.hpp",
"include/mbgl/shaders/gl/debug.hpp",
"include/mbgl/shaders/gl/drawable_background.hpp",
"include/mbgl/shaders/gl/drawable_background_pattern.hpp",
"include/mbgl/shaders/gl/drawable_circle.hpp",
"include/mbgl/shaders/gl/drawable_fill.hpp",
"include/mbgl/shaders/gl/drawable_fill_outline.hpp",
"include/mbgl/shaders/gl/drawable_fill_outline_pattern.hpp",
"include/mbgl/shaders/gl/drawable_fill_extrusion.hpp",
"include/mbgl/shaders/gl/drawable_fill_extrusion_pattern.hpp",
"include/mbgl/shaders/gl/drawable_fill_pattern.hpp",
"include/mbgl/shaders/gl/drawable_line_gradient.hpp",
"include/mbgl/shaders/gl/drawable_line_pattern.hpp",
"include/mbgl/shaders/gl/drawable_line_sdf.hpp",
"include/mbgl/shaders/gl/drawable_line.hpp",
"include/mbgl/shaders/gl/drawable_heatmap.hpp",
"include/mbgl/shaders/gl/drawable_heatmap_texture.hpp",
"include/mbgl/shaders/gl/drawable_raster.hpp",
"include/mbgl/shaders/gl/drawable_symbol_icon.hpp",
"include/mbgl/shaders/gl/drawable_symbol_sdf_text.hpp",
"include/mbgl/shaders/gl/drawable_symbol_sdf_icon.hpp",
"include/mbgl/shaders/gl/drawable_symbol_text_and_icon.hpp",
"include/mbgl/shaders/gl/fill_extrusion_pattern.hpp",
"include/mbgl/shaders/gl/fill_extrusion.hpp",
"include/mbgl/shaders/gl/fill_outline_pattern.hpp",
"include/mbgl/shaders/gl/fill_outline.hpp",
"include/mbgl/shaders/gl/fill_pattern.hpp",
"include/mbgl/shaders/gl/fill.hpp",
"include/mbgl/shaders/gl/heatmap_texture.hpp",
"include/mbgl/shaders/gl/heatmap.hpp",
"include/mbgl/shaders/gl/hillshade_prepare.hpp",
"include/mbgl/shaders/gl/hillshade.hpp",
"include/mbgl/shaders/gl/line_gradient.hpp",
"include/mbgl/shaders/gl/line_pattern.hpp",
"include/mbgl/shaders/gl/line_sdf.hpp",
"include/mbgl/shaders/gl/line.hpp",
"include/mbgl/shaders/gl/prelude.hpp",
"include/mbgl/shaders/gl/raster.hpp",
"include/mbgl/shaders/gl/symbol_icon.hpp",
"include/mbgl/shaders/gl/symbol_sdf_text.hpp",
"include/mbgl/shaders/gl/symbol_sdf_icon.hpp",
"include/mbgl/shaders/gl/symbol_text_and_icon.hpp",
]
MLN_CORE_SOURCE = [ MLN_CORE_SOURCE = [
"src/mbgl/actor/mailbox.cpp", "src/mbgl/actor/mailbox.cpp",
@@ -336,53 +431,25 @@ MLN_CORE_SOURCE = [
"src/mbgl/style/layer_impl.cpp", "src/mbgl/style/layer_impl.cpp",
"src/mbgl/style/layer_impl.hpp", "src/mbgl/style/layer_impl.hpp",
"src/mbgl/style/layer_observer.hpp", "src/mbgl/style/layer_observer.hpp",
"src/mbgl/style/layers/background_layer.cpp",
"src/mbgl/style/layers/background_layer_impl.cpp", "src/mbgl/style/layers/background_layer_impl.cpp",
"src/mbgl/style/layers/background_layer_impl.hpp", "src/mbgl/style/layers/background_layer_impl.hpp",
"src/mbgl/style/layers/background_layer_properties.cpp",
"src/mbgl/style/layers/background_layer_properties.hpp",
"src/mbgl/style/layers/circle_layer.cpp",
"src/mbgl/style/layers/circle_layer_impl.cpp", "src/mbgl/style/layers/circle_layer_impl.cpp",
"src/mbgl/style/layers/circle_layer_impl.hpp", "src/mbgl/style/layers/circle_layer_impl.hpp",
"src/mbgl/style/layers/circle_layer_properties.cpp",
"src/mbgl/style/layers/circle_layer_properties.hpp",
"src/mbgl/style/layers/fill_extrusion_layer.cpp",
"src/mbgl/style/layers/fill_extrusion_layer_impl.cpp", "src/mbgl/style/layers/fill_extrusion_layer_impl.cpp",
"src/mbgl/style/layers/fill_extrusion_layer_impl.hpp", "src/mbgl/style/layers/fill_extrusion_layer_impl.hpp",
"src/mbgl/style/layers/fill_extrusion_layer_properties.cpp",
"src/mbgl/style/layers/fill_extrusion_layer_properties.hpp",
"src/mbgl/style/layers/fill_layer.cpp",
"src/mbgl/style/layers/fill_layer_impl.cpp", "src/mbgl/style/layers/fill_layer_impl.cpp",
"src/mbgl/style/layers/fill_layer_impl.hpp", "src/mbgl/style/layers/fill_layer_impl.hpp",
"src/mbgl/style/layers/fill_layer_properties.cpp",
"src/mbgl/style/layers/fill_layer_properties.hpp",
"src/mbgl/style/layers/heatmap_layer.cpp",
"src/mbgl/style/layers/heatmap_layer_impl.cpp", "src/mbgl/style/layers/heatmap_layer_impl.cpp",
"src/mbgl/style/layers/heatmap_layer_impl.hpp", "src/mbgl/style/layers/heatmap_layer_impl.hpp",
"src/mbgl/style/layers/heatmap_layer_properties.cpp",
"src/mbgl/style/layers/heatmap_layer_properties.hpp",
"src/mbgl/style/layers/hillshade_layer.cpp",
"src/mbgl/style/layers/hillshade_layer_impl.cpp", "src/mbgl/style/layers/hillshade_layer_impl.cpp",
"src/mbgl/style/layers/hillshade_layer_impl.hpp", "src/mbgl/style/layers/hillshade_layer_impl.hpp",
"src/mbgl/style/layers/hillshade_layer_properties.cpp",
"src/mbgl/style/layers/hillshade_layer_properties.hpp",
"src/mbgl/style/layers/line_layer.cpp",
"src/mbgl/style/layers/line_layer_impl.cpp", "src/mbgl/style/layers/line_layer_impl.cpp",
"src/mbgl/style/layers/line_layer_impl.hpp", "src/mbgl/style/layers/line_layer_impl.hpp",
"src/mbgl/style/layers/line_layer_properties.cpp",
"src/mbgl/style/layers/line_layer_properties.hpp",
"src/mbgl/style/layers/raster_layer.cpp",
"src/mbgl/style/layers/raster_layer_impl.cpp", "src/mbgl/style/layers/raster_layer_impl.cpp",
"src/mbgl/style/layers/raster_layer_impl.hpp", "src/mbgl/style/layers/raster_layer_impl.hpp",
"src/mbgl/style/layers/raster_layer_properties.cpp",
"src/mbgl/style/layers/raster_layer_properties.hpp",
"src/mbgl/style/layers/symbol_layer.cpp",
"src/mbgl/style/layers/symbol_layer_impl.cpp", "src/mbgl/style/layers/symbol_layer_impl.cpp",
"src/mbgl/style/layers/symbol_layer_impl.hpp", "src/mbgl/style/layers/symbol_layer_impl.hpp",
"src/mbgl/style/layers/symbol_layer_properties.cpp",
"src/mbgl/style/layers/symbol_layer_properties.hpp",
"src/mbgl/style/layout_property.hpp", "src/mbgl/style/layout_property.hpp",
"src/mbgl/style/light.cpp",
"src/mbgl/style/light_impl.cpp", "src/mbgl/style/light_impl.cpp",
"src/mbgl/style/light_impl.hpp", "src/mbgl/style/light_impl.hpp",
"src/mbgl/style/light_observer.hpp", "src/mbgl/style/light_observer.hpp",
@@ -683,16 +750,6 @@ MLN_CORE_HEADERS = [
"include/mbgl/style/image.hpp", "include/mbgl/style/image.hpp",
"include/mbgl/style/layer.hpp", "include/mbgl/style/layer.hpp",
"include/mbgl/style/layer_properties.hpp", "include/mbgl/style/layer_properties.hpp",
"include/mbgl/style/layers/background_layer.hpp",
"include/mbgl/style/layers/circle_layer.hpp",
"include/mbgl/style/layers/fill_extrusion_layer.hpp",
"include/mbgl/style/layers/fill_layer.hpp",
"include/mbgl/style/layers/heatmap_layer.hpp",
"include/mbgl/style/layers/hillshade_layer.hpp",
"include/mbgl/style/layers/line_layer.hpp",
"include/mbgl/style/layers/raster_layer.hpp",
"include/mbgl/style/layers/symbol_layer.hpp",
"include/mbgl/style/light.hpp",
"include/mbgl/style/position.hpp", "include/mbgl/style/position.hpp",
"include/mbgl/style/property_expression.hpp", "include/mbgl/style/property_expression.hpp",
"include/mbgl/style/property_value.hpp", "include/mbgl/style/property_value.hpp",
@@ -813,11 +870,8 @@ MLN_OPENGL_SOURCE = [
"src/mbgl/platform/gl_functions.cpp", "src/mbgl/platform/gl_functions.cpp",
"src/mbgl/renderer/layers/render_location_indicator_layer.cpp", "src/mbgl/renderer/layers/render_location_indicator_layer.cpp",
"src/mbgl/renderer/layers/render_location_indicator_layer.hpp", "src/mbgl/renderer/layers/render_location_indicator_layer.hpp",
"src/mbgl/style/layers/location_indicator_layer.cpp",
"src/mbgl/style/layers/location_indicator_layer_impl.cpp", "src/mbgl/style/layers/location_indicator_layer_impl.cpp",
"src/mbgl/style/layers/location_indicator_layer_impl.hpp", "src/mbgl/style/layers/location_indicator_layer_impl.hpp",
"src/mbgl/style/layers/location_indicator_layer_properties.cpp",
"src/mbgl/style/layers/location_indicator_layer_properties.hpp"
] ]
MLN_OPENGL_HEADERS = [ MLN_OPENGL_HEADERS = [
@@ -828,57 +882,6 @@ MLN_OPENGL_HEADERS = [
"include/mbgl/gl/renderer_backend.hpp", "include/mbgl/gl/renderer_backend.hpp",
"include/mbgl/layermanager/location_indicator_layer_factory.hpp", "include/mbgl/layermanager/location_indicator_layer_factory.hpp",
"include/mbgl/platform/gl_functions.hpp", "include/mbgl/platform/gl_functions.hpp",
"include/mbgl/style/layers/location_indicator_layer.hpp",
"include/mbgl/shaders/shader_source.hpp",
"include/mbgl/shaders/shader_manifest.hpp",
"include/mbgl/shaders/gl/background.hpp",
"include/mbgl/shaders/gl/background_pattern.hpp",
"include/mbgl/shaders/gl/circle.hpp",
"include/mbgl/shaders/gl/clipping_mask.hpp",
"include/mbgl/shaders/gl/collision_box.hpp",
"include/mbgl/shaders/gl/collision_circle.hpp",
"include/mbgl/shaders/gl/debug.hpp",
"include/mbgl/shaders/gl/drawable_background.hpp",
"include/mbgl/shaders/gl/drawable_background_pattern.hpp",
"include/mbgl/shaders/gl/drawable_circle.hpp",
"include/mbgl/shaders/gl/drawable_fill.hpp",
"include/mbgl/shaders/gl/drawable_fill_outline.hpp",
"include/mbgl/shaders/gl/drawable_fill_outline_pattern.hpp",
"include/mbgl/shaders/gl/drawable_fill_extrusion.hpp",
"include/mbgl/shaders/gl/drawable_fill_extrusion_pattern.hpp",
"include/mbgl/shaders/gl/drawable_fill_pattern.hpp",
"include/mbgl/shaders/gl/drawable_line_gradient.hpp",
"include/mbgl/shaders/gl/drawable_line_pattern.hpp",
"include/mbgl/shaders/gl/drawable_line_sdf.hpp",
"include/mbgl/shaders/gl/drawable_line.hpp",
"include/mbgl/shaders/gl/drawable_heatmap.hpp",
"include/mbgl/shaders/gl/drawable_heatmap_texture.hpp",
"include/mbgl/shaders/gl/drawable_raster.hpp",
"include/mbgl/shaders/gl/drawable_symbol_icon.hpp",
"include/mbgl/shaders/gl/drawable_symbol_sdf_text.hpp",
"include/mbgl/shaders/gl/drawable_symbol_sdf_icon.hpp",
"include/mbgl/shaders/gl/drawable_symbol_text_and_icon.hpp",
"include/mbgl/shaders/gl/fill_extrusion_pattern.hpp",
"include/mbgl/shaders/gl/fill_extrusion.hpp",
"include/mbgl/shaders/gl/fill_outline_pattern.hpp",
"include/mbgl/shaders/gl/fill_outline.hpp",
"include/mbgl/shaders/gl/fill_pattern.hpp",
"include/mbgl/shaders/gl/fill.hpp",
"include/mbgl/shaders/gl/heatmap_texture.hpp",
"include/mbgl/shaders/gl/heatmap.hpp",
"include/mbgl/shaders/gl/hillshade_prepare.hpp",
"include/mbgl/shaders/gl/hillshade.hpp",
"include/mbgl/shaders/gl/line_gradient.hpp",
"include/mbgl/shaders/gl/line_pattern.hpp",
"include/mbgl/shaders/gl/line_sdf.hpp",
"include/mbgl/shaders/gl/line.hpp",
"include/mbgl/shaders/gl/prelude.hpp",
"include/mbgl/shaders/gl/raster.hpp",
"include/mbgl/shaders/gl/shader_group_gl.hpp",
"include/mbgl/shaders/gl/symbol_icon.hpp",
"include/mbgl/shaders/gl/symbol_sdf_text.hpp",
"include/mbgl/shaders/gl/symbol_sdf_icon.hpp",
"include/mbgl/shaders/gl/symbol_text_and_icon.hpp"
] ]
MLN_DRAWABLES_SOURCE = [ MLN_DRAWABLES_SOURCE = [
@@ -950,6 +953,7 @@ MLN_DRAWABLES_HEADERS = [
"include/mbgl/util/identity.hpp", "include/mbgl/util/identity.hpp",
"include/mbgl/util/suppress_copies.hpp", "include/mbgl/util/suppress_copies.hpp",
"include/mbgl/shaders/gl/shader_program_gl.hpp", "include/mbgl/shaders/gl/shader_program_gl.hpp",
"include/mbgl/shaders/gl/shader_group_gl.hpp",
"include/mbgl/gl/drawable_gl.hpp", "include/mbgl/gl/drawable_gl.hpp",
"include/mbgl/gl/drawable_gl_builder.hpp", "include/mbgl/gl/drawable_gl_builder.hpp",
"include/mbgl/gl/layer_group_gl.hpp", "include/mbgl/gl/layer_group_gl.hpp",

View File

@@ -4,7 +4,7 @@ Applies to objective-c files that can't take the added CPP_FLAGS.
Included in the CPP flags below. Included in the CPP flags below.
""" """
WARNING_FLAGS = [ GCC_CLANG_COMMON_FLAGS = [
"-Wall", "-Wall",
"-Werror", "-Werror",
"-Wextra", "-Wextra",
@@ -12,8 +12,52 @@ WARNING_FLAGS = [
"-Wno-unused-variable", "-Wno-unused-variable",
"-Wno-variadic-macros", "-Wno-variadic-macros",
"-Wno-unknown-pragmas", "-Wno-unknown-pragmas",
] + select({ ]
"//:ios": [
MSVC_FLAGS = [
"/Wall",
"/WX",
"/wd4068", # Unknown pragma
"/wd4820", # Padding
"/wd5045", # Compiler will insert Spectre mitigation for memory load
"/wd4643", # Non-conformant forward decl
"/wd4623", # Default ctor implicitly deleted
"/wd5027", # Default move ctor implicitly deleted
"/wd4626", # Assignment operator implicitly deleted
"/wd4514", # Unreferenced inline function has been removed
"/wd4582", # Constructor is not implicitly called
"/wd4365", # Signed/unsigned mismatch
"/wd4388", # Signed/unsigned mismatch
"/wd4244", # Conversion, possible loss of data
"/wd4242", # Conversion, possible loss of data
"/wd4625", # Copy constructor was implicitly defined as deleted
"/wd5026", # Move constructor was implicitly defined as deleted
"/wd5219", # Implicit conversion, possible loss of data
"/wd5246", # Initialization of a subobject should be wrapped in braces
"/wd4201", # Nonstandard extension used: nameless struct/union
"/wd4868", # Compiler may not enforce left-to-right evaluation order in braced initializer list
"/wd4061", # Eenumerator in switch of enum is not explicitly handled by a case label
"/wd4464", # Relative include path contains '..'
"/wd4668", # <x> is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
"/wd4800", # Implicit conversion from 'unsigned __int64' to bool. Possible information loss
"/wd4355", # 'this': used in base member initializer list
"/wd5204", # Class has virtual functions, but its trivial destructor is not virtual; instances of objects derived from this class may not be destructed
"/wd5220", # A non-static data member with a volatile qualified type no longer implies
"/wd4619", # (boost) #pragma warning: there is no warning number <x>
"/wd5031", # (boost) #pragma warning(pop): likely mismatch, popping warning state pushed in different file
"/wd5243", # (boost) using incomplete class <x> can cause potential one definition rule violation due to ABI limitation
"/wd4371", # (boost) layout of class may have changed from a previous version of the compiler due to better packing of member <x>
"/wd4435", # (boost) Object layout under /vd2 will change due to virtual base
"/wd4702", # Unreachable code
"/wd4710", # Function not inlined
"/wd5041", # out-of-line definition for constexpr static data member is not needed and is deprecated in C++17
"/wd4946", # reinterpret_cast used between related classes
"/wd4459", # declaration of 'x' hides global declaration
"/wd4373", # virtual function overrides 'x', previous versions of the compiler did not override when parameters only differed by const/volatile qualifiers
]
WARNING_FLAGS = select({
"//:ios": GCC_CLANG_COMMON_FLAGS + [
"-Wno-newline-eof", "-Wno-newline-eof",
"-Wno-nested-anon-types", "-Wno-nested-anon-types",
"-Wno-c++11-narrowing", "-Wno-c++11-narrowing",
@@ -21,19 +65,35 @@ WARNING_FLAGS = [
"-Wno-tautological-constant-compare", "-Wno-tautological-constant-compare",
"-Wno-gnu-anonymous-struct", "-Wno-gnu-anonymous-struct",
], ],
"//:linux": [], "//:linux": GCC_CLANG_COMMON_FLAGS,
"//:windows": MSVC_FLAGS,
}) })
""" """
Compilation flags used for all .cpp and .mm targets. Compilation flags used for all .cpp and .mm targets.
""" """
CPP_FLAGS = WARNING_FLAGS + [ GCC_CLANG_CPP_FLAGS = GCC_CLANG_COMMON_FLAGS + [
"-fexceptions", "-fexceptions",
"-fno-rtti", "-fno-rtti",
"-ftemplate-depth=1024", "-ftemplate-depth=1024",
"-std=c++17", "-std=c++17",
] ]
MSVC_CPP_FLAGS = MSVC_FLAGS + [
"/EHsc",
"/std:c++17",
"/GR-",
"/permissive-",
"/utf-8",
]
CPP_FLAGS = select({
"//:ios": GCC_CLANG_CPP_FLAGS,
"//:linux": GCC_CLANG_CPP_FLAGS,
"//:windows": MSVC_CPP_FLAGS,
})
""" """
Compilation flags related to the Maplibre codebase. Relevant for all .cpp .mm and .m code Compilation flags related to the Maplibre codebase. Relevant for all .cpp .mm and .m code
- src/* - src/*
@@ -42,8 +102,15 @@ Compilation flags related to the Maplibre codebase. Relevant for all .cpp .mm an
Not important for any vendors that are imported. Not important for any vendors that are imported.
""" """
MAPLIBRE_FLAGS = [ MAPLIBRE_FLAGS = select({
"//:windows": [
"/DMBGL_USE_GLES2=1",
"/DMBGL_RENDER_BACKEND_OPENGL=1",
"/D_USE_MATH_DEFINES",
],
"//conditions:default": [
"-DMBGL_USE_GLES2=1", "-DMBGL_USE_GLES2=1",
"-DMBGL_RENDER_BACKEND_OPENGL=1", "-DMBGL_RENDER_BACKEND_OPENGL=1",
"-DGLES_SILENCE_DEPRECATION", "-DGLES_SILENCE_DEPRECATION",
] ]
})

5
bazel/macros.bzl Normal file
View File

@@ -0,0 +1,5 @@
def appendList(items, prefix):
out = []
for item in items:
out.append(prefix + item)
return out

View File

@@ -394,7 +394,7 @@ _IOS_APPLICATION_RESOURCES = [
ios_application( ios_application(
name = "App", name = "App",
bundle_id = "{}.maplibre.app".format(BUNDLE_ID_PREFIX), bundle_id = "org.maplibre.app",
families = [ families = [
"iphone", "iphone",
"ipad", "ipad",
@@ -454,6 +454,7 @@ xcodeproj(
minimum_xcode_version = "14", minimum_xcode_version = "14",
project_name = "MapLibre", project_name = "MapLibre",
tags = ["manual"], tags = ["manual"],
bazel_env = {"PATH": "/bin:/usr/bin:/usr/local/bin"},
default_xcode_configuration = "Debug", default_xcode_configuration = "Debug",
xcode_configurations = { xcode_configurations = {
"Debug": {"//command_line_option:compilation_mode": "dbg"}, "Debug": {"//command_line_option:compilation_mode": "dbg"},

View File

@@ -22,6 +22,35 @@ const args = (() => {
return parser.parse_args(); return parser.parse_args();
})(); })();
let writeGenerated;
if (args.root) {
const targetRoot = path.join(args.root, "__generated__");
if (args.root) {
if (!fs.existsSync(targetRoot)) {
fs.mkdirSync();
}
}
writeGenerated = (pathString, contents) => {
const location = path.parse(
path.relative(__dirname + "/../", path.normalize(pathString))
);
pathString = path.join(targetRoot, location.dir);
if (!fs.existsSync(pathString)) {
fs.mkdirSync(pathString, {recursive: true});
}
writeIfModified(
path.join(pathString, location.name + location.ext), contents);
}
} else {
writeGenerated = (pathString, contents) => {
writeIfModified(pathString, contents);
};
}
function parseCSSColor(str) { function parseCSSColor(str) {
const color = colorParser.parseCSSColor(str); const color = colorParser.parseCSSColor(str);
return [ return [
@@ -273,16 +302,16 @@ const layers = Object.keys(spec.layer.type.values).map((type) => {
for (const layer of layers) { for (const layer of layers) {
const layerFileName = layer.type.replace('-', '_'); const layerFileName = layer.type.replace('-', '_');
writeIfModified(`src/mbgl/style/layers/${layerFileName}_layer_properties.hpp`, propertiesHpp(layer), args.root); writeGenerated(`${__dirname}/../src/mbgl/style/layers/${layerFileName}_layer_properties.hpp`, propertiesHpp(layer));
writeIfModified(`src/mbgl/style/layers/${layerFileName}_layer_properties.cpp`, propertiesCpp(layer), args.root); writeGenerated(`${__dirname}/../src/mbgl/style/layers/${layerFileName}_layer_properties.cpp`, propertiesCpp(layer));
// Remove our fake property for the external interace. // Remove our fake property for the external interace.
if (layer.type === 'line') { if (layer.type === 'line') {
layer.paintProperties = layer.paintProperties.filter(property => property.name !== 'line-floor-width'); layer.paintProperties = layer.paintProperties.filter(property => property.name !== 'line-floor-width');
} }
writeIfModified(`include/mbgl/style/layers/${layerFileName}_layer.hpp`, layerHpp(layer), args.root); writeGenerated(`${__dirname}/../include/mbgl/style/layers/${layerFileName}_layer.hpp`, layerHpp(layer));
writeIfModified(`src/mbgl/style/layers/${layerFileName}_layer.cpp`, layerCpp(layer), args.root); writeGenerated(`${__dirname}/../src/mbgl/style/layers/${layerFileName}_layer.cpp`, layerCpp(layer));
} }
// Light // Light
@@ -298,7 +327,7 @@ const lightProperties = Object.keys(spec[`light`]).reduce((memo, name) => {
// to get a deterministic order. // to get a deterministic order.
lightProperties.sort((a, b) => collator.compare(a.name, b.name)); lightProperties.sort((a, b) => collator.compare(a.name, b.name));
const lightHpp = ejs.compile(fs.readFileSync(`include/mbgl/style/light.hpp.ejs`, 'utf8'), {strict: true}); const lightHpp = ejs.compile(fs.readFileSync(`${__dirname}/../include/mbgl/style/light.hpp.ejs`, 'utf8'), {strict: true});
const lightCpp = ejs.compile(fs.readFileSync(`src/mbgl/style/light.cpp.ejs`, 'utf8'), {strict: true}); const lightCpp = ejs.compile(fs.readFileSync(`${__dirname}/../src/mbgl/style/light.cpp.ejs`, 'utf8'), {strict: true});
writeIfModified(`include/mbgl/style/light.hpp`, lightHpp({properties: lightProperties}), args.root); writeGenerated(`${__dirname}/../include/mbgl/style/light.hpp`, lightHpp({properties: lightProperties}));
writeIfModified(`src/mbgl/style/light.cpp`, lightCpp({properties: lightProperties}), args.root); writeGenerated(`${__dirname}/../src/mbgl/style/light.cpp`, lightCpp({properties: lightProperties}));

View File

@@ -221,11 +221,13 @@ const args = (() => {
// Generate shader source headers // Generate shader source headers
const shaderRoot = "shaders/"; const shaderRoot = "shaders/";
const outputRoot = path.join((args.root ? args.root : ""), "include/mbgl/shaders");
let generatedHeaders = []; let generatedHeaders = [];
let shaderNames = []; let shaderNames = [];
console.log("Writing shaders to ", outputRoot); const targetRoot = path.join(args.root, "__generated__");
if (!fs.existsSync(targetRoot)) {
fs.mkdirSync();
}
JSON.parse(fs.readFileSync(path.join(shaderRoot, "manifest.json"))) JSON.parse(fs.readFileSync(path.join(shaderRoot, "manifest.json")))
.filter(it => typeof it == "object") .filter(it => typeof it == "object")
@@ -243,6 +245,11 @@ JSON.parse(fs.readFileSync(path.join(shaderRoot, "manifest.json")))
? pragmaMapConvertOnlyVertexArrays(vertexSource, pragmaMap, attribMap, "vertex") ? pragmaMapConvertOnlyVertexArrays(vertexSource, pragmaMap, attribMap, "vertex")
: pragmaMapConvert(vertexSource, pragmaMap, attribMap, "vertex"); : pragmaMapConvert(vertexSource, pragmaMap, attribMap, "vertex");
const glRoot = path.join(args.root, "__generated__/include/mbgl/shaders/gl");
if (!fs.existsSync(glRoot)) {
fs.mkdirSync(glRoot, {recursive: true}); // Ensure target directory is available
}
fs.writeFileSync( fs.writeFileSync(
path.join(glRoot, elem.header + ".hpp"), path.join(glRoot, elem.header + ".hpp"),
`${generatedHeader} `${generatedHeader}
@@ -268,7 +275,7 @@ struct ShaderSource<BuiltIn::${elem.name}, gfx::Backend::Type::OpenGL> {
); );
// Generate the manifest // Generate the manifest
fs.writeFileSync(path.join(outputRoot, "shader_manifest.hpp"), fs.writeFileSync(path.join(args.root, "__generated__/include/mbgl/shaders/shader_manifest.hpp"),
`${generatedHeader} `${generatedHeader}
#pragma once #pragma once
#include <mbgl/shaders/shader_source.hpp> #include <mbgl/shaders/shader_source.hpp>
@@ -279,7 +286,7 @@ ${generatedHeaders.join('\n')}
`); `);
// Generate shader_source.hpp // Generate shader_source.hpp
fs.writeFileSync(path.join(outputRoot, "shader_source.hpp"), fs.writeFileSync(path.join(args.root, "__generated__/include/mbgl/shaders/shader_source.hpp"),
`${generatedHeader} `${generatedHeader}
#pragma once #pragma once
#include <mbgl/gfx/backend.hpp> #include <mbgl/gfx/backend.hpp>

View File

@@ -84,9 +84,9 @@ void registerTypes(gfx::ShaderRegistry& registry, const ProgramParameters& progr
/// registry instance provided already has conflicting programs present. /// registry instance provided already has conflicting programs present.
( (
[&]() { [&]() {
using Ty = shaders::ShaderSource<ShaderID, gfx::Backend::Type::OpenGL>; const auto name = std::string(shaders::ShaderSource<ShaderID, gfx::Backend::Type::OpenGL>::name);
if (!registry.registerShaderGroup(std::make_shared<ShaderGroupGL<ShaderID>>(programParameters), Ty::name)) { if (!registry.registerShaderGroup(std::make_shared<ShaderGroupGL<ShaderID>>(programParameters), name)) {
throw std::runtime_error("Failed to register " + std::string(Ty::name) + " with shader registry!"); throw std::runtime_error("Failed to register " + name + " with shader registry!");
} }
}(), }(),
...); ...);