| Index: site_scons/site_tools/chromium_builders.py | 
| =================================================================== | 
| --- site_scons/site_tools/chromium_builders.py	(revision 7407) | 
| +++ site_scons/site_tools/chromium_builders.py	(working copy) | 
| @@ -8,54 +8,110 @@ | 
| customization we need to make to the different things we build. | 
| """ | 
|  | 
| +import SCons.Node | 
| +import _Node_MSVS as MSVS | 
| + | 
| +class Null(object): | 
| +  def __new__(cls, *args, **kwargs): | 
| +    if '_inst' not in vars(cls): | 
| +      cls._inst = super(type, cls).__new__(cls, *args, **kwargs) | 
| +    return cls._inst | 
| +  def __init__(self, *args, **kwargs): pass | 
| +  def __call__(self, *args, **kwargs): return self | 
| +  def __repr__(self): return "Null()" | 
| +  def __nonzero__(self): return False | 
| +  def __getattr__(self, name): return self | 
| +  def __setattr__(self, name, val): return self | 
| +  def __delattr__(self, name): return self | 
| +  def __getitem__(self, name): return self | 
| + | 
| +class ChromeFileList(MSVS.FileList): | 
| +  def Append(self, *args): | 
| +    for element in args: | 
| +      self.append(element) | 
| +  def Extend(self, *args): | 
| +    for element in args: | 
| +      self.extend(element) | 
| +  def Remove(self, *args): | 
| +    for top, lists, nonlists in MSVS.FileListWalk(self, topdown=False): | 
| +      for element in args: | 
| +        try: | 
| +          top.remove(element) | 
| +        except ValueError: | 
| +          pass | 
| +  def Replace(self, old, new): | 
| +    for top, lists, nonlists in MSVS.FileListWalk(self, topdown=False): | 
| +      try: | 
| +        i = top.index(old) | 
| +      except ValueError: | 
| +        pass | 
| +      else: | 
| +        top[i] = new | 
| + | 
| +import __builtin__ | 
| +__builtin__.ChromeFileList = ChromeFileList | 
| + | 
| +def compilable_files(sources): | 
| +  if not hasattr(sources, 'entries'): | 
| +    return [x for x in sources if not str(x).endswith('.h')] | 
| +  result = [] | 
| +  for top, folders, nonfolders in MSVS.FileListWalk(sources): | 
| +    result.extend([x for x in nonfolders if not str(x).endswith('.h')]) | 
| +  return result | 
| + | 
| +def ChromeProgram(env, target, source, *args, **kw): | 
| +  source = compilable_files(source) | 
| +  result = env.ComponentProgram(target, source, *args, **kw) | 
| +  if env.get('INCREMENTAL'): | 
| +    env.Precious(result) | 
| +  return result | 
| + | 
| +def ChromeTestProgram(env, target, source, *args, **kw): | 
| +  source = compilable_files(source) | 
| +  result = env.ComponentTestProgram(target, source, *args, **kw) | 
| +  if env.get('INCREMENTAL'): | 
| +    env.Precious(*result) | 
| +  return result | 
| + | 
| +def ChromeStaticLibrary(env, target, source, *args, **kw): | 
| +  source = compilable_files(source) | 
| +  kw['COMPONENT_STATIC'] = True | 
| +  return env.ComponentLibrary(target, source, *args, **kw) | 
| + | 
| +def ChromeSharedLibrary(env, target, source, *args, **kw): | 
| +  source = compilable_files(source) | 
| +  kw['COMPONENT_STATIC'] = False | 
| +  result = [env.ComponentLibrary(target, source, *args, **kw)[0]] | 
| +  if env.get('INCREMENTAL'): | 
| +    env.Precious(result) | 
| +  return result | 
| + | 
| +def ChromeObject(env, *args, **kw): | 
| +  return env.ComponentObject(*args, **kw) | 
| + | 
| +def ChromeMSVSFolder(env, *args, **kw): | 
| +  if not env.Bit('msvs'): | 
| +    return Null() | 
| +  return env.MSVSFolder(*args, **kw) | 
| + | 
| +def ChromeMSVSProject(env, *args, **kw): | 
| +  if not env.Bit('msvs'): | 
| +    return Null() | 
| +  return env.MSVSProject(*args, **kw) | 
| + | 
| +def ChromeMSVSSolution(env, *args, **kw): | 
| +  if not env.Bit('msvs'): | 
| +    return Null() | 
| +  return env.MSVSSolution(*args, **kw) | 
| + | 
| def generate(env): | 
| -  def ChromeProgram(env, *args, **kw): | 
| -    result = env.ComponentProgram(*args, **kw) | 
| -    if env.get('INCREMENTAL'): | 
| -      env.Precious(result) | 
| -    return result | 
| env.AddMethod(ChromeProgram) | 
| - | 
| -  def ChromeTestProgram(env, *args, **kw): | 
| -    result = env.ComponentTestProgram(*args, **kw) | 
| -    if env.get('INCREMENTAL'): | 
| -      env.Precious(*result) | 
| -    return result | 
| env.AddMethod(ChromeTestProgram) | 
| - | 
| -  def ChromeStaticLibrary(env, *args, **kw): | 
| -    kw['COMPONENT_STATIC'] = True | 
| -    return env.ComponentLibrary(*args, **kw) | 
| env.AddMethod(ChromeStaticLibrary) | 
| - | 
| -  def ChromeSharedLibrary(env, *args, **kw): | 
| -    kw['COMPONENT_STATIC'] = False | 
| -    result = [env.ComponentLibrary(*args, **kw)[0]] | 
| -    if env.get('INCREMENTAL'): | 
| -      env.Precious(result) | 
| -    return result | 
| env.AddMethod(ChromeSharedLibrary) | 
| - | 
| -  def ChromeObject(env, *args, **kw): | 
| -    return env.ComponentObject(*args, **kw) | 
| env.AddMethod(ChromeObject) | 
| - | 
| -  def ChromeMSVSFolder(env, *args, **kw): | 
| -    if env.Bit('msvs'): | 
| -      return env.MSVSFolder(*args, **kw) | 
| -    return [] | 
| env.AddMethod(ChromeMSVSFolder) | 
| - | 
| -  def ChromeMSVSProject(env, *args, **kw): | 
| -    if env.Bit('msvs'): | 
| -      return env.MSVSProject(*args, **kw) | 
| -    return [] | 
| env.AddMethod(ChromeMSVSProject) | 
| - | 
| -  def ChromeMSVSSolution(env, *args, **kw): | 
| -    if env.Bit('msvs'): | 
| -      return env.MSVSSolution(*args, **kw) | 
| -    return [] | 
| env.AddMethod(ChromeMSVSSolution) | 
|  | 
| def exists(env): | 
|  |