[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

@@ -0,0 +1,6 @@
# @generated
# Input hashes for repository rule npm_translate_lock(name = "npm", pnpm_lock = "//:pnpm-lock.yaml").
# This file should be checked into version control along with the pnpm-lock.yaml file.
pnpm-lock.yaml=-214709846
package-lock.json=479094047
package.json=1266280293

3
.bazelignore Normal file
View File

@@ -0,0 +1,3 @@
bazel-bin
bazel-out
bazel-testlogs

View File

@@ -1,3 +1,6 @@
# https://github.com/aspect-build/rules_js/issues/1408
startup --host_jvm_args=-DBAZEL_TRACK_SOURCE_DIRECTORIES=1
# TODO: remove with bazel 7.x
common --enable_bzlmod

View File

@@ -68,18 +68,6 @@ jobs:
submodules: recursive
fetch-depth: 0
- name: Cache node modules
uses: actions/cache@v4
env:
cache-name: cache-node-modules
with:
path: /user/local/lib/node_modules
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Cache Bazel
uses: actions/cache@v4
with:
@@ -88,13 +76,6 @@ jobs:
${{ runner.os }}-bazel-
path: ~/.cache/bazel
- uses: actions/setup-node@v4
with:
node-version: 18
- name: npm install
run: npm ci --ignore-scripts
- run: cp bazel/example_config.bzl bazel/config.bzl
- name: Check debug symbols

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",
],
)

View File

@@ -1,10 +1,24 @@
module(name = "maplibre")
bazel_dep(name = "apple_support", version = "1.11.1", repo_name = "build_bazel_apple_support")
bazel_dep(name = "aspect_rules_js", version = "1.34.1")
bazel_dep(name = "bazel_skylib", version = "1.5.0")
bazel_dep(name = "rules_apple", version = "3.1.1", repo_name = "build_bazel_rules_apple")
bazel_dep(name = "rules_swift", version = "1.13.0", repo_name = "build_bazel_rules_swift")
bazel_dep(name = "rules_xcodeproj", version = "1.13.0")
npm = use_extension("@aspect_rules_js//npm:extensions.bzl", "npm")
npm.npm_translate_lock(
name = "npm",
data = ["package.json"],
npm_package_lock = "//:package-lock.json",
pnpm_lock = "//:pnpm-lock.yaml",
update_pnpm_lock = True,
)
use_repo(npm, "npm")
pnpm = use_extension("@aspect_rules_js//npm:extensions.bzl", "pnpm")
use_repo(pnpm, "pnpm")
provisioning_profile_repository = use_extension("@build_bazel_rules_apple//apple:apple.bzl", "provisioning_profile_repository_extension")
provisioning_profile_repository.setup()

View File

