| Index: site_scons/site_tools/chromium_builders.py
|
| ===================================================================
|
| --- site_scons/site_tools/chromium_builders.py (revision 12226)
|
| +++ site_scons/site_tools/chromium_builders.py (working copy)
|
| @@ -52,6 +52,38 @@
|
| else:
|
| top[i] = new
|
|
|
| +
|
| +def FilterOut(self, **kw):
|
| + """Removes values from existing construction variables in an Environment.
|
| +
|
| + The values to remove should be a list. For example:
|
| +
|
| + self.FilterOut(CPPDEFINES=['REMOVE_ME', 'ME_TOO'])
|
| +
|
| + Args:
|
| + self: Environment to alter.
|
| + kw: (Any other named arguments are values to remove).
|
| + """
|
| +
|
| + kw = SCons.Environment.copy_non_reserved_keywords(kw)
|
| + for key, val in kw.items():
|
| + envval = self.get(key, None)
|
| + if envval is None:
|
| + # No existing variable in the environment, so nothing to delete.
|
| + continue
|
| +
|
| + for vremove in val:
|
| + # Use while not if, so we can handle duplicates.
|
| + while vremove in envval:
|
| + envval.remove(vremove)
|
| +
|
| + self[key] = envval
|
| +
|
| + # TODO(sgk): SCons.Environment.Append() has much more logic to deal
|
| + # with various types of values. We should handle all those cases in here
|
| + # too. (If variable is a dict, etc.)
|
| +
|
| +
|
| import __builtin__
|
| __builtin__.ChromeFileList = ChromeFileList
|
|
|
| @@ -119,6 +151,15 @@
|
| result = env.ComponentLibrary(target, source, *args, **kw)
|
| return result
|
|
|
| +def ChromeLoadableModule(env, target, source, *args, **kw):
|
| + source = compilable_files(env, source)
|
| + if env.get('_GYP'):
|
| + result = env.LoadableModule(target, source, *args, **kw)
|
| + else:
|
| + kw['COMPONENT_STATIC'] = True
|
| + result = env.LoadableModule(target, source, *args, **kw)
|
| + return result
|
| +
|
| def ChromeStaticLibrary(env, target, source, *args, **kw):
|
| source = compilable_files(env, source)
|
| if env.get('_GYP'):
|
| @@ -189,6 +230,7 @@
|
| env.AddMethod(ChromeProgram)
|
| env.AddMethod(ChromeTestProgram)
|
| env.AddMethod(ChromeLibrary)
|
| + env.AddMethod(ChromeLoadableModule)
|
| env.AddMethod(ChromeStaticLibrary)
|
| env.AddMethod(ChromeSharedLibrary)
|
| env.AddMethod(ChromeObject)
|
| @@ -196,6 +238,8 @@
|
| env.AddMethod(ChromeMSVSProject)
|
| env.AddMethod(ChromeMSVSSolution)
|
|
|
| + env.AddMethod(FilterOut)
|
| +
|
| # Add the grit tool to the base environment because we use this a lot.
|
| sys.path.append(env.Dir('$CHROME_SRC_DIR/tools/grit').abspath)
|
| env.Tool('scons', toolpath=[env.Dir('$CHROME_SRC_DIR/tools/grit/grit')])
|
|
|