Hi all, Just check outputs for each architecture, the FV cannot be generated if we use this method: [Defines.X64] OUTPUT_DIRECTORY = Build/UefiPayloadPkgX64 FLASH_DEFINITION = UefiPayloadPkg/UefiPayloadPkg.fdf If we place FLASH_DEFINITION under the Defines section: [Defines] FLASH_DEFINITION = UefiPayloadPkg/UefiPayloadPkg.fdf We will meet "error F003: Module built under multiple ARCHs ['AARCH64', 'X64']. Not able to determine which output to put into flash for Module MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf !" issue again. Still working in progress to figure out other solutions. > From: "Ajan Zhong" > Date:  Wed, Jan 8, 2025, 3:29 PM > Subject:  Re: [EXTERNAL] [edk2-devel] Expansion of ARCH in .dsc files > To: "Leif Lindholm" > Cc: "Joey Vagedes", "devel@edk2.groups.io", "Ard Biesheuvel", "Kinney, Michael D" > 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 -t GCC5 -b DEBUG --FIT > 3. python UefiPayloadPkg/UniversalPayloadBuild.py -t GCC5 -a IA32 -b DEBUG --FIT > 4. python UefiPayloadPkg/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" > Date:  Wed, Jan 8, 2025, 4:14 AM > Subject:  Re: [EXTERNAL] [edk2-devel] Expansion of ARCH in .dsc files > To: "Joey Vagedes" > Cc: "devel@edk2.groups.io", "Ajan Zhong", "Ard Biesheuvel", "Kinney, Michael D" > 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 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  On Behalf Of Leif Lindholm via groups.io  > Sent: Tuesday, January 7, 2025 11:05 AM  > > To: devel@edk2.groups.io  > Cc: Ajan Zhong ; Ard Biesheuvel ; Kinney, Michael D   > > Subject: [EXTERNAL] [edk2-devel] Expansion of ARCH in .dsc files  > >  > > So... I originally tripped over my misunderstanding of 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 (#120998): https://edk2.groups.io/g/devel/message/120998 Mute This Topic: https://groups.io/mt/110483263/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=-