forked from OSchip/llvm-project
				
			[MinGW] Add support for the options --[no-]whole-archive
Differential Revision: https://reviews.llvm.org/D37769 llvm-svn: 313124
This commit is contained in:
		
							parent
							
								
									8278ba51d3
								
							
						
					
					
						commit
						32e1626a2e
					
				| 
						 | 
				
			
			@ -172,11 +172,24 @@ bool mingw::link(ArrayRef<const char *> ArgsArr, raw_ostream &Diag) {
 | 
			
		|||
  for (auto *A : Args.filtered(OPT_L))
 | 
			
		||||
    SearchPaths.push_back(A->getValue());
 | 
			
		||||
 | 
			
		||||
  for (auto *A : Args.filtered(OPT_INPUT, OPT_l)) {
 | 
			
		||||
    if (A->getOption().getUnaliasedOption().getID() == OPT_INPUT)
 | 
			
		||||
      Add(A->getValue());
 | 
			
		||||
    else
 | 
			
		||||
      Add(searchLibrary(A->getValue(), SearchPaths, Args.hasArg(OPT_Bstatic)));
 | 
			
		||||
  StringRef Prefix = "";
 | 
			
		||||
  for (auto *A : Args.filtered(OPT_INPUT, OPT_l, OPT_whole_archive,
 | 
			
		||||
                               OPT_no_whole_archive)) {
 | 
			
		||||
    switch (A->getOption().getID()) {
 | 
			
		||||
    case OPT_INPUT:
 | 
			
		||||
      Add(Prefix + StringRef(A->getValue()));
 | 
			
		||||
      break;
 | 
			
		||||
    case OPT_l:
 | 
			
		||||
      Add(Prefix +
 | 
			
		||||
          searchLibrary(A->getValue(), SearchPaths, Args.hasArg(OPT_Bstatic)));
 | 
			
		||||
      break;
 | 
			
		||||
    case OPT_whole_archive:
 | 
			
		||||
      Prefix = "-wholearchive:";
 | 
			
		||||
      break;
 | 
			
		||||
    case OPT_no_whole_archive:
 | 
			
		||||
      Prefix = "";
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (Args.hasArg(OPT_verbose))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,12 +12,16 @@ def l: JoinedOrSeparate<["-"], "l">, MetaVarName<"<libName>">,
 | 
			
		|||
  HelpText<"Root name of library to use">;
 | 
			
		||||
def m: JoinedOrSeparate<["-"], "m">, HelpText<"Set target emulation">;
 | 
			
		||||
def mllvm: S<"mllvm">;
 | 
			
		||||
def no_whole_archive: F<"no-whole-archive">,
 | 
			
		||||
    HelpText<"No longer include all object files for following archives">;
 | 
			
		||||
def o: JoinedOrSeparate<["-"], "o">, MetaVarName<"<path>">,
 | 
			
		||||
  HelpText<"Path to file to write output">;
 | 
			
		||||
def out_implib: Separate<["--"], "out-implib">, HelpText<"Import library name">;
 | 
			
		||||
def shared: F<"shared">, HelpText<"Build a shared object">;
 | 
			
		||||
def subs: Separate<["--"], "subsystem">, HelpText<"Specify subsystem">;
 | 
			
		||||
def stack: Separate<["--"], "stack">;
 | 
			
		||||
def whole_archive: F<"whole-archive">,
 | 
			
		||||
    HelpText<"Include all object files for following archives">;
 | 
			
		||||
def verbose: F<"verbose">, HelpText<"Verbose mode">;
 | 
			
		||||
 | 
			
		||||
// LLD specific options
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -47,3 +47,6 @@ VERBOSE: -verbose
 | 
			
		|||
 | 
			
		||||
RUN: ld.lld -### -shared -m i386pe -e _DllMainCRTStartup@12 foo.o | FileCheck -check-prefix I386-ENTRY %s
 | 
			
		||||
I386-ENTRY: -entry:DllMainCRTStartup@12
 | 
			
		||||
 | 
			
		||||
RUN: ld.lld -### -m i386pep foo.o --whole-archive bar.a --no-whole-archive baz.a | FileCheck -check-prefix WHOLE-ARCHIVE %s
 | 
			
		||||
WHOLE-ARCHIVE: foo.o -wholearchive:bar.a baz.a
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue