<feed xmlns='http://www.w3.org/2005/Atom'>
<title>Tianocore/edk2.git/BaseTools/Source/Python/AutoGen/GenC.py, branch trunk</title>
<subtitle>EDK II (mirror)</subtitle>
<id>https://git.radix-linux.su/Tianocore/edk2.git/atom?h=trunk</id>
<link rel='self' href='https://git.radix-linux.su/Tianocore/edk2.git/atom?h=trunk'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/'/>
<updated>2024-06-04T03:43:08+00:00</updated>
<entry>
<title>Renormalized end-of-lines from master@27b044605cd5f6b33a3d231576003850b3fe305b</title>
<updated>2024-06-04T03:43:08+00:00</updated>
<author>
<name>kx</name>
<email>kx@radix.pro</email>
</author>
<published>2024-06-04T03:43:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=7e2ccccace24636f29ddc210b94606abd4c7e42b'/>
<id>urn:sha1:7e2ccccace24636f29ddc210b94606abd4c7e42b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>BaseTools/AutoGen: declare ProcessLibraryConstructorList() for SEC modules</title>
<updated>2024-02-29T09:56:38+00:00</updated>
<author>
<name>Laszlo Ersek</name>
<email>lersek@redhat.com</email>
</author>
<published>2024-02-24T21:05:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=bac9c74080cf36590af0f572c07257c3541f8c02'/>
<id>urn:sha1:bac9c74080cf36590af0f572c07257c3541f8c02</id>
<content type='text'>
Most module types have standardized entry point function prototypes. They
are declared in headers like

- MdePkg/Include/Library/PeiCoreEntryPoint.h
- MdePkg/Include/Library/PeimEntryPoint.h
- MdePkg/Include/Library/DxeCoreEntryPoint.h
- MdePkg/Include/Library/UefiDriverEntryPoint.h
- MdePkg/Include/Library/UefiApplicationEntryPoint.h

These header files also declare matching ProcessLibraryConstructorList()
prototypes.

The SEC module type does not have a standardized entry point prototype
(aka parameter list), therefore no header file like the above ones exists
for SEC. Consequently, no header file *declares*
ProcessLibraryConstructorList() for SEC modules, even though AutoGen
always *defines* ProcessLibraryConstructorList() with the same, empty,
parameter list (i.e., just (VOID)).

The lack of a central declaration is a problem because in SEC code,
ProcessLibraryConstructorList() needs to be called manually, and those
calls need a prototype. Most SEC modules in edk2 get around this by
declaring ProcessLibraryConstructorList() manually, while some others use
an incorrect (PEIM) prototype.

Liming suggested in
&lt;https://bugzilla.tianocore.org/show_bug.cgi?id=991#c2&gt; that AutoGen
provide the declaration as well; implement that in this patch.

Mike suggested that the feature be gated with INF_VERSION, for
compatibility reasons. (INF_VERSION &gt;= 1.30) reflects that the latest
(draft) version of the INF specification, as of this writing, is commit
a31e3c842bee / version 1.29.

For example, if we modify "OvmfPkg/Sec/SecMain.inf" as follows:

&gt; diff --git a/OvmfPkg/Sec/SecMain.inf b/OvmfPkg/Sec/SecMain.inf
&gt; index 3c47a664a95d..dca932a474ee 100644
&gt; --- a/OvmfPkg/Sec/SecMain.inf
&gt; +++ b/OvmfPkg/Sec/SecMain.inf
&gt; @@ -8,7 +8,7 @@
&gt;  ##
&gt;
&gt;  [Defines]
&gt; -  INF_VERSION                    = 0x00010005
&gt; +  INF_VERSION                    = 1.30
&gt;    BASE_NAME                      = SecMain
&gt;    FILE_GUID                      = df1ccef6-f301-4a63-9661-fc6030dcc880
&gt;    MODULE_TYPE                    = SEC

then the patch produces the following difference in
"Build/OvmfX64/NOOPT_GCC5/X64/OvmfPkg/Sec/SecMain/DEBUG/AutoGen.h":

&gt; --- AutoGen.h.orig      2024-02-06 23:10:23.469535345 +0100
&gt; +++ AutoGen.h   2024-02-07 00:00:57.361294055 +0100
&gt; @@ -220,6 +220,13 @@
&gt;
&gt;  // Definition of PCDs used in libraries is in AutoGen.c
&gt;
&gt; +// ProcessLibraryConstructorList() declared here because SEC has no standard entry point.
&gt; +VOID
&gt; +EFIAPI
&gt; +ProcessLibraryConstructorList (
&gt; +  VOID
&gt; +  );
&gt; +
&gt;
&gt;  #ifdef __cplusplus
&gt;  }

which presently (as of edk2 commit edc6681206c1) triggers the following
build error:

&gt; In file included from OvmfPkg/Sec/SecMain.c:14:
&gt; MdePkg/Include/Library/PeimEntryPoint.h:74:1: error: conflicting types for
&gt; ‘ProcessLibraryConstructorList’; have ‘void(void *, const
&gt; EFI_PEI_SERVICES **)’ {aka ‘void(void *, const struct _EFI_PEI_SERVICES
&gt; **)’}
&gt;    74 | ProcessLibraryConstructorList (
&gt;       | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
&gt; In file included from &lt;command-line&gt;:
&gt; Build/OvmfX64/NOOPT_GCC5/X64/OvmfPkg/Sec/SecMain/DEBUG/AutoGen.h:226:1: note:
&gt; previous declaration of ‘ProcessLibraryConstructorList’ with type
&gt; ‘void(void)’
&gt;   226 | ProcessLibraryConstructorList (
&gt;       | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~

That's a genuine bug in OvmfPkg that needs to be fixed, but we keep
compatibility with existent SEC modules until/unless they upgrade
INF_VERSION to 1.30+.

Cc: Bob Feng &lt;bob.c.feng@intel.com&gt;
Cc: Liming Gao &lt;gaoliming@byosoft.com.cn&gt;
Cc: Michael D Kinney &lt;michael.d.kinney@intel.com&gt;
Cc: Rebecca Cran &lt;rebecca@bsdio.com&gt;
Cc: Yuwei Chen &lt;yuwei.chen@intel.com&gt;
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=991
Suggested-by: Liming Gao &lt;gaoliming@byosoft.com.cn&gt;
Suggested-by: Michael D Kinney &lt;michael.d.kinney@intel.com&gt;
Signed-off-by: Laszlo Ersek &lt;lersek@redhat.com&gt;
Message-Id: &lt;20240224210504.41873-1-lersek@redhat.com&gt;
Reviewed-by: Liming Gao &lt;gaoliming@byosoft.com.cn&gt;
</content>
</entry>
<entry>
<title>BaseTools: Add EDKII_DSC_PLATFORM_GUID MACRO</title>
<updated>2020-10-13T02:35:08+00:00</updated>
<author>
<name>fengyunhua</name>
<email>fengyunhua@byosoft.com.cn</email>
</author>
<published>2020-10-10T22:24:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=b65afdde74d6c1fac1cdbd2efdad23ba26295808'/>
<id>urn:sha1:b65afdde74d6c1fac1cdbd2efdad23ba26295808</id>
<content type='text'>
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2969

Add EDKII_DSC_PLATFORM_GUID MACRO to AutoGen.h and AutoGen.c

Cc: Bob Feng &lt;bob.c.feng@intel.com&gt;
Cc: Liming Gao &lt;gaoliming@byosoft.com.cn&gt;
Signed-off-by: Yunhua Feng &lt;fengyunhua@byosoft.com.cn&gt;
Reviewed-by: Bob Feng &lt;bob.c.feng@intel.com&gt;
Tested-by: Michael Kubacki &lt;michael.kubacki@microsoft.com&gt;
Reviewed-by: Liming Gao &lt;gaoliming@byosoft.com.cn&gt;
</content>
</entry>
<entry>
<title>BaseTools: remove unnecessary calls of os.exist</title>
<updated>2019-09-17T02:19:05+00:00</updated>
<author>
<name>Feng, Bob C</name>
<email>bob.c.feng@intel.com</email>
</author>
<published>2019-09-04T05:00:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=0075ab2cec500fc679c6b2e4990142b4a2e51050'/>
<id>urn:sha1:0075ab2cec500fc679c6b2e4990142b4a2e51050</id>
<content type='text'>
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2101

This patch is going to remove unnecessary calls
of os.exist()

Cc: Liming Gao &lt;liming.gao@intel.com&gt;
Signed-off-by: Bob Feng &lt;bob.c.feng@intel.com&gt;
Reviewed-by: Liming Gao &lt;liming.gao@intel.com&gt;
</content>
</entry>
<entry>
<title>BaseTools: Improve the file saving and copying reliability</title>
<updated>2019-08-20T06:06:07+00:00</updated>
<author>
<name>Shi, Steven</name>
<email>steven.shi@intel.com</email>
</author>
<published>2019-08-15T14:26:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=94459080c118049aba927ec0444ba5b750b7d2c9'/>
<id>urn:sha1:94459080c118049aba927ec0444ba5b750b7d2c9</id>
<content type='text'>
BZ:https://bugzilla.tianocore.org/show_bug.cgi?id=2079

The Basetool CopyFileOnChange() and SaveFileOnChange()
functions might raise the IOError occasionally when build
in Windows with multi-process and build cache enabled.
The CopyFileOnChange() and SaveFileOnChange() might be invoked
in multiple sub-processes simultaneously, and this patch adds
global locks to sync these functions invoking which can
harden their reliability.

Cc: Liming Gao &lt;liming.gao@intel.com&gt;
Cc: Bob Feng &lt;bob.c.feng@intel.com&gt;
Signed-off-by: Steven Shi &lt;steven.shi@intel.com&gt;
Reviewed-by: Bob Feng &lt;bob.c.feng@intel.com&gt;
</content>
</entry>
<entry>
<title>BaseTools: Enable Multiple Process AutoGen</title>
<updated>2019-08-09T15:15:53+00:00</updated>
<author>
<name>Feng, Bob C</name>
<email>bob.c.feng@intel.com</email>
</author>
<published>2019-07-30T09:15:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=673d09a2ddfacbc8414ca703519f32c1e48ca5b7'/>
<id>urn:sha1:673d09a2ddfacbc8414ca703519f32c1e48ca5b7</id>
<content type='text'>
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1875

Assign the Module AutoGen tasks into multiple
sub process.

Cc: Liming Gao &lt;liming.gao@intel.com&gt;
Signed-off-by: Bob Feng &lt;bob.c.feng@intel.com&gt;
Acked-by: Laszlo Ersek &lt;lersek@redhat.com&gt;
Tested-by: Laszlo Ersek &lt;lersek@redhat.com&gt;
Acked-by: Liming Gao &lt;liming.gao@intel.com&gt;
</content>
</entry>
<entry>
<title>BaseTools: Decouple AutoGen Objects</title>
<updated>2019-08-09T15:15:52+00:00</updated>
<author>
<name>Feng, Bob C</name>
<email>bob.c.feng@intel.com</email>
</author>
<published>2019-07-22T03:09:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=e8449e1d8e3b40186eb16ff25242397cffb00a63'/>
<id>urn:sha1:e8449e1d8e3b40186eb16ff25242397cffb00a63</id>
<content type='text'>
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1875

1. Separate the AutoGen.py into 3 small py files.
One is for AutoGen base class, one is for WorkspaceAutoGen class
and PlatformAutoGen class, and the one for ModuleAutoGen class.
2. Create a new class DataPipe to store the Platform scope settings.
Create a new class PlatformInfo to provide the same interface
as PlatformAutoGen. PlatformInfo class is initialized by
DataPipe instance.
Create a new class WorkspaceInfo to provide the same interface
as WorkspaceAutoGen. WorkspaceInfo class is initialized by
DataPipe instance.
3. Change ModuleAutoGen to depends on DataPipe, PlatformInfo and
WorkspaceInfo. Remove the dependency of ModuleAutoGen to PlatformAutoGen.

Cc: Liming Gao &lt;liming.gao@intel.com&gt;
Cc: Steven Shi &lt;steven.shi@intel.com&gt;
Signed-off-by: Bob Feng &lt;bob.c.feng@intel.com&gt;
Acked-by: Laszlo Ersek &lt;lersek@redhat.com&gt;
Tested-by: Laszlo Ersek &lt;lersek@redhat.com&gt;
Acked-by: Liming Gao &lt;liming.gao@intel.com&gt;
</content>
</entry>
<entry>
<title>BaseTools: Add HOST_APPLICATION module type.</title>
<updated>2019-07-12T13:06:57+00:00</updated>
<author>
<name>Jiewen Yao</name>
<email>jiewen.yao@intel.com</email>
</author>
<published>2019-07-01T06:19:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=a79841a0244ab2afd1efc3b9d4cc91e27fa90d71'/>
<id>urn:sha1:a79841a0244ab2afd1efc3b9d4cc91e27fa90d71</id>
<content type='text'>
It can be used to indicate a module can be build to run
as OS application and run in OS environment.

Cc: Bob Feng &lt;bob.c.feng@intel.com&gt;
Cc: Liming Gao &lt;liming.gao@intel.com&gt;
Cc: Jiewen Yao &lt;jiewen.yao@intel.com&gt;
Signed-off-by: Xiaoyu Lu &lt;xiaoyux.lu@intel.com&gt;
Reviewed-by: Liming Gao &lt;liming.gao@intel.com&gt;
</content>
</entry>
<entry>
<title>BaseTools: Replace BSD License with BSD+Patent License</title>
<updated>2019-04-09T16:10:20+00:00</updated>
<author>
<name>Michael D Kinney</name>
<email>michael.d.kinney@intel.com</email>
</author>
<published>2019-04-03T23:03:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=2e351cbe8e190271b3716284fc1076551d005472'/>
<id>urn:sha1:2e351cbe8e190271b3716284fc1076551d005472</id>
<content type='text'>
https://bugzilla.tianocore.org/show_bug.cgi?id=1373

Replace BSD 2-Clause License with BSD+Patent License.  This change is
based on the following emails:

  https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html
  https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html

RFCs with detailed process for the license change:

  V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html
  V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html
  V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Michael D Kinney &lt;michael.d.kinney@intel.com&gt;
Reviewed-by: Bob Feng &lt;bob.c.feng@intel.com&gt;
</content>
</entry>
<entry>
<title>Revert "BaseTools:BaseTools supports to the driver combination."</title>
<updated>2019-02-28T02:01:53+00:00</updated>
<author>
<name>Liming Gao</name>
<email>liming.gao@intel.com</email>
</author>
<published>2019-02-25T00:15:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=3a4698202cf5ca81d4401bdc6c0974400064f333'/>
<id>urn:sha1:3a4698202cf5ca81d4401bdc6c0974400064f333</id>
<content type='text'>
This reverts commit 838bc257bae3f9fc6723f41f3980f6cfbedb77e5.
After further evaluation, there are the unclear behavior in for the
driver combination feature. To not impact Q1 stable tag, remove it first.
1. If the drivers to be combined have the different PCD or library instance
   setting, build should not combine them and report build break. But this
   commit doesn't consider this case.
2. When start the sub driver fail, continue to start other sub driver. This
   behavior is required to be clarifed in build spec.
3. Unload the sub driver when the combined driver start fail. This case need
   to call the sub driver unload function for the driver start fail only.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Liming Gao &lt;liming.gao@intel.com&gt;
Reviewed-by: Bob Feng &lt;bob.c.feng@intel.com&gt;
</content>
</entry>
</feed>
