1# Copyright 2013 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"""A module to add gyp support to cr.""" 6 7import cr 8import os 9 10GYP_DEFINE_PREFIX = 'GYP_DEF_' 11 12class GypPrepareOut(cr.PrepareOut): 13 """A prepare action that runs gyp whenever you select an output directory.""" 14 15 ENABLED = cr.Config.From( 16 GYP_GENERATORS='ninja', 17 GYP_GENERATOR_FLAGS='output_dir={CR_OUT_BASE} config={CR_BUILDTYPE}', 18 GYP_DEF_target_arch='{CR_ENVSETUP_ARCH}', 19 ) 20 21 def UpdateContext(self): 22 # Collapse GYP_DEFINES from all GYP_DEF prefixes 23 gyp_defines = cr.context.Find('GYP_DEFINES') or '' 24 for key, value in cr.context.exported.items(): 25 if key.startswith(GYP_DEFINE_PREFIX): 26 gyp_defines += ' %s=%s' % (key[len(GYP_DEFINE_PREFIX):], value) 27 cr.context['GYP_DEFINES'] = gyp_defines.strip() 28 if cr.context.verbose >= 1: 29 print cr.context.Substitute('GYP_DEFINES = {GYP_DEFINES}') 30 31 def Prepare(self): 32 if cr.context.verbose >= 1: 33 print cr.context.Substitute('Invoking gyp with {GYP_GENERATOR_FLAGS}') 34 35 cr.Host.Execute( 36 '{CR_SRC}/build/gyp_chromium', 37 '--depth={CR_SRC}', 38 '--check' 39 ) 40