Index: CMakeLists.txt =================================================================== --- CMakeLists.txt +++ CMakeLists.txt @@ -201,6 +201,15 @@ set(CLANG_DEFAULT_CXX_STDLIB "") endif() +set(CLANG_DEFAULT_RTLIB "" CACHE STRING + "Default runtime library to use (libgcc or compiler-rt)") +if (NOT(CLANG_DEFAULT_RTLIB STREQUAL "" OR + CLANG_DEFAULT_RTLIB STREQUAL "libgcc" OR + CLANG_DEFAULT_RTLIB STREQUAL "compiler-rt")) + message(WARNING "Resetting default rtlib to use platform default") + set(CLANG_DEFAULT_RTLIB "") +endif() + set(CLANG_DEFAULT_OPENMP_RUNTIME "libomp" CACHE STRING "Default OpenMP runtime used by -fopenmp.") Index: include/clang/Config/config.h.cmake =================================================================== --- include/clang/Config/config.h.cmake +++ include/clang/Config/config.h.cmake @@ -11,6 +11,9 @@ /* Default C++ stdlib to use. */ #define CLANG_DEFAULT_CXX_STDLIB "${CLANG_DEFAULT_CXX_STDLIB}" +/* Default runtime library to use. */ +#define CLANG_DEFAULT_RTLIB "${CLANG_DEFAULT_RTLIB}" + /* Default OpenMP runtime used by -fopenmp. */ #define CLANG_DEFAULT_OPENMP_RUNTIME "${CLANG_DEFAULT_OPENMP_RUNTIME}" Index: lib/Driver/ToolChain.cpp =================================================================== --- lib/Driver/ToolChain.cpp +++ lib/Driver/ToolChain.cpp @@ -526,16 +526,16 @@ ToolChain::RuntimeLibType ToolChain::GetRuntimeLibType( const ArgList &Args) const { - if (Arg *A = Args.getLastArg(options::OPT_rtlib_EQ)) { - StringRef Value = A->getValue(); - if (Value == "compiler-rt") - return ToolChain::RLT_CompilerRT; - if (Value == "libgcc") - return ToolChain::RLT_Libgcc; - getDriver().Diag(diag::err_drv_invalid_rtlib_name) - << A->getAsString(Args); - } + const Arg* A = Args.getLastArg(options::OPT_rtlib_EQ); + StringRef LibName = A ? A->getValue() : CLANG_DEFAULT_RTLIB; + if (LibName == "compiler-rt") + return ToolChain::RLT_CompilerRT; + if (LibName == "libgcc") + return ToolChain::RLT_Libgcc; + if (A) + getDriver().Diag(diag::err_drv_invalid_rtlib_name) << A->getAsString(Args); + return GetDefaultRuntimeLibType(); }