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", ) 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_METAL_SOURCE", "MLN_IOS_PUBLIC_OBJCPP_OPENGL_SOURCE", "MLN_IOS_PUBLIC_OBJCPP_SOURCE", "MLN_IOS_PUBLIC_OBJC_SOURCE", "MLN_IOS_SDK_HEADERS", "MLN_PUBLIC_IOS_APP_SOPURCE", ) load("//platform/ios/bazel:macros.bzl", "info_plist") 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"], ) # this can be removed once the legacy renderer is removed completely for iOS genrule( name = "umbrella_header", srcs = ["src/Mapbox.template.h"], outs = ["src/Mapbox.h"], cmd = select({ "//:metal_renderer": """ echo "#define MLN_RENDER_BACKEND_METAL 1" > $@; cat $(location src/Mapbox.template.h) >> $@; """, "//conditions:default": "cat $(location src/Mapbox.template.h) >> $@", }), ) filegroup( name = "ios_public_hdrs", srcs = MLN_IOS_PUBLIC_HEADERS + [":umbrella_header"], 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", ) 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", ] apple_static_xcframework( name = "MapLibre.static", bundle_name = "MapLibre", ios = { "simulator": [ "x86_64", "arm64", ], "device": ["arm64"], }, minimum_os_versions = {"ios": "12.0"}, public_hdrs = public_hdrs, umbrella_header = "umbrella_header", 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 = public_hdrs, umbrella_header = "umbrella_header", 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", ], ) 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, )