Fix rc errors.
Fix rc errors.
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,