@@ -426,16 +426,6 @@ void visualstudio::Linker::ConstructJob(Compilation &C, const JobAction &JA,
426
426
}
427
427
}
428
428
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
-
439
429
// Add compiler-rt lib in case if it was explicitly
440
430
// specified as an argument for --rtlib option.
441
431
if (!Args.hasArg (options::OPT_nostdlib)) {
@@ -767,32 +757,48 @@ void MSVCToolChain::AddFortranStdlibLibArgs(const ArgList &Args,
767
757
useOpenMP = true ;
768
758
}
769
759
770
- CmdArgs.push_back (Args.MakeArgString (std::string (" -libpath:" ) +
760
+ CmdArgs.push_back (" -linker" );
761
+ CmdArgs.push_back (Args.MakeArgString (std::string (" /libpath:" ) +
771
762
getDriver ().Dir + " /../lib" ));
772
763
773
764
if (needFortranMain (getDriver (), Args)) {
774
765
// 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" );
777
770
}
778
771
779
772
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" );
783
779
} 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" );
787
786
}
788
787
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" );
790
794
}
791
795
else {
792
796
if (staticFlangLibs) {
793
- CmdArgs.push_back (" -defaultlib:libompstub" );
797
+ CmdArgs.push_back (" -linker" );
798
+ CmdArgs.push_back (" /defaultlib:libompstub.lib" );
794
799
} else {
795
- CmdArgs.push_back (" -defaultlib:ompstub" );
800
+ CmdArgs.push_back (" -linker" );
801
+ CmdArgs.push_back (" /defaultlib:ompstub.lib" );
796
802
}
797
803
}
798
804
@@ -805,11 +811,14 @@ void MSVCToolChain::AddFortranStdlibLibArgs(const ArgList &Args,
805
811
// dependency tracking. Let's assume that if somebody needs
806
812
// static flang libs, they need static runtime libs as well.
807
813
if (staticFlangLibs) {
808
- CmdArgs.push_back (" -defaultlib:libcmt" );
814
+ CmdArgs.push_back (" -linker" );
815
+ CmdArgs.push_back (" /defaultlib:libcmt.lib" );
809
816
} else {
810
- CmdArgs.push_back (" -defaultlib:msvcrt" );
817
+ CmdArgs.push_back (" -linker" );
818
+ CmdArgs.push_back (" /defaultlib:msvcrt.lib" );
811
819
}
812
- CmdArgs.push_back (" -defaultlib:oldnames" );
820
+ CmdArgs.push_back (" -linker" );
821
+ CmdArgs.push_back (" /defaultlib:oldnames.lib" );
813
822
814
823
}
815
824
0 commit comments