Hello!

Trying to use --with-build-sysroot configure option, the build failed
with "error: no include path in which to search for ..." error.

This problem come down to the fact, that -isysroot is ignored when
crosscompiling:

$ more in.c
#include <time.h>

Native compiler compiles this without problems:

$ ~/gcc-build/gcc/xgcc -B ~/gcc-build/gcc -isysroot
/home/uros/sys-root -quiet -v in.c

Target: x86_64-unknown-linux-gnu
Configured with: ../gcc-svn/trunk/configure --enable-languages=c,c++,fortran
Thread model: posix
gcc version 4.6.0 20101015 (experimental) [trunk revision 165513] (GCC)
COLLECT_GCC_OPTIONS='-B' '/home/uros/gcc-build/gcc' '-isysroot'
'/home/uros/sys-root' '-v' '-mtune=generic' '-march=x86-64'
 /home/uros/gcc-build/gcc/cc1 -quiet -v -iprefix
/home/uros/gcc-build/gcc/../lib/gcc/x86_64-unknown-linux-gnu/4.6.0/
-isystem /home/uros/gcc-build/gcc/include -isystem
/home/uros/gcc-build/gcc/include-fixed -isysroot /home/uros/sys-root
in.c -quiet -dumpbase in.c -mtune=generic -march=x86-64 -auxbase in
-version -o /tmp/ccyTmHfz.s
GNU C (GCC) version 4.6.0 20101015 (experimental) [trunk revision
165513] (x86_64-unknown-linux-gnu)
        compiled by GNU C version 4.6.0 20101015 (experimental) [trunk
revision 165513], GMP version 4.3.1, MPFR version 2.4.2, MPC version
0.8.1
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
ignoring nonexistent directory
"/home/uros/gcc-build/gcc/../lib/gcc/x86_64-unknown-linux-gnu/4.6.0/include"
ignoring nonexistent directory
"/home/uros/gcc-build/gcc/../lib/gcc/x86_64-unknown-linux-gnu/4.6.0/include-fixed"
ignoring nonexistent directory
"/home/uros/gcc-build/gcc/../lib/gcc/x86_64-unknown-linux-gnu/4.6.0/../../../../x86_64-unknown-linux-gnu/include"
ignoring nonexistent directory
"/home/uros/gcc-build/gcc/../lib/gcc/../../lib/gcc/x86_64-unknown-linux-gnu/4.6.0/include"
ignoring nonexistent directory "/home/uros/sys-root/usr/local/include"
ignoring nonexistent directory
"/home/uros/gcc-build/gcc/../lib/gcc/../../lib/gcc/x86_64-unknown-linux-gnu/4.6.0/include-fixed"
ignoring nonexistent directory
"/home/uros/gcc-build/gcc/../lib/gcc/../../lib/gcc/x86_64-unknown-linux-gnu/4.6.0/../../../../x86_64-unknown-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /home/uros/gcc-build/gcc/include
 /home/uros/gcc-build/gcc/include-fixed
 /home/uros/sys-root/usr/include
End of search list.

Crosscompiler does not handle -isysroot correctly:

$ ~/gcc-build-alpha/gcc/xgcc -B ~/gcc-build-alpha/gcc -isysroot
/home/uros/sys-root -quiet -v in.c

Target: alphaev68-pc-linux-gnu
Configured with: ../gcc-svn/trunk/configure
--target=alphaev68-pc-linux-gnu --enable-languages=c
Thread model: posix
gcc version 4.6.0 20101009 (experimental) [trunk revision 165234] (GCC)
COLLECT_GCC_OPTIONS='-B' '/home/uros/gcc-build-alpha/gcc' '-isysroot'
'/home/uros/sys-root' '-v' '-mcpu=ev67'
 /home/uros/gcc-build-alpha/gcc/cc1 -quiet -v -iprefix
/home/uros/gcc-build-alpha/gcc/../lib/gcc/alphaev68-pc-linux-gnu/4.6.0/
-isystem /home/uros/gcc-build-alpha/gcc/include -isystem
/home/uros/gcc-build-alpha/gcc/include-fixed -isysroot
/home/uros/sys-root in.c -quiet -dumpbase in.c -mcpu=ev67 -auxbase in
-version -o /tmp/cc9QXyzH.s
GNU C (GCC) version 4.6.0 20101009 (experimental) [trunk revision
165234] (alphaev68-pc-linux-gnu)
        compiled by GNU C version 4.4.4 20100630 (Red Hat 4.4.4-10), GMP
version 4.3.1, MPFR version 2.4.2, MPC version 0.8.1
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
ignoring nonexistent directory
"/home/uros/gcc-build-alpha/gcc/../lib/gcc/alphaev68-pc-linux-gnu/4.6.0/include"
ignoring nonexistent directory
"/home/uros/gcc-build-alpha/gcc/../lib/gcc/alphaev68-pc-linux-gnu/4.6.0/include-fixed"
ignoring nonexistent directory
"/home/uros/gcc-build-alpha/gcc/../lib/gcc/alphaev68-pc-linux-gnu/4.6.0/../../../../alphaev68-pc-linux-gnu/sys-include"
ignoring nonexistent directory
"/home/uros/gcc-build-alpha/gcc/../lib/gcc/alphaev68-pc-linux-gnu/4.6.0/../../../../alphaev68-pc-linux-gnu/include"
ignoring nonexistent directory
"/home/uros/gcc-build-alpha/gcc/../lib/gcc/../../lib/gcc/alphaev68-pc-linux-gnu/4.6.0/include"
ignoring nonexistent directory
"/home/uros/gcc-build-alpha/gcc/../lib/gcc/../../lib/gcc/alphaev68-pc-linux-gnu/4.6.0/include-fixed"
ignoring nonexistent directory
"/home/uros/gcc-build-alpha/gcc/../lib/gcc/../../lib/gcc/alphaev68-pc-linux-gnu/4.6.0/../../../../alphaev68-pc-linux-gnu/sys-include"
ignoring nonexistent directory
"/home/uros/gcc-build-alpha/gcc/../lib/gcc/../../lib/gcc/alphaev68-pc-linux-gnu/4.6.0/../../../../alphaev68-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /home/uros/gcc-build-alpha/gcc/include
 /home/uros/gcc-build-alpha/gcc/include-fixed
End of search list.

Please note that /home/uros/sys-root/usr/include include directory is
missing at the end.

The difference happens in gcc/cppdefault.c:

#if defined (CROSS_DIRECTORY_STRUCTURE) && !defined (TARGET_SYSTEM_ROOT)
# undef LOCAL_INCLUDE_DIR
# undef SYSTEM_INCLUDE_DIR
# undef STANDARD_INCLUDE_DIR
#else
# undef CROSS_INCLUDE_DIR
#endif

Commenting out #undef STANDARD_INCLUDE_DIR fixes the problem.

Uros.

Reply via email to