Fix rc errors.
authorDavid Anderson <dvander@alliedmods.net>
Mon Nov 18 11:46:58 2013 -0800 (2013-11-18)
changeset 19961e1d1fcb9bb
parent 198 7458a94a8be3
child 200 dd255a16b1bb
Fix rc errors.
ambuild2/frontend/amb2/gen.py
ambuild2/frontend/cpp.py
ambuild2/task.py
     1.1 --- a/ambuild2/frontend/amb2/gen.py	Mon Nov 18 11:21:39 2013 -0800
     1.2 +++ b/ambuild2/frontend/amb2/gen.py	Mon Nov 18 11:46:58 2013 -0800
     1.3 @@ -501,7 +501,7 @@
     1.4          context = cx,
     1.5          weak_inputs = binary.compiler.sourcedeps,
     1.6          inputs = [rcfile.sourceFile],
     1.7 -        outputs = [rcfile.outputFile],
     1.8 +        outputs = [rcfile.preprocFile, rcfile.outputFile],
     1.9          node_type = nodetypes.Rc,
    1.10          folder = folder_node,
    1.11          data = rcData
     2.1 --- a/ambuild2/frontend/cpp.py	Mon Nov 18 11:21:39 2013 -0800
     2.2 +++ b/ambuild2/frontend/cpp.py	Mon Nov 18 11:46:58 2013 -0800
     2.3 @@ -322,8 +322,9 @@
     2.4      self.argv = argv
     2.5  
     2.6  class RCFile(object):
     2.7 -  def __init__(self, sourceFile, outputFile, cl_argv, rc_argv):
     2.8 +  def __init__(self, sourceFile, preprocFile, outputFile, cl_argv, rc_argv):
     2.9      self.sourceFile = sourceFile
    2.10 +    self.preprocFile = preprocFile
    2.11      self.outputFile = outputFile
    2.12      self.cl_argv = cl_argv 
    2.13      self.rc_argv = rc_argv
    2.14 @@ -384,24 +385,24 @@
    2.15      self.objects = []
    2.16      self.resources = []
    2.17      for item in self.sources:
    2.18 +      if os.path.isabs(item):
    2.19 +        sourceFile = item
    2.20 +      else:
    2.21 +        sourceFile = os.path.join(cx.currentSourcePath, item)
    2.22 +      sourceFile = os.path.normpath(sourceFile)
    2.23 +      encname = NameForObjectFile(filename)
    2.24 +
    2.25        filename, extension = os.path.splitext(item)
    2.26        if extension == '.rc':
    2.27          cenv = self.default_c_env
    2.28 -        suffix = '.res'
    2.29 +        objectFile = encname + '.res'
    2.30        else:
    2.31          if extension == '.c':
    2.32            cenv = self.default_c_env
    2.33          else:
    2.34            cenv = self.default_cxx_env
    2.35            self.used_cxx_ = True
    2.36 -        suffix = cenv.compiler.objSuffix
    2.37 -
    2.38 -      if os.path.isabs(item):
    2.39 -        sourceFile = item
    2.40 -      else:
    2.41 -        sourceFile = os.path.join(cx.currentSourcePath, item)
    2.42 -      sourceFile = os.path.normpath(sourceFile)
    2.43 -      objectFile = NameForObjectFile(filename) + suffix
    2.44 +        objectFile = encname + cenv.compiler.objSuffix
    2.45  
    2.46        if extension == '.rc':
    2.47          # This is only relevant on Windows.
    2.48 @@ -412,6 +413,7 @@
    2.49          for include in (self.compiler.includes + self.compiler.cxxincludes):
    2.50            cl_argv += vendor.formatInclude(objectFile, include)
    2.51          cl_argv += vendor.preprocessArgs(sourceFile)
    2.52 +        cl_argv += ['/Fo' + encname + '.i']
    2.53  
    2.54          rc_argv = ['rc', '/nologo']
    2.55          for define in defines:
    2.56 @@ -421,7 +423,7 @@
    2.57          rc_argv.append('/fo' + objectFile)
    2.58          rc_argv.append(sourceFile)
    2.59  
    2.60 -        self.resources.append(RCFile(sourceFile, objectFile, cl_argv, rc_argv))
    2.61 +        self.resources.append(RCFile(sourceFile, encname + '.i', objectFile, cl_argv, rc_argv))
    2.62        else:
    2.63          argv = cenv.argv + cenv.compiler.objectArgs(sourceFile, objectFile)
    2.64          self.objects.append(ObjectFile(sourceFile, objectFile, argv))
     3.1 --- a/ambuild2/task.py	Mon Nov 18 11:21:39 2013 -0800
     3.2 +++ b/ambuild2/task.py	Mon Nov 18 11:46:58 2013 -0800
     3.3 @@ -225,8 +225,8 @@
     3.4  
     3.5      with util.FolderChanger(task_folder):
     3.6        # Includes go to stderr when we preprocess to stdout.
     3.7 -      p, out, err = util.Execute(cl_argv)
     3.8 -      ignore, deps = util.ParseMSVCDeps(err)
     3.9 +      p, ignore, err = util.Execute(cl_argv)
    3.10 +      err, deps = util.ParseMSVCDeps(err)
    3.11        paths = self.rewriteDeps(deps)
    3.12  
    3.13        if p.returncode == 0:
    3.14 @@ -234,7 +234,7 @@
    3.15          
    3.16      reply = {
    3.17        'ok': p.returncode == 0,
    3.18 -      'cmdline': (' '.join([arg for arg in cl_argv]) + ' '.join([arg for arg in rc_argv])),
    3.19 +      'cmdline': (' '.join([arg for arg in cl_argv]) + ' && ' + ' '.join([arg for arg in rc_argv])),
    3.20        'stdout': out,
    3.21        'stderr': err,
    3.22        'deps': paths,