Add support for producing thin archives in llvm-lib.
authorRafael Espindola <rafael.espindola@gmail.com>
Fri, 17 Jul 2015 16:01:11 +0000 (16:01 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Fri, 17 Jul 2015 16:01:11 +0000 (16:01 +0000)
I will send an entry in docs/CommandGuide for review today.

llvm-svn: 242533

llvm/lib/LibDriver/LibDriver.cpp
llvm/lib/LibDriver/Options.td
llvm/test/LibDriver/thin.test [new file with mode: 0644]

index 17680e3..b0e704d 100644 (file)
@@ -141,7 +141,7 @@ int llvm::libDriverMain(llvm::ArrayRef<const char*> ArgsArr) {
   std::pair<StringRef, std::error_code> Result =
       llvm::writeArchive(getOutputPath(&Args, Members[0]), Members,
                          /*WriteSymtab=*/true, object::Archive::K_GNU,
-                         /*Deterministic*/ true, /*Thin*/ false);
+                         /*Deterministic*/ true, Args.hasArg(OPT_llvmlibthin));
 
   if (Result.second) {
     if (Result.first.empty())
index 0aa1aff..5a56ef7 100644 (file)
@@ -12,6 +12,8 @@ class P<string name, string help> :
 def libpath: P<"libpath", "Object file search path">;
 def out    : P<"out", "Path to file to write output">;
 
+def llvmlibthin : F<"llvmlibthin">;
+
 //==============================================================================
 // The flags below do nothing. They are defined only for lib.exe compatibility.
 //==============================================================================
diff --git a/llvm/test/LibDriver/thin.test b/llvm/test/LibDriver/thin.test
new file mode 100644 (file)
index 0000000..4ab9d61
--- /dev/null
@@ -0,0 +1,9 @@
+RUN: echo foo > %t
+
+RUN: llvm-lib  -out:%t.a %t
+RUN: FileCheck --check-prefix=FAT %s < %t.a
+FAT: !<arch>
+
+RUN: llvm-lib  -out:%t.thin.a -llvmlibthin %t
+RUN: FileCheck --check-prefix=THIN %s < %t.thin.a
+THIN: !<thin>