Bug 1224450 - Ignore host compilations in the CompileDB backend. r=gps draft
authorMike Hommey <mh+mozilla@glandium.org>
Wed, 03 Feb 2016 12:43:39 +0900
changeset 330169 235082272e8c924a4fdb57b2209417c9b92a7202
parent 330168 edbbebb4b836f2b44b97c30d68852d27099adb45
child 330170 70e05b8185276acbb422a903f6f76cf342ad8900
push id10697
push userbmo:mh+mozilla@glandium.org
push dateWed, 10 Feb 2016 21:59:03 +0000
reviewersgps
bugs1224450
milestone47.0a1
Bug 1224450 - Ignore host compilations in the CompileDB backend. r=gps
python/mozbuild/mozbuild/compilation/database.py
--- a/python/mozbuild/mozbuild/compilation/database.py
+++ b/python/mozbuild/mozbuild/compilation/database.py
@@ -41,24 +41,24 @@ class CompileDBBackend(CommonBackend):
 
 
     def consume_object(self, obj):
         consumed = CommonBackend.consume_object(self, obj)
 
         if consumed:
             return True
 
-        if isinstance(obj, Sources) or isinstance(obj, HostSources) or \
-           isinstance(obj, GeneratedSources):
+        # We ignore host compilations for now, the code doesn't handle them
+        # properly.
+        if isinstance(obj, (Sources, GeneratedSources)):
             # For other sources, include each source file.
             for f in obj.files:
                 flags = self._get_dir_flags(obj.objdir)
                 self._build_db_line(obj.objdir, self.environment, f,
-                                    obj.canonical_suffix, flags,
-                                    isinstance(obj, HostSources))
+                                    obj.canonical_suffix, flags)
 
         return True
 
     def consume_finished(self):
         CommonBackend.consume_finished(self)
 
         import json
         # Output the database (a JSON file) to objdir/compile_commands.json
@@ -67,35 +67,35 @@ class CompileDBBackend(CommonBackend):
             json.dump(self._db, jsonout, indent=0)
 
     def _process_unified_sources(self, obj):
         # For unified sources, only include the unified source file.
         # Note that unified sources are never used for host sources.
         for f in obj.unified_source_mapping:
             flags = self._get_dir_flags(obj.objdir)
             self._build_db_line(obj.objdir, self.environment, f[0],
-                                obj.canonical_suffix, flags, False)
+                                obj.canonical_suffix, flags)
 
     def _handle_idl_manager(self, idl_manager):
         pass
 
     def _handle_ipdl_sources(self, ipdl_dir, sorted_ipdl_sources,
                              unified_ipdl_cppsrcs_mapping):
         flags = self._get_dir_flags(ipdl_dir)
         for f in unified_ipdl_cppsrcs_mapping:
             self._build_db_line(ipdl_dir, self.environment, f[0],
-                                '.cpp', flags, False)
+                                '.cpp', flags)
 
     def _handle_webidl_build(self, bindings_dir, unified_source_mapping,
                              webidls, expected_build_output_files,
                              global_define_files):
         flags = self._get_dir_flags(bindings_dir)
         for f in unified_source_mapping:
             self._build_db_line(bindings_dir, self.environment, f[0],
-                                '.cpp', flags, False)
+                                '.cpp', flags)
 
     def _get_dir_flags(self, directory):
         if directory in self._flags:
             return self._flags[directory]
 
         from mozbuild.util import resolve_target_to_make
 
         make_dir, make_target = resolve_target_to_make(self.environment.topobjdir, directory)
@@ -110,27 +110,25 @@ class CompileDBBackend(CommonBackend):
             if name not in build_vars:
                 continue
 
             build_vars[name] = util.sanitize_cflags(shell_split(build_vars[name]))
 
         self._flags[directory] = build_vars
         return self._flags[directory]
 
-    def _build_db_line(self, objdir, cenv, filename, canonical_suffix, flags, ishost):
-        # Distinguish between host and target files.
-        prefix = 'HOST_' if ishost else ''
+    def _build_db_line(self, objdir, cenv, filename, canonical_suffix, flags):
         if canonical_suffix in ('.c', '.m'):
-            compiler = cenv.substs[prefix + 'CC']
+            compiler = cenv.substs['CC']
             cflags = list(flags['COMPILE_CFLAGS'])
             # Add the Objective-C flags if needed.
             if canonical_suffix == '.m':
                 cflags.extend(flags['COMPILE_CMFLAGS'])
         elif canonical_suffix in ('.cpp', '.mm'):
-            compiler = cenv.substs[prefix + 'CXX']
+            compiler = cenv.substs['CXX']
             cflags = list(flags['COMPILE_CXXFLAGS'])
             # Add the Objective-C++ flags if needed.
             if canonical_suffix == '.mm':
                 cflags.extend(flags['COMPILE_CMMFLAGS'])
         else:
             return
 
         cmd = compiler.split() + [