[edk2-devel] [PATCH v1 1/1] BaseTools: Build ASL files before C files
PierreGondois
pierre.gondois at arm.com
Wed Oct 30 13:50:36 UTC 2019
From: Pierre Gondois <pierre.gondois at arm.com>
The '-tc' option of the Intel iASL compiler facilitates
generation of AML code in a C array. This AML code is
output to a .hex file. The .hex file can be included
from a C source file, thereby allowing one to run a
fix-up code in C.
For example, this technique can be used to patch the
resource data elements that describe the base address
or interrupt number for a device, before installing
the ACPI table.
To implement this feature two conditions need to be
satisfied:
- The ASL and C files must be included in the sources
section of the same .inf file for the module.
- The ASL files are pre-processed and compiled before
the C files (so that the .hex file include dependency
is satisfied).
This patch resolves the dependency by sorting the
CODA_TARGET list for the module being built and
placing the .aml files at the very beginning of
the list.
Signed-off-by: Pierre Gondois <pierre.gondois at arm.com>
---
The changes can be seen at https://github.com/PierreARM/edk2/commits/676_build_asl_first_v1
Notes:
v1:
- Sort .aml files first in the CODA_TARGET to build [Pierre]
them before other files.
BaseTools/Source/Python/AutoGen/ModuleAutoGen.py | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/BaseTools/Source/Python/AutoGen/ModuleAutoGen.py b/BaseTools/Source/Python/AutoGen/ModuleAutoGen.py
index f0812b6887be6f9fbdb14003f2efff229633fb34..a59ed1d1952c23d0d3de83353a0566fb8a7dab77 100755
--- a/BaseTools/Source/Python/AutoGen/ModuleAutoGen.py
+++ b/BaseTools/Source/Python/AutoGen/ModuleAutoGen.py
@@ -2,6 +2,7 @@
# Create makefile for MS nmake and GNU make
#
# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2019, ARM Limited. All rights reserved.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
from __future__ import absolute_import
@@ -931,7 +932,14 @@ class ModuleAutoGen(AutoGen):
@cached_property
def CodaTargetList(self):
self.Targets
- return self._FinalBuildTargetList
+
+ # To resolve dependencies on compiled ASL files (.aml files) in modules,
+ # build them first by putting them as the first targets in the
+ # CodaTargetList.
+ OrderedList = list(self._FinalBuildTargetList)
+ OrderedList.sort(key=lambda T: (T.Target.Ext.lower() != '.aml'))
+
+ return OrderedList
@cached_property
def FileTypes(self):
--
'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)'
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#49659): https://edk2.groups.io/g/devel/message/49659
Mute This Topic: https://groups.io/mt/39786201/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list