On Tue, Apr 07, 2020 at 12:16:09PM +0100, Leif Lindholm wrote: > On Fri, Apr 03, 2020 at 14:45:02 +0200, Daniel Kiper wrote: > > ..to reflect the GRUB build reality in them. > > > > Additionally, fix ./configure command example formatting in INSTALL file. > > > > Signed-off-by: Daniel Kiper <daniel.ki...@oracle.com> > > --- > > INSTALL | 51 +++++++++++++++++++++++++++------------------------ > > configure.ac | 10 ++++++---- > > 2 files changed, 33 insertions(+), 28 deletions(-) > > > > diff --git a/INSTALL b/INSTALL > > index 8acb40902..d1b3bb60e 100644 > > --- a/INSTALL > > +++ b/INSTALL > > @@ -160,12 +160,12 @@ For this example the configure line might look like > > (more details below) > > (some options are optional and included here for completeness but some > > rarely > > used options are omitted): > > > > -./configure BUILD_CC=gcc BUILD_PKG_CONFIG=pkg-config --host=amd64-linux-gnu > > -CC=amd64-linux-gnu-gcc CFLAGS="-g -O2" > > PKG_CONFIG=amd64-linux-gnu-pkg-config > > ---target=arm --with-platform=uboot TARGET_CC=arm-elf-gcc > > -TARGET_CFLAGS="-Os -march=armv6" TARGET_CCASFLAGS="-march=armv6" > > -TARGET_OBJCOPY="arm-elf-objcopy" TARGET_STRIP="arm-elf-strip" > > -TARGET_NM=arm-elf-nm TARGET_RANLIB=arm-elf-ranlib LEX=gflex > > +./configure BUILD_CC=gcc BUILD_PKG_CONFIG=pkg-config > > --host=amd64-linux-gnu \ > > + CC=amd64-linux-gnu-gcc CFLAGS="-g -O2" > > PKG_CONFIG=amd64-linux-gnu-pkg-config \ > > + --target=arm --with-platform=uboot TARGET_CC=arm-elf-gcc \ > > + TARGET_CFLAGS="-Os -march=armv6" TARGET_CCASFLAGS="-march=armv6" \ > > + TARGET_OBJCOPY="arm-elf-objcopy" TARGET_STRIP="arm-elf-strip" \ > > + TARGET_NM=arm-elf-nm TARGET_RANLIB=arm-elf-ranlib LEX=gflex > > So ... probably should have looked more properly at this round 1. > > If we are updating this guidance, should we bring it up to date as > well? > > Now we have uefi support in u-boot, the "uboot" platform is the > exception rather than the norm. It'd be better to specify > --with-platform=efi. > > Secondly, these appear to be flags used when > building GRUB for Raspberry Pi 1; -march-armv6 is quite outdated and > could be dropped. (Although I guess it becomes more relevant when seen > in combination with TARGET_CCASFLAGS.)
What do you think about this: ./configure --host=x86_64-linux-gnu --target=aarch64-linux-gnu \ --with-platform=efi BUILD_CC=gcc BUILD_PKG_CONFIG=pkg-config \ HOST_CC=x86_64-linux-gnu-gcc HOST_CFLAGS='-g -O2' \ PKG_CONFIG=x86_64-linux-gnu-pkg-config TARGET_CC=aarch64-linux-gnu-gcc \ TARGET_CFLAGS='-Os -march=armv8-a' TARGET_CCASFLAGS='-march=armv8-a' \ TARGET_OBJCOPY=aarch64-linux-gnu-objcopy \ TARGET_STRIP=aarch64-linux-gnu-strip TARGET_NM=aarch64-linux-gnu-nm \ TARGET_RANLIB=aarch64-linux-gnu-ranlib LEX=flex > Could we add a sentence here going (if switching to efi for the platform): > "Normally, for building a grub on amd64 with tools to run on amd64 to > generate images to run on arm, using your Linux distribution's > packaged cross compiler, the following would suffice: > > ./configure --target=arm-linux-gnueabihf --with-platform=efi" ./configure --target=aarch64-linux-gnu --with-platform=efi > > You need to use following options to specify tools and platforms. For > > minimum > > version look at prerequisites. All tools not mentioned in this section > > under > > @@ -182,28 +182,31 @@ corresponding platform are not needed for the > > platform in question. > > > > - For host > > 1. --host= to autoconf name of host. > > - 2. CC= for gcc able to compile for host > > - 3. HOST_CFLAGS= for C options for host. > > - 4. HOST_CPPFLAGS= for C preprocessor options for host. > > - 5. HOST_LDFLAGS= for linker options for host. > > - 6. PKG_CONFIG= for pkg-config for host (optional). > > - 7. Libdevmapper if any must be in standard linker folders > > (-ldevmapper) (optional). > > - 8. Libfuse if any must be in standard linker folders (-lfuse) > > (optional). > > - 9. Libzfs if any must be in standard linker folders (-lzfs) (optional). > > - 10. Liblzma if any must be in standard linker folders (-llzma) > > (optional). > > + 2. CC= for gcc able to compile for host and target. > > But this is incorrect? Apart from where HOST == TARGET? And goes > against the example updated above. > Am I missing something? It is correct, CC applies for host and target... > > + 3. CFLAGS= for C options for host and target. > > + 4. HOST_CFLAGS= for C options for host. > > + 5. HOST_CPPFLAGS= for C preprocessor options for host. > > + 6. HOST_LDFLAGS= for linker options for host. > > + 7. PKG_CONFIG= for pkg-config for host (optional). > > + 8. Libdevmapper if any must be in standard linker folders > > (-ldevmapper) (optional). > > + 9. Libfuse if any must be in standard linker folders (-lfuse) > > (optional). > > + 10. Libzfs if any must be in standard linker folders (-lzfs) > > (optional). > > + 11. Liblzma if any must be in standard linker folders (-llzma) > > (optional). > > > > - For target > > 1. --target= to autoconf cpu name of target. > > 2. --with-platform to choose firmware. > > - 3. TARGET_CC= for gcc able to compile for target > > - 4. TARGET_CFLAGS= for C options for target. > > - 5. TARGET_CPPFLAGS= for C preprocessor options for target. > > - 6. TARGET_CCASFLAGS= for assembler options for target. > > - 7. TARGET_LDFLAGS= for linker options for target. > > - 8. TARGET_OBJCOPY= for objcopy for target. > > - 9. TARGET_STRIP= for strip for target. > > - 10. TARGET_NM= for nm for target. > > - 11. TARGET_RANLIB= for ranlib for target. > > + 3. CC= for gcc able to compile for host and target. > > Same again. Ditto... > > + 4. CFLAGS= for C options for host and target. > > + 5. TARGET_CC= for gcc able to compile for target. > > + 6. TARGET_CFLAGS= for C options for target. > > + 7. TARGET_CPPFLAGS= for C preprocessor options for target. > > + 8. TARGET_CCASFLAGS= for assembler options for target. > > + 9. TARGET_LDFLAGS= for linker options for target. > > + 10. TARGET_OBJCOPY= for objcopy for target. > > + 11. TARGET_STRIP= for strip for target. > > + 12. TARGET_NM= for nm for target. > > + 13. TARGET_RANLIB= for ranlib for target. > > > > - Additionally for emu, for host and target. > > 1. SDL is looked for in standard linker directories (-lSDL) (optional) > > diff --git a/configure.ac b/configure.ac > > index fc74ee800..06bc4fb0c 100644 > > --- a/configure.ac > > +++ b/configure.ac > > @@ -26,10 +26,12 @@ dnl This is necessary because the target type in > > autoconf does not > > dnl describe such a system very well. > > dnl > > dnl The current strategy is to use variables with no prefix (such as > > -dnl CC, CFLAGS, etc.) for the host type, variables with prefix "BUILD_" > > -dnl (such as BUILD_CC, BUILD_CFLAGS, etc.) for the build type and variables > > -dnl with the prefix "TARGET_" (such as TARGET_CC, TARGET_CFLAGS, etc.) are > > -dnl used for the target type. See INSTALL for full list of variables. > > +dnl CC, CFLAGS, etc.) for the host and target type, variables with > > Same again. ...and ditto... Daniel _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel