diff --git a/compilers.py b/compilers.py index 00b2ecfcf..eea79d070 100644 --- a/compilers.py +++ b/compilers.py @@ -177,6 +177,9 @@ class Compiler(): def has_function(self, *args, **kwargs): raise EnvironmentException('Language %s does not support function checks.' % self.language) + def unixtype_flags_to_native(self, args): + return args + class CCompiler(Compiler): def __init__(self, exelist, version, is_cross, exe_wrapper=None): super().__init__(exelist, version) @@ -1055,7 +1058,6 @@ class VisualStudioCCompiler(CCompiler): vs2010_always_args = ['/nologo', '/showIncludes'] vs2013_always_args = ['/nologo', '/showIncludes', '/FS'] - def __init__(self, exelist, version, is_cross, exe_wrap): CCompiler.__init__(self, exelist, version, is_cross, exe_wrap) self.id = 'msvc' @@ -1157,6 +1159,14 @@ class VisualStudioCCompiler(CCompiler): def get_option_link_args(self, options): return options['c_winlibs'].value + def unixtype_flags_to_native(self, args): + result = [] + for i in args: + if i.startswith('-L'): + i = '/LIBPATH:' + i[2:] + result.append(i) + return result + class VisualStudioCPPCompiler(VisualStudioCCompiler): def __init__(self, exelist, version, is_cross, exe_wrap): VisualStudioCCompiler.__init__(self, exelist, version, is_cross, exe_wrap) @@ -1768,6 +1778,9 @@ class VisualStudioLinker(): def get_option_link_args(self, options): return [] + def unixtype_flags_to_native(self, args): + return args + class ArLinker(): std_args = ['csr'] @@ -1804,3 +1817,6 @@ class ArLinker(): def get_option_link_args(self, options): return [] + + def unixtype_flags_to_native(self, args): + return args diff --git a/dependencies.py b/dependencies.py index 165fd2f69..7aa2464a1 100644 --- a/dependencies.py +++ b/dependencies.py @@ -539,10 +539,7 @@ class BoostDependency(Dependency): def get_win_link_args(self): args = [] if self.boost_root: - # FIXME, these are in gcc format, not msvc. - # On the other hand, so are the args that - # pkg-config returns. - args.append('/LIBPATH:' + self.libdir) + args.append('-L' + self.libdir) for module in self.requested_modules: module = BoostDependency.name2lib.get(module, module) if module in self.lib_modules_mt: diff --git a/ninjabackend.py b/ninjabackend.py index 749f35dd1..c465f7cbb 100644 --- a/ninjabackend.py +++ b/ninjabackend.py @@ -1675,6 +1675,7 @@ rule FORTRAN_DEP_HACK if self.environment.coredata.get_builtin_option('coverage'): commands += linker.get_coverage_link_args() commands += extra_args + commands = linker.unixtype_flags_to_native(commands) dep_targets = [self.get_dependency_filename(t) for t in dependencies] dep_targets += [os.path.join(self.environment.source_dir, target.subdir, t) for t in target.link_depends]