@@ -1,3 +1,4 @@
load("@aspect_rules_js//js:defs.bzl", "js_binary")
load("//bazel:flags.bzl", "CPP_FLAGS", "MAPLIBRE_FLAGS", "WARNING_FLAGS")
# Objcpp files for the iOS source
@@ -41,11 +42,11 @@ objc_library(
"QuartzCore",
] + select({
"//:metal_renderer": [
"MetalKit"
"MetalKit",
],
"//conditions:default": [
"OpenGLES",
"GLKit"
"GLKit",
],
}),
deps = [
@@ -183,8 +184,8 @@ objc_library(
],
visibility = ["//visibility:public"],
deps = [
"//:mbgl-core",
":ios-sdk",
"//:mbgl-core",
],
)
@@ -207,11 +208,12 @@ objc_library(
sdk_frameworks = [
] + select({
"//:metal_renderer": [
"MetalKit"
"MetalKit",
],
"//conditions:default": [
"GLKit", # needed for LimeGreenStyleLayer
]}),
],
}),
visibility = ["//visibility:public"],
deps = [
":ios-sdk",
@@ -225,9 +227,9 @@ objc_library(
objc_library(
name = "ios-benchapp",
copts = CPP_FLAGS + MAPLIBRE_FLAGS,
srcs = ["//platform/ios/benchmark:ios_benchmark_srcs"],
hdrs = ["//platform/ios/benchmark:ios_benchmark_hdrs"],
copts = CPP_FLAGS + MAPLIBRE_FLAGS,
includes = [
"darwin/app",
"darwin/src",
@@ -240,39 +242,17 @@ objc_library(
],
)
sh_binary(
js_binary(
name = "check-public-symbols",
srcs = ["//platform/darwin:scripts/check-public-symbols.sh"],
args = [
"macOS",
"iOS",
],
data = [
"//platform/darwin:darwin_objc_hdrs",
"//platform/darwin:darwin_objc_srcs",
"//platform/darwin:darwin_objcpp_hdrs",
"//platform/darwin:darwin_objcpp_srcs",
"//platform/darwin:darwin_private_hdrs",
"//platform/darwin:generated_style_hdrs",
"//platform/darwin:generated_style_srcs",
"//platform/darwin:scripts/check-public-symbols.js",
"//platform/ios:ios_objc_srcs",
"//platform/ios:ios_objcpp_srcs",
"//platform/ios:ios_private_hdrs",
"//platform/ios:ios_public_hdrs",
"//platform/ios:ios_sdk_hdrs",
"//platform/macos:macos_objc_srcs",
"//platform/macos:macos_objcpp_srcs",
"//platform/macos:macos_private_hdrs",
"//platform/macos:macos_public_hdrs",
] + select({
"//:metal_renderer": [],
"//conditions:default": [
"//platform/darwin:darwin_objcpp_opengl_srcs",
],
}) + select({
"//:legacy_renderer": [],
"//conditions:default": [
"//platform/darwin:darwin_objcpp_custom_drawable_srcs",
],
}),
deps = [
"//platform/darwin:generated_code",
"//:node_modules/lodash",
"//platform/darwin:symbols-to-check",
"//platform/ios:symbols-to-check",
"//platform/macos:symbols-to-check",
],
entry_point = "scripts/check-public-symbols.js",
)

View File

@@ -1,3 +1,8 @@
load("@aspect_rules_js//js:defs.bzl", "js_binary", "js_library", "js_run_binary")
load(
"@build_bazel_rules_swift//swift:swift.bzl",
"swift_library",
)
load("//bazel:flags.bzl", "CPP_FLAGS", "MAPLIBRE_FLAGS", "WARNING_FLAGS")
load(
"bazel/files.bzl",
@@ -13,10 +18,6 @@ load(
"MLN_GENERATED_DARWIN_STYLE_SOURCE",
"MLN_GENERATED_DARWIN_TEST_CODE",
)
load(
"@build_bazel_rules_swift//swift:swift.bzl",
"swift_library",
)
filegroup(
name = "darwin_private_hdrs",
@@ -32,7 +33,10 @@ filegroup(
filegroup(
name = "darwin_objcpp_hdrs",
srcs = MLN_DARWIN_OBJCPP_HEADERS,
srcs = MLN_DARWIN_OBJCPP_HEADERS + select({
"//:metal_renderer": [],
"//conditions:default": ["src/MLNOpenGLStyleLayer.h"],
}),
visibility = ["//visibility:public"],
)
@@ -115,17 +119,16 @@ filegroup(
],
)
genrule(
js_run_binary(
name = "generated_code",
srcs = [
":docs_ejs_templates",
":generator_data",
":test_ejs_templates",
":docs_ejs_templates",
],
outs = MLN_GENERATED_DARWIN_STYLE_SOURCE +
MLN_GENERATED_DARWIN_STYLE_HEADERS + MLN_GENERATED_DARWIN_TEST_CODE,
cmd = "node $(execpath scripts/generate-style-code.js) --root $(RULEDIR)/../../",
tools = ["scripts/generate-style-code.js"],
tool = ":generate-style-code-script",
visibility = ["//visibility:public"],
)
@@ -206,15 +209,12 @@ cc_library(
":darwin_objc_hdrs",
":darwin_objcpp_hdrs",
":darwin_private_hdrs",
":generated_style_hdrs",
":generated_code",
],
hdrs = [
":generated_style_hdrs",
],
visibility = ["//visibility:public"],
deps = [
":generated_code",
],
)
# Objc files for the iOS source
@@ -324,8 +324,6 @@ exports_files(
"app/ExampleCustomDrawableStyleLayer.h",
"app/ExampleCustomDrawableStyleLayer.mm",
"include/mbgl/util/image+MLNAdditions.hpp",
"scripts/check-public-symbols.js",
"scripts/check-public-symbols.sh",
] + MLN_DARWIN_PUBLIC_OBJC_SOURCE +
MLN_DARWIN_PUBLIC_OBJCPP_SOURCE +
MLN_DARWIN_PUBLIC_OBJCPP_OPENGL_SOURCE +
@@ -334,3 +332,42 @@ exports_files(
MLN_DARWIN_OBJC_HEADERS +
MLN_DARWIN_OBJCPP_HEADERS,
)
js_binary(
name = "generate-style-code-script",
data = [
"scripts/style-spec-cocoa-conventions-v8.json",
"scripts/style-spec-overrides-v8.json",
"//:node_modules/argparse",
"//:node_modules/csscolorparser",
"//:node_modules/lodash",
"//:style-code",
"//:style-spec",
],
entry_point = "scripts/generate-style-code.js",
)
js_library(
name = "symbols-to-check",
srcs = [
":darwin_objc_hdrs",
":darwin_objc_srcs",
":darwin_objcpp_hdrs",
":darwin_objcpp_srcs",
":darwin_private_hdrs",
":generated_code",
":generated_style_hdrs",
":generated_style_srcs",
] + select({
"//:metal_renderer": [],
"//conditions:default": [
":darwin_objcpp_opengl_srcs",
],
}) + select({
"//:legacy_renderer": [],
"//conditions:default": [
":darwin_objcpp_custom_drawable_srcs",
],
}),
visibility = ["//platform:__pkg__"],
)

View File

@@ -58,6 +58,7 @@ MLN_DARWIN_OBJC_HEADERS = [
"src/MLNCompassDirectionFormatter.h",
"src/MLNComputedShapeSource.h",
"src/MLNCoordinateFormatter.h",
"src/MLNCustomDrawableStyleLayer.h",
"src/MLNDefaultStyle.h",
"src/MLNDistanceFormatter.h",
"src/MLNFeature.h",
@@ -74,6 +75,7 @@ MLN_DARWIN_OBJC_HEADERS = [
"src/MLNOfflinePack.h",
"src/MLNOfflineRegion.h",
"src/MLNOfflineStorage.h",
"src/MLNOpenGLStyleLayer.h",
"src/MLNOverlay.h",
"src/MLNPointAnnotation.h",
"src/MLNPointCollection.h",
@@ -210,7 +212,6 @@ MLN_DARWIN_PUBLIC_OBJCPP_OPENGL_SOURCE = [
]
MLN_DARWIN_PUBLIC_OBJCPP_CUSTOM_DRAWABLE_SOURCE = [
"src/MLNCustomDrawableStyleLayer_Private.h",
"src/MLNCustomDrawableStyleLayer.h",
"src/MLNCustomDrawableStyleLayer.mm",
]
MLN_DARWIN_PUBLIC_OBJC_SOURCE = [

View File

@@ -1,3 +0,0 @@
#!/usr/bin/env bash
node platform/darwin/scripts/check-public-symbols.js macOS iOS

View File

@@ -3,7 +3,7 @@
const { ArgumentParser } = require("argparse");
const fs = require('fs');
const ejs = require('ejs');
const path = require('path');
const _ = require('lodash');
const colorParser = require('csscolorparser');
const assert = require('assert');
@@ -787,23 +787,25 @@ const lightProperties = Object.keys(spec['light']).reduce((memo, name) => {
const lightDoc = spec['light-cocoa-doc'];
const lightType = 'light';
const layerH = ejs.compile(fs.readFileSync('platform/darwin/src/MLNStyleLayer.h.ejs', 'utf8'), { strict: true });
const layerPrivateH = ejs.compile(fs.readFileSync('platform/darwin/src/MLNStyleLayer_Private.h.ejs', 'utf8'), { strict: true });
const layerM = ejs.compile(fs.readFileSync('platform/darwin/src/MLNStyleLayer.mm.ejs', 'utf8'), { strict: true});
const testLayers = ejs.compile(fs.readFileSync('platform/darwin/test/MLNStyleLayerTests.mm.ejs', 'utf8'), { strict: true});
const forStyleAuthorsMD = ejs.compile(fs.readFileSync('platform/darwin/docs/guides/For_Style_Authors.md.ejs', 'utf8'), { strict: true });
const ddsGuideMD = ejs.compile(fs.readFileSync('platform/darwin/docs/guides/Migrating_to_Expressions.md.ejs', 'utf8'), { strict: true });
const templatesMD = ejs.compile(fs.readFileSync('platform/darwin/docs/guides/Tile_URL_Templates.md.ejs', 'utf8'), { strict: true });
const root = args.root ? args.root : path.dirname(path.dirname(path.dirname(__dirname)));
const lightH = ejs.compile(fs.readFileSync('platform/darwin/src/MLNLight.h.ejs', 'utf8'), {strict: true});
const lightM = ejs.compile(fs.readFileSync('platform/darwin/src/MLNLight.mm.ejs', 'utf8'), {strict: true});
const testLight = ejs.compile(fs.readFileSync('platform/darwin/test/MLNLightTest.mm.ejs', 'utf8'), { strict: true});
const layerH = readAndCompile('platform/darwin/src/MLNStyleLayer.h.ejs', root);
const layerPrivateH = readAndCompile('platform/darwin/src/MLNStyleLayer_Private.h.ejs', root);
const layerM = readAndCompile('platform/darwin/src/MLNStyleLayer.mm.ejs', root);
const testLayers = readAndCompile('platform/darwin/test/MLNStyleLayerTests.mm.ejs', root);
const forStyleAuthorsMD = readAndCompile('platform/darwin/docs/guides/For_Style_Authors.md.ejs', root);
const ddsGuideMD = readAndCompile('platform/darwin/docs/guides/Migrating_to_Expressions.md.ejs', root);
const templatesMD = readAndCompile('platform/darwin/docs/guides/Tile_URL_Templates.md.ejs', root);
const lightH = readAndCompile('platform/darwin/src/MLNLight.h.ejs', root);
const lightM = readAndCompile('platform/darwin/src/MLNLight.mm.ejs', root);
const testLight = readAndCompile('platform/darwin/test/MLNLightTest.mm.ejs', root);
writeIfModified(`platform/darwin/src/MLNLight.h`, duplicatePlatformDecls(
lightH({ properties: lightProperties, doc: lightDoc, type: lightType })), args.root);
lightH({ properties: lightProperties, doc: lightDoc, type: lightType })), root);
writeIfModified(`platform/darwin/src/MLNLight.mm`,
lightM({ properties: lightProperties, doc: lightDoc, type: lightType }), args.root);
lightM({ properties: lightProperties, doc: lightDoc, type: lightType }), root);
writeIfModified(`platform/darwin/test/MLNLightTest.mm`,
testLight({ properties: lightProperties, doc: lightDoc, type: lightType }), args.root);
testLight({ properties: lightProperties, doc: lightDoc, type: lightType }), root);
const layers = _(spec.layer.type.values).map((value, layerType) => {
const layoutProperties = Object.keys(spec[`layout_${layerType}`]).reduce((memo, name) => {
@@ -877,13 +879,13 @@ for (var layer of layers) {
}
writeIfModified(`platform/darwin/src/${prefix}${camelize(layer.type)}${suffix}.h`,
duplicatePlatformDecls(layerH(layer)), args.root);
duplicatePlatformDecls(layerH(layer)), root);
writeIfModified(`platform/darwin/src/${prefix}${camelize(layer.type)}${suffix}_Private.h`,
duplicatePlatformDecls(layerPrivateH(layer)), args.root);
duplicatePlatformDecls(layerPrivateH(layer)), root);
writeIfModified(`platform/darwin/src/${prefix}${camelize(layer.type)}${suffix}.mm`,
layerM(layer), args.root);
layerM(layer), root);
writeIfModified(`platform/darwin/test/${prefix}${camelize(layer.type)}${suffix}Tests.mm`,
testLayers(layer), args.root);
testLayers(layer), root);
}
// Extract examples for guides from unit tests.
@@ -925,21 +927,21 @@ writeIfModified(`platform/ios/docs/guides/For Style Authors.md`, forStyleAuthors
os: 'iOS',
renamedProperties: renamedPropertiesByLayerType,
layers: layers,
}), args.root);
}), root);
writeIfModified(`platform/macos/docs/guides/For Style Authors.md`, forStyleAuthorsMD({
os: 'macOS',
renamedProperties: renamedPropertiesByLayerType,
layers: layers,
}), args.root);
}), root);
writeIfModified(`platform/ios/docs/guides/Migrating to Expressions.md`, ddsGuideMD({
os: 'iOS',
}), args.root);
}), root);
writeIfModified(`platform/macos/docs/guides/Migrating to Expressions.md`, ddsGuideMD({
os: 'macOS',
}), args.root);
}), root);
writeIfModified(`platform/ios/docs/guides/Tile URL Templates.md`, templatesMD({
os: 'iOS',
}), args.root);
}), root);
writeIfModified(`platform/macos/docs/guides/Tile URL Templates.md`, templatesMD({
os: 'macOS',
}), args.root);*/
}), root);*/

