All of lore.kernel.org
 help / color / mirror / Atom feed
From: Leif Lindholm <leif@nuviainc.com>
To: Daniel Kiper <daniel.kiper@oracle.com>
Cc: grub-devel@gnu.org, eschwartz@archlinux.org, floppym@gentoo.org,
	javierm@redhat.com, olaf@aepfle.de, phcoder@gmail.com,
	pjones@redhat.com
Subject: Re: [PATCH v2 3/4] INSTALL/configure: Update install doc and configure comment
Date: Mon, 20 Apr 2020 14:04:32 +0100	[thread overview]
Message-ID: <20200420130432.GH14075@vanye> (raw)
In-Reply-To: <20200410120548.wry6gvmjhr6paomw@tomti.i.net-space.pl>

On Fri, Apr 10, 2020 at 05:05:48 -0700, Daniel Kiper wrote:
> 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.kiper@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

I mean, it's less dated, but it also makes less sense than the
original - an aarch64-linux-gnu-gcc toolchain is very highly likely to
default to -march=armv8-a. It would make more sense to specify
something like -march=armv8.4a.

> > 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

Again, the original actually made more sense - arm64 only supports 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...

So why do we have TARGET_CC and HOST_CC?

My understanding is:
- CC sets the default compilet binary, used for BUILD, HOST and TARGET
  unless overridden for each of these.
- The value of BUILD_CC is used as default for HOST_CC unless
  HOST_CC is explicitly specified.
- The value of HOST_CC is used as the default for TARGET_CC, where *it*
  is not explicitly specified.

Either my understanding here is incorrect, or these changes make the
text more rather than less misleading.

/
    Leif

> > > +    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


  reply	other threads:[~2020-04-20 13:04 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-03 12:44 [PATCH v2 0/4] Various build and doc fixes Daniel Kiper
2020-04-03 12:45 ` [PATCH v2 1/4] configure: Drop unneeded TARGET_CFLAGS expansion Daniel Kiper
2020-04-03 13:36   ` John Paul Adrian Glaubitz
2020-04-07  9:24   ` Javier Martinez Canillas
2020-04-03 12:45 ` [PATCH v2 2/4] configure: Enforce gnu99 C language standard Daniel Kiper
2020-04-07  9:38   ` Javier Martinez Canillas
2020-04-07 10:41     ` Daniel Kiper
2020-04-07 11:23       ` Leif Lindholm
2020-04-07 11:37       ` Javier Martinez Canillas
2020-04-07 10:52   ` Leif Lindholm
2020-04-03 12:45 ` [PATCH v2 3/4] INSTALL/configure: Update install doc and configure comment Daniel Kiper
2020-04-07  9:43   ` Javier Martinez Canillas
2020-04-07 11:16   ` Leif Lindholm
2020-04-10 12:05     ` Daniel Kiper
2020-04-20 13:04       ` Leif Lindholm [this message]
2020-04-21 14:55         ` Daniel Kiper
2020-04-30 11:40           ` Leif Lindholm
2020-04-03 12:45 ` [PATCH v2 4/4] autogen: Replace -iname with -ipath in find command Daniel Kiper
2020-04-07  9:44   ` Javier Martinez Canillas

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200420130432.GH14075@vanye \
    --to=leif@nuviainc.com \
    --cc=daniel.kiper@oracle.com \
    --cc=eschwartz@archlinux.org \
    --cc=floppym@gentoo.org \
    --cc=grub-devel@gnu.org \
    --cc=javierm@redhat.com \
    --cc=olaf@aepfle.de \
    --cc=phcoder@gmail.com \
    --cc=pjones@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.