Date: Sun, 8 Sep 2013 21:30:42 +0100 From: David Chisnall <theraven@FreeBSD.org> To: =?iso-8859-1?Q?Dag-Erling_Sm=F8rgrav?= <des@des.no> Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, dim@FreeBSD.org Subject: Re: svn commit: r255321 - in head: contrib/llvm/tools/clang/lib/Driver gnu/lib gnu/usr.bin/cc share/mk sys/sys tools/build/options Message-ID: <B9169D3D-1F3A-46B9-835E-5B3D592D18C7@FreeBSD.org> In-Reply-To: <86a9jnoynl.fsf@nine.des.no> References: <201309062008.r86K836C048843@svn.freebsd.org> <86a9jnoynl.fsf@nine.des.no>
next in thread | previous in thread | raw e-mail | index | archive | help
On 8 Sep 2013, at 21:18, Dag-Erling Sm=F8rgrav <des@des.no> wrote: > David Chisnall <theraven@FreeBSD.org> writes: >> Log: >> On platforms where clang is the default compiler, don't build gcc or = libstdc++. >=20 > This uncovers what I think is a bug in bsd.prog.mk: >=20 > des@ds4 /usr/src/usr.bin% make > =3D=3D=3D> alias (all) > =3D=3D=3D> apply (all) > =3D=3D=3D> ar (all) > =3D=3D=3D> asa (all) > =3D=3D=3D> at (all) > =3D=3D=3D> atf (all) > =3D=3D=3D> atf/atf-config (all) > make[2]: /usr/obj/usr/src/usr.bin/atf/atf-config/.depend, 111: = ignoring stale .depend for /usr/obj/usr/src/tmp/usr/lib/libstdc++.a > c++ -O2 -pipe -march=3Dnative -DGDB=3D\"gdb\" -DHAVE_CONFIG_H = -I/usr/src/usr.bin/atf/atf-config/../../../contrib/atf -g = -Qunused-arguments -fstack-protector -Wsystem-headers -Werror -Wall = -Wno-format-y2k -W -Wno-unused-parameter -Wpointer-arith = -Wno-uninitialized -Wno-empty-body -Wno-string-plus-int = -Wno-tautological-compare -Wno-unused-value -Wno-parentheses-equality = -Wno-unused-function -Wno-conversion -Wno-c++11-extensions -g -o = atf-config atf-config.o -latf-c++ -latf-c > des@ds4 /usr/src/usr.bin% grep libstdc = /usr/obj/usr/src/usr.bin/atf/atf-config/.depend=20 > atf-config: /usr/obj/usr/src/tmp/usr/lib/libstdc++.a > des@ds4 /usr/src/usr.bin% stat = /usr/obj/usr/src/tmp/usr/lib/libstdc++.a > stat: /usr/obj/usr/src/tmp/usr/lib/libstdc++.a: stat: No such file or = directory >=20 > That line was added by bsd.prog.mk: >=20 > .if defined(PROG_CXX) > .if !empty(CXXFLAGS:M-stdlib=3Dlibc++) > echo ${PROG}: ${LIBCPLUSPLUS} >> ${DEPENDFILE} > .else > echo ${PROG}: ${LIBSTDCPLUSPLUS} >> ${DEPENDFILE} > .endif > .endif >=20 > AFAICT, this logic should be inverted on platforms where clang is the > default compiler - perhaps like this: >=20 > Index: share/mk/bsd.prog.mk > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- share/mk/bsd.prog.mk (revision 255393) > +++ share/mk/bsd.prog.mk (working copy) > @@ -173,7 +173,7 @@ > .else > echo ${PROG}: ${LIBC} ${DPADD} >> ${DEPENDFILE} > .if defined(PROG_CXX) > -.if !empty(CXXFLAGS:M-stdlib=3Dlibc++) > +.if ${MK_CLANG_IS_CC} !=3D "no" || !empty(CXXFLAGS:M-stdlib=3Dlibc++) > echo ${PROG}: ${LIBCPLUSPLUS} >> ${DEPENDFILE} > .else > echo ${PROG}: ${LIBSTDCPLUSPLUS} >> ${DEPENDFILE} >=20 > although this misses the case where CLANG_IS_CC but we still want the > old libstdc++ - is that even possible? This case is possible with -stdlib=3Dlibstdc++, so similar logic should = apply. I think it should say: .if ${MK_CLANG_IS_CC} !=3D "no" && empty(CXXFLAGS:M-stdlib=3Dlibstdc++) echo ${PROG}: ${LIBCPLUSPLUS} >> ${DEPENDFILE} .else echo ${PROG}: ${LIBSTDCPLUSPLUS} >> ${DEPENDFILE} David
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?B9169D3D-1F3A-46B9-835E-5B3D592D18C7>