Re: Setting BuildOptions by module type does not seem to work


Andrew Fish
 

On Aug 16, 2016, at 9:21 AM, Gao, Liming <liming.gao@intel.com> wrote:

Andrew:
arch value may be common. 3.3.1 Common Definitions, <arch> ::= {"IA32"} {"X64"} {"IPF"} {"EBC"} {<OA>} {"common"}.
I agree [BuildOptions.AARCH64.common.DXE_RUNTIME_DRIVER should be supported. We will look it.
I agree but precedence rules seem different for *.*.*.Edk2ModuleType. It should follow $(arch) overrides common pattern of the other examples?

• Highest, DSC file’s component scoped for individual INF files.
• [BuildOptions.$(arch).CodeBase.Edk2ModuleType]
missing [BuildOptions.common.CodeBase.Edk2ModuleType]
• [BuildOptions.$(arch).CodeBase]
• [BuildOptions.common.CodeBase]
• [BuildOptions.$(arch)]
• [BuildOptions.common]
• [BuildOptions]
• INF File’s [BuildOptions] section
• Lowest - tools_def.txt entry

Thanks,

Andrew Fish


Thanks
Liming
From: afish@apple.com [mailto:afish@apple.com]
Sent: Tuesday, August 16, 2016 11:47 PM
To: Kurt Kennett <Kurt.Kennett@microsoft.com>
Cc: edk2-devel <edk2-devel@lists.01.org>; Gao, Liming <liming.gao@intel.com>
Subject: Re: [edk2] Setting BuildOptions by module type does not seem to work


On Aug 16, 2016, at 8:22 AM, Kurt Kennett wrote:

Thanks for your help, Andre. I appreciate it. ☺

[BuildOptions.AARCH64.common.DXE_RUNTIME_DRIVER]
Does not work.
Can you file a bugzilla report on the tools, and another on the spec to mention BuildOptions.AARCH64.common.DXE_RUNTIME_DRIVER

Thanks,

Andrew Fish

[BuildOptions.AARCH64.common.EDKII.DXE_RUNTIME_DRIVER]
Does not work.

[BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER]
Works.


K2

From: afish@apple.com<mailto:afish@apple.com> [mailto:afish@apple.com]
Sent: Tuesday, August 16, 2016 8:15 AM
To: Kurt Kennett
Cc: Gao, Liming ; edk2-devel
Subject: Re: [edk2] Setting BuildOptions by module type does not seem to work


On Aug 16, 2016, at 7:49 AM, Kurt Kennett <Kurt.Kennett@microsoft.com<mailto:Kurt.Kennett@microsoft.com>> wrote:

Hi Liming. I’m a bit confused by your email.

I my original email below, I reference directly:

DSC spec (January 2016 1.26) says I can do this:

(Section 3.6 pp 76)

In this section it says:


Build options priority (appended from lowest to highest and/or highest replacement) is:
• Highest, DSC file’s component scoped for individual INF files.
• [BuildOptions.$(arch).CodeBase.Edk2ModuleType]
• [BuildOptions.$(arch).CodeBase]
• [BuildOptions.common.CodeBase]
• [BuildOptions.$(arch)]
• [BuildOptions.common]
• [BuildOptions]
• INF File’s [BuildOptions] section
• Lowest - tools_def.txt entry

In the “Prototype” section immediately below this (Page 79) is the grammar.

There is no interpretation of the grammar corresponds to

[BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER]

Kurt,

It looks like a bug in the spec as there is a missing Edk2ModuleType common type.
• [BuildOptions.$(arch).CodeBase.Edk2ModuleType]
• [BuildOptions.common.CodeBase.Edk2ModuleType]
• [BuildOptions.$(arch).CodeBase]

Or I guess you could interpret the spec that the last BuildOptions.$(arch).CodeBase.Edk2ModuleType wins either common or matching $(arch)?

Did [BuildOptions.AARCH64.common.DXE_RUNTIME_DRIVER] not work? Did you try without the illegal entry [BuildOptions.AARCH64.common.EDKII.DXE_RUNTIME_DRIVER]

Thanks,

Andrew Fish



Which is the format that actually works in the code.

Is there some other section or interpretation that you are referring to?

K2

From: Gao, Liming [mailto:liming.gao@intel.com]
Sent: Monday, August 15, 2016 7:17 PM
To: Kurt Kennett <Kurt.Kennett@microsoft.com<mailto:Kurt.Kennett@microsoft.com>>; afish@apple.com<mailto:afish@apple.com>
Cc: edk2-devel <edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org>>
Subject: RE: [edk2] Setting BuildOptions by module type does not seem to work

Hi,
This style has been defined in DSC spec 1.26. It can be downloaded from https://github.com/tianocore/tianocore.github.io/wiki/EDK%20II%20Specifications

Thanks
Liming
From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Kurt Kennett
Sent: Tuesday, August 16, 2016 1:56 AM
To: afish@apple.com<mailto:afish@apple.com>
Cc: edk2-devel <edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org>>
Subject: Re: [edk2] Setting BuildOptions by module type does not seem to work

Okay this seems to work:

[BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER]

Thanks Andrew.

(doesn't match the spec though :) )

K2

-----Original Message-----
From: afish@apple.com<mailto:afish@apple.com> [mailto:afish@apple.com]
Sent: Monday, August 15, 2016 10:30 AM
To: Kurt Kennett
Cc: edk2-devel
Subject: Re: [edk2] Setting BuildOptions by module type does not seem to work


On Aug 15, 2016, at 9:34 AM, Kurt Kennett wrote:

No, I had not tried that. I tried it now and it does not seem to work.

I have:

[BuildOptions.AARCH64.common]
*_VS2015x86_AARCH64_DLINK_FLAGS = /BORK

[BuildOptions.AARCH64.common.DXE_RUNTIME_DRIVER]
*_VS2015x86_AARCH64_DLINK_FLAGS = /PLOR

[BuildOptions.AARCH64.common.EDKII.DXE_RUNTIME_DRIVER]
*_VS2015x86_AARCH64_DLINK_FLAGS = /BONK

And the only one that makes it to the command line is the /BORK one.

(The tools do not complain about the specification of options as above).
I'm guessing the syntax checking is not very good?
[BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER]
[BuildOptions.AARCH64.common.EDKII.DXE_RUNTIME_DRIVER]

I see the [BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER] form used in other places, but you have an extra .common?

Thanks,

Andrew Fish

K2

-----Original Message-----
From: afish@apple.com<mailto:afish@apple.com> [mailto:afish@apple.com]
Sent: Monday, August 15, 2016 9:22 AM
To: Kurt Kennett
Cc: edk2-devel
Subject: Re: [edk2] Setting BuildOptions by module type does not seem
to work


On Aug 15, 2016, at 9:10 AM, Kurt Kennett wrote:

DSC spec (January 2016 1.26) says I can do this:

(Section 3.6 pp 76)

...
* [BuildOptions.$(arch).CodeBase.Edk2ModuleType]
...

And this works fine:

[BuildOptions.AARCH64.common]
*_VS2015x86_*_DLINK_FLAGS = /BORK

But when I also do:

[BuildOptions.AARCH64.common.DXE_RUNTIME_DRIVER]
*_VS2015x86_*_DLINK_FLAGS = /PLOR

The link flags are not affected on the command line - they get the /BORK for all module types, but not the /PLOR for DXE_RUNTIME_DRIVERs.
Kurt,

Have you tried [BuildOptions.AARCH64.EDKII.DXE_RUNTIME_DRIVER]? Do you need EDK compatibility?

I'm guessing that works given:
~/work/src/edk2(master)>git grep "BuildOptions." -- *.dsc | grep
DXE_RUNTIME_DRIVER
OvmfPkg/OvmfPkgIa32.dsc:49:[BuildOptions.common.EDKII.DXE_RUNTIME_DRIV
ER]
OvmfPkg/OvmfPkgIa32X64.dsc:54:[BuildOptions.common.EDKII.DXE_RUNTIME_D
RIVER]
OvmfPkg/OvmfPkgX64.dsc:54:[BuildOptions.common.EDKII.DXE_RUNTIME_DRIVE
R]
QuarkPlatformPkg/Quark.dsc:885:[BuildOptions.common.EDKII.DXE_RUNTIME_
DRIVER]


I'm not familiar with the DSC processing tools source. Anybody know where to look to see why not?
It starts here:
https://github.com/tianocore/edk2/blob/master/BaseTools/Source/Python/
build/build.py and uses some code from:
https://github.com/tianocore/edk2/tree/master/BaseTools/Source/Python/
Common

Thanks,

Andrew Fish

K2


_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org>
https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org>
https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org>
https://lists.01.org/mailman/listinfo/edk2-devel

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org>
https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Join devel@edk2.groups.io to automatically receive all group messages.