]> granicus.if.org Git - clang/commitdiff
Implement -static-libstdc++ for linux.
authorRafael Espindola <rafael.espindola@gmail.com>
Mon, 17 Oct 2011 22:14:51 +0000 (22:14 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Mon, 17 Oct 2011 22:14:51 +0000 (22:14 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142290 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Driver/Options.td
lib/Driver/Tools.cpp

index ae8c7945cb93971ff02562228605661ccd7a3bf0..1c6635da1a52fbba02cbb78197274935eda7fbdb 100644 (file)
@@ -686,6 +686,7 @@ def single__module : Flag<"-single_module">;
 def specs_EQ : Joined<"-specs=">;
 def specs : Separate<"-specs">, Flags<[Unsupported]>;
 def static_libgcc : Flag<"-static-libgcc">;
+def static_libstdcxx : Flag<"-static-libstdc++">;
 def static : Flag<"-static">, Flags<[NoArgumentUnused]>;
 def std_default_EQ : Joined<"-std-default=">;
 def std_EQ : Joined<"-std=">;
index a71015307dd5791a08caa0ceb64bb7abf268f361..20b02f541e5eb80d5d91b66d0ade0fa9a51ff501 100644 (file)
@@ -4375,7 +4375,13 @@ void linuxtools::Link::ConstructJob(Compilation &C, const JobAction &JA,
   AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs);
 
   if (D.CCCIsCXX && !Args.hasArg(options::OPT_nostdlib)) {
+    bool OnlyLibstdcxxStatic = Args.hasArg(options::OPT_static_libstdcxx) &&
+      !Args.hasArg(options::OPT_static);
+    if (OnlyLibstdcxxStatic)
+      CmdArgs.push_back("-Bstatic");
     ToolChain.AddCXXStdlibLibArgs(Args, CmdArgs);
+    if (OnlyLibstdcxxStatic)
+      CmdArgs.push_back("-Bdynamic");
     CmdArgs.push_back("-lm");
   }