I have verified that the EDK2 basetools does not process `SPEC` under the `DEFINES` section as mentioned in the documentation and it does not work.
I went through the commit history of basetools around this, it looks like this has not worked pretty much ever, (I went only as far as GitHub would allow me.)
There are multiple points of failures,
Failure 1: Suggested example format
SPEC USB_SPECIFICATION_VERSION = 2.0
This example is wrong, as this format will cause build failure, as the basetools do larger processing based on the `=` sign.
.OrderedDict({'INF_VERSION': '0x00010005', 'BASE_NAME': 'ExampleCode', 'FILE_GUID': '51C7D5B0-4E8F-4F3E-80C9-E6CCEAAE1EC1', 'MODULE_TYPE': 'DXE_SMM_DRIVER',
'SPEC USB_SPECIFICATION_VERSION ': '2.0', 'VERSION_STRING': '1.0'})
The surrounding infrastructure cannot process this format.
Failure 2 : GenMake.py
It adds it to the Makefile, which is not necessary.
module_extra_defines" : ["%s = %s" % (k, v) for k, v in MyAgo.Module.Defines.items()]
We can skip loading of SPEC here, solves the issue around the `=` sign also.
Failure 3 : GenC.py
According to the documentation, it is supposed to add it to the header file (Autogen.h). There is no code support for it.
You can manipulate the `Info.Module._Defs` object and add it to the generated file.
Failure 4 : Documentation Information
https://github.com/tianocore-docs/edk2-InfSpecification/blob/master/3_edk_ii_inf_file_format/34_%5Bdefines%5D_section.md
Shows this format for SPEC
[<TS> "SPEC" <MTS> <Spec> <EOL>]*The `*` at the end means you can have multiple SPEC declarations, this is not true, the current basetools code just replaces to use the last one.
<Spec> ::= <Identifier> <Eq> <DecimalVersion>The `DecimalVersion` format is idetified as below,
You receive all messages sent to this group.
View/Reply Online (#119541) |
|
Mute This Topic
| New Topic
Your Subscription |
Contact Group Owner |
Unsubscribe
[rebecca@openfw.io]