332 lines
8.4 KiB
Python
332 lines
8.4 KiB
Python
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")
|
|
load(
|
|
"@rules_xcodeproj//xcodeproj:defs.bzl",
|
|
"top_level_target",
|
|
"xcodeproj",
|
|
"xcode_schemes",
|
|
)
|
|
load("//platform/ios/bazel:macros.bzl", "info_plist")
|
|
load("//platform/ios/bazel:config.bzl", "BUILD_MODE", "BUNDLE_ID_PREFIX")
|
|
load(
|
|
"//platform/ios/bazel:files.bzl",
|
|
"MLN_IOS_PRIVATE_HEADERS",
|
|
"MLN_IOS_PUBLIC_HEADERS",
|
|
"MLN_IOS_PUBLIC_OBJCPP_SOURCE",
|
|
"MLN_IOS_PUBLIC_OBJCPP_OPENGL_SOURCE",
|
|
"MLN_IOS_PUBLIC_OBJCPP_METAL_SOURCE",
|
|
"MLN_IOS_PUBLIC_OBJC_SOURCE",
|
|
"MLN_IOS_SDK_HEADERS",
|
|
"MLN_PUBLIC_IOS_APP_SOPURCE",
|
|
)
|
|
load("//platform/ios/bazel:provisioning.bzl", "configure_device_profiles")
|
|
|
|
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 + select({
|
|
"//:metal_renderer": MLN_IOS_PUBLIC_OBJCPP_METAL_SOURCE,
|
|
"//conditions:default": MLN_IOS_PUBLIC_OBJCPP_OPENGL_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"],
|
|
)
|
|
|
|
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",
|
|
)
|
|
|
|
info_plist(
|
|
name = "info_app_plist",
|
|
out = "Info-app.plist",
|
|
base_info_plist = "app/Info.plist",
|
|
)
|
|
|
|
apple_static_xcframework(
|
|
name = "MapLibre.static",
|
|
bundle_name = "MapLibre",
|
|
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",
|
|
] + select({
|
|
"//:metal_renderer": [],
|
|
"//conditions:default": [],
|
|
}),
|
|
umbrella_header = "src/Mapbox.h",
|
|
visibility = ["//visibility:public"],
|
|
deps = ["//platform:ios-sdk"],
|
|
)
|
|
|
|
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",
|
|
] + select({
|
|
"//:metal_renderer": [],
|
|
"//conditions:default": [],
|
|
}),
|
|
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/**",
|
|
]),
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
_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 = "{}.maplibre.app".format(BUNDLE_ID_PREFIX),
|
|
families = [
|
|
"iphone",
|
|
"ipad",
|
|
],
|
|
infoplists = ["info_app_plist"],
|
|
minimum_os_version = "12.0",
|
|
provisioning_profile = "xcode_profile",
|
|
resources = _IOS_APPLICATION_RESOURCES,
|
|
visibility = ["//visibility:public"],
|
|
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"],
|
|
deps = [
|
|
"//platform:iosapp",
|
|
],
|
|
)
|
|
|
|
ios_application(
|
|
name = "BenchmarkApp",
|
|
bundle_id = "{}.benchmark.app".format(BUNDLE_ID_PREFIX),
|
|
families = [
|
|
"iphone",
|
|
"ipad",
|
|
],
|
|
infoplists = ["//platform/ios/benchmark:info_benchmark_plist"],
|
|
minimum_os_version = "12.0",
|
|
provisioning_profile = "xcode_profile",
|
|
resources = ["//platform/ios/benchmark:bundle_resources"],
|
|
visibility = ["//visibility:public"],
|
|
deps = [
|
|
"//platform:ios-benchapp",
|
|
"//platform:ios-sdk",
|
|
],
|
|
)
|
|
|
|
# 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"],
|
|
top_level_targets = [
|
|
top_level_target(
|
|
"App",
|
|
target_environments = [
|
|
"simulator",
|
|
"device",
|
|
],
|
|
),
|
|
top_level_target(
|
|
"BenchmarkApp",
|
|
target_environments = [
|
|
"simulator",
|
|
"device",
|
|
],
|
|
),
|
|
top_level_target(
|
|
"//render-test/ios:RenderTest",
|
|
target_environments = [
|
|
"simulator",
|
|
"device",
|
|
],
|
|
),
|
|
top_level_target(
|
|
"//platform/ios/iosapp-UITests:uitest",
|
|
target_environments = [
|
|
"simulator",
|
|
"device",
|
|
],
|
|
),
|
|
top_level_target(
|
|
"//platform/ios/test:ios_test",
|
|
target_environments = [
|
|
"simulator",
|
|
"device",
|
|
],
|
|
),
|
|
top_level_target(
|
|
"//platform/ios/test/core:CppUnitTests",
|
|
target_environments = [
|
|
"simulator",
|
|
"device",
|
|
],
|
|
),
|
|
],
|
|
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",
|
|
"framework/Info.plist",
|
|
"framework/Info-static.plist",
|
|
"//platform/ios/benchmark:Info.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_OBJCPP_METAL_SOURCE +
|
|
MLN_IOS_PUBLIC_OBJCPP_OPENGL_SOURCE +
|
|
MLN_IOS_PUBLIC_OBJC_SOURCE +
|
|
MLN_PUBLIC_IOS_APP_SOPURCE
|
|
)
|