11use std:: borrow:: Cow ;
22
3+ use crate :: spec:: crt_objects:: pre_mingw_self_contained;
34use crate :: spec:: {
4- BinaryFormat , Cc , DebuginfoKind , LinkerFlavor , Lld , SplitDebuginfo , TargetOptions , cvs,
5+ BinaryFormat , Cc , DebuginfoKind , LinkSelfContainedDefault , LinkerFlavor , Lld , SplitDebuginfo ,
6+ TargetOptions , add_link_args, cvs,
57} ;
68
79pub ( crate ) fn opts ( ) -> TargetOptions {
@@ -14,10 +16,11 @@ pub(crate) fn opts() -> TargetOptions {
1416 & [ "-nolibc" , "--unwindlib=none" ] ,
1517 ) ;
1618 // Order of `late_link_args*` does not matter with LLD.
17- let late_link_args = TargetOptions :: link_args (
18- LinkerFlavor :: Gnu ( Cc :: Yes , Lld :: No ) ,
19- & [ "-lmingw32" , "-lmingwex" , "-lmsvcrt" , "-lkernel32" , "-luser32" ] ,
20- ) ;
19+ let mingw_libs = & [ "-lmingw32" , "-lmingwex" , "-lmsvcrt" , "-lkernel32" , "-luser32" ] ;
20+
21+ let mut late_link_args =
22+ TargetOptions :: link_args ( LinkerFlavor :: Gnu ( Cc :: No , Lld :: No ) , mingw_libs) ;
23+ add_link_args ( & mut late_link_args, LinkerFlavor :: Gnu ( Cc :: Yes , Lld :: No ) , mingw_libs) ;
2124
2225 TargetOptions {
2326 os : "windows" . into ( ) ,
@@ -35,6 +38,8 @@ pub(crate) fn opts() -> TargetOptions {
3538 binary_format : BinaryFormat :: Coff ,
3639 allows_weak_linkage : false ,
3740 pre_link_args,
41+ pre_link_objects_self_contained : pre_mingw_self_contained ( ) ,
42+ link_self_contained : LinkSelfContainedDefault :: InferredForMingw ,
3843 late_link_args,
3944 abi_return_struct_as_int : true ,
4045 emit_debug_gdb_scripts : false ,
0 commit comments