diff --git Makefile.inc1 Makefile.inc1 index 0daa440..0f856fd 100644 --- Makefile.inc1 +++ Makefile.inc1 @@ -545,9 +545,11 @@ TARGET_ABI= gnueabi .if defined(X_COMPILER_TYPE) && ${X_COMPILER_TYPE} == gcc # GCC requires -isystem and -L when using a cross-compiler. XCFLAGS+= -isystem ${WORLDTMP}/usr/include -L${WORLDTMP}/usr/lib +.if ${X_COMPILER_FEATURES:Mc++11} # Force using libc++ for external GCC. XCXXFLAGS+= -isystem ${WORLDTMP}/usr/include/c++/v1 -std=c++11 \ -nostdinc++ -L${WORLDTMP}/../lib/libc++ +.endif # ${X_COMPILER_FEATURES:Mc++11} .else TARGET_ABI?= unknown TARGET_TRIPLE?= ${TARGET_ARCH:C/amd64/x86_64/}-${TARGET_ABI}-freebsd11.0 diff --git Makefile.libcompat Makefile.libcompat index f0aafe6..31204e0 100644 --- Makefile.libcompat +++ Makefile.libcompat @@ -72,13 +72,20 @@ LIBCOMPATCFLAGS+= ${LIBCOMPATCPUFLAGS} \ # -B is needed to find /usr/lib32/crti.o for GCC and /usr/libsoft/crti.o for # Clang/GCC. LIBCOMPATCFLAGS+= -B${LIBCOMPATTMP}/usr/lib${libcompat} + +# External compiler needs +.if ${MK_CROSS_COMPILER} == "no" || \ + (${MK_CLANG_BOOTSTRAP} == "no" && ${MK_GCC_BOOTSTRAP} == "no") .if defined(X_COMPILER_TYPE) && ${X_COMPILER_TYPE} == gcc # GCC requires -isystem when using a cross-compiler. LIBCOMPATCFLAGS+= -isystem ${LIBCOMPATTMP}/usr/include +.if ${X_COMPILER_FEATURES:Mc++11} # Force using libc++ for external GCC. LIBCOMPATCXXFLAGS+= -isystem ${LIBCOMPATTMP}/usr/include/c++/v1 -std=c++11 \ -nostdinc++ -L${LIBCOMPAT_OBJTREE}${.CURDIR}/lib/libc++ -.endif +.endif # ${X_COMPILER_FEATURES:Mc++11} +.endif # defined(X_COMPILER_TYPE) && ${X_COMPILER_TYPE} == gcc +.endif # External compiler # Yes, the flags are redundant. LIBCOMPATWMAKEENV+= MAKEOBJDIRPREFIX=${LIBCOMPAT_OBJTREE} \