Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
498 lines
16 KiB
Python
498 lines
16 KiB
Python
load("@build_bazel_rules_apple//apple:apple.bzl", "apple_static_xcframework", "apple_xcframework", "local_provisioning_profile")
|
|
load("@build_bazel_rules_apple//apple:ios.bzl", "ios_application", "ios_framework")
|
|
load("@build_bazel_rules_apple//apple:resources.bzl", "apple_resource_bundle")
|
|
load(
|
|
"@rules_xcodeproj//xcodeproj:defs.bzl",
|
|
"top_level_target",
|
|
"xcodeproj",
|
|
"xcode_schemes",
|
|
)
|
|
load("bazel/macros.bzl", "info_plist")
|
|
load("bazel/__generated__/provisioning_profile.bzl", "APPLE_MOBILE_PROVISIONING_PROFILE_TEAM_ID", "APPLE_MOBILE_PROVISIONING_PROFILE_UUID")
|
|
|
|
local_provisioning_profile(
|
|
name = "provisioning_profile",
|
|
profile_name = APPLE_MOBILE_PROVISIONING_PROFILE_UUID,
|
|
team_id = APPLE_MOBILE_PROVISIONING_PROFILE_TEAM_ID
|
|
)
|
|
|
|
xcode_provisioning_profile(
|
|
name = "xcode_profile",
|
|
managed_by_xcode = True,
|
|
provisioning_profile = ":provisioning_profile"
|
|
)
|
|
|
|
configure_device_profiles()
|
|
|
|
filegroup(
|
|
name = "ios_sdk_hdrs",
|
|
srcs = MLN_IOS_SDK_HEADERS,
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
filegroup(
|
|
name = "ios_public_hdrs",
|
|
srcs = MLN_IOS_PUBLIC_HEADERS,
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
filegroup(
|
|
name = "ios_private_hdrs",
|
|
srcs = MLN_IOS_PRIVATE_HEADERS,
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
filegroup(
|
|
name = "ios_objcpp_srcs",
|
|
srcs = MLN_IOS_PUBLIC_OBJCPP_SOURCE,
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
filegroup(
|
|
name = "ios_objc_srcs",
|
|
srcs = MLN_IOS_PUBLIC_OBJC_SOURCE,
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
filegroup(
|
|
name = "ios_app_srcs",
|
|
srcs = MLN_PUBLIC_IOS_APP_SOPURCE,
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
apple_static_xcframework(
|
|
name = "Mapbox.static",
|
|
bundle_name = "Mapbox",
|
|
ios = {
|
|
"simulator": [
|
|
"x86_64",
|
|
"arm64",
|
|
],
|
|
"device": ["arm64"],
|
|
},
|
|
minimum_os_versions = {"ios": "12.0"},
|
|
public_hdrs = [
|
|
":ios_public_hdrs",
|
|
":ios_sdk_hdrs",
|
|
"//platform/darwin:darwin_objc_hdrs",
|
|
"//platform/darwin:darwin_objcpp_hdrs",
|
|
],
|
|
umbrella_header = "src/Mapbox.h",
|
|
visibility = ["//visibility:public"],
|
|
deps = ["//platform:ios-sdk"],
|
|
)
|
|
|
|
info_plist(
|
|
name = "info_plist",
|
|
out = "Info.plist",
|
|
base_info_plist = "framework/Info.plist",
|
|
)
|
|
|
|
info_plist(
|
|
name = "info_static_plist",
|
|
out = "Info-static.plist",
|
|
base_info_plist = "framework/Info-static.plist",
|
|
)
|
|
|
|
apple_xcframework(
|
|
name = "MapLibre.dynamic",
|
|
bundle_id = "com.maplibre.mapbox",
|
|
bundle_name = "MapLibre",
|
|
data = glob([
|
|
"resources/*.lproj/**",
|
|
"resources/*.xcassets/**",
|
|
]),
|
|
infoplists = ["info_plist"],
|
|
ios = {
|
|
"simulator": [
|
|
"x86_64",
|
|
"arm64",
|
|
],
|
|
"device": ["arm64"],
|
|
},
|
|
minimum_os_versions = {"ios": "12.0"},
|
|
public_hdrs = [
|
|
":ios_public_hdrs",
|
|
":ios_sdk_hdrs",
|
|
"//platform/darwin:darwin_objc_hdrs",
|
|
"//platform/darwin:darwin_objcpp_hdrs",
|
|
],
|
|
umbrella_header = "src/Mapbox.h",
|
|
visibility = ["//visibility:public"],
|
|
deps = ["//platform:ios-sdk-dynamic"],
|
|
)
|
|
|
|
ios_framework(
|
|
name = "MapLibre.link",
|
|
bundle_id = "com.maplibre.link",
|
|
families = ["iphone"],
|
|
infoplists = ["info_plist"],
|
|
linkopts = [""],
|
|
minimum_os_version = "12.0",
|
|
deps = ["//platform:ios-sdk"],
|
|
)
|
|
|
|
apple_resource_bundle(
|
|
name = "resources",
|
|
bundle_id = "com.maplibre.mapbox",
|
|
bundle_name = "Mapbox",
|
|
infoplists = ["info_static_plist"],
|
|
resources = glob([
|
|
"resources/*.lproj/**",
|
|
"resources/*.xcassets/**",
|
|
]),
|
|
)
|
|
|
|
# Objcpp files for the iOS source
|
|
objc_library(
|
|
name = "objcpp-sdk",
|
|
srcs = [
|
|
"platform/darwin/src/MLNAttributionInfo.mm",
|
|
"platform/darwin/src/MLNBackgroundStyleLayer.mm",
|
|
"platform/darwin/src/MLNCircleStyleLayer.mm",
|
|
"platform/darwin/src/MLNComputedShapeSource.mm",
|
|
"platform/darwin/src/MLNDefaultStyle.mm",
|
|
"platform/darwin/src/MLNFeature.mm",
|
|
"platform/darwin/src/MLNFillExtrusionStyleLayer.mm",
|
|
"platform/darwin/src/MLNFillStyleLayer.mm",
|
|
"platform/darwin/src/MLNForegroundStyleLayer.mm",
|
|
"platform/darwin/src/MLNFoundation.mm",
|
|
"platform/darwin/src/MLNGeometry.mm",
|
|
"platform/darwin/src/MLNHeatmapStyleLayer.mm",
|
|
"platform/darwin/src/MLNHillshadeStyleLayer.mm",
|
|
"platform/darwin/src/MLNImageSource.mm",
|
|
"platform/darwin/src/MLNLight.mm",
|
|
"platform/darwin/src/MLNLineStyleLayer.mm",
|
|
"platform/darwin/src/MLNLoggingConfiguration.mm",
|
|
"platform/darwin/src/MLNMapCamera.mm",
|
|
"platform/darwin/src/MLNMapSnapshotter.mm",
|
|
"platform/darwin/src/MLNMultiPoint.mm",
|
|
"platform/darwin/src/MLNNetworkConfiguration.mm",
|
|
"platform/darwin/src/MLNOfflinePack.mm",
|
|
"platform/darwin/src/MLNOfflineStorage.mm",
|
|
"platform/darwin/src/MLNOpenGLStyleLayer.mm",
|
|
"platform/darwin/src/MLNPointAnnotation.mm",
|
|
"platform/darwin/src/MLNPointCollection.mm",
|
|
"platform/darwin/src/MLNPolygon.mm",
|
|
"platform/darwin/src/MLNPolyline.mm",
|
|
"platform/darwin/src/MLNRasterDEMSource.mm",
|
|
"platform/darwin/src/MLNRasterStyleLayer.mm",
|
|
"platform/darwin/src/MLNRasterTileSource.mm",
|
|
"platform/darwin/src/MLNSettings.mm",
|
|
"platform/darwin/src/MLNShape.mm",
|
|
"platform/darwin/src/MLNShapeCollection.mm",
|
|
"platform/darwin/src/MLNShapeOfflineRegion.mm",
|
|
"platform/darwin/src/MLNShapeSource.mm",
|
|
"platform/darwin/src/MLNSource.mm",
|
|
"platform/darwin/src/MLNStyle.mm",
|
|
"platform/darwin/src/MLNStyleLayer.mm",
|
|
"platform/darwin/src/MLNStyleLayerManager.mm",
|
|
"platform/darwin/src/MLNStyleValue.mm",
|
|
"platform/darwin/src/MLNSymbolStyleLayer.mm",
|
|
"platform/darwin/src/MLNTilePyramidOfflineRegion.mm",
|
|
"platform/darwin/src/MLNTileServerOptions.mm",
|
|
"platform/darwin/src/MLNTileSource.mm",
|
|
"platform/darwin/src/MLNVectorStyleLayer.mm",
|
|
"platform/darwin/src/MLNVectorTileSource.mm",
|
|
"platform/darwin/src/NSArray+MLNAdditions.mm",
|
|
"platform/darwin/src/NSBundle+MLNAdditions.mm",
|
|
"platform/darwin/src/NSCoder+MLNAdditions.mm",
|
|
"platform/darwin/src/NSComparisonPredicate+MLNAdditions.mm",
|
|
"platform/darwin/src/NSCompoundPredicate+MLNAdditions.mm",
|
|
"platform/darwin/src/NSDate+MLNAdditions.mm",
|
|
"platform/darwin/src/NSDictionary+MLNAdditions.mm",
|
|
"platform/darwin/src/NSExpression+MLNAdditions.mm",
|
|
"platform/darwin/src/NSPredicate+MLNAdditions.mm",
|
|
"platform/darwin/src/NSValue+MLNStyleAttributeAdditions.mm",
|
|
"platform/ios/src/MLNAnnotationView.mm",
|
|
"platform/ios/src/MLNCompassButton.mm",
|
|
"platform/ios/src/MLNFaux3DUserLocationAnnotationView.mm",
|
|
"platform/ios/src/MLNMapAccessibilityElement.mm",
|
|
"platform/ios/src/MLNMapProjection.mm",
|
|
"platform/ios/src/MLNMapView.mm",
|
|
"platform/ios/src/MLNMapView+Impl.mm",
|
|
"platform/ios/src/MLNMapView+OpenGL.mm",
|
|
"platform/ios/src/MLNScaleBar.mm",
|
|
"platform/ios/src/UIColor+MLNAdditions.mm",
|
|
"platform/ios/src/UIImage+MLNAdditions.mm",
|
|
],
|
|
copts = CPP_FLAGS + MAPLIBRE_FLAGS + [
|
|
"-fcxx-modules",
|
|
"-fmodules",
|
|
"-Wno-c99-extensions",
|
|
"-Wno-gnu-zero-variadic-macro-arguments",
|
|
"-Wno-gnu-conditional-omitted-operand",
|
|
"-Wno-gnu-statement-expression",
|
|
],
|
|
includes = [
|
|
"platform/darwin/include",
|
|
],
|
|
sdk_frameworks = [
|
|
"CoreImage",
|
|
"CoreLocation",
|
|
"GLKit",
|
|
"OpenGLES",
|
|
"QuartzCore",
|
|
],
|
|
defines = ["GLES_SILENCE_DEPRECATION=1"],
|
|
deps = [
|
|
"objc-headers",
|
|
"//:mbgl-core",
|
|
"//platform/darwin:darwin-objcpp",
|
|
"//platform/default:mbgl-default",
|
|
"//platform/ios/platform/ios/vendor:SMCalloutView",
|
|
],
|
|
)
|
|
|
|
# platform/ios/sdk-files.json
|
|
# Objc files for the iOS source
|
|
objc_library(
|
|
name = "objc-sdk",
|
|
srcs = [
|
|
"platform/darwin/src/MLNAttributedExpression.m",
|
|
"platform/darwin/src/MLNClockDirectionFormatter.m",
|
|
"platform/darwin/src/MLNCompassDirectionFormatter.m",
|
|
"platform/darwin/src/MLNCoordinateFormatter.m",
|
|
"platform/darwin/src/MLNDistanceFormatter.m",
|
|
"platform/darwin/src/MLNLocationManager.m",
|
|
"platform/darwin/src/MLNReachability.m",
|
|
"platform/darwin/src/MLNRendererConfiguration.m",
|
|
"platform/darwin/src/MLNTypes.m",
|
|
"platform/darwin/src/NSString+MLNAdditions.m",
|
|
"platform/darwin/src/NSURL+MLNAdditions.m",
|
|
"platform/darwin/src/NSValue+MLNAdditions.m",
|
|
"platform/ios/src/MLNAnnotationContainerView.m",
|
|
"platform/ios/src/MLNAnnotationImage.m",
|
|
"platform/ios/src/MLNCompactCalloutView.m",
|
|
"platform/ios/src/MLNUserLocation.m",
|
|
"platform/ios/src/MLNUserLocationAnnotationView.m",
|
|
"platform/ios/src/MLNUserLocationAnnotationViewStyle.m",
|
|
"platform/ios/src/MLNUserLocationHeadingArrowLayer.m",
|
|
"platform/ios/src/MLNUserLocationHeadingBeamLayer.m",
|
|
"platform/ios/src/NSOrthography+MLNAdditions.m",
|
|
"platform/ios/src/UIDevice+MLNAdditions.m",
|
|
"platform/ios/src/UIView+MLNAdditions.m",
|
|
"platform/ios/src/UIViewController+MLNAdditions.m",
|
|
],
|
|
hdrs = [
|
|
"platform/darwin/include/mbgl/util/image+MLNAdditions.hpp",
|
|
],
|
|
copts = WARNING_FLAGS + MAPLIBRE_FLAGS + [
|
|
"-fmodules",
|
|
"-Wno-gnu-zero-variadic-macro-arguments",
|
|
"-Wno-variadic-macros",
|
|
"-Wno-gnu-conditional-omitted-operand",
|
|
],
|
|
includes = [
|
|
"platform/darwin/include",
|
|
],
|
|
deps = [
|
|
"objc-headers",
|
|
"//:mbgl-core",
|
|
"//platform/darwin:darwin-objc",
|
|
"//platform/default:mbgl-default",
|
|
"//platform/ios/platform/ios/vendor:SMCalloutView",
|
|
],
|
|
)
|
|
|
|
# Common headers between objc and objcpp libraries.
|
|
objc_library(
|
|
name = "objc-headers",
|
|
srcs = glob([
|
|
"platform/darwin/src/*.h",
|
|
"platform/ios/src/*.h",
|
|
]),
|
|
includes = [
|
|
"platform/darwin/src",
|
|
"platform/ios/src",
|
|
],
|
|
sdk_frameworks = [
|
|
"CoreGraphics",
|
|
"CoreLocation",
|
|
"QuartzCore",
|
|
],
|
|
deps = [
|
|
"//platform/darwin:darwin-objc",
|
|
"//platform/darwin:darwin-objcpp",
|
|
],
|
|
)
|
|
|
|
objc_library(
|
|
name = "sdk-headers",
|
|
hdrs = ["platform/ios/src/Mapbox.h"] + _PUBLIC_HEADERS,
|
|
)
|
|
|
|
objc_library(
|
|
name = "iosapp",
|
|
defines = ["GLES_SILENCE_DEPRECATION"],
|
|
srcs = [
|
|
"platform/darwin/app/LimeGreenStyleLayer.h",
|
|
"platform/darwin/app/LimeGreenStyleLayer.m",
|
|
"platform/ios/app/MBXAnnotationView.m",
|
|
"platform/ios/app/MBXAppDelegate.m",
|
|
"platform/ios/app/MBXCustomCalloutView.h",
|
|
"platform/ios/app/MBXCustomCalloutView.m",
|
|
"platform/ios/app/MBXCustomLocationViewController.m",
|
|
"platform/ios/app/MBXEmbeddedMapViewController.m",
|
|
"platform/ios/app/MBXFrameTimeGraphView.m",
|
|
"platform/ios/app/MBXOfflinePacksTableViewController.m",
|
|
"platform/ios/app/MBXOrnamentsViewController.m",
|
|
"platform/ios/app/MBXSnapshotsViewController.m",
|
|
"platform/ios/app/MBXState.m",
|
|
"platform/ios/app/MBXStateManager.m",
|
|
"platform/ios/app/MBXUserLocationAnnotationView.m",
|
|
"platform/ios/app/MBXViewController.m",
|
|
"platform/ios/app/main.m",
|
|
],
|
|
hdrs = [
|
|
"platform/ios/app/MBXAnnotationView.h",
|
|
"platform/ios/app/MBXAppDelegate.h",
|
|
"platform/ios/app/MBXCustomLocationViewController.h",
|
|
"platform/ios/app/MBXEmbeddedMapViewController.h",
|
|
"platform/ios/app/MBXFrameTimeGraphView.h",
|
|
"platform/ios/app/MBXOfflinePacksTableViewController.h",
|
|
"platform/ios/app/MBXOrnamentsViewController.h",
|
|
"platform/ios/app/MBXSnapshotsViewController.h",
|
|
"platform/ios/app/MBXState.h",
|
|
"platform/ios/app/MBXStateManager.h",
|
|
"platform/ios/app/MBXUserLocationAnnotationView.h",
|
|
"platform/ios/app/MBXViewController.h",
|
|
"platform/ios/app/MLNMapView_Experimental.h",
|
|
],
|
|
data = glob([
|
|
"platform/ios/app/Assets.xcassets/**",
|
|
]),
|
|
includes = [
|
|
"platform/darwin/app",
|
|
"platform/darwin/src",
|
|
"platform/ios/src",
|
|
],
|
|
sdk_frameworks = [
|
|
"GLKit", # needed for LimeGreenStyleLayer
|
|
],
|
|
deps = [
|
|
"sdk-headers",
|
|
],
|
|
)
|
|
|
|
_IOS_APPLICATION_RESOURCES = [
|
|
"app/numeric_filter_style.json",
|
|
"app/missing_icon.json",
|
|
"app/points.geojson",
|
|
"app/polyline.geojson",
|
|
"app/Settings.bundle",
|
|
"app/Main.storyboard",
|
|
"app/threestates.geojson",
|
|
"app/LaunchScreen.storyboard",
|
|
"app/simple_route.json",
|
|
"app/fill_filter_style.json",
|
|
"//platform/darwin:test/amsterdam.geojson",
|
|
] + glob([
|
|
"app/*.lproj/**",
|
|
"app/Assets.xcassets/**",
|
|
])
|
|
|
|
ios_application(
|
|
name = "App",
|
|
bundle_id = "org.maplibre.app",
|
|
families = [
|
|
"iphone",
|
|
"ipad",
|
|
],
|
|
infoplists = ["build/Info-app.plist"],
|
|
minimum_os_version = "12.0",
|
|
provisioning_profile = "xcode_profile",
|
|
resources = _IOS_APPLICATION_RESOURCES,
|
|
visibility = ["//visibility:public"],
|
|
provisioning_profile = ":xcode_profile",
|
|
deps = [
|
|
"//platform:iosapp",
|
|
],
|
|
)
|
|
|
|
ios_application(
|
|
name = "AppDynamicLib",
|
|
bundle_id = "org.maplibre.app",
|
|
families = [
|
|
"iphone",
|
|
"ipad",
|
|
],
|
|
frameworks = [
|
|
"MapLibre.link",
|
|
],
|
|
infoplists = ["app/Info.plist"],
|
|
minimum_os_version = "12.0",
|
|
provisioning_profile = ":xcode_profile",
|
|
resources = _IOS_APPLICATION_RESOURCES,
|
|
visibility = ["//visibility:public"],
|
|
provisioning_profile = ":xcode_profile",
|
|
deps = [
|
|
"//platform:iosapp",
|
|
],
|
|
)
|
|
|
|
# Outputs a file with the size of MapLibre as a dynamic library in bytes
|
|
genrule(
|
|
name = "size",
|
|
srcs = [
|
|
"AppDynamicLib",
|
|
],
|
|
outs = [
|
|
"size-out",
|
|
],
|
|
cmd = """
|
|
unzip $(location AppDynamicLib)
|
|
stat -f%z ./Payload/AppDynamicLib.app/Frameworks/MapLibre.link.framework/MapLibre.link > $@
|
|
""",
|
|
)
|
|
|
|
xcodeproj(
|
|
name = "xcodeproj",
|
|
bazel_env = {"PATH": "/bin:/usr/bin:/usr/local/bin:/opt/homebrew/bin"},
|
|
build_mode = BUILD_MODE,
|
|
default_xcode_configuration = "Debug",
|
|
minimum_xcode_version = "14",
|
|
project_name = "MapLibre",
|
|
tags = ["manual"],
|
|
bazel_env = {"PATH": "/bin:/usr/bin:/usr/local/bin"},
|
|
default_xcode_configuration = "Debug",
|
|
xcode_configurations = {
|
|
"Debug": {"//command_line_option:compilation_mode": "dbg"},
|
|
"Release": {"//command_line_option:compilation_mode": "opt"}
|
|
},
|
|
top_level_targets = [
|
|
top_level_target(
|
|
":App",
|
|
target_environments = ["device", "simulator"],
|
|
),
|
|
],
|
|
xcode_configurations = {
|
|
"Debug": {"//command_line_option:compilation_mode": "dbg"},
|
|
"Release": {"//command_line_option:compilation_mode": "opt"},
|
|
},
|
|
)
|
|
|
|
sh_binary(
|
|
name = "lint-plists",
|
|
srcs = ["//platform/ios:scripts/lint-plists.sh"],
|
|
data = [
|
|
"Integration_Test_Harness/Info.plist",
|
|
"Integration_Tests/Info.plist",
|
|
"app/Info.plist",
|
|
"bench_UITests/Info.plist",
|
|
"benchmark/Info.plist",
|
|
"framework/Info.plist",
|
|
"framework/Info-static.plist",
|
|
"//platform/ios/iosapp-UITests:Info.plist",
|
|
"//platform/ios/test:Info.plist",
|
|
],
|
|
)
|
|
|
|
exports_files(
|
|
MLN_IOS_PUBLIC_HEADERS +
|
|
MLN_IOS_PRIVATE_HEADERS +
|
|
MLN_IOS_PUBLIC_OBJCPP_SOURCE +
|
|
MLN_IOS_PUBLIC_OBJC_SOURCE +
|
|
MLN_PUBLIC_IOS_APP_SOPURCE,
|
|
)
|