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 >
pgpHE5LAVYQ8B.pgp
Description: PGP signature