1*8975f5c5SAndroid Build Coastguard Worker# -*- bazel-starlark -*- 2*8975f5c5SAndroid Build Coastguard Worker# Copyright 2024 The Chromium Authors 3*8975f5c5SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 4*8975f5c5SAndroid Build Coastguard Worker# found in the LICENSE file. 5*8975f5c5SAndroid Build Coastguard Worker"""Siso configuration for mac sdk.""" 6*8975f5c5SAndroid Build Coastguard Worker 7*8975f5c5SAndroid Build Coastguard Workerload("@builtin//lib/gn.star", "gn") 8*8975f5c5SAndroid Build Coastguard Workerload("@builtin//runtime.star", "runtime") 9*8975f5c5SAndroid Build Coastguard Workerload("@builtin//struct.star", "module") 10*8975f5c5SAndroid Build Coastguard Workerload("./gn_logs.star", "gn_logs") 11*8975f5c5SAndroid Build Coastguard Worker 12*8975f5c5SAndroid Build Coastguard Workerdef __enabled(ctx): 13*8975f5c5SAndroid Build Coastguard Worker if "args.gn" in ctx.metadata: 14*8975f5c5SAndroid Build Coastguard Worker gn_args = gn.args(ctx) 15*8975f5c5SAndroid Build Coastguard Worker if gn_args.get("target_os") in ('"mac"', '"ios"'): 16*8975f5c5SAndroid Build Coastguard Worker return True 17*8975f5c5SAndroid Build Coastguard Worker return runtime.os == "darwin" 18*8975f5c5SAndroid Build Coastguard Worker 19*8975f5c5SAndroid Build Coastguard Workerdef __filegroups(ctx): 20*8975f5c5SAndroid Build Coastguard Worker sdk_includes = [ 21*8975f5c5SAndroid Build Coastguard Worker "*.framework", 22*8975f5c5SAndroid Build Coastguard Worker "*.h", 23*8975f5c5SAndroid Build Coastguard Worker "*.json", 24*8975f5c5SAndroid Build Coastguard Worker "*.modulemap", 25*8975f5c5SAndroid Build Coastguard Worker "Current", 26*8975f5c5SAndroid Build Coastguard Worker "Frameworks", 27*8975f5c5SAndroid Build Coastguard Worker "Headers", 28*8975f5c5SAndroid Build Coastguard Worker "Modules", 29*8975f5c5SAndroid Build Coastguard Worker "crt*.o", 30*8975f5c5SAndroid Build Coastguard Worker "usr/include/c++/v1/*", 31*8975f5c5SAndroid Build Coastguard Worker "usr/include/c++/v1/*/*", 32*8975f5c5SAndroid Build Coastguard Worker ] 33*8975f5c5SAndroid Build Coastguard Worker fg = { 34*8975f5c5SAndroid Build Coastguard Worker "build/mac_files/xcode_binaries/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk:headers": { 35*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 36*8975f5c5SAndroid Build Coastguard Worker "includes": sdk_includes, 37*8975f5c5SAndroid Build Coastguard Worker }, 38*8975f5c5SAndroid Build Coastguard Worker } 39*8975f5c5SAndroid Build Coastguard Worker if gn.args(ctx).get("use_remoteexec") == "true": 40*8975f5c5SAndroid Build Coastguard Worker # precompute subtree for sysroot/frameworks for siso scandeps, 41*8975f5c5SAndroid Build Coastguard Worker # which is not complex enough to handle C preprocessor tricks 42*8975f5c5SAndroid Build Coastguard Worker # and need system include dirs when using deps log of -MMD. 43*8975f5c5SAndroid Build Coastguard Worker # need to add new entries when new version is used. 44*8975f5c5SAndroid Build Coastguard Worker # 45*8975f5c5SAndroid Build Coastguard Worker # if use_remoteexec is not true, these dirs are not under exec root 46*8975f5c5SAndroid Build Coastguard Worker # and failed to create filegroup for such dirs. crbug.com/352216756 47*8975f5c5SAndroid Build Coastguard Worker gn_logs_data = gn_logs.read(ctx) 48*8975f5c5SAndroid Build Coastguard Worker if gn_logs_data.get("mac_sdk_path"): 49*8975f5c5SAndroid Build Coastguard Worker fg[ctx.fs.canonpath("./" + gn_logs_data.get("mac_sdk_path")) + ":headers"] = { 50*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 51*8975f5c5SAndroid Build Coastguard Worker "includes": sdk_includes, 52*8975f5c5SAndroid Build Coastguard Worker } 53*8975f5c5SAndroid Build Coastguard Worker fg[ctx.fs.canonpath("./" + gn_logs_data.get("mac_sdk_path")) + ":link"] = { 54*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 55*8975f5c5SAndroid Build Coastguard Worker "includes": [ 56*8975f5c5SAndroid Build Coastguard Worker "*.framework", 57*8975f5c5SAndroid Build Coastguard Worker "*.o", 58*8975f5c5SAndroid Build Coastguard Worker "*.tbd", 59*8975f5c5SAndroid Build Coastguard Worker "Current", 60*8975f5c5SAndroid Build Coastguard Worker "Frameworks", 61*8975f5c5SAndroid Build Coastguard Worker ], 62*8975f5c5SAndroid Build Coastguard Worker } 63*8975f5c5SAndroid Build Coastguard Worker if gn_logs_data.get("ios_sdk_path"): 64*8975f5c5SAndroid Build Coastguard Worker fg[ctx.fs.canonpath("./" + gn_logs_data.get("ios_sdk_path")) + ":headers"] = { 65*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 66*8975f5c5SAndroid Build Coastguard Worker "includes": sdk_includes, 67*8975f5c5SAndroid Build Coastguard Worker } 68*8975f5c5SAndroid Build Coastguard Worker 69*8975f5c5SAndroid Build Coastguard Worker fg[ctx.fs.canonpath("./sdk/xcode_links/iPhoneSimulator.platform/Developer/Library/Frameworks") + ":headers"] = { 70*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 71*8975f5c5SAndroid Build Coastguard Worker "includes": sdk_includes, 72*8975f5c5SAndroid Build Coastguard Worker } 73*8975f5c5SAndroid Build Coastguard Worker return fg 74*8975f5c5SAndroid Build Coastguard Worker 75*8975f5c5SAndroid Build Coastguard Workermac_sdk = module( 76*8975f5c5SAndroid Build Coastguard Worker "mac_sdk", 77*8975f5c5SAndroid Build Coastguard Worker enabled = __enabled, 78*8975f5c5SAndroid Build Coastguard Worker filegroups = __filegroups, 79*8975f5c5SAndroid Build Coastguard Worker) 80