On 5/27/2016 12:18 PM, Bryan Drewery wrote: > On 5/27/2016 12:09 PM, Alan Somers wrote: >> On Fri, May 27, 2016 at 10:19 AM, Dimitry Andric <d...@freebsd.org> wrote: >>> On 27 May 2016, at 18:01, Alan Somers <asom...@freebsd.org> wrote: >>>> >>>> On Fri, May 27, 2016 at 9:42 AM, Dimitry Andric <d...@freebsd.org> wrote: >>> ... >>>>> My guess is that either ${MAKEOBJDIRPREFIX}/usr/include/c++/v1 needs to >>>>> be added to the C++ include path, or some other path in the list is >>>>> missing, at least for C++ compilation. >>>>> >>>>> -Dimitry >>>> >>>> Here it is. It looks right to me; >>>> $MAKEOBJDIRPREFIX/home/asomers/freebsd/head/lib32/usr/include/c++/v1 >>>> is in the path, and stddef.h exists in that directory. >>>> >>>> $ c++ -v -m32 -DCOMPAT_32BIT -march=i686 -mmmx -msse -msse2 >>>> -L/scratch/tmp/asomers/obj/home/asomers/freebsd/head/lib32/usr/lib32 >>>> --sysroot=/scratch/tmp/asomers/obj/home/asomers/freebsd/head/lib32 >>>> -B/scratch/tmp/asomers/obj/home/asomers/freebsd/head/lib32/usr/lib32 >>>> -isystem >>>> /scratch/tmp/asomers/obj/home/asomers/freebsd/head/lib32/usr/include >>>> -O2 -pipe -MD -MF.depend.consumer.o -MTconsumer.o >>>> -fstack-protector-strong -Wsystem-headers -Werror -Wall >>>> -Wno-format-y2k -W -Wno-unused-parameter -Wpointer-arith >>>> -Wno-uninitialized -Wno-empty-body -Wno-string-plus-int >>>> -Wno-unused-const-variable -Wno-tautological-compare -Wno-unused-value >>>> -Wno-parentheses-equality -Wno-unused-function -Wno-enum-conversion >>>> -Wno-unused-local-typedef -Qunused-arguments -Wno-c++11-extensions >>>> -c /home/asomers/freebsd/head/lib/libdevdctl/consumer.cc -o consumer.o >>>> FreeBSD clang version 3.8.0 (tags/RELEASE_380/final 262564) (based on >>>> LLVM 3.8.0) >>>> Target: i386-unknown-freebsd11.0 >>>> Thread model: posix >>>> InstalledDir: >>>> /scratch/tmp/asomers/obj/home/asomers/freebsd/head/tmp/usr/bin >>>> "/scratch/tmp/asomers/obj/home/asomers/freebsd/head/tmp/usr/bin/c++" >>>> -cc1 -triple i386-unknown-freebsd11.0 -emit-obj -disable-free >>>> -main-file-name consumer.cc -mrelocation-model static -mthread-model >>>> posix -mdisable-fp-elim -masm-verbose -mconstructor-aliases >>>> -target-cpu i686 -target-feature +mmx -target-feature +sse >>>> -target-feature +sse2 -v -dwarf-column-info -debugger-tuning=gdb >>>> -coverage-file >>>> /scratch/tmp/asomers/obj/home/asomers/freebsd/head/world32/home/asomers/freebsd/head/lib/libdevdctl/consumer.o >>>> -resource-dir >>>> /scratch/tmp/asomers/obj/home/asomers/freebsd/head/tmp/usr/bin/../lib/clang/3.8.0 >>>> -dependency-file .depend.consumer.o -sys-header-deps -MT consumer.o >>>> -isystem >>>> /scratch/tmp/asomers/obj/home/asomers/freebsd/head/lib32/usr/include >>>> -D COMPAT_32BIT -isysroot >>>> /scratch/tmp/asomers/obj/home/asomers/freebsd/head/lib32 >>>> -internal-isystem >>>> /scratch/tmp/asomers/obj/home/asomers/freebsd/head/lib32/usr/include/c++/v1 >>>> -O2 -Wsystem-headers -Werror -Wall -Wno-format-y2k -W >>>> -Wno-unused-parameter -Wpointer-arith -Wno-uninitialized >>>> -Wno-empty-body -Wno-string-plus-int -Wno-unused-const-variable >>>> -Wno-tautological-compare -Wno-unused-value -Wno-parentheses-equality >>>> -Wno-unused-function -Wno-enum-conversion -Wno-unused-local-typedef >>>> -Wno-c++11-extensions -fdeprecated-macro -fdebug-compilation-dir >>>> /scratch/tmp/asomers/obj/home/asomers/freebsd/head/world32/home/asomers/freebsd/head/lib/libdevdctl >>>> -ferror-limit 19 -fmessage-length 80 -stack-protector 2 >>>> -fobjc-runtime=gnustep -fcxx-exceptions -fexceptions >>>> -fdiagnostics-show-option -fcolor-diagnostics -vectorize-loops >>>> -vectorize-slp -o consumer.o -x c++ >>>> /home/asomers/freebsd/head/lib/libdevdctl/consumer.cc >>>> clang -cc1 version 3.8.0 based upon LLVM 3.8.0 default target >>>> x86_64-unknown-freebsd11.0 >>>> ignoring duplicate directory >>>> "/scratch/tmp/asomers/obj/home/asomers/freebsd/head/lib32/usr/include" >>>> #include "..." search starts here: >>>> #include <...> search starts here: >>>> /scratch/tmp/asomers/obj/home/asomers/freebsd/head/lib32/usr/include >>>> /scratch/tmp/asomers/obj/home/asomers/freebsd/head/lib32/usr/include/c++/v1 >>>> /scratch/tmp/asomers/obj/home/asomers/freebsd/head/tmp/usr/bin/../lib/clang/3.8.0/include >>>> End of search list. >>> >>> The problem appears to be that the .../usr/include/c++/v1 directory >>> should come *before* the .../usr/include directory, otherwise the >>> #include_next<> logic will not work as expected. >>> >>> This is most likely caused by the option: >>> >>> -isystem >>> /scratch/tmp/asomers/obj/home/asomers/freebsd/head/lib32/usr/include >>> >>> because that forces this path to become before any auto-detected system >>> include directory. Note that this option is not needed, since the other >>> option: >>> >>> --sysroot=/scratch/tmp/asomers/obj/home/asomers/freebsd/head/lib32 >>> >>> is already taking care of adding the right include directories. It even >>> warns about the duplicate directory: >>> >>> ignoring duplicate directory >>> "/scratch/tmp/asomers/obj/home/asomers/freebsd/head/lib32/usr/include" >>> >>> So what happens if you delete the -isystem option and its argument? >>> >>> -Dimitry >>> >> >> If I take out -isystem, it compiles successfully. >> > > I'm looking at this more now. I added that -isystem in, but it should > have only been there for external GCC usage from first glance. >
It should all be fixed now after r300886. -- Regards, Bryan Drewery
signature.asc
Description: OpenPGP digital signature