Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 29 Oct 2013 13:34:24 +0100
From:      Michael Gmelin <freebsd@grem.de>
To:        Dimitry Andric <dim@FreeBSD.org>
Cc:        "freebsd-ports@freebsd.org list" <freebsd-ports@freebsd.org>
Subject:   Re: Build C++ based packages using C++11
Message-ID:  <20131029133424.391625c3@bsd64.grem.de>
In-Reply-To: <CA2B36F5-2251-471B-A375-52A1582474ED@FreeBSD.org>
References:  <20131028195708.53325afe@bsd64.grem.de> <CA2B36F5-2251-471B-A375-52A1582474ED@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 29 Oct 2013 00:16:17 +0100
Dimitry Andric <dim@FreeBSD.org> wrote:

> On 28 Oct 2013, at 19:57, Michael Gmelin <freebsd@grem.de> wrote:
> > Now that most ports build ok with clang, are there any steps planned
> > towards supporting C++11 and libc++ in the ports tree? I'm thinking
> > of flags like NEEDS_CPP98, NEEDS_CPP11 etc. With C++14 at the
> > horizon I expect more problems with ports depending on C++11 and
> > even though mixing standard libraries and language revisions might
> > build in many cases, it can lead to terrible problems at run time.
> 
> Aren't the Mozilla ports already doing something like this now?  (See
> https://developer.mozilla.org/en-US/docs/Using_CXX_in_Mozilla_code for
> their specific needs.)
> 
> -Dimitry
> 

I was thinking more of building the entire stack using C++11 (libc++
requires it anyway). To give you an example I know personally, the port
devel/ice provides a bigger feature set if C++11 is available. If it's
used, it's advised to also build dependencies (e.g. databases/db5)
using C++11 as well, to make sure symbols and exception handling works
properly.

So if developing a software that uses Ice and C++11 features, which in
turn requires to build all C++ port dependencies (including Ice and
others commonly used like boost-libs) using C++11, it really trickles
down to be able to build all ports using the current version of the
standard. This is a lot of work (many ports have minor issues that can
be corrected easily, some are more complicated).

The way I would approach this is to set up poudriere to build the
entire tree using clang++ -std=c++11 -stdlib=libc++ and then start
dealing with the fallout, fixing smaller problems immediately (or make
the maintainers fix them) and mark ports that are to hard to fix as
"NEEDS_CPP98" or something like this.

Comments?

-- 
Michael Gmelin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20131029133424.391625c3>