|  | #!/usr/bin/env python3 | 
|  | # Copyright (C) 2021 The Android Open Source Project | 
|  | # | 
|  | # Licensed under the Apache License, Version 2.0 (the "License"); | 
|  | # you may not use this file except in compliance with the License. | 
|  | # You may obtain a copy of the License at | 
|  | # | 
|  | #      http://www.apache.org/licenses/LICENSE-2.0 | 
|  | # | 
|  | # Unless required by applicable law or agreed to in writing, software | 
|  | # distributed under the License is distributed on an "AS IS" BASIS, | 
|  | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | # See the License for the specific language governing permissions and | 
|  | # limitations under the License. | 
|  | """ A wrapper to run gn, ninja and other buildtools/ for all platforms. """ | 
|  |  | 
|  | from __future__ import print_function | 
|  |  | 
|  | import os | 
|  | import subprocess | 
|  | import sys | 
|  |  | 
|  | from platform import system, machine | 
|  |  | 
|  | ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | 
|  |  | 
|  |  | 
|  | def run_buildtools_binary(args): | 
|  | if len(args) < 1: | 
|  | print('Usage %s command [args]\n' % sys.argv[0]) | 
|  | return 1 | 
|  |  | 
|  | sys_name = system().lower() | 
|  | os_dir = None | 
|  | ext = '' | 
|  | if sys_name == 'windows': | 
|  | os_dir = 'win' | 
|  | ext = '.exe' | 
|  | elif sys_name == 'darwin': | 
|  | os_dir = 'mac' | 
|  | elif sys_name == 'linux': | 
|  | os_dir = 'linux64' | 
|  | else: | 
|  | print('OS not supported: %s\n' % sys_name) | 
|  | return 1 | 
|  |  | 
|  | cmd = args[0] | 
|  | args = args[1:] | 
|  | exe_path = os.path.join(ROOT_DIR, 'buildtools', os_dir, cmd) + ext | 
|  | if sys_name == 'windows': | 
|  | # execl() behaves oddly on Windows: the spawned process doesn't seem to | 
|  | # receive CTRL+C. Use subprocess instead. | 
|  | return subprocess.call([exe_path] + args) | 
|  | else: | 
|  | os.execl(exe_path, os.path.basename(exe_path), *args) | 
|  |  | 
|  |  | 
|  | if __name__ == '__main__': | 
|  | sys.exit(run_buildtools_binary(sys.argv[1:])) |