xref: /aosp_15_r20/external/angle/build/toolchain/use_siso_default.py (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker#!/usr/bin/env python3
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"""Script to decide use_siso default value.
6*8975f5c5SAndroid Build Coastguard Worker
7*8975f5c5SAndroid Build Coastguard WorkerIt is called by siso.gni via exec_script,
8*8975f5c5SAndroid Build Coastguard Workeror used in depot_tools' autoninja or siso wrapper.
9*8975f5c5SAndroid Build Coastguard Worker"""
10*8975f5c5SAndroid Build Coastguard Worker# TODO(crbug.com/379584977): move this to depot_tools once `use_siso`
11*8975f5c5SAndroid Build Coastguard Worker# is not used for build graph.
12*8975f5c5SAndroid Build Coastguard Worker
13*8975f5c5SAndroid Build Coastguard Workerimport os
14*8975f5c5SAndroid Build Coastguard Workerimport shutil
15*8975f5c5SAndroid Build Coastguard Workerimport sys
16*8975f5c5SAndroid Build Coastguard Worker
17*8975f5c5SAndroid Build Coastguard Worker
18*8975f5c5SAndroid Build Coastguard Workerdef _is_google_corp_machine():
19*8975f5c5SAndroid Build Coastguard Worker  """This assumes that corp machine has gcert binary in known location."""
20*8975f5c5SAndroid Build Coastguard Worker  return shutil.which("gcert") is not None
21*8975f5c5SAndroid Build Coastguard Worker
22*8975f5c5SAndroid Build Coastguard Worker
23*8975f5c5SAndroid Build Coastguard Workerdef use_siso_default(output_dir):
24*8975f5c5SAndroid Build Coastguard Worker  """Returns use_siso default value."""
25*8975f5c5SAndroid Build Coastguard Worker  # This output directory is already using Siso.
26*8975f5c5SAndroid Build Coastguard Worker  if os.path.exists(os.path.join(output_dir, ".siso_deps")):
27*8975f5c5SAndroid Build Coastguard Worker    return True
28*8975f5c5SAndroid Build Coastguard Worker
29*8975f5c5SAndroid Build Coastguard Worker  # This output directory is already using Ninja.
30*8975f5c5SAndroid Build Coastguard Worker  if os.path.exists(os.path.join(output_dir, ".ninja_deps")):
31*8975f5c5SAndroid Build Coastguard Worker    return False
32*8975f5c5SAndroid Build Coastguard Worker
33*8975f5c5SAndroid Build Coastguard Worker  # If no .sisoenv, use Ninja.
34*8975f5c5SAndroid Build Coastguard Worker  if not os.path.exists(
35*8975f5c5SAndroid Build Coastguard Worker      os.path.join(os.path.dirname(__file__), "../config/siso/.sisoenv")):
36*8975f5c5SAndroid Build Coastguard Worker    return False
37*8975f5c5SAndroid Build Coastguard Worker
38*8975f5c5SAndroid Build Coastguard Worker  # Use Siso by default for Googlers working on corp machine.
39*8975f5c5SAndroid Build Coastguard Worker  if _is_google_corp_machine():
40*8975f5c5SAndroid Build Coastguard Worker    return True
41*8975f5c5SAndroid Build Coastguard Worker
42*8975f5c5SAndroid Build Coastguard Worker  # Otherwise, use Ninja, until we are ready to roll it out
43*8975f5c5SAndroid Build Coastguard Worker  # on non-corp machines, too.
44*8975f5c5SAndroid Build Coastguard Worker  # TODO(378078715): enable True by default.
45*8975f5c5SAndroid Build Coastguard Worker  return False
46*8975f5c5SAndroid Build Coastguard Worker
47*8975f5c5SAndroid Build Coastguard Worker
48*8975f5c5SAndroid Build Coastguard Workerif __name__ == "__main__":
49*8975f5c5SAndroid Build Coastguard Worker  # exec_script runs in output directory.
50*8975f5c5SAndroid Build Coastguard Worker  print(str(use_siso_default(".")).lower())
51