forked from OSchip/llvm-project
[clang] [MinGW] Add an implicit .exe suffix even when crosscompiling
GCC 8 changed behaviour wrt this, and made it consistent for cross compilation cases. While it's a change, it's a more sensible behaviour going forward. Differential Revision: https://reviews.llvm.org/D88005
This commit is contained in:
parent
2697d138a6
commit
ead7c3cdc3
|
@ -164,17 +164,13 @@ void tools::MinGW::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
||||||
CmdArgs.push_back("-o");
|
CmdArgs.push_back("-o");
|
||||||
const char *OutputFile = Output.getFilename();
|
const char *OutputFile = Output.getFilename();
|
||||||
// GCC implicitly adds an .exe extension if it is given an output file name
|
// GCC implicitly adds an .exe extension if it is given an output file name
|
||||||
// that lacks an extension. However, GCC only does this when actually
|
// that lacks an extension.
|
||||||
// running on windows, not when operating as a cross compiler. As some users
|
// GCC used to do this only when the compiler itself runs on windows, but
|
||||||
// have come to rely on this behaviour, try to replicate it.
|
// since GCC 8 it does the same when cross compiling as well.
|
||||||
#ifdef _WIN32
|
|
||||||
if (!llvm::sys::path::has_extension(OutputFile))
|
if (!llvm::sys::path::has_extension(OutputFile))
|
||||||
CmdArgs.push_back(Args.MakeArgString(Twine(OutputFile) + ".exe"));
|
CmdArgs.push_back(Args.MakeArgString(Twine(OutputFile) + ".exe"));
|
||||||
else
|
else
|
||||||
CmdArgs.push_back(OutputFile);
|
CmdArgs.push_back(OutputFile);
|
||||||
#else
|
|
||||||
CmdArgs.push_back(OutputFile);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
Args.AddAllArgs(CmdArgs, options::OPT_e);
|
Args.AddAllArgs(CmdArgs, options::OPT_e);
|
||||||
// FIXME: add -N, -n flags
|
// FIXME: add -N, -n flags
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
// Test how an implicit .exe extension is added. If not running the compiler
|
|
||||||
// on windows, no implicit extension is added. (Therefore, this test is skipped
|
|
||||||
// when running on windows.)
|
|
||||||
|
|
||||||
// UNSUPPORTED: system-windows
|
|
||||||
|
|
||||||
// RUN: %clang -target i686-windows-gnu -### --sysroot=%S/Inputs/mingw_clang_tree/mingw32 %s -o outputname 2>&1 | FileCheck %s
|
|
||||||
|
|
||||||
// CHECK: "-o" "outputname"
|
|
|
@ -1,8 +1,4 @@
|
||||||
// Test how an implicit .exe extension is added. If running the compiler
|
// Test how an implicit .exe extension is added.
|
||||||
// on windows, an implicit extension is added if none is provided in the
|
|
||||||
// given name. (Therefore, this test is skipped when not running on windows.)
|
|
||||||
|
|
||||||
// REQUIRES: system-windows
|
|
||||||
|
|
||||||
// RUN: %clang -target i686-windows-gnu -### --sysroot=%S/Inputs/mingw_clang_tree/mingw32 %s -o outputname 2>&1 | FileCheck %s --check-prefix=CHECK-OUTPUTNAME-EXE
|
// RUN: %clang -target i686-windows-gnu -### --sysroot=%S/Inputs/mingw_clang_tree/mingw32 %s -o outputname 2>&1 | FileCheck %s --check-prefix=CHECK-OUTPUTNAME-EXE
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue