mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-02 16:11:08 +03:00
Windows: Don't split CC into command + arguments separated by spaces (#4590)
This commit is contained in:
parent
42153ca24b
commit
75c4ef8adb
1 changed files with 21 additions and 15 deletions
|
@ -78,24 +78,30 @@ std::string getProgram(const char *fallbackName,
|
|||
|
||||
std::string getGcc(std::vector<std::string> &additional_args,
|
||||
const char *fallback) {
|
||||
// In case $CC contains spaces split it into a command and arguments
|
||||
std::string cc = env::get("CC");
|
||||
if (cc.empty())
|
||||
return getProgram(fallback, &gcc);
|
||||
#ifdef _WIN32
|
||||
// spaces in $CC are to be expected on Windows
|
||||
// (e.g., `C:\Program Files\LLVM\bin\clang-cl.exe`)
|
||||
return getProgram(fallback, &gcc, "CC");
|
||||
#else
|
||||
// Posix: in case $CC contains spaces split it into a command and arguments
|
||||
std::string cc = env::get("CC");
|
||||
if (cc.empty())
|
||||
return getProgram(fallback, &gcc);
|
||||
|
||||
// $CC is set so fallback doesn't matter anymore.
|
||||
if (cc.find(' ') == cc.npos)
|
||||
return getProgram(cc.c_str(), &gcc);
|
||||
// $CC is set so fallback doesn't matter anymore.
|
||||
if (cc.find(' ') == cc.npos)
|
||||
return getProgram(cc.c_str(), &gcc);
|
||||
|
||||
llvm::StringRef sr(cc);
|
||||
llvm::SmallVector<llvm::StringRef, 8> args;
|
||||
sr.split(args, ' ', /*MaxSplit=*/-1, /*keepEmpty=*/false);
|
||||
llvm::StringRef sr(cc);
|
||||
llvm::SmallVector<llvm::StringRef, 8> args;
|
||||
sr.split(args, ' ', /*MaxSplit=*/-1, /*keepEmpty=*/false);
|
||||
|
||||
// args[0] == CC command, args[1..] = CLI options
|
||||
additional_args.reserve(additional_args.size() + args.size() - 1);
|
||||
for (size_t i = 1; i < args.size(); i ++)
|
||||
additional_args.emplace_back(args[i].str());
|
||||
return getProgram(args[0].str().c_str(), &gcc);
|
||||
// args[0] == CC command, args[1..] = CLI options
|
||||
additional_args.reserve(additional_args.size() + args.size() - 1);
|
||||
for (size_t i = 1; i < args.size(); i ++)
|
||||
additional_args.emplace_back(args[i].str());
|
||||
return getProgram(args[0].str().c_str(), &gcc);
|
||||
#endif
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue