diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2011-10-17 22:14:51 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2011-10-17 22:14:51 +0000 |
commit | 70b8d76e645c0f4de557fde27467eac578909af7 (patch) | |
tree | abb0b041ec8776f8b2fe99cd613fd7dea4e18108 /clang | |
parent | 317ebfe18e16375f5fb8be43a19899276893806e (diff) | |
download | bcm5719-llvm-70b8d76e645c0f4de557fde27467eac578909af7.tar.gz bcm5719-llvm-70b8d76e645c0f4de557fde27467eac578909af7.zip |
Implement -static-libstdc++ for linux.
llvm-svn: 142290
Diffstat (limited to 'clang')
-rw-r--r-- | clang/include/clang/Driver/Options.td | 1 | ||||
-rw-r--r-- | clang/lib/Driver/Tools.cpp | 6 |
2 files changed, 7 insertions, 0 deletions
diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index ae8c7945cb9..1c6635da1a5 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -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=">; diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index a71015307dd..20b02f541e5 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -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"); } |