diff options
Diffstat (limited to 'python/mozbuild/mozbuild/backend/fastermake.py')
-rw-r--r-- | python/mozbuild/mozbuild/backend/fastermake.py | 165 |
1 files changed, 0 insertions, 165 deletions
diff --git a/python/mozbuild/mozbuild/backend/fastermake.py b/python/mozbuild/mozbuild/backend/fastermake.py deleted file mode 100644 index d55928e8c7..0000000000 --- a/python/mozbuild/mozbuild/backend/fastermake.py +++ /dev/null @@ -1,165 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -from __future__ import absolute_import, unicode_literals, print_function - -from mozbuild.backend.base import PartialBackend -from mozbuild.backend.common import CommonBackend -from mozbuild.frontend.context import ( - ObjDirPath, -) -from mozbuild.frontend.data import ( - ChromeManifestEntry, - FinalTargetPreprocessedFiles, - FinalTargetFiles, - JARManifest, - XPIDLFile, -) -from mozbuild.makeutil import Makefile -from mozbuild.util import OrderedDefaultDict -from mozpack.manifests import InstallManifest -import mozpack.path as mozpath - - -class FasterMakeBackend(CommonBackend, PartialBackend): - def _init(self): - super(FasterMakeBackend, self)._init() - - self._manifest_entries = OrderedDefaultDict(set) - - self._install_manifests = OrderedDefaultDict(InstallManifest) - - self._dependencies = OrderedDefaultDict(list) - - self._has_xpidl = False - - def _add_preprocess(self, obj, path, dest, target=None, **kwargs): - if target is None: - target = mozpath.basename(path) - # This matches what PP_TARGETS do in config/rules. - if target.endswith('.in'): - target = target[:-3] - if target.endswith('.css'): - kwargs['marker'] = '%' - depfile = mozpath.join( - self.environment.topobjdir, 'faster', '.deps', - mozpath.join(obj.install_target, dest, target).replace('/', '_')) - self._install_manifests[obj.install_target].add_preprocess( - mozpath.join(obj.srcdir, path), - mozpath.join(dest, target), - depfile, - **kwargs) - - def consume_object(self, obj): - if isinstance(obj, JARManifest) and \ - obj.install_target.startswith('dist/bin'): - self._consume_jar_manifest(obj) - - elif isinstance(obj, (FinalTargetFiles, - FinalTargetPreprocessedFiles)) and \ - obj.install_target.startswith('dist/bin'): - defines = obj.defines or {} - if defines: - defines = defines.defines - for path, files in obj.files.walk(): - for f in files: - if isinstance(obj, FinalTargetPreprocessedFiles): - self._add_preprocess(obj, f.full_path, path, - target=f.target_basename, - defines=defines) - elif '*' in f: - def _prefix(s): - for p in mozpath.split(s): - if '*' not in p: - yield p + '/' - prefix = ''.join(_prefix(f.full_path)) - - self._install_manifests[obj.install_target] \ - .add_pattern_symlink( - prefix, - f.full_path[len(prefix):], - mozpath.join(path, f.target_basename)) - else: - self._install_manifests[obj.install_target].add_symlink( - f.full_path, - mozpath.join(path, f.target_basename) - ) - if isinstance(f, ObjDirPath): - dep_target = 'install-%s' % obj.install_target - self._dependencies[dep_target].append( - mozpath.relpath(f.full_path, - self.environment.topobjdir)) - - elif isinstance(obj, ChromeManifestEntry) and \ - obj.install_target.startswith('dist/bin'): - top_level = mozpath.join(obj.install_target, 'chrome.manifest') - if obj.path != top_level: - entry = 'manifest %s' % mozpath.relpath(obj.path, - obj.install_target) - self._manifest_entries[top_level].add(entry) - self._manifest_entries[obj.path].add(str(obj.entry)) - - elif isinstance(obj, XPIDLFile): - self._has_xpidl = True - # We're not actually handling XPIDL files. - return False - - else: - return False - - return True - - def consume_finished(self): - mk = Makefile() - # Add the default rule at the very beginning. - mk.create_rule(['default']) - mk.add_statement('TOPSRCDIR = %s' % self.environment.topsrcdir) - mk.add_statement('TOPOBJDIR = %s' % self.environment.topobjdir) - if not self._has_xpidl: - mk.add_statement('NO_XPIDL = 1') - - # Add a few necessary variables inherited from configure - for var in ( - 'PYTHON', - 'ACDEFINES', - 'MOZ_BUILD_APP', - 'MOZ_WIDGET_TOOLKIT', - ): - value = self.environment.substs.get(var) - if value is not None: - mk.add_statement('%s = %s' % (var, value)) - - install_manifests_bases = self._install_manifests.keys() - - # Add information for chrome manifest generation - manifest_targets = [] - - for target, entries in self._manifest_entries.iteritems(): - manifest_targets.append(target) - install_target = mozpath.basedir(target, install_manifests_bases) - self._install_manifests[install_target].add_content( - ''.join('%s\n' % e for e in sorted(entries)), - mozpath.relpath(target, install_target)) - - # Add information for install manifests. - mk.add_statement('INSTALL_MANIFESTS = %s' - % ' '.join(self._install_manifests.keys())) - - # Add dependencies we infered: - for target, deps in self._dependencies.iteritems(): - mk.create_rule([target]).add_dependencies( - '$(TOPOBJDIR)/%s' % d for d in deps) - - mk.add_statement('include $(TOPSRCDIR)/config/faster/rules.mk') - - for base, install_manifest in self._install_manifests.iteritems(): - with self._write_file( - mozpath.join(self.environment.topobjdir, 'faster', - 'install_%s' % base.replace('/', '_'))) as fh: - install_manifest.write(fileobj=fh) - - with self._write_file( - mozpath.join(self.environment.topobjdir, 'faster', - 'Makefile')) as fh: - mk.dump(fh, removal_guard=False) |