Bug 1319563 - Move CompileDBBackend:_build_db_line to CommonBackend:_build_compiler_line; r?glandium
--- a/python/mozbuild/mozbuild/backend/common.py
+++ b/python/mozbuild/mozbuild/backend/common.py
@@ -3,16 +3,17 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
from __future__ import absolute_import, unicode_literals
import cPickle as pickle
import itertools
import json
import os
+import types
import mozpack.path as mozpath
from mozbuild.backend.base import BuildBackend
from mozbuild.frontend.context import (
Context,
Path,
@@ -560,8 +561,68 @@ class CommonBackend(BuildBackend):
FinalTargetPreprocessedFiles(jar_context, files_pp))
for m in jarinfo.chrome_manifests:
entry = parse_manifest_line(
mozpath.dirname(jarinfo.name),
m.replace('%', mozpath.basename(jarinfo.name) + '/'))
self.consume_object(ChromeManifestEntry(
jar_context, '%s.manifest' % jarinfo.name, entry))
+
+ COMPILERS = {
+ '.c': 'CC',
+ '.cpp': 'CXX',
+ '.m': 'CC',
+ '.mm': 'CXX',
+ }
+
+ CFLAGS = {
+ '.c': 'CFLAGS',
+ '.cpp': 'CXXFLAGS',
+ '.m': 'CFLAGS',
+ '.mm': 'CXXFLAGS',
+ }
+
+ def _build_compiler_line(self, objdir, reldir, cenv, filename, canonical_suffix):
+ if canonical_suffix not in self.COMPILERS:
+ return None
+ cmdline = cenv.substs[self.COMPILERS[canonical_suffix]].split() + ['-o', '/dev/null', '-c']
+ reldir = reldir or mozpath.relpath(objdir, cenv.topobjdir)
+
+ def append_var(name):
+ value = cenv.substs.get(name)
+ if not value:
+ return None
+ if isinstance(value, types.StringTypes):
+ value = value.split()
+ cmdline.extend(value)
+
+ if canonical_suffix in ('.mm', '.cpp'):
+ cmdline.append('$(STL_FLAGS)')
+
+ cmdline.extend((
+ '$(VISIBILITY_FLAGS)',
+ '$(DEFINES)',
+ '-I%s' % mozpath.join(cenv.topsrcdir, reldir),
+ '-I%s' % objdir,
+ '$(LOCAL_INCLUDES)',
+ '-I%s/dist/include' % cenv.topobjdir,
+ '$(EXTRA_INCLUDES)',
+ ))
+ append_var('DSO_CFLAGS')
+ append_var('DSO_PIC_CFLAGS')
+ if canonical_suffix in ('.c', '.cpp'):
+ cmdline.append('$(RTL_FLAGS)')
+ append_var('OS_COMPILE_%s' % self.CFLAGS[canonical_suffix])
+ append_var('OS_CPPFLAGS')
+ append_var('OS_%s' % self.CFLAGS[canonical_suffix])
+ append_var('MOZ_DEBUG_FLAGS')
+ append_var('MOZ_OPTIMIZE_FLAGS')
+ append_var('MOZ_FRAMEPTR_FLAGS')
+ cmdline.append('$(WARNINGS_AS_ERRORS)')
+ cmdline.append('$(MOZBUILD_%s)' % self.CFLAGS[canonical_suffix])
+ if canonical_suffix == '.m':
+ append_var('OS_COMPILE_CMFLAGS')
+ cmdline.append('$(MOZBUILD_CMFLAGS)')
+ elif canonical_suffix == '.mm':
+ append_var('OS_COMPILE_CMMFLAGS')
+ cmdline.append('$(MOZBUILD_CMMFLAGS)')
+ return cmdline
--- a/python/mozbuild/mozbuild/compilation/database.py
+++ b/python/mozbuild/mozbuild/compilation/database.py
@@ -185,68 +185,12 @@ class CompileDBBackend(CommonBackend):
def _handle_webidl_build(self, bindings_dir, unified_source_mapping,
webidls, expected_build_output_files,
global_define_files):
for f in unified_source_mapping:
self._build_db_line(bindings_dir, None, self.environment, f[0],
'.cpp')
- COMPILERS = {
- '.c': 'CC',
- '.cpp': 'CXX',
- '.m': 'CC',
- '.mm': 'CXX',
- }
-
- CFLAGS = {
- '.c': 'CFLAGS',
- '.cpp': 'CXXFLAGS',
- '.m': 'CFLAGS',
- '.mm': 'CXXFLAGS',
- }
-
def _build_db_line(self, objdir, reldir, cenv, filename, canonical_suffix):
- if canonical_suffix not in self.COMPILERS:
- return
- db = self._db.setdefault((objdir, filename),
- cenv.substs[self.COMPILERS[canonical_suffix]].split() +
- ['-o', '/dev/null', '-c'])
- reldir = reldir or mozpath.relpath(objdir, cenv.topobjdir)
-
- def append_var(name):
- value = cenv.substs.get(name)
- if not value:
- return
- if isinstance(value, types.StringTypes):
- value = value.split()
- db.extend(value)
-
- if canonical_suffix in ('.mm', '.cpp'):
- db.append('$(STL_FLAGS)')
-
- db.extend((
- '$(VISIBILITY_FLAGS)',
- '$(DEFINES)',
- '-I%s' % mozpath.join(cenv.topsrcdir, reldir),
- '-I%s' % objdir,
- '$(LOCAL_INCLUDES)',
- '-I%s/dist/include' % cenv.topobjdir,
- '$(EXTRA_INCLUDES)',
- ))
- append_var('DSO_CFLAGS')
- append_var('DSO_PIC_CFLAGS')
- if canonical_suffix in ('.c', '.cpp'):
- db.append('$(RTL_FLAGS)')
- append_var('OS_COMPILE_%s' % self.CFLAGS[canonical_suffix])
- append_var('OS_CPPFLAGS')
- append_var('OS_%s' % self.CFLAGS[canonical_suffix])
- append_var('MOZ_DEBUG_FLAGS')
- append_var('MOZ_OPTIMIZE_FLAGS')
- append_var('MOZ_FRAMEPTR_FLAGS')
- db.append('$(WARNINGS_AS_ERRORS)')
- db.append('$(MOZBUILD_%s)' % self.CFLAGS[canonical_suffix])
- if canonical_suffix == '.m':
- append_var('OS_COMPILE_CMFLAGS')
- db.append('$(MOZBUILD_CMFLAGS)')
- elif canonical_suffix == '.mm':
- append_var('OS_COMPILE_CMMFLAGS')
- db.append('$(MOZBUILD_CMMFLAGS)')
+ cmdline = self._build_compiler_line(objdir, reldir, cenv, filename, canonical_suffix)
+ if cmdline:
+ self._db[(objdir, filename)] = cmdline