Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 17 Sep 2012 14:51:37 -0500
From:      Brooks Davis <brooks@freebsd.org>
To:        Warner Losh <imp@bsdimp.com>
Cc:        toolchain@freebsd.org
Subject:   Re: enabling libc++ by default when building with clang
Message-ID:  <20120917195137.GA43564@lor.one-eyed-alien.net>
In-Reply-To: <0D8164DE-97A3-4870-A8DF-37E91ECFE87F@bsdimp.com>
References:  <20120917191028.GA42648@lor.one-eyed-alien.net> <0D8164DE-97A3-4870-A8DF-37E91ECFE87F@bsdimp.com>

next in thread | previous in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
On Mon, Sep 17, 2012 at 01:36:53PM -0600, Warner Losh wrote:
> 
> On Sep 17, 2012, at 1:10 PM, Brooks Davis wrote:
> > Now that we have the COMPILER_TYPE variable I'm following up on an idea
> > by theraven@ that we should enable libc++ by default when we are
> > building world with a compiler that supports it.  The following patch
> > implements this:
> > 
> > http://people.freebsd.org/~brooks/patches/libc%2b%2b-default.diff
> > 
> > One key question is, when do we want to throw this switch?  Do we do it
> > now so people using clang start using it sooner or do we wait until
> > we've switched the default compiler and things have settled a bit?
> > 
> > I suspect that we'll want to wait, but I'm curious what others think.
> 
> Is the compiler type set to be the host's build, or the target's?

It's the target's compiler unless you do a make manually in a portion
of the tree.  This means that if you do "make -DWITH_CLANG_IS_CC
buildworld" with this patch that you get libc++ even on a 9-STABLE
system.

An alternative approach here would to enhance bsd.compiler.mk to have a
COMPILER_FEATURES variable and key off of a feature named something like
"c++11".  We'll certainly want to do something like that in the future
to support external compilers with varying features.

-- Brooks

> 
> Warner
> 
> > -- Brooks
> > 
> > Index: share/mk/bsd.own.mk
> > ===================================================================
> > --- share/mk/bsd.own.mk	(revision 240466)
> > +++ share/mk/bsd.own.mk	(working copy)
> > @@ -432,7 +432,6 @@
> >     ICONV \
> >     IDEA \
> >     INSTALL_AS_USER \
> > -    LIBCPLUSPLUS \
> >     NAND \
> >     OFED \
> >     SHARED_TOOLCHAIN
> > @@ -642,6 +641,33 @@
> > .endif
> > .endfor
> > 
> > +#
> > +# MK_* options that default to on if the compiler is clang.
> > +#
> > +.include <bsd.compiler.mk>
> > +.for var in \
> > +    LIBCPLUSPLUS
> > +.if defined(WITH_${var}) && defined(WITHOUT_${var})
> > +.error WITH_${var} and WITHOUT_${var} can't both be set.
> > +.endif
> > +.if defined(MK_${var})
> > +.error MK_${var} can't be set by a user.
> > +.endif
> > +.if ${COMPILER_TYPE} == "clang"
> > +.if defined(WITHOUT_${var})
> > +MK_${var}:=	no
> > +.else
> > +MK_${var}:=	yes
> > +.endif
> > +.else
> > +.if defined(WITH_${var})
> > +MK_${var}:=	yes
> > +.else
> > +MK_${var}:=	no
> > +.endif
> > +.endif
> > +.endfor
> > +
> > .if ${MK_CTF} != "no"
> > CTFCONVERT_CMD=	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
> > .elif defined(MAKE_VERSION) && ${MAKE_VERSION} >= 5201111300
> 

[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (FreeBSD)

iD8DBQFQV39JXY6L6fI4GtQRAjOoAKCexVUiSKRscPtkrig0Ml8hTFQW8QCgkyaH
UErYwygjgOt315ai927/Mnk=
=zNQn
-----END PGP SIGNATURE-----

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