Hi GRUB devs, El lun, 26-01-2009 a las 20:57 +0100, Christian Franke escribió: > Robert Millan wrote: > > Hi, > > > > Based on the description of host/target triplets in configure.ac: > > > > dnl build -- the environment for building GRUB > > dnl host -- the environment for running utilities > > dnl target -- the environment for running GRUB > > > > it seems that target_os is an oxymoron. There's no OS in the environment > > where GRUB will run (well, there's the firmware, but we already use > > target_vendor for that, and _os has a well-defined meaning). > > > > Attached patch fixes that by supressing all references to target_os, and > > replacing them with host_os where suitable. > > > > Christian: since this mostly affects Cygwin, could you verify that it > > doesn't > > cause breakage before I commit it? > > > > > > Hi Robert, > > thanks for sending the patch first. Cygwin build looks good. > > > But even if GRUB itself is build for some $target_cpu-$target_vendor > (i386-pc), the target_os is not useless if cross-compilation support is > desired: > > - GRUB tools like grub-setup are build for the target_os > - Package structure may depend on target_os. > > - The gcc code generator may emit special code tailored for the assumed > target_os > Examples: > Stack frame checks > Nested function trampolines (__enable_execute_stack()) > > Unfortunately, gcc has no '-fno_os' option to specify the bare CPU as > target.
Might -ffreestanding be what you are looking for? > Fortunately, all current issues can be handled by autoconf checks. > > > > AC_MSG_CHECKING([for command to convert module to ELF format]) > > -case "${host_os}:${target_os}" in > > - cygwin:cygwin) TARGET_OBJ2ELF='grub-pe2elf' ;; > > +case "${host_os}" in > > + cygwin) TARGET_OBJ2ELF='grub-pe2elf' ;; > > *) ;; > > esac > > > > This won't work for a Linux cross compiler hosted on Cygwin. It would > emit ELF format and does not need pe2elf. A, say, AMD64 Linux cross compiler hosted on x86 Cygwin would have $build=i686-pc-cygwin and $host=amd64-linux-gnu. Thus, no conflict ought to arise even with cross compilation enabled. AFAIK, the full power of $build+$host+$target only matters when building _compilers_ (and binutils, etc.), because you might want to use an AMD64/Linux machine to build a compiler that will run on PPC/Darwin but produce executables for a x86/Cygwin machine > > But all this is theoretical unless cross compilation is really needed. > > Christian > > > > _______________________________________________ > Grub-devel mailing list > Grub-devel@gnu.org > http://lists.gnu.org/mailman/listinfo/grub-devel
signature.asc
Description: Esta parte del mensaje está firmada digitalmente
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel