]> granicus.if.org Git - clang/commitdiff
Fake support for -print-multi-*
authorDaniel Dunbar <daniel@zuster.org>
Tue, 16 Jun 2009 23:25:22 +0000 (23:25 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Tue, 16 Jun 2009 23:25:22 +0000 (23:25 +0000)
 - I think we will eventually need to support this for realz, and some build
   processes seem to depend on these options.

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

include/clang/Driver/Options.def
include/clang/Driver/ToolChain.h
lib/Driver/Driver.cpp

index 7045f145ee510b5c0f31cbde476d11cee7a04139..abd07a92b1a26ee245028955ece8b5f97e846088 100644 (file)
@@ -565,9 +565,9 @@ OPTION("-print-file-name=", print_file_name_EQ, Joined, INVALID, INVALID, "", 0,
 OPTION("-print-ivar-layout", print_ivar_layout, Flag, INVALID, INVALID, "", 0, 0, 0)
 OPTION("-print-libgcc-file-name", print_libgcc_file_name, Flag, INVALID, INVALID, "", 0, 
        "Print the library path for \"libgcc.a\"", 0)
-OPTION("-print-multi-directory", print_multi_directory, Flag, INVALID, INVALID, "u", 0, 0, 0)
-OPTION("-print-multi-lib", print_multi_lib, Flag, INVALID, INVALID, "u", 0, 0, 0)
-OPTION("-print-multi-os-directory", print_multi_os_directory, Flag, INVALID, INVALID, "u", 0, 0, 0)
+OPTION("-print-multi-directory", print_multi_directory, Flag, INVALID, INVALID, "", 0, 0, 0)
+OPTION("-print-multi-lib", print_multi_lib, Flag, INVALID, INVALID, "", 0, 0, 0)
+OPTION("-print-multi-os-directory", print_multi_os_directory, Flag, INVALID, INVALID, "", 0, 0, 0)
 OPTION("-print-prog-name=", print_prog_name_EQ, Joined, INVALID, INVALID, "", 0,
        "Print the full program path of <name>", "<name>")
 OPTION("-print-search-dirs", print_search_dirs, Flag, INVALID, INVALID, "", 0, 
index 6196c130266dadbfb40ad39bcac52d98cfe2e268..c9d0ef197dae540e2d14b7892527feb92dfb4b47 100644 (file)
@@ -50,6 +50,8 @@ public:
   // Accessors
 
   const HostInfo &getHost() const { return Host; }
+  const llvm::Triple &getTriple() const { return Triple; }
+
   std::string getArchName() const { return Triple.getArchName(); }
   std::string getPlatform() const { return Triple.getVendorName(); }
   std::string getOS() const { return Triple.getOSName(); }
index d9a2c2c3935faff7ed1a97f32db8453f6a24500a..54704d48276c47a596489a7ef157fef51673bc9d 100644 (file)
@@ -429,6 +429,47 @@ bool Driver::HandleImmediateArgs(const Compilation &C) {
     return false;
   }
 
+  if (C.getArgs().hasArg(options::OPT_print_multi_lib)) {
+    // FIXME: We need tool chain support for this.
+    llvm::outs() << ".;\n";
+
+    switch (C.getDefaultToolChain().getTriple().getArch()) {
+    default:
+      break;
+      
+    case llvm::Triple::x86_64:
+      llvm::outs() << "x86_64;@m64" << "\n";
+      break;
+
+    case llvm::Triple::ppc64:
+      llvm::outs() << "ppc64;@m64" << "\n";
+      break;
+    }
+    return false;
+  }
+
+  // FIXME: What is the difference between print-multi-directory and
+  // print-multi-os-directory?
+  if (C.getArgs().hasArg(options::OPT_print_multi_directory) ||
+      C.getArgs().hasArg(options::OPT_print_multi_os_directory)) {
+    switch (C.getDefaultToolChain().getTriple().getArch()) {
+    default:
+    case llvm::Triple::x86:
+    case llvm::Triple::ppc:
+      llvm::outs() << "." << "\n";
+      break;
+      
+    case llvm::Triple::x86_64:
+      llvm::outs() << "x86_64" << "\n";
+      break;
+
+    case llvm::Triple::ppc64:
+      llvm::outs() << "ppc64" << "\n";
+      break;
+    }
+    return false;
+  }
+
   return true;
 }