code: def execute(self):
      
  
      def is_cc(source):
        _, ext = os.path.splitext(source)
        return ext in self.get_options().cc_extensions
  
      targets = self.context.targets(self.is_cpp)
  
      # Compile source files to objects.
      with self.invalidated(targets, invalidate_dependents=True) as invalidation_check:
        obj_mapping = self.context.products.get('objs')
        for vt in invalidation_check.all_vts:
          for source in vt.target.sources_relative_to_buildroot():
            if is_cc(source):
              if not vt.valid:
                with self.context.new_workunit(name='cpp-compile', labels=[WorkUnitLabel.MULTITOOL]):
                  # TODO: Parallelise the compilation.
                  # TODO: Only recompile source files that have changed since the
                  #       object file was last written. Also use the output from
                  #       gcc -M to track dependencies on headers.
                  self._compile(vt.target, vt.results_dir, source)
              objpath = self._objpath(vt.target, vt.results_dir, source)
              obj_mapping.add(vt.target, vt.results_dir).append(objpath)
docs: Compile all sources in a given target to object files.