From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.90_1) id 1jQW6P-0007Ya-UP for mharc-grub-devel@gnu.org; Mon, 20 Apr 2020 09:04:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54646 helo=eggs1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jQW6N-0007YJ-RH for grub-devel@gnu.org; Mon, 20 Apr 2020 09:04:44 -0400 Received: from Debian-exim by eggs1p.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jQW6J-0006MG-A7 for grub-devel@gnu.org; Mon, 20 Apr 2020 09:04:43 -0400 Received: from mail-wm1-x344.google.com ([2a00:1450:4864:20::344]:53876) by eggs1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jQW6I-0006G4-Mf for grub-devel@gnu.org; Mon, 20 Apr 2020 09:04:38 -0400 Received: by mail-wm1-x344.google.com with SMTP id t63so9918125wmt.3 for ; Mon, 20 Apr 2020 06:04:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nuviainc-com.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=X9MAfiR9Lg/RHrLNk9qSY4+iOMbpPzp3Gzvkv6yEk54=; b=U/9jHciFwIAPjiwqdvkPtOv/sXk/JroG7R+m5UO+sUZPS7uvAnaIz0hJ+hzkMv1H7A 9XZ3ZlkdWkV1GVqVgsRSHoz28r/sPUQGxjctjtvUpTeQ9D/3kBWiJ5bLFkT/KPDp/YUu WqTLR1LPaxucYE1V2dXJ1Wjl2PpwFrIP3W22FUQmQKxjIDuRHOBNn1Dp0sH1I2vfBZHA JtryKeuxC0QWQ4IuGIbNqX6NT9dHRr/M5bIfGaBwSCfqRiORvb1AZcQiZ8DGhgLuUFUA CPLciGVgNKzLMP+xsB4Q31Vn1Tve6rGDpFPS+fnSCVKY1qLSBASgw17SQT6oig7O2vId oWwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=X9MAfiR9Lg/RHrLNk9qSY4+iOMbpPzp3Gzvkv6yEk54=; b=skDHb0LUzjZS7ctNBh9oQOYNZBaEobS+88e04tOmYXfjs0DDCLBjXJidRYoE/CBlYz IYLM+kon5xnoY0EXmvQATPi5NLb4VcgwRJ4BPZ1WQrYGIxvkERuDF22jISaQFFLZBgyt MixNY0yFJuoA8aFfGpcKdnkv4go8RQAAGoxgaVyrGJoR8VJr4iYFLDowOuJLS5kihc4S unsbz6UmLIeWZM0qDcZv5mSoAL2gQRWmICS+9dMs9fbrZjkQaq2daWq/8YICMsZs6qOg 8aRtxifwkv+LNbdkTBjoceRUZhFULl19cYD5xKLj/A4AWT470nGDgARJFy8TBROoFO2r BG6A== X-Gm-Message-State: AGi0PuZnnSloi/I4yXeQ0ap4ylCupvZ+HazbVuHBH/waJvrIFZsCbxq9 t+Xw73OvE24TWprMi7dr/ewXOg== X-Google-Smtp-Source: APiQypJY+yMHkgQWErCpbYceXlRbPSY2Dt1n5eAX6zpU9VAYMImmzYFzn1e/QYq/wOXnd5+7lV0fsQ== X-Received: by 2002:a1c:35c3:: with SMTP id c186mr18474134wma.66.1587387875133; Mon, 20 Apr 2020 06:04:35 -0700 (PDT) Received: from vanye ([2001:470:1f09:12f0:b26e:bfff:fea9:f1b8]) by smtp.gmail.com with ESMTPSA id t20sm16763537wmi.2.2020.04.20.06.04.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2020 06:04:34 -0700 (PDT) Date: Mon, 20 Apr 2020 14:04:32 +0100 From: Leif Lindholm To: Daniel Kiper 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 Message-ID: <20200420130432.GH14075@vanye> References: <20200403124503.12779-1-daniel.kiper@oracle.com> <20200403124503.12779-4-daniel.kiper@oracle.com> <20200407111609.GM14075@vanye> <20200410120548.wry6gvmjhr6paomw@tomti.i.net-space.pl> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200410120548.wry6gvmjhr6paomw@tomti.i.net-space.pl> User-Agent: Mutt/1.10.1 (2018-07-13) Received-SPF: pass client-ip=2a00:1450:4864:20::344; envelope-from=leif@nuviainc.com; helo=mail-wm1-x344.google.com X-detected-operating-system: by eggs1p.gnu.org: Error: [-] PROGRAM ABORT : Malformed IPv6 address (bad octet value). Location : parse_addr6(), p0f-client.c:67 X-Received-From: 2a00:1450:4864:20::344 X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Apr 2020 13:04:44 -0000 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 > > > --- > > > 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