diff --git a/backends.py b/backends.py index aed548cd0..5d16a64b9 100755 --- a/backends.py +++ b/backends.py @@ -484,10 +484,10 @@ class NinjaBackend(Backend): for compiler in self.build.compilers: langname = compiler.get_language() rule = 'rule %s_LINKER\n' % langname - command = ' command = %s %s $FLAGS %s $out $in $LINK_FLAGS $aliasing\n' % \ + command = ' command = %s %s $FLAGS %s $in $LINK_FLAGS $aliasing\n' % \ (execute_wrapper, - ' '.join(compiler.get_exelist()),\ - ' '.join(compiler.get_output_flags())) + ' '.join(compiler.get_linker_exelist()),\ + ' '.join(compiler.get_linker_output_flags('$out'))) description = ' description = Linking target $out' outfile.write(rule) outfile.write(command) @@ -501,10 +501,10 @@ class NinjaBackend(Backend): langname = compiler.get_language() rule = 'rule %s_COMPILER\n' % langname depflags = compiler.get_dependency_gen_flags('$out', '$DEPFILE') - command = " command = %s $FLAGS %s %s $out %s $in\n" % \ + command = " command = %s $FLAGS %s %s %s $in\n" % \ (' '.join(compiler.get_exelist()),\ ' '.join([qstr % d for d in depflags]),\ - ' '.join(compiler.get_output_flags()),\ + ' '.join(compiler.get_output_flags('$out')),\ ' '.join(compiler.get_compile_only_flags())) description = ' description = Compiling %s object $out\n' % langname dep = ' depfile = $DEPFILE\n' diff --git a/environment.py b/environment.py index 06a0fcc08..4bd856c76 100755 --- a/environment.py +++ b/environment.py @@ -45,12 +45,18 @@ class CCompiler(): def get_exelist(self): return self.exelist + + def get_linker_exelist(self): + return self.exelist def get_compile_only_flags(self): return ['-c'] - def get_output_flags(self): - return ['-o'] + def get_output_flags(self, target): + return ['-o', target] + + def get_linker_output_flags(self, outputname): + return ['-o', outputname] def get_debug_flags(self): return ['-g'] @@ -183,6 +189,18 @@ class VisualStudioCCompiler(CCompiler): def get_compile_only_flags(self): return ['/c'] + def get_output_flags(self, target): + return ['/Fo' + target] + + def get_dependency_gen_flags(self, outtarget, outfile): + return [] + + def get_linker_exelist(self): + return ['link'] # FIXME, should have same path as compiler. + + def get_linker_output_flags(self, outputname): + return ['/OUT:' + outputname] + def sanity_check(self, work_dir): source_name = os.path.join(work_dir, 'sanitycheckc.c') binary_name = os.path.join(work_dir, 'sanitycheckc')