This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug bootstrap/32272] make exit because build/genmodes.exe doesn't exist
- From: "haubi at gentoo dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 28 Sep 2007 12:52:11 -0000
- Subject: [Bug bootstrap/32272] make exit because build/genmodes.exe doesn't exist
- References: <bug-32272-386@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #6 from haubi at gentoo dot org 2007-09-28 12:52 -------
More analysis (solution (?) at the end):
Compared gmake's debug-output from powerpc-aix5.3 to x86-gentoo-linux:
x86-gentoo-linux:
<<<
Considering target file `build/genmodes'.
File `build/genmodes' does not exist.
Looking for an implicit rule for `build/genmodes'.
Trying pattern rule with stem `modes'.
Trying implicit prerequisite `build/genmodes.o'.
Trying rule prerequisite `../build-i686-pc-linux-gnu/libiberty/libiberty.a'.
Found an implicit rule for `build/genmodes'.
<<<
powerpc-aix5.3:
<<<
Considering target file `build/genmodes'.
File `build/genmodes' does not exist.
Looking for an implicit rule for `build/genmodes'.
Trying pattern rule with stem `modes'.
Trying implicit prerequisite `build/genmodes.o'.
Trying rule prerequisite
`../../build-powerpc-ibm-aix5.3.0.0/libiberty/libiberty.a'.
Trying pattern rule with stem `modes'.
Trying implicit prerequisite `build/genmodes.o'.
Trying rule prerequisite
`../../build-powerpc-ibm-aix5.3.0.0/libiberty/libiberty.a'.
Looking for a rule with intermediate file
`../../build-powerpc-ibm-aix5.3.0.0/libiberty/libiberty.a'.
Avoiding implicit rule recursion.
No implicit rule found for `build/genmodes'.
<<<
gmake avoids matching 'build/gen%' because of not finding libiberty.a in
'../../build-powerpc-ibm-aix5.3.0.0/libiberty/'.
But on linux, libiberty.a is searched in
'../build-i686-pc-linux-gnu/libiberty/'
Now, 'libiberty.a' is searched using $(build_libobjdir).
build_libobjdir is set from this gcc/Makefile snippet:
<<<
ifeq ($(host_subdir),.)
build_objdir := ../$(build_subdir)
build_libobjdir := ../$(build_libsubdir)
else
build_objdir := ../../$(build_subdir)
build_libobjdir := ../../$(build_libsubdir)
endif
<<<
There's a difference in gcc/Makefile for $(host_subdir):
x86-gentoo-linux:
<<<
host_subdir=.
build_subdir=build-i686-pc-linux-gnu
build_libsubdir=build-i686-pc-linux-gnu
<<<
powerpc-aix5.3:
<<<
host_subdir=host_subdir=host-powerpc-ibm-aix5.3.0.0
build_subdir=build-powerpc-ibm-aix5.3.0.0
build_libsubdir=build-powerpc-ibm-aix5.3.0.0
<<<
Now found in gcc/configure some lines to determine 'host_subdir':
<<<
if ( test $srcdir = . && test -d gcc ) \
|| test -d $srcdir/../host-${host_noncanonical}; then
host_subdir="host-${host_noncanonical}"
else
host_subdir=.
fi
<<<
And indeed, there is a gcc-4.2.0/host-powerpc-ibm-aix5.3.0.0 (in sourcedir).
Although I'm pretty sure to not configure+make inside gcc's source dir, I've
started from fresh extracted sourcedir. Currently the build is running, but
'build/genmodes' is already built and successfully executed.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32272