Jason Pyeron wrote: >> FTR: I ran into some serious complication (to do with the >> layout of headers and libs and having stuff in a w32api >> subdir) and it appears that something is not quite working >> when it comes to building a cross-compiler by the standard >> procedures. It'll take me a little time to hack my way >> through and figure out what's going on (and I'll be >> multitasking with a few other projects I have running), so >> I'll get back to the list with a HOWTO when I've worked it all out. > > If there is something I could throw my spare cycles at?
If you'd like. The problem is that the build fails when it tries to build libgcc: > /home/davek/cyg-sysroot/obj-gcc/./gcc/xgcc > -B/home/davek/cyg-sysroot/obj-gcc/./gcc/ -B/usr/local/i686-pc-cygwin/bin/ > -B/usr/local/i686-pc-cygwin/lib/ -isystem /usr/local/i686-pc-cygwin/include > -isystem /usr/local/i686-pc-cygwin/sys-include -O2 -g -g -O2 -O2 -O2 -g -g > -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -W -Wall -Wwrite-strings > -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem > ./include -I. -I. -I/home/davek/cyg-sysroot/gcc-4.3.2/gcc > -I/home/davek/cyg-sysroot/gcc-4.3.2/gcc/. > -I/home/davek/cyg-sysroot/gcc-4.3.2/gcc/../include > -I/home/davek/cyg-sysroot/gcc-4.3.2/gcc/../libcpp/include -I/usr/include > -I/usr/include -I/home/davek/cyg-sysroot/gcc-4.3.2/gcc/../libdecnumber > -I/home/davek/cyg-sysroot/gcc-4.3.2/gcc/../libdecnumber/dpd -I../libdecnumber > -g0 -finhibit-size-directive -fno-inline-functions -fno-exceptions > -fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize -I. > -I. -I../.././gcc -I/home/davek/cyg-sysroot/gcc-4.3.2/lib gcc -I/home/davek/cyg-sysroot/gcc-4.3.2/libgcc/. -I/home/davek/cyg-sysroot/gcc-4.3.2/libgcc/../gcc -I/home/davek/cyg-sysroot/gcc-4.3.2/libgcc/../include -o crtbegin.o -MT crtbegin.o -MD -MP -MF crtbegin.dep -fno-omit-frame-pointer -c \ > > /home/davek/cyg-sysroot/gcc-4.3.2/libgcc/../gcc/config/i386/cygming-crtbegin.c > In file included from ../.././gcc/tm.h:11, > from > /home/davek/cyg-sysroot/gcc-4.3.2/libgcc/../gcc/config/i386/cygming-crtbegin.c:39: > /home/davek/cyg-sysroot/gcc-4.3.2/gcc/config/i386/cygwin.h:282:21: error: > windows.h: No such file or directory > /home/davek/cyg-sysroot/gcc-4.3.2/libgcc/../gcc/config/i386/cygming-crtbegin.c: > In function ‘__gcc_register_frame’: > /home/davek/cyg-sysroot/gcc-4.3.2/libgcc/../gcc/config/i386/cygming-crtbegin.c:106: > error: ‘HANDLE’ undeclared (first use in this function) [ snip many more errors, all related to lack of windows.h ] Trying the failing commandline manually with -v added shows that there's no way it's going to find w32api headers: > Reading specs from /home/davek/cyg-sysroot/obj-gcc/./gcc/specs > Target: i686-pc-cygwin > Configured with: /home/davek/cyg-sysroot/gcc-4.3.2/configure > --prefix=/usr/local --target=i686-pc-cygwin > --with-sysroot=/usr/local/i686-pc-cygwin/sysroot -v --with-gmp=/usr > --with-mpfr=/usr --enable-version-specific-runtime-libs --enable-static > --enable-shared --enable-shared-libgcc --enable-__cxa_atexit --with-gnu-ld > --with-gnu-as --with-dwarf2 --disable-sjlj-exceptions > --enable-languages=ada,c,c++,fortran,java,objc,obj-c++ --disable-symvers > --enable-libjava --program-suffix=-4 --enable-libgomp --enable-libssp > --enable-libada --enable-threads=posix > Thread model: posix > gcc version 4.3.2 20080827 (beta) 2 (GCC) > COLLECT_GCC_OPTIONS='-B/home/davek/cyg-sysroot/obj-gcc/./gcc/' > '-B/usr/local/i686-pc-cygwin/bin/' '-B/usr/local/i686-pc-cygwin/lib/' > '-isystem' '/usr/local/i686-pc-cygwin/include' '-isystem' > '/usr/local/i686-pc-cygwin/sys-include' '-O2' '-g' '-g' '-O2' '-O2' '-O2' > '-g' '-g' '-O2' '-DIN_GCC' '-DCROSS_DIRECTORY_STRUCTURE' '-W' '-Wall' > '-Wwrite-strings' '-Wstrict-prototypes' '-Wmissing-prototypes' > '-Wold-style-definition' '-isystem' './include' '-I.' '-I.' > '-I/home/davek/cyg-sysroot/gcc-4.3.2/gcc' > '-I/home/davek/cyg-sysroot/gcc-4.3.2/gcc/.' > '-I/home/davek/cyg-sysroot/gcc-4.3.2/gcc/../include' > '-I/home/davek/cyg-sysroot/gcc-4.3.2/gcc/../libcpp/include' '-I/usr/include' > '-I/usr/include' '-I/home/davek/cyg-sysroot/gcc-4.3.2/gcc/../libdecnumber' > '-I/home/davek/cyg-sysroot/gcc-4.3.2/gcc/../libdecnumber/dpd' > '-I../libdecnumber' '-g0' '-finhibit-size-directive' '-fno-inline-functions' > '-fno-exceptions' '-fno-zero-initialized-in-bss' '-fno-toplevel-reorder' > '-fno-tree-vectorize' '-I. ' '-I.' '-I../.././gcc' '-I/home/davek/cyg-sysroot/gcc-4.3.2/libgcc' '-I/home/davek/cyg-sysroot/gcc-4.3.2/libgcc/.' '-I/home/davek/cyg-sysroot/gcc-4.3.2/libgcc/../gcc' '-I/home/davek/cyg-sysroot/gcc-4.3.2/libgcc/../include' '-o' 'crtbegin.o' '-MT' 'crtbegin.o' '-MD' '-MP' '-MF' 'crtbegin.dep' '-fno-omit-frame-pointer' '-c' '-v' '-mtune=generic' > /home/davek/cyg-sysroot/obj-gcc/./gcc/cc1 -quiet -v -I. -I. > -I/home/davek/cyg-sysroot/gcc-4.3.2/gcc > -I/home/davek/cyg-sysroot/gcc-4.3.2/gcc/. > -I/home/davek/cyg-sysroot/gcc-4.3.2/gcc/../include > -I/home/davek/cyg-sysroot/gcc-4.3.2/gcc/../libcpp/include -I/usr/include > -I/usr/include -I/home/davek/cyg-sysroot/gcc-4.3.2/gcc/../libdecnumber > -I/home/davek/cyg-sysroot/gcc-4.3.2/gcc/../libdecnumber/dpd -I../libdecnumber > -I. -I. -I../.././gcc -I/home/davek/cyg-sysroot/gcc-4.3.2/libgcc > -I/home/davek/cyg-sysroot/gcc-4.3.2/libgcc/. > -I/home/davek/cyg-sysroot/gcc-4.3.2/libgcc/../gcc > -I/home/davek/cyg-sysroot/gcc-4.3.2/libgcc/../include -iprefix > /home/davek/cyg-sysroot/obj-gcc/gcc/../lib/gcc/i686-pc-cygwin/4.3.2/ -isystem > /home/davek/cyg-sysroot/obj-gcc/./gcc/include -isystem > /home/davek/cyg-sysroot/obj-gcc/./gcc/include-fixed -MD crtbegin.d -MF > crtbegin.dep -MP -MT crtbegin.o -D__CYGWIN32__ -D__CYGWIN__ -Dunix -D__unix__ > -D__unix -idirafter ../include/w32api -idirafter ../../include/w32 api -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -isystem /usr/local/i686-pc-cygwin/include -isystem /usr/local/i686-pc-cygwin/sys-include -isystem ./include /home/davek/cyg-sysroot/gcc-4.3.2/libgcc/../gcc/config/i386/cygming-crtbegin.c -quiet -dumpbase cygming-crtbegin.c -mtune=generic -auxbase-strip crtbegin.o -g -g -g -g -g0 -O2 -O2 -O2 -O2 -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -version -finhibit-size-directive -fno-inline-functions -fno-exceptions -fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize -fno-omit-frame-pointer -o /tmp/cc3XJ1rE.s > ignoring nonexistent directory "/usr/local/i686-pc-cygwin/include" > ignoring nonexistent directory "/usr/local/i686-pc-cygwin/sys-include" > ignoring nonexistent directory "./include" > ignoring nonexistent directory > "/home/davek/cyg-sysroot/obj-gcc/gcc/../lib/gcc/i686-pc-cygwin/4.3.2/include" > ignoring nonexistent directory > "/home/davek/cyg-sysroot/obj-gcc/gcc/../lib/gcc/i686-pc-cygwin/4.3.2/include-fixed" > ignoring nonexistent directory > "/home/davek/cyg-sysroot/obj-gcc/gcc/../lib/gcc/i686-pc-cygwin/4.3.2/../../../../i686-pc-cygwin/include" > ignoring nonexistent directory > "/usr/local/i686-pc-cygwin/sysroot/usr/local/include" > ignoring nonexistent directory > "/home/davek/cyg-sysroot/obj-gcc/gcc/../lib/gcc/../../lib/gcc/i686-pc-cygwin/4.3.2/include" > ignoring nonexistent directory > "/home/davek/cyg-sysroot/obj-gcc/gcc/../lib/gcc/../../lib/gcc/i686-pc-cygwin/4.3.2/include-fixed" > ignoring nonexistent directory > "/home/davek/cyg-sysroot/obj-gcc/gcc/../lib/gcc/../../lib/gcc/i686-pc-cygwin/4.3.2/../../../../i686-pc-cygwin/include" > ignoring nonexistent directory "../include/w32api" > ignoring nonexistent directory "../../include/w32api" > ignoring duplicate directory "." > ignoring duplicate directory "/home/davek/cyg-sysroot/gcc-4.3.2/gcc/." > ignoring duplicate directory "/usr/include" [ Aside: Hmm, that really doesn't belong there. ] > ignoring nonexistent directory "../libdecnumber" > ignoring duplicate directory "." > ignoring duplicate directory "." > ignoring duplicate directory "/home/davek/cyg-sysroot/gcc-4.3.2/libgcc/." > ignoring duplicate directory "/home/davek/cyg-sysroot/gcc-4.3.2/libgcc/../gcc" > ignoring duplicate directory > "/home/davek/cyg-sysroot/gcc-4.3.2/libgcc/../include" > #include "..." search starts here: > #include <...> search starts here: > . > /home/davek/cyg-sysroot/gcc-4.3.2/gcc > /home/davek/cyg-sysroot/gcc-4.3.2/gcc/../include > /home/davek/cyg-sysroot/gcc-4.3.2/gcc/../libcpp/include > /usr/include > /home/davek/cyg-sysroot/gcc-4.3.2/gcc/../libdecnumber > /home/davek/cyg-sysroot/gcc-4.3.2/gcc/../libdecnumber/dpd > ../.././gcc > /home/davek/cyg-sysroot/gcc-4.3.2/libgcc > /home/davek/cyg-sysroot/obj-gcc/./gcc/include > /home/davek/cyg-sysroot/obj-gcc/./gcc/include-fixed > /usr/local/i686-pc-cygwin/sysroot/usr/include > End of search list. > GNU C (GCC) version 4.3.2 20080827 (beta) 2 (i686-pc-cygwin) > compiled by GNU C version 4.3.2 20081105 (Red Hat 4.3.2-7), GMP version > 4.2.2, MPFR version 2.3.2. > GGC heuristics: --param ggc-min-expand=81 --param ggc-min-heapsize=96699 > Compiler executable checksum: 4a3fad25cd621de8569ecad57eb31cfe > In file included from ../.././gcc/tm.h:11, > from > /home/davek/cyg-sysroot/gcc-4.3.2/libgcc/../gcc/config/i386/cygming-crtbegin.c:39: > /home/davek/cyg-sysroot/gcc-4.3.2/gcc/config/i386/cygwin.h:282:21: error: > windows.h: No such file or directory ... because those relative paths: >> ignoring nonexistent directory "../include/w32api" >> ignoring nonexistent directory "../../include/w32api" ... aren't going to work anywhere in $objdir, and certainly not from $objdir/i686-pc-cygwin/libgcc. In a regular build, those -idirafter options > -idirafter ../include/w32api -idirafter ../../include/w32api become prefixed (this is from the Cygwin distro compiler): > /usr/lib/gcc/i686-pc-cygwin/4.3.2/cc1.exe -E -quiet -v -D__CYGWIN32__ > -D__CYGWIN__ -Dunix -D__unix__ -D__unix -idirafter > /usr/lib/gcc/i686-pc-cygwin/4.3.2/../../../../i686-pc-cygwin/lib/../include/w32api > -idirafter > /usr/lib/gcc/i686-pc-cygwin/4.3.2/../../../../i686-pc-cygwin/lib/../../include/w32api > - -mtune=generic and it has the path to the startfiles prefix: > -idirafter > /usr/lib/gcc/i686-pc-cygwin/4.3.2/../../../../i686-pc-cygwin/lib/../include/w32api > > -idirafter > /usr/lib/gcc/i686-pc-cygwin/4.3.2/../../../../i686-pc-cygwin/lib/../../include/w32api > These two options come from CPP_SPEC and use a %s modifier, which is supposed to make it relative to.. well: > `%s' > Current argument is the name of a library or startup file of some > sort. Search for that file in a standard list of directories and > substitute the full name found. So, it seems that the "standard list", wherever that may be, perhaps isn't adequately configured for a --with-sysroot build. I'm tempted to just fall back on --with-headers/--with-libs, which copies stuff into the new $prefix/$target, and looks like it might work, owing to the presence of the >> ignoring nonexistent directory "/usr/local/i686-pc-cygwin/include" >> ignoring nonexistent directory "/usr/local/i686-pc-cygwin/sys-include" include paths. (FTR, I'm trying to build the distro compiler with the cygwin-specific patches, which have turned out to need a couple of minor tweaks en route). cheers, DaveK -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple