Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 20 Jun 2014 19:31:57 -0700
From:      Mark Millard <markmi@dsl-only.net>
To:        freebsd-ppc@freebsd.org
Subject:   PowerPC Packages [boost vs. libc++ apparently being missing at the time]
Message-ID:  <492B39F0-BB51-469A-90FE-DBE4F4A81B87@dsl-only.net>
In-Reply-To: <5AD2392C-AA99-40AA-94EC-2AE6EFCEA874@dsl-only.net>
References:  <8C621F9D-6AAD-4CCC-BE2F-0EEEDC433FCB@dsl-only.net> <A8D49D1C-A0C9-4A3D-8EAC-330C8538B51C@dsl-only.net> <5AD2392C-AA99-40AA-94EC-2AE6EFCEA874@dsl-only.net>

next in thread | previous in thread | raw e-mail | index | archive | help
For the following boost build error (the first) I think the explanation =
is simply that /usr/lib/libc++.* is not being built with clang from =
/usr/src/contrib/libc++/... and installed first. clang is required for =
this build because the gcc vintage (compiler and C++ library) that =
FreeBSD is stuck at is too old to handle C++11 and its library and =
libc++ is modern and requires C++ 11. And boost apparently requires =
clang contexts to be using c++11 and c++11's library.

> Building boost-libs-1.55.0_2.txz (origin =
/buildshare/ports/355755/devel/boost-libs) for powerpc-10-0 on XXX
> ...
> clang-linux.compile.c++.without-pch =
bin.v2/libs/atomic/build/clang-linux-3.3/release/threading-multi/lockpool.=
o
> clang-linux.link.dll =
bin.v2/libs/atomic/build/clang-linux-3.3/release/threading-multi/libboost_=
atomic.so.1.55.0
> /usr/bin/ld: cannot find -lc++
> clang++: error: linker command failed with exit code 1 (use -v to see =
invocation)

=46rom https://wiki.freebsd.org/NewC++Stack are notes about this for 9.X =
and 10.0 where clang is not yet the default compiler:

> ... They were merged into 9-STABLE prior to 9.1 and are in 9.1 and =
later, but libc++ is not built by default in 9.x. They are all built by =
default in 10.0, replacing their GNU equivalents, on any platforms where =
clang is the default compiler. Our old GCC is not capable of building =
libc++ (which uses C++11 internally), so this stack is not built by =
default on other architectures.

As far as I can tell technically /lib/libcxxrt.* (with its symbolic link =
in /usr/lib/) and then clang's/llvm's /usr/lib/libc++.* should be built =
and in place before trying hosted-implementation C++11 compiles with =
clang. (Freestanding C++11 implementations instead have an =
implementation defined set of C++ libraries and so /usr/lib/libc++.* =
need not be involved.) The lack of /usr/lib/libc++.* for =
powerpc/powerpc64 would seem to be the issue for the above. i386 and =
amd64 for 10.0-RELEASE (and later) have /usr/lib/libc++.* in place as =
required and do not have this problem from what I can tell.

[I'm away from the PowerMac's so I can not cross check everything =
currently. Sorry if that means that I've made any mistakes above.]

=3D=3D=3D
Mark Millard
markmi at dsl-only.net





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?492B39F0-BB51-469A-90FE-DBE4F4A81B87>