@@ -426,16 +426,6 @@ void visualstudio::Linker::ConstructJob(Compilation &C, const JobAction &JA,
426426 }
427427 }
428428
429- // Add Fortran runtime libraries
430- if (needFortranLibs (TC.getDriver (), Args)) {
431- TC.AddFortranStdlibLibArgs (Args, CmdArgs);
432- } else {
433- // Claim "no Flang libraries" arguments if any
434- for (auto Arg : Args.filtered (options::OPT_noFlangLibs)) {
435- Arg->claim ();
436- }
437- }
438-
439429 // Add compiler-rt lib in case if it was explicitly
440430 // specified as an argument for --rtlib option.
441431 if (!Args.hasArg (options::OPT_nostdlib)) {
@@ -767,32 +757,48 @@ void MSVCToolChain::AddFortranStdlibLibArgs(const ArgList &Args,
767757 useOpenMP = true ;
768758 }
769759
770- CmdArgs.push_back (Args.MakeArgString (std::string (" -libpath:" ) +
760+ CmdArgs.push_back (" -linker" );
761+ CmdArgs.push_back (Args.MakeArgString (std::string (" /libpath:" ) +
771762 getDriver ().Dir + " /../lib" ));
772763
773764 if (needFortranMain (getDriver (), Args)) {
774765 // flangmain is always static
775- CmdArgs.push_back (" -subsystem:console" );
776- CmdArgs.push_back (" -defaultlib:flangmain" );
766+ CmdArgs.push_back (" -linker" );
767+ CmdArgs.push_back (" /subsystem:console" );
768+ CmdArgs.push_back (" -linker" );
769+ CmdArgs.push_back (" /defaultlib:flangmain.lib" );
777770 }
778771
779772 if (staticFlangLibs) {
780- CmdArgs.push_back (" -defaultlib:libflang" );
781- CmdArgs.push_back (" -defaultlib:libflangrti" );
782- CmdArgs.push_back (" -defaultlib:libpgmath" );
773+ CmdArgs.push_back (" -linker" );
774+ CmdArgs.push_back (" /defaultlib:libflang.lib" );
775+ CmdArgs.push_back (" -linker" );
776+ CmdArgs.push_back (" /defaultlib:libflangrti.lib" );
777+ CmdArgs.push_back (" -linker" );
778+ CmdArgs.push_back (" /defaultlib:libpgmath.lib" );
783779 } else {
784- CmdArgs.push_back (" -defaultlib:flang" );
785- CmdArgs.push_back (" -defaultlib:flangrti" );
786- CmdArgs.push_back (" -defaultlib:pgmath" );
780+ CmdArgs.push_back (" -linker" );
781+ CmdArgs.push_back (" /defaultlib:flang.lib" );
782+ CmdArgs.push_back (" -linker" );
783+ CmdArgs.push_back (" /defaultlib:flangrti.lib" );
784+ CmdArgs.push_back (" -linker" );
785+ CmdArgs.push_back (" /defaultlib:pgmath.lib" );
787786 }
788787 if (useOpenMP) {
789- // openmp is added in ConstructJob
788+ CmdArgs.push_back (" -linker" );
789+ CmdArgs.push_back (" /nodefaultlib:vcomp.lib" );
790+ CmdArgs.push_back (" -linker" );
791+ CmdArgs.push_back (" /nodefaultlib:vcompd.lib" );
792+ CmdArgs.push_back (" -linker" );
793+ CmdArgs.push_back (" /defaultlib:libomp.lib" );
790794 }
791795 else {
792796 if (staticFlangLibs) {
793- CmdArgs.push_back (" -defaultlib:libompstub" );
797+ CmdArgs.push_back (" -linker" );
798+ CmdArgs.push_back (" /defaultlib:libompstub.lib" );
794799 } else {
795- CmdArgs.push_back (" -defaultlib:ompstub" );
800+ CmdArgs.push_back (" -linker" );
801+ CmdArgs.push_back (" /defaultlib:ompstub.lib" );
796802 }
797803 }
798804
@@ -805,11 +811,14 @@ void MSVCToolChain::AddFortranStdlibLibArgs(const ArgList &Args,
805811 // dependency tracking. Let's assume that if somebody needs
806812 // static flang libs, they need static runtime libs as well.
807813 if (staticFlangLibs) {
808- CmdArgs.push_back (" -defaultlib:libcmt" );
814+ CmdArgs.push_back (" -linker" );
815+ CmdArgs.push_back (" /defaultlib:libcmt.lib" );
809816 } else {
810- CmdArgs.push_back (" -defaultlib:msvcrt" );
817+ CmdArgs.push_back (" -linker" );
818+ CmdArgs.push_back (" /defaultlib:msvcrt.lib" );
811819 }
812- CmdArgs.push_back (" -defaultlib:oldnames" );
820+ CmdArgs.push_back (" -linker" );
821+ CmdArgs.push_back (" /defaultlib:oldnames.lib" );
813822
814823}
815824
0 commit comments