#!/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:]))