1# Copyright 2014 The Chromium Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5"""Helper script for GN to run an arbitrary binary. See compiled_action.gni. 6 7Run with: 8 python gn_run_binary.py <binary_name> [args ...] 9""" 10 11import subprocess 12import sys 13 14# This script is designed to run binaries produced by the current build. We 15# always prefix it with "./" to avoid picking up system versions that might 16# also be on the path. 17path = './' + sys.argv[1] 18 19# The rest of the arguments are passed directly to the executable. 20args = [path] + sys.argv[2:] 21 22ret = subprocess.call(args) 23if ret != 0: 24 if ret <= -100: 25 # Windows error codes such as 0xC0000005 and 0xC0000409 are much easier to 26 # recognize and differentiate in hex. In order to print them as unsigned 27 # hex we need to add 4 Gig to them. 28 print '%s failed with exit code 0x%08X' % (sys.argv[1], ret + (1 << 32)) 29 else: 30 print '%s failed with exit code %d' % (sys.argv[1], ret) 31sys.exit(ret) 32