11load ("@aspect_rules_js//js:defs.bzl" , "js_library" )
2+ load ("@bazel_skylib//rules:common_settings.bzl" , "string_flag" )
3+ load ("@rules_apple//apple:apple.bzl" , "apple_static_xcframework" , "apple_xcframework" )
24load ("@rules_apple//apple:macos.bzl" , "macos_command_line_application" )
5+ load ("@rules_apple//apple:resources.bzl" , "apple_resource_bundle" )
6+ load ("@rules_apple//apple:versioning.bzl" , "apple_bundle_version" )
37load (
48 "@rules_xcodeproj//xcodeproj:defs.bzl" ,
59 "top_level_target" ,
913 "bazel/files.bzl" ,
1014 "MLN_MACOS_PRIVATE_HEADERS" ,
1115 "MLN_MACOS_PUBLIC_HEADERS" ,
12- "MLN_MACOS_PUBLIC_METAL_HEADERS" ,
13- "MLN_MACOS_PUBLIC_OBJCPP_METAL_SOURCE" ,
1416 "MLN_MACOS_PUBLIC_OBJCPP_SOURCE" ,
1517 "MLN_MACOS_PUBLIC_OBJC_SOURCE" ,
1618)
19+ load ("//platform/ios/bazel:macros.bzl" , "info_plist" )
20+
21+ # Selects the macOS event loop implementation
22+ # Use --//platform/macos:macos_loop=cfrunloop for AppKit/SwiftUI apps (xcframework builds)
23+ # Default is libuv for backwards compatibility with existing targets
24+
25+ string_flag (
26+ name = "macos_loop" ,
27+ build_setting_default = "libuv" ,
28+ values = [
29+ "cfrunloop" ,
30+ "libuv" ,
31+ ],
32+ visibility = ["//visibility:public" ],
33+ )
34+
35+ config_setting (
36+ name = "macos_libuv_loop" ,
37+ constraint_values = ["@platforms//os:osx" ],
38+ flag_values = {
39+ ":macos_loop" : "libuv" ,
40+ },
41+ visibility = ["//visibility:public" ],
42+ )
43+
44+ config_setting (
45+ name = "macos_cfrunloop_loop" ,
46+ constraint_values = ["@platforms//os:osx" ],
47+ flag_values = {
48+ ":macos_loop" : "cfrunloop" ,
49+ },
50+ visibility = ["//visibility:public" ],
51+ )
1752
1853filegroup (
1954 name = "macos_private_hdrs" ,
@@ -23,13 +58,13 @@ filegroup(
2358
2459filegroup (
2560 name = "macos_public_hdrs" ,
26- srcs = MLN_MACOS_PUBLIC_HEADERS + MLN_MACOS_PUBLIC_METAL_HEADERS ,
61+ srcs = MLN_MACOS_PUBLIC_HEADERS ,
2762 visibility = ["//visibility:public" ],
2863)
2964
3065filegroup (
3166 name = "macos_objcpp_srcs" ,
32- srcs = MLN_MACOS_PUBLIC_OBJCPP_SOURCE + MLN_MACOS_PUBLIC_OBJCPP_METAL_SOURCE ,
67+ srcs = MLN_MACOS_PUBLIC_OBJCPP_SOURCE ,
3368 visibility = ["//visibility:public" ],
3469)
3570
@@ -39,6 +74,93 @@ filegroup(
3974 visibility = ["//visibility:public" ],
4075)
4176
77+ info_plist (
78+ name = "info_plist" ,
79+ out = "Info.plist" ,
80+ base_info_plist = "framework/Info.plist" ,
81+ )
82+
83+ info_plist (
84+ name = "info_static_plist" ,
85+ out = "Info-static.plist" ,
86+ base_info_plist = "framework/Info-static.plist" ,
87+ )
88+
89+ genrule (
90+ name = "mln_defines" ,
91+ outs = ["MLNDefines.h" ],
92+ cmd = select ({
93+ "//:metal_renderer" : "echo '#define MLN_RENDER_BACKEND_METAL 1' > $@" ,
94+ "//conditions:default" : "echo '' > $@" ,
95+ }),
96+ )
97+
98+ public_hdrs = [
99+ ":mln_defines" ,
100+ ":macos_public_hdrs" ,
101+ "//platform/darwin:darwin_objc_hdrs" ,
102+ "//platform/darwin:generated_style_public_hdrs" ,
103+ ]
104+
105+ apple_bundle_version (
106+ name = "maplibre_macos_version" ,
107+ build_label_pattern = "maplibre_macos_{version}" ,
108+ build_version = "{version}" ,
109+ capture_groups = {
110+ "version" : "[0-9]+.[0-9]+.[0-9]+" ,
111+ },
112+ fallback_build_label = "maplibre_macos_1.2.3456789" ,
113+ short_version_string = "{version}" ,
114+ )
115+
116+ apple_resource_bundle (
117+ name = "resources" ,
118+ bundle_id = "com.maplibre.mapbox" ,
119+ bundle_name = "Mapbox" ,
120+ infoplists = ["info_static_plist" ],
121+ resources = glob ([
122+ "sdk/*.lproj/**" ,
123+ "sdk/*.pdf" ,
124+ ]),
125+ visibility = ["//visibility:public" ],
126+ )
127+
128+ apple_static_xcframework (
129+ name = "MapLibre.static" ,
130+ bundle_id = "com.maplibre.mapbox" ,
131+ bundle_name = "MapLibre" ,
132+ infoplists = ["info_static_plist" ],
133+ macos = [
134+ "x86_64" ,
135+ "arm64" ,
136+ ],
137+ minimum_os_versions = {"macos" : "13.0" },
138+ public_hdrs = public_hdrs ,
139+ version = ":maplibre_macos_version" ,
140+ visibility = ["//visibility:public" ],
141+ deps = ["//platform:macos-sdk" ],
142+ )
143+
144+ apple_xcframework (
145+ name = "MapLibre.dynamic" ,
146+ bundle_id = "com.maplibre.mapbox" ,
147+ bundle_name = "MapLibre" ,
148+ data = glob ([
149+ "sdk/*.lproj/**" ,
150+ "sdk/*.pdf" ,
151+ ]),
152+ infoplists = ["info_plist" ],
153+ macos = [
154+ "x86_64" ,
155+ "arm64" ,
156+ ],
157+ minimum_os_versions = {"macos" : "13.0" },
158+ public_hdrs = public_hdrs ,
159+ version = ":maplibre_macos_version" ,
160+ visibility = ["//visibility:public" ],
161+ deps = ["//platform:macos-sdk-dynamic" ],
162+ )
163+
42164macos_command_line_application (
43165 name = "MapLibreMac" ,
44166 minimum_deployment_os_version = "13.0" ,
@@ -78,7 +200,6 @@ exports_files(
78200 MLN_MACOS_PRIVATE_HEADERS +
79201 MLN_MACOS_PUBLIC_HEADERS +
80202 MLN_MACOS_PUBLIC_OBJCPP_SOURCE +
81- MLN_MACOS_PUBLIC_OBJCPP_METAL_SOURCE +
82203 MLN_MACOS_PUBLIC_OBJC_SOURCE ,
83204)
84205
0 commit comments