11use std:: borrow:: Cow ;
22
3+ use crate :: spec:: crt_objects:: pre_mingw_self_contained;
34use crate :: spec:: {
4- Abi , BinaryFormat , Cc , DebuginfoKind , Env , LinkerFlavor , Lld , Os , SplitDebuginfo ,
5- TargetOptions , cvs,
5+ Abi , BinaryFormat , Cc , DebuginfoKind , Env , LinkSelfContainedDefault , LinkerFlavor , Lld , Os ,
6+ SplitDebuginfo , TargetOptions , add_link_args , cvs,
67} ;
78
89pub ( crate ) fn opts ( ) -> TargetOptions {
@@ -15,10 +16,11 @@ pub(crate) fn opts() -> TargetOptions {
1516 & [ "-nolibc" , "--unwindlib=none" ] ,
1617 ) ;
1718 // Order of `late_link_args*` does not matter with LLD.
18- let late_link_args = TargetOptions :: link_args (
19- LinkerFlavor :: Gnu ( Cc :: Yes , Lld :: No ) ,
20- & [ "-lmingw32" , "-lmingwex" , "-lmsvcrt" , "-lkernel32" , "-luser32" ] ,
21- ) ;
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) ;
2224
2325 TargetOptions {
2426 os : Os :: Windows ,
@@ -36,6 +38,8 @@ pub(crate) fn opts() -> TargetOptions {
3638 binary_format : BinaryFormat :: Coff ,
3739 allows_weak_linkage : false ,
3840 pre_link_args,
41+ pre_link_objects_self_contained : pre_mingw_self_contained ( ) ,
42+ link_self_contained : LinkSelfContainedDefault :: InferredForMingw ,
3943 late_link_args,
4044 abi_return_struct_as_int : true ,
4145 emit_debug_gdb_scripts : false ,
0 commit comments