View File

@@ -10,6 +10,7 @@
#include <mbgl/style/layer.hpp>
#endif
MLN_EXPORT
@interface MLNCustomDrawableStyleLayer : MLNStyleLayer
#ifdef __cplusplus

View File

@@ -1,3 +1,4 @@
load("@aspect_rules_js//js:defs.bzl", "js_library")
load("@build_bazel_rules_apple//apple:apple.bzl", "apple_static_xcframework", "apple_xcframework")
load("@build_bazel_rules_apple//apple:ios.bzl", "ios_application", "ios_framework")
load("@build_bazel_rules_apple//apple:resources.bzl", "apple_resource_bundle")
@@ -96,11 +97,9 @@ info_plist(
)
public_hdrs = [
":umbrella_header",
":ios_public_hdrs",
":ios_sdk_hdrs",
"//platform/darwin:darwin_objc_hdrs",
"//platform/darwin:darwin_objcpp_hdrs",
"//platform/darwin:generated_style_public_hdrs",
]
@@ -116,7 +115,6 @@ apple_static_xcframework(
},
minimum_os_versions = {"ios": "12.0"},
public_hdrs = public_hdrs,
umbrella_header = "umbrella_header",
visibility = ["//visibility:public"],
deps = ["//platform:ios-sdk"],
)
@@ -150,7 +148,6 @@ apple_xcframework(
},
minimum_os_versions = {"ios": "12.0"},
public_hdrs = public_hdrs,
umbrella_header = "umbrella_header",
version = ":maplibre_ios_version",
visibility = ["//visibility:public"],
deps = ["//platform:ios-sdk-dynamic"],
@@ -158,11 +155,13 @@ apple_xcframework(
ios_framework(
name = "MapLibre.link",
testonly = True,
bundle_id = "com.maplibre.link",
families = ["iphone"],
infoplists = ["info_plist"],
linkopts = [""],
minimum_os_version = "12.0",
visibility = ["//visibility:public"],
deps = ["//platform:ios-sdk"],
)
@@ -333,3 +332,15 @@ exports_files(
MLN_IOS_PUBLIC_OBJC_SOURCE +
MLN_PUBLIC_IOS_APP_SOPURCE,
)
js_library(
name = "symbols-to-check",
srcs = [
":ios_objc_srcs",
":ios_objcpp_srcs",
":ios_private_hdrs",
":ios_public_hdrs",
":ios_sdk_hdrs",
],
visibility = ["//platform:__pkg__"],
)

View File

@@ -14,26 +14,22 @@ MLN_IOS_SDK_HEADERS = [
]
MLN_IOS_PUBLIC_HEADERS = [
"src/MLNAnnotationContainerView.h",
"src/MLNCompactCalloutView.h",
"src/MLNFaux3DUserLocationAnnotationView.h",
"src/MLNMapAccessibilityElement.h",
"src/MLNMapView+Impl.h",
"src/MLNMapView+Metal.h",
"src/MLNMapView+OpenGL.h",
"src/MLNScaleBar.h",
"src/MLNUserLocationHeadingArrowLayer.h",
"src/MLNUserLocationHeadingBeamLayer.h",
"src/MLNUserLocationHeadingIndicator.h",
"src/NSOrthography+MLNAdditions.h",
"src/UIColor+MLNAdditions.h",
"src/UIDevice+MLNAdditions.h",
"src/UIImage+MLNAdditions.h",
"src/UIView+MLNAdditions.h",
"src/UIViewController+MLNAdditions.h",
]
MLN_IOS_PRIVATE_HEADERS = [
"src/NSOrthography+MLNAdditions.h",
"src/UIDevice+MLNAdditions.h",
"src/UIImage+MLNAdditions.h",
"src/MLNUserLocationHeadingArrowLayer.h",
"src/MLNUserLocationHeadingIndicator.h",
"src/UIColor+MLNAdditions.h",
"src/MLNMapAccessibilityElement.h",
"src/UIViewController+MLNAdditions.h",
"src/UIView+MLNAdditions.h",
"src/MLNScaleBar.h",
"src/MLNFaux3DUserLocationAnnotationView.h",
"src/MLNUserLocationHeadingBeamLayer.h",
"src/MLNAnnotationContainerView.h",
"src/MLNAnnotationContainerView_Private.h",
"src/MLNAnnotationImage_Private.h",
"src/MLNAnnotationView_Private.h",
@@ -41,6 +37,10 @@ MLN_IOS_PRIVATE_HEADERS = [
"src/MLNMapView_Private.h",
"src/MLNUserLocationAnnotationView_Private.h",
"src/MLNUserLocation_Private.h",
"src/MLNCompactCalloutView.h",
"src/MLNMapView+Impl.h",
"src/MLNMapView+Metal.h",
"src/MLNMapView+OpenGL.h",
]
MLN_IOS_PUBLIC_OBJC_SOURCE = [

View File

@@ -1,4 +1,5 @@
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN

View File

@@ -1,6 +1,5 @@
#import <Foundation/Foundation.h>
@class MLNMapView;
#import "MLNMapView.h"
NS_ASSUME_NONNULL_BEGIN

View File

@@ -77,6 +77,6 @@ FOUNDATION_EXPORT MLN_EXPORT const unsigned char MapboxVersionString[];
#import "NSPredicate+MLNAdditions.h"
#import "NSValue+MLNAdditions.h"
#import "MLNUserLocationAnnotationViewStyle.h"
#if MLN_DRAWABLE_RENDERER
#if defined(MLN_DRAWABLE_RENDERER) || defined(MLN_RENDER_BACKEND_METAL)
#import "MLNCustomDrawableStyleLayer.h"
#endif

View File

@@ -1,10 +1,11 @@
load("@aspect_rules_js//js:defs.bzl", "js_library")
load(
"bazel/files.bzl",
"MLN_MACOS_PRIVATE_HEADERS",
"MLN_MACOS_PUBLIC_HEADERS",
"MLN_MACOS_PUBLIC_OBJCPP_SOURCE",
"MLN_MACOS_PUBLIC_OBJCPP_OPENGL_SOURCE",
"MLN_MACOS_PUBLIC_OBJCPP_METAL_SOURCE",
"MLN_MACOS_PUBLIC_OBJCPP_OPENGL_SOURCE",
"MLN_MACOS_PUBLIC_OBJCPP_SOURCE",
"MLN_MACOS_PUBLIC_OBJC_SOURCE",
)
@@ -40,5 +41,16 @@ exports_files(
MLN_MACOS_PUBLIC_HEADERS +
MLN_MACOS_PUBLIC_OBJCPP_SOURCE +
MLN_MACOS_PUBLIC_OBJCPP_METAL_SOURCE +
MLN_MACOS_PUBLIC_OBJC_SOURCE
MLN_MACOS_PUBLIC_OBJC_SOURCE,
)
js_library(
name = "symbols-to-check",
srcs = [
":macos_objc_srcs",
":macos_objcpp_srcs",
":macos_private_hdrs",
":macos_public_hdrs",
],
visibility = ["//platform:__pkg__"],
)

View File

@@ -1,12 +1,16 @@
#import <AppKit/AppKit.h>
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@class MLNMapView;
@class MLNAnnotationImage;
@class MLNMapCamera;
@class MLNMapView;
@class MLNPolygon;
@class MLNPolyline;
@class MLNShape;
@class MLNStyle;
@protocol MLNAnnotation;
/**
The `MLNMapViewDelegate` protocol defines a set of optional methods that you

2634
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,6 @@
const { ArgumentParser } = require("argparse");
const path = require('path');
const fs = require('fs');
const ejs = require('ejs');
const spec = require('./style-spec');
const colorParser = require('csscolorparser');
@@ -222,10 +221,13 @@ global.defaultValue = function (property) {
}
};
const layerHpp = ejs.compile(fs.readFileSync(`include/mbgl/style/layers/layer.hpp.ejs`, 'utf8'), {strict: true});
const layerCpp = ejs.compile(fs.readFileSync(`src/mbgl/style/layers/layer.cpp.ejs`, 'utf8'), {strict: true});
const propertiesHpp = ejs.compile(fs.readFileSync(`src/mbgl/style/layers/layer_properties.hpp.ejs`, 'utf8'), {strict: true});
const propertiesCpp = ejs.compile(fs.readFileSync(`src/mbgl/style/layers/layer_properties.cpp.ejs`, 'utf8'), {strict: true});
console.log("Generating style code...");
const root = args.root ? args.root : path.dirname(__dirname);
const layerHpp = readAndCompile(`include/mbgl/style/layers/layer.hpp.ejs`, root);
const layerCpp = readAndCompile(`src/mbgl/style/layers/layer.cpp.ejs`, root);
const propertiesHpp = readAndCompile(`src/mbgl/style/layers/layer_properties.hpp.ejs`, root);
const propertiesCpp = readAndCompile(`src/mbgl/style/layers/layer_properties.cpp.ejs`, root);
const collator = new Intl.Collator("en-US");
@@ -273,16 +275,16 @@ const layers = Object.keys(spec.layer.type.values).map((type) => {
for (const layer of layers) {
const layerFileName = layer.type.replace('-', '_');
writeIfModified(`src/mbgl/style/layers/${layerFileName}_layer_properties.hpp`, propertiesHpp(layer), args.root);
writeIfModified(`src/mbgl/style/layers/${layerFileName}_layer_properties.cpp`, propertiesCpp(layer), args.root);
writeIfModified(`src/mbgl/style/layers/${layerFileName}_layer_properties.hpp`, propertiesHpp(layer), root);
writeIfModified(`src/mbgl/style/layers/${layerFileName}_layer_properties.cpp`, propertiesCpp(layer), root);
// Remove our fake property for the external interace.
if (layer.type === 'line') {
layer.paintProperties = layer.paintProperties.filter(property => property.name !== 'line-floor-width');
}
writeIfModified(`include/mbgl/style/layers/${layerFileName}_layer.hpp`, layerHpp(layer), args.root);
writeIfModified(`src/mbgl/style/layers/${layerFileName}_layer.cpp`, layerCpp(layer), args.root);
writeIfModified(`include/mbgl/style/layers/${layerFileName}_layer.hpp`, layerHpp(layer), root);
writeIfModified(`src/mbgl/style/layers/${layerFileName}_layer.cpp`, layerCpp(layer), root);
}
// Light
@@ -298,7 +300,7 @@ const lightProperties = Object.keys(spec[`light`]).reduce((memo, name) => {
// to get a deterministic order.
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 lightCpp = ejs.compile(fs.readFileSync(`src/mbgl/style/light.cpp.ejs`, 'utf8'), {strict: true});
writeIfModified(`include/mbgl/style/light.hpp`, lightHpp({properties: lightProperties}), args.root);
writeIfModified(`src/mbgl/style/light.cpp`, lightCpp({properties: lightProperties}), args.root);
const lightHpp = readAndCompile(`include/mbgl/style/light.hpp.ejs`, root);
const lightCpp = readAndCompile(`src/mbgl/style/light.cpp.ejs`, root);
writeIfModified(`include/mbgl/style/light.hpp`, lightHpp({properties: lightProperties}), root);
writeIfModified(`src/mbgl/style/light.cpp`, lightCpp({properties: lightProperties}), root);

View File

@@ -1,5 +1,6 @@
// Global functions //
const ejs = require('ejs');
const fs = require('fs');
const path = require('path');
@@ -59,3 +60,11 @@ global.writeIfModified = function(filename, newContent, output) {
}
console.warn(`* Updating outdated file '${filename}'`);
};
global.readAndCompile = function(filename, root) {
if (root) {
filename = path.resolve(path.join(root, filename));
}
return ejs.compile(fs.readFileSync(filename, 'utf8'), {strict: true});
}

View File

@@ -204,7 +204,7 @@ const args = (() => {
});
parser.add_argument("--root", "--r", {
help: "Directory root to place generated code",
required: true
required: false
});
parser.add_argument("--compress", "--c", {
help: "Compress shader text with zlib and output byte arrays instead of strings",
@@ -220,8 +220,9 @@ const args = (() => {
// Generate shader source headers
const shaderRoot = "shaders/";
const outputRoot = path.join((args.root ? args.root : ""), "include/mbgl/shaders");
const root = args.root ? args.root : path.dirname(__dirname);
const shaderRoot = path.join(root, "shaders");
const outputRoot = path.join(root, "include/mbgl/shaders");
let generatedHeaders = [];
let shaderNames = [];