Skip to content

Commit

Permalink
Pass linker options to flang2
Browse files Browse the repository at this point in the history
  • Loading branch information
isuruf committed Jun 1, 2019
1 parent 5f1137e commit 444418e
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 25 deletions.
8 changes: 8 additions & 0 deletions lib/Driver/ToolChains/Flang.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1050,6 +1050,14 @@ if(Args.getAllArgValues(options::OPT_fopenmp_targets_EQ).size() > 0) {
LowerCmdArgs.push_back(Args.MakeArgString(OutFile));
}

bool IsWindowsMSVC = getToolChain().getTriple().isWindowsMSVCEnvironment();
if (IsWindowsMSVC && !Args.hasArg(options::OPT_noFlangLibs)) {
getToolChain().AddFortranStdlibLibArgs(Args, LowerCmdArgs);
}
for (auto Arg : Args.filtered(options::OPT_noFlangLibs)) {
Arg->claim();
}

C.addCommand(llvm::make_unique<Command>(JA, *this, LowerExec, LowerCmdArgs, Inputs));
}

59 changes: 34 additions & 25 deletions lib/Driver/ToolChains/MSVC.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -426,16 +426,6 @@ void visualstudio::Linker::ConstructJob(Compilation &C, const JobAction &JA,
}
}

// Add Fortran runtime libraries
if (needFortranLibs(TC.getDriver(), Args)) {
TC.AddFortranStdlibLibArgs(Args, CmdArgs);
} else {
// Claim "no Flang libraries" arguments if any
for (auto Arg : Args.filtered(options::OPT_noFlangLibs)) {
Arg->claim();
}
}

// Add compiler-rt lib in case if it was explicitly
// specified as an argument for --rtlib option.
if (!Args.hasArg(options::OPT_nostdlib)) {
Expand Down Expand Up @@ -767,32 +757,48 @@ void MSVCToolChain::AddFortranStdlibLibArgs(const ArgList &Args,
useOpenMP = true;
}

CmdArgs.push_back(Args.MakeArgString(std::string("-libpath:") +
CmdArgs.push_back("-linker");
CmdArgs.push_back(Args.MakeArgString(std::string("/libpath:") +
getDriver().Dir + "/../lib"));

if (needFortranMain(getDriver(), Args)) {
// flangmain is always static
CmdArgs.push_back("-subsystem:console");
CmdArgs.push_back("-defaultlib:flangmain");
CmdArgs.push_back("-linker");
CmdArgs.push_back("/subsystem:console");
CmdArgs.push_back("-linker");
CmdArgs.push_back("/defaultlib:flangmain.lib");
}

if (staticFlangLibs) {
CmdArgs.push_back("-defaultlib:libflang");
CmdArgs.push_back("-defaultlib:libflangrti");
CmdArgs.push_back("-defaultlib:libpgmath");
CmdArgs.push_back("-linker");
CmdArgs.push_back("/defaultlib:libflang.lib");
CmdArgs.push_back("-linker");
CmdArgs.push_back("/defaultlib:libflangrti.lib");
CmdArgs.push_back("-linker");
CmdArgs.push_back("/defaultlib:libpgmath.lib");
} else {
CmdArgs.push_back("-defaultlib:flang");
CmdArgs.push_back("-defaultlib:flangrti");
CmdArgs.push_back("-defaultlib:pgmath");
CmdArgs.push_back("-linker");
CmdArgs.push_back("/defaultlib:flang.lib");
CmdArgs.push_back("-linker");
CmdArgs.push_back("/defaultlib:flangrti.lib");
CmdArgs.push_back("-linker");
CmdArgs.push_back("/defaultlib:pgmath.lib");
}
if (useOpenMP) {
// openmp is added in ConstructJob
CmdArgs.push_back("-linker");
CmdArgs.push_back("/nodefaultlib:vcomp.lib");
CmdArgs.push_back("-linker");
CmdArgs.push_back("/nodefaultlib:vcompd.lib");
CmdArgs.push_back("-linker");
CmdArgs.push_back("/defaultlib:libomp.lib");
}
else {
if (staticFlangLibs) {
CmdArgs.push_back("-defaultlib:libompstub");
CmdArgs.push_back("-linker");
CmdArgs.push_back("/defaultlib:libompstub.lib");
} else {
CmdArgs.push_back("-defaultlib:ompstub");
CmdArgs.push_back("-linker");
CmdArgs.push_back("/defaultlib:ompstub.lib");
}
}

Expand All @@ -805,11 +811,14 @@ void MSVCToolChain::AddFortranStdlibLibArgs(const ArgList &Args,
// dependency tracking. Let's assume that if somebody needs
// static flang libs, they need static runtime libs as well.
if (staticFlangLibs) {
CmdArgs.push_back("-defaultlib:libcmt");
CmdArgs.push_back("-linker");
CmdArgs.push_back("/defaultlib:libcmt.lib");
} else {
CmdArgs.push_back("-defaultlib:msvcrt");
CmdArgs.push_back("-linker");
CmdArgs.push_back("/defaultlib:msvcrt.lib");
}
CmdArgs.push_back("-defaultlib:oldnames");
CmdArgs.push_back("-linker");
CmdArgs.push_back("/defaultlib:oldnames.lib");

}

Expand Down

0 comments on commit 444418e

Please sign in to comment.