[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