sys.mk automatically gets included by make(1) and sets CXXFLAGS to CFLAGS. If a Makefile defines additional CFLAGS they will then be passed to the C++ compiler. Which creates problems with flags that should only be used by the C compiler in Makefiles that deal with both C and C++ (like Mesa).
Fix this situation by not initialising CXXFLAGS with CFLAGS. No problems building src/xenocara with the following diff: Index: share/mk/bsd.lib.mk =================================================================== RCS file: /cvs/src/share/mk/bsd.lib.mk,v retrieving revision 1.71 diff -u -p -r1.71 bsd.lib.mk --- share/mk/bsd.lib.mk 15 Oct 2013 22:40:00 -0000 1.71 +++ share/mk/bsd.lib.mk 16 Jul 2014 13:46:45 -0000 @@ -30,6 +30,7 @@ SHLIB_MINOR=${minor} .if defined(NOPIE) CFLAGS+= ${NOPIE_FLAGS} +CXXFLAGS+= ${NOPIE_FLAGS} AFLAGS+= ${NOPIE_FLAGS} .endif Index: share/mk/bsd.prog.mk =================================================================== RCS file: /cvs/src/share/mk/bsd.prog.mk,v retrieving revision 1.63 diff -u -p -r1.63 bsd.prog.mk --- share/mk/bsd.prog.mk 23 Apr 2014 18:24:23 -0000 1.63 +++ share/mk/bsd.prog.mk 16 Jul 2014 13:47:48 -0000 @@ -12,6 +12,7 @@ .if defined(LDSTATIC) || defined(NOPIE) CFLAGS+= ${NOPIE_FLAGS} +CXXFLAGS+= ${NOPIE_FLAGS} AFLAGS+= ${NOPIE_FLAGS} LDFLAGS+= ${NOPIE_LDFLAGS} .endif Index: share/mk/sys.mk =================================================================== RCS file: /cvs/src/share/mk/sys.mk,v retrieving revision 1.69 diff -u -p -r1.69 sys.mk --- share/mk/sys.mk 15 Jul 2014 21:59:16 -0000 1.69 +++ share/mk/sys.mk 16 Jul 2014 13:47:11 -0000 @@ -39,7 +39,7 @@ LINK.c?= ${CC} ${CFLAGS} ${CPPFLAGS} ${L HOSTCC?= cc CXX?= c++ -CXXFLAGS?= ${CFLAGS} +CXXFLAGS?= -O2 ${PIPE} ${DEBUG} COMPILE.cc?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c LINK.cc?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS} Index: gnu/lib/libstdc++-v3/Makefile =================================================================== RCS file: /cvs/src/gnu/lib/libstdc++-v3/Makefile,v retrieving revision 1.7 diff -u -p -r1.7 Makefile --- gnu/lib/libstdc++-v3/Makefile 21 Jun 2013 17:07:30 -0000 1.7 +++ gnu/lib/libstdc++-v3/Makefile 17 Jul 2014 06:28:16 -0000 @@ -7,13 +7,14 @@ GCC_TARGET= ${MACHINE_ARCH}-unknown-open LIB= stdc++ -CFLAGS+= -DIN_GLIBCPP_V3 -DHAVE_CONFIG_H +CPPFLAGS+= -DIN_GLIBCPP_V3 -DHAVE_CONFIG_H .if ${MACHINE_ARCH} == "arm" -CFLAGS+= -D_GLIBCXX_SJLJ_EXCEPTIONS=1 +CPPFLAGS+= -D_GLIBCXX_SJLJ_EXCEPTIONS=1 .endif -CFLAGS+= -I${.CURDIR} -I${SUPDIR} -I${GCCDIR} -I${SRCDIR}/include -CFLAGS+= -I${GCCLIB}/include -I${SRCDIR}/include -I${.CURDIR}/../libiberty/include -I. +CPPFLAGS+= -I${.CURDIR} -I${SUPDIR} -I${GCCDIR} -I${SRCDIR}/include +CPPFLAGS+= -I${GCCLIB}/include -I${SRCDIR}/include -I${.CURDIR}/../libiberty/include -I. CFLAGS+= -frandom-seed=RepeatabilityConsideredGood +CXXFLAGS+= -frandom-seed=RepeatabilityConsideredGood CXXFLAGS+= -fno-implicit-templates -ffunction-sections -fdata-sections \ -Wno-deprecated Index: gnu/lib/libstdc++-v3/Makefile.common =================================================================== RCS file: /cvs/src/gnu/lib/libstdc++-v3/Makefile.common,v retrieving revision 1.3 diff -u -p -r1.3 Makefile.common --- gnu/lib/libstdc++-v3/Makefile.common 16 May 2010 13:22:58 -0000 1.3 +++ gnu/lib/libstdc++-v3/Makefile.common 17 Jul 2014 06:57:22 -0000 @@ -10,10 +10,11 @@ SUPDIR= ${SRCDIR}/libsupc++ ${SRCDIR}/include ${SUPDIR} ${.CURDIR}/../libiberty/src \ ${.CURDIR}/../libstdc++-v3/obj -CFLAGS+= -DIN_GLIBCPP_V3 -DHAVE_CONFIG_H -CFLAGS+= -I${.CURDIR}/../libstdc++-v3/ -I${SUPDIR} -I${GCCDIR} -I${SRCDIR}/include -CFLAGS+= -I${GCCLIB}/include -I${SRCDIR}/include -I${.CURDIR}/../libiberty/include -I. +CPPFLAGS+= -DIN_GLIBCPP_V3 -DHAVE_CONFIG_H +CPPFLAGS+= -I${.CURDIR}/../libstdc++-v3/ -I${SUPDIR} -I${GCCDIR} -I${SRCDIR}/include +CPPFLAGS+= -I${GCCLIB}/include -I${SRCDIR}/include -I${.CURDIR}/../libiberty/include -I. CFLAGS+= -frandom-seed=RepeatabilityConsideredGood +CXXFLAGS+= -frandom-seed=RepeatabilityConsideredGood CXXFLAGS+= -fno-implicit-templates -ffunction-sections -fdata-sections \ -Wno-deprecated Index: gnu/lib/libsupc++-v3/Makefile =================================================================== RCS file: /cvs/src/gnu/lib/libsupc++-v3/Makefile,v retrieving revision 1.3 diff -u -p -r1.3 Makefile --- gnu/lib/libsupc++-v3/Makefile 18 Jul 2011 18:32:47 -0000 1.3 +++ gnu/lib/libsupc++-v3/Makefile 17 Jul 2014 06:56:26 -0000 @@ -9,11 +9,12 @@ LIB= supc++ SRCS= ${SUPSRCS} .if ${MACHINE_ARCH} == "arm" -CFLAGS+= -D_GLIBCXX_SJLJ_EXCEPTIONS=1 +CPPFLAGS+= -D_GLIBCXX_SJLJ_EXCEPTIONS=1 .endif # Build a standard .a lib with PIC objects NOPIC= CFLAGS+= ${PICFLAG} +CXXFLAGS+= ${PICFLAG} .include <bsd.lib.mk>