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