Don't set up MSVC environment *after* locating tools

And warn if no Visual C++ installation is detected, similar to the now
suppressed warning issued by the batch file.
This commit is contained in:
Martin 2017-03-14 00:31:35 +01:00
parent 1c70b12e4c
commit ab85d209ab
2 changed files with 17 additions and 10 deletions

View file

@ -492,6 +492,10 @@ static int linkObjToBinaryGcc(bool sharedLib, bool fullyStatic) {
static int linkObjToBinaryMSVC(bool sharedLib) { static int linkObjToBinaryMSVC(bool sharedLib) {
Logger::println("*** Linking executable ***"); Logger::println("*** Linking executable ***");
#ifdef _WIN32
windows::setupMsvcEnvironment();
#endif
const std::string tool = "link.exe"; const std::string tool = "link.exe";
// build arguments // build arguments
@ -592,10 +596,6 @@ static int linkObjToBinaryMSVC(bool sharedLib) {
} }
logstr << "\n"; // FIXME where's flush ? logstr << "\n"; // FIXME where's flush ?
#ifdef _WIN32
windows::setupMsvcEnvironment();
#endif
// try to call linker // try to call linker
return executeToolAndWait(tool, args, global.params.verbose); return executeToolAndWait(tool, args, global.params.verbose);
} }
@ -630,6 +630,11 @@ int createStaticLibrary() {
if (useInternalArchiver) { if (useInternalArchiver) {
tool = isTargetMSVC ? "llvm-lib.exe" : "llvm-ar"; tool = isTargetMSVC ? "llvm-lib.exe" : "llvm-ar";
} else { } else {
#ifdef _WIN32
if (isTargetMSVC)
windows::setupMsvcEnvironment();
#endif
tool = getProgram(isTargetMSVC ? "lib.exe" : "ar", &ar); tool = getProgram(isTargetMSVC ? "lib.exe" : "ar", &ar);
} }
@ -708,11 +713,6 @@ int createStaticLibrary() {
} }
#endif #endif
#ifdef _WIN32
if (isTargetMSVC)
windows::setupMsvcEnvironment();
#endif
// try to call archiver // try to call archiver
return executeToolAndWait(tool, args, global.params.verbose); return executeToolAndWait(tool, args, global.params.verbose);
} }

View file

@ -209,7 +209,7 @@ int executeAndWait(const char *commandLine) {
return exitCode; return exitCode;
} }
bool setupMsvcEnvironment() { bool setupMsvcEnvironmentImpl() {
if (getenv("VSINSTALLDIR")) if (getenv("VSINSTALLDIR"))
return true; return true;
@ -311,6 +311,13 @@ bool setupMsvcEnvironment() {
return haveVsInstallDir; return haveVsInstallDir;
} }
bool setupMsvcEnvironment() {
const bool success = setupMsvcEnvironmentImpl();
if (!success)
warning(Loc(), "no Visual C++ installation detected");
return success;
}
} // namespace windows } // namespace windows
#endif // _WIN32 #endif // _WIN32