r193934 - Default to use libc++ on OS X 10.9+ and iOS 7+.

Jean-Daniel Dupas devlists at shadowlab.org
Tue Nov 5 11:23:40 PST 2013


I'm not sure it works with the CMake build system.

When I'm working with TOT (and CMake), I usually symlink the libc++/include dir at the right place in the install dir (lib/c++/v1) so clang found it automatically.

That said, produced binaries will always use the system libc++ as by default the libc++ install name is "/usr/lib/libc++.1.dylib" but it should not be an issue.

Le 5 nov. 2013 à 18:44, Bob Wilson <bob.wilson at apple.com> a écrit :

> On OS X the libc++ headers are meant to be installed along with clang.  If you check out the libc++ sources in the LLVM projects directory, they should be installed in the right place.
> 
> On Nov 5, 2013, at 9:42 AM, Howard Hinnant <hhinnant at apple.com> wrote:
> 
>> When I use tot clang, (and want libc++), I will forbid clang from looking the std::headers, and then tell it exactly where the headers are, e.g.:
>> 
>> $ clang++ -stdlib=libc++ -std=c++11 -nostdinc++ -I../libcxx/include test.cpp 
>> 
>> Howard
>> 
>> On Nov 5, 2013, at 12:35 PM, Nico Weber <thakis at chromium.org> wrote:
>> 
>>> In addition to the performance issues, libc++ apparently can't be found by clang: http://llvm.org/bugs/show_bug.cgi?id=17821
>>> 
>>> 
>>> On Sat, Nov 2, 2013 at 10:35 PM, Bob Wilson <bob.wilson at apple.com> wrote:
>>> I’m not familiar with those performance issues, so I’m CC’ing Howard in case he can provide any details on those issues.  In general, we’re in the process of migrating away from libstdc++ on OS X and iOS, so we really do want the default to be libc++ regardless of the language mode.  If you have particularly performance sensitive code, you can always choose to use libstdc++.
>>> 
>>> On Nov 2, 2013, at 7:05 PM, Nico Weber <thakis at chromium.org> wrote:
>>> 
>>>> Thanks for upstreaming this!
>>>> 
>>>> Should this only happen in C++11 mode? libc++ seems to be measurably slower than libstdc++ in C++03 mode (PR17703, PR14554, PR14555).
>>>> 
>>>> 
>>>> On Sat, Nov 2, 2013 at 4:19 PM, Bob Wilson <bob.wilson at apple.com> wrote:
>>>> Author: bwilson
>>>> Date: Sat Nov  2 18:19:53 2013
>>>> New Revision: 193934
>>>> 
>>>> URL: http://llvm.org/viewvc/llvm-project?rev=193934&view=rev
>>>> Log:
>>>> Default to use libc++ on OS X 10.9+ and iOS 7+.
>>>> 
>>>> Modified:
>>>>   cfe/trunk/lib/Driver/ToolChains.cpp
>>>>   cfe/trunk/test/PCH/cxx-typeid.cpp
>>>> 
>>>> Modified: cfe/trunk/lib/Driver/ToolChains.cpp
>>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=193934&r1=193933&r2=193934&view=diff
>>>> ==============================================================================
>>>> --- cfe/trunk/lib/Driver/ToolChains.cpp (original)
>>>> +++ cfe/trunk/lib/Driver/ToolChains.cpp Sat Nov  2 18:19:53 2013
>>>> @@ -839,6 +839,12 @@ DerivedArgList *Darwin::TranslateArgs(co
>>>>    }
>>>>  }
>>>> 
>>>> +  // Default to use libc++ on OS X 10.9+ and iOS 7+.
>>>> +  if (((isTargetMacOS() && !isMacosxVersionLT(10, 9)) ||
>>>> +       (isTargetIPhoneOS() && !isIPhoneOSVersionLT(7, 0))) &&
>>>> +      !Args.getLastArg(options::OPT_stdlib_EQ))
>>>> +    DAL->AddJoinedArg(0, Opts.getOption(options::OPT_stdlib_EQ), "libc++");
>>>> +
>>>>  // Validate the C++ standard library choice.
>>>>  CXXStdlibType Type = GetCXXStdlibType(*DAL);
>>>>  if (Type == ToolChain::CST_Libcxx) {
>>>> 
>>>> Modified: cfe/trunk/test/PCH/cxx-typeid.cpp
>>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/cxx-typeid.cpp?rev=193934&r1=193933&r2=193934&view=diff
>>>> ==============================================================================
>>>> --- cfe/trunk/test/PCH/cxx-typeid.cpp (original)
>>>> +++ cfe/trunk/test/PCH/cxx-typeid.cpp Sat Nov  2 18:19:53 2013
>>>> @@ -1,8 +1,8 @@
>>>> // Test this without pch.
>>>> -// RUN: %clang_cc1 -include %S/cxx-typeid.h -fsyntax-only -verify %s
>>>> +// RUN: %clang_cc1 -include %S/cxx-typeid.h -fsyntax-only -stdlib=libstdc++ -verify %s
>>>> 
>>>> -// RUN: %clang_cc1 -x c++-header -emit-pch -o %t.pch %S/cxx-typeid.h
>>>> -// RUN: %clang_cc1 -include-pch %t.pch -fsyntax-only -verify %s
>>>> +// RUN: %clang_cc1 -x c++-header -emit-pch -stdlib=libstdc++ -o %t.pch %S/cxx-typeid.h
>>>> +// RUN: %clang_cc1 -include-pch %t.pch -fsyntax-only -stdlib=libstdc++ -verify %s
>>>> 
>>>> // expected-no-diagnostics
>>>> 
>>>> 
>>>> 
>>>> _______________________________________________
>>>> cfe-commits mailing list
>>>> cfe-commits at cs.uiuc.edu
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>>> 
>>> 
>>> 
>> 
> 
> 
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

-- Jean-Daniel








More information about the cfe-commits mailing list