15db71995Sopenharmony_ci#!/usr/bin/env python3 25db71995Sopenharmony_ci# Copyright 2023 The Khronos Group Inc. 35db71995Sopenharmony_ci# Copyright 2023 Valve Corporation 45db71995Sopenharmony_ci# Copyright 2023 LunarG, Inc. 55db71995Sopenharmony_ci# 65db71995Sopenharmony_ci# SPDX-License-Identifier: Apache-2.0 75db71995Sopenharmony_ci 85db71995Sopenharmony_ciimport os 95db71995Sopenharmony_ciimport subprocess 105db71995Sopenharmony_ciimport sys 115db71995Sopenharmony_ci 125db71995Sopenharmony_ci# helper to define paths relative to the repo root 135db71995Sopenharmony_cidef RepoRelative(path): 145db71995Sopenharmony_ci return os.path.abspath(os.path.join(os.path.dirname(__file__), '../../', path)) 155db71995Sopenharmony_ci 165db71995Sopenharmony_cidef BuildGn(): 175db71995Sopenharmony_ci if not os.path.exists(RepoRelative("depot_tools")): 185db71995Sopenharmony_ci print("Cloning Chromium depot_tools\n", flush=True) 195db71995Sopenharmony_ci clone_cmd = 'git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git depot_tools'.split(" ") 205db71995Sopenharmony_ci subprocess.call(clone_cmd) 215db71995Sopenharmony_ci 225db71995Sopenharmony_ci os.environ['PATH'] = os.environ.get('PATH') + ":" + RepoRelative("depot_tools") 235db71995Sopenharmony_ci 245db71995Sopenharmony_ci print("Updating Repo Dependencies and GN Toolchain\n", flush=True) 255db71995Sopenharmony_ci update_cmd = './scripts/gn/update_deps.sh' 265db71995Sopenharmony_ci subprocess.call(update_cmd) 275db71995Sopenharmony_ci 285db71995Sopenharmony_ci print("Checking Header Dependencies\n", flush=True) 295db71995Sopenharmony_ci gn_check_cmd = 'gn gen --check out/Debug'.split(" ") 305db71995Sopenharmony_ci subprocess.call(gn_check_cmd) 315db71995Sopenharmony_ci 325db71995Sopenharmony_ci print("Generating Ninja Files\n", flush=True) 335db71995Sopenharmony_ci gn_gen_cmd = 'gn gen out/Debug'.split(" ") 345db71995Sopenharmony_ci subprocess.call(gn_gen_cmd) 355db71995Sopenharmony_ci 365db71995Sopenharmony_ci print("Running Ninja Build\n", flush=True) 375db71995Sopenharmony_ci ninja_build_cmd = 'ninja -C out/Debug'.split(" ") 385db71995Sopenharmony_ci subprocess.call(ninja_build_cmd) 395db71995Sopenharmony_ci 405db71995Sopenharmony_ci# 415db71995Sopenharmony_ci# Module Entrypoint 425db71995Sopenharmony_cidef main(): 435db71995Sopenharmony_ci try: 445db71995Sopenharmony_ci BuildGn() 455db71995Sopenharmony_ci 465db71995Sopenharmony_ci except subprocess.CalledProcessError as proc_error: 475db71995Sopenharmony_ci print('Command "%s" failed with return code %s' % (' '.join(proc_error.cmd), proc_error.returncode)) 485db71995Sopenharmony_ci sys.exit(proc_error.returncode) 495db71995Sopenharmony_ci except Exception as unknown_error: 505db71995Sopenharmony_ci print('An unkown error occured: %s', unknown_error) 515db71995Sopenharmony_ci sys.exit(1) 525db71995Sopenharmony_ci 535db71995Sopenharmony_ci sys.exit(0) 545db71995Sopenharmony_ci 555db71995Sopenharmony_ciif __name__ == '__main__': 565db71995Sopenharmony_ci main() 57