xref: /aosp_15_r20/external/bazelbuild-rules_go/go/platform/apple.bzl (revision 9bb1b549b6a84214c53be0924760be030e66b93a)
1*9bb1b549SSpandan Das# Copyright 2018 The Bazel Authors. All rights reserved.
2*9bb1b549SSpandan Das#
3*9bb1b549SSpandan Das# Licensed under the Apache License, Version 2.0 (the "License");
4*9bb1b549SSpandan Das# you may not use this file except in compliance with the License.
5*9bb1b549SSpandan Das# You may obtain a copy of the License at
6*9bb1b549SSpandan Das#
7*9bb1b549SSpandan Das#    http://www.apache.org/licenses/LICENSE-2.0
8*9bb1b549SSpandan Das#
9*9bb1b549SSpandan Das# Unless required by applicable law or agreed to in writing, software
10*9bb1b549SSpandan Das# distributed under the License is distributed on an "AS IS" BASIS,
11*9bb1b549SSpandan Das# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*9bb1b549SSpandan Das# See the License for the specific language governing permissions and
13*9bb1b549SSpandan Das# limitations under the License.
14*9bb1b549SSpandan Das
15*9bb1b549SSpandan Das_PLATFORMS = {
16*9bb1b549SSpandan Das    "armv7-apple-ios": (apple_common.platform.ios_device, apple_common.platform_type.ios),
17*9bb1b549SSpandan Das    "armv7-apple-tvos": (apple_common.platform.tvos_device, apple_common.platform_type.tvos),
18*9bb1b549SSpandan Das    "armv7k-apple-watchos": (apple_common.platform.watchos_device, apple_common.platform_type.watchos),
19*9bb1b549SSpandan Das    "arm64-apple-ios": (apple_common.platform.ios_device, apple_common.platform_type.ios),
20*9bb1b549SSpandan Das    "arm64-apple-tvos": (apple_common.platform.tvos_device, apple_common.platform_type.tvos),
21*9bb1b549SSpandan Das    "i386-apple-ios": (apple_common.platform.ios_simulator, apple_common.platform_type.ios),
22*9bb1b549SSpandan Das    "i386-apple-tvos": (apple_common.platform.tvos_simulator, apple_common.platform_type.tvos),
23*9bb1b549SSpandan Das    "i386-apple-watchos": (apple_common.platform.watchos_simulator, apple_common.platform_type.watchos),
24*9bb1b549SSpandan Das    "x86_64-apple-ios": (apple_common.platform.ios_simulator, apple_common.platform_type.ios),
25*9bb1b549SSpandan Das    "x86_64-apple-tvos": (apple_common.platform.ios_simulator, apple_common.platform_type.tvos),
26*9bb1b549SSpandan Das    "x86_64-apple-watchos": (apple_common.platform.watchos_simulator, apple_common.platform_type.watchos),
27*9bb1b549SSpandan Das}
28*9bb1b549SSpandan Das
29*9bb1b549SSpandan Dasdef _apple_version_min(ctx, platform, platform_type):
30*9bb1b549SSpandan Das    xcode_config = ctx.attr._xcode_config[apple_common.XcodeVersionConfig]
31*9bb1b549SSpandan Das    min_os = str(xcode_config.minimum_os_for_platform_type(platform_type))
32*9bb1b549SSpandan Das    return "-m{}-version-min={}".format(platform.name_in_plist.lower(), min_os)
33*9bb1b549SSpandan Das
34*9bb1b549SSpandan Dasdef _apple_env(ctx, platform):
35*9bb1b549SSpandan Das    xcode_config = ctx.attr._xcode_config[apple_common.XcodeVersionConfig]
36*9bb1b549SSpandan Das    return apple_common.target_apple_env(xcode_config, platform)
37*9bb1b549SSpandan Das
38*9bb1b549SSpandan Dasdef apple_ensure_options(ctx, env, _tags, compiler_option_lists, linker_option_lists, target_gnu_system_name):
39*9bb1b549SSpandan Das    """Returns environment, flags, and Go tags for Apple targets."""
40*9bb1b549SSpandan Das    platform, platform_type = _PLATFORMS.get(target_gnu_system_name, (None, None))
41*9bb1b549SSpandan Das    if not platform:
42*9bb1b549SSpandan Das        return
43*9bb1b549SSpandan Das    env.update(_apple_env(ctx, platform))
44*9bb1b549SSpandan Das    min_version = _apple_version_min(ctx, platform, platform_type)
45*9bb1b549SSpandan Das    for compiler_options in compiler_option_lists:
46*9bb1b549SSpandan Das        compiler_options.append(min_version)
47*9bb1b549SSpandan Das    for linker_options in linker_option_lists:
48*9bb1b549SSpandan Das        linker_options.append(min_version)
49