On 8 Sep 2013, at 21:18, Dag-Erling Smørgrav <d...@des.no> wrote:

> David Chisnall <thera...@freebsd.org> writes:
>> Log:
>>  On platforms where clang is the default compiler, don't build gcc or 
>> libstdc++.
> 
> This uncovers what I think is a bug in bsd.prog.mk:
> 
> des@ds4 /usr/src/usr.bin% make
> ===> alias (all)
> ===> apply (all)
> ===> ar (all)
> ===> asa (all)
> ===> at (all)
> ===> atf (all)
> ===> 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=native -DGDB=\"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 
> 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
> 
> That line was added by bsd.prog.mk:
> 
> .if defined(PROG_CXX)
> .if !empty(CXXFLAGS:M-stdlib=libc++)
>        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
> ===================================================================
> --- 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=libc++)
> +.if ${MK_CLANG_IS_CC} != "no" || !empty(CXXFLAGS:M-stdlib=libc++)
>       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?

This case is possible with -stdlib=libstdc++, so similar logic should apply.  I 
think it should say:

.if ${MK_CLANG_IS_CC} != "no" && empty(CXXFLAGS:M-stdlib=libstdc++)
        echo ${PROG}: ${LIBCPLUSPLUS} >> ${DEPENDFILE}
.else
        echo ${PROG}: ${LIBSTDCPLUSPLUS} >> ${DEPENDFILE}

David

_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to