Index: share/mk/src.opts.mk =================================================================== --- share/mk/src.opts.mk (revision 273379) +++ share/mk/src.opts.mk (working copy) @@ -358,4 +358,12 @@ MK_LLDB:= no .endif +# gcc 4.8 and newer supports libc++, so suppress gnuc++ in that case. +# while in theory we could build it with that, we don't want to do +# that since it creates too much confusion for too little gain. +.if ${COMPILER_TYPE} == "gcc" && ${COMPILER_VERSION} >= 40800 +MK_GNUCXX:=no +MK_GCC:=no .endif + +.endif # !target(____) Index: share/mk/bsd.lib.mk =================================================================== --- share/mk/bsd.lib.mk (revision 273379) +++ share/mk/bsd.lib.mk (working copy) @@ -207,7 +207,7 @@ SOLINKOPTS= -shared -Wl,-x .if !defined(ALLOW_SHARED_TEXTREL) -SOLINKOPTS+= -Wl,--fatal-warnings -Wl,--warn-shared-textrel +SOLINKOPTS+= -Wl,--no-fatal-warnings -Wl,--warn-shared-textrel .endif .if target(beforelinking) Index: share/mk/bsd.dep.mk =================================================================== --- share/mk/bsd.dep.mk (revision 273379) +++ share/mk/bsd.dep.mk (working copy) @@ -49,7 +49,7 @@ HTAGSFLAGS?= .if ${CC} != "cc" -MKDEPCMD?= CC='${CC}' mkdep +MKDEPCMD?= CC='${CC} ${DEPFLAGS}' mkdep .else MKDEPCMD?= mkdep .endif Index: share/mk/bsd.compiler.mk =================================================================== --- share/mk/bsd.compiler.mk (revision 273379) +++ share/mk/bsd.compiler.mk (working copy) @@ -42,7 +42,8 @@ .endif .undef _v -.if ${COMPILER_TYPE} == "clang" +.if ${COMPILER_TYPE} == "clang" || \ + (${COMPILER_TYPE} == "gcc" && ${COMPILER_VERSION} >= 40800) COMPILER_FEATURES= c++11 .else COMPILER_FEATURES= Index: lib/libc++/Makefile =================================================================== --- lib/libc++/Makefile (revision 273379) +++ lib/libc++/Makefile (working copy) @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + LIBCXXRTDIR= ${.CURDIR}/../../contrib/libcxxrt HDRDIR= ${.CURDIR}/../../contrib/libc++/include SRCDIR= ${.CURDIR}/../../contrib/libc++/src @@ -192,4 +194,14 @@ .endfor EXTDIR= ${CXXINCLUDEDIR}/ext +.if ${MK_GNUCXX} == "no" && ${COMPILER_TYPE} == "gcc" +CLEANFILES+= libstdc++.so libstdc++.a + +afterinstall: + ln -sf ${DESTDIR}${LIBDIR}/lib${LIB}.so \ + ${.OBJDIR}/libstdc++.so + ln -sf ${DESTDIR}${LIBDIR}/lib${LIB}.a \ + ${.OBJDIR}/libstdc++.a +.endif + .include Index: Makefile.inc1 =================================================================== --- Makefile.inc1 (revision 273379) +++ Makefile.inc1 (working copy) @@ -323,7 +323,8 @@ X${BINUTIL}?= ${${BINUTIL}} .endif .endfor -WMAKEENV+= CC="${XCC} ${XFLAGS}" CXX="${XCXX} ${XFLAGS}" \ +WMAKEENV+= CC="${XCC} ${XFLAGS}" CXX="${XCXX} ${XFLAGS} ${XXFLAGS}" \ + DEPFLAGS="${DEPFLAGS}" \ CPP="${XCPP} ${XFLAGS}" \ AS="${XAS}" AR="${XAR}" LD="${XLD}" NM=${XNM} \ OBJDUMP=${XOBJDUMP} OBJCOPY="${XOBJCOPY}" \ @@ -351,6 +352,8 @@ .endif .if defined(X_COMPILER_TYPE) && ${X_COMPILER_TYPE} == gcc XFLAGS+= -isystem ${WORLDTMP}/usr/include -L${WORLDTMP}/usr/lib +XXFLAGS+= -I${WORLDTMP}/usr/include/c++/v1 -std=gnu++11 -L${WORLDTMP}/../lib/libc++ +DEPFLAGS+= -I${WORLDTMP}/usr/include/c++/v1 .else TARGET_ABI?= unknown TARGET_TRIPLE?= ${TARGET_ARCH:C/amd64/x86_64/}-${TARGET_ABI}-freebsd11.0