Thanks Leif and Joey. :)

As suggested, I used the following content in the DSC file to pass all the 
builds:

[Defines.IA32]
OUTPUT_DIRECTORY = Build/UefiPayloadPkgIA32
FLASH_DEFINITION = UefiPayloadPkg/UefiPayloadPkg.fdf
[Defines.X64]
OUTPUT_DIRECTORY = Build/UefiPayloadPkgX64
FLASH_DEFINITION = UefiPayloadPkg/UefiPayloadPkg.fdf
[Defines.AARCH64]
OUTPUT_DIRECTORY = Build/UefiPayloadPkgAARCH64
FLASH_DEFINITION = UefiPayloadPkg/UefiPayloadPkg.fdf

I have tried following build commands, they all succeed to build corresponding 
binaries:
1. build -p UefiPayloadPkg/UefiPayloadPkg.dsc -b DEBUG -a IA32 -a X64 -a 
AARCH64 -t GCC5
2. python 
UefiPayloadPkg/UniversalPayloadBuild.py<http://UniversalPayloadBuild.py> -t 
GCC5 -b DEBUG --FIT
3. python 
UefiPayloadPkg/UniversalPayloadBuild.py<http://UniversalPayloadBuild.py> -t 
GCC5 -a IA32 -b DEBUG --FIT
4. python 
UefiPayloadPkg/UniversalPayloadBuild.py<http://UniversalPayloadBuild.py> -t 
GCC5 -a AARCH -b DEBUG --FIT

Now I am creating a new draft PR to fix all github CI failures which are not 
generated in my local.

Thanks again for your help.
> From: "Leif Lindholm"<leif.lindh...@oss.qualcomm.com>
> Date:  Wed, Jan 8, 2025, 4:14 AM
> Subject:  Re: [EXTERNAL] [edk2-devel] Expansion of ARCH in .dsc files
> To: "Joey Vagedes"<joeyvage...@microsoft.com>
> Cc: "devel@edk2.groups.io"<devel@edk2.groups.io>, "Ajan 
> Zhong"<ajan.zh...@newfw.com>, "Ard Biesheuvel"<ardb+tianoc...@kernel.org>, 
> "Kinney, Michael D"<michael.d.kin...@intel.com>
> Hi Joey,

> 
> I appreciate the pointer.

> However, that's the .inf spec.

> 
> The same language is not in the corresponding section of

> https://tianocore-docs.github.io/edk2-DscSpecification/release-1.28/3_edk_ii_dsc_file_format/35_[defines]_section.html#35-defines-section

> 
> Regards,

> 
> Leif

> 
> On Tue, 7 Jan 2025 at 19:43, Joey Vagedes <joeyvage...@microsoft.com> wrote:

> >

> > Leif,

> >

> > For your awareness, Section 3.4 of the INF specification states that 
> > architectural modifiers for the [Defines] section tag are not permitted.

> >

> > So that you can Ctrl+F and to find the exact language, here is a quote:

> >

> > "architectural modifiers for the [Defines] section tag are not permitted"

> >

> > https://tianocore-docs.github.io/edk2-InfSpecification/release-1.27/3_edk_ii_inf_file_format/34_[defines]_section.html#34-defines-section

> >

> > Thanks,

> > Joey

> >

> > -----Original Message-----

> > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Leif 
> > Lindholm via groups.io

> > Sent: Tuesday, January 7, 2025 11:05 AM

> > To: devel@edk2.groups.io

> > Cc: Ajan Zhong <ajan.zh...@newfw.com>; Ard Biesheuvel 
> > <ardb+tianoc...@kernel.org>; Kinney, Michael D <michael.d.kin...@intel.com>

> > Subject: [EXTERNAL] [edk2-devel] Expansion of ARCH in .dsc files

> >

> > So... I originally tripped over my misunderstanding of <subject> when 
> > writing

> > https://github.com/tianocore/edk2/pull/6262 to get around something I 
> > wanted to test in UefiPayloadPkg.

> >

> > Now Ajan has run into at least an adjacent problem when trying to rework

> > https://github.com/tianocore/edk2/pull/6545 based on feedback I among 
> > others provided.

> >

> > Now, the thing I had misunderstood before is that when build is called with 
> > multiple -a options, the ARCH variable will expand to a space-separated 
> > list of *all* the specified architectures.

> > A lot of Arm/AArch64 modules assume this variable only ever contains a 
> > single architecture.

> >

> > The thing is, I don't think this is clearly documented in the .dsc 
> > specification at all. And it is frequently used as a shorthand in there in 
> > a form that would only work if build was called with a single -a.

> > Now, this also means that there are nearly no correct users of ARCH in

> > edk2 or edk2-platforms.

> > Because "the list of all architectures being built simultaneously"

> > simply isn't very useful information

> > build-time. There are two correct uses in edk2, in EmulatorPkg.dsc and in 
> > UefiPayloadPkg.dsc, using '!if "IA32" in "$ARCH"', which as far as I can 
> > tell is the only possible way to use the variable correctly.

> > Slightly amusingly, EmulatorPkg.dsc also contains an incorrect use.

> >

> > I guess the behaviour is a direct result of how the build command is 
> > architected.

> > I guess the one question I have is - is this the intended behaviour?

> >

> > Ard: I think we need to update some of our .dsc files...

> >

> > Ajan: one somewhat hacky workaround I can think of to separate the output 
> > images is to hardcode the output image name in arch-specific Defines 
> > sections, like so:

> >

> > diff --git a/ArmVirtPkg/ArmVirtQemu.dsc b/ArmVirtPkg/ArmVirtQemu.dsc index 
> > 0bd8d85cab03..f07f2b91764e 100644

> > --- a/ArmVirtPkg/ArmVirtQemu.dsc

> > +++ b/ArmVirtPkg/ArmVirtQemu.dsc

> > @@ -12,12 +12,17 @@

> >  # Defines Section - statements that will be processed to create a Makefile.

> >  #

> >  
> > ################################################################################

> > +[Defines.ARM]

> > +  OUTPUT_DIRECTORY               = Build/ArmVirtQemu-ARM

> > +

> > +[Defines.AARCH64]

> > +  OUTPUT_DIRECTORY               = Build/ArmVirtQemu-AARCH64

> > +

> >  [Defines]

> >    PLATFORM_NAME                  = ArmVirtQemu

> >    PLATFORM_GUID                  = 37d7e986-f7e9-45c2-8067-e371421a626c

> >    PLATFORM_VERSION               = 0.1

> >    DSC_SPECIFICATION              = 0x00010005

> > -  OUTPUT_DIRECTORY               = Build/ArmVirtQemu-$(ARCH)

> >    SUPPORTED_ARCHITECTURES        = AARCH64|ARM

> >    BUILD_TARGETS                  = DEBUG|RELEASE|NOOPT

> >    SKUID_IDENTIFIER               = DEFAULT

> >

> >

> > 

> >

> >
> 


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#120997): https://edk2.groups.io/g/devel/message/120997
Mute This Topic: https://groups.io/mt/110483263/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to