On Saturday 11 April 2009 13:58:26 Pavel Roskin wrote: > Hello! > > I promised this patch long ago, but didn't have a chance to implement > and test it. This patch would help users test GRUB using > cross-compilers. Many users would prefer to compile native GRUB > utilities (grub-mkimage etc) but create the bootloader for another > platform. This is currently impossible. To compile the bootloader > for a foreign architecture, you have to cross-compile the GRUB > utilities. > > The current logic is broken. The check for the target compiler is > made if the canonical name for the build and the host are identical, > that is if we are cross-compiling the GRUB utilities. The matches the > incorrect comment, but doesn't match the intention of the code. > > The intention is to check for the target compiler and other tools > after we have already found the tools for compiling for the host. > > If the target has not been specified on the command line, there is no > need to look for the target tools. It is assumed that the host and > the target are the same, whether we are cross-compiling or not. The > host tools can be used. The target specified on the command line is > stored in $target_alias. Thus, if $target_alias is empty, we don't > check for the target tools. > > Further, if somebody specified the host and the target in the same > way, there is no need to check for the target tools. They will be the > same. Some package build system like to specify all possible > switches, so they will be happy. > > However, if the host and the target are specified in different ways on > the command line, we need to check for the target tools. That > includes the case when the host has not been specified at all. > > Even if the canonical names are the same, we should check for the > target tools. If $host_alias and $target_alias are different, > configure can find different compilers. For example, if somebody runs > > ./configure --host=powerpc-linux --target=powerpc-linux-uclibc > > and both powerpc-linux-gcc and powerpc-linux-uclibc-gcc are present in > $PATH, the former would be used for the host and the later for the > target. Generally, if the user took care to specify different values, > we should take care not to ignore that. > > ChangeLog: > * configure.ac: Change the logic when we check for target tools. > Do it when the target is specified and it's different from the > specified value of the host. > > --- configure.ac > +++ configure.ac > @@ -231,8 +231,8 @@ > AC_SUBST(TARGET_OBJ2ELF) > AC_MSG_RESULT([$TARGET_OBJ2ELF]) > > -# For cross-compiling. > -if test "x$build" != "x$host"; then > +# Find tools for the target. > +if test -n "$target_alias" && test "x$host_alias" != "x$target_alias";
"test -n" should be avoided. Maybe this is not necessary nowadays, but my old lesson was to use "test x$target_alias != x" instead for portability. Well, "!=" was not very portable, either, maybe. > then # XXX this depends on the implementation of autoconf! > tmp_ac_tool_prefix="$ac_tool_prefix" > ac_tool_prefix=$target_alias- Regards, Okuji _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel