blob: 950a992d81bf520de24423edfef4a1693ddec59e [file] [log] [blame]
#!/usr/bin/python
# Copyright (c) 2011 The Native Client Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import re
def LoadGypFile(gyp_filename):
"""Load the contents of a gyp file.
Arguments:
filename: filename of a .gyp file.
Returns:
Raw dict from .gyp file.
"""
return eval(open(gyp_filename).read(), {}, {})
def IgnoreVariables(name):
"""E.g. map ppapi_cpp<(nacl_ppapi_library_suffix) to ppapi_cpp."""
return re.sub('\<\([^)]*\)$', '', name)
def GypTargetSources(gyp_data, target_name, pattern):
"""Extract a sources from a target matching a given pattern.
Arguments:
gyp_data: dict previously load by LoadGypFile.
target_name: target to extract from.
pattern: re pattern that sources must match.
Returns:
A list of strings containing source filenames.
"""
targets = [target for target in gyp_data['targets']
if IgnoreVariables(target['target_name']) == target_name]
# Only one target should have this name.
assert len(targets) == 1
desired_target = targets[0]
# Extract source files that match.
re_compiled = re.compile(pattern)
return [source_file for source_file in desired_target['sources']
if re_compiled.match(source_file)]