macos: add xcframework Bazel targets (#4113)
This commit is contained in:
@@ -242,6 +242,50 @@ objc_library(
|
||||
],
|
||||
)
|
||||
|
||||
# sdk for the macOS static target which includes the resources.
|
||||
objc_library(
|
||||
name = "macos-sdk",
|
||||
hdrs = [
|
||||
"//platform/darwin:darwin_objc_hdrs",
|
||||
"//platform/darwin:generated_style_public_hdrs",
|
||||
"//platform/macos:macos_public_hdrs",
|
||||
],
|
||||
data = ["//platform/macos:resources"],
|
||||
module_name = "MapLibre",
|
||||
sdk_dylibs = [
|
||||
"libz",
|
||||
"libsqlite3",
|
||||
"libc++",
|
||||
],
|
||||
sdk_frameworks = [
|
||||
"Security",
|
||||
],
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
":macos-objc",
|
||||
":macos-objcpp",
|
||||
],
|
||||
)
|
||||
|
||||
# sdk for the macOS dynamic target. Lacking the resources bundle since for dynamic
|
||||
# they are in the main package.
|
||||
objc_library(
|
||||
name = "macos-sdk-dynamic",
|
||||
sdk_dylibs = [
|
||||
"libz",
|
||||
"libsqlite3",
|
||||
"libc++",
|
||||
],
|
||||
sdk_frameworks = [
|
||||
"Security",
|
||||
],
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
":macos-objc",
|
||||
":macos-objcpp",
|
||||
],
|
||||
)
|
||||
|
||||
objc_library(
|
||||
name = "app_custom_drawable_layer_objcpp_srcs",
|
||||
srcs = [
|
||||
|
||||
@@ -86,11 +86,12 @@ cc_library(
|
||||
"src/mbgl/util/timer.cpp",
|
||||
"src/mbgl/util/webp_reader.cpp",
|
||||
],
|
||||
"@platforms//os:osx": [
|
||||
"//platform/macos:macos_libuv_loop": [
|
||||
"src/mbgl/util/async_task.cpp",
|
||||
"src/mbgl/util/run_loop.cpp",
|
||||
"src/mbgl/util/timer.cpp",
|
||||
],
|
||||
"//platform/macos:macos_cfrunloop_loop": [],
|
||||
"//conditions:default": [],
|
||||
}),
|
||||
hdrs = [
|
||||
@@ -114,7 +115,7 @@ cc_library(
|
||||
"include",
|
||||
],
|
||||
linkopts = select({
|
||||
"@platforms//os:macos": [
|
||||
"//platform/macos:macos_libuv_loop": [
|
||||
"-lsqlite3",
|
||||
"-luv",
|
||||
"-lz",
|
||||
@@ -126,6 +127,15 @@ cc_library(
|
||||
"-licui18n",
|
||||
"-licudata",
|
||||
],
|
||||
"//platform/macos:macos_cfrunloop_loop": [
|
||||
"-lsqlite3",
|
||||
"-lz",
|
||||
"-lcurl",
|
||||
"-lpng",
|
||||
"-ljpeg",
|
||||
"-lwebp",
|
||||
"-licucore",
|
||||
],
|
||||
"//conditions:default": [],
|
||||
}),
|
||||
visibility = [
|
||||
@@ -147,10 +157,14 @@ cc_library(
|
||||
"default-collator",
|
||||
"//vendor:sqlite",
|
||||
],
|
||||
"@platforms//os:osx": [
|
||||
"//platform/macos:macos_libuv_loop": [
|
||||
":default-collator",
|
||||
"//platform/darwin:darwin-loop",
|
||||
"@libuv",
|
||||
],
|
||||
"//platform/macos:macos_cfrunloop_loop": [
|
||||
":default-collator",
|
||||
"//platform/darwin:darwin-loop",
|
||||
],
|
||||
}),
|
||||
)
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
load("@aspect_rules_js//js:defs.bzl", "js_library")
|
||||
load("@bazel_skylib//rules:common_settings.bzl", "string_flag")
|
||||
load("@rules_apple//apple:apple.bzl", "apple_static_xcframework", "apple_xcframework")
|
||||
load("@rules_apple//apple:macos.bzl", "macos_command_line_application")
|
||||
load("@rules_apple//apple:resources.bzl", "apple_resource_bundle")
|
||||
load("@rules_apple//apple:versioning.bzl", "apple_bundle_version")
|
||||
load(
|
||||
"@rules_xcodeproj//xcodeproj:defs.bzl",
|
||||
"top_level_target",
|
||||
@@ -9,11 +13,42 @@ load(
|
||||
"bazel/files.bzl",
|
||||
"MLN_MACOS_PRIVATE_HEADERS",
|
||||
"MLN_MACOS_PUBLIC_HEADERS",
|
||||
"MLN_MACOS_PUBLIC_METAL_HEADERS",
|
||||
"MLN_MACOS_PUBLIC_OBJCPP_METAL_SOURCE",
|
||||
"MLN_MACOS_PUBLIC_OBJCPP_SOURCE",
|
||||
"MLN_MACOS_PUBLIC_OBJC_SOURCE",
|
||||
)
|
||||
load("//platform/ios/bazel:macros.bzl", "info_plist")
|
||||
|
||||
# Selects the macOS event loop implementation
|
||||
# Use --//platform/macos:macos_loop=cfrunloop for AppKit/SwiftUI apps (xcframework builds)
|
||||
# Default is libuv for backwards compatibility with existing targets
|
||||
|
||||
string_flag(
|
||||
name = "macos_loop",
|
||||
build_setting_default = "libuv",
|
||||
values = [
|
||||
"cfrunloop",
|
||||
"libuv",
|
||||
],
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
||||
|
||||
config_setting(
|
||||
name = "macos_libuv_loop",
|
||||
constraint_values = ["@platforms//os:osx"],
|
||||
flag_values = {
|
||||
":macos_loop": "libuv",
|
||||
},
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
||||
|
||||
config_setting(
|
||||
name = "macos_cfrunloop_loop",
|
||||
constraint_values = ["@platforms//os:osx"],
|
||||
flag_values = {
|
||||
":macos_loop": "cfrunloop",
|
||||
},
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "macos_private_hdrs",
|
||||
@@ -23,13 +58,13 @@ filegroup(
|
||||
|
||||
filegroup(
|
||||
name = "macos_public_hdrs",
|
||||
srcs = MLN_MACOS_PUBLIC_HEADERS + MLN_MACOS_PUBLIC_METAL_HEADERS,
|
||||
srcs = MLN_MACOS_PUBLIC_HEADERS,
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "macos_objcpp_srcs",
|
||||
srcs = MLN_MACOS_PUBLIC_OBJCPP_SOURCE + MLN_MACOS_PUBLIC_OBJCPP_METAL_SOURCE,
|
||||
srcs = MLN_MACOS_PUBLIC_OBJCPP_SOURCE,
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
||||
|
||||
@@ -39,6 +74,93 @@ filegroup(
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
||||
|
||||
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",
|
||||
)
|
||||
|
||||
genrule(
|
||||
name = "mln_defines",
|
||||
outs = ["MLNDefines.h"],
|
||||
cmd = select({
|
||||
"//:metal_renderer": "echo '#define MLN_RENDER_BACKEND_METAL 1' > $@",
|
||||
"//conditions:default": "echo '' > $@",
|
||||
}),
|
||||
)
|
||||
|
||||
public_hdrs = [
|
||||
":mln_defines",
|
||||
":macos_public_hdrs",
|
||||
"//platform/darwin:darwin_objc_hdrs",
|
||||
"//platform/darwin:generated_style_public_hdrs",
|
||||
]
|
||||
|
||||
apple_bundle_version(
|
||||
name = "maplibre_macos_version",
|
||||
build_label_pattern = "maplibre_macos_{version}",
|
||||
build_version = "{version}",
|
||||
capture_groups = {
|
||||
"version": "[0-9]+.[0-9]+.[0-9]+",
|
||||
},
|
||||
fallback_build_label = "maplibre_macos_1.2.3456789",
|
||||
short_version_string = "{version}",
|
||||
)
|
||||
|
||||
apple_resource_bundle(
|
||||
name = "resources",
|
||||
bundle_id = "com.maplibre.mapbox",
|
||||
bundle_name = "Mapbox",
|
||||
infoplists = ["info_static_plist"],
|
||||
resources = glob([
|
||||
"sdk/*.lproj/**",
|
||||
"sdk/*.pdf",
|
||||
]),
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
||||
|
||||
apple_static_xcframework(
|
||||
name = "MapLibre.static",
|
||||
bundle_id = "com.maplibre.mapbox",
|
||||
bundle_name = "MapLibre",
|
||||
infoplists = ["info_static_plist"],
|
||||
macos = [
|
||||
"x86_64",
|
||||
"arm64",
|
||||
],
|
||||
minimum_os_versions = {"macos": "13.0"},
|
||||
public_hdrs = public_hdrs,
|
||||
version = ":maplibre_macos_version",
|
||||
visibility = ["//visibility:public"],
|
||||
deps = ["//platform:macos-sdk"],
|
||||
)
|
||||
|
||||
apple_xcframework(
|
||||
name = "MapLibre.dynamic",
|
||||
bundle_id = "com.maplibre.mapbox",
|
||||
bundle_name = "MapLibre",
|
||||
data = glob([
|
||||
"sdk/*.lproj/**",
|
||||
"sdk/*.pdf",
|
||||
]),
|
||||
infoplists = ["info_plist"],
|
||||
macos = [
|
||||
"x86_64",
|
||||
"arm64",
|
||||
],
|
||||
minimum_os_versions = {"macos": "13.0"},
|
||||
public_hdrs = public_hdrs,
|
||||
version = ":maplibre_macos_version",
|
||||
visibility = ["//visibility:public"],
|
||||
deps = ["//platform:macos-sdk-dynamic"],
|
||||
)
|
||||
|
||||
macos_command_line_application(
|
||||
name = "MapLibreMac",
|
||||
minimum_deployment_os_version = "13.0",
|
||||
@@ -78,7 +200,6 @@ exports_files(
|
||||
MLN_MACOS_PRIVATE_HEADERS +
|
||||
MLN_MACOS_PUBLIC_HEADERS +
|
||||
MLN_MACOS_PUBLIC_OBJCPP_SOURCE +
|
||||
MLN_MACOS_PUBLIC_OBJCPP_METAL_SOURCE +
|
||||
MLN_MACOS_PUBLIC_OBJC_SOURCE,
|
||||
)
|
||||
|
||||
|
||||
@@ -2,29 +2,12 @@ MLN_MACOS_PUBLIC_OBJCPP_SOURCE = [
|
||||
"src/MLNAttributionButton.mm",
|
||||
"src/MLNMapView+IBAdditions.mm",
|
||||
"src/MLNMapView+Impl.mm",
|
||||
"src/MLNMapView+Metal.mm",
|
||||
"src/MLNMapView.mm",
|
||||
"src/NSColor+MLNAdditions.mm",
|
||||
"src/NSImage+MLNAdditions.mm",
|
||||
]
|
||||
|
||||
MLN_MACOS_PUBLIC_OBJCPP_OPENGL_SOURCE = [
|
||||
"src/MLNMapView+OpenGL.mm",
|
||||
"src/MLNOpenGLLayer.mm",
|
||||
]
|
||||
|
||||
MLN_MACOS_PUBLIC_METAL_HEADERS = [
|
||||
"src/MLNMapView+Metal.h",
|
||||
]
|
||||
|
||||
MLN_MACOS_PUBLIC_OBJCPP_METAL_SOURCE = [
|
||||
"src/MLNMapView+Metal.mm",
|
||||
]
|
||||
|
||||
MLN_MACOS_PUBLIC_OPENGL_HEADERS = [
|
||||
"src/MLNOpenGLLayer.h",
|
||||
"src/MLNMapView+OpenGL.h",
|
||||
]
|
||||
|
||||
MLN_MACOS_PUBLIC_OBJC_SOURCE = [
|
||||
"src/MLNAnnotationImage.m",
|
||||
"src/MLNCompassCell.m",
|
||||
@@ -33,19 +16,20 @@ MLN_MACOS_PUBLIC_OBJC_SOURCE = [
|
||||
|
||||
MLN_MACOS_PUBLIC_HEADERS = [
|
||||
"src/MLNAnnotationImage.h",
|
||||
"src/NSImage+MLNAdditions.h",
|
||||
"src/NSColor+MLNAdditions.h",
|
||||
"src/NSProcessInfo+MLNAdditions.h",
|
||||
"src/MLNCompassCell.h",
|
||||
"src/MLNAttributionButton.h",
|
||||
"src/MLNMapView+Impl.h",
|
||||
"src/MLNCompassCell.h",
|
||||
"src/MLNMapView+IBAdditions.h",
|
||||
"src/MLNMapViewDelegate.h",
|
||||
"src/MLNMapView.h",
|
||||
"src/MLNMapViewDelegate.h",
|
||||
"src/Mapbox.h",
|
||||
"src/NSProcessInfo+MLNAdditions.h",
|
||||
]
|
||||
|
||||
MLN_MACOS_PRIVATE_HEADERS = [
|
||||
"src/MLNAnnotationImage_Private.h",
|
||||
"src/MLNMapView+Impl.h",
|
||||
"src/MLNMapView+Metal.h",
|
||||
"src/MLNMapView_Private.h",
|
||||
"src/NSColor+MLNAdditions.h",
|
||||
"src/NSImage+MLNAdditions.h",
|
||||
]
|
||||
|
||||
20
platform/macos/framework/Info-static.plist
Normal file
20
platform/macos/framework/Info-static.plist
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>15256</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
24
platform/macos/framework/Info.plist
Normal file
24
platform/macos/framework/Info.plist
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>15256</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
Reference in New Issue
Block a user