Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 08 Sep 2013 22:18:22 +0200
From:      =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= <des@des.no>
To:        David Chisnall <theraven@FreeBSD.org>
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:  <86a9jnoynl.fsf@nine.des.no>
In-Reply-To: <201309062008.r86K836C048843@svn.freebsd.org> (David Chisnall's message of "Fri, 6 Sep 2013 20:08:03 %2B0000 (UTC)")
References:  <201309062008.r86K836C048843@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
David Chisnall <theraven@FreeBSD.org> writes:
> Log:
>   On platforms where clang is the default compiler, don't build gcc or li=
bstdc++.

This uncovers what I think is a bug in bsd.prog.mk:

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 sta=
le .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/us=
r.bin/atf/atf-config/../../../contrib/atf -g -Qunused-arguments -fstack-pro=
tector -Wsystem-headers -Werror -Wall -Wno-format-y2k -W -Wno-unused-parame=
ter -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 at=
f-config.o -latf-c++ -latf-c
des@ds4 /usr/src/usr.bin% grep libstdc /usr/obj/usr/src/usr.bin/atf/atf-con=
fig/.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 direc=
tory

That line was added by bsd.prog.mk:

.if defined(PROG_CXX)
.if !empty(CXXFLAGS:M-stdlib=3Dlibc++)
        echo ${PROG}: ${LIBCPLUSPLUS} >> ${DEPENDFILE}
.else
        echo ${PROG}: ${LIBSTDCPLUSPLUS} >> ${DEPENDFILE}
.endif
.endif

AFAICT, this logic should be inverted on platforms where clang is the
default compiler - perhaps like this:

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}

although this misses the case where CLANG_IS_CC but we still want the
old libstdc++ - is that even possible?

DES
--=20
Dag-Erling Sm=C3=B8rgrav - des@des.no



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?86a9jnoynl.fsf>