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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242533 91177308-0d34-0410-b5e6-96231b3b80d8

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

index 17680e3b3bb0f3824019e63644561ead3c722e19..b0e704d6badc1065a576c58f70c0678c6dd2b448 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 0aa1affbebc9f7beda66df1e1e422cf956d8d1de..5a56ef7468d4a1098afe260ff3da8065a8d6b69e 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/test/LibDriver/thin.test b/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>