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. -- Regards, Bryan Drewery
signature.asc
Description: OpenPGP digital signature