Can you try and go ahead and build one with clang right out of the svn?

The appropriate order from my experience, starting from a clean machine with 
only gcc (experimented on a VM running vanilla Ubuntu 13.04):

LLVM+clang, use C++98
libc++rt, CC=clang, CXX=clang++
libc++, CC=clang, CXX=clang++, LDFLAGS+=-lc++rt
LLVM+clang+lldb, CC=clang, CXX=clang++, CXXFLAGS+="-std=c++11 -stdlib=libc++", 
LDFLAGS+="-stdlib=libc++ -lc++rt"
libobjc2, CC=clang, CXX=clang++, CXXFLAGS+="-std=c++11 -stdlib=libc++", 
LDFLAGS+="-stdlib=libc++ -lc++rt"
libdispatch, CC=clang, CXX=clang++, CXXFLAGS+="-std=c++11 -stdlib=libc++", 
LDFLAGS+="-stdlib=libc++ -lc++rt -lobjc"
libobjc2, CC=clang, CXX=clang++, CXXFLAGS+="-std=c++11 -stdlib=libc++", 
LDFLAGS+="-stdlib=libc++ -lc++rt -ldispatch"

This will bootstrap LLVM/clang properly with lldb support (the debugger, 
requires C++11 to build), with libraries:
* libc++rt LLVM C++ ABI library,
* libc++ LLVM C++ standard library (linked against libc++rt explicitly, fixing 
the clang bug of not linking against the appropriate C++ ABI library),
* libobjc2 GNUstep Objective-C runtime library, doubling as the sole Blocks 
runtime library and linked against libdispatch. (Since I already have libobjc2 
and pretty much there is no non-Objective-C code uses Blocks, I just used that 
to save the hassle)
* libdispatch Grand Central Dispatch.

And if you linker (and friends) supports LTO, you can build LLVM+clang+lldb 
(2nd pass), libc++, libobjc2 and libdispatch with optimizations full on (-O4 
-flto, including LTO) and that will result in binaries running really fast.

As a funny side note, the only time my libobjc2 test passed 100% is when I 
built it with optimizations full on.

在 2013-6-13,上午8:25,Frank Rehwinkel <[email protected]> 写道:

> This thread is about the same problem with FreeBSD 9.1 back in March.
> 
> http://lists.gnu.org/archive/html/gnustep-dev/2013-03/msg00127.html
> 
> The solution seems to be to build libcxxrt.
> 
> But how?  When I try to follow this instruction
> 
> I've put MK_LIBCPLUSPLUS = yes in /etc/make.conf now.
> 
> and cd to /usr/src/lib/libcxxrt/ but then make fails with
> 
> root@free91:/usr/src/lib/libcxxrt # make
> "/usr/share/mk/bsd.own.mk", line 478: MK_LIBCPLUSPLUS can't be set by a user.
> 
> So I just don't know how to get this library built.  Not as simple as getting 
> a port compiled I guess.
> 
> 
> 
> On Wed, Jun 12, 2013 at 7:07 PM, Frank Rehwinkel <[email protected]> 
> wrote:
> libsupc++.a does have symbols in it.
> nm -g reports no symbols on libsupc++.so.1.
> 
> 
> On Wed, Jun 12, 2013 at 6:52 PM, Maxthon Chan <[email protected]> wrote:
> Oh it just hit me - maybe you want libsupc++.a instead of .so, which (may) 
> ask for libc++ to build.
> 
> I used to simply force linking libobjc2 against libc++ but that tend to make 
> app load a little slower and consume some more memory (and then defeat this 
> performance penalty by enforcing link-time optimization in Base and GUI).
> 
> 在 2013-6-13,上午6:48,Frank Rehwinkel <[email protected]> 写道:
> 
>> I've checked the libsupc++ libraries are the same on the host as in the 
>> jail.  Same sizes, same symbolic links.
>> 
>> 
>> On Wed, Jun 12, 2013 at 6:39 PM, David Chisnall <[email protected]> wrote:
>> 
>> On 12 Jun 2013, at 23:35, Frank Rehwinkel <[email protected]> wrote:
>> 
>> > -- Using /usr/lib/libsupc++.so as the C++ runtime library
>> 
>> Hmm, this should work.  The C++ runtime symbols are missing from this 
>> library?
>> 
>> David
>> 
>> -- Sent from my Apple II
>> 
>> 
> 
> 
> 

_______________________________________________
Gnustep-dev mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/gnustep-dev

Reply via email to