1*635a8641SAndroid Build Coastguard Worker# Copyright (c) 2012 The Chromium Authors. All rights reserved. 2*635a8641SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 3*635a8641SAndroid Build Coastguard Worker# found in the LICENSE file. 4*635a8641SAndroid Build Coastguard Worker 5*635a8641SAndroid Build Coastguard Worker# This file helps gyp_chromium and landmines correctly set up the gyp 6*635a8641SAndroid Build Coastguard Worker# environment from chromium.gyp_env on disk 7*635a8641SAndroid Build Coastguard Worker 8*635a8641SAndroid Build Coastguard Workerimport os 9*635a8641SAndroid Build Coastguard Worker 10*635a8641SAndroid Build Coastguard WorkerSCRIPT_DIR = os.path.dirname(os.path.realpath(__file__)) 11*635a8641SAndroid Build Coastguard WorkerCHROME_SRC = os.path.dirname(SCRIPT_DIR) 12*635a8641SAndroid Build Coastguard Worker 13*635a8641SAndroid Build Coastguard Worker 14*635a8641SAndroid Build Coastguard Workerdef apply_gyp_environment_from_file(file_path): 15*635a8641SAndroid Build Coastguard Worker """Reads in a *.gyp_env file and applies the valid keys to os.environ.""" 16*635a8641SAndroid Build Coastguard Worker if not os.path.exists(file_path): 17*635a8641SAndroid Build Coastguard Worker return 18*635a8641SAndroid Build Coastguard Worker with open(file_path, 'rU') as f: 19*635a8641SAndroid Build Coastguard Worker file_contents = f.read() 20*635a8641SAndroid Build Coastguard Worker try: 21*635a8641SAndroid Build Coastguard Worker file_data = eval(file_contents, {'__builtins__': None}, None) 22*635a8641SAndroid Build Coastguard Worker except SyntaxError as e: 23*635a8641SAndroid Build Coastguard Worker e.filename = os.path.abspath(file_path) 24*635a8641SAndroid Build Coastguard Worker raise 25*635a8641SAndroid Build Coastguard Worker supported_vars = ( 26*635a8641SAndroid Build Coastguard Worker 'CC', 27*635a8641SAndroid Build Coastguard Worker 'CC_wrapper', 28*635a8641SAndroid Build Coastguard Worker 'CC.host_wrapper', 29*635a8641SAndroid Build Coastguard Worker 'CHROMIUM_GYP_FILE', 30*635a8641SAndroid Build Coastguard Worker 'CHROMIUM_GYP_SYNTAX_CHECK', 31*635a8641SAndroid Build Coastguard Worker 'CXX', 32*635a8641SAndroid Build Coastguard Worker 'CXX_wrapper', 33*635a8641SAndroid Build Coastguard Worker 'CXX.host_wrapper', 34*635a8641SAndroid Build Coastguard Worker 'GYP_DEFINES', 35*635a8641SAndroid Build Coastguard Worker 'GYP_GENERATOR_FLAGS', 36*635a8641SAndroid Build Coastguard Worker 'GYP_CROSSCOMPILE', 37*635a8641SAndroid Build Coastguard Worker 'GYP_GENERATOR_OUTPUT', 38*635a8641SAndroid Build Coastguard Worker 'GYP_GENERATORS', 39*635a8641SAndroid Build Coastguard Worker 'GYP_INCLUDE_FIRST', 40*635a8641SAndroid Build Coastguard Worker 'GYP_INCLUDE_LAST', 41*635a8641SAndroid Build Coastguard Worker 'GYP_MSVS_VERSION', 42*635a8641SAndroid Build Coastguard Worker ) 43*635a8641SAndroid Build Coastguard Worker for var in supported_vars: 44*635a8641SAndroid Build Coastguard Worker file_val = file_data.get(var) 45*635a8641SAndroid Build Coastguard Worker if file_val: 46*635a8641SAndroid Build Coastguard Worker if var in os.environ: 47*635a8641SAndroid Build Coastguard Worker behavior = 'replaces' 48*635a8641SAndroid Build Coastguard Worker if var == 'GYP_DEFINES': 49*635a8641SAndroid Build Coastguard Worker result = file_val + ' ' + os.environ[var] 50*635a8641SAndroid Build Coastguard Worker behavior = 'merges with, and individual components override,' 51*635a8641SAndroid Build Coastguard Worker else: 52*635a8641SAndroid Build Coastguard Worker result = os.environ[var] 53*635a8641SAndroid Build Coastguard Worker print('INFO: Environment value for "%s" %s value in %s' % ( 54*635a8641SAndroid Build Coastguard Worker var, behavior, os.path.abspath(file_path) 55*635a8641SAndroid Build Coastguard Worker )) 56*635a8641SAndroid Build Coastguard Worker string_padding = max(len(var), len(file_path), len('result')) 57*635a8641SAndroid Build Coastguard Worker print(' %s: %s' % (var.rjust(string_padding), os.environ[var])) 58*635a8641SAndroid Build Coastguard Worker print(' %s: %s' % (file_path.rjust(string_padding), file_val)) 59*635a8641SAndroid Build Coastguard Worker os.environ[var] = result 60*635a8641SAndroid Build Coastguard Worker else: 61*635a8641SAndroid Build Coastguard Worker os.environ[var] = file_val 62*635a8641SAndroid Build Coastguard Worker 63*635a8641SAndroid Build Coastguard Worker 64*635a8641SAndroid Build Coastguard Workerdef apply_chromium_gyp_env(): 65*635a8641SAndroid Build Coastguard Worker if 'SKIP_CHROMIUM_GYP_ENV' not in os.environ: 66*635a8641SAndroid Build Coastguard Worker # Update the environment based on chromium.gyp_env 67*635a8641SAndroid Build Coastguard Worker path = os.path.join(os.path.dirname(CHROME_SRC), 'chromium.gyp_env') 68*635a8641SAndroid Build Coastguard Worker apply_gyp_environment_from_file(path) 69