|
@@ -2516,6 +2516,10 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // Add clang-cl arguments.
|
|
|
|
+ if (getToolChain().getDriver().IsCLMode())
|
|
|
|
+ AddClangCLArgs(Args, CmdArgs);
|
|
|
|
+
|
|
// Pass the linker version in use.
|
|
// Pass the linker version in use.
|
|
if (Arg *A = Args.getLastArg(options::OPT_mlinker_version_EQ)) {
|
|
if (Arg *A = Args.getLastArg(options::OPT_mlinker_version_EQ)) {
|
|
CmdArgs.push_back("-target-linker-version");
|
|
CmdArgs.push_back("-target-linker-version");
|
|
@@ -3803,6 +3807,47 @@ ObjCRuntime Clang::AddObjCRuntimeArgs(const ArgList &args,
|
|
return runtime;
|
|
return runtime;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void Clang::AddClangCLArgs(const ArgList &Args, ArgStringList &CmdArgs) const {
|
|
|
|
+ unsigned RTOptionID = options::OPT__SLASH_MT;
|
|
|
|
+
|
|
|
|
+ if (Arg *A = Args.getLastArg(options::OPT__SLASH_MD,
|
|
|
|
+ options::OPT__SLASH_MDd,
|
|
|
|
+ options::OPT__SLASH_MT,
|
|
|
|
+ options::OPT__SLASH_MTd)) {
|
|
|
|
+ RTOptionID = A->getOption().getID();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ switch(RTOptionID) {
|
|
|
|
+ case options::OPT__SLASH_MD:
|
|
|
|
+ CmdArgs.push_back("-D_MT");
|
|
|
|
+ CmdArgs.push_back("-D_DLL");
|
|
|
|
+ CmdArgs.push_back("--dependent-lib=msvcrt");
|
|
|
|
+ break;
|
|
|
|
+ case options::OPT__SLASH_MDd:
|
|
|
|
+ CmdArgs.push_back("-D_DEBUG");
|
|
|
|
+ CmdArgs.push_back("-D_MT");
|
|
|
|
+ CmdArgs.push_back("-D_DLL");
|
|
|
|
+ CmdArgs.push_back("--dependent-lib=msvcrtd");
|
|
|
|
+ break;
|
|
|
|
+ case options::OPT__SLASH_MT:
|
|
|
|
+ CmdArgs.push_back("-D_MT");
|
|
|
|
+ CmdArgs.push_back("--dependent-lib=libcmt");
|
|
|
|
+ break;
|
|
|
|
+ case options::OPT__SLASH_MTd:
|
|
|
|
+ CmdArgs.push_back("-D_DEBUG");
|
|
|
|
+ CmdArgs.push_back("-D_MT");
|
|
|
|
+ CmdArgs.push_back("--dependent-lib=libcmtd");
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ llvm_unreachable("Unexpected option ID.");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // This provides POSIX compatibility (maps 'open' to '_open'), which most users
|
|
|
|
+ // want. MSVC has a switch to turn off this autolinking, but it's not
|
|
|
|
+ // implemented in clang yet.
|
|
|
|
+ CmdArgs.push_back("--dependent-lib=oldnames");
|
|
|
|
+}
|
|
|
|
+
|
|
void ClangAs::ConstructJob(Compilation &C, const JobAction &JA,
|
|
void ClangAs::ConstructJob(Compilation &C, const JobAction &JA,
|
|
const InputInfo &Output,
|
|
const InputInfo &Output,
|
|
const InputInfoList &Inputs,
|
|
const InputInfoList &Inputs,
|