diff options
| author | kx <kx@radix.pro> | 2024-06-04 06:43:08 +0300 |
|---|---|---|
| committer | kx <kx@radix.pro> | 2024-06-04 06:43:08 +0300 |
| commit | 7e2ccccace24636f29ddc210b94606abd4c7e42b (patch) | |
| tree | 545d43ea12671048956cafeb12303e84d601e571 /BaseTools/Conf | |
| parent | 27b044605cd5f6b33a3d231576003850b3fe305b (diff) | |
| download | edk2-trunk.tar.xz | |
Renormalized end-of-lines from master@27b044605cd5f6b33a3d231576003850b3fe305btrunk
Diffstat (limited to 'BaseTools/Conf')
| -rw-r--r-- | BaseTools/Conf/Empty_Package_Information_Data_File.ini | 30 | ||||
| -rw-r--r-- | BaseTools/Conf/ReadMe.txt | 18 | ||||
| -rw-r--r-- | BaseTools/Conf/XMLSchema/DistributionPackage.xsd | 6374 | ||||
| -rwxr-xr-x | BaseTools/Conf/build_rule.template | 1300 | ||||
| -rw-r--r-- | BaseTools/Conf/gitattributes | 60 | ||||
| -rw-r--r-- | BaseTools/Conf/target.template | 140 | ||||
| -rwxr-xr-x | BaseTools/Conf/tools_def.template | 4540 |
7 files changed, 6231 insertions, 6231 deletions
diff --git a/BaseTools/Conf/Empty_Package_Information_Data_File.ini b/BaseTools/Conf/Empty_Package_Information_Data_File.ini index 81e52f6e2f..e8a4f4b8f6 100644 --- a/BaseTools/Conf/Empty_Package_Information_Data_File.ini +++ b/BaseTools/Conf/Empty_Package_Information_Data_File.ini @@ -1,15 +1,15 @@ -;@file
-; Example ini file used for UPT.
-;
-; Copyright (c) 2011 - 2019, Intel Corporation. All rights reserved.<BR>
-; SPDX-License-Identifier: BSD-2-Clause-Patent
-;
-[DistributionHeader]
-Name =
-GUID =
-Version =
-Vendor =
-Copyright =
-License =
-Abstract =
-XmlSpecification = 1.1
+;@file +; Example ini file used for UPT. +; +; Copyright (c) 2011 - 2019, Intel Corporation. All rights reserved.<BR> +; SPDX-License-Identifier: BSD-2-Clause-Patent +; +[DistributionHeader] +Name = +GUID = +Version = +Vendor = +Copyright = +License = +Abstract = +XmlSpecification = 1.1 diff --git a/BaseTools/Conf/ReadMe.txt b/BaseTools/Conf/ReadMe.txt index 7bded360c8..ab7e4a4654 100644 --- a/BaseTools/Conf/ReadMe.txt +++ b/BaseTools/Conf/ReadMe.txt @@ -1,9 +1,9 @@ -This directory contains the template files for the next generation of the
-EDK II Build infrastructure. These files will be copied into the WORKSPACE's
-Conf directory if and only if the target files do not exist.
-
-These files may be updated frequently.
-
-The XMLSchema directory contains the EDK II Packaging XML definitions. The
-schema may change in the future. It differs somewhat from the early versions
-of the XML Schema.
+This directory contains the template files for the next generation of the +EDK II Build infrastructure. These files will be copied into the WORKSPACE's +Conf directory if and only if the target files do not exist. + +These files may be updated frequently. + +The XMLSchema directory contains the EDK II Packaging XML definitions. The +schema may change in the future. It differs somewhat from the early versions +of the XML Schema. diff --git a/BaseTools/Conf/XMLSchema/DistributionPackage.xsd b/BaseTools/Conf/XMLSchema/DistributionPackage.xsd index 67be9c8f32..643b3fac02 100644 --- a/BaseTools/Conf/XMLSchema/DistributionPackage.xsd +++ b/BaseTools/Conf/XMLSchema/DistributionPackage.xsd @@ -1,3187 +1,3187 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Filename: DistributionPackage.xsd
-
-Copyright (c) 2008 - 2012, Intel Corporation. All rights reserved.
-
-SPDX-License-Identifier: BSD-2-Clause-Patent
-
--->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
- targetNamespace="http://www.uefi.org/2012/1.0" xmlns="http://www.uefi.org/2012/1.0">
- <xs:element name="DistributionPackage">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This schema defines the UEFI/PI Distribution Package description (PKG)
- file. It describes the content of:
- </xs:documentation>
- <xs:documentation xml:lang="en-us"> 1) Package descriptions with definitions and headers.</xs:documentation>
- <xs:documentation xml:lang="en-us">
- 2) Modules in either source or binary format. (Note that Binary format
- is for FFS leaf section file types only, complete FFS files cannot be distributed using this
- distribution format.)
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- 3) The distribution of custom tools used to modify the binary images to
- create UEFI/PI compliant images.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- 4) Finally, it can be used to distribute other miscellaneous content
- that is not specific to UEFI/PI images.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- The Package Surface Area describes the content of packages, while the
- Module Surface Area provides information relevant to source and/or binary distributions.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="DistributionHeader" minOccurs="1" maxOccurs="1">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This header contains (legal) information usually required
- for distributing both binary and/or source code.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element ref="PackageSurfaceArea" minOccurs="0" maxOccurs="unbounded">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The list of packages in this distribution. </xs:documentation>
- <xs:documentation xml:lang="en-us">
- Packages are groups of files and/or modules that are similar
- in nature.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- Packages are uniquely identified by a package GUID and a
- package version.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- A package can declare public mappings of C names to GUID
- values.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- A package can provide header files for library classes
- and/or other industry standard definitions.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- A package can also declare public mappings of platform
- configuration database (PCD) "knobs" to control features and operation of modules
- within a platform.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- Finally, a package lists the library instances and/or
- modules that are provided in a distribution package.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element ref="ModuleSurfaceArea" minOccurs="0" maxOccurs="unbounded">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The listing of UEFI/PI compliant modules in this
- distribution that are NOT part of a Package. Every module that is provided as part of a
- package needs to be described in a PackageSurfaceArea.Modules section.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- The ModuleSurfaceArea section describes how each module in a
- distribution is coded, or, in the case of a binary module distribution, how it was built.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- UEFI/PI compliant libraries and modules are uniquely
- identified by the Module's GUID and version number.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- This section will typically be used for modules that don't
- require any additional files that would be included in a package. For example, the Enhanced
- FAT driver binary does not need to have a package description, as no additional files are
- provided.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element ref="Tools" minOccurs="0" maxOccurs="unbounded">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This section is for distributing vendor specific executable
- tools, tool source code and/or configuration files. These tools are primarily for
- manipulating code and/or binary images.
- </xs:documentation>
- <xs:documentation xml:lang="en-us"> Tools in this section can:</xs:documentation>
- <xs:documentation xml:lang="en-us">
- 1) Parse build meta-data files to create source code files
- and build scripts.
- </xs:documentation>
- <xs:documentation xml:lang="en-us"> 2) Modify image files to conform to UEFI/PI specifications. </xs:documentation>
- <xs:documentation xml:lang="en-us">
- 3) Generate binary files from certain types of text/unicode
- files.
- </xs:documentation>
- <xs:documentation xml:lang="en-us"> 4) Generate PCI Option Roms or Firmware Device images. </xs:documentation>
- <xs:documentation xml:lang="en-us">
- 5) Implement external encoding/decoding/signature/GUIDed
- tools.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- 6) Distribution Package create/install/remove tools.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element ref="MiscellaneousFiles" minOccurs="0" maxOccurs="unbounded">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The list of miscellaneous files in this distribution. Any
- files that are not listed in either the Package, Module or Tools sections can be listed
- here. This section can be used to distribute specifications for packages and modules that
- are not "industry standards" such as a specification for a chipset or a video
- device.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element ref="UserExtensions" minOccurs="0" maxOccurs="unbounded">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The UserExtensions section is used to disseminate processing
- instructions that may be custom to the content provided by the distribution. This section
- contains information that is common to all aspects of this distribution.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- </xs:sequence>
-
- </xs:complexType>
- </xs:element>
- <!-- End of the DistributionPackage Description -->
-
- <xs:element name="DistributionHeader">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This section defines the content of the UEIF/PI compliant Distribution
- Package Header. This is the only required element of a UEFI/PI compliant distribution package.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="Name">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is the User Interface Name for this Distribution
- Package.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- Each Distribution Package is uniquely identified by its
- GUID and Version number.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:normalizedString">
- <xs:attribute name="BaseName" type="xs:NMTOKEN" use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The reference name of the Distribution
- Package file. This single word name can be used by tools as a keyword or for
- directory and/or file creation.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- White space and special characters (dash and
- underscore characters may be used) are not permitted in this name.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="GUID">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This 128-bit GUID and the Version attribute uniquely
- identify this Distribution Package.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- Backward compatible releases of a distribution package need
- only change the version number, while non-backward compatible changes require the GUID to
- change (resetting the version number to 1.0 is optional.)
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="RegistryFormatGuid">
- <xs:attribute name="Version" type="xs:decimal" use="required">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This value, along with the GUID, is used to
- uniquely identify this object. The higher the number, the more recent the
- content.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="Vendor" type="xs:normalizedString">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- A string identifying who created this distribution package.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="Date" type="xs:dateTime">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The date and time this distribution was created. The format
- is: YYYY-MM-DDThh:mm:ss, for example: 2001-01-31T13:30:00 (note the T character separator
- between the calendar date and the time.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="Copyright">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The copyright for this file that is generated by the creator
- of the distribution. If a derivative work is generated from an existing distribution, then
- the existing copyright must be maintained, and additional copyrights may be appended to the
- end of this element. It may also be the primary copyright for all code provided in the
- Distribution Package.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
-
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="License">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- A license that describes any restrictions on the use of this
- distribution. If a derivative work is allowed by the original license and a derivative work
- is generated from an existing distribution, then the existing license must be maintained,
- and additional licenses may be appended to the end of this element. It may also be the
- primary license for all code provided in the distribution file. Alternatively, this may
- point to a filename that contains the License. The file (included in the content zip file)
- will be stored in the same location as the distribution package's .pkg file.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="Abstract">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- A one line description of the Distribution Package.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:normalizedString">
- <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- A complete description of the Distribution Package. This
- description may include the release name of the file, the version of the file, and a
- complete description of the file contents and/or features including a description of the
- updates since the previous file release.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="Signature" type="Md5Sum">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The packaging utilities will use this MD5 sum value of the
- included ZIP file containing files and/or code. If this element is not present, then
- installation tools should assume that the content is correct, or that other methods may be
- needed to verify content.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="XmlSpecification" type="xs:decimal" default="1.1">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This version of this XML Schema is 1.1 </xs:documentation>
- <xs:documentation xml:lang="en-us"> Changes to 1.1 from 1.0 </xs:documentation>
- <xs:documentation xml:lang="en-us">
- #1 Updated to present date and new version which is
- important to reflect the present state of the matter
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- #2 Added definition/enumeration of UNDEFINED type 2 is
- important since there is a large body of legacy code for which the GUID’s and other
- code/data objects were not decorated with their usage. This document will allow for
- importing today’s source artifacts and producing decorations using the ‘Undefined’ versus
- having an error
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- #3 Allow for inclusion of ARM and future architecture
- types
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- </xs:sequence>
- <xs:attribute name="ReadOnly" type="xs:boolean" default="false" use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- If set to true, all content within this Distribution Package
- should NOT be modified. The default permits modification of all content.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- <xs:attribute name="RePackage" type="xs:boolean" default="false" use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- If set to true, then the content can be repackaged into another
- distribution package. The default prohibits repackaging the Distribution content.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:complexType>
- </xs:element>
- <!-- End of the DistributionHeader element. -->
-
- <xs:element name="PackageSurfaceArea">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- A package is a collection of related objects - Includes, Libraries and
- Modules.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- Each package is uniquely identified by its GUID and Version number.
- Backward compatible releases of a package need only change the version number, while non-backward
- compatible changes require the GUID to change (resetting the version number to 1.0 is optional.)
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
-
- <xs:element minOccurs="1" maxOccurs="1" name="Header">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="Name">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is the User Interface Name for this
- package.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:normalizedString">
- <xs:attribute name="BaseName" type="xs:NMTOKEN" use="required">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is a single word BaseName
- of the package. This BaseName can be used by tools as a keyword
- and for directory/file creation.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="GUID">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This GUID and the Version attribute uniquely
- identify a given package.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="RegistryFormatGuid">
- <xs:attribute name="Version" type="xs:decimal" use="required">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This value, along with the GUID,
- is used to uniquely identify this object.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- Backward compatible changes must
- make sure this number is incremented from the most recent
- version. Non-backward compatible changes require a new GUID, and
- the version can be reset.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="unbounded" name="Copyright">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- If the package requires a different copyright
- than the distribution package, this element can list one or more copyright
- lines.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
- />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
-
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="unbounded" name="License">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- If the package requires licenses that are
- different from the distribution package license, this element can contain one or
- more license text paragraphs (or license filenames.)
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
- />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
-
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="unbounded" name="Abstract">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- A one line description of this package.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:normalizedString">
- <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
- />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- A complete description of a package. This
- description may include the release name of the package, the version of the
- package, and a complete description of the package contents and/or features
- including a description of the updates since the previous package’s release.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
- />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="PackagePath" type="xs:anyURI">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This element is the location (in the ZIP file)
- for the root directory of a package.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PackageSurfaceArea Header element. -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The term cloned is used here to indicate that this package
- as been copied and modified to a completely different package. An example might be for a new
- generation of chipsets that have few or no elements in common with the original.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="GUID">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This GUID and the Version attribute uniquely
- identify the Package that this Package was copied from.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="RegistryFormatGuid">
- <xs:attribute name="Version" type="xs:decimal" use="required">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This value, along with the GUID,
- is used to uniquely identify the package that this package was
- cloned from.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PackageSurfaceArea ClonedFrom element. -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="LibraryClassDeclarations">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- Library Classes are public interfaces that can be used by
- modules. One or more library instances can implement a library class, however only one
- library instance can be linked to an individual module. This provides the platform
- integrator with the flexibility of choosing one library instance's implementation over a
- different library instance.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile" type="xs:anyURI">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The header file provides definitions
- and function prototypes for a library class. Modules can be coded
- against these functions, using the definitions in this header,
- without concerning themselves about the libraries' implementation
- details. This is a PackagePath relative path and filename for the
- include file.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="RecommendedInstance">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="GUID">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This GUID and the
- Version attribute uniquely identify the Recommended Library
- Instance.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="RegistryFormatGuid">
- <xs:attribute name="Version" type="xs:decimal"
- use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This value, along with
- the GUID, is used to uniquely identify this object. If this
- value is not specified, then any version of the library
- instance is recommended.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- <xs:attribute name="Keyword" type="xs:NCName" use="required">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The single word name of the Library
- Class that module developers will use to identify a library class
- dependency.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- <xs:attributeGroup ref="SupportedArchMod"/>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PackageSurfaceArea LibraryClassDeclarations element. -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="IndustryStandardIncludes">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This section is used to list header files for industry
- standards not under the auspices of UEFI.org. For example, headers that contain definitions
- and data structures for the USB specifications.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="IndustryStandardHeader">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile" type="xs:anyURI">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The package relative path and
- filename (in the content zip file) of the industry standard include
- file.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PackageSurfaceArea IndustryStdIncludes element. -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="PackageIncludes">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- All top level header files that are included by a package
- that are not listed above. They cannot be:
- </xs:documentation>
- <xs:documentation xml:lang="en-us"> 1) Local to a module (module specific.) </xs:documentation>
- <xs:documentation xml:lang="en-us"> 2) An industry standard header. </xs:documentation>
- <xs:documentation xml:lang="en-us"> 3) A library class header. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="PackageHeader">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is the Package relative path
- and filename location within the content ZIP file.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:anyURI">
- <xs:attributeGroup ref="SupportedArchMod"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PackageSurfaceArea PackageIncludes element. -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="Modules">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="ModuleSurfaceArea" minOccurs="1" maxOccurs="unbounded">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This section lists the Module Surface Area for
- all modules provided with this package.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PackageSurfaceArea Modules element. -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="GuidDeclarations">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This section defines the mapping of GUID C names to GUID
- values as a Registry Format GUID.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- Modules that use these GUIDs must specify their dependency
- on this package.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> Individual GUID Declarations </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
- <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
- type="RegistryFormatGuid"/>
- <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- <xs:attribute name="UiName" type="xs:normalizedString" use="optional"/>
- <xs:attribute name="GuidTypes" type="GuidListType" use="optional"/>
- <xs:attributeGroup ref="SupportedArchMod"/>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PackageSurfaceArea GuidDeclarations element. -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="ProtocolDeclarations">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This section defines the mapping of Protocol C names to GUID
- values as a Registry Format GUID.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- Modules that use these Protocols must specify their
- dependency on this package.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- Individual Protocol Declarations
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
- <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
- type="RegistryFormatGuid"/>
- <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- <xs:attribute name="UiName" type="xs:normalizedString" use="optional"/>
- <xs:attributeGroup ref="SupportedArchMod"/>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PackageSurfaceArea ProtocolDeclarations element. -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="PpiDeclarations">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This section defines the mapping of Ppi C names to GUID
- values as a Registry Format GUID.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- Modules that use these Ppis must specify their dependency on
- this package.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> Individual PPI Declarations </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
- <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
- type="RegistryFormatGuid"/>
- <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- <xs:attribute name="UiName" type="xs:normalizedString" use="optional"/>
- <xs:attributeGroup ref="SupportedArchMod"/>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PackageSurfaceArea PpiDeclarations element. -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="PcdDeclarations">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This section is used to declare platform configuration knobs
- that are defined by this package.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- Modules that use these PCD values must specify their
- dependency on this package.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCname"
- type="xs:NCName">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- Specifies the C name of the Token
- Space GUID of which this PCD Entry is a member. This C name should
- also be listed in the GUIDs section, (specified above,) where the C
- name is assigned to a GUID value.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="Token">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- Specifies the 32-bit token value for
- this PCD Entry. The Token number must be unique to the Token Space
- that declares the PCD.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- The minLength of 3 is required to
- handle the "0x" prefix to the hex number.
- </xs:documentation>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="HexNumber">
- <xs:minLength value="3"/>
- <xs:maxLength value="10"/>
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
- <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDatumTypes">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- A string that contains the data type
- of this PCD Entry. PCD data types are restricted to the following
- set:UINT8, UINT16, UINT32, UINT64, VOID*, BOOLEAN.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="ValidUsage" type="PcdItemListType">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- A string that contains one or more
- PCD Item types separated by spaces. The PCD Item types are
- restricted to FeaturePcd, FixedPcd, PatchPcd, Pcd and/or PcdEx.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="DefaultValue"
- type="xs:normalizedString"/>
- <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is a recommended maximum data
- size for VOID* data types, the actual value should be defined by the
- Platform Integrator. It is not required for the other data types.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- The minLength of 3 is required to
- handle the "0x" prefix to the hex number.
- </xs:documentation>
-
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="HexNumber">
- <xs:minLength value="3"/>
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="unbounded" name="Prompt">
- <xs:annotation>
- <xs:documentation xml:lang="en-US">
- This entry contains prompt
- information, that may used by tools to assist platform integrators
- with choosing the correct values
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="Lang" type="xs:language" default="en-us"
- use="optional"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
-
- <xs:element minOccurs="0" maxOccurs="unbounded" name="PcdError">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- Valid Error messages that may be
- implemented in a module for the PCD Entry. Only One Error Number per
- PcdError, (multiple ErrorMessage entries are permitted) and multiple
- PcdError elements are permitted.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:choice minOccurs="1" maxOccurs="1">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- One of the following
- types of comparisons, which must be able to evaluate to
- either true or false.
- </xs:documentation>
- </xs:annotation>
- <xs:element minOccurs="0" maxOccurs="1" name="ValidValueList">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The PCD Value must be
- space separated list of values. Values are restricted to the
- data type of this PCD.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:normalizedString">
- <xs:attribute name="Lang" type="xs:language" use="optional"
- />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="ValidValueRange"
- type="xs:normalizedString">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The PCD must be within a
- specified range of numeric values. Restricted to C style
- Relational, Equality and Logical Operators and parenthesis
- are valid. Only the CName for this PCD is permitted in the
- ValidValueRange expression. All other values must be
- numeric.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- LValue (op RValue)+
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="Expression"
- type="xs:normalizedString">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- A in-fix logical
- expression using C style logical operators.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- </xs:choice>
- <xs:element minOccurs="1" maxOccurs="1" name="ErrorNumber">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- A hexadecimal value for
- the error message as defined by specifications.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- The minLength of 3 is
- required to handle the "0x" prefix to the hex number.
- </xs:documentation>
-
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="HexNumber">
- <xs:minLength value="3"/>
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="ErrorMessage">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This string should be
- defined by specifications. There are pre-defined error
- number ranges in the UEFI/PI specification.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="Lang" type="xs:language" default="en-us"
- use="optional"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- <xs:attributeGroup ref="SupportedArchMod"/>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PackageSurfaceArea PcdDeclarations element. -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="PcdRelationshipChecks">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This section is used to describe any PCD interdependencies
- or relationships.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdCheck" type="xs:normalizedString">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This entry must used
- TokenSpaceGuidCName.PcdCname for every named PCD. Restricted to Relational,
- Equality and Logical Operators (NOT, AND, OR, GT, GE, EQ, LE, LT and XOR) and
- parenthesis are valid. Only the TokenSpaceGuidCName.PcdCname us permitted to
- name PCDs in the expression. All other values must be numeric.
- </xs:documentation>
- <xs:documentation xml:lang="en-us"> LValue (op RValue)+ </xs:documentation>
- </xs:annotation>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
-
- <xs:element minOccurs="0" maxOccurs="unbounded" name="MiscellaneousFiles">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This section contains files that are not part of the code
- distributed with this package.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="0" maxOccurs="1" name="Copyright" type="xs:string">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- Only required if different from the Package
- Copyright.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- Only required if different from the Package
- License.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="Abstract" type="xs:string">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- A one line description of this section's
- content.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="unbounded" name="Description" type="xs:string">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- A complete description of the files in this
- section.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is the PackagePath relative path and
- filename location within the ZIP file.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:anyURI">
- <xs:attribute name="Executable" type="xs:boolean" default="false"
- use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- If true, used by installation
- tools to ensure that a file that must be executable has the
- correct properties to permit execution.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
-
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PackageSurfaceArea Misc element. -->
-
- <xs:element minOccurs="0" maxOccurs="unbounded" name="UserExtensions">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This section is used for any processing instructions that
- may be custom to the content provided by this package that are common to this package.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:sequence>
- <xs:any processContents="lax" minOccurs="0" maxOccurs="1"/>
- </xs:sequence>
- <xs:attribute name="UserId" type="xs:NCName" use="required">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is a single word identifier for grouping
- similar content that does not fit into previously defined sections or other sections
- of the Distribution.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- <xs:attribute name="Identifier" type="xs:string" use="required">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This can be used to differentiate multiple sections
- with a grouping.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- For example, a PRE_PROCESS Identifier might indicate
- specific steps and tools required before processing module content, while a
- different UserExtensions section with a POST_PROCESS Identifier might describe steps
- that need to be executed after operations on the modules in this package.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- <xs:anyAttribute processContents="lax"/>
- </xs:complexType>
- </xs:element>
- <!-- End of PackageSurfaceArea UserExtensions element. -->
-
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of the PackageSurfaceArea element. -->
-
- <xs:element name="ModuleSurfaceArea">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- Each module is uniquely identified by its GUID and Version number.
- Backward compatible releases of a module need only change the version number, while non-backward
- compatible changes require the GUID to change (resetting the version number to 1.0 is optional.)
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
-
- <xs:element minOccurs="1" maxOccurs="1" name="Header">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="Name">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is the User Interface Name for this Module.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:normalizedString">
- <xs:attribute name="BaseName" type="xs:NMTOKEN" use="required">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is a single word BaseName
- that will be used to create a module meta-data file.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- This name should also be used to
- create output file names and directories.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="GUID">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This GUID and the Version attribute uniquely
- identify a given Module.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="RegistryFormatGuid">
- <xs:attribute name="Version" type="xs:decimal" use="required">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This value, along with the GUID,
- is used to uniquely identify this object.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- Backward compatible changes must
- make sure this number is incremented from the most recent
- version. Non-backward compatible changes require a new GUID, and
- the version can be reset.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="unbounded" name="Copyright">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is only required if the Copyright is
- different from either the Package or Distribution copyright. Multiple copyright
- lines are permitted within this section.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
- />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="unbounded" name="License">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is only required if the license is
- different from either the Package or Distribution license. Multiple licenses are
- permitted within this section.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
- />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="unbounded" name="Abstract">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- A brief text description of the module.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:normalizedString">
- <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
- />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- A complete description of the module contents
- and/or features including a description of the updates since the previous module
- release.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
- />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of Module Surface Area Header Section -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="ModuleProperties">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- List general information about a module, including the
- Supported Architectures, this module's type, specifications the module is coded against, and
- other informational content.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="ModuleType" type="ModuleTypes">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- One of the Enumerated module types that limit
- the use of a module.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="Path" type="xs:anyURI">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- For stand-alone modules that are NOT part of any
- package, this is the path to the root of the module as listed in the ZIP file.
- For modules included in a package, this is the location, relative to the root of
- the package (PackagePath) this module belongs to.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="PcdIsDriver">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This element is only required for the PEIM that
- produces the PCD PPI or the DXE Driver that produces the PCD Protocol.
- </xs:documentation>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="PEI_PCD_DRIVER"/>
- <xs:enumeration value="DXE_PCD_DRIVER"/>
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
-
- <xs:element minOccurs="0" maxOccurs="1" name="UefiSpecificationVersion" type="xs:decimal"/>
-
- <xs:element minOccurs="0" maxOccurs="1" name="PiSpecificationVersion" type="xs:decimal"/>
-
- <xs:element minOccurs="0" maxOccurs="unbounded" name="Specification">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is a list of other specifications that this
- module is written against. These entries can be used in #define statements
- (depending on the build system implementation, they may be autogenerated.)
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:NCName">
- <xs:attribute name="Version" type="xs:decimal" use="required"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
-
- <xs:element minOccurs="0" maxOccurs="unbounded" name="BootMode">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- Different firmware execution paths may be taken
- based on a given state of the hardware, firmware, or through feature settings. A
- BootMode may be declared (PRODUCES) or discovered (CONSUMES) based on these
- states and feature settings. If the usage is UNDEFINE, it implies that a Boot
- Mode is used, but the package creator does not know how it is used. The
- supported boot modes map to the PI specification Boot Modes. The boot modes
- listed with Recovery are to indicate that the BootMode is valid during a
- recovery boot.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence minOccurs="0">
- <xs:element minOccurs="1" maxOccurs="1" name="SupportedBootModes">
- <xs:simpleType>
- <xs:list>
- <xs:simpleType>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="FULL"/>
- <xs:enumeration value="MINIMAL"/>
- <xs:enumeration value="NO_CHANGE"/>
- <xs:enumeration value="DIAGNOSTICS"/>
- <xs:enumeration value="DEFAULT"/>
- <xs:enumeration value="S2_RESUME"/>
- <xs:enumeration value="S3_RESUME"/>
- <xs:enumeration value="S4_RESUME"/>
- <xs:enumeration value="S5_RESUME"/>
- <xs:enumeration value="FLASH_UPDATE"/>
- <xs:enumeration value="RECOVERY_FULL"/>
- <xs:enumeration value="RECOVERY_MINIMAL"/>
- <xs:enumeration value="RECOVERY_NO_CHANGE"/>
- <xs:enumeration value="RECOVERY_DIAGNOSTICS"/>
- <xs:enumeration value="RECOVERY_DEFAULT"/>
- <xs:enumeration value="RECOVERY_S2_RESUME"/>
- <xs:enumeration value="RECOVERY_S3_RESUME"/>
- <xs:enumeration value="RECOVERY_S4_RESUME"/>
- <xs:enumeration value="RECOVERY_S5_RESUME"/>
- <xs:enumeration value="RECOVERY_FLASH_UPDATE"/>
- <xs:enumeration value="UNDEFINED"/>
- </xs:restriction>
- </xs:simpleType>
- </xs:list>
- </xs:simpleType>
- </xs:element>
-
- <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- <xs:attribute name="Usage" use="required">
- <xs:simpleType>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="CONSUMES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The module always supports
- the given boot modes.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_CONSUMES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The module may support a
- given mode on some execution paths.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PRODUCES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The module will change the
- boot mode.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIME_PRODUCES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The module will change the
- boot mode on some execution paths.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="UNDEFINED">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The package creator does not
- know how the boot mode is used.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- </xs:restriction>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
- <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
- </xs:complexType>
- </xs:element>
-
- <xs:element minOccurs="0" maxOccurs="unbounded" name="Event" nillable="true">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The functions that make up the Event, Timer, and
- Task Priority Services are used during preboot to create, close, signal, and
- wait for events; to set timers; and to raise and restore task priority levels as
- defined in the UEFI specification. GUIDed events should be listed in the Guids
- section.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- <xs:attribute name="Usage" use="required">
- <xs:simpleType>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="CONSUMES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The module will register a
- notification function and calls the function when it is
- signaled.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_CONSUMES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The module will register a
- notification function and calls the function when it is
- signaled on some execution paths.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PRODUCES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The module will signal all
- events in an event group.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_PRODUCES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The module will signal all
- events in an event group under some execution paths.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="UNDEFINED">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The package creator does not
- know how an event is used.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- </xs:restriction>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="EventType" use="required">
- <xs:simpleType>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="EVENT_TYPE_PERIODIC_TIMER"/>
- <xs:enumeration value="EVENT_TYPE_RELATIVE_TIMER"/>
- <xs:enumeration value="UNDEFINED"/>
- </xs:restriction>
- </xs:simpleType>
-
-
- </xs:attribute>
- <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
- <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
- </xs:complexType>
- </xs:element>
-
- <xs:element minOccurs="0" maxOccurs="unbounded" name="HOB" nillable="false">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is a list of non-GUIDed Hand Off Blocks
- (HOBs) produced or consumed by this module.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- <xs:attribute name="HobType" use="required">
- <xs:simpleType>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="PHIT"/>
- <xs:enumeration value="MEMORY_ALLOCATION"/>
- <xs:enumeration value="RESOURCE_DESCRIPTOR"/>
- <xs:enumeration value="FIRMWARE_VOLUME"/>
- <xs:enumeration value="LOAD_PEIM"/>
- <xs:enumeration value="UNDEFINED"/>
- </xs:restriction>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="Usage" use="required">
- <xs:simpleType>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="CONSUMES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- A HOB must be present in the
- system.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_CONSUMES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- If present, the HOB will be
- used.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PRODUCES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The HOB is always produced
- by the module.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_PRODUCES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The HOB may be produced by
- the module under some execution paths.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="UNDEFINED">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The package creator knows
- that a HOB is used, but does not know how it is used.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- </xs:restriction>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
- <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
- </xs:complexType>
- </xs:element>
-
- </xs:sequence>
- <xs:attributeGroup ref="SupportedArchMod"/>
- </xs:complexType>
- </xs:element>
- <!-- End of ModuleProperties Section -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This section may be included for Modules that are copied
- from a different module.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="GUID">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This GUID and the Version attribute uniquely
- identify the Module that this Module was copied from.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="RegistryFormatGuid">
- <xs:attribute name="Version" type="xs:decimal" use="required">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This value, along with the GUID,
- is used to uniquely identify this object.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of ClonedFrom Section. -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="LibraryClassDefinitions">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- A list of the different Library Classes consumed by a
- driver, core and/or application module, or produced by a Library module.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="Keyword" type="xs:NCName">
- <xs:annotation>
- <xs:documentation xml:lang="en-us ">
- Used by tools to identify different
- instances of libraries that provide the library class. This keyword
- identifies the library class this module needs to be linked against.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="RecommendedInstance">
- <xs:complexType>
- <xs:all>
- <xs:element minOccurs="1" maxOccurs="1" name="GUID">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This GUID and the
- Version attribute uniquely identify the recommended Library
- Instance for this module .
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="RegistryFormatGuid">
- <xs:attribute name="Version" type="xs:decimal"
- use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This value, along with
- the GUID, is used to uniquely identify this object.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:all>
- </xs:complexType>
- </xs:element>
- <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- <xs:attribute name="Usage" use="required">
- <xs:simpleType>
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- Library instances can provide code
- for a library class, or may require other library instances
- themselves. Since different execution paths in a library (or module)
- may need different library classes based on some setting, library
- classes may not alway be required.
- </xs:documentation>
- </xs:annotation>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="PRODUCES"/>
- <xs:enumeration value="CONSUMES"/>
- <xs:enumeration value="SOMETIMES_CONSUMES"/>
- <xs:enumeration value="UNDEFINED"/>
- </xs:restriction>
- </xs:simpleType>
- </xs:attribute>
-
- <xs:attributeGroup ref="SupportedArchMod"/>
- <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- A FeatureFlag attribute must evaluate to
- either true or false - it may be a fixed value of true or false, a C
- name or an in-fix expression.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of LibraryClassDefinitions Section -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="SourceFiles">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is the module relative
- (ModuleProperties.Path) path and filename location within the ZIP file.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:anyURI">
- <xs:attribute name="Family" type="FamilyTypes" use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The Family attribute is used to
- restrict usage to a given family of compilers, such as GCC or
- MSFT. Since not all code processing tools use the same syntax,
- especially for assembly, this field can be used to identify
- different syntax.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
- <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
- <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of SourceFiles Section -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="BinaryFiles">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="BinaryFile">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is the module relative
- (ModuleProperties.Path) path and filename location within the ZIP
- file.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:anyURI">
- <xs:attribute name="FileType" use="optional">
- <xs:simpleType>
- <xs:restriction base="xs:NCName">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- Binary file distribution
- is limited to UEFI/PI FFS leaf section file types.
- </xs:documentation>
- </xs:annotation>
- <xs:enumeration value="GUID"/>
- <xs:enumeration value="FREEFORM"/>
- <xs:enumeration value="UEFI_IMAGE"/>
- <xs:enumeration value="PE32">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- A UEFI/PI FFS Leaf
- section file type, not a raw PE32 file.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PIC"/>
- <xs:enumeration value="PEI_DEPEX"/>
- <xs:enumeration value="DXE_DEPEX"/>
- <xs:enumeration value="SMM_DEPEX"/>
- <xs:enumeration value="COMPAT16"/>
- <xs:enumeration value="DISPOSABLE"/>
- <xs:enumeration value="TE"/>
- <xs:enumeration value="VER"/>
- <xs:enumeration value="UI"/>
- <xs:enumeration value="BIN"/>
- <xs:enumeration value="FV"/>
- </xs:restriction>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="GUID" use="optional"
- type="RegistryFormatGuid"/>
- <xs:attribute name="SupArchList" type="ArchListType"
- use="optional"/>
- <xs:attribute name="SupModList" type="ModuleListType"
- use="optional"/>
- <xs:attribute name="FeatureFlag" type="xs:normalizedString"
- use="optional"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="unbounded" name="AsBuilt">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This section contains information
- about how the module was coded, such as Compiler Tools, Flags, PCDs
- (only PatchPcd and/or PcdEx) and Library Class Instances used to
- build the binary.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
-
- <xs:element minOccurs="0" maxOccurs="unbounded" name="PatchPcdValue">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The element is the
- Patchable PCD Value that was used during the build.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1"
- name="TokenSpaceGuidValue" type="RegistryFormatGuid"/>
- <xs:element minOccurs="1" maxOccurs="1" name="PcdCName"
- type="xs:NCName"/>
- <xs:element minOccurs="1" maxOccurs="1" name="Token">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The minLength of 3 is
- required to handle the "0x" prefix to the hex number.
- </xs:documentation>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="HexNumber">
- <xs:minLength value="3"/>
- <xs:maxLength value="10"/>
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="DatumType"
- type="PcdDatumTypes"/>
- <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This field is required
- if the Pcd Datum Type is VOID*
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- The minLength of 3 is
- required to handle the "0x" prefix to the hex number.
- </xs:documentation>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="HexNumber">
- <xs:minLength value="3"/>
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="Value"
- type="xs:normalizedString"/>
- <xs:element minOccurs="1" maxOccurs="1" name="Offset">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The minLength of 3 is
- required to handle the "0x" prefix to the hex number.
- </xs:documentation>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="HexNumber">
- <xs:minLength value="3"/>
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element ref="HelpText" minOccurs="0"
- maxOccurs="unbounded"/>
- <xs:element minOccurs="0" maxOccurs="unbounded"
- name="PcdError">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- Error information
- implemented by the module.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:choice>
- <xs:element minOccurs="0" maxOccurs="1" name="ValidValueList">
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:normalizedString">
- <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="ValidValueRange" type="xs:normalizedString"/>
- <xs:element minOccurs="0" maxOccurs="1" name="Expression" type="xs:normalizedString"/>
- </xs:choice>
- <xs:element minOccurs="1" maxOccurs="1" name="ErrorNumber">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The minLength of 3 is
- required to handle the "0x" prefix to the hex number.
- </xs:documentation>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="HexNumber">
- <xs:minLength value="3"/>
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="unbounded"
- name="ErrorMessage">
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="Lang" type="xs:language" default="en-us"
- use="optional"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
-
- <xs:element minOccurs="0" maxOccurs="unbounded" name="PcdExValue">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The element is the
- DynamicEx PCD Value that was used during the build.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1"
- name="TokenSpaceGuidValue" type="RegistryFormatGuid"/>
- <xs:element minOccurs="1" maxOccurs="1" name="Token">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The minLength of 3 is
- required to handle the "0x" prefix to the hex number.
- </xs:documentation>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="HexNumber">
- <xs:minLength value="3"/>
- <xs:maxLength value="10"/>
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="DatumType"
- type="PcdDatumTypes"/>
- <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This field is required
- if the Pcd Datum Type is VOID*
- </xs:documentation>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="HexNumber">
- <xs:minLength value="3"/>
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="Value"
- type="xs:normalizedString"/>
- <xs:element ref="HelpText" minOccurs="0"
- maxOccurs="unbounded"/>
- <xs:element minOccurs="0" maxOccurs="unbounded"
- name="PcdError">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- Error information
- implemented by the module.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:choice>
- <xs:element minOccurs="0" maxOccurs="1" name="ValidValueList">
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:normalizedString">
- <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="ValidValueRange" type="xs:normalizedString"/>
- <xs:element minOccurs="0" maxOccurs="1" name="Expression" type="xs:normalizedString"/>
- </xs:choice>
- <xs:element minOccurs="1" maxOccurs="1" name="ErrorNumber">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The minLength of 3 is
- required to handle the "0x" prefix to the hex number.
- </xs:documentation>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="HexNumber">
- <xs:minLength value="3"/>
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="unbounded"
- name="ErrorMessage">
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="Lang" type="xs:language" default="en-us"
- use="optional"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
-
- <xs:element minOccurs="0" maxOccurs="1" name="LibraryInstances">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is the actual
- library instance that was used to link against the module.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="GUID">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This GUID and the
- Version attribute uniquely identify the actual Library
- Instance linked in this module.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="RegistryFormatGuid">
- <xs:attribute name="Version" type="xs:decimal"
- use="required">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This value, along with
- the GUID, is used to uniquely identify this object.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
-
- <xs:element minOccurs="0" maxOccurs="unbounded" name="BuildFlags">
- <xs:complexType mixed="true">
- <xs:simpleContent>
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- Any description of OS,
- Tool, and flags for the individual tool can go in this
- section.
- </xs:documentation>
- </xs:annotation>
- <xs:extension base="xs:string">
- <xs:anyAttribute processContents="lax"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of AsBuilt -->
- <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
-
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of BinaryFiles Section -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="PackageDependencies">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="Package">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="Lang" type="xs:language" default="en-us"
- use="optional"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="GUID">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This GUID and the Version attribute
- uniquely identify Package that this Module depends on.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="RegistryFormatGuid">
- <xs:attribute name="Version" type="xs:decimal" use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This value, along with
- the GUID, is used to uniquely identify this object. If the
- version attribute is not specified, the most recent version
- of the package can be used.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
- <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
- <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PackageDependencies -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="Guids">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="GuidCName">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
- <xs:element minOccurs="0" maxOccurs="1" name="GUID" type="RegistryFormatGuid"/>
- <xs:element minOccurs="0" maxOccurs="1" name="VariableName"
- type="xs:normalizedString">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> Only valid for Variable GUID types. </xs:documentation>
- <xs:documentation>
- This can be either a Hex Array or C string in unicode
- format: L"string" Data.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- <xs:attribute name="Usage" use="required">
- <xs:simpleType>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="CONSUMES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The module does not install
- the GUID, and the GUID must be present for the module to
- execute.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_CONSUMES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The module does not install
- the GUID, however, the GUID will be used if it is present.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PRODUCES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The module always installs
- the GUID.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_PRODUCES">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The Module will install the
- GUID under certain execution paths.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="UNDEFINED">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The package creator knows
- that a GUID is used, but does not know how it is used.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- </xs:restriction>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="GuidType" type="GuidListType" use="required"/>
- <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
- <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
- <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of Guids Section -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="Protocols">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- A listing of protocols required or produced by this module.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="Protocol" nillable="true">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
- <xs:element minOccurs="0" maxOccurs="1" name="GUID" type="RegistryFormatGuid"/>
- <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- <xs:attribute name="Usage" use="required">
- <xs:simpleType>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="PRODUCES"/>
- <xs:enumeration value="SOMETIMES_PRODUCES"/>
- <xs:enumeration value="CONSUMES"/>
- <xs:enumeration value="SOMETIMES_CONSUMES"/>
- <xs:enumeration value="TO_START"/>
- <xs:enumeration value="BY_START"/>
- <xs:enumeration value="UNDEFINED"/>
- </xs:restriction>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="Notify" type="xs:boolean" use="optional"/>
- <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
- <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
- <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of Protocols Section -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="PPIs">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- A listing of PPIs required or produced by this module.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="Ppi" nillable="true">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
- <xs:element minOccurs="0" maxOccurs="1" name="GUID" type="RegistryFormatGuid"/>
- <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- <xs:attribute name="Usage" use="required">
- <xs:simpleType>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="PRODUCES"/>
- <xs:enumeration value="SOMETIMES_PRODUCES"/>
- <xs:enumeration value="CONSUMES"/>
- <xs:enumeration value="SOMETIMES_CONSUMES"/>
- <xs:enumeration value="UNDEFINED"/>
- </xs:restriction>
- </xs:simpleType>
- </xs:attribute>
- <xs:attribute name="Notify" type="xs:boolean" use="optional"/>
- <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
- <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
- <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PPIs Section -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="Externs">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- These elements specify additional information about the
- module. This area may be used by tools to generate code.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="Extern">
- <xs:complexType>
- <xs:sequence>
- <xs:choice minOccurs="1">
- <xs:sequence>
- <xs:element minOccurs="0" maxOccurs="1" name="EntryPoint"
- type="xs:NCName"/>
- <xs:element minOccurs="0" maxOccurs="1" name="UnloadImage"
- type="xs:NCName"/>
- </xs:sequence>
- <xs:sequence>
- <xs:element minOccurs="0" maxOccurs="1" name="Constructor"
- type="xs:NCName"/>
- <xs:element minOccurs="0" maxOccurs="1" name="Destructor"
- type="xs:NCName"/>
- </xs:sequence>
- </xs:choice>
- <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
- </xs:sequence>
- <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
- <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
- <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of Externs Section -->
-
- <xs:element minOccurs="0" maxOccurs="1" name="PcdCoded">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This section describes how a platform is coded with respect
- to the platform configuration knobs.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
- <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCName"
- type="xs:NCName"/>
- <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue"
- type="xs:normalizedString"/>
- <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- <xs:attribute name="PcdItemType" type="PcdItemTypes" use="required"/>
- <xs:attribute name="PcdUsage" use="required">
- <xs:simpleType>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="PRODUCES"/>
- <xs:enumeration value="SOMETIMES_PRODUCES"/>
- <xs:enumeration value="CONSUMES"/>
- <xs:enumeration value="SOMETIMES_CONSUMES"/>
- <xs:enumeration value="UNDEFINED"/>
- </xs:restriction>
- </xs:simpleType>
-
-
- </xs:attribute>
- <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
- <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
- <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of PcdCoded Section -->
-
- <xs:element minOccurs="0" maxOccurs="unbounded" name="PeiDepex">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is the PEI dependency expression for a Dependency
- Section.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element name="Expression" type="xs:string" minOccurs="1" maxOccurs="1">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- An in-fix expression, of C identifiers and TRUE,
- FALSE, AND, OR, NOT, BEFORE, and AFTER as well as parenthesis () in the in-fix
- notation. The operators are restricted to grammar defined in the PI
- specification.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
- </xs:sequence>
- <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
- <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
- <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
- </xs:complexType>
- </xs:element>
- <!-- End of PeiDepex Section -->
-
- <xs:element minOccurs="0" maxOccurs="unbounded" name="DxeDepex">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is the DXE dependency expression for a Dependency
- Section.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element name="Expression" type=" xs:string " minOccurs="1" maxOccurs="1">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- An in-fix expression, of C identifiers and TRUE,
- FALSE, AND, OR, NOT, BEFORE, and AFTER as well as parenthesis () in the in-fix
- notation. The operators are restricted to grammar defined in the PI
- specification.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
- </xs:sequence>
- <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
- <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
- <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
- </xs:complexType>
- </xs:element>
- <!-- End of DxeDepex Section -->
-
- <xs:element minOccurs="0" maxOccurs="unbounded" name="SmmDepex">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is the SMM dependency expression for a Dependency
- Section.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element name="Expression" type=" xs:string " minOccurs="1" maxOccurs="1">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- An in-fix expression, of C identifiers and TRUE,
- FALSE, AND, OR, NOT, BEFORE, and AFTER as well as parenthesis () in the in-fix
- notation. The operators are restricted to grammar defined in the PI
- specification.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
- </xs:sequence>
- <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
- <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
- <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
- </xs:complexType>
- </xs:element>
- <!-- End of SmmDepex Section -->
-
-
- <xs:element minOccurs="0" maxOccurs="1" name="MiscellaneousFiles">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This section is used to provide comments and/or list
- auxiliary files, such as pdb or map files.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
- />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is the path and filename location within
- the ZIP file.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:anyURI">
- <xs:attribute name="Executable" type="xs:boolean" default="false"
- use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- If true, used by installation
- tools to ensure that a file that must be executable has the
- correct properties to permit execution.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of Module Surface Area Misc Section -->
-
- <xs:element minOccurs="0" maxOccurs="unbounded" name="UserExtensions">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This section is used for any processing instructions that
- may be custom to the content provided by the distribution that are common to module.
- </xs:documentation>
- <xs:documentation xml:lang="en-us"> The content is vendor specific. </xs:documentation>
- <xs:documentation xml:lang="en-us">
- The content can be plain text as well as any user-defined,
- properly formatted XML structure.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:attribute name="UserId" type="xs:NCName" use="required">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is a single word identifier for grouping
- similar content. For example, ReferenceBuild might be used to identify non-PI
- compliant build steps, with two different UserExtensions sections, one with an
- Identifier of Prebuild, and another of PostBuild. Both UserExtensions sections would
- use the same UserId.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- <xs:attribute name="Identifier" type="xs:string" use="required">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This can be any string used to differentiate or
- identify this section from other UserExtensions sections.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- For example, a PRE_PROCESS Identifier might indicate
- specific steps and tools required before processing module content, while a
- different UserExtensions section with a POST_PROCESS Identifier might describe steps
- that need to be executed after operations on this module.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- <xs:anyAttribute processContents="lax"/>
- </xs:complexType>
- </xs:element>
- <!-- End of Module Surface Area UserExtensions Section -->
-
- </xs:sequence>
- <xs:attribute name="BinaryModule" type="xs:boolean" default="false" use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This attribute is used when the binaries are distributed for
- this module and no code generation from source files is required. If set, then the BinaryFiles
- section should be used, and any files listed in the SourceFiles section do not have to be built.
- Additionally, the AsBuilt section for each binary file must be included.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:complexType>
-
- </xs:element>
- <!-- End of the ModuleSurfaceArea element. -->
-
- <xs:element name="Tools">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="0" maxOccurs="1" name="Header">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" name="Name" type="xs:normalizedString">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is the User Interface Name for this Tools
- Distribution.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="Copyright" type="xs:string">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is only required if the Copyright is
- different from the Distribution Package copyright.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is only required if the License is
- different from the Distribution Package license.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="Abstract">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is only required if the Abstract is
- different from the Distribution Package Abstract.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:normalizedString">
- <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="Description">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is only required if the Description is
- different from the Distribution Package Description.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
-
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is the path and filename location within the ZIP file.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:anyURI">
- <xs:attribute name="OS" type="SupportedOs" use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is required for tools that execute; it
- should not be used for configuration files.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- <xs:attribute name="Executable" type="xs:boolean" default="false" use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- If true, used by installation tools to
- ensure that a file that must be executable has the correct properties to
- permit execution.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of the Tools element. -->
-
- <xs:element name="MiscellaneousFiles">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This section contains a list of files that are not part of the code
- distributed with modules, packages or tools.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="0" maxOccurs="1" name="Header">
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:normalizedString">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The User interface name for this content.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="Copyright" type="xs:string">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is only required if the Copyright is
- different from the Distribution Package Copyright.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is only required if the License is
- different from the Distribution Package License.
- </xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="Abstract" type="xs:normalizedString"/>
- <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
- />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="unbounded" name="Filename">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is the path and filename location within the ZIP file.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:anyURI">
- <xs:attribute name="Executable" type="xs:boolean" default="false" use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- If true, used by installation tools to
- ensure that a file that must be executable has the correct properties to
- permit execution.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <!-- End of the Misc element. -->
-
- <xs:element name="UserExtensions">
- <xs:complexType mixed="true">
- <xs:sequence>
- <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- <xs:attribute name="UserId" type="xs:NCName" use="required">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This is a single word identifier for grouping similar content.
- For example, ReferenceBuild might be used to identify non-PI compliant build steps, with two
- different UserExtensions sections, one with an Identifier of Prebuild, and another of PostBuild.
- Both UserExtensions sections would use the same UserId.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- <xs:attribute name="Identifier" type="xs:string" use="optional">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This can be any string used to differentiate or identify this
- section from other UserExtensions sections.
- </xs:documentation>
- <xs:documentation xml:lang="en-us">
- For example, a PRE_PROCESS Identifier might indicate specific
- steps and tools required before processing distribution package content, while a different
- UserExtensions section with a POST_PROCESS Identifier might describe steps that need to be
- executed after operations on this content.
- </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- <xs:anyAttribute processContents="lax"/>
- </xs:complexType>
- </xs:element>
- <!-- The following elements are common definitions used with the ref attribute for elements. -->
-
- <xs:element name="HelpText">
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
-
- <!-- The following attribute groups are used in various elements above. -->
-
- <xs:attributeGroup name="SupportedArchMod">
- <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
- <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
- </xs:attributeGroup>
-
- <!-- The following data types are used to restrict content. -->
-
- <xs:simpleType name="ArchListType">
- <xs:list itemType="ArchTypes"/>
- </xs:simpleType>
-
- <xs:simpleType name="ArchTypes">
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="IA32"/>
- <xs:enumeration value="X64"/>
- <xs:enumeration value="IPF"/>
- <xs:enumeration value="EBC"/>
- <xs:enumeration value="ARM"/>
- <xs:pattern value="([A-Z])([a-zA-Z0-9])*">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- Any processor architecture not listed above. The Architecture
- must be a target architecture of one or more compiler tool chains.
- </xs:documentation>
- </xs:annotation>
- </xs:pattern>
- </xs:restriction>
- </xs:simpleType>
-
-
- <xs:simpleType name="FamilyTypes">
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="MSFT"/>
- <xs:enumeration value="GCC"/>
- <xs:pattern value="[A-Z][a-zA-Z0-9]*">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- Any other family of build utilities for which compiler tools
- exist.
- </xs:documentation>
- </xs:annotation>
- </xs:pattern>
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="GuidListType">
- <xs:list itemType="GuidTypes"/>
- </xs:simpleType>
-
- <xs:simpleType name="GuidTypes">
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="Event"/>
- <xs:enumeration value="File"/>
- <xs:enumeration value="FV"/>
- <xs:enumeration value="GUID"/>
- <xs:enumeration value="HII"/>
- <xs:enumeration value="Hii"/>
- <xs:enumeration value="HOB"/>
- <xs:enumeration value="SystemTable"/>
- <xs:enumeration value="TokenSpaceGuid"/>
- <xs:enumeration value="Variable"/>
- <xs:enumeration value="UNDEFINED"/>
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="HexNumber">
- <xs:restriction base="xs:hexBinary">
- <xs:pattern value="0x([a-fA-F0-9])+"/>
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="Md5Sum">
- <xs:restriction base="xs:normalizedString">
- <xs:pattern value="[a-zA-Z0-9]{32}"/>
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="ModuleListType">
- <xs:list itemType="ModuleTypes"/>
- </xs:simpleType>
-
- <xs:simpleType name="ModuleTypes">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> The following module types are defined by specifications. </xs:documentation>
- <xs:documentation xml:lang="en-us">
- Module types for components and libraries defined for this distribution
- mechanism.
- </xs:documentation>
- </xs:annotation>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="BASE ">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> Use of this module is not restricted. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="DXE_CORE">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This module is only applicable to the DXE core.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="DXE_DRIVER">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This module is only applicable to a DXE driver.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="DXE_RUNTIME_DRIVER">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This module is only applicable to a DXE runtime driver.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="DXE_SAL_DRIVER">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This module is only applicable to an IPF DXE runtime driver.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="DXE_SMM_DRIVER">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This module is only applicable to a DXE SMM driver.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PEI_CORE">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This module is only applicable to the PEI core.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PEIM">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This module is only valid for PEI modules. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SEC">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This module is only applicable to Security phase.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="UEFI_DRIVER">
- <xs:annotation>
- <xs:documentation xml:lang="en-us"> This module is only valid for UEFI drivers. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="UEFI_RUNTIME_DRIVER">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This module is only valid for UEFI runtime
- drivers.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="UEFI_APPLICATION">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This module is only valid for UEFI applications.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SMM_CORE">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This module is only applicable to the SMM
- core.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="USER_DEFINED">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This content is restricted to a specific implementation.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="UNDEFINED">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This enumeration is for use in a list that where the package
- creator does not know the what module types are supported by a module.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:pattern value="([A-Z])([a-zA-Z0-9])*">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This pattern has been added for use in a module lists - for
- future expansion.
- </xs:documentation>
- </xs:annotation>
- </xs:pattern>
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="PcdDatumTypes">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The following data types are defined by the PCD specification (or PCD
- section of the UEFI/PI specifications.)
- </xs:documentation>
- </xs:annotation>
- <xs:restriction base="xs:normalizedString">
- <xs:enumeration value="UINT8"/>
- <xs:enumeration value="UINT16"/>
- <xs:enumeration value="UINT32"/>
- <xs:enumeration value="UINT64"/>
- <xs:enumeration value="BOOLEAN"/>
- <xs:enumeration value="VOID*"/>
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="PcdItemListType">
- <xs:list itemType="PcdItemTypes"/>
- </xs:simpleType>
-
- <xs:simpleType name="PcdItemTypes">
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="FeaturePcd">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The Feature PCD is a binary, evaluating to either true or false.
- This is used during build to include/exclude content. It can also be used during execution to
- force execution paths within drivers, or to enable/disable features within a driver for a given
- platform.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="FixedPcd">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The Fixed PCD is a #define value that is set at build time.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PatchPcd">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The Patch PCD is a #define that is set at build time, and that
- can be modified within a binary file. Additional information, such as the offset location of the
- value, along with its length may need to be provided.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="Pcd">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- This PCD type has an overloaded definition. Prior to build, the
- platform integrator may choose to implement a PCD as Fixed, Patchable or a Dynamic PCD. If the
- platform integrator choose to use the PCD as dynamic, then a PCD driver is required in the
- platform (PEI/DXE/both) to track the PCD in some sort of 'database' of these items. For Dynamic
- PCDs, the PcdGet* must pass in the token space guid and the token number to retrieve data
- (PcdSet* also needs these values.)
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PcdEx">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The PCD can only be used as Dynamic, and the platform firmware
- must contain a driver to maintain a 'database' of these items. For Dynamic PCDs, the PcdGet*
- must pass in the token space guid and the token number to retrieve data (PcdSet* also needs
- these values.)
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="RegistryFormatGuid">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- A GUID must contain five different Hexadecimal character sets that are
- separated by a dash (-) character.
- </xs:documentation>
- </xs:annotation>
- <xs:restriction base="xs:string">
- <xs:pattern value="\s*[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\s*"/>
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="SupportedOs">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- The EDK II build system supports workstations running one of the
- following supported operating systems. This is the OS for the developer's workstation, not the target
- platform.
- </xs:documentation>
- </xs:annotation>
- <xs:restriction base="xs:string">
- <xs:enumeration value="Win32">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- For Windows 2003, Windows XP and Windows Vista.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="Win64">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- For Windows 2003, Windows XP and Windows Vista.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="RedHat32"/>
- <xs:enumeration value="RedHat64"/>
- <xs:enumeration value="SuSE32"/>
- <xs:enumeration value="SuSE64"/>
- <xs:enumeration value="Linux32"/>
- <xs:enumeration value="Linux64"/>
- <xs:enumeration value="OS/X32"/>
- <xs:enumeration value="OS/X64"/>
- <xs:enumeration value="Generic"/>
- <xs:enumeration value="GenericWin">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- Typically, this is used for Windows Batch files.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="GenericNix">
- <xs:annotation>
- <xs:documentation xml:lang="en-us">
- Typically use for shell scripts - valid for any Linux and Mac
- OS/X.
- </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:pattern value="[a-zA-Z]([a-zA-Z0-9])*"/>
- </xs:restriction>
- </xs:simpleType>
-
-</xs:schema>
+<?xml version="1.0" encoding="UTF-8"?> +<!-- +Filename: DistributionPackage.xsd + +Copyright (c) 2008 - 2012, Intel Corporation. All rights reserved. + +SPDX-License-Identifier: BSD-2-Clause-Patent + +--> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" + targetNamespace="http://www.uefi.org/2012/1.0" xmlns="http://www.uefi.org/2012/1.0"> + <xs:element name="DistributionPackage"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This schema defines the UEFI/PI Distribution Package description (PKG) + file. It describes the content of: + </xs:documentation> + <xs:documentation xml:lang="en-us"> 1) Package descriptions with definitions and headers.</xs:documentation> + <xs:documentation xml:lang="en-us"> + 2) Modules in either source or binary format. (Note that Binary format + is for FFS leaf section file types only, complete FFS files cannot be distributed using this + distribution format.) + </xs:documentation> + <xs:documentation xml:lang="en-us"> + 3) The distribution of custom tools used to modify the binary images to + create UEFI/PI compliant images. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + 4) Finally, it can be used to distribute other miscellaneous content + that is not specific to UEFI/PI images. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + The Package Surface Area describes the content of packages, while the + Module Surface Area provides information relevant to source and/or binary distributions. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="DistributionHeader" minOccurs="1" maxOccurs="1"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This header contains (legal) information usually required + for distributing both binary and/or source code. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="PackageSurfaceArea" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> The list of packages in this distribution. </xs:documentation> + <xs:documentation xml:lang="en-us"> + Packages are groups of files and/or modules that are similar + in nature. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + Packages are uniquely identified by a package GUID and a + package version. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + A package can declare public mappings of C names to GUID + values. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + A package can provide header files for library classes + and/or other industry standard definitions. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + A package can also declare public mappings of platform + configuration database (PCD) "knobs" to control features and operation of modules + within a platform. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + Finally, a package lists the library instances and/or + modules that are provided in a distribution package. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="ModuleSurfaceArea" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The listing of UEFI/PI compliant modules in this + distribution that are NOT part of a Package. Every module that is provided as part of a + package needs to be described in a PackageSurfaceArea.Modules section. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + The ModuleSurfaceArea section describes how each module in a + distribution is coded, or, in the case of a binary module distribution, how it was built. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + UEFI/PI compliant libraries and modules are uniquely + identified by the Module's GUID and version number. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + This section will typically be used for modules that don't + require any additional files that would be included in a package. For example, the Enhanced + FAT driver binary does not need to have a package description, as no additional files are + provided. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="Tools" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This section is for distributing vendor specific executable + tools, tool source code and/or configuration files. These tools are primarily for + manipulating code and/or binary images. + </xs:documentation> + <xs:documentation xml:lang="en-us"> Tools in this section can:</xs:documentation> + <xs:documentation xml:lang="en-us"> + 1) Parse build meta-data files to create source code files + and build scripts. + </xs:documentation> + <xs:documentation xml:lang="en-us"> 2) Modify image files to conform to UEFI/PI specifications. </xs:documentation> + <xs:documentation xml:lang="en-us"> + 3) Generate binary files from certain types of text/unicode + files. + </xs:documentation> + <xs:documentation xml:lang="en-us"> 4) Generate PCI Option Roms or Firmware Device images. </xs:documentation> + <xs:documentation xml:lang="en-us"> + 5) Implement external encoding/decoding/signature/GUIDed + tools. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + 6) Distribution Package create/install/remove tools. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="MiscellaneousFiles" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The list of miscellaneous files in this distribution. Any + files that are not listed in either the Package, Module or Tools sections can be listed + here. This section can be used to distribute specifications for packages and modules that + are not "industry standards" such as a specification for a chipset or a video + device. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="UserExtensions" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The UserExtensions section is used to disseminate processing + instructions that may be custom to the content provided by the distribution. This section + contains information that is common to all aspects of this distribution. + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + + </xs:complexType> + </xs:element> + <!-- End of the DistributionPackage Description --> + + <xs:element name="DistributionHeader"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This section defines the content of the UEIF/PI compliant Distribution + Package Header. This is the only required element of a UEFI/PI compliant distribution package. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="1" name="Name"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is the User Interface Name for this Distribution + Package. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + Each Distribution Package is uniquely identified by its + GUID and Version number. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:normalizedString"> + <xs:attribute name="BaseName" type="xs:NMTOKEN" use="optional"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The reference name of the Distribution + Package file. This single word name can be used by tools as a keyword or for + directory and/or file creation. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + White space and special characters (dash and + underscore characters may be used) are not permitted in this name. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element minOccurs="1" maxOccurs="1" name="GUID"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This 128-bit GUID and the Version attribute uniquely + identify this Distribution Package. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + Backward compatible releases of a distribution package need + only change the version number, while non-backward compatible changes require the GUID to + change (resetting the version number to 1.0 is optional.) + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="RegistryFormatGuid"> + <xs:attribute name="Version" type="xs:decimal" use="required"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This value, along with the GUID, is used to + uniquely identify this object. The higher the number, the more recent the + content. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element minOccurs="1" maxOccurs="1" name="Vendor" type="xs:normalizedString"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + A string identifying who created this distribution package. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element minOccurs="1" maxOccurs="1" name="Date" type="xs:dateTime"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The date and time this distribution was created. The format + is: YYYY-MM-DDThh:mm:ss, for example: 2001-01-31T13:30:00 (note the T character separator + between the calendar date and the time. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element minOccurs="1" maxOccurs="unbounded" name="Copyright"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The copyright for this file that is generated by the creator + of the distribution. If a derivative work is generated from an existing distribution, then + the existing copyright must be maintained, and additional copyrights may be appended to the + end of this element. It may also be the primary copyright for all code provided in the + Distribution Package. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + + </xs:element> + <xs:element minOccurs="1" maxOccurs="unbounded" name="License"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + A license that describes any restrictions on the use of this + distribution. If a derivative work is allowed by the original license and a derivative work + is generated from an existing distribution, then the existing license must be maintained, + and additional licenses may be appended to the end of this element. It may also be the + primary license for all code provided in the distribution file. Alternatively, this may + point to a filename that contains the License. The file (included in the content zip file) + will be stored in the same location as the distribution package's .pkg file. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element minOccurs="1" maxOccurs="unbounded" name="Abstract"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + A one line description of the Distribution Package. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:normalizedString"> + <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element minOccurs="0" maxOccurs="unbounded" name="Description"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + A complete description of the Distribution Package. This + description may include the release name of the file, the version of the file, and a + complete description of the file contents and/or features including a description of the + updates since the previous file release. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element minOccurs="0" maxOccurs="1" name="Signature" type="Md5Sum"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The packaging utilities will use this MD5 sum value of the + included ZIP file containing files and/or code. If this element is not present, then + installation tools should assume that the content is correct, or that other methods may be + needed to verify content. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element minOccurs="1" maxOccurs="1" name="XmlSpecification" type="xs:decimal" default="1.1"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> This version of this XML Schema is 1.1 </xs:documentation> + <xs:documentation xml:lang="en-us"> Changes to 1.1 from 1.0 </xs:documentation> + <xs:documentation xml:lang="en-us"> + #1 Updated to present date and new version which is + important to reflect the present state of the matter + </xs:documentation> + <xs:documentation xml:lang="en-us"> + #2 Added definition/enumeration of UNDEFINED type 2 is + important since there is a large body of legacy code for which the GUID’s and other + code/data objects were not decorated with their usage. This document will allow for + importing today’s source artifacts and producing decorations using the ‘Undefined’ versus + having an error + </xs:documentation> + <xs:documentation xml:lang="en-us"> + #3 Allow for inclusion of ARM and future architecture + types + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + <xs:attribute name="ReadOnly" type="xs:boolean" default="false" use="optional"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + If set to true, all content within this Distribution Package + should NOT be modified. The default permits modification of all content. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="RePackage" type="xs:boolean" default="false" use="optional"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + If set to true, then the content can be repackaged into another + distribution package. The default prohibits repackaging the Distribution content. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + </xs:element> + <!-- End of the DistributionHeader element. --> + + <xs:element name="PackageSurfaceArea"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + A package is a collection of related objects - Includes, Libraries and + Modules. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + Each package is uniquely identified by its GUID and Version number. + Backward compatible releases of a package need only change the version number, while non-backward + compatible changes require the GUID to change (resetting the version number to 1.0 is optional.) + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + + <xs:element minOccurs="1" maxOccurs="1" name="Header"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="1" name="Name"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is the User Interface Name for this + package. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:normalizedString"> + <xs:attribute name="BaseName" type="xs:NMTOKEN" use="required"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is a single word BaseName + of the package. This BaseName can be used by tools as a keyword + and for directory/file creation. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element minOccurs="1" maxOccurs="1" name="GUID"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This GUID and the Version attribute uniquely + identify a given package. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="RegistryFormatGuid"> + <xs:attribute name="Version" type="xs:decimal" use="required"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This value, along with the GUID, + is used to uniquely identify this object. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + Backward compatible changes must + make sure this number is incremented from the most recent + version. Non-backward compatible changes require a new GUID, and + the version can be reset. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element minOccurs="0" maxOccurs="unbounded" name="Copyright"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + If the package requires a different copyright + than the distribution package, this element can list one or more copyright + lines. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional" + /> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + + </xs:element> + <xs:element minOccurs="0" maxOccurs="unbounded" name="License"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + If the package requires licenses that are + different from the distribution package license, this element can contain one or + more license text paragraphs (or license filenames.) + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional" + /> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + + </xs:element> + <xs:element minOccurs="0" maxOccurs="unbounded" name="Abstract"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + A one line description of this package. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:normalizedString"> + <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional" + /> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element minOccurs="0" maxOccurs="unbounded" name="Description"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + A complete description of a package. This + description may include the release name of the package, the version of the + package, and a complete description of the package contents and/or features + including a description of the updates since the previous package’s release. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional" + /> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element minOccurs="1" maxOccurs="1" name="PackagePath" type="xs:anyURI"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This element is the location (in the ZIP file) + for the root directory of a package. + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of PackageSurfaceArea Header element. --> + + <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The term cloned is used here to indicate that this package + as been copied and modified to a completely different package. An example might be for a new + generation of chipsets that have few or no elements in common with the original. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="1" name="GUID"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This GUID and the Version attribute uniquely + identify the Package that this Package was copied from. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="RegistryFormatGuid"> + <xs:attribute name="Version" type="xs:decimal" use="required"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This value, along with the GUID, + is used to uniquely identify the package that this package was + cloned from. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of PackageSurfaceArea ClonedFrom element. --> + + <xs:element minOccurs="0" maxOccurs="1" name="LibraryClassDeclarations"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + Library Classes are public interfaces that can be used by + modules. One or more library instances can implement a library class, however only one + library instance can be linked to an individual module. This provides the platform + integrator with the flexibility of choosing one library instance's implementation over a + different library instance. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile" type="xs:anyURI"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The header file provides definitions + and function prototypes for a library class. Modules can be coded + against these functions, using the definitions in this header, + without concerning themselves about the libraries' implementation + details. This is a PackagePath relative path and filename for the + include file. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element minOccurs="0" maxOccurs="1" name="RecommendedInstance"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="1" name="GUID"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This GUID and the + Version attribute uniquely identify the Recommended Library + Instance. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="RegistryFormatGuid"> + <xs:attribute name="Version" type="xs:decimal" + use="optional"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This value, along with + the GUID, is used to uniquely identify this object. If this + value is not specified, then any version of the library + instance is recommended. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + <xs:attribute name="Keyword" type="xs:NCName" use="required"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The single word name of the Library + Class that module developers will use to identify a library class + dependency. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attributeGroup ref="SupportedArchMod"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of PackageSurfaceArea LibraryClassDeclarations element. --> + + <xs:element minOccurs="0" maxOccurs="1" name="IndustryStandardIncludes"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This section is used to list header files for industry + standards not under the auspices of UEFI.org. For example, headers that contain definitions + and data structures for the USB specifications. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="unbounded" name="IndustryStandardHeader"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile" type="xs:anyURI"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The package relative path and + filename (in the content zip file) of the industry standard include + file. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of PackageSurfaceArea IndustryStdIncludes element. --> + + <xs:element minOccurs="0" maxOccurs="1" name="PackageIncludes"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + All top level header files that are included by a package + that are not listed above. They cannot be: + </xs:documentation> + <xs:documentation xml:lang="en-us"> 1) Local to a module (module specific.) </xs:documentation> + <xs:documentation xml:lang="en-us"> 2) An industry standard header. </xs:documentation> + <xs:documentation xml:lang="en-us"> 3) A library class header. </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="unbounded" name="PackageHeader"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is the Package relative path + and filename location within the content ZIP file. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:anyURI"> + <xs:attributeGroup ref="SupportedArchMod"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of PackageSurfaceArea PackageIncludes element. --> + + <xs:element minOccurs="0" maxOccurs="1" name="Modules"> + <xs:complexType> + <xs:sequence> + <xs:element ref="ModuleSurfaceArea" minOccurs="1" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This section lists the Module Surface Area for + all modules provided with this package. + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of PackageSurfaceArea Modules element. --> + + <xs:element minOccurs="0" maxOccurs="1" name="GuidDeclarations"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This section defines the mapping of GUID C names to GUID + values as a Registry Format GUID. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + Modules that use these GUIDs must specify their dependency + on this package. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> Individual GUID Declarations </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/> + <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" + type="RegistryFormatGuid"/> + <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + <xs:attribute name="UiName" type="xs:normalizedString" use="optional"/> + <xs:attribute name="GuidTypes" type="GuidListType" use="optional"/> + <xs:attributeGroup ref="SupportedArchMod"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of PackageSurfaceArea GuidDeclarations element. --> + + <xs:element minOccurs="0" maxOccurs="1" name="ProtocolDeclarations"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This section defines the mapping of Protocol C names to GUID + values as a Registry Format GUID. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + Modules that use these Protocols must specify their + dependency on this package. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + Individual Protocol Declarations + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/> + <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" + type="RegistryFormatGuid"/> + <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + <xs:attribute name="UiName" type="xs:normalizedString" use="optional"/> + <xs:attributeGroup ref="SupportedArchMod"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of PackageSurfaceArea ProtocolDeclarations element. --> + + <xs:element minOccurs="0" maxOccurs="1" name="PpiDeclarations"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This section defines the mapping of Ppi C names to GUID + values as a Registry Format GUID. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + Modules that use these Ppis must specify their dependency on + this package. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> Individual PPI Declarations </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/> + <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" + type="RegistryFormatGuid"/> + <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + <xs:attribute name="UiName" type="xs:normalizedString" use="optional"/> + <xs:attributeGroup ref="SupportedArchMod"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of PackageSurfaceArea PpiDeclarations element. --> + + <xs:element minOccurs="0" maxOccurs="1" name="PcdDeclarations"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This section is used to declare platform configuration knobs + that are defined by this package. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + Modules that use these PCD values must specify their + dependency on this package. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCname" + type="xs:NCName"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + Specifies the C name of the Token + Space GUID of which this PCD Entry is a member. This C name should + also be listed in the GUIDs section, (specified above,) where the C + name is assigned to a GUID value. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element minOccurs="1" maxOccurs="1" name="Token"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + Specifies the 32-bit token value for + this PCD Entry. The Token number must be unique to the Token Space + that declares the PCD. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + The minLength of 3 is required to + handle the "0x" prefix to the hex number. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="HexNumber"> + <xs:minLength value="3"/> + <xs:maxLength value="10"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/> + <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDatumTypes"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + A string that contains the data type + of this PCD Entry. PCD data types are restricted to the following + set:UINT8, UINT16, UINT32, UINT64, VOID*, BOOLEAN. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element minOccurs="1" maxOccurs="1" name="ValidUsage" type="PcdItemListType"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + A string that contains one or more + PCD Item types separated by spaces. The PCD Item types are + restricted to FeaturePcd, FixedPcd, PatchPcd, Pcd and/or PcdEx. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element minOccurs="1" maxOccurs="1" name="DefaultValue" + type="xs:normalizedString"/> + <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is a recommended maximum data + size for VOID* data types, the actual value should be defined by the + Platform Integrator. It is not required for the other data types. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + The minLength of 3 is required to + handle the "0x" prefix to the hex number. + </xs:documentation> + + </xs:annotation> + <xs:simpleType> + <xs:restriction base="HexNumber"> + <xs:minLength value="3"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element minOccurs="0" maxOccurs="unbounded" name="Prompt"> + <xs:annotation> + <xs:documentation xml:lang="en-US"> + This entry contains prompt + information, that may used by tools to assist platform integrators + with choosing the correct values + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="Lang" type="xs:language" default="en-us" + use="optional"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> + + <xs:element minOccurs="0" maxOccurs="unbounded" name="PcdError"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + Valid Error messages that may be + implemented in a module for the PCD Entry. Only One Error Number per + PcdError, (multiple ErrorMessage entries are permitted) and multiple + PcdError elements are permitted. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:choice minOccurs="1" maxOccurs="1"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + One of the following + types of comparisons, which must be able to evaluate to + either true or false. + </xs:documentation> + </xs:annotation> + <xs:element minOccurs="0" maxOccurs="1" name="ValidValueList"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The PCD Value must be + space separated list of values. Values are restricted to the + data type of this PCD. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:normalizedString"> + <xs:attribute name="Lang" type="xs:language" use="optional" + /> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element minOccurs="0" maxOccurs="1" name="ValidValueRange" + type="xs:normalizedString"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The PCD must be within a + specified range of numeric values. Restricted to C style + Relational, Equality and Logical Operators and parenthesis + are valid. Only the CName for this PCD is permitted in the + ValidValueRange expression. All other values must be + numeric. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + LValue (op RValue)+ + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element minOccurs="0" maxOccurs="1" name="Expression" + type="xs:normalizedString"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + A in-fix logical + expression using C style logical operators. + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:choice> + <xs:element minOccurs="1" maxOccurs="1" name="ErrorNumber"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + A hexadecimal value for + the error message as defined by specifications. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + The minLength of 3 is + required to handle the "0x" prefix to the hex number. + </xs:documentation> + + </xs:annotation> + <xs:simpleType> + <xs:restriction base="HexNumber"> + <xs:minLength value="3"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element minOccurs="1" maxOccurs="unbounded" name="ErrorMessage"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This string should be + defined by specifications. There are pre-defined error + number ranges in the UEFI/PI specification. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="Lang" type="xs:language" default="en-us" + use="optional"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attributeGroup ref="SupportedArchMod"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of PackageSurfaceArea PcdDeclarations element. --> + + <xs:element minOccurs="0" maxOccurs="1" name="PcdRelationshipChecks"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This section is used to describe any PCD interdependencies + or relationships. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdCheck" type="xs:normalizedString"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This entry must used + TokenSpaceGuidCName.PcdCname for every named PCD. Restricted to Relational, + Equality and Logical Operators (NOT, AND, OR, GT, GE, EQ, LE, LT and XOR) and + parenthesis are valid. Only the TokenSpaceGuidCName.PcdCname us permitted to + name PCDs in the expression. All other values must be numeric. + </xs:documentation> + <xs:documentation xml:lang="en-us"> LValue (op RValue)+ </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element minOccurs="0" maxOccurs="unbounded" name="MiscellaneousFiles"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This section contains files that are not part of the code + distributed with this package. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="1" name="Copyright" type="xs:string"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + Only required if different from the Package + Copyright. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + Only required if different from the Package + License. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element minOccurs="0" maxOccurs="1" name="Abstract" type="xs:string"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + A one line description of this section's + content. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element minOccurs="0" maxOccurs="unbounded" name="Description" type="xs:string"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + A complete description of the files in this + section. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is the PackagePath relative path and + filename location within the ZIP file. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:anyURI"> + <xs:attribute name="Executable" type="xs:boolean" default="false" + use="optional"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + If true, used by installation + tools to ensure that a file that must be executable has the + correct properties to permit execution. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of PackageSurfaceArea Misc element. --> + + <xs:element minOccurs="0" maxOccurs="unbounded" name="UserExtensions"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This section is used for any processing instructions that + may be custom to the content provided by this package that are common to this package. + </xs:documentation> + </xs:annotation> + <xs:complexType mixed="true"> + <xs:sequence> + <xs:any processContents="lax" minOccurs="0" maxOccurs="1"/> + </xs:sequence> + <xs:attribute name="UserId" type="xs:NCName" use="required"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is a single word identifier for grouping + similar content that does not fit into previously defined sections or other sections + of the Distribution. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="Identifier" type="xs:string" use="required"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This can be used to differentiate multiple sections + with a grouping. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + For example, a PRE_PROCESS Identifier might indicate + specific steps and tools required before processing module content, while a + different UserExtensions section with a POST_PROCESS Identifier might describe steps + that need to be executed after operations on the modules in this package. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:anyAttribute processContents="lax"/> + </xs:complexType> + </xs:element> + <!-- End of PackageSurfaceArea UserExtensions element. --> + + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of the PackageSurfaceArea element. --> + + <xs:element name="ModuleSurfaceArea"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + Each module is uniquely identified by its GUID and Version number. + Backward compatible releases of a module need only change the version number, while non-backward + compatible changes require the GUID to change (resetting the version number to 1.0 is optional.) + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + + <xs:element minOccurs="1" maxOccurs="1" name="Header"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="1" name="Name"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is the User Interface Name for this Module. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:normalizedString"> + <xs:attribute name="BaseName" type="xs:NMTOKEN" use="required"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is a single word BaseName + that will be used to create a module meta-data file. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + This name should also be used to + create output file names and directories. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element minOccurs="1" maxOccurs="1" name="GUID"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This GUID and the Version attribute uniquely + identify a given Module. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="RegistryFormatGuid"> + <xs:attribute name="Version" type="xs:decimal" use="required"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This value, along with the GUID, + is used to uniquely identify this object. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + Backward compatible changes must + make sure this number is incremented from the most recent + version. Non-backward compatible changes require a new GUID, and + the version can be reset. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element minOccurs="0" maxOccurs="unbounded" name="Copyright"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is only required if the Copyright is + different from either the Package or Distribution copyright. Multiple copyright + lines are permitted within this section. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional" + /> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element minOccurs="0" maxOccurs="unbounded" name="License"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is only required if the license is + different from either the Package or Distribution license. Multiple licenses are + permitted within this section. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional" + /> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element minOccurs="0" maxOccurs="unbounded" name="Abstract"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + A brief text description of the module. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:normalizedString"> + <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional" + /> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element minOccurs="0" maxOccurs="unbounded" name="Description"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + A complete description of the module contents + and/or features including a description of the updates since the previous module + release. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional" + /> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of Module Surface Area Header Section --> + + <xs:element minOccurs="0" maxOccurs="1" name="ModuleProperties"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + List general information about a module, including the + Supported Architectures, this module's type, specifications the module is coded against, and + other informational content. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="1" name="ModuleType" type="ModuleTypes"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + One of the Enumerated module types that limit + the use of a module. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element minOccurs="1" maxOccurs="1" name="Path" type="xs:anyURI"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + For stand-alone modules that are NOT part of any + package, this is the path to the root of the module as listed in the ZIP file. + For modules included in a package, this is the location, relative to the root of + the package (PackagePath) this module belongs to. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element minOccurs="0" maxOccurs="1" name="PcdIsDriver"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This element is only required for the PEIM that + produces the PCD PPI or the DXE Driver that produces the PCD Protocol. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:NCName"> + <xs:enumeration value="PEI_PCD_DRIVER"/> + <xs:enumeration value="DXE_PCD_DRIVER"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + + <xs:element minOccurs="0" maxOccurs="1" name="UefiSpecificationVersion" type="xs:decimal"/> + + <xs:element minOccurs="0" maxOccurs="1" name="PiSpecificationVersion" type="xs:decimal"/> + + <xs:element minOccurs="0" maxOccurs="unbounded" name="Specification"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is a list of other specifications that this + module is written against. These entries can be used in #define statements + (depending on the build system implementation, they may be autogenerated.) + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:NCName"> + <xs:attribute name="Version" type="xs:decimal" use="required"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + + <xs:element minOccurs="0" maxOccurs="unbounded" name="BootMode"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + Different firmware execution paths may be taken + based on a given state of the hardware, firmware, or through feature settings. A + BootMode may be declared (PRODUCES) or discovered (CONSUMES) based on these + states and feature settings. If the usage is UNDEFINE, it implies that a Boot + Mode is used, but the package creator does not know how it is used. The + supported boot modes map to the PI specification Boot Modes. The boot modes + listed with Recovery are to indicate that the BootMode is valid during a + recovery boot. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence minOccurs="0"> + <xs:element minOccurs="1" maxOccurs="1" name="SupportedBootModes"> + <xs:simpleType> + <xs:list> + <xs:simpleType> + <xs:restriction base="xs:NCName"> + <xs:enumeration value="FULL"/> + <xs:enumeration value="MINIMAL"/> + <xs:enumeration value="NO_CHANGE"/> + <xs:enumeration value="DIAGNOSTICS"/> + <xs:enumeration value="DEFAULT"/> + <xs:enumeration value="S2_RESUME"/> + <xs:enumeration value="S3_RESUME"/> + <xs:enumeration value="S4_RESUME"/> + <xs:enumeration value="S5_RESUME"/> + <xs:enumeration value="FLASH_UPDATE"/> + <xs:enumeration value="RECOVERY_FULL"/> + <xs:enumeration value="RECOVERY_MINIMAL"/> + <xs:enumeration value="RECOVERY_NO_CHANGE"/> + <xs:enumeration value="RECOVERY_DIAGNOSTICS"/> + <xs:enumeration value="RECOVERY_DEFAULT"/> + <xs:enumeration value="RECOVERY_S2_RESUME"/> + <xs:enumeration value="RECOVERY_S3_RESUME"/> + <xs:enumeration value="RECOVERY_S4_RESUME"/> + <xs:enumeration value="RECOVERY_S5_RESUME"/> + <xs:enumeration value="RECOVERY_FLASH_UPDATE"/> + <xs:enumeration value="UNDEFINED"/> + </xs:restriction> + </xs:simpleType> + </xs:list> + </xs:simpleType> + </xs:element> + + <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + <xs:attribute name="Usage" use="required"> + <xs:simpleType> + <xs:restriction base="xs:NCName"> + <xs:enumeration value="CONSUMES"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The module always supports + the given boot modes. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="SOMETIMES_CONSUMES"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The module may support a + given mode on some execution paths. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="PRODUCES"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The module will change the + boot mode. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="SOMETIME_PRODUCES"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The module will change the + boot mode on some execution paths. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="UNDEFINED"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The package creator does not + know how the boot mode is used. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> + <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/> + </xs:complexType> + </xs:element> + + <xs:element minOccurs="0" maxOccurs="unbounded" name="Event" nillable="true"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The functions that make up the Event, Timer, and + Task Priority Services are used during preboot to create, close, signal, and + wait for events; to set timers; and to raise and restore task priority levels as + defined in the UEFI specification. GUIDed events should be listed in the Guids + section. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + <xs:attribute name="Usage" use="required"> + <xs:simpleType> + <xs:restriction base="xs:NCName"> + <xs:enumeration value="CONSUMES"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The module will register a + notification function and calls the function when it is + signaled. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="SOMETIMES_CONSUMES"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The module will register a + notification function and calls the function when it is + signaled on some execution paths. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="PRODUCES"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The module will signal all + events in an event group. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="SOMETIMES_PRODUCES"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The module will signal all + events in an event group under some execution paths. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="UNDEFINED"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The package creator does not + know how an event is used. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="EventType" use="required"> + <xs:simpleType> + <xs:restriction base="xs:NCName"> + <xs:enumeration value="EVENT_TYPE_PERIODIC_TIMER"/> + <xs:enumeration value="EVENT_TYPE_RELATIVE_TIMER"/> + <xs:enumeration value="UNDEFINED"/> + </xs:restriction> + </xs:simpleType> + + + </xs:attribute> + <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> + <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/> + </xs:complexType> + </xs:element> + + <xs:element minOccurs="0" maxOccurs="unbounded" name="HOB" nillable="false"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is a list of non-GUIDed Hand Off Blocks + (HOBs) produced or consumed by this module. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + <xs:attribute name="HobType" use="required"> + <xs:simpleType> + <xs:restriction base="xs:NCName"> + <xs:enumeration value="PHIT"/> + <xs:enumeration value="MEMORY_ALLOCATION"/> + <xs:enumeration value="RESOURCE_DESCRIPTOR"/> + <xs:enumeration value="FIRMWARE_VOLUME"/> + <xs:enumeration value="LOAD_PEIM"/> + <xs:enumeration value="UNDEFINED"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Usage" use="required"> + <xs:simpleType> + <xs:restriction base="xs:NCName"> + <xs:enumeration value="CONSUMES"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + A HOB must be present in the + system. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="SOMETIMES_CONSUMES"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + If present, the HOB will be + used. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="PRODUCES"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The HOB is always produced + by the module. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="SOMETIMES_PRODUCES"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The HOB may be produced by + the module under some execution paths. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="UNDEFINED"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The package creator knows + that a HOB is used, but does not know how it is used. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> + <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/> + </xs:complexType> + </xs:element> + + </xs:sequence> + <xs:attributeGroup ref="SupportedArchMod"/> + </xs:complexType> + </xs:element> + <!-- End of ModuleProperties Section --> + + <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This section may be included for Modules that are copied + from a different module. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="1" name="GUID"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This GUID and the Version attribute uniquely + identify the Module that this Module was copied from. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="RegistryFormatGuid"> + <xs:attribute name="Version" type="xs:decimal" use="required"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This value, along with the GUID, + is used to uniquely identify this object. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of ClonedFrom Section. --> + + <xs:element minOccurs="0" maxOccurs="1" name="LibraryClassDefinitions"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + A list of the different Library Classes consumed by a + driver, core and/or application module, or produced by a Library module. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="1" name="Keyword" type="xs:NCName"> + <xs:annotation> + <xs:documentation xml:lang="en-us "> + Used by tools to identify different + instances of libraries that provide the library class. This keyword + identifies the library class this module needs to be linked against. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element minOccurs="0" maxOccurs="1" name="RecommendedInstance"> + <xs:complexType> + <xs:all> + <xs:element minOccurs="1" maxOccurs="1" name="GUID"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This GUID and the + Version attribute uniquely identify the recommended Library + Instance for this module . + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="RegistryFormatGuid"> + <xs:attribute name="Version" type="xs:decimal" + use="optional"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This value, along with + the GUID, is used to uniquely identify this object. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:all> + </xs:complexType> + </xs:element> + <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + <xs:attribute name="Usage" use="required"> + <xs:simpleType> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + Library instances can provide code + for a library class, or may require other library instances + themselves. Since different execution paths in a library (or module) + may need different library classes based on some setting, library + classes may not alway be required. + </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:NCName"> + <xs:enumeration value="PRODUCES"/> + <xs:enumeration value="CONSUMES"/> + <xs:enumeration value="SOMETIMES_CONSUMES"/> + <xs:enumeration value="UNDEFINED"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + + <xs:attributeGroup ref="SupportedArchMod"/> + <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + A FeatureFlag attribute must evaluate to + either true or false - it may be a fixed value of true or false, a C + name or an in-fix expression. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of LibraryClassDefinitions Section --> + + <xs:element minOccurs="0" maxOccurs="1" name="SourceFiles"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is the module relative + (ModuleProperties.Path) path and filename location within the ZIP file. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:anyURI"> + <xs:attribute name="Family" type="FamilyTypes" use="optional"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The Family attribute is used to + restrict usage to a given family of compilers, such as GCC or + MSFT. Since not all code processing tools use the same syntax, + especially for assembly, this field can be used to identify + different syntax. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> + <xs:attribute name="SupModList" type="ModuleListType" use="optional"/> + <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of SourceFiles Section --> + + <xs:element minOccurs="0" maxOccurs="1" name="BinaryFiles"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="unbounded" name="BinaryFile"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is the module relative + (ModuleProperties.Path) path and filename location within the ZIP + file. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:anyURI"> + <xs:attribute name="FileType" use="optional"> + <xs:simpleType> + <xs:restriction base="xs:NCName"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + Binary file distribution + is limited to UEFI/PI FFS leaf section file types. + </xs:documentation> + </xs:annotation> + <xs:enumeration value="GUID"/> + <xs:enumeration value="FREEFORM"/> + <xs:enumeration value="UEFI_IMAGE"/> + <xs:enumeration value="PE32"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + A UEFI/PI FFS Leaf + section file type, not a raw PE32 file. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="PIC"/> + <xs:enumeration value="PEI_DEPEX"/> + <xs:enumeration value="DXE_DEPEX"/> + <xs:enumeration value="SMM_DEPEX"/> + <xs:enumeration value="COMPAT16"/> + <xs:enumeration value="DISPOSABLE"/> + <xs:enumeration value="TE"/> + <xs:enumeration value="VER"/> + <xs:enumeration value="UI"/> + <xs:enumeration value="BIN"/> + <xs:enumeration value="FV"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="GUID" use="optional" + type="RegistryFormatGuid"/> + <xs:attribute name="SupArchList" type="ArchListType" + use="optional"/> + <xs:attribute name="SupModList" type="ModuleListType" + use="optional"/> + <xs:attribute name="FeatureFlag" type="xs:normalizedString" + use="optional"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element minOccurs="0" maxOccurs="unbounded" name="AsBuilt"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This section contains information + about how the module was coded, such as Compiler Tools, Flags, PCDs + (only PatchPcd and/or PcdEx) and Library Class Instances used to + build the binary. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + + <xs:element minOccurs="0" maxOccurs="unbounded" name="PatchPcdValue"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The element is the + Patchable PCD Value that was used during the build. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="1" + name="TokenSpaceGuidValue" type="RegistryFormatGuid"/> + <xs:element minOccurs="1" maxOccurs="1" name="PcdCName" + type="xs:NCName"/> + <xs:element minOccurs="1" maxOccurs="1" name="Token"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The minLength of 3 is + required to handle the "0x" prefix to the hex number. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="HexNumber"> + <xs:minLength value="3"/> + <xs:maxLength value="10"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element minOccurs="1" maxOccurs="1" name="DatumType" + type="PcdDatumTypes"/> + <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This field is required + if the Pcd Datum Type is VOID* + </xs:documentation> + <xs:documentation xml:lang="en-us"> + The minLength of 3 is + required to handle the "0x" prefix to the hex number. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="HexNumber"> + <xs:minLength value="3"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element minOccurs="1" maxOccurs="1" name="Value" + type="xs:normalizedString"/> + <xs:element minOccurs="1" maxOccurs="1" name="Offset"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The minLength of 3 is + required to handle the "0x" prefix to the hex number. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="HexNumber"> + <xs:minLength value="3"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element ref="HelpText" minOccurs="0" + maxOccurs="unbounded"/> + <xs:element minOccurs="0" maxOccurs="unbounded" + name="PcdError"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + Error information + implemented by the module. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:choice> + <xs:element minOccurs="0" maxOccurs="1" name="ValidValueList"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:normalizedString"> + <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element minOccurs="0" maxOccurs="1" name="ValidValueRange" type="xs:normalizedString"/> + <xs:element minOccurs="0" maxOccurs="1" name="Expression" type="xs:normalizedString"/> + </xs:choice> + <xs:element minOccurs="1" maxOccurs="1" name="ErrorNumber"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The minLength of 3 is + required to handle the "0x" prefix to the hex number. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="HexNumber"> + <xs:minLength value="3"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element minOccurs="0" maxOccurs="unbounded" + name="ErrorMessage"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="Lang" type="xs:language" default="en-us" + use="optional"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element minOccurs="0" maxOccurs="unbounded" name="PcdExValue"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The element is the + DynamicEx PCD Value that was used during the build. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="1" + name="TokenSpaceGuidValue" type="RegistryFormatGuid"/> + <xs:element minOccurs="1" maxOccurs="1" name="Token"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The minLength of 3 is + required to handle the "0x" prefix to the hex number. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="HexNumber"> + <xs:minLength value="3"/> + <xs:maxLength value="10"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element minOccurs="1" maxOccurs="1" name="DatumType" + type="PcdDatumTypes"/> + <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This field is required + if the Pcd Datum Type is VOID* + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="HexNumber"> + <xs:minLength value="3"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element minOccurs="1" maxOccurs="1" name="Value" + type="xs:normalizedString"/> + <xs:element ref="HelpText" minOccurs="0" + maxOccurs="unbounded"/> + <xs:element minOccurs="0" maxOccurs="unbounded" + name="PcdError"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + Error information + implemented by the module. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:choice> + <xs:element minOccurs="0" maxOccurs="1" name="ValidValueList"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:normalizedString"> + <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element minOccurs="0" maxOccurs="1" name="ValidValueRange" type="xs:normalizedString"/> + <xs:element minOccurs="0" maxOccurs="1" name="Expression" type="xs:normalizedString"/> + </xs:choice> + <xs:element minOccurs="1" maxOccurs="1" name="ErrorNumber"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The minLength of 3 is + required to handle the "0x" prefix to the hex number. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="HexNumber"> + <xs:minLength value="3"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element minOccurs="0" maxOccurs="unbounded" + name="ErrorMessage"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="Lang" type="xs:language" default="en-us" + use="optional"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element minOccurs="0" maxOccurs="1" name="LibraryInstances"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is the actual + library instance that was used to link against the module. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="unbounded" name="GUID"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This GUID and the + Version attribute uniquely identify the actual Library + Instance linked in this module. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="RegistryFormatGuid"> + <xs:attribute name="Version" type="xs:decimal" + use="required"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This value, along with + the GUID, is used to uniquely identify this object. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element minOccurs="0" maxOccurs="unbounded" name="BuildFlags"> + <xs:complexType mixed="true"> + <xs:simpleContent> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + Any description of OS, + Tool, and flags for the individual tool can go in this + section. + </xs:documentation> + </xs:annotation> + <xs:extension base="xs:string"> + <xs:anyAttribute processContents="lax"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of AsBuilt --> + <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of BinaryFiles Section --> + + <xs:element minOccurs="0" maxOccurs="1" name="PackageDependencies"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="unbounded" name="Package"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" name="Description"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="Lang" type="xs:language" default="en-us" + use="optional"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element minOccurs="1" maxOccurs="1" name="GUID"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This GUID and the Version attribute + uniquely identify Package that this Module depends on. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="RegistryFormatGuid"> + <xs:attribute name="Version" type="xs:decimal" use="optional"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This value, along with + the GUID, is used to uniquely identify this object. If the + version attribute is not specified, the most recent version + of the package can be used. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> + <xs:attribute name="SupModList" type="ModuleListType" use="optional"/> + <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of PackageDependencies --> + + <xs:element minOccurs="0" maxOccurs="1" name="Guids"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="unbounded" name="GuidCName"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/> + <xs:element minOccurs="0" maxOccurs="1" name="GUID" type="RegistryFormatGuid"/> + <xs:element minOccurs="0" maxOccurs="1" name="VariableName" + type="xs:normalizedString"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> Only valid for Variable GUID types. </xs:documentation> + <xs:documentation> + This can be either a Hex Array or C string in unicode + format: L"string" Data. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + <xs:attribute name="Usage" use="required"> + <xs:simpleType> + <xs:restriction base="xs:NCName"> + <xs:enumeration value="CONSUMES"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The module does not install + the GUID, and the GUID must be present for the module to + execute. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="SOMETIMES_CONSUMES"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The module does not install + the GUID, however, the GUID will be used if it is present. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="PRODUCES"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The module always installs + the GUID. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="SOMETIMES_PRODUCES"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The Module will install the + GUID under certain execution paths. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="UNDEFINED"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The package creator knows + that a GUID is used, but does not know how it is used. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="GuidType" type="GuidListType" use="required"/> + <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> + <xs:attribute name="SupModList" type="ModuleListType" use="optional"/> + <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of Guids Section --> + + <xs:element minOccurs="0" maxOccurs="1" name="Protocols"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + A listing of protocols required or produced by this module. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="unbounded" name="Protocol" nillable="true"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/> + <xs:element minOccurs="0" maxOccurs="1" name="GUID" type="RegistryFormatGuid"/> + <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + <xs:attribute name="Usage" use="required"> + <xs:simpleType> + <xs:restriction base="xs:NCName"> + <xs:enumeration value="PRODUCES"/> + <xs:enumeration value="SOMETIMES_PRODUCES"/> + <xs:enumeration value="CONSUMES"/> + <xs:enumeration value="SOMETIMES_CONSUMES"/> + <xs:enumeration value="TO_START"/> + <xs:enumeration value="BY_START"/> + <xs:enumeration value="UNDEFINED"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Notify" type="xs:boolean" use="optional"/> + <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> + <xs:attribute name="SupModList" type="ModuleListType" use="optional"/> + <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of Protocols Section --> + + <xs:element minOccurs="0" maxOccurs="1" name="PPIs"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + A listing of PPIs required or produced by this module. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="unbounded" name="Ppi" nillable="true"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/> + <xs:element minOccurs="0" maxOccurs="1" name="GUID" type="RegistryFormatGuid"/> + <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + <xs:attribute name="Usage" use="required"> + <xs:simpleType> + <xs:restriction base="xs:NCName"> + <xs:enumeration value="PRODUCES"/> + <xs:enumeration value="SOMETIMES_PRODUCES"/> + <xs:enumeration value="CONSUMES"/> + <xs:enumeration value="SOMETIMES_CONSUMES"/> + <xs:enumeration value="UNDEFINED"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="Notify" type="xs:boolean" use="optional"/> + <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> + <xs:attribute name="SupModList" type="ModuleListType" use="optional"/> + <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of PPIs Section --> + + <xs:element minOccurs="0" maxOccurs="1" name="Externs"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + These elements specify additional information about the + module. This area may be used by tools to generate code. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="unbounded" name="Extern"> + <xs:complexType> + <xs:sequence> + <xs:choice minOccurs="1"> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="1" name="EntryPoint" + type="xs:NCName"/> + <xs:element minOccurs="0" maxOccurs="1" name="UnloadImage" + type="xs:NCName"/> + </xs:sequence> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="1" name="Constructor" + type="xs:NCName"/> + <xs:element minOccurs="0" maxOccurs="1" name="Destructor" + type="xs:NCName"/> + </xs:sequence> + </xs:choice> + <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/> + </xs:sequence> + <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> + <xs:attribute name="SupModList" type="ModuleListType" use="optional"/> + <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of Externs Section --> + + <xs:element minOccurs="0" maxOccurs="1" name="PcdCoded"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This section describes how a platform is coded with respect + to the platform configuration knobs. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/> + <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCName" + type="xs:NCName"/> + <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" + type="xs:normalizedString"/> + <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + <xs:attribute name="PcdItemType" type="PcdItemTypes" use="required"/> + <xs:attribute name="PcdUsage" use="required"> + <xs:simpleType> + <xs:restriction base="xs:NCName"> + <xs:enumeration value="PRODUCES"/> + <xs:enumeration value="SOMETIMES_PRODUCES"/> + <xs:enumeration value="CONSUMES"/> + <xs:enumeration value="SOMETIMES_CONSUMES"/> + <xs:enumeration value="UNDEFINED"/> + </xs:restriction> + </xs:simpleType> + + + </xs:attribute> + <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> + <xs:attribute name="SupModList" type="ModuleListType" use="optional"/> + <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of PcdCoded Section --> + + <xs:element minOccurs="0" maxOccurs="unbounded" name="PeiDepex"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is the PEI dependency expression for a Dependency + Section. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="Expression" type="xs:string" minOccurs="1" maxOccurs="1"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + An in-fix expression, of C identifiers and TRUE, + FALSE, AND, OR, NOT, BEFORE, and AFTER as well as parenthesis () in the in-fix + notation. The operators are restricted to grammar defined in the PI + specification. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/> + </xs:sequence> + <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> + <xs:attribute name="SupModList" type="ModuleListType" use="optional"/> + <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/> + </xs:complexType> + </xs:element> + <!-- End of PeiDepex Section --> + + <xs:element minOccurs="0" maxOccurs="unbounded" name="DxeDepex"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is the DXE dependency expression for a Dependency + Section. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="Expression" type=" xs:string " minOccurs="1" maxOccurs="1"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + An in-fix expression, of C identifiers and TRUE, + FALSE, AND, OR, NOT, BEFORE, and AFTER as well as parenthesis () in the in-fix + notation. The operators are restricted to grammar defined in the PI + specification. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/> + </xs:sequence> + <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> + <xs:attribute name="SupModList" type="ModuleListType" use="optional"/> + <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/> + </xs:complexType> + </xs:element> + <!-- End of DxeDepex Section --> + + <xs:element minOccurs="0" maxOccurs="unbounded" name="SmmDepex"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is the SMM dependency expression for a Dependency + Section. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="Expression" type=" xs:string " minOccurs="1" maxOccurs="1"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + An in-fix expression, of C identifiers and TRUE, + FALSE, AND, OR, NOT, BEFORE, and AFTER as well as parenthesis () in the in-fix + notation. The operators are restricted to grammar defined in the PI + specification. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/> + </xs:sequence> + <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> + <xs:attribute name="SupModList" type="ModuleListType" use="optional"/> + <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/> + </xs:complexType> + </xs:element> + <!-- End of SmmDepex Section --> + + + <xs:element minOccurs="0" maxOccurs="1" name="MiscellaneousFiles"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This section is used to provide comments and/or list + auxiliary files, such as pdb or map files. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" name="Description"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional" + /> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is the path and filename location within + the ZIP file. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:anyURI"> + <xs:attribute name="Executable" type="xs:boolean" default="false" + use="optional"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + If true, used by installation + tools to ensure that a file that must be executable has the + correct properties to permit execution. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of Module Surface Area Misc Section --> + + <xs:element minOccurs="0" maxOccurs="unbounded" name="UserExtensions"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This section is used for any processing instructions that + may be custom to the content provided by the distribution that are common to module. + </xs:documentation> + <xs:documentation xml:lang="en-us"> The content is vendor specific. </xs:documentation> + <xs:documentation xml:lang="en-us"> + The content can be plain text as well as any user-defined, + properly formatted XML structure. + </xs:documentation> + </xs:annotation> + <xs:complexType mixed="true"> + <xs:attribute name="UserId" type="xs:NCName" use="required"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is a single word identifier for grouping + similar content. For example, ReferenceBuild might be used to identify non-PI + compliant build steps, with two different UserExtensions sections, one with an + Identifier of Prebuild, and another of PostBuild. Both UserExtensions sections would + use the same UserId. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="Identifier" type="xs:string" use="required"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This can be any string used to differentiate or + identify this section from other UserExtensions sections. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + For example, a PRE_PROCESS Identifier might indicate + specific steps and tools required before processing module content, while a + different UserExtensions section with a POST_PROCESS Identifier might describe steps + that need to be executed after operations on this module. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:anyAttribute processContents="lax"/> + </xs:complexType> + </xs:element> + <!-- End of Module Surface Area UserExtensions Section --> + + </xs:sequence> + <xs:attribute name="BinaryModule" type="xs:boolean" default="false" use="optional"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This attribute is used when the binaries are distributed for + this module and no code generation from source files is required. If set, then the BinaryFiles + section should be used, and any files listed in the SourceFiles section do not have to be built. + Additionally, the AsBuilt section for each binary file must be included. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + + </xs:element> + <!-- End of the ModuleSurfaceArea element. --> + + <xs:element name="Tools"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="1" name="Header"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="1" maxOccurs="1" name="Name" type="xs:normalizedString"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is the User Interface Name for this Tools + Distribution. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element minOccurs="0" maxOccurs="1" name="Copyright" type="xs:string"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is only required if the Copyright is + different from the Distribution Package copyright. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is only required if the License is + different from the Distribution Package license. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element minOccurs="0" maxOccurs="1" name="Abstract"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is only required if the Abstract is + different from the Distribution Package Abstract. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:normalizedString"> + <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element minOccurs="0" maxOccurs="1" name="Description"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is only required if the Description is + different from the Distribution Package Description. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is the path and filename location within the ZIP file. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:anyURI"> + <xs:attribute name="OS" type="SupportedOs" use="optional"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is required for tools that execute; it + should not be used for configuration files. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="Executable" type="xs:boolean" default="false" use="optional"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + If true, used by installation tools to + ensure that a file that must be executable has the correct properties to + permit execution. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of the Tools element. --> + + <xs:element name="MiscellaneousFiles"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This section contains a list of files that are not part of the code + distributed with modules, packages or tools. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="1" name="Header"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:normalizedString"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The User interface name for this content. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element minOccurs="0" maxOccurs="1" name="Copyright" type="xs:string"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is only required if the Copyright is + different from the Distribution Package Copyright. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is only required if the License is + different from the Distribution Package License. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element minOccurs="0" maxOccurs="1" name="Abstract" type="xs:normalizedString"/> + <xs:element minOccurs="0" maxOccurs="unbounded" name="Description"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional" + /> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element minOccurs="0" maxOccurs="unbounded" name="Filename"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is the path and filename location within the ZIP file. + </xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:anyURI"> + <xs:attribute name="Executable" type="xs:boolean" default="false" use="optional"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + If true, used by installation tools to + ensure that a file that must be executable has the correct properties to + permit execution. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <!-- End of the Misc element. --> + + <xs:element name="UserExtensions"> + <xs:complexType mixed="true"> + <xs:sequence> + <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + <xs:attribute name="UserId" type="xs:NCName" use="required"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This is a single word identifier for grouping similar content. + For example, ReferenceBuild might be used to identify non-PI compliant build steps, with two + different UserExtensions sections, one with an Identifier of Prebuild, and another of PostBuild. + Both UserExtensions sections would use the same UserId. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="Identifier" type="xs:string" use="optional"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This can be any string used to differentiate or identify this + section from other UserExtensions sections. + </xs:documentation> + <xs:documentation xml:lang="en-us"> + For example, a PRE_PROCESS Identifier might indicate specific + steps and tools required before processing distribution package content, while a different + UserExtensions section with a POST_PROCESS Identifier might describe steps that need to be + executed after operations on this content. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:anyAttribute processContents="lax"/> + </xs:complexType> + </xs:element> + <!-- The following elements are common definitions used with the ref attribute for elements. --> + + <xs:element name="HelpText"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + + <!-- The following attribute groups are used in various elements above. --> + + <xs:attributeGroup name="SupportedArchMod"> + <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> + <xs:attribute name="SupModList" type="ModuleListType" use="optional"/> + </xs:attributeGroup> + + <!-- The following data types are used to restrict content. --> + + <xs:simpleType name="ArchListType"> + <xs:list itemType="ArchTypes"/> + </xs:simpleType> + + <xs:simpleType name="ArchTypes"> + <xs:restriction base="xs:NCName"> + <xs:enumeration value="IA32"/> + <xs:enumeration value="X64"/> + <xs:enumeration value="IPF"/> + <xs:enumeration value="EBC"/> + <xs:enumeration value="ARM"/> + <xs:pattern value="([A-Z])([a-zA-Z0-9])*"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + Any processor architecture not listed above. The Architecture + must be a target architecture of one or more compiler tool chains. + </xs:documentation> + </xs:annotation> + </xs:pattern> + </xs:restriction> + </xs:simpleType> + + + <xs:simpleType name="FamilyTypes"> + <xs:restriction base="xs:NCName"> + <xs:enumeration value="MSFT"/> + <xs:enumeration value="GCC"/> + <xs:pattern value="[A-Z][a-zA-Z0-9]*"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + Any other family of build utilities for which compiler tools + exist. + </xs:documentation> + </xs:annotation> + </xs:pattern> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="GuidListType"> + <xs:list itemType="GuidTypes"/> + </xs:simpleType> + + <xs:simpleType name="GuidTypes"> + <xs:restriction base="xs:NCName"> + <xs:enumeration value="Event"/> + <xs:enumeration value="File"/> + <xs:enumeration value="FV"/> + <xs:enumeration value="GUID"/> + <xs:enumeration value="HII"/> + <xs:enumeration value="Hii"/> + <xs:enumeration value="HOB"/> + <xs:enumeration value="SystemTable"/> + <xs:enumeration value="TokenSpaceGuid"/> + <xs:enumeration value="Variable"/> + <xs:enumeration value="UNDEFINED"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="HexNumber"> + <xs:restriction base="xs:hexBinary"> + <xs:pattern value="0x([a-fA-F0-9])+"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="Md5Sum"> + <xs:restriction base="xs:normalizedString"> + <xs:pattern value="[a-zA-Z0-9]{32}"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="ModuleListType"> + <xs:list itemType="ModuleTypes"/> + </xs:simpleType> + + <xs:simpleType name="ModuleTypes"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> The following module types are defined by specifications. </xs:documentation> + <xs:documentation xml:lang="en-us"> + Module types for components and libraries defined for this distribution + mechanism. + </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:NCName"> + <xs:enumeration value="BASE "> + <xs:annotation> + <xs:documentation xml:lang="en-us"> Use of this module is not restricted. </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="DXE_CORE"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This module is only applicable to the DXE core. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="DXE_DRIVER"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This module is only applicable to a DXE driver. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="DXE_RUNTIME_DRIVER"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This module is only applicable to a DXE runtime driver. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="DXE_SAL_DRIVER"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This module is only applicable to an IPF DXE runtime driver. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="DXE_SMM_DRIVER"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This module is only applicable to a DXE SMM driver. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="PEI_CORE"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This module is only applicable to the PEI core. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="PEIM"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> This module is only valid for PEI modules. </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="SEC"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This module is only applicable to Security phase. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="UEFI_DRIVER"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> This module is only valid for UEFI drivers. </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="UEFI_RUNTIME_DRIVER"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This module is only valid for UEFI runtime + drivers. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="UEFI_APPLICATION"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This module is only valid for UEFI applications. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="SMM_CORE"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This module is only applicable to the SMM + core. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="USER_DEFINED"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This content is restricted to a specific implementation. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="UNDEFINED"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This enumeration is for use in a list that where the package + creator does not know the what module types are supported by a module. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:pattern value="([A-Z])([a-zA-Z0-9])*"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This pattern has been added for use in a module lists - for + future expansion. + </xs:documentation> + </xs:annotation> + </xs:pattern> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="PcdDatumTypes"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The following data types are defined by the PCD specification (or PCD + section of the UEFI/PI specifications.) + </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:normalizedString"> + <xs:enumeration value="UINT8"/> + <xs:enumeration value="UINT16"/> + <xs:enumeration value="UINT32"/> + <xs:enumeration value="UINT64"/> + <xs:enumeration value="BOOLEAN"/> + <xs:enumeration value="VOID*"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="PcdItemListType"> + <xs:list itemType="PcdItemTypes"/> + </xs:simpleType> + + <xs:simpleType name="PcdItemTypes"> + <xs:restriction base="xs:NCName"> + <xs:enumeration value="FeaturePcd"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The Feature PCD is a binary, evaluating to either true or false. + This is used during build to include/exclude content. It can also be used during execution to + force execution paths within drivers, or to enable/disable features within a driver for a given + platform. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="FixedPcd"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The Fixed PCD is a #define value that is set at build time. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="PatchPcd"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The Patch PCD is a #define that is set at build time, and that + can be modified within a binary file. Additional information, such as the offset location of the + value, along with its length may need to be provided. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="Pcd"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + This PCD type has an overloaded definition. Prior to build, the + platform integrator may choose to implement a PCD as Fixed, Patchable or a Dynamic PCD. If the + platform integrator choose to use the PCD as dynamic, then a PCD driver is required in the + platform (PEI/DXE/both) to track the PCD in some sort of 'database' of these items. For Dynamic + PCDs, the PcdGet* must pass in the token space guid and the token number to retrieve data + (PcdSet* also needs these values.) + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="PcdEx"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The PCD can only be used as Dynamic, and the platform firmware + must contain a driver to maintain a 'database' of these items. For Dynamic PCDs, the PcdGet* + must pass in the token space guid and the token number to retrieve data (PcdSet* also needs + these values.) + </xs:documentation> + </xs:annotation> + </xs:enumeration> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="RegistryFormatGuid"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + A GUID must contain five different Hexadecimal character sets that are + separated by a dash (-) character. + </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:pattern value="\s*[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\s*"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="SupportedOs"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + The EDK II build system supports workstations running one of the + following supported operating systems. This is the OS for the developer's workstation, not the target + platform. + </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="Win32"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + For Windows 2003, Windows XP and Windows Vista. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="Win64"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + For Windows 2003, Windows XP and Windows Vista. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="RedHat32"/> + <xs:enumeration value="RedHat64"/> + <xs:enumeration value="SuSE32"/> + <xs:enumeration value="SuSE64"/> + <xs:enumeration value="Linux32"/> + <xs:enumeration value="Linux64"/> + <xs:enumeration value="OS/X32"/> + <xs:enumeration value="OS/X64"/> + <xs:enumeration value="Generic"/> + <xs:enumeration value="GenericWin"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + Typically, this is used for Windows Batch files. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="GenericNix"> + <xs:annotation> + <xs:documentation xml:lang="en-us"> + Typically use for shell scripts - valid for any Linux and Mac + OS/X. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:pattern value="[a-zA-Z]([a-zA-Z0-9])*"/> + </xs:restriction> + </xs:simpleType> + +</xs:schema> diff --git a/BaseTools/Conf/build_rule.template b/BaseTools/Conf/build_rule.template index 041146124e..a009cb1b11 100755 --- a/BaseTools/Conf/build_rule.template +++ b/BaseTools/Conf/build_rule.template @@ -1,650 +1,650 @@ -#
-# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
-# Portions copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
-# Copyright (c) 2020, ARM Ltd. All rights reserved.<BR>
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-
-## Syntax
-#
-# "*" is used to indicate that the source files will be processed at the same time.
-# "?" is used to indicate that the source files will be processed one by one.
-#
-# "[" <File-Type>[.<Build-Type>][.<Arch>][, <File-Type>[.<Build-Type>][.<Arch>]] "]" <EOL>
-# <InputFile[.<ToolChainFamily>]> <EOL>
-# (?|*).<File-Extension> [(\n|,) (?|*).<File-Extension>]
-#
-# <OutputFile[.<ToolChainFamily>]> <EOL>
-# <FileFullPath>
-#
-# <ExtraDependency>
-# <FileFullPath>
-#
-# <Command[.<ToolChainFamily>]> <EOL>
-# <Command1>
-# [<Command2>]
-#
-# <Build-Type> is the MODULE_TYPE in EDK2 or COMPONENT_TYPE in EDK.
-# Missing <InputFile> will cause an exception and break build.
-# Missing <Command> will cause that related build target won't be generated but
-# won't break build.
-#
-
-## Placeholders for string substitution
-#
-# ${src} Source file(s) to be built (full path)
-# ${s_path} Source file directory (absolute path)
-# ${s_dir} Source file relative directory within a module
-# (Note: ${s_dir} is always equals to "." if source file is given in absolute path.)
-# ${s_name} Source file name without path
-# ${s_base} Source file name without extension and path
-# ${s_ext} Source file extension
-#
-# ${dst} Destination file(s) built from ${src} (full path)
-# ${d_path} Destination file directory (absolute path)
-# ${d_name} Destination file name without path
-# ${d_base} Destination file name without extension and path
-# ${d_ext} Destination file extension
-#
-# (+) Directory separator
-#
-
-## Macro
-# $(WORKSPACE) Workspace directory
-# $(OUTPUT_DIR) Directory for intermediate files for building a module
-# $(DEBUG_DIR) Directory for files used to debug a module
-# $(BUILD_DIR) All files for building a platform will be put in this directory
-# $(BIN_DIR) Common directory for executable files
-# $(FV_DIR) Directory to store flash image files
-# $(INC) Search path of current module
-# $(NASM_INC) Search nasm file path of current module
-# $(INC_LIST) A file containing search paths of current module
-# $(LIBS) Static library files of current module
-# $(<tool>_FLAGS) Tools flags of current module
-# $(MODULE_NAME) Current module name
-# $(MODULE_NAME_GUID) Current module name with module FILE_GUID if same $(MODULE_NAME) exists
-# in different modules, otherwise its value is same as $(MODULE_NAME)
-# $(MODULE_TYPE) Current module type
-# $(MODULE_GUID) Current module guid
-# $(ARCH) Architecture of current module
-# $(TOOLCHAIN) Toolchain used to build current module
-# $(TARGET) Target of current module (DEBUG/RELEASE)
-# $(<tool>) Path of tool
-# $(EDK_TOOLS_PATH) Path of build tools
-# $(<FILE_TYPES>) File list of each file type
-# (Note: The macro name is derived from file type name. For example,
-# C-Code-File will have C_CODE_FILES macro.)
-# $(<FILE_TYPES_LIST>) Macro point to a file containing list of files of a file type
-# (
-# Note: The macro and file name are derived from file type name.
-# For example, C-Code-File will have C_CODE_FILES_LIST macro pointing
-# to $(OUTPUT_DIR)/c_code_files.lst. The list file and macro name
-# will be generated only when this macro is used in command line.
-# This is intended to get over the long command line limitation.
-# )
-# $(DEPS_FLAGS) This is a tool flag to have c compiler generate dependent header file list for a source file.
-# To enable incremental build, this flag must apply to $(CC), $(VFRPP), $(PP), $(ASLCC) and $(ASLPP).
-#
-# $(CP) copy command
-# $(MV) move command
-# $(RM) delete command
-# $(MD) create dir command
-# $(RD) remove dir command
-#
-
-## Reserved File-Type
-#
-# Don't change following names of file types and their associated files,
-# which are also used in tools' code
-#
-# C-Code-File
-# C-Header-File
-# Dynamic-Library-File
-# Static-Library-File
-# Visual-Form-Representation-File
-# Unicode-Text-File
-#
-
-## Build Rule Version Number
-# build_rule_version=0.1
-#
-
-[C-Code-File]
- <InputFile>
- ?.c
- ?.C
- ?.cc
- ?.CC
- ?.cpp
- ?.Cpp
- ?.CPP
-
- <ExtraDependency>
- $(MAKE_FILE)
-
- <OutputFile>
- $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
-
- <Command.MSFT, Command.INTEL>
- "$(CC)" /Fo${dst} $(DEPS_FLAGS) $(CC_FLAGS) $(INC) ${src}
-
- <Command.GCC>
- "$(CC)" $(DEPS_FLAGS) $(CC_FLAGS) -c -o ${dst} $(INC) ${src}
-
- <Command.XCODE>
- "$(CC)" $(DEPS_FLAGS) $(CC_FLAGS) -o ${dst} $(INC) ${src}
-
-[C-Code-File.BASE.AARCH64,C-Code-File.SEC.AARCH64,C-Code-File.PEI_CORE.AARCH64,C-Code-File.PEIM.AARCH64,C-Code-File.BASE.ARM,C-Code-File.SEC.ARM,C-Code-File.PEI_CORE.ARM,C-Code-File.PEIM.ARM]
- <InputFile>
- ?.c
-
- <ExtraDependency>
- $(MAKE_FILE)
-
- <OutputFile>
- $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
-
- <Command.GCC>
- "$(CC)" $(DEPS_FLAGS) $(CC_FLAGS) $(CC_XIPFLAGS) -c -o ${dst} $(INC) ${src}
-
-[C-Header-File]
- <InputFile>
- *.h, *.H
-
- <OutputFile>
-
- <Command>
-
-[Assembly-Code-File.COMMON.COMMON]
- <InputFile.MSFT, InputFile.INTEL>
- ?.asm, ?.Asm, ?.ASM
-
- <InputFile.GCC>
- ?.S, ?.s
-
- <ExtraDependency>
- $(MAKE_FILE)
-
- <OutputFile>
- $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
-
- <Command.MSFT, Command.INTEL>
- Trim --asm-file -o ${d_path}(+)${s_base}.i -i $(INC_LIST) ${src}
- "$(PP)" $(DEPS_FLAGS) $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.ii
- Trim --source-code --convert-hex --trim-long -o ${d_path}(+)${s_base}.iiii ${d_path}(+)${s_base}.ii
- "$(ASM)" /Fo${dst} $(ASM_FLAGS) /I${s_path} $(INC) ${d_path}(+)${s_base}.iiii
-
- <Command.GCC>
- Trim --asm-file -o ${d_path}(+)${s_base}.i -i $(INC_LIST) ${src}
- "$(PP)" $(DEPS_FLAGS) $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.ii
- Trim --trim-long --source-code -o ${d_path}(+)${s_base}.iiii ${d_path}(+)${s_base}.ii
- "$(ASM)" $(ASM_FLAGS) -o ${dst} $(INC) ${d_path}(+)${s_base}.iiii
-
-[Assembly-Code-File.COMMON.ARM,Assembly-Code-File.COMMON.AARCH64]
- # Remove --convert-hex for ARM as it breaks MSFT assemblers
- <InputFile.MSFT, InputFile.INTEL>
- ?.asm, ?.Asm, ?.ASM
-
- <InputFile.GCC>
- ?.S, ?.s
-
- <ExtraDependency>
- $(MAKE_FILE)
-
- <OutputFile>
- $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
-
- <Command.INTEL>
- Trim --asm-file -o ${d_path}(+)${s_base}.i -i $(INC_LIST) ${src}
- "$(PP)" $(DEPS_FLAGS) $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.ii
- Trim --source-code --convert-hex --trim-long -o ${d_path}(+)${s_base}.iiii ${d_path}(+)${s_base}.ii
- "$(ASM)" /Fo${dst} $(ASM_FLAGS) /I${s_path} $(INC) ${d_path}(+)${s_base}.iiii
-
- <Command.MSFT>
- Trim --asm-file -o ${d_path}(+)${s_base}.i -i $(INC_LIST) ${src}
- "$(PP)" $(DEPS_FLAGS) $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.ii
- Trim --source-code --trim-long -o ${d_path}(+)${s_base}.iiii ${d_path}(+)${s_base}.ii
- "$(ASM)" /Fo${dst} $(ASM_FLAGS) /I${s_path} $(INC) ${d_path}(+)${s_base}.iiii
-
- <Command.GCC>
- Trim --asm-file -o ${d_path}(+)${s_base}.i -i $(INC_LIST) ${src}
- "$(PP)" $(DEPS_FLAGS) $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.ii
- Trim --trim-long --source-code -o ${d_path}(+)${s_base}.iiii ${d_path}(+)${s_base}.ii
- "$(ASM)" $(ASM_FLAGS) -o ${dst} $(INC) ${d_path}(+)${s_base}.iiii
-
-[Nasm-Assembly-Code-File.COMMON.COMMON]
- <InputFile>
- ?.nasm
-
- <ExtraDependency>
- $(MAKE_FILE)
-
- <OutputFile>
- $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
-
- <Command>
- Trim --asm-file -o ${d_path}(+)${s_base}.i -i $(INC_LIST) ${src}
- "$(PP)" $(DEPS_FLAGS) $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.ii
- Trim --trim-long --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.ii
- "$(NASM)" -I${s_path}(+) $(NASM_INC) $(NASM_FLAGS) -o $dst ${d_path}(+)${s_base}.iii
-
-[Device-Tree-Source-File]
- <InputFile>
- ?.dts
-
- <ExtraDependency>
- $(MAKE_FILE)
-
- <OutputFile>
- $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dtb
-
- <Command.GCC>
- "$(DTCPP)" $(DTCPP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
- "$(DTC)" $(DTC_FLAGS) -I dts -O dtb -o ${dst} ${d_path}(+)${s_base}.i
-
-[Visual-Form-Representation-File]
- <InputFile>
- ?.vfr
- ?.Vfr
- ?.VFR
-
- <ExtraDependency>
- $(MAKE_FILE)
-
- <OutputFile>
- $(DEBUG_DIR)(+)${s_dir}(+)${s_base}.c
-
- <Command>
- "$(VFRPP)" $(DEPS_FLAGS) $(VFRPP_FLAGS) $(INC) ${src} > $(OUTPUT_DIR)(+)${s_base}.i
- "$(VFR)" $(VFR_FLAGS) --string-db $(OUTPUT_DIR)(+)$(MODULE_NAME)StrDefs.hpk --output-directory ${d_path} $(OUTPUT_DIR)(+)${s_base}.i
-
-[Object-File]
- <InputFile>
- *.obj
- *.o
-
- <OutputFile>
- $(OUTPUT_DIR)(+)$(MODULE_NAME).lib
-
- <Command.MSFT, Command.INTEL, Command.CLANGPDB>
- "$(SLINK)" $(SLINK_FLAGS) /OUT:${dst} @$(OBJECT_FILES_LIST)
-
- <Command.GCC>
- $(RM) ${dst}
- "$(SLINK)" cr ${dst} $(SLINK_FLAGS) @$(OBJECT_FILES_LIST)
-
- <Command.XCODE>
- "$(SLINK)" $(SLINK_FLAGS) ${dst} -filelist $(OBJECT_FILES_LIST)
-
-[Static-Library-File]
- <InputFile>
- *.lib
-
- <ExtraDependency>
- $(MAKE_FILE)
-
- <OutputFile>
- $(DEBUG_DIR)(+)$(MODULE_NAME).dll
-
- <Command.MSFT, Command.INTEL>
- "$(DLINK)" /OUT:${dst} $(DLINK_FLAGS) $(DLINK2_FLAGS) $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST)
- "$(DLINK)" /OUT:${dst} $(DLINK_FLAGS) $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST)
-
- <Command.CLANGPDB>
- "$(DLINK)" /OUT:${dst} $(DLINK_FLAGS) $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS)
-
- <Command.GCC>
- "$(DLINK)" -o ${dst} $(DLINK_FLAGS) -Wl,--start-group,@$(STATIC_LIBRARY_FILES_LIST),--end-group $(CC_FLAGS) $(DLINK2_FLAGS)
- "$(OBJCOPY)" $(OBJCOPY_FLAGS) ${dst}
-
- <Command.XCODE>
- "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) -filelist $(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS)
-
-
-[Static-Library-File.SEC.AARCH64, Static-Library-File.PEI_CORE.AARCH64, Static-Library-File.PEIM.AARCH64,Static-Library-File.SEC.ARM, Static-Library-File.PEI_CORE.ARM, Static-Library-File.PEIM.ARM]
- <InputFile>
- *.lib
-
- <ExtraDependency>
- $(MAKE_FILE)
-
- <OutputFile>
- $(DEBUG_DIR)(+)$(MODULE_NAME).dll
-
- <Command.GCC>
- "$(DLINK)" -o ${dst} $(DLINK_FLAGS) $(DLINK_XIPFLAGS) -Wl,--start-group,@$(STATIC_LIBRARY_FILES_LIST),--end-group $(CC_FLAGS) $(CC_XIPFLAGS) $(DLINK2_FLAGS)
- "$(OBJCOPY)" $(OBJCOPY_FLAGS) ${dst}
-
-
-[Static-Library-File.USER_DEFINED, Static-Library-File.HOST_APPLICATION]
- <InputFile>
- *.lib
-
- <ExtraDependency>
- $(MAKE_FILE)
-
- <OutputFile>
- $(DEBUG_DIR)(+)$(MODULE_NAME)
-
- <Command.MSFT, Command.INTEL, Command.CLANGPDB>
- "$(DLINK)" $(DLINK_FLAGS) $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST)
-
- <Command.GCC>
- "$(DLINK)" $(DLINK_FLAGS) -Wl,--start-group,@$(STATIC_LIBRARY_FILES_LIST),--end-group $(DLINK2_FLAGS)
-
- <Command.XCODE>
- "$(DLINK)" -o ${dst} $(DLINK_FLAGS) $(DLINK_SPATH) -filelist $(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS)
-
-
-[Dynamic-Library-File]
- <InputFile>
- ?.dll
-
- <OutputFile>
- $(OUTPUT_DIR)(+)$(MODULE_NAME).efi
- $(OUTPUT_DIR)(+)$(MODULE_NAME).map
-
- <Command.MSFT, Command.INTEL, Command.CLANGPDB>
- "$(GENFW)" -e $(MODULE_TYPE) -o ${dst} ${src} $(GENFW_FLAGS)
- $(CP) ${dst} $(DEBUG_DIR)
- $(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).efi
- -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR)
- -$(CP) $(DEBUG_DIR)(+)*.pdb $(OUTPUT_DIR)
- <Command.GCC>
- $(CP) ${src} $(DEBUG_DIR)(+)$(MODULE_NAME).debug
- "$(OBJCOPY)" $(OBJCOPY_STRIPFLAG) ${src}
-
- #
- #The below 2 lines are only needed for UNIXGCC tool chain, which generates PE image directly
- #
- -"$(OBJCOPY)" $(OBJCOPY_ADDDEBUGFLAG) ${src}
- -$(CP) $(DEBUG_DIR)(+)$(MODULE_NAME).debug $(BIN_DIR)(+)$(MODULE_NAME_GUID).debug
-
- "$(GENFW)" -e $(MODULE_TYPE) -o ${dst} ${src} $(GENFW_FLAGS)
- $(CP) ${dst} $(DEBUG_DIR)
- $(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).efi
- -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR)
-
- <Command.XCODE>
- # tool to convert Mach-O to PE/COFF
- "$(MTOC)" -subsystem $(MODULE_TYPE) $(MTOC_FLAGS) ${src} $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff
- # create symbol file for GDB debug
- -$(DSYMUTIL) ${src}
- "$(GENFW)" -e $(MODULE_TYPE) -o ${dst} $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff $(GENFW_FLAGS)
- $(CP) ${dst} $(DEBUG_DIR)
- $(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).efi
- -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR)
-
-[Dependency-Expression-File]
- <InputFile>
- ?.dxs, ?.Dxs, ?.DXS
-
- <OutputFile>
- $(OUTPUT_DIR)(+)$(MODULE_NAME).depex
-
- <ExtraDependency>
- $(MAKE_FILE)
-
- <Command>
- "$(PP)" $(DEPS_FLAGS) $(APP_FLAGS) $(INC) ${src} > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i
- Trim --source-code -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i
- GenDepex -t $(MODULE_TYPE) -o ${dst} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii
-
-[Acpi-Source-Language-File]
- <InputFile>
- ?.asl, ?.Asl, ?.ASL
-
- <OutputFile>
- $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.aml
- $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.amli
-
- <ExtraDependency>
- $(MAKE_FILE)
-
- <Command.MSFT, Command.INTEL>
- Trim --asl-file --asl-deps -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i -i $(INC_LIST) ${src}
- "$(ASLPP)" $(DEPS_FLAGS) $(ASLPP_FLAGS) $(INC) /I${s_path} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii
- Trim --source-code -l -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii
- "$(ASL)" $(ASL_FLAGS) $(ASL_OUTFLAGS)${dst} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii
- $(CP) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.aml $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.amli
-
- <Command.GCC>
- Trim --asl-file --asl-deps -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i -i $(INC_LIST) ${src}
- "$(ASLPP)" $(DEPS_FLAGS) $(ASLPP_FLAGS) $(INC) -I${s_path} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii
- Trim --source-code -l -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii
- "$(ASL)" $(ASL_FLAGS) $(ASL_OUTFLAGS)${dst} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii
- $(CP) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.aml $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.amli
-
-[Acpi-Machine-Language-File-to-C.DXE_DRIVER]
- <InputFile>
- ?.amli
-
- <OutputFile>
- ${s_path}(+)${s_base}.c
-
- <Command>
- -AmlToC ${src}
-
-[C-Code-File.AcpiTable]
- <InputFile>
- ?.c
-
- <OutputFile>
- $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.acpi
-
- <ExtraDependency>
- $(MAKE_FILE)
-
- <Command.MSFT, Command.INTEL>
- "$(ASLCC)" $(DEPS_FLAGS) /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASLCC_FLAGS) $(DEPS_FLAGS) $(INC) ${src}
- "$(ASLDLINK)" /OUT:$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
- "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS)
-
- <Command.GCC>
- "$(ASLCC)" $(DEPS_FLAGS) -c -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(DEPS_FLAGS) $(INC) ${src}
- "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
- "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS)
-
-[Acpi-Table-Code-File]
- <InputFile>
- ?.aslc, ?.act
-
- <OutputFile>
- $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.acpi
-
- <ExtraDependency>
- $(MAKE_FILE)
-
- <Command.MSFT, Command.INTEL>
- "$(ASLCC)" $(DEPS_FLAGS) /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASLCC_FLAGS) $(DEPS_FLAGS) $(INC) ${src}
- "$(ASLDLINK)" /OUT:$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
- "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS)
-
- <Command.GCC>
- "$(ASLCC)" $(DEPS_FLAGS) -c -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(DEPS_FLAGS) $(INC) ${src}
- "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
- "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS)
-
- <Command.CLANGPDB>
- "$(ASLCC)" $(DEPS_FLAGS) -c -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(DEPS_FLAGS) $(INC) ${src}
- "$(ASLDLINK)" /OUT:$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
- "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS)
-
- <Command.XCODE>
- "$(ASLCC)" $(DEPS_FLAGS) -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASLCC_FLAGS) $(DEPS_FLAGS) $(INC) ${src}
- "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
- "$(MTOC)" -subsystem $(MODULE_TYPE) $(MTOC_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.pecoff
- "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.pecoff $(GENFW_FLAGS)
-
-
-[Masm16-Code-File]
- <InputFile>
- ?.asm16, ?.Asm16, ?.ASM16, ?.s16, ?.S16
-
- <ExtraDependency>
- $(MAKE_FILE)
-
- <OutputFile>
- $(OUTPUT_DIR)(+)${s_base}.com
-
- <Command.MSFT, Command.INTEL>
- Trim --asm-file -o ${d_path}(+)${s_base}.i -i $(INC_LIST) ${src}
- "$(PP)" $(DEPS_FLAGS) $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.ii
- Trim --source-code --convert-hex --trim-long -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.ii
- cd $(OUTPUT_DIR)(+)${s_dir}
- "$(ASM16)" /nologo /c /omf $(ASM16_FLAGS) $(INC) /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj ${d_path}(+)${s_base}.iii
- "$(ASMLINK)" $(ASMLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj,${dst},,,,
-
- <Command.GCC>
- Trim --asm-file -o {d_path}(+)${s_base}.i -i $(INC_LIST) ${src}
- "$(PP)" $(DEPS_FLAGS) $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.ii
- Trim --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.ii
- "$(ASM)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASM_FLAGS) $(INC) ${d_path}(+)${s_base}.iii
- "$(DLINK)" -o ${dst} $(DLINK_FLAGS) --start-group $(DLINK_SPATH) $(LIBS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj --end-group
-
- <Command.XCODE>
- Trim --asm-file -o ${d_path}(+)${s_base}.i -i $(INC_LIST) ${src}
- "$(PP)" $(DEPS_FLAGS) $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.ii
- Trim --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.ii
- "$(ASM)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASM_FLAGS) $(INC) ${d_path}(+)${s_base}.iii
- "$(SLINK)" $(SLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.slib $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
- otool -t $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.slib | hex2bin.py ${dst}
-
-
-[Nasm-to-Binary-Code-File]
- <InputFile>
- ?.nasmb
-
- <ExtraDependency>
- $(MAKE_FILE)
-
- <OutputFile>
- $(OUTPUT_DIR)(+)${s_base}.bin
-
- <Command>
- Trim --asm-file -o ${d_path}(+)${s_base}.i -i $(INC_LIST) ${src}
- "$(PP)" $(DEPS_FLAGS) $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.ii
- Trim --source-code --convert-hex -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.ii
- "$(NASM)" -I${s_path}(+) -l ${d_path}(+)${s_base}.lst $(NASMB_FLAGS) $(NASM_INC) -o $dst ${d_path}(+)${s_base}.iii
- # copy the output file with .com postfix that be same to the output file of .asm16
- $(CP) ${dst} $(OUTPUT_DIR)(+)${s_base}.com
-
-[Microcode-File.USER_DEFINED, Microcode-File.Microcode]
- <InputFile>
- ?.txt, ?.TXT, ?.Txt, ?.mut, ?.inc
-
- <OutputFile>
- $(OUTPUT_DIR)(+)${s_base}.mcb
-
- <Command>
- "$(GENFW)" -o ${dst} -m ${src} $(GENFW_FLAGS)
-
-[Microcode-Binary-File]
- <InputFile>
- *.mcb
-
- <ExtraDependency>
- $(MAKE_FILE)
-
- <OutputFile>
- $(OUTPUT_DIR)(+)$(MODULE_NAME).bin
-
- <Command>
- "$(GENFW)" -o ${dst} -j $(MICROCODE_BINARY_FILES) $(GENFW_FLAGS)
- -$(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).bin
-
-[EFI-Image-File]
- <InputFile>
- ?.efi, ?.Efi, ?.EFI
-
- <OutputFile>
-
- <Command>
-
-[Unicode-Text-File]
- <InputFile>
- *.uni, *.Uni, *.UNI
-
- <OutputFile>
- $(DEBUG_DIR)(+)AutoGen.c
- $(DEBUG_DIR)(+)$(MODULE_NAME)StrDefs.h
- $(OUTPUT_DIR)(+)$(MODULE_NAME)StrDefs.hpk
-
- <Command>
-
-[Image-Definition-File]
- <InputFile>
- *.idf, *.Idf, *.IDF
-
- <OutputFile>
- $(DEBUG_DIR)(+)AutoGen.c
- $(DEBUG_DIR)(+)$(MODULE_NAME)ImgDefs.h
- $(OUTPUT_DIR)(+)$(MODULE_NAME)Idf.hpk
-
- <Command>
-
-[Efi-Image.UEFI_OPTIONROM]
- <InputFile>
- ?.efi, ?.EFI, ?.Efi
-
- <OutputFile>
- $(BIN_DIR)(+)$(MODULE_NAME_GUID).rom
-
- <Command>
- $(OPTROM) -i $(PCI_DEVICE_ID) -f $(PCI_VENDOR_ID) -l $(PCI_CLASS_CODE) -r $(PCI_REVISION) -o $dst $(OPTROM_FLAGS) $src
-
-[Unicode-Text-File.UEFI_HII]
- <InputFile>
- *.uni, *.Uni, *.UNI
-
- <OutputFile>
- $(OUTPUT_DIR)(+)$(MODULE_NAME)StrDefs.hpk
- $(DEBUG_DIR)(+)$(MODULE_NAME)StrDefs.h
-
- <Command>
-
-[Image-Definition-File.UEFI_HII]
- <InputFile>
- *.idf, *.Idf, *.IDF
-
- <OutputFile>
- $(DEBUG_DIR)(+)$(MODULE_NAME)ImgDefs.h
- $(OUTPUT_DIR)(+)$(MODULE_NAME)Idf.hpk
-
- <Command>
-
-[Visual-Form-Representation-File.UEFI_HII]
- <InputFile>
- ?.vfr
- ?.Vfr
- ?.VFR
-
- <ExtraDependency>
- $(MAKE_FILE)
-
- <OutputFile>
- $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.hpk
-
- <Command>
- "$(VFRPP)" $(DEPS_FLAGS) $(VFRPP_FLAGS) $(INC) ${src} > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i
- "$(VFR)" $(VFR_FLAGS) --create-ifr-package --string-db $(OUTPUT_DIR)(+)$(MODULE_NAME)StrDefs.hpk --output-directory $(OUTPUT_DIR)(+)${s_dir} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i
-
-[Hii-Binary-Package.UEFI_HII]
- <InputFile>
- *.hpk
-
- <OutputFile.MSFT, OutputFile.INTEL, OutputFile.GCC, OutputFile.CLANGPDB>
- $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.lib
-
- <OutputFile.XCODE>
- $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc
-
- <Command.MSFT, Command.INTEL, Command.CLANGPDB>
- "$(GENFW)" -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiipackage $(HII_BINARY_PACKAGES) $(GENFW_FLAGS)
- "$(RC)" /Fo${dst} $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc
-
- <Command.GCC>
- "$(GENFW)" -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiibinpackage $(HII_BINARY_PACKAGES) $(GENFW_FLAGS)
- "$(RC)" $(RC_FLAGS) $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc ${dst}
- <Command.XCODE>
- "$(GENFW)" -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiibinpackage $(HII_BINARY_PACKAGES) $(GENFW_FLAGS)
+# +# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR> +# Portions copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR> +# Copyright (c) 2020, ARM Ltd. All rights reserved.<BR> +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +## Syntax +# +# "*" is used to indicate that the source files will be processed at the same time. +# "?" is used to indicate that the source files will be processed one by one. +# +# "[" <File-Type>[.<Build-Type>][.<Arch>][, <File-Type>[.<Build-Type>][.<Arch>]] "]" <EOL> +# <InputFile[.<ToolChainFamily>]> <EOL> +# (?|*).<File-Extension> [(\n|,) (?|*).<File-Extension>] +# +# <OutputFile[.<ToolChainFamily>]> <EOL> +# <FileFullPath> +# +# <ExtraDependency> +# <FileFullPath> +# +# <Command[.<ToolChainFamily>]> <EOL> +# <Command1> +# [<Command2>] +# +# <Build-Type> is the MODULE_TYPE in EDK2 or COMPONENT_TYPE in EDK. +# Missing <InputFile> will cause an exception and break build. +# Missing <Command> will cause that related build target won't be generated but +# won't break build. +# + +## Placeholders for string substitution +# +# ${src} Source file(s) to be built (full path) +# ${s_path} Source file directory (absolute path) +# ${s_dir} Source file relative directory within a module +# (Note: ${s_dir} is always equals to "." if source file is given in absolute path.) +# ${s_name} Source file name without path +# ${s_base} Source file name without extension and path +# ${s_ext} Source file extension +# +# ${dst} Destination file(s) built from ${src} (full path) +# ${d_path} Destination file directory (absolute path) +# ${d_name} Destination file name without path +# ${d_base} Destination file name without extension and path +# ${d_ext} Destination file extension +# +# (+) Directory separator +# + +## Macro +# $(WORKSPACE) Workspace directory +# $(OUTPUT_DIR) Directory for intermediate files for building a module +# $(DEBUG_DIR) Directory for files used to debug a module +# $(BUILD_DIR) All files for building a platform will be put in this directory +# $(BIN_DIR) Common directory for executable files +# $(FV_DIR) Directory to store flash image files +# $(INC) Search path of current module +# $(NASM_INC) Search nasm file path of current module +# $(INC_LIST) A file containing search paths of current module +# $(LIBS) Static library files of current module +# $(<tool>_FLAGS) Tools flags of current module +# $(MODULE_NAME) Current module name +# $(MODULE_NAME_GUID) Current module name with module FILE_GUID if same $(MODULE_NAME) exists +# in different modules, otherwise its value is same as $(MODULE_NAME) +# $(MODULE_TYPE) Current module type +# $(MODULE_GUID) Current module guid +# $(ARCH) Architecture of current module +# $(TOOLCHAIN) Toolchain used to build current module +# $(TARGET) Target of current module (DEBUG/RELEASE) +# $(<tool>) Path of tool +# $(EDK_TOOLS_PATH) Path of build tools +# $(<FILE_TYPES>) File list of each file type +# (Note: The macro name is derived from file type name. For example, +# C-Code-File will have C_CODE_FILES macro.) +# $(<FILE_TYPES_LIST>) Macro point to a file containing list of files of a file type +# ( +# Note: The macro and file name are derived from file type name. +# For example, C-Code-File will have C_CODE_FILES_LIST macro pointing +# to $(OUTPUT_DIR)/c_code_files.lst. The list file and macro name +# will be generated only when this macro is used in command line. +# This is intended to get over the long command line limitation. +# ) +# $(DEPS_FLAGS) This is a tool flag to have c compiler generate dependent header file list for a source file. +# To enable incremental build, this flag must apply to $(CC), $(VFRPP), $(PP), $(ASLCC) and $(ASLPP). +# +# $(CP) copy command +# $(MV) move command +# $(RM) delete command +# $(MD) create dir command +# $(RD) remove dir command +# + +## Reserved File-Type +# +# Don't change following names of file types and their associated files, +# which are also used in tools' code +# +# C-Code-File +# C-Header-File +# Dynamic-Library-File +# Static-Library-File +# Visual-Form-Representation-File +# Unicode-Text-File +# + +## Build Rule Version Number +# build_rule_version=0.1 +# + +[C-Code-File] + <InputFile> + ?.c + ?.C + ?.cc + ?.CC + ?.cpp + ?.Cpp + ?.CPP + + <ExtraDependency> + $(MAKE_FILE) + + <OutputFile> + $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj + + <Command.MSFT, Command.INTEL> + "$(CC)" /Fo${dst} $(DEPS_FLAGS) $(CC_FLAGS) $(INC) ${src} + + <Command.GCC> + "$(CC)" $(DEPS_FLAGS) $(CC_FLAGS) -c -o ${dst} $(INC) ${src} + + <Command.XCODE> + "$(CC)" $(DEPS_FLAGS) $(CC_FLAGS) -o ${dst} $(INC) ${src} + +[C-Code-File.BASE.AARCH64,C-Code-File.SEC.AARCH64,C-Code-File.PEI_CORE.AARCH64,C-Code-File.PEIM.AARCH64,C-Code-File.BASE.ARM,C-Code-File.SEC.ARM,C-Code-File.PEI_CORE.ARM,C-Code-File.PEIM.ARM] + <InputFile> + ?.c + + <ExtraDependency> + $(MAKE_FILE) + + <OutputFile> + $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj + + <Command.GCC> + "$(CC)" $(DEPS_FLAGS) $(CC_FLAGS) $(CC_XIPFLAGS) -c -o ${dst} $(INC) ${src} + +[C-Header-File] + <InputFile> + *.h, *.H + + <OutputFile> + + <Command> + +[Assembly-Code-File.COMMON.COMMON] + <InputFile.MSFT, InputFile.INTEL> + ?.asm, ?.Asm, ?.ASM + + <InputFile.GCC> + ?.S, ?.s + + <ExtraDependency> + $(MAKE_FILE) + + <OutputFile> + $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj + + <Command.MSFT, Command.INTEL> + Trim --asm-file -o ${d_path}(+)${s_base}.i -i $(INC_LIST) ${src} + "$(PP)" $(DEPS_FLAGS) $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.ii + Trim --source-code --convert-hex --trim-long -o ${d_path}(+)${s_base}.iiii ${d_path}(+)${s_base}.ii + "$(ASM)" /Fo${dst} $(ASM_FLAGS) /I${s_path} $(INC) ${d_path}(+)${s_base}.iiii + + <Command.GCC> + Trim --asm-file -o ${d_path}(+)${s_base}.i -i $(INC_LIST) ${src} + "$(PP)" $(DEPS_FLAGS) $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.ii + Trim --trim-long --source-code -o ${d_path}(+)${s_base}.iiii ${d_path}(+)${s_base}.ii + "$(ASM)" $(ASM_FLAGS) -o ${dst} $(INC) ${d_path}(+)${s_base}.iiii + +[Assembly-Code-File.COMMON.ARM,Assembly-Code-File.COMMON.AARCH64] + # Remove --convert-hex for ARM as it breaks MSFT assemblers + <InputFile.MSFT, InputFile.INTEL> + ?.asm, ?.Asm, ?.ASM + + <InputFile.GCC> + ?.S, ?.s + + <ExtraDependency> + $(MAKE_FILE) + + <OutputFile> + $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj + + <Command.INTEL> + Trim --asm-file -o ${d_path}(+)${s_base}.i -i $(INC_LIST) ${src} + "$(PP)" $(DEPS_FLAGS) $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.ii + Trim --source-code --convert-hex --trim-long -o ${d_path}(+)${s_base}.iiii ${d_path}(+)${s_base}.ii + "$(ASM)" /Fo${dst} $(ASM_FLAGS) /I${s_path} $(INC) ${d_path}(+)${s_base}.iiii + + <Command.MSFT> + Trim --asm-file -o ${d_path}(+)${s_base}.i -i $(INC_LIST) ${src} + "$(PP)" $(DEPS_FLAGS) $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.ii + Trim --source-code --trim-long -o ${d_path}(+)${s_base}.iiii ${d_path}(+)${s_base}.ii + "$(ASM)" /Fo${dst} $(ASM_FLAGS) /I${s_path} $(INC) ${d_path}(+)${s_base}.iiii + + <Command.GCC> + Trim --asm-file -o ${d_path}(+)${s_base}.i -i $(INC_LIST) ${src} + "$(PP)" $(DEPS_FLAGS) $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.ii + Trim --trim-long --source-code -o ${d_path}(+)${s_base}.iiii ${d_path}(+)${s_base}.ii + "$(ASM)" $(ASM_FLAGS) -o ${dst} $(INC) ${d_path}(+)${s_base}.iiii + +[Nasm-Assembly-Code-File.COMMON.COMMON] + <InputFile> + ?.nasm + + <ExtraDependency> + $(MAKE_FILE) + + <OutputFile> + $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj + + <Command> + Trim --asm-file -o ${d_path}(+)${s_base}.i -i $(INC_LIST) ${src} + "$(PP)" $(DEPS_FLAGS) $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.ii + Trim --trim-long --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.ii + "$(NASM)" -I${s_path}(+) $(NASM_INC) $(NASM_FLAGS) -o $dst ${d_path}(+)${s_base}.iii + +[Device-Tree-Source-File] + <InputFile> + ?.dts + + <ExtraDependency> + $(MAKE_FILE) + + <OutputFile> + $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dtb + + <Command.GCC> + "$(DTCPP)" $(DTCPP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i + "$(DTC)" $(DTC_FLAGS) -I dts -O dtb -o ${dst} ${d_path}(+)${s_base}.i + +[Visual-Form-Representation-File] + <InputFile> + ?.vfr + ?.Vfr + ?.VFR + + <ExtraDependency> + $(MAKE_FILE) + + <OutputFile> + $(DEBUG_DIR)(+)${s_dir}(+)${s_base}.c + + <Command> + "$(VFRPP)" $(DEPS_FLAGS) $(VFRPP_FLAGS) $(INC) ${src} > $(OUTPUT_DIR)(+)${s_base}.i + "$(VFR)" $(VFR_FLAGS) --string-db $(OUTPUT_DIR)(+)$(MODULE_NAME)StrDefs.hpk --output-directory ${d_path} $(OUTPUT_DIR)(+)${s_base}.i + +[Object-File] + <InputFile> + *.obj + *.o + + <OutputFile> + $(OUTPUT_DIR)(+)$(MODULE_NAME).lib + + <Command.MSFT, Command.INTEL, Command.CLANGPDB> + "$(SLINK)" $(SLINK_FLAGS) /OUT:${dst} @$(OBJECT_FILES_LIST) + + <Command.GCC> + $(RM) ${dst} + "$(SLINK)" cr ${dst} $(SLINK_FLAGS) @$(OBJECT_FILES_LIST) + + <Command.XCODE> + "$(SLINK)" $(SLINK_FLAGS) ${dst} -filelist $(OBJECT_FILES_LIST) + +[Static-Library-File] + <InputFile> + *.lib + + <ExtraDependency> + $(MAKE_FILE) + + <OutputFile> + $(DEBUG_DIR)(+)$(MODULE_NAME).dll + + <Command.MSFT, Command.INTEL> + "$(DLINK)" /OUT:${dst} $(DLINK_FLAGS) $(DLINK2_FLAGS) $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST) + "$(DLINK)" /OUT:${dst} $(DLINK_FLAGS) $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST) + + <Command.CLANGPDB> + "$(DLINK)" /OUT:${dst} $(DLINK_FLAGS) $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS) + + <Command.GCC> + "$(DLINK)" -o ${dst} $(DLINK_FLAGS) -Wl,--start-group,@$(STATIC_LIBRARY_FILES_LIST),--end-group $(CC_FLAGS) $(DLINK2_FLAGS) + "$(OBJCOPY)" $(OBJCOPY_FLAGS) ${dst} + + <Command.XCODE> + "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) -filelist $(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS) + + +[Static-Library-File.SEC.AARCH64, Static-Library-File.PEI_CORE.AARCH64, Static-Library-File.PEIM.AARCH64,Static-Library-File.SEC.ARM, Static-Library-File.PEI_CORE.ARM, Static-Library-File.PEIM.ARM] + <InputFile> + *.lib + + <ExtraDependency> + $(MAKE_FILE) + + <OutputFile> + $(DEBUG_DIR)(+)$(MODULE_NAME).dll + + <Command.GCC> + "$(DLINK)" -o ${dst} $(DLINK_FLAGS) $(DLINK_XIPFLAGS) -Wl,--start-group,@$(STATIC_LIBRARY_FILES_LIST),--end-group $(CC_FLAGS) $(CC_XIPFLAGS) $(DLINK2_FLAGS) + "$(OBJCOPY)" $(OBJCOPY_FLAGS) ${dst} + + +[Static-Library-File.USER_DEFINED, Static-Library-File.HOST_APPLICATION] + <InputFile> + *.lib + + <ExtraDependency> + $(MAKE_FILE) + + <OutputFile> + $(DEBUG_DIR)(+)$(MODULE_NAME) + + <Command.MSFT, Command.INTEL, Command.CLANGPDB> + "$(DLINK)" $(DLINK_FLAGS) $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST) + + <Command.GCC> + "$(DLINK)" $(DLINK_FLAGS) -Wl,--start-group,@$(STATIC_LIBRARY_FILES_LIST),--end-group $(DLINK2_FLAGS) + + <Command.XCODE> + "$(DLINK)" -o ${dst} $(DLINK_FLAGS) $(DLINK_SPATH) -filelist $(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS) + + +[Dynamic-Library-File] + <InputFile> + ?.dll + + <OutputFile> + $(OUTPUT_DIR)(+)$(MODULE_NAME).efi + $(OUTPUT_DIR)(+)$(MODULE_NAME).map + + <Command.MSFT, Command.INTEL, Command.CLANGPDB> + "$(GENFW)" -e $(MODULE_TYPE) -o ${dst} ${src} $(GENFW_FLAGS) + $(CP) ${dst} $(DEBUG_DIR) + $(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).efi + -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR) + -$(CP) $(DEBUG_DIR)(+)*.pdb $(OUTPUT_DIR) + <Command.GCC> + $(CP) ${src} $(DEBUG_DIR)(+)$(MODULE_NAME).debug + "$(OBJCOPY)" $(OBJCOPY_STRIPFLAG) ${src} + + # + #The below 2 lines are only needed for UNIXGCC tool chain, which generates PE image directly + # + -"$(OBJCOPY)" $(OBJCOPY_ADDDEBUGFLAG) ${src} + -$(CP) $(DEBUG_DIR)(+)$(MODULE_NAME).debug $(BIN_DIR)(+)$(MODULE_NAME_GUID).debug + + "$(GENFW)" -e $(MODULE_TYPE) -o ${dst} ${src} $(GENFW_FLAGS) + $(CP) ${dst} $(DEBUG_DIR) + $(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).efi + -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR) + + <Command.XCODE> + # tool to convert Mach-O to PE/COFF + "$(MTOC)" -subsystem $(MODULE_TYPE) $(MTOC_FLAGS) ${src} $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff + # create symbol file for GDB debug + -$(DSYMUTIL) ${src} + "$(GENFW)" -e $(MODULE_TYPE) -o ${dst} $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff $(GENFW_FLAGS) + $(CP) ${dst} $(DEBUG_DIR) + $(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).efi + -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR) + +[Dependency-Expression-File] + <InputFile> + ?.dxs, ?.Dxs, ?.DXS + + <OutputFile> + $(OUTPUT_DIR)(+)$(MODULE_NAME).depex + + <ExtraDependency> + $(MAKE_FILE) + + <Command> + "$(PP)" $(DEPS_FLAGS) $(APP_FLAGS) $(INC) ${src} > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i + Trim --source-code -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i + GenDepex -t $(MODULE_TYPE) -o ${dst} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii + +[Acpi-Source-Language-File] + <InputFile> + ?.asl, ?.Asl, ?.ASL + + <OutputFile> + $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.aml + $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.amli + + <ExtraDependency> + $(MAKE_FILE) + + <Command.MSFT, Command.INTEL> + Trim --asl-file --asl-deps -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i -i $(INC_LIST) ${src} + "$(ASLPP)" $(DEPS_FLAGS) $(ASLPP_FLAGS) $(INC) /I${s_path} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii + Trim --source-code -l -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii + "$(ASL)" $(ASL_FLAGS) $(ASL_OUTFLAGS)${dst} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii + $(CP) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.aml $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.amli + + <Command.GCC> + Trim --asl-file --asl-deps -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i -i $(INC_LIST) ${src} + "$(ASLPP)" $(DEPS_FLAGS) $(ASLPP_FLAGS) $(INC) -I${s_path} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii + Trim --source-code -l -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii + "$(ASL)" $(ASL_FLAGS) $(ASL_OUTFLAGS)${dst} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii + $(CP) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.aml $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.amli + +[Acpi-Machine-Language-File-to-C.DXE_DRIVER] + <InputFile> + ?.amli + + <OutputFile> + ${s_path}(+)${s_base}.c + + <Command> + -AmlToC ${src} + +[C-Code-File.AcpiTable] + <InputFile> + ?.c + + <OutputFile> + $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.acpi + + <ExtraDependency> + $(MAKE_FILE) + + <Command.MSFT, Command.INTEL> + "$(ASLCC)" $(DEPS_FLAGS) /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASLCC_FLAGS) $(DEPS_FLAGS) $(INC) ${src} + "$(ASLDLINK)" /OUT:$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj + "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS) + + <Command.GCC> + "$(ASLCC)" $(DEPS_FLAGS) -c -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(DEPS_FLAGS) $(INC) ${src} + "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj + "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS) + +[Acpi-Table-Code-File] + <InputFile> + ?.aslc, ?.act + + <OutputFile> + $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.acpi + + <ExtraDependency> + $(MAKE_FILE) + + <Command.MSFT, Command.INTEL> + "$(ASLCC)" $(DEPS_FLAGS) /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASLCC_FLAGS) $(DEPS_FLAGS) $(INC) ${src} + "$(ASLDLINK)" /OUT:$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj + "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS) + + <Command.GCC> + "$(ASLCC)" $(DEPS_FLAGS) -c -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(DEPS_FLAGS) $(INC) ${src} + "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj + "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS) + + <Command.CLANGPDB> + "$(ASLCC)" $(DEPS_FLAGS) -c -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(DEPS_FLAGS) $(INC) ${src} + "$(ASLDLINK)" /OUT:$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj + "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS) + + <Command.XCODE> + "$(ASLCC)" $(DEPS_FLAGS) -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASLCC_FLAGS) $(DEPS_FLAGS) $(INC) ${src} + "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj + "$(MTOC)" -subsystem $(MODULE_TYPE) $(MTOC_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.pecoff + "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.pecoff $(GENFW_FLAGS) + + +[Masm16-Code-File] + <InputFile> + ?.asm16, ?.Asm16, ?.ASM16, ?.s16, ?.S16 + + <ExtraDependency> + $(MAKE_FILE) + + <OutputFile> + $(OUTPUT_DIR)(+)${s_base}.com + + <Command.MSFT, Command.INTEL> + Trim --asm-file -o ${d_path}(+)${s_base}.i -i $(INC_LIST) ${src} + "$(PP)" $(DEPS_FLAGS) $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.ii + Trim --source-code --convert-hex --trim-long -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.ii + cd $(OUTPUT_DIR)(+)${s_dir} + "$(ASM16)" /nologo /c /omf $(ASM16_FLAGS) $(INC) /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj ${d_path}(+)${s_base}.iii + "$(ASMLINK)" $(ASMLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj,${dst},,,, + + <Command.GCC> + Trim --asm-file -o {d_path}(+)${s_base}.i -i $(INC_LIST) ${src} + "$(PP)" $(DEPS_FLAGS) $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.ii + Trim --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.ii + "$(ASM)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASM_FLAGS) $(INC) ${d_path}(+)${s_base}.iii + "$(DLINK)" -o ${dst} $(DLINK_FLAGS) --start-group $(DLINK_SPATH) $(LIBS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj --end-group + + <Command.XCODE> + Trim --asm-file -o ${d_path}(+)${s_base}.i -i $(INC_LIST) ${src} + "$(PP)" $(DEPS_FLAGS) $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.ii + Trim --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.ii + "$(ASM)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASM_FLAGS) $(INC) ${d_path}(+)${s_base}.iii + "$(SLINK)" $(SLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.slib $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj + otool -t $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.slib | hex2bin.py ${dst} + + +[Nasm-to-Binary-Code-File] + <InputFile> + ?.nasmb + + <ExtraDependency> + $(MAKE_FILE) + + <OutputFile> + $(OUTPUT_DIR)(+)${s_base}.bin + + <Command> + Trim --asm-file -o ${d_path}(+)${s_base}.i -i $(INC_LIST) ${src} + "$(PP)" $(DEPS_FLAGS) $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.ii + Trim --source-code --convert-hex -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.ii + "$(NASM)" -I${s_path}(+) -l ${d_path}(+)${s_base}.lst $(NASMB_FLAGS) $(NASM_INC) -o $dst ${d_path}(+)${s_base}.iii + # copy the output file with .com postfix that be same to the output file of .asm16 + $(CP) ${dst} $(OUTPUT_DIR)(+)${s_base}.com + +[Microcode-File.USER_DEFINED, Microcode-File.Microcode] + <InputFile> + ?.txt, ?.TXT, ?.Txt, ?.mut, ?.inc + + <OutputFile> + $(OUTPUT_DIR)(+)${s_base}.mcb + + <Command> + "$(GENFW)" -o ${dst} -m ${src} $(GENFW_FLAGS) + +[Microcode-Binary-File] + <InputFile> + *.mcb + + <ExtraDependency> + $(MAKE_FILE) + + <OutputFile> + $(OUTPUT_DIR)(+)$(MODULE_NAME).bin + + <Command> + "$(GENFW)" -o ${dst} -j $(MICROCODE_BINARY_FILES) $(GENFW_FLAGS) + -$(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).bin + +[EFI-Image-File] + <InputFile> + ?.efi, ?.Efi, ?.EFI + + <OutputFile> + + <Command> + +[Unicode-Text-File] + <InputFile> + *.uni, *.Uni, *.UNI + + <OutputFile> + $(DEBUG_DIR)(+)AutoGen.c + $(DEBUG_DIR)(+)$(MODULE_NAME)StrDefs.h + $(OUTPUT_DIR)(+)$(MODULE_NAME)StrDefs.hpk + + <Command> + +[Image-Definition-File] + <InputFile> + *.idf, *.Idf, *.IDF + + <OutputFile> + $(DEBUG_DIR)(+)AutoGen.c + $(DEBUG_DIR)(+)$(MODULE_NAME)ImgDefs.h + $(OUTPUT_DIR)(+)$(MODULE_NAME)Idf.hpk + + <Command> + +[Efi-Image.UEFI_OPTIONROM] + <InputFile> + ?.efi, ?.EFI, ?.Efi + + <OutputFile> + $(BIN_DIR)(+)$(MODULE_NAME_GUID).rom + + <Command> + $(OPTROM) -i $(PCI_DEVICE_ID) -f $(PCI_VENDOR_ID) -l $(PCI_CLASS_CODE) -r $(PCI_REVISION) -o $dst $(OPTROM_FLAGS) $src + +[Unicode-Text-File.UEFI_HII] + <InputFile> + *.uni, *.Uni, *.UNI + + <OutputFile> + $(OUTPUT_DIR)(+)$(MODULE_NAME)StrDefs.hpk + $(DEBUG_DIR)(+)$(MODULE_NAME)StrDefs.h + + <Command> + +[Image-Definition-File.UEFI_HII] + <InputFile> + *.idf, *.Idf, *.IDF + + <OutputFile> + $(DEBUG_DIR)(+)$(MODULE_NAME)ImgDefs.h + $(OUTPUT_DIR)(+)$(MODULE_NAME)Idf.hpk + + <Command> + +[Visual-Form-Representation-File.UEFI_HII] + <InputFile> + ?.vfr + ?.Vfr + ?.VFR + + <ExtraDependency> + $(MAKE_FILE) + + <OutputFile> + $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.hpk + + <Command> + "$(VFRPP)" $(DEPS_FLAGS) $(VFRPP_FLAGS) $(INC) ${src} > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i + "$(VFR)" $(VFR_FLAGS) --create-ifr-package --string-db $(OUTPUT_DIR)(+)$(MODULE_NAME)StrDefs.hpk --output-directory $(OUTPUT_DIR)(+)${s_dir} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i + +[Hii-Binary-Package.UEFI_HII] + <InputFile> + *.hpk + + <OutputFile.MSFT, OutputFile.INTEL, OutputFile.GCC, OutputFile.CLANGPDB> + $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.lib + + <OutputFile.XCODE> + $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc + + <Command.MSFT, Command.INTEL, Command.CLANGPDB> + "$(GENFW)" -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiipackage $(HII_BINARY_PACKAGES) $(GENFW_FLAGS) + "$(RC)" /Fo${dst} $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc + + <Command.GCC> + "$(GENFW)" -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiibinpackage $(HII_BINARY_PACKAGES) $(GENFW_FLAGS) + "$(RC)" $(RC_FLAGS) $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc ${dst} + <Command.XCODE> + "$(GENFW)" -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiibinpackage $(HII_BINARY_PACKAGES) $(GENFW_FLAGS) diff --git a/BaseTools/Conf/gitattributes b/BaseTools/Conf/gitattributes index 319e890641..e7803e87c6 100644 --- a/BaseTools/Conf/gitattributes +++ b/BaseTools/Conf/gitattributes @@ -1,30 +1,30 @@ -#
-# Copyright (c) 2019, Linaro Ltd. All rights reserved.
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-*.efi -diff
-*.EFI -diff
-*.bin -diff
-*.BIN -diff
-*.raw -diff
-*.RAW -diff
-*.bmp -diff
-*.BMP -diff
-*.dec diff=ini
-*.dsc diff=ini
-*.dsc.inc diff=ini
-*.fdf diff=ini
-*.fdf.inc diff=ini
-*.inf diff=ini
-*.c diff=cpp
-*.C diff=cpp
-*.cc diff=cpp
-*.CC diff=cpp
-*.cpp diff=cpp
-*.Cpp diff=cpp
-*.CPP diff=cpp
-*.aslc diff=cpp
-*.act diff=cpp
-*.h diff=cpp
-*.H diff=cpp
+# +# Copyright (c) 2019, Linaro Ltd. All rights reserved. +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +*.efi -diff +*.EFI -diff +*.bin -diff +*.BIN -diff +*.raw -diff +*.RAW -diff +*.bmp -diff +*.BMP -diff +*.dec diff=ini +*.dsc diff=ini +*.dsc.inc diff=ini +*.fdf diff=ini +*.fdf.inc diff=ini +*.inf diff=ini +*.c diff=cpp +*.C diff=cpp +*.cc diff=cpp +*.CC diff=cpp +*.cpp diff=cpp +*.Cpp diff=cpp +*.CPP diff=cpp +*.aslc diff=cpp +*.act diff=cpp +*.h diff=cpp +*.H diff=cpp diff --git a/BaseTools/Conf/target.template b/BaseTools/Conf/target.template index 592febf557..68610c9f9d 100644 --- a/BaseTools/Conf/target.template +++ b/BaseTools/Conf/target.template @@ -1,70 +1,70 @@ -#
-# Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-#
-# ALL Paths are Relative to WORKSPACE
-
-# Separate multiple LIST entries with a SINGLE SPACE character, do not use comma characters.
-# Un-set an option by either commenting out the line, or not setting a value.
-
-#
-# PROPERTY Type Use Description
-# ---------------- -------- -------- -----------------------------------------------------------
-# ACTIVE_PLATFORM Filename Recommended Specify the WORKSPACE relative Path and Filename
-# of the platform description file that will be used for the
-# build. This line is required if and only if the current
-# working directory does not contain one or more description
-# files.
-ACTIVE_PLATFORM = EmulatorPkg/EmulatorPkg.dsc
-
-# TARGET List Optional Zero or more of the following: DEBUG, RELEASE, NOOPT
-# UserDefined; separated by a space character.
-# If the line is missing or no value is specified, all
-# valid targets specified in the platform description file
-# will attempt to be built. The following line will build
-# DEBUG platform target.
-TARGET = DEBUG
-
-# TARGET_ARCH List Optional What kind of architecture is the binary being target for.
-# One, or more, of the following, IA32, IPF, X64, EBC, ARM
-# or AArch64.
-# Multiple values can be specified on a single line, using
-# space characters to separate the values. These are used
-# during the parsing of a platform description file,
-# restricting the build output target(s.)
-# The Build Target ARCH is determined by (precedence high to low):
-# Command-line: -a ARCH option
-# target.txt: TARGET_ARCH values
-# DSC file: [Defines] SUPPORTED_ARCHITECTURES tag
-# If not specified, then all valid architectures specified
-# in the platform file, for which tools are available, will be
-# built.
-TARGET_ARCH = IA32
-
-# TOOL_DEFINITION_FILE Filename Optional Specify the name of the filename to use for specifying
-# the tools to use for the build. If not specified,
-# WORKSPACE/Conf/tools_def.txt will be used for the build.
-TOOL_CHAIN_CONF = Conf/tools_def.txt
-
-# TAGNAME List Optional Specify the name(s) of the tools_def.txt TagName to use.
-# If not specified, all applicable TagName tools will be
-# used for the build. The list uses space character separation.
-TOOL_CHAIN_TAG = VS2019
-
-# MAX_CONCURRENT_THREAD_NUMBER NUMBER Optional The number of concurrent threads. If not specified or set
-# to zero, tool automatically detect number of processor
-# threads. Recommend to set this value to one less than the
-# number of your computer cores or CPUs. When value set to 1,
-# means disable multi-thread build, value set to more than 1,
-# means user specify the thread number to build. Not specify
-# the default value in this file.
-# MAX_CONCURRENT_THREAD_NUMBER = 1
-
-
-# BUILD_RULE_CONF Filename Optional Specify the file name to use for the build rules that are followed
-# when generating Makefiles. If not specified, the file:
-# WORKSPACE/Conf/build_rule.txt will be used
-BUILD_RULE_CONF = Conf/build_rule.txt
-
+# +# Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR> +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +# ALL Paths are Relative to WORKSPACE + +# Separate multiple LIST entries with a SINGLE SPACE character, do not use comma characters. +# Un-set an option by either commenting out the line, or not setting a value. + +# +# PROPERTY Type Use Description +# ---------------- -------- -------- ----------------------------------------------------------- +# ACTIVE_PLATFORM Filename Recommended Specify the WORKSPACE relative Path and Filename +# of the platform description file that will be used for the +# build. This line is required if and only if the current +# working directory does not contain one or more description +# files. +ACTIVE_PLATFORM = EmulatorPkg/EmulatorPkg.dsc + +# TARGET List Optional Zero or more of the following: DEBUG, RELEASE, NOOPT +# UserDefined; separated by a space character. +# If the line is missing or no value is specified, all +# valid targets specified in the platform description file +# will attempt to be built. The following line will build +# DEBUG platform target. +TARGET = DEBUG + +# TARGET_ARCH List Optional What kind of architecture is the binary being target for. +# One, or more, of the following, IA32, IPF, X64, EBC, ARM +# or AArch64. +# Multiple values can be specified on a single line, using +# space characters to separate the values. These are used +# during the parsing of a platform description file, +# restricting the build output target(s.) +# The Build Target ARCH is determined by (precedence high to low): +# Command-line: -a ARCH option +# target.txt: TARGET_ARCH values +# DSC file: [Defines] SUPPORTED_ARCHITECTURES tag +# If not specified, then all valid architectures specified +# in the platform file, for which tools are available, will be +# built. +TARGET_ARCH = IA32 + +# TOOL_DEFINITION_FILE Filename Optional Specify the name of the filename to use for specifying +# the tools to use for the build. If not specified, +# WORKSPACE/Conf/tools_def.txt will be used for the build. +TOOL_CHAIN_CONF = Conf/tools_def.txt + +# TAGNAME List Optional Specify the name(s) of the tools_def.txt TagName to use. +# If not specified, all applicable TagName tools will be +# used for the build. The list uses space character separation. +TOOL_CHAIN_TAG = VS2019 + +# MAX_CONCURRENT_THREAD_NUMBER NUMBER Optional The number of concurrent threads. If not specified or set +# to zero, tool automatically detect number of processor +# threads. Recommend to set this value to one less than the +# number of your computer cores or CPUs. When value set to 1, +# means disable multi-thread build, value set to more than 1, +# means user specify the thread number to build. Not specify +# the default value in this file. +# MAX_CONCURRENT_THREAD_NUMBER = 1 + + +# BUILD_RULE_CONF Filename Optional Specify the file name to use for the build rules that are followed +# when generating Makefiles. If not specified, the file: +# WORKSPACE/Conf/build_rule.txt will be used +BUILD_RULE_CONF = Conf/build_rule.txt + diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template index c34ecfd557..a96bc423e9 100755 --- a/BaseTools/Conf/tools_def.template +++ b/BaseTools/Conf/tools_def.template @@ -1,2270 +1,2270 @@ -#
-# Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
-# Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
-# Portions copyright (c) 2011 - 2019, ARM Ltd. All rights reserved.<BR>
-# Copyright (c) 2015, Hewlett-Packard Development Company, L.P.<BR>
-# (C) Copyright 2020, Hewlett Packard Enterprise Development LP<BR>
-# Copyright (c) 2022, Loongson Technology Corporation Limited. All rights reserved.<BR>
-# Copyright (c) Microsoft Corporation
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-#
-# Increase this version tag any time you want user to get warning about updating this
-# file in the Conf dir. By default it does not do update existing conf dirs.
-#
-# 2.00 - Initial version with changes for CI
-# - Change RC path to use plugin
-# 3.00 - Update toolchains
-# - Add support for ARM and AARCH64 to CLANGDWARF
-# - Remove VS2008, VS2010, VS2012, VS2013, CLANG35, CLANG38, EBC
-# - Add GCC and GCCNOLTO
-# - Deprecate GCC48, GCC49 and GCC5.
-#
-#!VERSION=3.00
-
-IDENTIFIER = Default TOOL_CHAIN_CONF
-
-# common path macros
-DEFINE VS2015_BIN = ENV(VS2015_PREFIX)Vc\bin
-DEFINE VS2015_DLL = ENV(VS2015_PREFIX)Common7\IDE;DEF(VS2015_BIN)
-DEFINE VS2015_BINX64 = DEF(VS2015_BIN)\x86_amd64
-
-DEFINE VS2015x86_BIN = ENV(VS2015_PREFIX)Vc\bin
-DEFINE VS2015x86_DLL = ENV(VS2015_PREFIX)Common7\IDE;DEF(VS2015x86_BIN)
-DEFINE VS2015x86_BINX64 = DEF(VS2015x86_BIN)\x86_amd64
-
-DEFINE VS_HOST = x86
-
-DEFINE VS2017_BIN = ENV(VS2017_PREFIX)bin
-DEFINE VS2017_BIN_HOST = DEF(VS2017_BIN)\HostDEF(VS_HOST)\DEF(VS_HOST)
-DEFINE VS2017_BIN_IA32 = DEF(VS2017_BIN)\HostDEF(VS_HOST)\x86
-DEFINE VS2017_BIN_X64 = DEF(VS2017_BIN)\HostDEF(VS_HOST)\x64
-DEFINE VS2017_BIN_ARM = DEF(VS2017_BIN)\HostDEF(VS_HOST)\arm
-DEFINE VS2017_BIN_AARCH64 = DEF(VS2017_BIN)\HostDEF(VS_HOST)\arm64
-
-DEFINE VS2019_BIN = ENV(VS2019_PREFIX)bin
-DEFINE VS2019_BIN_HOST = DEF(VS2019_BIN)\HostDEF(VS_HOST)\DEF(VS_HOST)
-DEFINE VS2019_BIN_IA32 = DEF(VS2019_BIN)\HostDEF(VS_HOST)\x86
-DEFINE VS2019_BIN_X64 = DEF(VS2019_BIN)\HostDEF(VS_HOST)\x64
-DEFINE VS2019_BIN_ARM = DEF(VS2019_BIN)\HostDEF(VS_HOST)\arm
-DEFINE VS2019_BIN_AARCH64 = DEF(VS2019_BIN)\HostDEF(VS_HOST)\arm64
-
-#
-# Resource compiler
-#
-DEFINE RC_PATH = ENV(WINSDK_PATH_FOR_RC_EXE)\rc.exe
-
-DEFINE WINSDK_BIN = ENV(WINSDK_PREFIX)
-DEFINE WINSDKx86_BIN = ENV(WINSDKx86_PREFIX)
-
-# Microsoft Visual Studio 2015 Professional Edition
-DEFINE WINSDK81_BIN = ENV(WINSDK81_PREFIX)x86\
-DEFINE WINSDK81x86_BIN = ENV(WINSDK81x86_PREFIX)x64
-
-# Microsoft Visual Studio 2017/2019 Professional Edition
-DEFINE WINSDK10_BIN = ENV(WINSDK10_PREFIX)DEF(VS_HOST)
-
-# These defines are needed for certain Microsoft Visual Studio tools that
-# are used by other toolchains. An example is that ICC on Windows normally
-# uses Microsoft's nmake.exe.
-
-DEFINE WINDDK_BIN16 = ENV(WINDDK3790_PREFIX)bin16
-DEFINE WINDDK_BINX64 = ENV(WINDDK3790_PREFIX)win64\x86\amd64
-
-DEFINE CYGWIN_BIN = c:/cygwin/bin
-DEFINE CYGWIN_BINIA32 = c:/cygwin/opt/tiano/i386-tiano-pe/i386-tiano-pe/bin/
-DEFINE CYGWIN_BINX64 = c:/cygwin/opt/tiano/x86_64-pc-mingw64/x86_64-pc-mingw64/bin/
-
-DEFINE GCC48_IA32_PREFIX = ENV(GCC48_BIN)
-DEFINE GCC48_X64_PREFIX = ENV(GCC48_BIN)
-
-DEFINE GCC49_IA32_PREFIX = ENV(GCC49_BIN)
-DEFINE GCC49_X64_PREFIX = ENV(GCC49_BIN)
-
-DEFINE GCCNOLTO_IA32_PREFIX = ENV(GCCNOLTO_BIN)
-DEFINE GCCNOLTO_X64_PREFIX = ENV(GCCNOLTO_BIN)
-
-DEFINE GCC5_IA32_PREFIX = ENV(GCC5_BIN)
-DEFINE GCC5_X64_PREFIX = ENV(GCC5_BIN)
-DEFINE GCC_IA32_PREFIX = ENV(GCC_BIN)
-DEFINE GCC_X64_PREFIX = ENV(GCC_BIN)
-DEFINE GCC_HOST_PREFIX = ENV(GCC_HOST_BIN)
-
-DEFINE UNIX_IASL_BIN = ENV(IASL_PREFIX)iasl
-DEFINE WIN_IASL_BIN = ENV(IASL_PREFIX)iasl.exe
-
-DEFINE IASL_FLAGS =
-DEFINE IASL_OUTFLAGS = -p
-
-DEFINE DEFAULT_WIN_ASL_BIN = DEF(WIN_IASL_BIN)
-DEFINE DEFAULT_WIN_ASL_FLAGS = DEF(IASL_FLAGS)
-DEFINE DEFAULT_WIN_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS)
-
-# MSFT Build Flag for included header file list generation
-DEFINE MSFT_DEPS_FLAGS = /showIncludes
-
-DEFINE MSFT_ASLPP_FLAGS = /nologo /E /C /FIAutoGen.h
-DEFINE MSFT_ASLCC_FLAGS = /nologo /c /FIAutoGen.h /TC /Dmain=ReferenceAcpiTable
-DEFINE MSFT_ASLDLINK_FLAGS = /NODEFAULTLIB /ENTRY:ReferenceAcpiTable /SUBSYSTEM:CONSOLE
-
-DEFINE DTCPP_BIN = ENV(DTCPP_PREFIX)cpp
-DEFINE DTC_BIN = ENV(DTC_PREFIX)dtc
-
-####################################################################################
-#
-# format: TARGET_TOOLCHAIN_ARCH_COMMANDTYPE_ATTRIBUTE = <string>
-# priority:
-# TARGET_TOOLCHAIN_ARCH_COMMANDTYPE_ATTRIBUTE (Highest)
-# ******_TOOLCHAIN_ARCH_COMMANDTYPE_ATTRIBUTE
-# TARGET_*********_ARCH_COMMANDTYPE_ATTRIBUTE
-# ******_*********_ARCH_COMMANDTYPE_ATTRIBUTE
-# TARGET_TOOLCHAIN_****_COMMANDTYPE_ATTRIBUTE
-# ******_TOOLCHAIN_****_COMMANDTYPE_ATTRIBUTE
-# TARGET_*********_****_COMMANDTYPE_ATTRIBUTE
-# ******_*********_****_COMMANDTYPE_ATTRIBUTE
-# TARGET_TOOLCHAIN_ARCH_***********_ATTRIBUTE
-# ******_TOOLCHAIN_ARCH_***********_ATTRIBUTE
-# TARGET_*********_ARCH_***********_ATTRIBUTE
-# ******_*********_ARCH_***********_ATTRIBUTE
-# TARGET_TOOLCHAIN_****_***********_ATTRIBUTE
-# ******_TOOLCHAIN_****_***********_ATTRIBUTE
-# TARGET_*********_****_***********_ATTRIBUTE
-# ******_*********_****_***********_ATTRIBUTE (Lowest)
-#
-####################################################################################
-####################################################################################
-#
-# Supported Tool Chains
-# =====================
-# VS2015 -win32- Requires:
-# Microsoft Visual Studio 2015 Professional Edition, Update 3
-# Optional:
-# Required to build platforms or ACPI tables:
-# Intel(r) ACPI Compiler (iasl.exe) from
-# https://acpica.org/downloads
-# VS2017 -win32- Requires:
-# Microsoft Visual Studio 2017 version 15.2 (15.4 for ARM64) or later
-# Optional:
-# Required to build platforms or ACPI tables:
-# Intel(r) ACPI Compiler (iasl.exe) from
-# https://acpica.org/downloads
-# Note:
-# Building of XIP firmware images for ARM/ARM64 is not currently supported (only applications).
-# /FILEALIGN:4096 and other changes are needed for ARM firmware builds.
-# VS2019 -win32- Requires:
-# Microsoft Visual Studio 2019 version 16.2 or later
-# Optional:
-# Required to build platforms or ACPI tables:
-# Intel(r) ACPI Compiler (iasl.exe) from
-# https://acpica.org/downloads
-# Note:
-# Building of XIP firmware images for ARM/ARM64 is not currently supported (only applications).
-# /FILEALIGN:4096 and other changes are needed for ARM firmware builds.
-# GCCNOLTO -Linux,Windows- Requires:
-# GCC 4.9 targeting x86_64-linux-gnu, aarch64-linux-gnu, or arm-linux-gnueabi
-# Optional:
-# Required to build platforms or ACPI tables:
-# Intel(r) ACPI Compiler from
-# https://acpica.org/downloads
-# GCC -Linux,Windows- Requires:
-# GCC 5 with LTO support, targeting x86_64-linux-gnu, aarch64-linux-gnu, arm-linux-gnueabi, riscv64-linux-gnu or loongarch64-linux-gnu
-# Optional:
-# Required to build platforms or ACPI tables:
-# Intel(r) ACPI Compiler from
-# https://acpica.org/downloads
-#
-# CLANGPDB -Linux, Windows, Mac- Requires:
-# Clang 9 or above from http://releases.llvm.org/
-# Optional:
-# Required to compile nasm source:
-# nasm compiler from
-# NASM -- http://www.nasm.us/
-# CLANGDWARF -Linux, Windows, Mac- Requires:
-# Clang 9 or above from http://releases.llvm.org/
-# Optional:
-# Required to compile nasm source:
-# nasm compiler from
-# NASM -- http://www.nasm.us/
-# VS2015x86 -win64- Requires:
-# Microsoft Visual Studio 2015 (x86) Update 3 or above
-# Optional:
-# Required to build platforms or ACPI tables:
-# Intel(r) ACPI Compiler (iasl.exe) from
-# https://acpica.org/downloads
-#
-# Deprecated Tool Chains
-# ======================
-# GCC48 -Linux,Windows- Requires:
-# GCC 4.8 targeting x86_64-linux-gnu, aarch64-linux-gnu, or arm-linux-gnueabi
-# Optional:
-# Required to build platforms or ACPI tables:
-# Intel(r) ACPI Compiler from
-# https://acpica.org/downloads
-# GCC49 -Linux,Windows- Requires:
-# GCC 4.9 targeting x86_64-linux-gnu, aarch64-linux-gnu, or arm-linux-gnueabi
-# Optional:
-# Required to build platforms or ACPI tables:
-# Intel(r) ACPI Compiler from
-# https://acpica.org/downloads
-# GCC5 -Linux,Windows- Requires:
-# GCC 5 with LTO support, targeting x86_64-linux-gnu, aarch64-linux-gnu, arm-linux-gnueabi, riscv64-linux-gnu or loongarch64-linux-gnu
-# Optional:
-# Required to build platforms or ACPI tables:
-# Intel(r) ACPI Compiler from
-# https://acpica.org/downloads
-#
-####################################################################################
-####################################################################################
-#
-# Supported Tool Chain Family
-# ===========================
-# MSFT - Microsoft
-# GCC - GNU GCC
-# INTEL - INTEL
-####################################################################################
-####################################################################################
-#
-# Other Supported Tools
-# =====================
-# NASM -- http://www.nasm.us/
-# - NASM 2.15.05 or later for use with the GCC toolchain family
-# - NASM 2.15.05 or later for use with all other toolchain families
-#
-####################################################################################
-####################################################################################
-#
-# Intel ACPI Source Language Compiler (Template)
-#
-####################################################################################
-# *_*_*_ASL_FAMILY = INTEL
-#
-# *_*_*_ASL_PATH = C:\ASL\iasl.exe
-#
-####################################################################################
-#
-# Microsoft ACPI Source Language Compiler (Template)
-#
-####################################################################################
-# *_*_*_ASL_FAMILY = MSFT
-#
-# *_*_*_ASL_PATH = C:\ASL\asl.exe
-#
-####################################################################################
-
-####################################################################################
-#
-# Microsoft Visual Studio 2015
-#
-# VS2015 - Microsoft Visual Studio 2015 Professional Edition with Intel ASL
-# ASL - Intel ACPI Source Language Compiler
-####################################################################################
-# VS2015 - Microsoft Visual Studio 2015 Professional Edition
-*_VS2015_*_*_FAMILY = MSFT
-
-*_VS2015_*_MAKE_PATH = DEF(VS2015_BIN)\nmake.exe
-*_VS2015_*_MAKE_FLAGS = /nologo
-*_VS2015_*_RC_PATH = DEF(WINSDK81_BIN)\rc.exe
-
-*_VS2015_*_SLINK_FLAGS = /NOLOGO /LTCG
-*_VS2015_*_APP_FLAGS = /nologo /E /TC
-*_VS2015_*_PP_FLAGS = /nologo /E /TC /FIAutoGen.h
-*_VS2015_*_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h
-*_VS2015_*_DLINK2_FLAGS =
-*_VS2015_*_DEPS_FLAGS = DEF(MSFT_DEPS_FLAGS)
-*_VS2015_*_ASM16_PATH = DEF(VS2015_BIN)\ml.exe
-
-##################
-# ASL definitions
-##################
-*_VS2015_*_ASL_PATH = DEF(DEFAULT_WIN_ASL_BIN)
-*_VS2015_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS)
-*_VS2015_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS)
-*_VS2015_*_ASLCC_FLAGS = DEF(MSFT_ASLCC_FLAGS)
-*_VS2015_*_ASLPP_FLAGS = DEF(MSFT_ASLPP_FLAGS)
-*_VS2015_*_ASLDLINK_FLAGS = DEF(MSFT_ASLDLINK_FLAGS)
-
-##################
-# IA32 definitions
-##################
-*_VS2015_IA32_*_DLL = DEF(VS2015_DLL)
-
-*_VS2015_IA32_CC_PATH = DEF(VS2015_BIN)\cl.exe
-*_VS2015_IA32_VFRPP_PATH = DEF(VS2015_BIN)\cl.exe
-*_VS2015_IA32_SLINK_PATH = DEF(VS2015_BIN)\lib.exe
-*_VS2015_IA32_DLINK_PATH = DEF(VS2015_BIN)\link.exe
-*_VS2015_IA32_APP_PATH = DEF(VS2015_BIN)\cl.exe
-*_VS2015_IA32_PP_PATH = DEF(VS2015_BIN)\cl.exe
-*_VS2015_IA32_ASM_PATH = DEF(VS2015_BIN)\ml.exe
-*_VS2015_IA32_ASLCC_PATH = DEF(VS2015_BIN)\cl.exe
-*_VS2015_IA32_ASLPP_PATH = DEF(VS2015_BIN)\cl.exe
-*_VS2015_IA32_ASLDLINK_PATH = DEF(VS2015_BIN)\link.exe
-
- DEBUG_VS2015_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Gw
-RELEASE_VS2015_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw
-NOOPT_VS2015_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od
-
- DEBUG_VS2015_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
-RELEASE_VS2015_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd
-NOOPT_VS2015_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
-
- DEBUG_VS2015_IA32_NASM_FLAGS = -Ox -f win32 -g
-RELEASE_VS2015_IA32_NASM_FLAGS = -Ox -f win32
-NOOPT_VS2015_IA32_NASM_FLAGS = -O0 -f win32 -g
-
- DEBUG_VS2015_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-RELEASE_VS2015_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2015_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-
-##################
-# X64 definitions
-##################
-*_VS2015_X64_*_DLL = DEF(VS2015_DLL)
-
-*_VS2015_X64_CC_PATH = DEF(VS2015_BINX64)\cl.exe
-*_VS2015_X64_PP_PATH = DEF(VS2015_BINX64)\cl.exe
-*_VS2015_X64_APP_PATH = DEF(VS2015_BINX64)\cl.exe
-*_VS2015_X64_VFRPP_PATH = DEF(VS2015_BINX64)\cl.exe
-*_VS2015_X64_ASM_PATH = DEF(VS2015_BINX64)\ml64.exe
-*_VS2015_X64_SLINK_PATH = DEF(VS2015_BINX64)\lib.exe
-*_VS2015_X64_DLINK_PATH = DEF(VS2015_BINX64)\link.exe
-*_VS2015_X64_ASLCC_PATH = DEF(VS2015_BINX64)\cl.exe
-*_VS2015_X64_ASLPP_PATH = DEF(VS2015_BINX64)\cl.exe
-*_VS2015_X64_ASLDLINK_PATH = DEF(VS2015_BINX64)\link.exe
-
- DEBUG_VS2015_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Gw
-RELEASE_VS2015_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Gw
-NOOPT_VS2015_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od
-
- DEBUG_VS2015_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi
-RELEASE_VS2015_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd
-NOOPT_VS2015_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi
-
- DEBUG_VS2015_X64_NASM_FLAGS = -Ox -f win64 -g
-RELEASE_VS2015_X64_NASM_FLAGS = -Ox -f win64
-NOOPT_VS2015_X64_NASM_FLAGS = -O0 -f win64 -g
-
- DEBUG_VS2015_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-RELEASE_VS2015_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2015_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-
-####################################################################################
-# VS2015x86 - Microsoft Visual Studio 2015 (x86) professional with Intel ASL
-# ASL - Intel ACPI Source Language Compiler (iasl.exe)
-####################################################################################
-# VS2015x86 - Microsoft Visual Studio 2015 (x86) professional Edition with Intel ASL
-*_VS2015x86_*_*_FAMILY = MSFT
-
-*_VS2015x86_*_MAKE_PATH = DEF(VS2015x86_BIN)\nmake.exe
-*_VS2015x86_*_MAKE_FLAGS = /nologo
-*_VS2015x86_*_RC_PATH = DEF(WINSDK81x86_BIN)\rc.exe
-
-*_VS2015x86_*_SLINK_FLAGS = /NOLOGO /LTCG
-*_VS2015x86_*_APP_FLAGS = /nologo /E /TC
-*_VS2015x86_*_PP_FLAGS = /nologo /E /TC /FIAutoGen.h
-*_VS2015x86_*_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h
-*_VS2015x86_*_DLINK2_FLAGS =
-*_VS2015x86_*_DEPS_FLAGS = DEF(MSFT_DEPS_FLAGS)
-*_VS2015x86_*_ASM16_PATH = DEF(VS2015x86_BIN)\ml.exe
-
-##################
-# ASL definitions
-##################
-*_VS2015x86_*_ASL_PATH = DEF(WIN_IASL_BIN)
-*_VS2015x86_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS)
-*_VS2015x86_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS)
-*_VS2015x86_*_ASLCC_FLAGS = DEF(MSFT_ASLCC_FLAGS)
-*_VS2015x86_*_ASLPP_FLAGS = DEF(MSFT_ASLPP_FLAGS)
-*_VS2015x86_*_ASLDLINK_FLAGS = DEF(MSFT_ASLDLINK_FLAGS)
-
-##################
-# IA32 definitions
-##################
-*_VS2015x86_IA32_*_DLL = DEF(VS2015x86_DLL)
-
-*_VS2015x86_IA32_CC_PATH = DEF(VS2015x86_BIN)\cl.exe
-*_VS2015x86_IA32_VFRPP_PATH = DEF(VS2015x86_BIN)\cl.exe
-*_VS2015x86_IA32_ASLCC_PATH = DEF(VS2015x86_BIN)\cl.exe
-*_VS2015x86_IA32_ASLPP_PATH = DEF(VS2015x86_BIN)\cl.exe
-*_VS2015x86_IA32_SLINK_PATH = DEF(VS2015x86_BIN)\lib.exe
-*_VS2015x86_IA32_DLINK_PATH = DEF(VS2015x86_BIN)\link.exe
-*_VS2015x86_IA32_ASLDLINK_PATH= DEF(VS2015x86_BIN)\link.exe
-*_VS2015x86_IA32_APP_PATH = DEF(VS2015x86_BIN)\cl.exe
-*_VS2015x86_IA32_PP_PATH = DEF(VS2015x86_BIN)\cl.exe
-*_VS2015x86_IA32_ASM_PATH = DEF(VS2015x86_BIN)\ml.exe
-
- DEBUG_VS2015x86_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Gw
-RELEASE_VS2015x86_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw
-NOOPT_VS2015x86_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od
-
- DEBUG_VS2015x86_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
-RELEASE_VS2015x86_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd
-NOOPT_VS2015x86_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
-
- DEBUG_VS2015x86_IA32_NASM_FLAGS = -Ox -f win32 -g
-RELEASE_VS2015x86_IA32_NASM_FLAGS = -Ox -f win32
-NOOPT_VS2015x86_IA32_NASM_FLAGS = -O0 -f win32 -g
-
- DEBUG_VS2015x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-RELEASE_VS2015x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2015x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-
-##################
-# X64 definitions
-##################
-*_VS2015x86_X64_*_DLL = DEF(VS2015x86_DLL)
-
-*_VS2015x86_X64_CC_PATH = DEF(VS2015x86_BINX64)\cl.exe
-*_VS2015x86_X64_PP_PATH = DEF(VS2015x86_BINX64)\cl.exe
-*_VS2015x86_X64_APP_PATH = DEF(VS2015x86_BINX64)\cl.exe
-*_VS2015x86_X64_VFRPP_PATH = DEF(VS2015x86_BINX64)\cl.exe
-*_VS2015x86_X64_ASLCC_PATH = DEF(VS2015x86_BINX64)\cl.exe
-*_VS2015x86_X64_ASLPP_PATH = DEF(VS2015x86_BINX64)\cl.exe
-*_VS2015x86_X64_ASM_PATH = DEF(VS2015x86_BINX64)\ml64.exe
-*_VS2015x86_X64_SLINK_PATH = DEF(VS2015x86_BINX64)\lib.exe
-*_VS2015x86_X64_DLINK_PATH = DEF(VS2015x86_BINX64)\link.exe
-*_VS2015x86_X64_ASLDLINK_PATH = DEF(VS2015x86_BINX64)\link.exe
-
- DEBUG_VS2015x86_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Gw
-RELEASE_VS2015x86_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Gw
-NOOPT_VS2015x86_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od
-
- DEBUG_VS2015x86_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi
-RELEASE_VS2015x86_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd
-NOOPT_VS2015x86_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi
-
- DEBUG_VS2015x86_X64_NASM_FLAGS = -Ox -f win64 -g
-RELEASE_VS2015x86_X64_NASM_FLAGS = -Ox -f win64
-NOOPT_VS2015x86_X64_NASM_FLAGS = -O0 -f win64 -g
-
- DEBUG_VS2015x86_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-RELEASE_VS2015x86_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2015x86_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-
-####################################################################################
-# VS2017 - Microsoft Visual Studio 2017 with Intel ASL
-# ASL - Intel ACPI Source Language Compiler (iasl.exe)
-####################################################################################
-# VS2017 - Microsoft Visual Studio 2017 professional Edition with Intel ASL
-*_VS2017_*_*_FAMILY = MSFT
-*_VS2017_*_*_DLL = DEF(VS2017_BIN_HOST)
-
-*_VS2017_*_MAKE_PATH = DEF(VS2017_BIN_HOST)\nmake.exe
-*_VS2017_*_MAKE_FLAGS = /nologo
-*_VS2017_*_RC_PATH = DEF(RC_PATH)
-
-*_VS2017_*_SLINK_FLAGS = /NOLOGO /LTCG
-*_VS2017_*_APP_FLAGS = /nologo /E /TC
-*_VS2017_*_PP_FLAGS = /nologo /E /TC /FIAutoGen.h
-*_VS2017_*_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h
-*_VS2017_*_DLINK2_FLAGS = /WHOLEARCHIVE
-*_VS2017_*_ASM16_PATH = DEF(VS2017_BIN_IA32)\ml.exe
-*_VS2017_*_DEPS_FLAGS = DEF(MSFT_DEPS_FLAGS)
-##################
-# ASL definitions
-##################
-*_VS2017_*_ASL_PATH = DEF(WIN_IASL_BIN)
-*_VS2017_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS)
-*_VS2017_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS)
-*_VS2017_*_ASLCC_FLAGS = DEF(MSFT_ASLCC_FLAGS)
-*_VS2017_*_ASLPP_FLAGS = DEF(MSFT_ASLPP_FLAGS)
-*_VS2017_*_ASLDLINK_FLAGS = DEF(MSFT_ASLDLINK_FLAGS)
-
-##################
-# IA32 definitions
-##################
-*_VS2017_IA32_CC_PATH = DEF(VS2017_BIN_IA32)\cl.exe
-*_VS2017_IA32_VFRPP_PATH = DEF(VS2017_BIN_IA32)\cl.exe
-*_VS2017_IA32_ASLCC_PATH = DEF(VS2017_BIN_IA32)\cl.exe
-*_VS2017_IA32_ASLPP_PATH = DEF(VS2017_BIN_IA32)\cl.exe
-*_VS2017_IA32_SLINK_PATH = DEF(VS2017_BIN_IA32)\lib.exe
-*_VS2017_IA32_DLINK_PATH = DEF(VS2017_BIN_IA32)\link.exe
-*_VS2017_IA32_ASLDLINK_PATH= DEF(VS2017_BIN_IA32)\link.exe
-*_VS2017_IA32_APP_PATH = DEF(VS2017_BIN_IA32)\cl.exe
-*_VS2017_IA32_PP_PATH = DEF(VS2017_BIN_IA32)\cl.exe
-*_VS2017_IA32_ASM_PATH = DEF(VS2017_BIN_IA32)\ml.exe
-
- DEBUG_VS2017_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Gw
-RELEASE_VS2017_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw
-NOOPT_VS2017_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od
-
- DEBUG_VS2017_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
-RELEASE_VS2017_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd
-NOOPT_VS2017_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
-
- DEBUG_VS2017_IA32_NASM_FLAGS = -Ox -f win32 -g
-RELEASE_VS2017_IA32_NASM_FLAGS = -Ox -f win32
-NOOPT_VS2017_IA32_NASM_FLAGS = -O0 -f win32 -g
-
- DEBUG_VS2017_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-RELEASE_VS2017_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2017_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-
-##################
-# X64 definitions
-##################
-*_VS2017_X64_CC_PATH = DEF(VS2017_BIN_X64)\cl.exe
-*_VS2017_X64_PP_PATH = DEF(VS2017_BIN_X64)\cl.exe
-*_VS2017_X64_APP_PATH = DEF(VS2017_BIN_X64)\cl.exe
-*_VS2017_X64_VFRPP_PATH = DEF(VS2017_BIN_X64)\cl.exe
-*_VS2017_X64_ASLCC_PATH = DEF(VS2017_BIN_X64)\cl.exe
-*_VS2017_X64_ASLPP_PATH = DEF(VS2017_BIN_X64)\cl.exe
-*_VS2017_X64_ASM_PATH = DEF(VS2017_BIN_X64)\ml64.exe
-*_VS2017_X64_SLINK_PATH = DEF(VS2017_BIN_X64)\lib.exe
-*_VS2017_X64_DLINK_PATH = DEF(VS2017_BIN_X64)\link.exe
-*_VS2017_X64_ASLDLINK_PATH = DEF(VS2017_BIN_X64)\link.exe
-
- DEBUG_VS2017_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Gw
-RELEASE_VS2017_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Gw
-NOOPT_VS2017_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od
-
- DEBUG_VS2017_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi
-RELEASE_VS2017_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd
-NOOPT_VS2017_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi
-
- DEBUG_VS2017_X64_NASM_FLAGS = -Ox -f win64 -g
-RELEASE_VS2017_X64_NASM_FLAGS = -Ox -f win64
-NOOPT_VS2017_X64_NASM_FLAGS = -O0 -f win64 -g
-
- DEBUG_VS2017_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4281 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-RELEASE_VS2017_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4281 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2017_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4281 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-
-#################
-# ARM definitions
-#################
-*_VS2017_ARM_CC_PATH = DEF(VS2017_BIN_ARM)\cl.exe
-*_VS2017_ARM_VFRPP_PATH = DEF(VS2017_BIN_ARM)\cl.exe
-*_VS2017_ARM_SLINK_PATH = DEF(VS2017_BIN_ARM)\lib.exe
-*_VS2017_ARM_DLINK_PATH = DEF(VS2017_BIN_ARM)\link.exe
-*_VS2017_ARM_APP_PATH = DEF(VS2017_BIN_ARM)\cl.exe
-*_VS2017_ARM_PP_PATH = DEF(VS2017_BIN_ARM)\cl.exe
-*_VS2017_ARM_ASM_PATH = DEF(VS2017_BIN_ARM)\armasm.exe
-*_VS2017_ARM_ASLCC_PATH = DEF(VS2017_BIN_ARM)\cl.exe
-*_VS2017_ARM_ASLPP_PATH = DEF(VS2017_BIN_ARM)\cl.exe
-*_VS2017_ARM_ASLDLINK_PATH = DEF(VS2017_BIN_ARM)\link.exe
-
- DEBUG_VS2017_ARM_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gw /Oi-
-RELEASE_VS2017_ARM_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw /Oi-
-NOOPT_VS2017_ARM_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Od /Oi-
-
- DEBUG_VS2017_ARM_ASM_FLAGS = /nologo /g
-RELEASE_VS2017_ARM_ASM_FLAGS = /nologo
-NOOPT_VS2017_ARM_ASM_FLAGS = /nologo
-
- DEBUG_VS2017_ARM_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-RELEASE_VS2017_ARM_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2017_ARM_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-
-#####################
-# AARCH64 definitions
-#####################
-*_VS2017_AARCH64_CC_PATH = DEF(VS2017_BIN_AARCH64)\cl.exe
-*_VS2017_AARCH64_VFRPP_PATH = DEF(VS2017_BIN_AARCH64)\cl.exe
-*_VS2017_AARCH64_SLINK_PATH = DEF(VS2017_BIN_AARCH64)\lib.exe
-*_VS2017_AARCH64_DLINK_PATH = DEF(VS2017_BIN_AARCH64)\link.exe
-*_VS2017_AARCH64_APP_PATH = DEF(VS2017_BIN_AARCH64)\cl.exe
-*_VS2017_AARCH64_PP_PATH = DEF(VS2017_BIN_AARCH64)\cl.exe
-*_VS2017_AARCH64_ASM_PATH = DEF(VS2017_BIN_AARCH64)\armasm64.exe
-*_VS2017_AARCH64_ASLCC_PATH = DEF(VS2017_BIN_AARCH64)\cl.exe
-*_VS2017_AARCH64_ASLPP_PATH = DEF(VS2017_BIN_AARCH64)\cl.exe
-*_VS2017_AARCH64_ASLDLINK_PATH = DEF(VS2017_BIN_AARCH64)\link.exe
-
- DEBUG_VS2017_AARCH64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gw /Oi-
-RELEASE_VS2017_AARCH64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw /Oi-
-NOOPT_VS2017_AARCH64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Od /Oi-
-
- DEBUG_VS2017_AARCH64_ASM_FLAGS = /nologo /g
-RELEASE_VS2017_AARCH64_ASM_FLAGS = /nologo
-NOOPT_VS2017_AARCH64_ASM_FLAGS = /nologo
-
- DEBUG_VS2017_AARCH64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /DRIVER /DEBUG
-RELEASE_VS2017_AARCH64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2017_AARCH64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /DRIVER /DEBUG
-
-####################################################################################
-# VS2019 - Microsoft Visual Studio 2019 with Intel ASL
-# ASL - Intel ACPI Source Language Compiler (iasl.exe)
-####################################################################################
-# VS2019 - Microsoft Visual Studio 2017 professional Edition with Intel ASL
-*_VS2019_*_*_FAMILY = MSFT
-*_VS2019_*_*_DLL = DEF(VS2019_BIN_HOST)
-
-*_VS2019_*_MAKE_PATH = DEF(VS2019_BIN_HOST)\nmake.exe
-*_VS2019_*_MAKE_FLAGS = /nologo
-*_VS2019_*_RC_PATH = DEF(RC_PATH)
-
-*_VS2019_*_SLINK_FLAGS = /NOLOGO /LTCG
-*_VS2019_*_APP_FLAGS = /nologo /E /TC
-*_VS2019_*_PP_FLAGS = /nologo /E /TC /FIAutoGen.h
-*_VS2019_*_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h
-*_VS2019_*_DLINK2_FLAGS = /WHOLEARCHIVE
-*_VS2019_*_ASM16_PATH = DEF(VS2019_BIN_IA32)\ml.exe
-*_VS2019_*_DEPS_FLAGS = DEF(MSFT_DEPS_FLAGS)
-##################
-# ASL definitions
-##################
-*_VS2019_*_ASL_PATH = DEF(WIN_IASL_BIN)
-*_VS2019_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS)
-*_VS2019_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS)
-*_VS2019_*_ASLCC_FLAGS = DEF(MSFT_ASLCC_FLAGS)
-*_VS2019_*_ASLPP_FLAGS = DEF(MSFT_ASLPP_FLAGS)
-*_VS2019_*_ASLDLINK_FLAGS = DEF(MSFT_ASLDLINK_FLAGS)
-
-##################
-# IA32 definitions
-##################
-*_VS2019_IA32_CC_PATH = DEF(VS2019_BIN_IA32)\cl.exe
-*_VS2019_IA32_VFRPP_PATH = DEF(VS2019_BIN_IA32)\cl.exe
-*_VS2019_IA32_ASLCC_PATH = DEF(VS2019_BIN_IA32)\cl.exe
-*_VS2019_IA32_ASLPP_PATH = DEF(VS2019_BIN_IA32)\cl.exe
-*_VS2019_IA32_SLINK_PATH = DEF(VS2019_BIN_IA32)\lib.exe
-*_VS2019_IA32_DLINK_PATH = DEF(VS2019_BIN_IA32)\link.exe
-*_VS2019_IA32_ASLDLINK_PATH= DEF(VS2019_BIN_IA32)\link.exe
-*_VS2019_IA32_APP_PATH = DEF(VS2019_BIN_IA32)\cl.exe
-*_VS2019_IA32_PP_PATH = DEF(VS2019_BIN_IA32)\cl.exe
-*_VS2019_IA32_ASM_PATH = DEF(VS2019_BIN_IA32)\ml.exe
-
- DEBUG_VS2019_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Gw
-RELEASE_VS2019_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw
-NOOPT_VS2019_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od
-
- DEBUG_VS2019_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
-RELEASE_VS2019_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd
-NOOPT_VS2019_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
-
- DEBUG_VS2019_IA32_NASM_FLAGS = -Ox -f win32 -g
-RELEASE_VS2019_IA32_NASM_FLAGS = -Ox -f win32
-NOOPT_VS2019_IA32_NASM_FLAGS = -O0 -f win32 -g
-
- DEBUG_VS2019_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-RELEASE_VS2019_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2019_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-
-##################
-# X64 definitions
-##################
-*_VS2019_X64_CC_PATH = DEF(VS2019_BIN_X64)\cl.exe
-*_VS2019_X64_PP_PATH = DEF(VS2019_BIN_X64)\cl.exe
-*_VS2019_X64_APP_PATH = DEF(VS2019_BIN_X64)\cl.exe
-*_VS2019_X64_VFRPP_PATH = DEF(VS2019_BIN_X64)\cl.exe
-*_VS2019_X64_ASLCC_PATH = DEF(VS2019_BIN_X64)\cl.exe
-*_VS2019_X64_ASLPP_PATH = DEF(VS2019_BIN_X64)\cl.exe
-*_VS2019_X64_ASM_PATH = DEF(VS2019_BIN_X64)\ml64.exe
-*_VS2019_X64_SLINK_PATH = DEF(VS2019_BIN_X64)\lib.exe
-*_VS2019_X64_DLINK_PATH = DEF(VS2019_BIN_X64)\link.exe
-*_VS2019_X64_ASLDLINK_PATH = DEF(VS2019_BIN_X64)\link.exe
-
- DEBUG_VS2019_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Gw
-RELEASE_VS2019_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Gw
-NOOPT_VS2019_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od
-
- DEBUG_VS2019_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi
-RELEASE_VS2019_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd
-NOOPT_VS2019_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi
-
- DEBUG_VS2019_X64_NASM_FLAGS = -Ox -f win64 -g
-RELEASE_VS2019_X64_NASM_FLAGS = -Ox -f win64
-NOOPT_VS2019_X64_NASM_FLAGS = -O0 -f win64 -g
-
- DEBUG_VS2019_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4281 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-RELEASE_VS2019_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4281 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2019_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4281 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-
-#################
-# ARM definitions
-#################
-*_VS2019_ARM_CC_PATH = DEF(VS2019_BIN_ARM)\cl.exe
-*_VS2019_ARM_VFRPP_PATH = DEF(VS2019_BIN_ARM)\cl.exe
-*_VS2019_ARM_SLINK_PATH = DEF(VS2019_BIN_ARM)\lib.exe
-*_VS2019_ARM_DLINK_PATH = DEF(VS2019_BIN_ARM)\link.exe
-*_VS2019_ARM_APP_PATH = DEF(VS2019_BIN_ARM)\cl.exe
-*_VS2019_ARM_PP_PATH = DEF(VS2019_BIN_ARM)\cl.exe
-*_VS2019_ARM_ASM_PATH = DEF(VS2019_BIN_ARM)\armasm.exe
-*_VS2019_ARM_ASLCC_PATH = DEF(VS2019_BIN_ARM)\cl.exe
-*_VS2019_ARM_ASLPP_PATH = DEF(VS2019_BIN_ARM)\cl.exe
-*_VS2019_ARM_ASLDLINK_PATH = DEF(VS2019_BIN_ARM)\link.exe
-
- DEBUG_VS2019_ARM_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gw /Oi-
-RELEASE_VS2019_ARM_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw /Oi-
-NOOPT_VS2019_ARM_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Od /Oi-
-
- DEBUG_VS2019_ARM_ASM_FLAGS = /nologo /g
-RELEASE_VS2019_ARM_ASM_FLAGS = /nologo
-NOOPT_VS2019_ARM_ASM_FLAGS = /nologo
-
- DEBUG_VS2019_ARM_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-RELEASE_VS2019_ARM_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2019_ARM_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-
-#####################
-# AARCH64 definitions
-#####################
-*_VS2019_AARCH64_CC_PATH = DEF(VS2019_BIN_AARCH64)\cl.exe
-*_VS2019_AARCH64_VFRPP_PATH = DEF(VS2019_BIN_AARCH64)\cl.exe
-*_VS2019_AARCH64_SLINK_PATH = DEF(VS2019_BIN_AARCH64)\lib.exe
-*_VS2019_AARCH64_DLINK_PATH = DEF(VS2019_BIN_AARCH64)\link.exe
-*_VS2019_AARCH64_APP_PATH = DEF(VS2019_BIN_AARCH64)\cl.exe
-*_VS2019_AARCH64_PP_PATH = DEF(VS2019_BIN_AARCH64)\cl.exe
-*_VS2019_AARCH64_ASM_PATH = DEF(VS2019_BIN_AARCH64)\armasm64.exe
-*_VS2019_AARCH64_ASLCC_PATH = DEF(VS2019_BIN_AARCH64)\cl.exe
-*_VS2019_AARCH64_ASLPP_PATH = DEF(VS2019_BIN_AARCH64)\cl.exe
-*_VS2019_AARCH64_ASLDLINK_PATH = DEF(VS2019_BIN_AARCH64)\link.exe
-
- DEBUG_VS2019_AARCH64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gw /Oi-
-RELEASE_VS2019_AARCH64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw /Oi-
-NOOPT_VS2019_AARCH64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Od /Oi-
-
- DEBUG_VS2019_AARCH64_ASM_FLAGS = /nologo /g
-RELEASE_VS2019_AARCH64_ASM_FLAGS = /nologo
-NOOPT_VS2019_AARCH64_ASM_FLAGS = /nologo
-
- DEBUG_VS2019_AARCH64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /DRIVER /DEBUG
-RELEASE_VS2019_AARCH64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2019_AARCH64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /DRIVER /DEBUG
-
-####################################################################################
-# GCC Common
-####################################################################################
-
-*_*_*_OBJCOPY_PATH = echo
-*_*_*_OBJCOPY_FLAGS = objcopy not needed for
-*_*_*_SYMRENAME_PATH = echo
-*_*_*_SYMRENAME_FLAGS = Symbol renaming not needed for
-DEBUG_*_*_OBJCOPY_ADDDEBUGFLAG = --add-gnu-debuglink="$(DEBUG_DIR)/$(MODULE_NAME).debug"
-RELEASE_*_*_OBJCOPY_ADDDEBUGFLAG =
-NOOPT_*_*_OBJCOPY_ADDDEBUGFLAG = --add-gnu-debuglink="$(DEBUG_DIR)/$(MODULE_NAME).debug"
-*_*_*_OBJCOPY_STRIPFLAG = --strip-unneeded -R .eh_frame
-*_*_*_DTC_FLAGS = -H epapr
-*_*_*_DTCPP_PATH = DEF(DTCPP_BIN)
-*_*_*_DTC_PATH = DEF(DTC_BIN)
-
-DEFINE GCC_ALL_CC_FLAGS = -g -Os -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -include AutoGen.h -fno-common
-DEFINE GCC_ARM_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mlittle-endian -mabi=aapcs -fno-short-enums -funsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -Wno-address -mthumb -fno-pic -fno-pie
-DEFINE GCC_LOONGARCH64_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mabi=lp64d -fno-asynchronous-unwind-tables -fno-plt -Wno-address -fno-short-enums -fsigned-char -ffunction-sections -fdata-sections
-DEFINE GCC_ARM_CC_XIPFLAGS = -mno-unaligned-access
-DEFINE GCC_AARCH64_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mlittle-endian -fno-short-enums -fverbose-asm -funsigned-char -ffunction-sections -fdata-sections -Wno-address -fno-asynchronous-unwind-tables -fno-unwind-tables -fno-pic -fno-pie -ffixed-x18
-DEFINE GCC_AARCH64_CC_XIPFLAGS = -mstrict-align -mgeneral-regs-only
-DEFINE GCC_RISCV64_CC_XIPFLAGS = -mstrict-align -mgeneral-regs-only
-DEFINE GCC_DLINK_FLAGS_COMMON = -nostdlib --pie
-DEFINE GCC_DLINK2_FLAGS_COMMON = -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/GccBase.lds
-DEFINE GCC_IA32_X64_DLINK_COMMON = DEF(GCC_DLINK_FLAGS_COMMON) --gc-sections
-DEFINE GCC_ARM_AARCH64_DLINK_COMMON= -Wl,--emit-relocs -nostdlib -Wl,--gc-sections -u $(IMAGE_ENTRY_POINT) -Wl,-e,$(IMAGE_ENTRY_POINT),-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map
-DEFINE GCC_LOONGARCH64_DLINK_COMMON= -Wl,--emit-relocs -nostdlib -Wl,--gc-sections -u $(IMAGE_ENTRY_POINT) -Wl,-e,$(IMAGE_ENTRY_POINT),-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map
-DEFINE GCC_ARM_DLINK_FLAGS = DEF(GCC_ARM_AARCH64_DLINK_COMMON) -z common-page-size=0x20 -Wl,--pic-veneer
-DEFINE GCC_AARCH64_DLINK_FLAGS = DEF(GCC_ARM_AARCH64_DLINK_COMMON) -z common-page-size=0x20
-DEFINE GCC_LOONGARCH64_DLINK_FLAGS = DEF(GCC_LOONGARCH64_DLINK_COMMON) -z common-page-size=0x20
-DEFINE GCC_ARM_AARCH64_ASLDLINK_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0 DEF(GCC_DLINK2_FLAGS_COMMON) -z common-page-size=0x20
-DEFINE GCC_IA32_X64_ASLDLINK_FLAGS = DEF(GCC_IA32_X64_DLINK_COMMON) --entry _ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT)
-DEFINE GCC_ARM_ASLDLINK_FLAGS = DEF(GCC_ARM_DLINK_FLAGS) -Wl,--entry,ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT) DEF(GCC_ARM_AARCH64_ASLDLINK_FLAGS)
-DEFINE GCC_AARCH64_ASLDLINK_FLAGS = DEF(GCC_AARCH64_DLINK_FLAGS) -Wl,--entry,ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT) DEF(GCC_ARM_AARCH64_ASLDLINK_FLAGS)
-DEFINE GCC_LOONGARCH64_ASLDLINK_FLAGS = DEF(GCC_LOONGARCH64_DLINK_FLAGS) -Wl,--entry,ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT)
-DEFINE GCC_IA32_X64_DLINK_FLAGS = DEF(GCC_IA32_X64_DLINK_COMMON) --entry _$(IMAGE_ENTRY_POINT) --file-alignment 0x20 --section-alignment 0x20 -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map
-DEFINE GCC_ASM_FLAGS = -c -x assembler -imacros AutoGen.h
-DEFINE GCC_PP_FLAGS = -E -x assembler-with-cpp -include AutoGen.h
-DEFINE GCC_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE --include $(MODULE_NAME)StrDefs.h
-DEFINE GCC_ASLPP_FLAGS = -x c -E -include AutoGen.h
-DEFINE GCC_ASLCC_FLAGS = -x c
-DEFINE GCC_WINDRES_FLAGS = -J rc -O coff
-DEFINE GCC_DTCPP_FLAGS = -E -x assembler-with-cpp -imacros AutoGen.h -nostdinc -undef
-DEFINE GCC_IA32_RC_FLAGS = -I binary -O elf32-i386 -B i386 --rename-section .data=.hii
-DEFINE GCC_X64_RC_FLAGS = -I binary -O elf64-x86-64 -B i386 --rename-section .data=.hii
-DEFINE GCC_ARM_RC_FLAGS = -I binary -O elf32-littlearm -B arm --rename-section .data=.hii
-DEFINE GCC_AARCH64_RC_FLAGS = -I binary -O elf64-littleaarch64 -B aarch64 --rename-section .data=.hii
-DEFINE GCC_AARCH64_RC_BTI_FLAGS = --add-section .note.gnu.property=$(WORKSPACE)/ArmPkg/Library/GnuNoteBti.bin --set-section-flags .note.gnu.property=alloc,readonly
-DEFINE GCC_RISCV64_RC_FLAGS = -I binary -O elf64-littleriscv -B riscv --rename-section .data=.hii
-DEFINE GCC_LOONGARCH64_RC_FLAGS = -I binary -O elf64-loongarch -B loongarch64 --rename-section .data=.hii
-
-# GCC Build Flag for included header file list generation
-DEFINE GCC_DEPS_FLAGS = -MMD -MF $@.deps
-
-DEFINE GCC48_ALL_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -ffunction-sections -fdata-sections -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings
-DEFINE GCC48_IA32_X64_DLINK_COMMON = -nostdlib -Wl,-n,-q,--gc-sections -z common-page-size=0x20
-DEFINE GCC48_IA32_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m32 -march=i586 -malign-double -fno-stack-protector -D EFI32 -fno-asynchronous-unwind-tables -Wno-address -fno-omit-frame-pointer
-DEFINE GCC48_X64_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m64 -fno-stack-protector "-DEFIAPI=__attribute__((ms_abi))" -maccumulate-outgoing-args -mno-red-zone -Wno-address -mcmodel=small -fpie -fno-asynchronous-unwind-tables -Wno-address -fno-omit-frame-pointer
-DEFINE GCC48_IA32_X64_ASLDLINK_FLAGS = DEF(GCC48_IA32_X64_DLINK_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable
-DEFINE GCC48_IA32_X64_DLINK_FLAGS = DEF(GCC48_IA32_X64_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive
-DEFINE GCC48_IA32_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x220 DEF(GCC_DLINK2_FLAGS_COMMON)
-DEFINE GCC48_X64_DLINK_FLAGS = DEF(GCC48_IA32_X64_DLINK_FLAGS) -Wl,-melf_x86_64,--oformat=elf64-x86-64,-pie
-DEFINE GCC48_X64_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 DEF(GCC_DLINK2_FLAGS_COMMON)
-DEFINE GCC48_ASM_FLAGS = DEF(GCC_ASM_FLAGS)
-DEFINE GCC48_ARM_ASM_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_ASM_FLAGS) -mlittle-endian
-DEFINE GCC48_AARCH64_ASM_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_ASM_FLAGS) -mlittle-endian
-DEFINE GCC48_ARM_CC_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_ARM_CC_FLAGS) -fstack-protector -mword-relocations
-DEFINE GCC48_ARM_CC_XIPFLAGS = DEF(GCC_ARM_CC_XIPFLAGS)
-DEFINE GCC48_AARCH64_CC_FLAGS = $(PLATFORM_FLAGS) -mcmodel=large DEF(GCC_AARCH64_CC_FLAGS)
-DEFINE GCC48_AARCH64_CC_XIPFLAGS = DEF(GCC_AARCH64_CC_XIPFLAGS)
-DEFINE GCC48_ARM_DLINK_FLAGS = DEF(GCC_ARM_DLINK_FLAGS) -Wl,--oformat=elf32-littlearm
-DEFINE GCC48_ARM_DLINK2_FLAGS = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x220
-DEFINE GCC48_AARCH64_DLINK_FLAGS = DEF(GCC_AARCH64_DLINK_FLAGS)
-DEFINE GCC48_AARCH64_DLINK2_FLAGS = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x228
-DEFINE GCC48_ARM_ASLDLINK_FLAGS = DEF(GCC_ARM_ASLDLINK_FLAGS) -Wl,--oformat=elf32-littlearm
-DEFINE GCC48_AARCH64_ASLDLINK_FLAGS = DEF(GCC_AARCH64_ASLDLINK_FLAGS)
-DEFINE GCC48_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS)
-
-DEFINE GCC49_IA32_CC_FLAGS = DEF(GCC48_IA32_CC_FLAGS) -fno-pic -fno-pie
-DEFINE GCC49_X64_CC_FLAGS = DEF(GCC48_X64_CC_FLAGS)
-DEFINE GCC49_IA32_X64_DLINK_COMMON = -nostdlib -Wl,-n,-q,--gc-sections -z common-page-size=0x40
-DEFINE GCC49_IA32_X64_ASLDLINK_FLAGS = DEF(GCC49_IA32_X64_DLINK_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0 DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable
-DEFINE GCC49_IA32_X64_DLINK_FLAGS = DEF(GCC49_IA32_X64_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive
-DEFINE GCC49_IA32_DLINK2_FLAGS = DEF(GCC48_IA32_DLINK2_FLAGS)
-DEFINE GCC49_X64_DLINK_FLAGS = DEF(GCC49_IA32_X64_DLINK_FLAGS) -Wl,-melf_x86_64,--oformat=elf64-x86-64,-pie
-DEFINE GCC49_X64_DLINK2_FLAGS = DEF(GCC48_X64_DLINK2_FLAGS)
-DEFINE GCC49_ASM_FLAGS = DEF(GCC48_ASM_FLAGS)
-DEFINE GCC49_ARM_ASM_FLAGS = DEF(GCC48_ARM_ASM_FLAGS)
-DEFINE GCC49_AARCH64_ASM_FLAGS = DEF(GCC48_AARCH64_ASM_FLAGS)
-DEFINE GCC49_ARM_CC_FLAGS = DEF(GCC48_ARM_CC_FLAGS)
-DEFINE GCC49_ARM_CC_XIPFLAGS = DEF(GCC48_ARM_CC_XIPFLAGS)
-DEFINE GCC49_AARCH64_CC_FLAGS = $(PLATFORM_FLAGS) DEF(GCC48_ALL_CC_FLAGS) DEF(GCC_AARCH64_CC_FLAGS) -mcmodel=small
-DEFINE GCC49_AARCH64_CC_XIPFLAGS = DEF(GCC48_AARCH64_CC_XIPFLAGS)
-DEFINE GCC49_ARM_DLINK_FLAGS = DEF(GCC48_ARM_DLINK_FLAGS)
-DEFINE GCC49_ARM_DLINK2_FLAGS = DEF(GCC48_ARM_DLINK2_FLAGS)
-DEFINE GCC49_AARCH64_DLINK_FLAGS = DEF(GCC48_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000
-DEFINE GCC49_AARCH64_DLINK2_FLAGS = DEF(GCC48_AARCH64_DLINK2_FLAGS)
-DEFINE GCC49_ARM_ASLDLINK_FLAGS = DEF(GCC48_ARM_ASLDLINK_FLAGS)
-DEFINE GCC49_AARCH64_ASLDLINK_FLAGS = DEF(GCC48_AARCH64_ASLDLINK_FLAGS)
-DEFINE GCC49_ASLCC_FLAGS = DEF(GCC48_ASLCC_FLAGS)
-
-DEFINE GCC5_IA32_CC_FLAGS = DEF(GCC49_IA32_CC_FLAGS)
-DEFINE GCC5_X64_CC_FLAGS = DEF(GCC49_X64_CC_FLAGS)
-DEFINE GCC5_IA32_X64_DLINK_COMMON = DEF(GCC49_IA32_X64_DLINK_COMMON)
-DEFINE GCC5_IA32_X64_ASLDLINK_FLAGS = DEF(GCC49_IA32_X64_ASLDLINK_FLAGS)
-DEFINE GCC5_IA32_X64_DLINK_FLAGS = DEF(GCC49_IA32_X64_DLINK_FLAGS)
-DEFINE GCC5_IA32_DLINK2_FLAGS = DEF(GCC49_IA32_DLINK2_FLAGS) -Wno-error
-DEFINE GCC5_X64_DLINK_FLAGS = DEF(GCC49_X64_DLINK_FLAGS)
-DEFINE GCC5_X64_DLINK2_FLAGS = DEF(GCC49_X64_DLINK2_FLAGS) -Wno-error
-DEFINE GCC5_ASM_FLAGS = DEF(GCC49_ASM_FLAGS)
-DEFINE GCC5_ARM_ASM_FLAGS = DEF(GCC49_ARM_ASM_FLAGS)
-DEFINE GCC5_AARCH64_ASM_FLAGS = DEF(GCC49_AARCH64_ASM_FLAGS)
-DEFINE GCC5_ARM_CC_FLAGS = DEF(GCC49_ARM_CC_FLAGS)
-DEFINE GCC5_ARM_CC_XIPFLAGS = DEF(GCC49_ARM_CC_XIPFLAGS)
-DEFINE GCC5_AARCH64_CC_FLAGS = DEF(GCC49_AARCH64_CC_FLAGS)
-DEFINE GCC5_AARCH64_CC_XIPFLAGS = DEF(GCC49_AARCH64_CC_XIPFLAGS)
-DEFINE GCC5_ARM_DLINK_FLAGS = DEF(GCC49_ARM_DLINK_FLAGS)
-DEFINE GCC5_ARM_DLINK2_FLAGS = DEF(GCC49_ARM_DLINK2_FLAGS) -Wno-error
-DEFINE GCC5_AARCH64_DLINK_FLAGS = DEF(GCC49_AARCH64_DLINK_FLAGS)
-DEFINE GCC5_AARCH64_DLINK2_FLAGS = DEF(GCC49_AARCH64_DLINK2_FLAGS) -Wno-error
-DEFINE GCC5_ARM_ASLDLINK_FLAGS = DEF(GCC49_ARM_ASLDLINK_FLAGS)
-DEFINE GCC5_AARCH64_ASLDLINK_FLAGS = DEF(GCC49_AARCH64_ASLDLINK_FLAGS)
-DEFINE GCC5_ASLCC_FLAGS = DEF(GCC49_ASLCC_FLAGS) -fno-lto
-
-DEFINE GCC5_RISCV_ALL_CC_FLAGS = -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -include AutoGen.h -fno-common -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings -msmall-data-limit=0
-DEFINE GCC5_RISCV_ALL_DLINK_COMMON = -nostdlib -Wl,-n,-q,--gc-sections -z common-page-size=0x40
-DEFINE GCC5_RISCV_ALL_DLINK_FLAGS = DEF(GCC5_RISCV_ALL_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map
-DEFINE GCC5_RISCV_ALL_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x220,--script=$(EDK_TOOLS_PATH)/Scripts/GccBase.lds
-DEFINE GCC5_RISCV_ALL_ASM_FLAGS = -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h
-DEFINE GCC5_RISCV_ALL_CC_FLAGS_WARNING_DISABLE = -Wno-tautological-compare -Wno-pointer-compare
-
-DEFINE GCC5_RISCV_OPENSBI_TYPES = -DOPENSBI_EXTERNAL_SBI_TYPES=OpensbiTypes.h
-
-DEFINE GCC5_RISCV64_ARCH = rv64gc
-DEFINE GCC5_RISCV32_RISCV64_ASLDLINK_FLAGS = DEF(GCC5_RISCV_ALL_DLINK_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable
-DEFINE GCC5_RISCV64_CC_FLAGS = DEF(GCC5_RISCV_ALL_CC_FLAGS) DEF(GCC5_RISCV_ALL_CC_FLAGS_WARNING_DISABLE) DEF(GCC5_RISCV_OPENSBI_TYPES) -march=DEF(GCC5_RISCV64_ARCH) -fno-builtin -fno-builtin-memcpy -fno-stack-protector -Wno-address -fno-asynchronous-unwind-tables -fno-unwind-tables -Wno-unused-but-set-variable -fpack-struct=8 -mcmodel=medany -mabi=lp64 -mno-relax
-DEFINE GCC5_RISCV64_DLINK_FLAGS = DEF(GCC5_RISCV_ALL_DLINK_FLAGS) -Wl,-melf64lriscv,--oformat=elf64-littleriscv,--no-relax
-DEFINE GCC5_RISCV64_DLINK2_FLAGS = DEF(GCC5_RISCV_ALL_DLINK2_FLAGS)
-DEFINE GCC5_RISCV64_ASM_FLAGS = DEF(GCC5_RISCV_ALL_ASM_FLAGS) -march=DEF(GCC5_RISCV64_ARCH) -mcmodel=medany -mabi=lp64
-
-DEFINE GCC5_LOONGARCH64_CC_FLAGS = DEF(GCC_LOONGARCH64_CC_FLAGS) -march=loongarch64 -mno-memcpy -Werror -Wno-maybe-uninitialized -Wno-stringop-overflow -Wno-pointer-to-int-cast -no-pie -fno-stack-protector -mno-explicit-relocs
-DEFINE GCC5_LOONGARCH64_DLINK_FLAGS = DEF(GCC_LOONGARCH64_DLINK_FLAGS)
-DEFINE GCC5_LOONGARCH64_DLINK2_FLAGS = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x228
-DEFINE GCC5_LOONGARCH64_ASLDLINK_FLAGS = DEF(GCC_LOONGARCH64_ASLDLINK_FLAGS) DEF(GCC5_LOONGARCH64_DLINK2_FLAGS)
-DEFINE GCC5_LOONGARCH64_ASM_FLAGS = -x assembler-with-cpp -mabi=lp64d -march=loongarch64 -fno-builtin -c -Wall -mno-explicit-relocs
-DEFINE GCC5_LOONGARCH64_PP_FLAGS = -mabi=lp64d -march=loongarch64 DEF(GCC_PP_FLAGS)
-
-####################################################################################
-#
-# GCC 4.8 - This configuration is used to compile under Linux to produce
-# PE/COFF binaries using GCC 4.8.
-#
-####################################################################################
-*_GCC48_*_*_FAMILY = GCC
-
-*_GCC48_*_MAKE_PATH = DEF(GCC_HOST_PREFIX)make
-*_GCC48_*_*_DLL = ENV(GCC48_DLL)
-*_GCC48_*_ASL_PATH = DEF(UNIX_IASL_BIN)
-
-*_GCC48_*_PP_FLAGS = DEF(GCC_PP_FLAGS)
-*_GCC48_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS)
-*_GCC48_*_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS)
-*_GCC48_*_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS)
-*_GCC48_*_APP_FLAGS =
-*_GCC48_*_ASL_FLAGS = DEF(IASL_FLAGS)
-*_GCC48_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS)
-*_GCC48_*_DEPS_FLAGS = DEF(GCC_DEPS_FLAGS)
-
-##################
-# GCC48 IA32 definitions
-##################
-*_GCC48_IA32_OBJCOPY_PATH = DEF(GCC48_IA32_PREFIX)objcopy
-*_GCC48_IA32_CC_PATH = DEF(GCC48_IA32_PREFIX)gcc
-*_GCC48_IA32_SLINK_PATH = DEF(GCC48_IA32_PREFIX)ar
-*_GCC48_IA32_DLINK_PATH = DEF(GCC48_IA32_PREFIX)gcc
-*_GCC48_IA32_ASLDLINK_PATH = DEF(GCC48_IA32_PREFIX)gcc
-*_GCC48_IA32_ASM_PATH = DEF(GCC48_IA32_PREFIX)gcc
-*_GCC48_IA32_PP_PATH = DEF(GCC48_IA32_PREFIX)gcc
-*_GCC48_IA32_VFRPP_PATH = DEF(GCC48_IA32_PREFIX)gcc
-*_GCC48_IA32_ASLCC_PATH = DEF(GCC48_IA32_PREFIX)gcc
-*_GCC48_IA32_ASLPP_PATH = DEF(GCC48_IA32_PREFIX)gcc
-*_GCC48_IA32_RC_PATH = DEF(GCC48_IA32_PREFIX)objcopy
-
-*_GCC48_IA32_ASLCC_FLAGS = DEF(GCC48_ASLCC_FLAGS) -m32
-*_GCC48_IA32_ASLDLINK_FLAGS = DEF(GCC48_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386
-*_GCC48_IA32_ASM_FLAGS = DEF(GCC48_ASM_FLAGS) -m32 -march=i386
-*_GCC48_IA32_DLINK_FLAGS = DEF(GCC48_IA32_X64_DLINK_FLAGS) -Wl,-m,elf_i386,--oformat=elf32-i386
-*_GCC48_IA32_DLINK2_FLAGS = DEF(GCC48_IA32_DLINK2_FLAGS)
-*_GCC48_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS)
-*_GCC48_IA32_OBJCOPY_FLAGS =
-*_GCC48_IA32_NASM_FLAGS = -f elf32
-
- DEBUG_GCC48_IA32_CC_FLAGS = DEF(GCC48_IA32_CC_FLAGS)
-RELEASE_GCC48_IA32_CC_FLAGS = DEF(GCC48_IA32_CC_FLAGS) -Wno-unused-but-set-variable
- NOOPT_GCC48_IA32_CC_FLAGS = DEF(GCC48_IA32_CC_FLAGS) -O0
-
-##################
-# GCC48 X64 definitions
-##################
-*_GCC48_X64_OBJCOPY_PATH = DEF(GCC48_X64_PREFIX)objcopy
-*_GCC48_X64_CC_PATH = DEF(GCC48_X64_PREFIX)gcc
-*_GCC48_X64_SLINK_PATH = DEF(GCC48_X64_PREFIX)ar
-*_GCC48_X64_DLINK_PATH = DEF(GCC48_X64_PREFIX)gcc
-*_GCC48_X64_ASLDLINK_PATH = DEF(GCC48_X64_PREFIX)gcc
-*_GCC48_X64_ASM_PATH = DEF(GCC48_X64_PREFIX)gcc
-*_GCC48_X64_PP_PATH = DEF(GCC48_X64_PREFIX)gcc
-*_GCC48_X64_VFRPP_PATH = DEF(GCC48_X64_PREFIX)gcc
-*_GCC48_X64_ASLCC_PATH = DEF(GCC48_X64_PREFIX)gcc
-*_GCC48_X64_ASLPP_PATH = DEF(GCC48_X64_PREFIX)gcc
-*_GCC48_X64_RC_PATH = DEF(GCC48_X64_PREFIX)objcopy
-
-*_GCC48_X64_ASLCC_FLAGS = DEF(GCC48_ASLCC_FLAGS) -m64
-*_GCC48_X64_ASLDLINK_FLAGS = DEF(GCC48_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64
-*_GCC48_X64_ASM_FLAGS = DEF(GCC48_ASM_FLAGS) -m64
-*_GCC48_X64_DLINK_FLAGS = DEF(GCC48_X64_DLINK_FLAGS)
-*_GCC48_X64_DLINK2_FLAGS = DEF(GCC48_X64_DLINK2_FLAGS)
-*_GCC48_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS)
-*_GCC48_X64_OBJCOPY_FLAGS =
-*_GCC48_X64_NASM_FLAGS = -f elf64
-
- DEBUG_GCC48_X64_CC_FLAGS = DEF(GCC48_X64_CC_FLAGS)
-RELEASE_GCC48_X64_CC_FLAGS = DEF(GCC48_X64_CC_FLAGS) -Wno-unused-but-set-variable
- NOOPT_GCC48_X64_CC_FLAGS = DEF(GCC48_X64_CC_FLAGS) -O0
-
-##################
-# GCC48 ARM definitions
-##################
-*_GCC48_ARM_CC_PATH = ENV(GCC48_ARM_PREFIX)gcc
-*_GCC48_ARM_SLINK_PATH = ENV(GCC48_ARM_PREFIX)ar
-*_GCC48_ARM_DLINK_PATH = ENV(GCC48_ARM_PREFIX)gcc
-*_GCC48_ARM_ASLDLINK_PATH = ENV(GCC48_ARM_PREFIX)gcc
-*_GCC48_ARM_ASM_PATH = ENV(GCC48_ARM_PREFIX)gcc
-*_GCC48_ARM_PP_PATH = ENV(GCC48_ARM_PREFIX)gcc
-*_GCC48_ARM_VFRPP_PATH = ENV(GCC48_ARM_PREFIX)gcc
-*_GCC48_ARM_ASLCC_PATH = ENV(GCC48_ARM_PREFIX)gcc
-*_GCC48_ARM_ASLPP_PATH = ENV(GCC48_ARM_PREFIX)gcc
-*_GCC48_ARM_RC_PATH = ENV(GCC48_ARM_PREFIX)objcopy
-
-*_GCC48_ARM_ASLCC_FLAGS = DEF(GCC48_ASLCC_FLAGS)
-*_GCC48_ARM_ASLDLINK_FLAGS = DEF(GCC48_ARM_ASLDLINK_FLAGS)
-*_GCC48_ARM_ASM_FLAGS = DEF(GCC48_ARM_ASM_FLAGS)
-*_GCC48_ARM_DLINK_FLAGS = DEF(GCC48_ARM_DLINK_FLAGS)
-*_GCC48_ARM_DLINK2_FLAGS = DEF(GCC48_ARM_DLINK2_FLAGS)
-*_GCC48_ARM_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS)
-*_GCC48_ARM_PLATFORM_FLAGS = -march=armv7-a
-*_GCC48_ARM_PP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
-*_GCC48_ARM_RC_FLAGS = DEF(GCC_ARM_RC_FLAGS)
-*_GCC48_ARM_VFRPP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS)
-*_GCC48_ARM_CC_XIPFLAGS = DEF(GCC48_ARM_CC_XIPFLAGS)
-
- DEBUG_GCC48_ARM_CC_FLAGS = DEF(GCC48_ARM_CC_FLAGS) -O0
-RELEASE_GCC48_ARM_CC_FLAGS = DEF(GCC48_ARM_CC_FLAGS) -Wno-unused-but-set-variable
- NOOPT_GCC48_ARM_CC_FLAGS = DEF(GCC48_ARM_CC_FLAGS) -O0
-
-##################
-# GCC48 AARCH64 definitions
-##################
-*_GCC48_AARCH64_CC_PATH = ENV(GCC48_AARCH64_PREFIX)gcc
-*_GCC48_AARCH64_SLINK_PATH = ENV(GCC48_AARCH64_PREFIX)ar
-*_GCC48_AARCH64_DLINK_PATH = ENV(GCC48_AARCH64_PREFIX)gcc
-*_GCC48_AARCH64_ASLDLINK_PATH = ENV(GCC48_AARCH64_PREFIX)gcc
-*_GCC48_AARCH64_ASM_PATH = ENV(GCC48_AARCH64_PREFIX)gcc
-*_GCC48_AARCH64_PP_PATH = ENV(GCC48_AARCH64_PREFIX)gcc
-*_GCC48_AARCH64_VFRPP_PATH = ENV(GCC48_AARCH64_PREFIX)gcc
-*_GCC48_AARCH64_ASLCC_PATH = ENV(GCC48_AARCH64_PREFIX)gcc
-*_GCC48_AARCH64_ASLPP_PATH = ENV(GCC48_AARCH64_PREFIX)gcc
-*_GCC48_AARCH64_RC_PATH = ENV(GCC48_AARCH64_PREFIX)objcopy
-
-*_GCC48_AARCH64_ASLCC_FLAGS = DEF(GCC48_ASLCC_FLAGS)
-*_GCC48_AARCH64_ASLDLINK_FLAGS = DEF(GCC48_AARCH64_ASLDLINK_FLAGS)
-*_GCC48_AARCH64_ASM_FLAGS = DEF(GCC48_AARCH64_ASM_FLAGS)
-*_GCC48_AARCH64_DLINK_FLAGS = DEF(GCC48_AARCH64_DLINK_FLAGS)
-*_GCC48_AARCH64_DLINK2_FLAGS = DEF(GCC48_AARCH64_DLINK2_FLAGS)
-*_GCC48_AARCH64_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS)
-*_GCC48_AARCH64_PLATFORM_FLAGS =
-*_GCC48_AARCH64_PP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
-*_GCC48_AARCH64_RC_FLAGS = DEF(GCC_AARCH64_RC_FLAGS)
-*_GCC48_AARCH64_VFRPP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS)
-*_GCC48_AARCH64_CC_XIPFLAGS = DEF(GCC48_AARCH64_CC_XIPFLAGS)
-
- DEBUG_GCC48_AARCH64_CC_FLAGS = DEF(GCC48_AARCH64_CC_FLAGS) -O0
-RELEASE_GCC48_AARCH64_CC_FLAGS = DEF(GCC48_AARCH64_CC_FLAGS) -Wno-unused-but-set-variable
- NOOPT_GCC48_AARCH64_CC_FLAGS = DEF(GCC48_AARCH64_CC_FLAGS) -O0
-
-####################################################################################
-#
-# GCC 4.9 - This configuration is used to compile under Linux to produce
-# PE/COFF binaries using GCC 4.9.
-#
-####################################################################################
-*_GCC49_*_*_FAMILY = GCC
-
-*_GCC49_*_MAKE_PATH = DEF(GCC_HOST_PREFIX)make
-*_GCC49_*_*_DLL = ENV(GCC49_DLL)
-*_GCC49_*_ASL_PATH = DEF(UNIX_IASL_BIN)
-
-*_GCC49_*_PP_FLAGS = DEF(GCC_PP_FLAGS)
-*_GCC49_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS)
-*_GCC49_*_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS)
-*_GCC49_*_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS)
-*_GCC49_*_APP_FLAGS =
-*_GCC49_*_ASL_FLAGS = DEF(IASL_FLAGS)
-*_GCC49_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS)
-*_GCC49_*_DEPS_FLAGS = DEF(GCC_DEPS_FLAGS)
-
-##################
-# GCC49 IA32 definitions
-##################
-*_GCC49_IA32_OBJCOPY_PATH = DEF(GCC49_IA32_PREFIX)objcopy
-*_GCC49_IA32_CC_PATH = DEF(GCC49_IA32_PREFIX)gcc
-*_GCC49_IA32_SLINK_PATH = DEF(GCC49_IA32_PREFIX)ar
-*_GCC49_IA32_DLINK_PATH = DEF(GCC49_IA32_PREFIX)gcc
-*_GCC49_IA32_ASLDLINK_PATH = DEF(GCC49_IA32_PREFIX)gcc
-*_GCC49_IA32_ASM_PATH = DEF(GCC49_IA32_PREFIX)gcc
-*_GCC49_IA32_PP_PATH = DEF(GCC49_IA32_PREFIX)gcc
-*_GCC49_IA32_VFRPP_PATH = DEF(GCC49_IA32_PREFIX)gcc
-*_GCC49_IA32_ASLCC_PATH = DEF(GCC49_IA32_PREFIX)gcc
-*_GCC49_IA32_ASLPP_PATH = DEF(GCC49_IA32_PREFIX)gcc
-*_GCC49_IA32_RC_PATH = DEF(GCC49_IA32_PREFIX)objcopy
-
-*_GCC49_IA32_ASLCC_FLAGS = DEF(GCC49_ASLCC_FLAGS) -m32
-*_GCC49_IA32_ASLDLINK_FLAGS = DEF(GCC49_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386
-*_GCC49_IA32_ASM_FLAGS = DEF(GCC49_ASM_FLAGS) -m32 -march=i386
-*_GCC49_IA32_DLINK_FLAGS = DEF(GCC49_IA32_X64_DLINK_FLAGS) -Wl,-m,elf_i386,--oformat=elf32-i386
-*_GCC49_IA32_DLINK2_FLAGS = DEF(GCC49_IA32_DLINK2_FLAGS)
-*_GCC49_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS)
-*_GCC49_IA32_OBJCOPY_FLAGS =
-*_GCC49_IA32_NASM_FLAGS = -f elf32
-
- DEBUG_GCC49_IA32_CC_FLAGS = DEF(GCC49_IA32_CC_FLAGS)
-RELEASE_GCC49_IA32_CC_FLAGS = DEF(GCC49_IA32_CC_FLAGS) -Wno-unused-but-set-variable -Wno-unused-const-variable
- NOOPT_GCC49_IA32_CC_FLAGS = DEF(GCC49_IA32_CC_FLAGS) -O0
-
-##################
-# GCC49 X64 definitions
-##################
-*_GCC49_X64_OBJCOPY_PATH = DEF(GCC49_X64_PREFIX)objcopy
-*_GCC49_X64_CC_PATH = DEF(GCC49_X64_PREFIX)gcc
-*_GCC49_X64_SLINK_PATH = DEF(GCC49_X64_PREFIX)ar
-*_GCC49_X64_DLINK_PATH = DEF(GCC49_X64_PREFIX)gcc
-*_GCC49_X64_ASLDLINK_PATH = DEF(GCC49_X64_PREFIX)gcc
-*_GCC49_X64_ASM_PATH = DEF(GCC49_X64_PREFIX)gcc
-*_GCC49_X64_PP_PATH = DEF(GCC49_X64_PREFIX)gcc
-*_GCC49_X64_VFRPP_PATH = DEF(GCC49_X64_PREFIX)gcc
-*_GCC49_X64_ASLCC_PATH = DEF(GCC49_X64_PREFIX)gcc
-*_GCC49_X64_ASLPP_PATH = DEF(GCC49_X64_PREFIX)gcc
-*_GCC49_X64_RC_PATH = DEF(GCC49_X64_PREFIX)objcopy
-
-*_GCC49_X64_ASLCC_FLAGS = DEF(GCC49_ASLCC_FLAGS) -m64
-*_GCC49_X64_ASLDLINK_FLAGS = DEF(GCC49_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64
-*_GCC49_X64_ASM_FLAGS = DEF(GCC49_ASM_FLAGS) -m64
-*_GCC49_X64_DLINK_FLAGS = DEF(GCC49_X64_DLINK_FLAGS)
-*_GCC49_X64_DLINK2_FLAGS = DEF(GCC49_X64_DLINK2_FLAGS)
-*_GCC49_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS)
-*_GCC49_X64_OBJCOPY_FLAGS =
-*_GCC49_X64_NASM_FLAGS = -f elf64
-
- DEBUG_GCC49_X64_CC_FLAGS = DEF(GCC49_X64_CC_FLAGS)
-RELEASE_GCC49_X64_CC_FLAGS = DEF(GCC49_X64_CC_FLAGS) -Wno-unused-but-set-variable -Wno-unused-const-variable
- NOOPT_GCC49_X64_CC_FLAGS = DEF(GCC49_X64_CC_FLAGS) -O0
-
-##################
-# GCC49 ARM definitions
-##################
-*_GCC49_ARM_CC_PATH = ENV(GCC49_ARM_PREFIX)gcc
-*_GCC49_ARM_SLINK_PATH = ENV(GCC49_ARM_PREFIX)ar
-*_GCC49_ARM_DLINK_PATH = ENV(GCC49_ARM_PREFIX)gcc
-*_GCC49_ARM_ASLDLINK_PATH = ENV(GCC49_ARM_PREFIX)gcc
-*_GCC49_ARM_ASM_PATH = ENV(GCC49_ARM_PREFIX)gcc
-*_GCC49_ARM_PP_PATH = ENV(GCC49_ARM_PREFIX)gcc
-*_GCC49_ARM_VFRPP_PATH = ENV(GCC49_ARM_PREFIX)gcc
-*_GCC49_ARM_ASLCC_PATH = ENV(GCC49_ARM_PREFIX)gcc
-*_GCC49_ARM_ASLPP_PATH = ENV(GCC49_ARM_PREFIX)gcc
-*_GCC49_ARM_RC_PATH = ENV(GCC49_ARM_PREFIX)objcopy
-
-*_GCC49_ARM_ASLCC_FLAGS = DEF(GCC49_ASLCC_FLAGS)
-*_GCC49_ARM_ASLDLINK_FLAGS = DEF(GCC49_ARM_ASLDLINK_FLAGS)
-*_GCC49_ARM_ASM_FLAGS = DEF(GCC49_ARM_ASM_FLAGS)
-*_GCC49_ARM_DLINK_FLAGS = DEF(GCC49_ARM_DLINK_FLAGS)
-*_GCC49_ARM_DLINK2_FLAGS = DEF(GCC49_ARM_DLINK2_FLAGS)
-*_GCC49_ARM_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS)
-*_GCC49_ARM_PLATFORM_FLAGS = -march=armv7-a
-*_GCC49_ARM_PP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
-*_GCC49_ARM_RC_FLAGS = DEF(GCC_ARM_RC_FLAGS)
-*_GCC49_ARM_VFRPP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS)
-*_GCC49_ARM_CC_XIPFLAGS = DEF(GCC49_ARM_CC_XIPFLAGS)
-
- DEBUG_GCC49_ARM_CC_FLAGS = DEF(GCC49_ARM_CC_FLAGS) -O0
-RELEASE_GCC49_ARM_CC_FLAGS = DEF(GCC49_ARM_CC_FLAGS) -Wno-unused-but-set-variable -Wno-unused-const-variable
- NOOPT_GCC49_ARM_CC_FLAGS = DEF(GCC49_ARM_CC_FLAGS) -O0
-
-##################
-# GCC49 AARCH64 definitions
-##################
-*_GCC49_AARCH64_CC_PATH = ENV(GCC49_AARCH64_PREFIX)gcc
-*_GCC49_AARCH64_SLINK_PATH = ENV(GCC49_AARCH64_PREFIX)ar
-*_GCC49_AARCH64_DLINK_PATH = ENV(GCC49_AARCH64_PREFIX)gcc
-*_GCC49_AARCH64_ASLDLINK_PATH = ENV(GCC49_AARCH64_PREFIX)gcc
-*_GCC49_AARCH64_ASM_PATH = ENV(GCC49_AARCH64_PREFIX)gcc
-*_GCC49_AARCH64_PP_PATH = ENV(GCC49_AARCH64_PREFIX)gcc
-*_GCC49_AARCH64_VFRPP_PATH = ENV(GCC49_AARCH64_PREFIX)gcc
-*_GCC49_AARCH64_ASLCC_PATH = ENV(GCC49_AARCH64_PREFIX)gcc
-*_GCC49_AARCH64_ASLPP_PATH = ENV(GCC49_AARCH64_PREFIX)gcc
-*_GCC49_AARCH64_RC_PATH = ENV(GCC49_AARCH64_PREFIX)objcopy
-
-*_GCC49_AARCH64_ASLCC_FLAGS = DEF(GCC49_ASLCC_FLAGS)
-*_GCC49_AARCH64_ASLDLINK_FLAGS = DEF(GCC49_AARCH64_ASLDLINK_FLAGS)
-*_GCC49_AARCH64_ASM_FLAGS = DEF(GCC49_AARCH64_ASM_FLAGS)
-*_GCC49_AARCH64_DLINK2_FLAGS = DEF(GCC49_AARCH64_DLINK2_FLAGS)
-*_GCC49_AARCH64_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS)
-*_GCC49_AARCH64_PLATFORM_FLAGS =
-*_GCC49_AARCH64_PP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
-*_GCC49_AARCH64_RC_FLAGS = DEF(GCC_AARCH64_RC_FLAGS)
-*_GCC49_AARCH64_VFRPP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS)
-*_GCC49_AARCH64_CC_XIPFLAGS = DEF(GCC49_AARCH64_CC_XIPFLAGS)
-
- DEBUG_GCC49_AARCH64_CC_FLAGS = DEF(GCC49_AARCH64_CC_FLAGS) -O0
- DEBUG_GCC49_AARCH64_DLINK_FLAGS = DEF(GCC49_AARCH64_DLINK_FLAGS)
- DEBUG_GCC49_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20
-
-RELEASE_GCC49_AARCH64_CC_FLAGS = DEF(GCC49_AARCH64_CC_FLAGS) -Wno-unused-but-set-variable -Wno-unused-const-variable
-RELEASE_GCC49_AARCH64_DLINK_FLAGS = DEF(GCC49_AARCH64_DLINK_FLAGS)
-RELEASE_GCC49_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20
-
- NOOPT_GCC49_AARCH64_CC_FLAGS = DEF(GCC49_AARCH64_CC_FLAGS) -O0
- NOOPT_GCC49_AARCH64_DLINK_FLAGS = DEF(GCC49_AARCH64_DLINK_FLAGS) -O0
- NOOPT_GCC49_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 -O0
-
-####################################################################################
-#
-# GCC NOLTO - This configuration is used to compile under Linux to produce
-# PE/COFF binaries using GCC without Link Time Optimization
-#
-####################################################################################
-*_GCCNOLTO_*_*_FAMILY = GCC
-
-*_GCCNOLTO_*_MAKE_PATH = DEF(GCC_HOST_PREFIX)make
-*_GCCNOLTO_*_*_DLL = ENV(GCCNOLTO_DLL)
-*_GCCNOLTO_*_ASL_PATH = DEF(UNIX_IASL_BIN)
-
-*_GCCNOLTO_*_PP_FLAGS = DEF(GCC_PP_FLAGS)
-*_GCCNOLTO_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS)
-*_GCCNOLTO_*_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS)
-*_GCCNOLTO_*_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS)
-*_GCCNOLTO_*_APP_FLAGS =
-*_GCCNOLTO_*_ASL_FLAGS = DEF(IASL_FLAGS)
-*_GCCNOLTO_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS)
-*_GCCNOLTO_*_DEPS_FLAGS = DEF(GCC_DEPS_FLAGS)
-
-##################
-# GCCNOLTO IA32 definitions
-##################
-*_GCCNOLTO_IA32_OBJCOPY_PATH = DEF(GCCNOLTO_IA32_PREFIX)objcopy
-*_GCCNOLTO_IA32_CC_PATH = DEF(GCCNOLTO_IA32_PREFIX)gcc
-*_GCCNOLTO_IA32_SLINK_PATH = DEF(GCCNOLTO_IA32_PREFIX)ar
-*_GCCNOLTO_IA32_DLINK_PATH = DEF(GCCNOLTO_IA32_PREFIX)gcc
-*_GCCNOLTO_IA32_ASLDLINK_PATH = DEF(GCCNOLTO_IA32_PREFIX)gcc
-*_GCCNOLTO_IA32_ASM_PATH = DEF(GCCNOLTO_IA32_PREFIX)gcc
-*_GCCNOLTO_IA32_PP_PATH = DEF(GCCNOLTO_IA32_PREFIX)gcc
-*_GCCNOLTO_IA32_VFRPP_PATH = DEF(GCCNOLTO_IA32_PREFIX)gcc
-*_GCCNOLTO_IA32_ASLCC_PATH = DEF(GCCNOLTO_IA32_PREFIX)gcc
-*_GCCNOLTO_IA32_ASLPP_PATH = DEF(GCCNOLTO_IA32_PREFIX)gcc
-*_GCCNOLTO_IA32_RC_PATH = DEF(GCCNOLTO_IA32_PREFIX)objcopy
-
-*_GCCNOLTO_IA32_ASLCC_FLAGS = DEF(GCC49_ASLCC_FLAGS) -m32
-*_GCCNOLTO_IA32_ASLDLINK_FLAGS = DEF(GCC49_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386
-*_GCCNOLTO_IA32_ASM_FLAGS = DEF(GCC49_ASM_FLAGS) -m32 -march=i386
-*_GCCNOLTO_IA32_DLINK_FLAGS = DEF(GCC49_IA32_X64_DLINK_FLAGS) -Wl,-m,elf_i386,--oformat=elf32-i386
-*_GCCNOLTO_IA32_DLINK2_FLAGS = DEF(GCC49_IA32_DLINK2_FLAGS)
-*_GCCNOLTO_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS)
-*_GCCNOLTO_IA32_OBJCOPY_FLAGS =
-*_GCCNOLTO_IA32_NASM_FLAGS = -f elf32
-
- DEBUG_GCCNOLTO_IA32_CC_FLAGS = DEF(GCC49_IA32_CC_FLAGS)
-RELEASE_GCCNOLTO_IA32_CC_FLAGS = DEF(GCC49_IA32_CC_FLAGS) -Wno-unused-but-set-variable -Wno-unused-const-variable
- NOOPT_GCCNOLTO_IA32_CC_FLAGS = DEF(GCC49_IA32_CC_FLAGS) -O0
-
-##################
-# GCCNOLTO X64 definitions
-##################
-*_GCCNOLTO_X64_OBJCOPY_PATH = DEF(GCCNOLTO_X64_PREFIX)objcopy
-*_GCCNOLTO_X64_CC_PATH = DEF(GCCNOLTO_X64_PREFIX)gcc
-*_GCCNOLTO_X64_SLINK_PATH = DEF(GCCNOLTO_X64_PREFIX)ar
-*_GCCNOLTO_X64_DLINK_PATH = DEF(GCCNOLTO_X64_PREFIX)gcc
-*_GCCNOLTO_X64_ASLDLINK_PATH = DEF(GCCNOLTO_X64_PREFIX)gcc
-*_GCCNOLTO_X64_ASM_PATH = DEF(GCCNOLTO_X64_PREFIX)gcc
-*_GCCNOLTO_X64_PP_PATH = DEF(GCCNOLTO_X64_PREFIX)gcc
-*_GCCNOLTO_X64_VFRPP_PATH = DEF(GCCNOLTO_X64_PREFIX)gcc
-*_GCCNOLTO_X64_ASLCC_PATH = DEF(GCCNOLTO_X64_PREFIX)gcc
-*_GCCNOLTO_X64_ASLPP_PATH = DEF(GCCNOLTO_X64_PREFIX)gcc
-*_GCCNOLTO_X64_RC_PATH = DEF(GCCNOLTO_X64_PREFIX)objcopy
-
-*_GCCNOLTO_X64_ASLCC_FLAGS = DEF(GCC49_ASLCC_FLAGS) -m64
-*_GCCNOLTO_X64_ASLDLINK_FLAGS = DEF(GCC49_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64
-*_GCCNOLTO_X64_ASM_FLAGS = DEF(GCC49_ASM_FLAGS) -m64
-*_GCCNOLTO_X64_DLINK_FLAGS = DEF(GCC49_X64_DLINK_FLAGS)
-*_GCCNOLTO_X64_DLINK2_FLAGS = DEF(GCC49_X64_DLINK2_FLAGS)
-*_GCCNOLTO_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS)
-*_GCCNOLTO_X64_OBJCOPY_FLAGS =
-*_GCCNOLTO_X64_NASM_FLAGS = -f elf64
-
- DEBUG_GCCNOLTO_X64_CC_FLAGS = DEF(GCC49_X64_CC_FLAGS)
-RELEASE_GCCNOLTO_X64_CC_FLAGS = DEF(GCC49_X64_CC_FLAGS) -Wno-unused-but-set-variable -Wno-unused-const-variable
- NOOPT_GCCNOLTO_X64_CC_FLAGS = DEF(GCC49_X64_CC_FLAGS) -O0
-
-##################
-# GCCNOLTO ARM definitions
-##################
-*_GCCNOLTO_ARM_CC_PATH = ENV(GCCNOLTO_ARM_PREFIX)gcc
-*_GCCNOLTO_ARM_SLINK_PATH = ENV(GCCNOLTO_ARM_PREFIX)ar
-*_GCCNOLTO_ARM_DLINK_PATH = ENV(GCCNOLTO_ARM_PREFIX)gcc
-*_GCCNOLTO_ARM_ASLDLINK_PATH = ENV(GCCNOLTO_ARM_PREFIX)gcc
-*_GCCNOLTO_ARM_ASM_PATH = ENV(GCCNOLTO_ARM_PREFIX)gcc
-*_GCCNOLTO_ARM_PP_PATH = ENV(GCCNOLTO_ARM_PREFIX)gcc
-*_GCCNOLTO_ARM_VFRPP_PATH = ENV(GCCNOLTO_ARM_PREFIX)gcc
-*_GCCNOLTO_ARM_ASLCC_PATH = ENV(GCCNOLTO_ARM_PREFIX)gcc
-*_GCCNOLTO_ARM_ASLPP_PATH = ENV(GCCNOLTO_ARM_PREFIX)gcc
-*_GCCNOLTO_ARM_RC_PATH = ENV(GCCNOLTO_ARM_PREFIX)objcopy
-
-*_GCCNOLTO_ARM_ASLCC_FLAGS = DEF(GCC49_ASLCC_FLAGS)
-*_GCCNOLTO_ARM_ASLDLINK_FLAGS = DEF(GCC49_ARM_ASLDLINK_FLAGS)
-*_GCCNOLTO_ARM_ASM_FLAGS = DEF(GCC49_ARM_ASM_FLAGS)
-*_GCCNOLTO_ARM_DLINK_FLAGS = DEF(GCC49_ARM_DLINK_FLAGS)
-*_GCCNOLTO_ARM_DLINK2_FLAGS = DEF(GCC49_ARM_DLINK2_FLAGS)
-*_GCCNOLTO_ARM_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS)
-*_GCCNOLTO_ARM_PLATFORM_FLAGS = -march=armv7-a
-*_GCCNOLTO_ARM_PP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
-*_GCCNOLTO_ARM_RC_FLAGS = DEF(GCC_ARM_RC_FLAGS)
-*_GCCNOLTO_ARM_VFRPP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS)
-*_GCCNOLTO_ARM_CC_XIPFLAGS = DEF(GCC49_ARM_CC_XIPFLAGS)
-
- DEBUG_GCCNOLTO_ARM_CC_FLAGS = DEF(GCC49_ARM_CC_FLAGS) -O0
-RELEASE_GCCNOLTO_ARM_CC_FLAGS = DEF(GCC49_ARM_CC_FLAGS) -Wno-unused-but-set-variable -Wno-unused-const-variable
- NOOPT_GCCNOLTO_ARM_CC_FLAGS = DEF(GCC49_ARM_CC_FLAGS) -O0
-
-##################
-# GCCNOLTO AARCH64 definitions
-##################
-*_GCCNOLTO_AARCH64_CC_PATH = ENV(GCCNOLTO_AARCH64_PREFIX)gcc
-*_GCCNOLTO_AARCH64_SLINK_PATH = ENV(GCCNOLTO_AARCH64_PREFIX)ar
-*_GCCNOLTO_AARCH64_DLINK_PATH = ENV(GCCNOLTO_AARCH64_PREFIX)gcc
-*_GCCNOLTO_AARCH64_ASLDLINK_PATH = ENV(GCCNOLTO_AARCH64_PREFIX)gcc
-*_GCCNOLTO_AARCH64_ASM_PATH = ENV(GCCNOLTO_AARCH64_PREFIX)gcc
-*_GCCNOLTO_AARCH64_PP_PATH = ENV(GCCNOLTO_AARCH64_PREFIX)gcc
-*_GCCNOLTO_AARCH64_VFRPP_PATH = ENV(GCCNOLTO_AARCH64_PREFIX)gcc
-*_GCCNOLTO_AARCH64_ASLCC_PATH = ENV(GCCNOLTO_AARCH64_PREFIX)gcc
-*_GCCNOLTO_AARCH64_ASLPP_PATH = ENV(GCCNOLTO_AARCH64_PREFIX)gcc
-*_GCCNOLTO_AARCH64_RC_PATH = ENV(GCCNOLTO_AARCH64_PREFIX)objcopy
-
-*_GCCNOLTO_AARCH64_ASLCC_FLAGS = DEF(GCC49_ASLCC_FLAGS)
-*_GCCNOLTO_AARCH64_ASLDLINK_FLAGS = DEF(GCC49_AARCH64_ASLDLINK_FLAGS)
-*_GCCNOLTO_AARCH64_ASM_FLAGS = DEF(GCC49_AARCH64_ASM_FLAGS)
-*_GCCNOLTO_AARCH64_DLINK2_FLAGS = DEF(GCC49_AARCH64_DLINK2_FLAGS)
-*_GCCNOLTO_AARCH64_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS)
-*_GCCNOLTO_AARCH64_PLATFORM_FLAGS =
-*_GCCNOLTO_AARCH64_PP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
-*_GCCNOLTO_AARCH64_RC_FLAGS = DEF(GCC_AARCH64_RC_FLAGS)
-*_GCCNOLTO_AARCH64_VFRPP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS)
-*_GCCNOLTO_AARCH64_CC_XIPFLAGS = DEF(GCC49_AARCH64_CC_XIPFLAGS)
-
- DEBUG_GCCNOLTO_AARCH64_CC_FLAGS = DEF(GCC49_AARCH64_CC_FLAGS) -O0
- DEBUG_GCCNOLTO_AARCH64_DLINK_FLAGS = DEF(GCC49_AARCH64_DLINK_FLAGS)
- DEBUG_GCCNOLTO_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20
-
-RELEASE_GCCNOLTO_AARCH64_CC_FLAGS = DEF(GCC49_AARCH64_CC_FLAGS) -Wno-unused-but-set-variable -Wno-unused-const-variable
-RELEASE_GCCNOLTO_AARCH64_DLINK_FLAGS = DEF(GCC49_AARCH64_DLINK_FLAGS)
-RELEASE_GCCNOLTO_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20
-
- NOOPT_GCCNOLTO_AARCH64_CC_FLAGS = DEF(GCC49_AARCH64_CC_FLAGS) -O0
- NOOPT_GCCNOLTO_AARCH64_DLINK_FLAGS = DEF(GCC49_AARCH64_DLINK_FLAGS) -O0
- NOOPT_GCCNOLTO_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 -O0
-
-####################################################################################
-#
-# GCC 5 - This configuration is used to compile under Linux to produce
-# PE/COFF binaries using GCC 5
-#
-####################################################################################
-*_GCC5_*_*_FAMILY = GCC
-
-*_GCC5_*_MAKE_PATH = DEF(GCC_HOST_PREFIX)make
-*_GCC5_*_*_DLL = ENV(GCC5_DLL)
-*_GCC5_*_ASL_PATH = DEF(UNIX_IASL_BIN)
-
-*_GCC5_*_PP_FLAGS = DEF(GCC_PP_FLAGS)
-*_GCC5_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS)
-*_GCC5_*_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS)
-*_GCC5_*_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS)
-*_GCC5_*_APP_FLAGS =
-*_GCC5_*_ASL_FLAGS = DEF(IASL_FLAGS)
-*_GCC5_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS)
-*_GCC5_*_DEPS_FLAGS = DEF(GCC_DEPS_FLAGS)
-
-##################
-# GCC5 IA32 definitions
-##################
-*_GCC5_IA32_OBJCOPY_PATH = DEF(GCC5_IA32_PREFIX)objcopy
-*_GCC5_IA32_CC_PATH = DEF(GCC5_IA32_PREFIX)gcc
-*_GCC5_IA32_SLINK_PATH = DEF(GCC5_IA32_PREFIX)gcc-ar
-*_GCC5_IA32_DLINK_PATH = DEF(GCC5_IA32_PREFIX)gcc
-*_GCC5_IA32_ASLDLINK_PATH = DEF(GCC5_IA32_PREFIX)gcc
-*_GCC5_IA32_ASM_PATH = DEF(GCC5_IA32_PREFIX)gcc
-*_GCC5_IA32_PP_PATH = DEF(GCC5_IA32_PREFIX)gcc
-*_GCC5_IA32_VFRPP_PATH = DEF(GCC5_IA32_PREFIX)gcc
-*_GCC5_IA32_ASLCC_PATH = DEF(GCC5_IA32_PREFIX)gcc
-*_GCC5_IA32_ASLPP_PATH = DEF(GCC5_IA32_PREFIX)gcc
-*_GCC5_IA32_RC_PATH = DEF(GCC5_IA32_PREFIX)objcopy
-
-*_GCC5_IA32_ASLCC_FLAGS = DEF(GCC5_ASLCC_FLAGS) -m32
-*_GCC5_IA32_ASLDLINK_FLAGS = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386 -no-pie
-*_GCC5_IA32_ASM_FLAGS = DEF(GCC5_ASM_FLAGS) -m32 -march=i386
-*_GCC5_IA32_DLINK2_FLAGS = DEF(GCC5_IA32_DLINK2_FLAGS) -no-pie
-*_GCC5_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS)
-*_GCC5_IA32_OBJCOPY_FLAGS =
-*_GCC5_IA32_NASM_FLAGS = -f elf32
-
- DEBUG_GCC5_IA32_CC_FLAGS = DEF(GCC5_IA32_CC_FLAGS) -flto
- DEBUG_GCC5_IA32_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,-m,elf_i386,--oformat=elf32-i386
-
-RELEASE_GCC5_IA32_CC_FLAGS = DEF(GCC5_IA32_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable
-RELEASE_GCC5_IA32_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,-m,elf_i386,--oformat=elf32-i386
-
- NOOPT_GCC5_IA32_CC_FLAGS = DEF(GCC5_IA32_CC_FLAGS) -O0
- NOOPT_GCC5_IA32_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -Wl,-m,elf_i386,--oformat=elf32-i386 -O0
-
-##################
-# GCC5 X64 definitions
-##################
-*_GCC5_X64_OBJCOPY_PATH = DEF(GCC5_X64_PREFIX)objcopy
-*_GCC5_X64_CC_PATH = DEF(GCC5_X64_PREFIX)gcc
-*_GCC5_X64_SLINK_PATH = DEF(GCC5_X64_PREFIX)gcc-ar
-*_GCC5_X64_DLINK_PATH = DEF(GCC5_X64_PREFIX)gcc
-*_GCC5_X64_ASLDLINK_PATH = DEF(GCC5_X64_PREFIX)gcc
-*_GCC5_X64_ASM_PATH = DEF(GCC5_X64_PREFIX)gcc
-*_GCC5_X64_PP_PATH = DEF(GCC5_X64_PREFIX)gcc
-*_GCC5_X64_VFRPP_PATH = DEF(GCC5_X64_PREFIX)gcc
-*_GCC5_X64_ASLCC_PATH = DEF(GCC5_X64_PREFIX)gcc
-*_GCC5_X64_ASLPP_PATH = DEF(GCC5_X64_PREFIX)gcc
-*_GCC5_X64_RC_PATH = DEF(GCC5_X64_PREFIX)objcopy
-
-*_GCC5_X64_ASLCC_FLAGS = DEF(GCC5_ASLCC_FLAGS) -m64
-*_GCC5_X64_ASLDLINK_FLAGS = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64
-*_GCC5_X64_ASM_FLAGS = DEF(GCC5_ASM_FLAGS) -m64
-*_GCC5_X64_DLINK2_FLAGS = DEF(GCC5_X64_DLINK2_FLAGS)
-*_GCC5_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS)
-*_GCC5_X64_OBJCOPY_FLAGS =
-*_GCC5_X64_NASM_FLAGS = -f elf64
-
- DEBUG_GCC5_X64_CC_FLAGS = DEF(GCC5_X64_CC_FLAGS) -flto -DUSING_LTO
- DEBUG_GCC5_X64_DLINK_FLAGS = DEF(GCC5_X64_DLINK_FLAGS) -flto -Os
-
-RELEASE_GCC5_X64_CC_FLAGS = DEF(GCC5_X64_CC_FLAGS) -flto -DUSING_LTO -Wno-unused-but-set-variable -Wno-unused-const-variable
-RELEASE_GCC5_X64_DLINK_FLAGS = DEF(GCC5_X64_DLINK_FLAGS) -flto -Os
-
- NOOPT_GCC5_X64_CC_FLAGS = DEF(GCC5_X64_CC_FLAGS) -O0
- NOOPT_GCC5_X64_DLINK_FLAGS = DEF(GCC5_X64_DLINK_FLAGS) -O0
-
-##################
-# GCC5 ARM definitions
-##################
-*_GCC5_ARM_CC_PATH = ENV(GCC5_ARM_PREFIX)gcc
-*_GCC5_ARM_SLINK_PATH = ENV(GCC5_ARM_PREFIX)gcc-ar
-*_GCC5_ARM_DLINK_PATH = ENV(GCC5_ARM_PREFIX)gcc
-*_GCC5_ARM_ASLDLINK_PATH = ENV(GCC5_ARM_PREFIX)gcc
-*_GCC5_ARM_ASM_PATH = ENV(GCC5_ARM_PREFIX)gcc
-*_GCC5_ARM_PP_PATH = ENV(GCC5_ARM_PREFIX)gcc
-*_GCC5_ARM_VFRPP_PATH = ENV(GCC5_ARM_PREFIX)gcc
-*_GCC5_ARM_ASLCC_PATH = ENV(GCC5_ARM_PREFIX)gcc
-*_GCC5_ARM_ASLPP_PATH = ENV(GCC5_ARM_PREFIX)gcc
-*_GCC5_ARM_RC_PATH = ENV(GCC5_ARM_PREFIX)objcopy
-
-*_GCC5_ARM_ASLCC_FLAGS = DEF(GCC5_ASLCC_FLAGS)
-*_GCC5_ARM_ASLDLINK_FLAGS = DEF(GCC5_ARM_ASLDLINK_FLAGS)
-*_GCC5_ARM_ASM_FLAGS = DEF(GCC5_ARM_ASM_FLAGS)
-*_GCC5_ARM_DLINK2_FLAGS = DEF(GCC5_ARM_DLINK2_FLAGS)
-*_GCC5_ARM_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS)
-*_GCC5_ARM_PLATFORM_FLAGS = -march=armv7-a -mfloat-abi=soft
-*_GCC5_ARM_PP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
-*_GCC5_ARM_RC_FLAGS = DEF(GCC_ARM_RC_FLAGS)
-*_GCC5_ARM_VFRPP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS)
-*_GCC5_ARM_CC_XIPFLAGS = DEF(GCC5_ARM_CC_XIPFLAGS)
-
- DEBUG_GCC5_ARM_CC_FLAGS = DEF(GCC5_ARM_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable
- DEBUG_GCC5_ARM_DLINK_FLAGS = DEF(GCC5_ARM_DLINK_FLAGS) -flto -Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm
-
-RELEASE_GCC5_ARM_CC_FLAGS = DEF(GCC5_ARM_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable
-RELEASE_GCC5_ARM_DLINK_FLAGS = DEF(GCC5_ARM_DLINK_FLAGS) -flto -Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm
-
- NOOPT_GCC5_ARM_CC_FLAGS = DEF(GCC5_ARM_CC_FLAGS) -O0
- NOOPT_GCC5_ARM_DLINK_FLAGS = DEF(GCC5_ARM_DLINK_FLAGS) -O0
-
-##################
-# GCC5 AARCH64 definitions
-##################
-*_GCC5_AARCH64_CC_PATH = ENV(GCC5_AARCH64_PREFIX)gcc
-*_GCC5_AARCH64_SLINK_PATH = ENV(GCC5_AARCH64_PREFIX)gcc-ar
-*_GCC5_AARCH64_DLINK_PATH = ENV(GCC5_AARCH64_PREFIX)gcc
-*_GCC5_AARCH64_ASLDLINK_PATH = ENV(GCC5_AARCH64_PREFIX)gcc
-*_GCC5_AARCH64_ASM_PATH = ENV(GCC5_AARCH64_PREFIX)gcc
-*_GCC5_AARCH64_PP_PATH = ENV(GCC5_AARCH64_PREFIX)gcc
-*_GCC5_AARCH64_VFRPP_PATH = ENV(GCC5_AARCH64_PREFIX)gcc
-*_GCC5_AARCH64_ASLCC_PATH = ENV(GCC5_AARCH64_PREFIX)gcc
-*_GCC5_AARCH64_ASLPP_PATH = ENV(GCC5_AARCH64_PREFIX)gcc
-*_GCC5_AARCH64_RC_PATH = ENV(GCC5_AARCH64_PREFIX)objcopy
-
-*_GCC5_AARCH64_ASLCC_FLAGS = DEF(GCC5_ASLCC_FLAGS)
-*_GCC5_AARCH64_ASLDLINK_FLAGS = DEF(GCC5_AARCH64_ASLDLINK_FLAGS)
-*_GCC5_AARCH64_ASM_FLAGS = DEF(GCC5_AARCH64_ASM_FLAGS)
-*_GCC5_AARCH64_DLINK2_FLAGS = DEF(GCC5_AARCH64_DLINK2_FLAGS)
-*_GCC5_AARCH64_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS)
-*_GCC5_AARCH64_PLATFORM_FLAGS =
-*_GCC5_AARCH64_PP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
-*_GCC5_AARCH64_RC_FLAGS = DEF(GCC_AARCH64_RC_FLAGS) DEF(GCC_AARCH64_RC_BTI_FLAGS)
-*_GCC5_AARCH64_VFRPP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS)
-*_GCC5_AARCH64_CC_XIPFLAGS = DEF(GCC5_AARCH64_CC_XIPFLAGS)
-
- DEBUG_GCC5_AARCH64_CC_FLAGS = DEF(GCC5_AARCH64_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable
- DEBUG_GCC5_AARCH64_DLINK_FLAGS = DEF(GCC5_AARCH64_DLINK_FLAGS) -flto -Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64 -Wno-lto-type-mismatch
- DEBUG_GCC5_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20
-
-RELEASE_GCC5_AARCH64_CC_FLAGS = DEF(GCC5_AARCH64_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable
-RELEASE_GCC5_AARCH64_DLINK_FLAGS = DEF(GCC5_AARCH64_DLINK_FLAGS) -flto -Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64 -Wno-lto-type-mismatch
-RELEASE_GCC5_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20
-
- NOOPT_GCC5_AARCH64_CC_FLAGS = DEF(GCC5_AARCH64_CC_FLAGS) -O0
- NOOPT_GCC5_AARCH64_DLINK_FLAGS = DEF(GCC5_AARCH64_DLINK_FLAGS) -O0
- NOOPT_GCC5_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 -O0
-
-####################################################################################
-#
-# GCC RISC-V This configuration is used to compile under Linux to produce
-# PE/COFF binaries using GCC RISC-V tool chain
-#
-####################################################################################
-
-##################
-# GCC5 RISCV64 definitions
-##################
-*_GCC5_RISCV64_OBJCOPY_PATH = ENV(GCC5_RISCV64_PREFIX)objcopy
-*_GCC5_RISCV64_CC_PATH = ENV(GCC5_RISCV64_PREFIX)gcc
-*_GCC5_RISCV64_SLINK_PATH = ENV(GCC5_RISCV64_PREFIX)gcc-ar
-*_GCC5_RISCV64_DLINK_PATH = ENV(GCC5_RISCV64_PREFIX)gcc
-*_GCC5_RISCV64_ASLDLINK_PATH = ENV(GCC5_RISCV64_PREFIX)gcc
-*_GCC5_RISCV64_ASM_PATH = ENV(GCC5_RISCV64_PREFIX)gcc
-*_GCC5_RISCV64_PP_PATH = ENV(GCC5_RISCV64_PREFIX)gcc
-*_GCC5_RISCV64_VFRPP_PATH = ENV(GCC5_RISCV64_PREFIX)gcc
-*_GCC5_RISCV64_ASLCC_PATH = ENV(GCC5_RISCV64_PREFIX)gcc
-*_GCC5_RISCV64_ASLPP_PATH = ENV(GCC5_RISCV64_PREFIX)gcc
-*_GCC5_RISCV64_RC_PATH = ENV(GCC5_RISCV64_PREFIX)objcopy
-
-*_GCC5_RISCV64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS)
-*_GCC5_RISCV64_ASLDLINK_FLAGS = DEF(GCC5_RISCV32_RISCV64_ASLDLINK_FLAGS)
-*_GCC5_RISCV64_ASM_FLAGS = DEF(GCC5_RISCV64_ASM_FLAGS)
-*_GCC5_RISCV64_CC_FLAGS = DEF(GCC5_RISCV64_CC_FLAGS) -save-temps
-*_GCC5_RISCV64_DLINK_FLAGS = DEF(GCC5_RISCV64_DLINK_FLAGS)
-*_GCC5_RISCV64_DLINK2_FLAGS = DEF(GCC5_RISCV64_DLINK2_FLAGS)
-*_GCC5_RISCV64_RC_FLAGS = DEF(GCC_RISCV64_RC_FLAGS)
-*_GCC5_RISCV64_OBJCOPY_FLAGS =
-*_GCC5_RISCV64_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS)
-*_GCC5_RISCV64_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(GCC5_RISCV_OPENSBI_TYPES)
-
-##################
-# GCC5 LOONGARCH64 definitions
-##################
-*_GCC5_LOONGARCH64_OBJCOPY_PATH = ENV(GCC5_LOONGARCH64_PREFIX)objcopy
-*_GCC5_LOONGARCH64_CC_PATH = ENV(GCC5_LOONGARCH64_PREFIX)gcc
-*_GCC5_LOONGARCH64_SLINK_PATH = ENV(GCC5_LOONGARCH64_PREFIX)gcc-ar
-*_GCC5_LOONGARCH64_DLINK_PATH = ENV(GCC5_LOONGARCH64_PREFIX)gcc
-*_GCC5_LOONGARCH64_ASLDLINK_PATH = ENV(GCC5_LOONGARCH64_PREFIX)gcc
-*_GCC5_LOONGARCH64_ASM_PATH = ENV(GCC5_LOONGARCH64_PREFIX)gcc
-*_GCC5_LOONGARCH64_PP_PATH = ENV(GCC5_LOONGARCH64_PREFIX)gcc
-*_GCC5_LOONGARCH64_VFRPP_PATH = ENV(GCC5_LOONGARCH64_PREFIX)gcc
-*_GCC5_LOONGARCH64_ASLCC_PATH = ENV(GCC5_LOONGARCH64_PREFIX)gcc
-*_GCC5_LOONGARCH64_ASLPP_PATH = ENV(GCC5_LOONGARCH64_PREFIX)gcc
-*_GCC5_LOONGARCH64_RC_PATH = ENV(GCC5_LOONGARCH64_PREFIX)objcopy
-
-*_GCC5_LOONGARCH64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS)
-*_GCC5_LOONGARCH64_ASLDLINK_FLAGS = DEF(GCC5_LOONGARCH64_ASLDLINK_FLAGS)
-*_GCC5_LOONGARCH64_ASM_FLAGS = DEF(GCC5_LOONGARCH64_ASM_FLAGS)
-*_GCC5_LOONGARCH64_DLINK_FLAGS = DEF(GCC5_LOONGARCH64_DLINK_FLAGS)
-*_GCC5_LOONGARCH64_DLINK2_FLAGS = DEF(GCC5_LOONGARCH64_DLINK2_FLAGS)
-*_GCC5_LOONGARCH64_RC_FLAGS = DEF(GCC_LOONGARCH64_RC_FLAGS)
-*_GCC5_LOONGARCH64_OBJCOPY_FLAGS =
-*_GCC5_LOONGARCH64_NASM_FLAGS = -f elf32
-*_GCC5_LOONGARCH64_PP_FLAGS = DEF(GCC5_LOONGARCH64_PP_FLAGS)
-
-DEBUG_GCC5_LOONGARCH64_CC_FLAGS = DEF(GCC5_LOONGARCH64_CC_FLAGS)
-RELEASE_GCC5_LOONGARCH64_CC_FLAGS = DEF(GCC5_LOONGARCH64_CC_FLAGS) -Wno-unused-but-set-variable -Wno-unused-variable
-
-####################################################################################
-#
-# GCC - This configuration is used to compile under Linux to produce
-# PE/COFF binaries using GCC 5 or newer
-#
-####################################################################################
-*_GCC_*_*_FAMILY = GCC
-
-*_GCC_*_MAKE_PATH = DEF(GCC_HOST_PREFIX)make
-*_GCC_*_*_DLL = ENV(GCC_DLL)
-*_GCC_*_ASL_PATH = DEF(UNIX_IASL_BIN)
-
-*_GCC_*_PP_FLAGS = DEF(GCC_PP_FLAGS)
-*_GCC_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS)
-*_GCC_*_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS)
-*_GCC_*_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS)
-*_GCC_*_APP_FLAGS =
-*_GCC_*_ASL_FLAGS = DEF(IASL_FLAGS)
-*_GCC_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS)
-*_GCC_*_DEPS_FLAGS = DEF(GCC_DEPS_FLAGS)
-
-##################
-# GCC IA32 definitions
-##################
-*_GCC_IA32_OBJCOPY_PATH = DEF(GCC_IA32_PREFIX)objcopy
-*_GCC_IA32_CC_PATH = DEF(GCC_IA32_PREFIX)gcc
-*_GCC_IA32_SLINK_PATH = DEF(GCC_IA32_PREFIX)gcc-ar
-*_GCC_IA32_DLINK_PATH = DEF(GCC_IA32_PREFIX)gcc
-*_GCC_IA32_ASLDLINK_PATH = DEF(GCC_IA32_PREFIX)gcc
-*_GCC_IA32_ASM_PATH = DEF(GCC_IA32_PREFIX)gcc
-*_GCC_IA32_PP_PATH = DEF(GCC_IA32_PREFIX)gcc
-*_GCC_IA32_VFRPP_PATH = DEF(GCC_IA32_PREFIX)gcc
-*_GCC_IA32_ASLCC_PATH = DEF(GCC_IA32_PREFIX)gcc
-*_GCC_IA32_ASLPP_PATH = DEF(GCC_IA32_PREFIX)gcc
-*_GCC_IA32_RC_PATH = DEF(GCC_IA32_PREFIX)objcopy
-
-*_GCC_IA32_ASLCC_FLAGS = DEF(GCC5_ASLCC_FLAGS) -m32
-*_GCC_IA32_ASLDLINK_FLAGS = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386 -no-pie
-*_GCC_IA32_ASM_FLAGS = DEF(GCC5_ASM_FLAGS) -m32 -march=i386
-*_GCC_IA32_DLINK2_FLAGS = DEF(GCC5_IA32_DLINK2_FLAGS) -no-pie
-*_GCC_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS)
-*_GCC_IA32_OBJCOPY_FLAGS =
-*_GCC_IA32_NASM_FLAGS = -f elf32
-
- DEBUG_GCC_IA32_CC_FLAGS = DEF(GCC5_IA32_CC_FLAGS) -flto
- DEBUG_GCC_IA32_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,-m,elf_i386,--oformat=elf32-i386
-
-RELEASE_GCC_IA32_CC_FLAGS = DEF(GCC5_IA32_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable
-RELEASE_GCC_IA32_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,-m,elf_i386,--oformat=elf32-i386
-
- NOOPT_GCC_IA32_CC_FLAGS = DEF(GCC5_IA32_CC_FLAGS) -O0
- NOOPT_GCC_IA32_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -Wl,-m,elf_i386,--oformat=elf32-i386 -O0
-
-##################
-# GCC X64 definitions
-##################
-*_GCC_X64_OBJCOPY_PATH = DEF(GCC_X64_PREFIX)objcopy
-*_GCC_X64_CC_PATH = DEF(GCC_X64_PREFIX)gcc
-*_GCC_X64_SLINK_PATH = DEF(GCC_X64_PREFIX)gcc-ar
-*_GCC_X64_DLINK_PATH = DEF(GCC_X64_PREFIX)gcc
-*_GCC_X64_ASLDLINK_PATH = DEF(GCC_X64_PREFIX)gcc
-*_GCC_X64_ASM_PATH = DEF(GCC_X64_PREFIX)gcc
-*_GCC_X64_PP_PATH = DEF(GCC_X64_PREFIX)gcc
-*_GCC_X64_VFRPP_PATH = DEF(GCC_X64_PREFIX)gcc
-*_GCC_X64_ASLCC_PATH = DEF(GCC_X64_PREFIX)gcc
-*_GCC_X64_ASLPP_PATH = DEF(GCC_X64_PREFIX)gcc
-*_GCC_X64_RC_PATH = DEF(GCC_X64_PREFIX)objcopy
-
-*_GCC_X64_ASLCC_FLAGS = DEF(GCC5_ASLCC_FLAGS) -m64
-*_GCC_X64_ASLDLINK_FLAGS = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64
-*_GCC_X64_ASM_FLAGS = DEF(GCC5_ASM_FLAGS) -m64
-*_GCC_X64_DLINK2_FLAGS = DEF(GCC5_X64_DLINK2_FLAGS)
-*_GCC_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS)
-*_GCC_X64_OBJCOPY_FLAGS =
-*_GCC_X64_NASM_FLAGS = -f elf64
-
- DEBUG_GCC_X64_CC_FLAGS = DEF(GCC5_X64_CC_FLAGS) -flto -DUSING_LTO
- DEBUG_GCC_X64_DLINK_FLAGS = DEF(GCC5_X64_DLINK_FLAGS) -flto -Os
-
-RELEASE_GCC_X64_CC_FLAGS = DEF(GCC5_X64_CC_FLAGS) -flto -DUSING_LTO -Wno-unused-but-set-variable -Wno-unused-const-variable
-RELEASE_GCC_X64_DLINK_FLAGS = DEF(GCC5_X64_DLINK_FLAGS) -flto -Os
-
- NOOPT_GCC_X64_CC_FLAGS = DEF(GCC5_X64_CC_FLAGS) -O0
- NOOPT_GCC_X64_DLINK_FLAGS = DEF(GCC5_X64_DLINK_FLAGS) -O0
-
-##################
-# GCC ARM definitions
-##################
-*_GCC_ARM_CC_PATH = ENV(GCC_ARM_PREFIX)gcc
-*_GCC_ARM_SLINK_PATH = ENV(GCC_ARM_PREFIX)gcc-ar
-*_GCC_ARM_DLINK_PATH = ENV(GCC_ARM_PREFIX)gcc
-*_GCC_ARM_ASLDLINK_PATH = ENV(GCC_ARM_PREFIX)gcc
-*_GCC_ARM_ASM_PATH = ENV(GCC_ARM_PREFIX)gcc
-*_GCC_ARM_PP_PATH = ENV(GCC_ARM_PREFIX)gcc
-*_GCC_ARM_VFRPP_PATH = ENV(GCC_ARM_PREFIX)gcc
-*_GCC_ARM_ASLCC_PATH = ENV(GCC_ARM_PREFIX)gcc
-*_GCC_ARM_ASLPP_PATH = ENV(GCC_ARM_PREFIX)gcc
-*_GCC_ARM_RC_PATH = ENV(GCC_ARM_PREFIX)objcopy
-
-*_GCC_ARM_ASLCC_FLAGS = DEF(GCC5_ASLCC_FLAGS)
-*_GCC_ARM_ASLDLINK_FLAGS = DEF(GCC5_ARM_ASLDLINK_FLAGS)
-*_GCC_ARM_ASM_FLAGS = DEF(GCC5_ARM_ASM_FLAGS)
-*_GCC_ARM_DLINK2_FLAGS = DEF(GCC5_ARM_DLINK2_FLAGS)
-*_GCC_ARM_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS)
-*_GCC_ARM_PLATFORM_FLAGS = -march=armv7-a -mfloat-abi=soft
-*_GCC_ARM_PP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
-*_GCC_ARM_RC_FLAGS = DEF(GCC_ARM_RC_FLAGS)
-*_GCC_ARM_VFRPP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS)
-*_GCC_ARM_CC_XIPFLAGS = DEF(GCC5_ARM_CC_XIPFLAGS)
-
- DEBUG_GCC_ARM_CC_FLAGS = DEF(GCC5_ARM_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable
- DEBUG_GCC_ARM_DLINK_FLAGS = DEF(GCC5_ARM_DLINK_FLAGS) -flto -Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm
-
-RELEASE_GCC_ARM_CC_FLAGS = DEF(GCC5_ARM_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable
-RELEASE_GCC_ARM_DLINK_FLAGS = DEF(GCC5_ARM_DLINK_FLAGS) -flto -Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm
-
- NOOPT_GCC_ARM_CC_FLAGS = DEF(GCC5_ARM_CC_FLAGS) -O0
- NOOPT_GCC_ARM_DLINK_FLAGS = DEF(GCC5_ARM_DLINK_FLAGS) -O0
-
-##################
-# GCC AARCH64 definitions
-##################
-*_GCC_AARCH64_CC_PATH = ENV(GCC_AARCH64_PREFIX)gcc
-*_GCC_AARCH64_SLINK_PATH = ENV(GCC_AARCH64_PREFIX)gcc-ar
-*_GCC_AARCH64_DLINK_PATH = ENV(GCC_AARCH64_PREFIX)gcc
-*_GCC_AARCH64_ASLDLINK_PATH = ENV(GCC_AARCH64_PREFIX)gcc
-*_GCC_AARCH64_ASM_PATH = ENV(GCC_AARCH64_PREFIX)gcc
-*_GCC_AARCH64_PP_PATH = ENV(GCC_AARCH64_PREFIX)gcc
-*_GCC_AARCH64_VFRPP_PATH = ENV(GCC_AARCH64_PREFIX)gcc
-*_GCC_AARCH64_ASLCC_PATH = ENV(GCC_AARCH64_PREFIX)gcc
-*_GCC_AARCH64_ASLPP_PATH = ENV(GCC_AARCH64_PREFIX)gcc
-*_GCC_AARCH64_RC_PATH = ENV(GCC_AARCH64_PREFIX)objcopy
-
-*_GCC_AARCH64_ASLCC_FLAGS = DEF(GCC5_ASLCC_FLAGS)
-*_GCC_AARCH64_ASLDLINK_FLAGS = DEF(GCC5_AARCH64_ASLDLINK_FLAGS)
-*_GCC_AARCH64_ASM_FLAGS = DEF(GCC5_AARCH64_ASM_FLAGS)
-*_GCC_AARCH64_DLINK2_FLAGS = DEF(GCC5_AARCH64_DLINK2_FLAGS)
-*_GCC_AARCH64_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS)
-*_GCC_AARCH64_PLATFORM_FLAGS =
-*_GCC_AARCH64_PP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
-*_GCC_AARCH64_RC_FLAGS = DEF(GCC_AARCH64_RC_FLAGS) DEF(GCC_AARCH64_RC_BTI_FLAGS)
-*_GCC_AARCH64_VFRPP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS)
-*_GCC_AARCH64_CC_XIPFLAGS = DEF(GCC5_AARCH64_CC_XIPFLAGS)
-
- DEBUG_GCC_AARCH64_CC_FLAGS = DEF(GCC5_AARCH64_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable
- DEBUG_GCC_AARCH64_DLINK_FLAGS = DEF(GCC5_AARCH64_DLINK_FLAGS) -flto -Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64 -Wno-lto-type-mismatch
- DEBUG_GCC_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20
-
-RELEASE_GCC_AARCH64_CC_FLAGS = DEF(GCC5_AARCH64_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable
-RELEASE_GCC_AARCH64_DLINK_FLAGS = DEF(GCC5_AARCH64_DLINK_FLAGS) -flto -Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64 -Wno-lto-type-mismatch
-RELEASE_GCC_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20
-
- NOOPT_GCC_AARCH64_CC_FLAGS = DEF(GCC5_AARCH64_CC_FLAGS) -O0
- NOOPT_GCC_AARCH64_DLINK_FLAGS = DEF(GCC5_AARCH64_DLINK_FLAGS) -O0
- NOOPT_GCC_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 -O0
-
-####################################################################################
-#
-# GCC RISC-V This configuration is used to compile under Linux to produce
-# PE/COFF binaries using GCC RISC-V tool chain
-#
-####################################################################################
-
-##################
-# GCC RISCV64 definitions
-##################
-*_GCC_RISCV64_OBJCOPY_PATH = ENV(GCC_RISCV64_PREFIX)objcopy
-*_GCC_RISCV64_CC_PATH = ENV(GCC_RISCV64_PREFIX)gcc
-*_GCC_RISCV64_SLINK_PATH = ENV(GCC_RISCV64_PREFIX)gcc-ar
-*_GCC_RISCV64_DLINK_PATH = ENV(GCC_RISCV64_PREFIX)gcc
-*_GCC_RISCV64_ASLDLINK_PATH = ENV(GCC_RISCV64_PREFIX)gcc
-*_GCC_RISCV64_ASM_PATH = ENV(GCC_RISCV64_PREFIX)gcc
-*_GCC_RISCV64_PP_PATH = ENV(GCC_RISCV64_PREFIX)gcc
-*_GCC_RISCV64_VFRPP_PATH = ENV(GCC_RISCV64_PREFIX)gcc
-*_GCC_RISCV64_ASLCC_PATH = ENV(GCC_RISCV64_PREFIX)gcc
-*_GCC_RISCV64_ASLPP_PATH = ENV(GCC_RISCV64_PREFIX)gcc
-*_GCC_RISCV64_RC_PATH = ENV(GCC_RISCV64_PREFIX)objcopy
-
-*_GCC_RISCV64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS)
-*_GCC_RISCV64_ASLDLINK_FLAGS = DEF(GCC5_RISCV32_RISCV64_ASLDLINK_FLAGS)
-*_GCC_RISCV64_ASM_FLAGS = DEF(GCC5_RISCV64_ASM_FLAGS)
-*_GCC_RISCV64_CC_FLAGS = DEF(GCC5_RISCV64_CC_FLAGS) -save-temps
-*_GCC_RISCV64_DLINK_FLAGS = DEF(GCC5_RISCV64_DLINK_FLAGS)
-*_GCC_RISCV64_DLINK2_FLAGS = DEF(GCC5_RISCV64_DLINK2_FLAGS)
-*_GCC_RISCV64_RC_FLAGS = DEF(GCC_RISCV64_RC_FLAGS)
-*_GCC_RISCV64_OBJCOPY_FLAGS =
-*_GCC_RISCV64_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS)
-*_GCC_RISCV64_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(GCC5_RISCV_OPENSBI_TYPES)
-
-##################
-# GCC LOONGARCH64 definitions
-##################
-*_GCC_LOONGARCH64_OBJCOPY_PATH = ENV(GCC_LOONGARCH64_PREFIX)objcopy
-*_GCC_LOONGARCH64_CC_PATH = ENV(GCC_LOONGARCH64_PREFIX)gcc
-*_GCC_LOONGARCH64_SLINK_PATH = ENV(GCC_LOONGARCH64_PREFIX)gcc-ar
-*_GCC_LOONGARCH64_DLINK_PATH = ENV(GCC_LOONGARCH64_PREFIX)gcc
-*_GCC_LOONGARCH64_ASLDLINK_PATH = ENV(GCC_LOONGARCH64_PREFIX)gcc
-*_GCC_LOONGARCH64_ASM_PATH = ENV(GCC_LOONGARCH64_PREFIX)gcc
-*_GCC_LOONGARCH64_PP_PATH = ENV(GCC_LOONGARCH64_PREFIX)gcc
-*_GCC_LOONGARCH64_VFRPP_PATH = ENV(GCC_LOONGARCH64_PREFIX)gcc
-*_GCC_LOONGARCH64_ASLCC_PATH = ENV(GCC_LOONGARCH64_PREFIX)gcc
-*_GCC_LOONGARCH64_ASLPP_PATH = ENV(GCC_LOONGARCH64_PREFIX)gcc
-*_GCC_LOONGARCH64_RC_PATH = ENV(GCC_LOONGARCH64_PREFIX)objcopy
-
-*_GCC_LOONGARCH64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS)
-*_GCC_LOONGARCH64_ASLDLINK_FLAGS = DEF(GCC5_LOONGARCH64_ASLDLINK_FLAGS)
-*_GCC_LOONGARCH64_ASM_FLAGS = DEF(GCC5_LOONGARCH64_ASM_FLAGS)
-*_GCC_LOONGARCH64_DLINK_FLAGS = DEF(GCC5_LOONGARCH64_DLINK_FLAGS)
-*_GCC_LOONGARCH64_DLINK2_FLAGS = DEF(GCC5_LOONGARCH64_DLINK2_FLAGS)
-*_GCC_LOONGARCH64_RC_FLAGS = DEF(GCC_LOONGARCH64_RC_FLAGS)
-*_GCC_LOONGARCH64_OBJCOPY_FLAGS =
-*_GCC_LOONGARCH64_NASM_FLAGS = -f elf32
-*_GCC_LOONGARCH64_PP_FLAGS = DEF(GCC5_LOONGARCH64_PP_FLAGS)
-
-DEBUG_GCC_LOONGARCH64_CC_FLAGS = DEF(GCC5_LOONGARCH64_CC_FLAGS)
-RELEASE_GCC_LOONGARCH64_CC_FLAGS = DEF(GCC5_LOONGARCH64_CC_FLAGS) -Wno-unused-but-set-variable -Wno-unused-variable
-
-####################################################################################
-#
-# CLANGPDB - This configuration is used to compile under Windows/Linux/Mac to produce
-# PE/COFF binaries using LLVM/Clang/LLD with Link Time Optimization enabled
-#
-####################################################################################
-*_CLANGPDB_*_*_FAMILY = GCC
-*_CLANGPDB_*_*_BUILDRULEFAMILY = CLANGPDB
-*_CLANGPDB_*_MAKE_PATH = ENV(CLANG_HOST_BIN)make
-*_CLANGPDB_*_*_DLL = ENV(CLANGPDB_DLL)
-*_CLANGPDB_*_ASL_PATH = DEF(UNIX_IASL_BIN)
-
-*_CLANGPDB_*_APP_FLAGS =
-*_CLANGPDB_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS)
-*_CLANGPDB_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS)
-*_CLANGPDB_*_ASLDLINK_FLAGS = DEF(MSFT_ASLDLINK_FLAGS)
-*_CLANGPDB_*_DEPS_FLAGS = DEF(GCC_DEPS_FLAGS)
-
-DEFINE CLANGPDB_IA32_PREFIX = ENV(CLANG_BIN)
-DEFINE CLANGPDB_X64_PREFIX = ENV(CLANG_BIN)
-
-DEFINE CLANGPDB_IA32_TARGET = -target i686-unknown-windows-gnu
-DEFINE CLANGPDB_X64_TARGET = -target x86_64-unknown-windows-gnu
-
-DEFINE CLANGPDB_WARNING_OVERRIDES = -Wno-parentheses-equality -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare -Wno-empty-body -Wno-unused-const-variable -Wno-varargs -Wno-unknown-warning-option -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-unaligned-access -Wno-microsoft-enum-forward-reference
-DEFINE CLANGPDB_ALL_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) DEF(CLANGPDB_WARNING_OVERRIDES) -fno-stack-protector -funsigned-char -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -Wno-address -Wno-shift-negative-value -Wno-unknown-pragmas -Wno-incompatible-library-redeclaration -Wno-null-dereference -mno-implicit-float -mms-bitfields -mno-stack-arg-probe -nostdlib -nostdlibinc -fseh-exceptions
-
-###########################
-# CLANGPDB IA32 definitions
-###########################
-*_CLANGPDB_IA32_CC_PATH = DEF(CLANGPDB_IA32_PREFIX)clang
-*_CLANGPDB_IA32_SLINK_PATH = DEF(CLANGPDB_IA32_PREFIX)llvm-lib
-*_CLANGPDB_IA32_DLINK_PATH = DEF(CLANGPDB_IA32_PREFIX)lld-link
-*_CLANGPDB_IA32_ASLDLINK_PATH = DEF(CLANGPDB_IA32_PREFIX)lld-link
-*_CLANGPDB_IA32_ASM_PATH = DEF(CLANGPDB_IA32_PREFIX)clang
-*_CLANGPDB_IA32_PP_PATH = DEF(CLANGPDB_IA32_PREFIX)clang
-*_CLANGPDB_IA32_VFRPP_PATH = DEF(CLANGPDB_IA32_PREFIX)clang
-*_CLANGPDB_IA32_ASLCC_PATH = DEF(CLANGPDB_IA32_PREFIX)clang
-*_CLANGPDB_IA32_ASLPP_PATH = DEF(CLANGPDB_IA32_PREFIX)clang
-*_CLANGPDB_IA32_RC_PATH = DEF(CLANGPDB_IA32_PREFIX)llvm-rc
-
-*_CLANGPDB_IA32_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto DEF(CLANGPDB_IA32_TARGET)
-*_CLANGPDB_IA32_ASM_FLAGS = DEF(GCC_ASM_FLAGS) -m32 -march=i386 DEF(CLANGPDB_IA32_TARGET)
-*_CLANGPDB_IA32_OBJCOPY_FLAGS =
-*_CLANGPDB_IA32_NASM_FLAGS = -f win32
-*_CLANGPDB_IA32_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANGPDB_IA32_TARGET)
-*_CLANGPDB_IA32_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANGPDB_IA32_TARGET)
-*_CLANGPDB_IA32_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANGPDB_IA32_TARGET)
-
-DEBUG_CLANGPDB_IA32_CC_FLAGS = DEF(CLANGPDB_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANGPDB_IA32_TARGET) -gcodeview -malign-double
-DEBUG_CLANGPDB_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /ALIGN:32 /FILEALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DEBUG:GHASH /MLLVM:-exception-model=wineh /lldmap
-DEBUG_CLANGPDB_IA32_DLINK2_FLAGS =
-
-RELEASE_CLANGPDB_IA32_CC_FLAGS = DEF(CLANGPDB_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANGPDB_IA32_TARGET) -malign-double
-RELEASE_CLANGPDB_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /ALIGN:32 /FILEALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /MERGE:.rdata=.data /MLLVM:-exception-model=wineh /lldmap
-RELEASE_CLANGPDB_IA32_DLINK2_FLAGS =
-
-NOOPT_CLANGPDB_IA32_CC_FLAGS = DEF(CLANGPDB_ALL_CC_FLAGS) -m32 -O0 -march=i586 DEF(CLANGPDB_IA32_TARGET) -gcodeview -malign-double
-NOOPT_CLANGPDB_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /ALIGN:32 /FILEALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DEBUG:GHASH /MLLVM:-exception-model=wineh /lldmap
-NOOPT_CLANGPDB_IA32_DLINK2_FLAGS =
-
-##########################
-# CLANGWIN X64 definitions
-##########################
-*_CLANGPDB_X64_CC_PATH = DEF(CLANGPDB_X64_PREFIX)clang
-*_CLANGPDB_X64_SLINK_PATH = DEF(CLANGPDB_X64_PREFIX)llvm-lib
-*_CLANGPDB_X64_DLINK_PATH = DEF(CLANGPDB_X64_PREFIX)lld-link
-*_CLANGPDB_X64_ASLDLINK_PATH = DEF(CLANGPDB_X64_PREFIX)lld-link
-*_CLANGPDB_X64_ASM_PATH = DEF(CLANGPDB_X64_PREFIX)clang
-*_CLANGPDB_X64_PP_PATH = DEF(CLANGPDB_X64_PREFIX)clang
-*_CLANGPDB_X64_VFRPP_PATH = DEF(CLANGPDB_X64_PREFIX)clang
-*_CLANGPDB_X64_ASLCC_PATH = DEF(CLANGPDB_X64_PREFIX)clang
-*_CLANGPDB_X64_ASLPP_PATH = DEF(CLANGPDB_X64_PREFIX)clang
-*_CLANGPDB_X64_RC_PATH = DEF(CLANGPDB_IA32_PREFIX)llvm-rc
-
-*_CLANGPDB_X64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto DEF(CLANGPDB_X64_TARGET)
-*_CLANGPDB_X64_ASM_FLAGS = DEF(GCC_ASM_FLAGS) -m64 DEF(CLANGPDB_X64_TARGET)
-*_CLANGPDB_X64_OBJCOPY_FLAGS =
-*_CLANGPDB_X64_NASM_FLAGS = -f win64
-*_CLANGPDB_X64_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANGPDB_X64_TARGET)
-*_CLANGPDB_X64_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANGPDB_X64_TARGET)
-*_CLANGPDB_X64_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANGPDB_X64_TARGET)
-
-DEBUG_CLANGPDB_X64_CC_FLAGS = DEF(CLANGPDB_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -Oz -flto DEF(CLANGPDB_X64_TARGET) -gcodeview -funwind-tables
-DEBUG_CLANGPDB_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /ALIGN:32 /FILEALIGN:32 /Machine:X64 /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DEBUG:GHASH /MLLVM:-exception-model=wineh /lldmap
-DEBUG_CLANGPDB_X64_DLINK2_FLAGS =
-DEBUG_CLANGPDB_X64_GENFW_FLAGS = --keepexceptiontable
-
-RELEASE_CLANGPDB_X64_CC_FLAGS = DEF(CLANGPDB_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -Oz -flto DEF(CLANGPDB_X64_TARGET) -fno-unwind-tables
-RELEASE_CLANGPDB_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /ALIGN:32 /FILEALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /MERGE:.rdata=.data /MLLVM:-exception-model=wineh /lldmap
-RELEASE_CLANGPDB_X64_DLINK2_FLAGS =
-RELEASE_CLANGPDB_X64_GENFW_FLAGS =
-
-NOOPT_CLANGPDB_X64_CC_FLAGS = DEF(CLANGPDB_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -O0 DEF(CLANGPDB_X64_TARGET) -gcodeview -funwind-tables
-NOOPT_CLANGPDB_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /ALIGN:32 /FILEALIGN:32 /Machine:X64 /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DEBUG:GHASH /MLLVM:-exception-model=wineh /lldmap
-NOOPT_CLANGPDB_X64_DLINK2_FLAGS =
-NOOPT_CLANGPDB_X64_GENFW_FLAGS = --keepexceptiontable
-
-####################################################################################
-#
-# CLANGDWARF - This configuration is used to compile under Windows/Linux/Mac to produce
-# ELF binaries using LLVM/Clang/LLD with Link Time Optimization enabled
-#
-####################################################################################
-*_CLANGDWARF_*_*_FAMILY = GCC
-
-*_CLANGDWARF_*_MAKE_PATH = ENV(CLANG_HOST_BIN)make
-*_CLANGDWARF_*_*_DLL = ENV(CLANGDWARF_DLL)
-*_CLANGDWARF_*_ASL_PATH = DEF(UNIX_IASL_BIN)
-
-*_CLANGDWARF_*_APP_FLAGS =
-*_CLANGDWARF_*_ASL_FLAGS = DEF(IASL_FLAGS)
-*_CLANGDWARF_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS)
-
-DEFINE CLANGDWARF_IA32_PREFIX = ENV(CLANG_BIN)
-DEFINE CLANGDWARF_X64_PREFIX = ENV(CLANG_BIN)
-
-# LLVM/CLANG doesn't support -n link option. So, it can't share the same IA32_X64_DLINK_COMMON flag.
-# LLVM/CLANG doesn't support common page size. So, it can't share the same GccBase.lds script.
-DEFINE CLANGDWARF_IA32_X64_DLINK_COMMON = -nostdlib -Wl,-q,--gc-sections -z max-page-size=0x40
-DEFINE CLANGDWARF_DLINK2_FLAGS_COMMON = -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/ClangBase.lds
-DEFINE CLANGDWARF_IA32_X64_ASLDLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0 DEF(CLANGDWARF_DLINK2_FLAGS_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable
-DEFINE CLANGDWARF_IA32_X64_DLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive -Wl,-z,notext
-DEFINE CLANGDWARF_IA32_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x220 DEF(CLANGDWARF_DLINK2_FLAGS_COMMON)
-DEFINE CLANGDWARF_X64_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 DEF(CLANGDWARF_DLINK2_FLAGS_COMMON)
-
-DEFINE CLANGDWARF_IA32_TARGET = -target i686-pc-linux-gnu
-DEFINE CLANGDWARF_X64_TARGET = -target x86_64-pc-linux-gnu
-
-DEFINE CLANGDWARF_WARNING_OVERRIDES = -Wno-parentheses-equality -Wno-empty-body -Wno-unused-const-variable -Wno-varargs -Wno-unknown-warning-option -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-unaligned-access -Wno-unneeded-internal-declaration
-DEFINE CLANGDWARF_ALL_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) DEF(CLANGDWARF_WARNING_OVERRIDES) -fno-stack-protector -mms-bitfields -Wno-address -Wno-shift-negative-value -Wno-unknown-pragmas -Wno-incompatible-library-redeclaration -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -msoft-float -mno-implicit-float -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -funsigned-char -fno-ms-extensions -Wno-null-dereference
-
-###########################
-# CLANGDWARF IA32 definitions
-###########################
-*_CLANGDWARF_IA32_CC_PATH = DEF(CLANGDWARF_IA32_PREFIX)clang
-*_CLANGDWARF_IA32_SLINK_PATH = DEF(CLANGDWARF_IA32_PREFIX)llvm-ar
-*_CLANGDWARF_IA32_DLINK_PATH = DEF(CLANGDWARF_IA32_PREFIX)clang
-*_CLANGDWARF_IA32_ASLDLINK_PATH = DEF(CLANGDWARF_IA32_PREFIX)clang
-*_CLANGDWARF_IA32_ASM_PATH = DEF(CLANGDWARF_IA32_PREFIX)clang
-*_CLANGDWARF_IA32_PP_PATH = DEF(CLANGDWARF_IA32_PREFIX)clang
-*_CLANGDWARF_IA32_VFRPP_PATH = DEF(CLANGDWARF_IA32_PREFIX)clang
-*_CLANGDWARF_IA32_ASLCC_PATH = DEF(CLANGDWARF_IA32_PREFIX)clang
-*_CLANGDWARF_IA32_ASLPP_PATH = DEF(CLANGDWARF_IA32_PREFIX)clang
-*_CLANGDWARF_IA32_RC_PATH = DEF(CLANGDWARF_IA32_PREFIX)llvm-objcopy
-
-*_CLANGDWARF_IA32_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto DEF(CLANGDWARF_IA32_TARGET)
-*_CLANGDWARF_IA32_ASLDLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386 -fuse-ld=lld -no-pie
-*_CLANGDWARF_IA32_ASM_FLAGS = DEF(GCC5_ASM_FLAGS) -m32 -march=i386 DEF(CLANGDWARF_IA32_TARGET)
-*_CLANGDWARF_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS)
-*_CLANGDWARF_IA32_OBJCOPY_FLAGS =
-*_CLANGDWARF_IA32_NASM_FLAGS = -f elf32
-*_CLANGDWARF_IA32_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANGDWARF_IA32_TARGET)
-*_CLANGDWARF_IA32_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_IA32_TARGET)
-*_CLANGDWARF_IA32_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_IA32_TARGET)
-
-DEBUG_CLANGDWARF_IA32_CC_FLAGS = DEF(CLANGDWARF_ALL_CC_FLAGS) -fno-pic -fno-pie -m32 -Oz -flto -march=i586 DEF(CLANGDWARF_IA32_TARGET) -g -malign-double
-DEBUG_CLANGDWARF_IA32_DLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_i386 -Wl,--oformat,elf32-i386
-DEBUG_CLANGDWARF_IA32_DLINK2_FLAGS = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O3 -fuse-ld=lld -no-pie
-
-RELEASE_CLANGDWARF_IA32_CC_FLAGS = DEF(CLANGDWARF_ALL_CC_FLAGS) -fno-pic -fno-pie -m32 -Oz -flto -march=i586 DEF(CLANGDWARF_IA32_TARGET) -malign-double
-RELEASE_CLANGDWARF_IA32_DLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_i386 -Wl,--oformat,elf32-i386
-RELEASE_CLANGDWARF_IA32_DLINK2_FLAGS = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O3 -fuse-ld=lld -no-pie
-
-NOOPT_CLANGDWARF_IA32_CC_FLAGS = DEF(CLANGDWARF_ALL_CC_FLAGS) -fno-pic -fno-pie -m32 -O0 -march=i586 DEF(CLANGDWARF_IA32_TARGET) -g -malign-double
-NOOPT_CLANGDWARF_IA32_DLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_i386 -Wl,--oformat,elf32-i386
-NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O0 -fuse-ld=lld -no-pie
-
-##########################
-# CLANGDWARF X64 definitions
-##########################
-*_CLANGDWARF_X64_CC_PATH = DEF(CLANGDWARF_X64_PREFIX)clang
-*_CLANGDWARF_X64_SLINK_PATH = DEF(CLANGDWARF_X64_PREFIX)llvm-ar
-*_CLANGDWARF_X64_DLINK_PATH = DEF(CLANGDWARF_X64_PREFIX)clang
-*_CLANGDWARF_X64_ASLDLINK_PATH = DEF(CLANGDWARF_X64_PREFIX)clang
-*_CLANGDWARF_X64_ASM_PATH = DEF(CLANGDWARF_X64_PREFIX)clang
-*_CLANGDWARF_X64_PP_PATH = DEF(CLANGDWARF_X64_PREFIX)clang
-*_CLANGDWARF_X64_VFRPP_PATH = DEF(CLANGDWARF_X64_PREFIX)clang
-*_CLANGDWARF_X64_ASLCC_PATH = DEF(CLANGDWARF_X64_PREFIX)clang
-*_CLANGDWARF_X64_ASLPP_PATH = DEF(CLANGDWARF_X64_PREFIX)clang
-*_CLANGDWARF_X64_RC_PATH = DEF(CLANGDWARF_X64_PREFIX)llvm-objcopy
-
-*_CLANGDWARF_X64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto DEF(CLANGDWARF_X64_TARGET)
-*_CLANGDWARF_X64_ASLDLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64 -fuse-ld=lld
-*_CLANGDWARF_X64_ASM_FLAGS = DEF(GCC5_ASM_FLAGS) -m64 DEF(CLANGDWARF_X64_TARGET)
-*_CLANGDWARF_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS)
-*_CLANGDWARF_X64_OBJCOPY_FLAGS =
-*_CLANGDWARF_X64_NASM_FLAGS = -f elf64
-*_CLANGDWARF_X64_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANGDWARF_X64_TARGET)
-*_CLANGDWARF_X64_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_X64_TARGET)
-*_CLANGDWARF_X64_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_X64_TARGET)
-
-DEBUG_CLANGDWARF_X64_CC_FLAGS = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -fdirect-access-external-data -Oz -flto DEF(CLANGDWARF_X64_TARGET) -g
-DEBUG_CLANGDWARF_X64_DLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs
-DEBUG_CLANGDWARF_X64_DLINK2_FLAGS = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld
-
-RELEASE_CLANGDWARF_X64_CC_FLAGS = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -fdirect-access-external-data -Oz -flto DEF(CLANGDWARF_X64_TARGET)
-RELEASE_CLANGDWARF_X64_DLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs
-RELEASE_CLANGDWARF_X64_DLINK2_FLAGS = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld
-
-NOOPT_CLANGDWARF_X64_CC_FLAGS = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -fdirect-access-external-data -O0 DEF(CLANGDWARF_X64_TARGET) -g
-NOOPT_CLANGDWARF_X64_DLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs
-NOOPT_CLANGDWARF_X64_DLINK2_FLAGS = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O0 -fuse-ld=lld
-
-##################
-# CLANGDWARF ARM definitions
-##################
-DEFINE CLANGDWARF_ARM_TARGET = -target arm-linux-gnueabi
-DEFINE CLANGDWARF_ARM_CC_FLAGS = DEF(GCC_ARM_CC_FLAGS) DEF(CLANGDWARF_ARM_TARGET) DEF(CLANGDWARF_WARNING_OVERRIDES) -mno-movt
-DEFINE CLANGDWARF_ARM_DLINK_FLAGS = DEF(CLANGDWARF_ARM_TARGET) DEF(GCC_ARM_DLINK_FLAGS)
-
-*_CLANGDWARF_ARM_PP_FLAGS = DEF(GCC_PP_FLAGS)
-*_CLANGDWARF_ARM_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS)
-*_CLANGDWARF_ARM_APP_FLAGS =
-*_CLANGDWARF_ARM_ASL_FLAGS = DEF(IASL_FLAGS)
-*_CLANGDWARF_ARM_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS)
-*_CLANGDWARF_ARM_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS)
-
-*_CLANGDWARF_ARM_CC_PATH = ENV(CLANGDWARF_BIN)clang
-*_CLANGDWARF_ARM_ASM_PATH = ENV(CLANGDWARF_BIN)clang
-*_CLANGDWARF_ARM_PP_PATH = ENV(CLANGDWARF_BIN)clang
-*_CLANGDWARF_ARM_VFRPP_PATH = ENV(CLANGDWARF_BIN)clang
-*_CLANGDWARF_ARM_ASLCC_PATH = ENV(CLANGDWARF_BIN)clang
-*_CLANGDWARF_ARM_ASLPP_PATH = ENV(CLANGDWARF_BIN)clang
-*_CLANGDWARF_ARM_DLINK_PATH = ENV(CLANGDWARF_BIN)clang
-*_CLANGDWARF_ARM_ASLDLINK_PATH = ENV(CLANGDWARF_BIN)clang
-
-*_CLANGDWARF_ARM_SLINK_PATH = ENV(CLANGDWARF_BIN)llvm-ar
-*_CLANGDWARF_ARM_RC_PATH = ENV(CLANGDWARF_BIN)llvm-objcopy
-
-*_CLANGDWARF_ARM_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -fno-lto
-*_CLANGDWARF_ARM_ASLDLINK_FLAGS = DEF(CLANGDWARF_ARM_TARGET) DEF(GCC_ARM_ASLDLINK_FLAGS)
-*_CLANGDWARF_ARM_ASM_FLAGS = DEF(GCC_ASM_FLAGS) DEF(CLANGDWARF_ARM_TARGET) $(PLATFORM_FLAGS) -Qunused-arguments
-*_CLANGDWARF_ARM_DLINK2_FLAGS = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x220
-*_CLANGDWARF_ARM_PLATFORM_FLAGS = -march=armv7-a
-*_CLANGDWARF_ARM_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANGDWARF_ARM_TARGET) $(PLATFORM_FLAGS)
-*_CLANGDWARF_ARM_RC_FLAGS = DEF(GCC_ARM_RC_FLAGS)
-*_CLANGDWARF_ARM_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_ARM_TARGET) $(PLATFORM_FLAGS)
-*_CLANGDWARF_ARM_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_ARM_TARGET)
-*_CLANGDWARF_ARM_CC_XIPFLAGS = DEF(GCC_ARM_CC_XIPFLAGS)
-
- DEBUG_CLANGDWARF_ARM_CC_FLAGS = DEF(CLANGDWARF_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O1
- DEBUG_CLANGDWARF_ARM_DLINK_FLAGS = DEF(CLANGDWARF_ARM_DLINK_FLAGS) -flto -Wl,-O1 -fuse-ld=lld -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm -Wl,--no-pie,--no-relax
- NOOPT_CLANGDWARF_ARM_CC_FLAGS = DEF(CLANGDWARF_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -O0
- NOOPT_CLANGDWARF_ARM_DLINK_FLAGS = DEF(CLANGDWARF_ARM_DLINK_FLAGS) -fuse-ld=lld -Wl,--no-pie,--no-relax
-RELEASE_CLANGDWARF_ARM_CC_FLAGS = DEF(CLANGDWARF_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O3
-RELEASE_CLANGDWARF_ARM_DLINK_FLAGS = DEF(CLANGDWARF_ARM_DLINK_FLAGS) -flto -Wl,-O3 -fuse-ld=lld -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm -Wl,--no-pie,--no-relax
-
-##################
-# CLANGDWARF AARCH64 definitions
-##################
-DEFINE CLANGDWARF_AARCH64_TARGET = -target aarch64-linux-gnu
-DEFINE CLANGDWARF_AARCH64_CC_FLAGS = DEF(GCC_AARCH64_CC_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET) -mcmodel=small DEF(CLANGDWARF_WARNING_OVERRIDES)
-DEFINE CLANGDWARF_AARCH64_DLINK_FLAGS = DEF(CLANGDWARF_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000
-
-*_CLANGDWARF_AARCH64_PP_FLAGS = DEF(GCC_PP_FLAGS)
-*_CLANGDWARF_AARCH64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS)
-*_CLANGDWARF_AARCH64_APP_FLAGS =
-*_CLANGDWARF_AARCH64_ASL_FLAGS = DEF(IASL_FLAGS)
-*_CLANGDWARF_AARCH64_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS)
-*_CLANGDWARF_AARCH64_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS)
-
-*_CLANGDWARF_AARCH64_CC_PATH = ENV(CLANGDWARF_BIN)clang
-*_CLANGDWARF_AARCH64_ASM_PATH = ENV(CLANGDWARF_BIN)clang
-*_CLANGDWARF_AARCH64_PP_PATH = ENV(CLANGDWARF_BIN)clang
-*_CLANGDWARF_AARCH64_VFRPP_PATH = ENV(CLANGDWARF_BIN)clang
-*_CLANGDWARF_AARCH64_ASLCC_PATH = ENV(CLANGDWARF_BIN)clang
-*_CLANGDWARF_AARCH64_ASLPP_PATH = ENV(CLANGDWARF_BIN)clang
-*_CLANGDWARF_AARCH64_DLINK_PATH = ENV(CLANGDWARF_BIN)clang
-*_CLANGDWARF_AARCH64_ASLDLINK_PATH = ENV(CLANGDWARF_BIN)clang
-
-*_CLANGDWARF_AARCH64_SLINK_PATH = ENV(CLANGDWARF_BIN)llvm-ar
-*_CLANGDWARF_AARCH64_RC_PATH = ENV(CLANGDWARF_BIN)llvm-objcopy
-
-*_CLANGDWARF_AARCH64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -fno-lto
-*_CLANGDWARF_AARCH64_ASLDLINK_FLAGS = DEF(CLANGDWARF_AARCH64_TARGET) DEF(GCC_AARCH64_ASLDLINK_FLAGS)
-*_CLANGDWARF_AARCH64_ASM_FLAGS = DEF(GCC_ASM_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET) $(PLATFORM_FLAGS) -Qunused-arguments
-*_CLANGDWARF_AARCH64_DLINK_FLAGS = DEF(CLANGDWARF_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000
-*_CLANGDWARF_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20
-*_CLANGDWARF_AARCH64_DLINK2_FLAGS = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x228
-*_CLANGDWARF_AARCH64_PLATFORM_FLAGS =
-*_CLANGDWARF_AARCH64_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET) $(PLATFORM_FLAGS)
-*_CLANGDWARF_AARCH64_RC_FLAGS = DEF(GCC_AARCH64_RC_FLAGS) DEF(GCC_AARCH64_RC_BTI_FLAGS)
-*_CLANGDWARF_AARCH64_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET) $(PLATFORM_FLAGS)
-*_CLANGDWARF_AARCH64_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET)
-*_CLANGDWARF_AARCH64_CC_XIPFLAGS = -mstrict-align
-
- DEBUG_CLANGDWARF_AARCH64_CC_FLAGS = DEF(CLANGDWARF_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O1
- DEBUG_CLANGDWARF_AARCH64_DLINK_FLAGS = DEF(CLANGDWARF_AARCH64_DLINK_FLAGS) -flto -Wl,-O1 -fuse-ld=lld -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64 -Wl,--no-pie,--no-relax
- NOOPT_CLANGDWARF_AARCH64_CC_FLAGS = DEF(CLANGDWARF_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -O0
- NOOPT_CLANGDWARF_AARCH64_DLINK_FLAGS = DEF(CLANGDWARF_AARCH64_DLINK_FLAGS) -fuse-ld=lld -Wl,--no-pie,--no-relax
-RELEASE_CLANGDWARF_AARCH64_CC_FLAGS = DEF(CLANGDWARF_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O3
-RELEASE_CLANGDWARF_AARCH64_DLINK_FLAGS = DEF(CLANGDWARF_AARCH64_DLINK_FLAGS) -flto -Wl,-O3 -fuse-ld=lld -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64 -Wl,--no-pie,--no-relax
-
-##################
-# CLANGDWARF RISCV64 definitions
-##################
-DEFINE CLANGDWARF_RISCV64_TARGET = -target riscv64-linux-gnu
-DEFINE CLANGDWARF_RISCV64_CC_COMMON = DEF(GCC5_RISCV_ALL_CC_FLAGS) DEF(GCC5_RISCV_ALL_CC_FLAGS_WARNING_DISABLE) DEF(GCC5_RISCV_OPENSBI_TYPES) -march=DEF(GCC5_RISCV64_ARCH) -fno-builtin -fno-builtin-memcpy -fno-stack-protector -Wno-address -fno-asynchronous-unwind-tables -fno-unwind-tables -Wno-unused-but-set-variable -fpack-struct=8 -mcmodel=medany -mabi=lp64 -mno-relax
-DEFINE CLANGDWARF_RISCV64_CC_FLAGS = DEF(CLANGDWARF_RISCV64_CC_COMMON) DEF(CLANGDWARF_RISCV64_TARGET) DEF(CLANGDWARF_WARNING_OVERRIDES)
-
-# This is similar to GCC flags but without -n
-DEFINE CLANGDWARF_RISCV64_ALL_DLINK_COMMON = -nostdlib -Wl,-q,--gc-sections -z common-page-size=0x40
-DEFINE CLANGDWARF_RISCV64_ALL_DLINK_FLAGS = DEF(CLANGDWARF_RISCV64_ALL_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map
-DEFINE CLANGDWARF_RISCV64_DLINK_FLAGS = DEF(CLANGDWARF_RISCV64_TARGET) DEF(CLANGDWARF_RISCV64_ALL_DLINK_FLAGS) -Wl,-melf64lriscv,--oformat=elf64-littleriscv,--no-relax
-
-*_CLANGDWARF_RISCV64_PP_FLAGS = DEF(GCC_PP_FLAGS)
-*_CLANGDWARF_RISCV64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS)
-*_CLANGDWARF_RISCV64_APP_FLAGS =
-*_CLANGDWARF_RISCV64_ASL_FLAGS = DEF(IASL_FLAGS)
-*_CLANGDWARF_RISCV64_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS)
-*_CLANGDWARF_RISCV64_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS)
-*_CLANGDWARF_RISCV64_DEPS_FLAGS = DEF(GCC_DEPS_FLAGS)
-
-*_CLANGDWARF_RISCV64_CC_PATH = ENV(CLANGDWARF_BIN)clang
-*_CLANGDWARF_RISCV64_ASM_PATH = ENV(CLANGDWARF_BIN)clang
-*_CLANGDWARF_RISCV64_PP_PATH = ENV(CLANGDWARF_BIN)clang
-*_CLANGDWARF_RISCV64_VFRPP_PATH = ENV(CLANGDWARF_BIN)clang
-*_CLANGDWARF_RISCV64_ASLCC_PATH = ENV(CLANGDWARF_BIN)clang
-*_CLANGDWARF_RISCV64_ASLPP_PATH = ENV(CLANGDWARF_BIN)clang
-*_CLANGDWARF_RISCV64_DLINK_PATH = ENV(CLANGDWARF_BIN)clang
-*_CLANGDWARF_RISCV64_ASLDLINK_PATH = ENV(CLANGDWARF_BIN)clang
-
-*_CLANGDWARF_RISCV64_SLINK_PATH = ENV(CLANGDWARF_BIN)llvm-ar
-*_CLANGDWARF_RISCV64_RC_PATH = ENV(CLANGDWARF_BIN)llvm-objcopy
-
-*_CLANGDWARF_RISCV64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -fno-lto
-*_CLANGDWARF_RISCV64_ASLDLINK_FLAGS = DEF(CLANGDWARF_RISCV64_TARGET) DEF(GCC5_RISCV32_RISCV64_ASLDLINK_FLAGS)
-*_CLANGDWARF_RISCV64_ASM_FLAGS = DEF(GCC_ASM_FLAGS) DEF(CLANGDWARF_RISCV64_TARGET) $(PLATFORM_FLAGS) -Qunused-arguments -mabi=lp64 -mno-relax
-*_CLANGDWARF_RISCV64_DLINK_FLAGS = DEF(CLANGDWARF_RISCV64_TARGET) DEF(GCC5_RISCV64_DLINK_FLAGS)
-*_CLANGDWARF_RISCV64_DLINK_XIPFLAGS = -z common-page-size=0x20
-*_CLANGDWARF_RISCV64_DLINK2_FLAGS = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x240
-*_CLANGDWARF_RISCV64_PLATFORM_FLAGS =
-*_CLANGDWARF_RISCV64_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANGDWARF_RISCV64_TARGET) $(PLATFORM_FLAGS)
-*_CLANGDWARF_RISCV64_RC_FLAGS = DEF(GCC_RISCV64_RC_FLAGS)
-*_CLANGDWARF_RISCV64_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_RISCV64_TARGET) $(PLATFORM_FLAGS)
-*_CLANGDWARF_RISCV64_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_RISCV64_TARGET)
-*_CLANGDWARF_RISCV64_CC_XIPFLAGS = DEF(GCC_RISCV64_CC_XIPFLAGS)
-
- DEBUG_CLANGDWARF_RISCV64_CC_FLAGS = DEF(CLANGDWARF_RISCV64_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O1
- DEBUG_CLANGDWARF_RISCV64_DLINK_FLAGS = DEF(CLANGDWARF_RISCV64_DLINK_FLAGS) -flto -Wl,-O1 -fuse-ld=lld -Wl,--no-pie,--no-relax
- NOOPT_CLANGDWARF_RISCV64_CC_FLAGS = DEF(CLANGDWARF_RISCV64_CC_FLAGS) $(PLATFORM_FLAGS) -O0
- NOOPT_CLANGDWARF_RISCV64_DLINK_FLAGS = DEF(CLANGDWARF_RISCV64_DLINK_FLAGS) -fuse-ld=lld -Wl,--no-pie,--no-relax
-RELEASE_CLANGDWARF_RISCV64_CC_FLAGS = DEF(CLANGDWARF_RISCV64_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O3
-RELEASE_CLANGDWARF_RISCV64_DLINK_FLAGS = DEF(CLANGDWARF_RISCV64_DLINK_FLAGS) -flto -Wl,-O3 -fuse-ld=lld -Wl,--no-pie,--no-relax
-
-#
-#
-# XCODE5 support
-#
-
-*_XCODE5_*_*_FAMILY = GCC
-*_XCODE5_*_*_BUILDRULEFAMILY = XCODE
-
-#
-# use xcode-select to change Xcode version of command line tools
-#
-*_XCODE5_*_MAKE_PATH = make
-*_XCODE5_*_CC_PATH = clang
-*_XCODE5_*_SLINK_PATH = libtool
-*_XCODE5_*_DLINK_PATH = ld
-*_XCODE5_*_ASM_PATH = as
-*_XCODE5_*_PP_PATH = clang
-*_XCODE5_*_VFRPP_PATH = clang
-*_XCODE5_*_ASL_PATH = iasl
-*_XCODE5_*_ASLCC_PATH = clang
-*_XCODE5_*_ASLPP_PATH = clang
-*_XCODE5_*_ASLDLINK_PATH = ld
-*_XCODE5_*_DSYMUTIL_PATH = /usr/bin/dsymutil
-*_XCODE5_*_MTOC_PATH = /usr/local/bin/mtoc
-*_XCODE5_*_DEPS_FLAGS = DEF(GCC_DEPS_FLAGS)
-
-##################
-# ASL definitions
-##################
-*_XCODE5_*_ASLCC_FLAGS = -x c -save-temps -g -O0 -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-missing-braces -c -include AutoGen.h
-*_XCODE5_*_ASLDLINK_FLAGS = -e _ReferenceAcpiTable -preload -segalign 0x20 -pie -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map
-*_XCODE5_*_ASLPP_FLAGS = -x c -E -include AutoGen.h
-*_XCODE5_*_ASL_FLAGS =
-*_XCODE5_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS)
-
-##################
-# MTOC definitions
-##################
-
- DEBUG_XCODE5_*_MTOC_FLAGS = -align 0x20 -d $(DEBUG_DIR)/$(MODULE_NAME).dll
- NOOPT_XCODE5_*_MTOC_FLAGS = -align 0x20 -d $(DEBUG_DIR)/$(MODULE_NAME).dll
-RELEASE_XCODE5_*_MTOC_FLAGS = -align 0x20
-
-####################
-# IA-32 definitions
-####################
- DEBUG_XCODE5_IA32_DLINK_FLAGS = -arch i386 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map
- NOOPT_XCODE5_IA32_DLINK_FLAGS = -arch i386 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map
-RELEASE_XCODE5_IA32_DLINK_FLAGS = -arch i386 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map
-
-*_XCODE5_IA32_SLINK_FLAGS = -static -o
- DEBUG_XCODE5_IA32_ASM_FLAGS = -arch i386 -g
- NOOPT_XCODE5_IA32_ASM_FLAGS = -arch i386 -g
-RELEASE_XCODE5_IA32_ASM_FLAGS = -arch i386
- *_XCODE5_IA32_NASM_FLAGS = -f macho32
-
-
- DEBUG_XCODE5_IA32_CC_FLAGS = -arch i386 -c -g -Os -Wall -Werror -include AutoGen.h -funsigned-char -fno-stack-protector -fno-builtin -fshort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit-float -mms-bitfields -msoft-float -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang $(PLATFORM_FLAGS)
-RELEASE_XCODE5_IA32_CC_FLAGS = -arch i386 -c -Os -Wall -Werror -include AutoGen.h -funsigned-char -fno-stack-protector -fno-builtin -fshort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit-float -mms-bitfields -msoft-float -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -Wno-unused-const-variable -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang $(PLATFORM_FLAGS)
- NOOPT_XCODE5_IA32_CC_FLAGS = -arch i386 -c -g -O0 -Wall -Werror -include AutoGen.h -funsigned-char -fno-stack-protector -fno-builtin -fshort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit-float -mms-bitfields -msoft-float -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang $(PLATFORM_FLAGS)
-
-##################
-# X64 definitions
-##################
- DEBUG_XCODE5_X64_DLINK_FLAGS = -arch x86_64 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map
- NOOPT_XCODE5_X64_DLINK_FLAGS = -arch x86_64 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map
-RELEASE_XCODE5_X64_DLINK_FLAGS = -arch x86_64 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map
-
-*_XCODE5_X64_SLINK_FLAGS = -static -o
- DEBUG_XCODE5_X64_ASM_FLAGS = -arch x86_64 -g
- NOOPT_XCODE5_X64_ASM_FLAGS = -arch x86_64 -g
-RELEASE_XCODE5_X64_ASM_FLAGS = -arch x86_64
- *_XCODE5_X64_NASM_FLAGS = -f macho64
-*_XCODE5_*_PP_FLAGS = -E -x assembler-with-cpp -include AutoGen.h
-*_XCODE5_*_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE -include $(MODULE_NAME)StrDefs.h
-
- DEBUG_XCODE5_X64_CC_FLAGS = -target x86_64-pc-win32-macho -c -g -gdwarf -Os -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mno-implicit-float -mms-bitfields -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -D NO_MSABI_VA_FUNCS $(PLATFORM_FLAGS)
- NOOPT_XCODE5_X64_CC_FLAGS = -target x86_64-pc-win32-macho -c -g -gdwarf -O0 -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mno-implicit-float -mms-bitfields -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -D NO_MSABI_VA_FUNCS $(PLATFORM_FLAGS)
-RELEASE_XCODE5_X64_CC_FLAGS = -target x86_64-pc-win32-macho -c -Os -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mno-implicit-float -mms-bitfields -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -Wno-unused-const-variable -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -D NO_MSABI_VA_FUNCS $(PLATFORM_FLAGS)
-
-#################
-# ASM 16 linker definitions
-#################
-*_*_*_ASMLINK_PATH = DEF(WINDDK_BIN16)\link16.exe
-*_*_*_ASMLINK_FLAGS = /nologo /tiny
-
-##################
-# VfrCompiler definitions
-##################
-*_*_*_VFR_PATH = VfrCompile
-*_*_*_VFR_FLAGS = -l -n
-
-##################
-# OptionRom tool definitions
-##################
-*_*_*_OPTROM_PATH = EfiRom
-*_*_*_OPTROM_FLAGS = -e
-
-##################
-# GenFw tool definitions
-##################
-*_*_*_GENFW_PATH = GenFw
-*_*_*_GENFW_FLAGS =
-
-##################
-# Asl Compiler definitions
-##################
-*_*_*_ASLCC_FLAGS = /nologo /c /FIAutoGen.h /TC /Dmain=ReferenceAcpiTable
-*_*_*_ASLDLINK_FLAGS = /NODEFAULTLIB /ENTRY:ReferenceAcpiTable /SUBSYSTEM:CONSOLE
-*_*_*_ASLPP_FLAGS = /nologo /EP /C
-*_*_*_ASL_FLAGS =
-
-##################
-# GenCrc32 tool definitions
-##################
-*_*_*_CRC32_PATH = GenCrc32
-*_*_*_CRC32_GUID = FC1BCDB0-7D31-49AA-936A-A4600D9DD083
-
-##################
-# Rsa2048Sha256Sign tool definitions
-#
-# Notes: This tool definition uses a test signing key for development purposes only.
-# The tool Rsa2048Sha256GenerateKeys can be used to generate a new private/public key
-# and the gEfiSecurityPkgTokenSpaceGuid.PcdRsa2048Sha256PublicKeyBuffer PCD value.
-# A custom tool/script can be implemented using the new private/public key with
-# the Rsa2048Sha256Sign tool and this tool definition can be updated to use a
-# custom tool/script.
-#
-# Generate new private/public key and gEfiSecurityPkgTokenSpaceGuid.PcdRsa2048Sha256PublicKeyBuffer PCD value
-#
-# Rsa2048Sha256GenerateKeys.py -o MyKey.pem --public-key-hash-c MyKey.pcd
-#
-# Custom script example (MyRsa2048Sha256Sign.cmd):
-#
-# Rsa2048Sha256Sign --private-key MyKey.pem %1 %2 %3 %4 %5 %6 %7 %8 %9
-#
-# WARNING: Vendors that uses private keys are responsible for proper management and protection
-# of private keys. Vendors may choose to use infrastructure such as signing servers
-# or signing portals to support the management and protection of private keys.
-#
-##################
-*_*_*_RSA2048SHA256SIGN_PATH = Rsa2048Sha256Sign
-*_*_*_RSA2048SHA256SIGN_GUID = A7717414-C616-4977-9420-844712A735BF
-
-##################
-# BrotliCompress tool definitions
-##################
-*_*_*_BROTLI_PATH = BrotliCompress
-*_*_*_BROTLI_GUID = 3D532050-5CDA-4FD0-879E-0F7F630D5AFB
-
-##################
-# LzmaCompress tool definitions
-##################
-*_*_*_LZMA_PATH = LzmaCompress
-*_*_*_LZMA_GUID = EE4E5898-3914-4259-9D6E-DC7BD79403CF
-
-##################
-# LzmaF86Compress tool definitions with converter for x86 code.
-# It can improve the compression ratio if the input file is IA32 or X64 PE image.
-##################
-*_*_*_LZMAF86_PATH = LzmaF86Compress
-*_*_*_LZMAF86_GUID = D42AE6BD-1352-4bfb-909A-CA72A6EAE889
-
-##################
-# TianoCompress tool definitions
-##################
-*_*_*_TIANO_PATH = TianoCompress
-*_*_*_TIANO_GUID = A31280AD-481E-41B6-95E8-127F4C984779
-
-##################
-# BPDG tool definitions
-##################
-*_*_*_VPDTOOL_PATH = BPDG
-*_*_*_VPDTOOL_GUID = 8C3D856A-9BE6-468E-850A-24F7A8D38E08
-
-##################
-# Pkcs7Sign tool definitions
-##################
-*_*_*_PKCS7SIGN_PATH = Pkcs7Sign
-*_*_*_PKCS7SIGN_GUID = 4AAFD29D-68DF-49EE-8AA9-347D375665A7
-
-##################
-# NASM tool definitions
-##################
-*_*_*_NASM_PATH = ENV(NASM_PREFIX)nasm
-# NASMB uses NASM produce a .bin from a .nasmb NASM source file
-*_*_*_NASMB_FLAGS = -f bin
-
-#################
-# Build rule order
-#################
-*_*_*_*_BUILDRULEORDER = nasm asm Asm ASM S s nasmb asm16
+# +# Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR> +# Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR> +# Portions copyright (c) 2011 - 2019, ARM Ltd. All rights reserved.<BR> +# Copyright (c) 2015, Hewlett-Packard Development Company, L.P.<BR> +# (C) Copyright 2020, Hewlett Packard Enterprise Development LP<BR> +# Copyright (c) 2022, Loongson Technology Corporation Limited. All rights reserved.<BR> +# Copyright (c) Microsoft Corporation +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +# Increase this version tag any time you want user to get warning about updating this +# file in the Conf dir. By default it does not do update existing conf dirs. +# +# 2.00 - Initial version with changes for CI +# - Change RC path to use plugin +# 3.00 - Update toolchains +# - Add support for ARM and AARCH64 to CLANGDWARF +# - Remove VS2008, VS2010, VS2012, VS2013, CLANG35, CLANG38, EBC +# - Add GCC and GCCNOLTO +# - Deprecate GCC48, GCC49 and GCC5. +# +#!VERSION=3.00 + +IDENTIFIER = Default TOOL_CHAIN_CONF + +# common path macros +DEFINE VS2015_BIN = ENV(VS2015_PREFIX)Vc\bin +DEFINE VS2015_DLL = ENV(VS2015_PREFIX)Common7\IDE;DEF(VS2015_BIN) +DEFINE VS2015_BINX64 = DEF(VS2015_BIN)\x86_amd64 + +DEFINE VS2015x86_BIN = ENV(VS2015_PREFIX)Vc\bin +DEFINE VS2015x86_DLL = ENV(VS2015_PREFIX)Common7\IDE;DEF(VS2015x86_BIN) +DEFINE VS2015x86_BINX64 = DEF(VS2015x86_BIN)\x86_amd64 + +DEFINE VS_HOST = x86 + +DEFINE VS2017_BIN = ENV(VS2017_PREFIX)bin +DEFINE VS2017_BIN_HOST = DEF(VS2017_BIN)\HostDEF(VS_HOST)\DEF(VS_HOST) +DEFINE VS2017_BIN_IA32 = DEF(VS2017_BIN)\HostDEF(VS_HOST)\x86 +DEFINE VS2017_BIN_X64 = DEF(VS2017_BIN)\HostDEF(VS_HOST)\x64 +DEFINE VS2017_BIN_ARM = DEF(VS2017_BIN)\HostDEF(VS_HOST)\arm +DEFINE VS2017_BIN_AARCH64 = DEF(VS2017_BIN)\HostDEF(VS_HOST)\arm64 + +DEFINE VS2019_BIN = ENV(VS2019_PREFIX)bin +DEFINE VS2019_BIN_HOST = DEF(VS2019_BIN)\HostDEF(VS_HOST)\DEF(VS_HOST) +DEFINE VS2019_BIN_IA32 = DEF(VS2019_BIN)\HostDEF(VS_HOST)\x86 +DEFINE VS2019_BIN_X64 = DEF(VS2019_BIN)\HostDEF(VS_HOST)\x64 +DEFINE VS2019_BIN_ARM = DEF(VS2019_BIN)\HostDEF(VS_HOST)\arm +DEFINE VS2019_BIN_AARCH64 = DEF(VS2019_BIN)\HostDEF(VS_HOST)\arm64 + +# +# Resource compiler +# +DEFINE RC_PATH = ENV(WINSDK_PATH_FOR_RC_EXE)\rc.exe + +DEFINE WINSDK_BIN = ENV(WINSDK_PREFIX) +DEFINE WINSDKx86_BIN = ENV(WINSDKx86_PREFIX) + +# Microsoft Visual Studio 2015 Professional Edition +DEFINE WINSDK81_BIN = ENV(WINSDK81_PREFIX)x86\ +DEFINE WINSDK81x86_BIN = ENV(WINSDK81x86_PREFIX)x64 + +# Microsoft Visual Studio 2017/2019 Professional Edition +DEFINE WINSDK10_BIN = ENV(WINSDK10_PREFIX)DEF(VS_HOST) + +# These defines are needed for certain Microsoft Visual Studio tools that +# are used by other toolchains. An example is that ICC on Windows normally +# uses Microsoft's nmake.exe. + +DEFINE WINDDK_BIN16 = ENV(WINDDK3790_PREFIX)bin16 +DEFINE WINDDK_BINX64 = ENV(WINDDK3790_PREFIX)win64\x86\amd64 + +DEFINE CYGWIN_BIN = c:/cygwin/bin +DEFINE CYGWIN_BINIA32 = c:/cygwin/opt/tiano/i386-tiano-pe/i386-tiano-pe/bin/ +DEFINE CYGWIN_BINX64 = c:/cygwin/opt/tiano/x86_64-pc-mingw64/x86_64-pc-mingw64/bin/ + +DEFINE GCC48_IA32_PREFIX = ENV(GCC48_BIN) +DEFINE GCC48_X64_PREFIX = ENV(GCC48_BIN) + +DEFINE GCC49_IA32_PREFIX = ENV(GCC49_BIN) +DEFINE GCC49_X64_PREFIX = ENV(GCC49_BIN) + +DEFINE GCCNOLTO_IA32_PREFIX = ENV(GCCNOLTO_BIN) +DEFINE GCCNOLTO_X64_PREFIX = ENV(GCCNOLTO_BIN) + +DEFINE GCC5_IA32_PREFIX = ENV(GCC5_BIN) +DEFINE GCC5_X64_PREFIX = ENV(GCC5_BIN) +DEFINE GCC_IA32_PREFIX = ENV(GCC_BIN) +DEFINE GCC_X64_PREFIX = ENV(GCC_BIN) +DEFINE GCC_HOST_PREFIX = ENV(GCC_HOST_BIN) + +DEFINE UNIX_IASL_BIN = ENV(IASL_PREFIX)iasl +DEFINE WIN_IASL_BIN = ENV(IASL_PREFIX)iasl.exe + +DEFINE IASL_FLAGS = +DEFINE IASL_OUTFLAGS = -p + +DEFINE DEFAULT_WIN_ASL_BIN = DEF(WIN_IASL_BIN) +DEFINE DEFAULT_WIN_ASL_FLAGS = DEF(IASL_FLAGS) +DEFINE DEFAULT_WIN_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) + +# MSFT Build Flag for included header file list generation +DEFINE MSFT_DEPS_FLAGS = /showIncludes + +DEFINE MSFT_ASLPP_FLAGS = /nologo /E /C /FIAutoGen.h +DEFINE MSFT_ASLCC_FLAGS = /nologo /c /FIAutoGen.h /TC /Dmain=ReferenceAcpiTable +DEFINE MSFT_ASLDLINK_FLAGS = /NODEFAULTLIB /ENTRY:ReferenceAcpiTable /SUBSYSTEM:CONSOLE + +DEFINE DTCPP_BIN = ENV(DTCPP_PREFIX)cpp +DEFINE DTC_BIN = ENV(DTC_PREFIX)dtc + +#################################################################################### +# +# format: TARGET_TOOLCHAIN_ARCH_COMMANDTYPE_ATTRIBUTE = <string> +# priority: +# TARGET_TOOLCHAIN_ARCH_COMMANDTYPE_ATTRIBUTE (Highest) +# ******_TOOLCHAIN_ARCH_COMMANDTYPE_ATTRIBUTE +# TARGET_*********_ARCH_COMMANDTYPE_ATTRIBUTE +# ******_*********_ARCH_COMMANDTYPE_ATTRIBUTE +# TARGET_TOOLCHAIN_****_COMMANDTYPE_ATTRIBUTE +# ******_TOOLCHAIN_****_COMMANDTYPE_ATTRIBUTE +# TARGET_*********_****_COMMANDTYPE_ATTRIBUTE +# ******_*********_****_COMMANDTYPE_ATTRIBUTE +# TARGET_TOOLCHAIN_ARCH_***********_ATTRIBUTE +# ******_TOOLCHAIN_ARCH_***********_ATTRIBUTE +# TARGET_*********_ARCH_***********_ATTRIBUTE +# ******_*********_ARCH_***********_ATTRIBUTE +# TARGET_TOOLCHAIN_****_***********_ATTRIBUTE +# ******_TOOLCHAIN_****_***********_ATTRIBUTE +# TARGET_*********_****_***********_ATTRIBUTE +# ******_*********_****_***********_ATTRIBUTE (Lowest) +# +#################################################################################### +#################################################################################### +# +# Supported Tool Chains +# ===================== +# VS2015 -win32- Requires: +# Microsoft Visual Studio 2015 Professional Edition, Update 3 +# Optional: +# Required to build platforms or ACPI tables: +# Intel(r) ACPI Compiler (iasl.exe) from +# https://acpica.org/downloads +# VS2017 -win32- Requires: +# Microsoft Visual Studio 2017 version 15.2 (15.4 for ARM64) or later +# Optional: +# Required to build platforms or ACPI tables: +# Intel(r) ACPI Compiler (iasl.exe) from +# https://acpica.org/downloads +# Note: +# Building of XIP firmware images for ARM/ARM64 is not currently supported (only applications). +# /FILEALIGN:4096 and other changes are needed for ARM firmware builds. +# VS2019 -win32- Requires: +# Microsoft Visual Studio 2019 version 16.2 or later +# Optional: +# Required to build platforms or ACPI tables: +# Intel(r) ACPI Compiler (iasl.exe) from +# https://acpica.org/downloads +# Note: +# Building of XIP firmware images for ARM/ARM64 is not currently supported (only applications). +# /FILEALIGN:4096 and other changes are needed for ARM firmware builds. +# GCCNOLTO -Linux,Windows- Requires: +# GCC 4.9 targeting x86_64-linux-gnu, aarch64-linux-gnu, or arm-linux-gnueabi +# Optional: +# Required to build platforms or ACPI tables: +# Intel(r) ACPI Compiler from +# https://acpica.org/downloads +# GCC -Linux,Windows- Requires: +# GCC 5 with LTO support, targeting x86_64-linux-gnu, aarch64-linux-gnu, arm-linux-gnueabi, riscv64-linux-gnu or loongarch64-linux-gnu +# Optional: +# Required to build platforms or ACPI tables: +# Intel(r) ACPI Compiler from +# https://acpica.org/downloads +# +# CLANGPDB -Linux, Windows, Mac- Requires: +# Clang 9 or above from http://releases.llvm.org/ +# Optional: +# Required to compile nasm source: +# nasm compiler from +# NASM -- http://www.nasm.us/ +# CLANGDWARF -Linux, Windows, Mac- Requires: +# Clang 9 or above from http://releases.llvm.org/ +# Optional: +# Required to compile nasm source: +# nasm compiler from +# NASM -- http://www.nasm.us/ +# VS2015x86 -win64- Requires: +# Microsoft Visual Studio 2015 (x86) Update 3 or above +# Optional: +# Required to build platforms or ACPI tables: +# Intel(r) ACPI Compiler (iasl.exe) from +# https://acpica.org/downloads +# +# Deprecated Tool Chains +# ====================== +# GCC48 -Linux,Windows- Requires: +# GCC 4.8 targeting x86_64-linux-gnu, aarch64-linux-gnu, or arm-linux-gnueabi +# Optional: +# Required to build platforms or ACPI tables: +# Intel(r) ACPI Compiler from +# https://acpica.org/downloads +# GCC49 -Linux,Windows- Requires: +# GCC 4.9 targeting x86_64-linux-gnu, aarch64-linux-gnu, or arm-linux-gnueabi +# Optional: +# Required to build platforms or ACPI tables: +# Intel(r) ACPI Compiler from +# https://acpica.org/downloads +# GCC5 -Linux,Windows- Requires: +# GCC 5 with LTO support, targeting x86_64-linux-gnu, aarch64-linux-gnu, arm-linux-gnueabi, riscv64-linux-gnu or loongarch64-linux-gnu +# Optional: +# Required to build platforms or ACPI tables: +# Intel(r) ACPI Compiler from +# https://acpica.org/downloads +# +#################################################################################### +#################################################################################### +# +# Supported Tool Chain Family +# =========================== +# MSFT - Microsoft +# GCC - GNU GCC +# INTEL - INTEL +#################################################################################### +#################################################################################### +# +# Other Supported Tools +# ===================== +# NASM -- http://www.nasm.us/ +# - NASM 2.15.05 or later for use with the GCC toolchain family +# - NASM 2.15.05 or later for use with all other toolchain families +# +#################################################################################### +#################################################################################### +# +# Intel ACPI Source Language Compiler (Template) +# +#################################################################################### +# *_*_*_ASL_FAMILY = INTEL +# +# *_*_*_ASL_PATH = C:\ASL\iasl.exe +# +#################################################################################### +# +# Microsoft ACPI Source Language Compiler (Template) +# +#################################################################################### +# *_*_*_ASL_FAMILY = MSFT +# +# *_*_*_ASL_PATH = C:\ASL\asl.exe +# +#################################################################################### + +#################################################################################### +# +# Microsoft Visual Studio 2015 +# +# VS2015 - Microsoft Visual Studio 2015 Professional Edition with Intel ASL +# ASL - Intel ACPI Source Language Compiler +#################################################################################### +# VS2015 - Microsoft Visual Studio 2015 Professional Edition +*_VS2015_*_*_FAMILY = MSFT + +*_VS2015_*_MAKE_PATH = DEF(VS2015_BIN)\nmake.exe +*_VS2015_*_MAKE_FLAGS = /nologo +*_VS2015_*_RC_PATH = DEF(WINSDK81_BIN)\rc.exe + +*_VS2015_*_SLINK_FLAGS = /NOLOGO /LTCG +*_VS2015_*_APP_FLAGS = /nologo /E /TC +*_VS2015_*_PP_FLAGS = /nologo /E /TC /FIAutoGen.h +*_VS2015_*_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h +*_VS2015_*_DLINK2_FLAGS = +*_VS2015_*_DEPS_FLAGS = DEF(MSFT_DEPS_FLAGS) +*_VS2015_*_ASM16_PATH = DEF(VS2015_BIN)\ml.exe + +################## +# ASL definitions +################## +*_VS2015_*_ASL_PATH = DEF(DEFAULT_WIN_ASL_BIN) +*_VS2015_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS) +*_VS2015_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS) +*_VS2015_*_ASLCC_FLAGS = DEF(MSFT_ASLCC_FLAGS) +*_VS2015_*_ASLPP_FLAGS = DEF(MSFT_ASLPP_FLAGS) +*_VS2015_*_ASLDLINK_FLAGS = DEF(MSFT_ASLDLINK_FLAGS) + +################## +# IA32 definitions +################## +*_VS2015_IA32_*_DLL = DEF(VS2015_DLL) + +*_VS2015_IA32_CC_PATH = DEF(VS2015_BIN)\cl.exe +*_VS2015_IA32_VFRPP_PATH = DEF(VS2015_BIN)\cl.exe +*_VS2015_IA32_SLINK_PATH = DEF(VS2015_BIN)\lib.exe +*_VS2015_IA32_DLINK_PATH = DEF(VS2015_BIN)\link.exe +*_VS2015_IA32_APP_PATH = DEF(VS2015_BIN)\cl.exe +*_VS2015_IA32_PP_PATH = DEF(VS2015_BIN)\cl.exe +*_VS2015_IA32_ASM_PATH = DEF(VS2015_BIN)\ml.exe +*_VS2015_IA32_ASLCC_PATH = DEF(VS2015_BIN)\cl.exe +*_VS2015_IA32_ASLPP_PATH = DEF(VS2015_BIN)\cl.exe +*_VS2015_IA32_ASLDLINK_PATH = DEF(VS2015_BIN)\link.exe + + DEBUG_VS2015_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Gw +RELEASE_VS2015_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw +NOOPT_VS2015_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od + + DEBUG_VS2015_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi +RELEASE_VS2015_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd +NOOPT_VS2015_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi + + DEBUG_VS2015_IA32_NASM_FLAGS = -Ox -f win32 -g +RELEASE_VS2015_IA32_NASM_FLAGS = -Ox -f win32 +NOOPT_VS2015_IA32_NASM_FLAGS = -O0 -f win32 -g + + DEBUG_VS2015_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG +RELEASE_VS2015_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data +NOOPT_VS2015_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG + +################## +# X64 definitions +################## +*_VS2015_X64_*_DLL = DEF(VS2015_DLL) + +*_VS2015_X64_CC_PATH = DEF(VS2015_BINX64)\cl.exe +*_VS2015_X64_PP_PATH = DEF(VS2015_BINX64)\cl.exe +*_VS2015_X64_APP_PATH = DEF(VS2015_BINX64)\cl.exe +*_VS2015_X64_VFRPP_PATH = DEF(VS2015_BINX64)\cl.exe +*_VS2015_X64_ASM_PATH = DEF(VS2015_BINX64)\ml64.exe +*_VS2015_X64_SLINK_PATH = DEF(VS2015_BINX64)\lib.exe +*_VS2015_X64_DLINK_PATH = DEF(VS2015_BINX64)\link.exe +*_VS2015_X64_ASLCC_PATH = DEF(VS2015_BINX64)\cl.exe +*_VS2015_X64_ASLPP_PATH = DEF(VS2015_BINX64)\cl.exe +*_VS2015_X64_ASLDLINK_PATH = DEF(VS2015_BINX64)\link.exe + + DEBUG_VS2015_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Gw +RELEASE_VS2015_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Gw +NOOPT_VS2015_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od + + DEBUG_VS2015_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi +RELEASE_VS2015_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd +NOOPT_VS2015_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi + + DEBUG_VS2015_X64_NASM_FLAGS = -Ox -f win64 -g +RELEASE_VS2015_X64_NASM_FLAGS = -Ox -f win64 +NOOPT_VS2015_X64_NASM_FLAGS = -O0 -f win64 -g + + DEBUG_VS2015_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG +RELEASE_VS2015_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data +NOOPT_VS2015_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG + +#################################################################################### +# VS2015x86 - Microsoft Visual Studio 2015 (x86) professional with Intel ASL +# ASL - Intel ACPI Source Language Compiler (iasl.exe) +#################################################################################### +# VS2015x86 - Microsoft Visual Studio 2015 (x86) professional Edition with Intel ASL +*_VS2015x86_*_*_FAMILY = MSFT + +*_VS2015x86_*_MAKE_PATH = DEF(VS2015x86_BIN)\nmake.exe +*_VS2015x86_*_MAKE_FLAGS = /nologo +*_VS2015x86_*_RC_PATH = DEF(WINSDK81x86_BIN)\rc.exe + +*_VS2015x86_*_SLINK_FLAGS = /NOLOGO /LTCG +*_VS2015x86_*_APP_FLAGS = /nologo /E /TC +*_VS2015x86_*_PP_FLAGS = /nologo /E /TC /FIAutoGen.h +*_VS2015x86_*_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h +*_VS2015x86_*_DLINK2_FLAGS = +*_VS2015x86_*_DEPS_FLAGS = DEF(MSFT_DEPS_FLAGS) +*_VS2015x86_*_ASM16_PATH = DEF(VS2015x86_BIN)\ml.exe + +################## +# ASL definitions +################## +*_VS2015x86_*_ASL_PATH = DEF(WIN_IASL_BIN) +*_VS2015x86_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS) +*_VS2015x86_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS) +*_VS2015x86_*_ASLCC_FLAGS = DEF(MSFT_ASLCC_FLAGS) +*_VS2015x86_*_ASLPP_FLAGS = DEF(MSFT_ASLPP_FLAGS) +*_VS2015x86_*_ASLDLINK_FLAGS = DEF(MSFT_ASLDLINK_FLAGS) + +################## +# IA32 definitions +################## +*_VS2015x86_IA32_*_DLL = DEF(VS2015x86_DLL) + +*_VS2015x86_IA32_CC_PATH = DEF(VS2015x86_BIN)\cl.exe +*_VS2015x86_IA32_VFRPP_PATH = DEF(VS2015x86_BIN)\cl.exe +*_VS2015x86_IA32_ASLCC_PATH = DEF(VS2015x86_BIN)\cl.exe +*_VS2015x86_IA32_ASLPP_PATH = DEF(VS2015x86_BIN)\cl.exe +*_VS2015x86_IA32_SLINK_PATH = DEF(VS2015x86_BIN)\lib.exe +*_VS2015x86_IA32_DLINK_PATH = DEF(VS2015x86_BIN)\link.exe +*_VS2015x86_IA32_ASLDLINK_PATH= DEF(VS2015x86_BIN)\link.exe +*_VS2015x86_IA32_APP_PATH = DEF(VS2015x86_BIN)\cl.exe +*_VS2015x86_IA32_PP_PATH = DEF(VS2015x86_BIN)\cl.exe +*_VS2015x86_IA32_ASM_PATH = DEF(VS2015x86_BIN)\ml.exe + + DEBUG_VS2015x86_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Gw +RELEASE_VS2015x86_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw +NOOPT_VS2015x86_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od + + DEBUG_VS2015x86_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi +RELEASE_VS2015x86_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd +NOOPT_VS2015x86_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi + + DEBUG_VS2015x86_IA32_NASM_FLAGS = -Ox -f win32 -g +RELEASE_VS2015x86_IA32_NASM_FLAGS = -Ox -f win32 +NOOPT_VS2015x86_IA32_NASM_FLAGS = -O0 -f win32 -g + + DEBUG_VS2015x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG +RELEASE_VS2015x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data +NOOPT_VS2015x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG + +################## +# X64 definitions +################## +*_VS2015x86_X64_*_DLL = DEF(VS2015x86_DLL) + +*_VS2015x86_X64_CC_PATH = DEF(VS2015x86_BINX64)\cl.exe +*_VS2015x86_X64_PP_PATH = DEF(VS2015x86_BINX64)\cl.exe +*_VS2015x86_X64_APP_PATH = DEF(VS2015x86_BINX64)\cl.exe +*_VS2015x86_X64_VFRPP_PATH = DEF(VS2015x86_BINX64)\cl.exe +*_VS2015x86_X64_ASLCC_PATH = DEF(VS2015x86_BINX64)\cl.exe +*_VS2015x86_X64_ASLPP_PATH = DEF(VS2015x86_BINX64)\cl.exe +*_VS2015x86_X64_ASM_PATH = DEF(VS2015x86_BINX64)\ml64.exe +*_VS2015x86_X64_SLINK_PATH = DEF(VS2015x86_BINX64)\lib.exe +*_VS2015x86_X64_DLINK_PATH = DEF(VS2015x86_BINX64)\link.exe +*_VS2015x86_X64_ASLDLINK_PATH = DEF(VS2015x86_BINX64)\link.exe + + DEBUG_VS2015x86_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Gw +RELEASE_VS2015x86_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Gw +NOOPT_VS2015x86_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od + + DEBUG_VS2015x86_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi +RELEASE_VS2015x86_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd +NOOPT_VS2015x86_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi + + DEBUG_VS2015x86_X64_NASM_FLAGS = -Ox -f win64 -g +RELEASE_VS2015x86_X64_NASM_FLAGS = -Ox -f win64 +NOOPT_VS2015x86_X64_NASM_FLAGS = -O0 -f win64 -g + + DEBUG_VS2015x86_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG +RELEASE_VS2015x86_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data +NOOPT_VS2015x86_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG + +#################################################################################### +# VS2017 - Microsoft Visual Studio 2017 with Intel ASL +# ASL - Intel ACPI Source Language Compiler (iasl.exe) +#################################################################################### +# VS2017 - Microsoft Visual Studio 2017 professional Edition with Intel ASL +*_VS2017_*_*_FAMILY = MSFT +*_VS2017_*_*_DLL = DEF(VS2017_BIN_HOST) + +*_VS2017_*_MAKE_PATH = DEF(VS2017_BIN_HOST)\nmake.exe +*_VS2017_*_MAKE_FLAGS = /nologo +*_VS2017_*_RC_PATH = DEF(RC_PATH) + +*_VS2017_*_SLINK_FLAGS = /NOLOGO /LTCG +*_VS2017_*_APP_FLAGS = /nologo /E /TC +*_VS2017_*_PP_FLAGS = /nologo /E /TC /FIAutoGen.h +*_VS2017_*_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h +*_VS2017_*_DLINK2_FLAGS = /WHOLEARCHIVE +*_VS2017_*_ASM16_PATH = DEF(VS2017_BIN_IA32)\ml.exe +*_VS2017_*_DEPS_FLAGS = DEF(MSFT_DEPS_FLAGS) +################## +# ASL definitions +################## +*_VS2017_*_ASL_PATH = DEF(WIN_IASL_BIN) +*_VS2017_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS) +*_VS2017_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS) +*_VS2017_*_ASLCC_FLAGS = DEF(MSFT_ASLCC_FLAGS) +*_VS2017_*_ASLPP_FLAGS = DEF(MSFT_ASLPP_FLAGS) +*_VS2017_*_ASLDLINK_FLAGS = DEF(MSFT_ASLDLINK_FLAGS) + +################## +# IA32 definitions +################## +*_VS2017_IA32_CC_PATH = DEF(VS2017_BIN_IA32)\cl.exe +*_VS2017_IA32_VFRPP_PATH = DEF(VS2017_BIN_IA32)\cl.exe +*_VS2017_IA32_ASLCC_PATH = DEF(VS2017_BIN_IA32)\cl.exe +*_VS2017_IA32_ASLPP_PATH = DEF(VS2017_BIN_IA32)\cl.exe +*_VS2017_IA32_SLINK_PATH = DEF(VS2017_BIN_IA32)\lib.exe +*_VS2017_IA32_DLINK_PATH = DEF(VS2017_BIN_IA32)\link.exe +*_VS2017_IA32_ASLDLINK_PATH= DEF(VS2017_BIN_IA32)\link.exe +*_VS2017_IA32_APP_PATH = DEF(VS2017_BIN_IA32)\cl.exe +*_VS2017_IA32_PP_PATH = DEF(VS2017_BIN_IA32)\cl.exe +*_VS2017_IA32_ASM_PATH = DEF(VS2017_BIN_IA32)\ml.exe + + DEBUG_VS2017_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Gw +RELEASE_VS2017_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw +NOOPT_VS2017_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od + + DEBUG_VS2017_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi +RELEASE_VS2017_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd +NOOPT_VS2017_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi + + DEBUG_VS2017_IA32_NASM_FLAGS = -Ox -f win32 -g +RELEASE_VS2017_IA32_NASM_FLAGS = -Ox -f win32 +NOOPT_VS2017_IA32_NASM_FLAGS = -O0 -f win32 -g + + DEBUG_VS2017_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG +RELEASE_VS2017_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data +NOOPT_VS2017_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG + +################## +# X64 definitions +################## +*_VS2017_X64_CC_PATH = DEF(VS2017_BIN_X64)\cl.exe +*_VS2017_X64_PP_PATH = DEF(VS2017_BIN_X64)\cl.exe +*_VS2017_X64_APP_PATH = DEF(VS2017_BIN_X64)\cl.exe +*_VS2017_X64_VFRPP_PATH = DEF(VS2017_BIN_X64)\cl.exe +*_VS2017_X64_ASLCC_PATH = DEF(VS2017_BIN_X64)\cl.exe +*_VS2017_X64_ASLPP_PATH = DEF(VS2017_BIN_X64)\cl.exe +*_VS2017_X64_ASM_PATH = DEF(VS2017_BIN_X64)\ml64.exe +*_VS2017_X64_SLINK_PATH = DEF(VS2017_BIN_X64)\lib.exe +*_VS2017_X64_DLINK_PATH = DEF(VS2017_BIN_X64)\link.exe +*_VS2017_X64_ASLDLINK_PATH = DEF(VS2017_BIN_X64)\link.exe + + DEBUG_VS2017_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Gw +RELEASE_VS2017_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Gw +NOOPT_VS2017_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od + + DEBUG_VS2017_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi +RELEASE_VS2017_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd +NOOPT_VS2017_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi + + DEBUG_VS2017_X64_NASM_FLAGS = -Ox -f win64 -g +RELEASE_VS2017_X64_NASM_FLAGS = -Ox -f win64 +NOOPT_VS2017_X64_NASM_FLAGS = -O0 -f win64 -g + + DEBUG_VS2017_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4281 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG +RELEASE_VS2017_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4281 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data +NOOPT_VS2017_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4281 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG + +################# +# ARM definitions +################# +*_VS2017_ARM_CC_PATH = DEF(VS2017_BIN_ARM)\cl.exe +*_VS2017_ARM_VFRPP_PATH = DEF(VS2017_BIN_ARM)\cl.exe +*_VS2017_ARM_SLINK_PATH = DEF(VS2017_BIN_ARM)\lib.exe +*_VS2017_ARM_DLINK_PATH = DEF(VS2017_BIN_ARM)\link.exe +*_VS2017_ARM_APP_PATH = DEF(VS2017_BIN_ARM)\cl.exe +*_VS2017_ARM_PP_PATH = DEF(VS2017_BIN_ARM)\cl.exe +*_VS2017_ARM_ASM_PATH = DEF(VS2017_BIN_ARM)\armasm.exe +*_VS2017_ARM_ASLCC_PATH = DEF(VS2017_BIN_ARM)\cl.exe +*_VS2017_ARM_ASLPP_PATH = DEF(VS2017_BIN_ARM)\cl.exe +*_VS2017_ARM_ASLDLINK_PATH = DEF(VS2017_BIN_ARM)\link.exe + + DEBUG_VS2017_ARM_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gw /Oi- +RELEASE_VS2017_ARM_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw /Oi- +NOOPT_VS2017_ARM_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Od /Oi- + + DEBUG_VS2017_ARM_ASM_FLAGS = /nologo /g +RELEASE_VS2017_ARM_ASM_FLAGS = /nologo +NOOPT_VS2017_ARM_ASM_FLAGS = /nologo + + DEBUG_VS2017_ARM_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG +RELEASE_VS2017_ARM_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data +NOOPT_VS2017_ARM_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG + +##################### +# AARCH64 definitions +##################### +*_VS2017_AARCH64_CC_PATH = DEF(VS2017_BIN_AARCH64)\cl.exe +*_VS2017_AARCH64_VFRPP_PATH = DEF(VS2017_BIN_AARCH64)\cl.exe +*_VS2017_AARCH64_SLINK_PATH = DEF(VS2017_BIN_AARCH64)\lib.exe +*_VS2017_AARCH64_DLINK_PATH = DEF(VS2017_BIN_AARCH64)\link.exe +*_VS2017_AARCH64_APP_PATH = DEF(VS2017_BIN_AARCH64)\cl.exe +*_VS2017_AARCH64_PP_PATH = DEF(VS2017_BIN_AARCH64)\cl.exe +*_VS2017_AARCH64_ASM_PATH = DEF(VS2017_BIN_AARCH64)\armasm64.exe +*_VS2017_AARCH64_ASLCC_PATH = DEF(VS2017_BIN_AARCH64)\cl.exe +*_VS2017_AARCH64_ASLPP_PATH = DEF(VS2017_BIN_AARCH64)\cl.exe +*_VS2017_AARCH64_ASLDLINK_PATH = DEF(VS2017_BIN_AARCH64)\link.exe + + DEBUG_VS2017_AARCH64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gw /Oi- +RELEASE_VS2017_AARCH64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw /Oi- +NOOPT_VS2017_AARCH64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Od /Oi- + + DEBUG_VS2017_AARCH64_ASM_FLAGS = /nologo /g +RELEASE_VS2017_AARCH64_ASM_FLAGS = /nologo +NOOPT_VS2017_AARCH64_ASM_FLAGS = /nologo + + DEBUG_VS2017_AARCH64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /DRIVER /DEBUG +RELEASE_VS2017_AARCH64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /DRIVER /MERGE:.rdata=.data +NOOPT_VS2017_AARCH64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /DRIVER /DEBUG + +#################################################################################### +# VS2019 - Microsoft Visual Studio 2019 with Intel ASL +# ASL - Intel ACPI Source Language Compiler (iasl.exe) +#################################################################################### +# VS2019 - Microsoft Visual Studio 2017 professional Edition with Intel ASL +*_VS2019_*_*_FAMILY = MSFT +*_VS2019_*_*_DLL = DEF(VS2019_BIN_HOST) + +*_VS2019_*_MAKE_PATH = DEF(VS2019_BIN_HOST)\nmake.exe +*_VS2019_*_MAKE_FLAGS = /nologo +*_VS2019_*_RC_PATH = DEF(RC_PATH) + +*_VS2019_*_SLINK_FLAGS = /NOLOGO /LTCG +*_VS2019_*_APP_FLAGS = /nologo /E /TC +*_VS2019_*_PP_FLAGS = /nologo /E /TC /FIAutoGen.h +*_VS2019_*_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h +*_VS2019_*_DLINK2_FLAGS = /WHOLEARCHIVE +*_VS2019_*_ASM16_PATH = DEF(VS2019_BIN_IA32)\ml.exe +*_VS2019_*_DEPS_FLAGS = DEF(MSFT_DEPS_FLAGS) +################## +# ASL definitions +################## +*_VS2019_*_ASL_PATH = DEF(WIN_IASL_BIN) +*_VS2019_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS) +*_VS2019_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS) +*_VS2019_*_ASLCC_FLAGS = DEF(MSFT_ASLCC_FLAGS) +*_VS2019_*_ASLPP_FLAGS = DEF(MSFT_ASLPP_FLAGS) +*_VS2019_*_ASLDLINK_FLAGS = DEF(MSFT_ASLDLINK_FLAGS) + +################## +# IA32 definitions +################## +*_VS2019_IA32_CC_PATH = DEF(VS2019_BIN_IA32)\cl.exe +*_VS2019_IA32_VFRPP_PATH = DEF(VS2019_BIN_IA32)\cl.exe +*_VS2019_IA32_ASLCC_PATH = DEF(VS2019_BIN_IA32)\cl.exe +*_VS2019_IA32_ASLPP_PATH = DEF(VS2019_BIN_IA32)\cl.exe +*_VS2019_IA32_SLINK_PATH = DEF(VS2019_BIN_IA32)\lib.exe +*_VS2019_IA32_DLINK_PATH = DEF(VS2019_BIN_IA32)\link.exe +*_VS2019_IA32_ASLDLINK_PATH= DEF(VS2019_BIN_IA32)\link.exe +*_VS2019_IA32_APP_PATH = DEF(VS2019_BIN_IA32)\cl.exe +*_VS2019_IA32_PP_PATH = DEF(VS2019_BIN_IA32)\cl.exe +*_VS2019_IA32_ASM_PATH = DEF(VS2019_BIN_IA32)\ml.exe + + DEBUG_VS2019_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Gw +RELEASE_VS2019_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw +NOOPT_VS2019_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od + + DEBUG_VS2019_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi +RELEASE_VS2019_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd +NOOPT_VS2019_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi + + DEBUG_VS2019_IA32_NASM_FLAGS = -Ox -f win32 -g +RELEASE_VS2019_IA32_NASM_FLAGS = -Ox -f win32 +NOOPT_VS2019_IA32_NASM_FLAGS = -O0 -f win32 -g + + DEBUG_VS2019_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG +RELEASE_VS2019_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data +NOOPT_VS2019_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG + +################## +# X64 definitions +################## +*_VS2019_X64_CC_PATH = DEF(VS2019_BIN_X64)\cl.exe +*_VS2019_X64_PP_PATH = DEF(VS2019_BIN_X64)\cl.exe +*_VS2019_X64_APP_PATH = DEF(VS2019_BIN_X64)\cl.exe +*_VS2019_X64_VFRPP_PATH = DEF(VS2019_BIN_X64)\cl.exe +*_VS2019_X64_ASLCC_PATH = DEF(VS2019_BIN_X64)\cl.exe +*_VS2019_X64_ASLPP_PATH = DEF(VS2019_BIN_X64)\cl.exe +*_VS2019_X64_ASM_PATH = DEF(VS2019_BIN_X64)\ml64.exe +*_VS2019_X64_SLINK_PATH = DEF(VS2019_BIN_X64)\lib.exe +*_VS2019_X64_DLINK_PATH = DEF(VS2019_BIN_X64)\link.exe +*_VS2019_X64_ASLDLINK_PATH = DEF(VS2019_BIN_X64)\link.exe + + DEBUG_VS2019_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Gw +RELEASE_VS2019_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Gw +NOOPT_VS2019_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od + + DEBUG_VS2019_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi +RELEASE_VS2019_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd +NOOPT_VS2019_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi + + DEBUG_VS2019_X64_NASM_FLAGS = -Ox -f win64 -g +RELEASE_VS2019_X64_NASM_FLAGS = -Ox -f win64 +NOOPT_VS2019_X64_NASM_FLAGS = -O0 -f win64 -g + + DEBUG_VS2019_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4281 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG +RELEASE_VS2019_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4281 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data +NOOPT_VS2019_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4281 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG + +################# +# ARM definitions +################# +*_VS2019_ARM_CC_PATH = DEF(VS2019_BIN_ARM)\cl.exe +*_VS2019_ARM_VFRPP_PATH = DEF(VS2019_BIN_ARM)\cl.exe +*_VS2019_ARM_SLINK_PATH = DEF(VS2019_BIN_ARM)\lib.exe +*_VS2019_ARM_DLINK_PATH = DEF(VS2019_BIN_ARM)\link.exe +*_VS2019_ARM_APP_PATH = DEF(VS2019_BIN_ARM)\cl.exe +*_VS2019_ARM_PP_PATH = DEF(VS2019_BIN_ARM)\cl.exe +*_VS2019_ARM_ASM_PATH = DEF(VS2019_BIN_ARM)\armasm.exe +*_VS2019_ARM_ASLCC_PATH = DEF(VS2019_BIN_ARM)\cl.exe +*_VS2019_ARM_ASLPP_PATH = DEF(VS2019_BIN_ARM)\cl.exe +*_VS2019_ARM_ASLDLINK_PATH = DEF(VS2019_BIN_ARM)\link.exe + + DEBUG_VS2019_ARM_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gw /Oi- +RELEASE_VS2019_ARM_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw /Oi- +NOOPT_VS2019_ARM_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Od /Oi- + + DEBUG_VS2019_ARM_ASM_FLAGS = /nologo /g +RELEASE_VS2019_ARM_ASM_FLAGS = /nologo +NOOPT_VS2019_ARM_ASM_FLAGS = /nologo + + DEBUG_VS2019_ARM_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG +RELEASE_VS2019_ARM_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data +NOOPT_VS2019_ARM_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG + +##################### +# AARCH64 definitions +##################### +*_VS2019_AARCH64_CC_PATH = DEF(VS2019_BIN_AARCH64)\cl.exe +*_VS2019_AARCH64_VFRPP_PATH = DEF(VS2019_BIN_AARCH64)\cl.exe +*_VS2019_AARCH64_SLINK_PATH = DEF(VS2019_BIN_AARCH64)\lib.exe +*_VS2019_AARCH64_DLINK_PATH = DEF(VS2019_BIN_AARCH64)\link.exe +*_VS2019_AARCH64_APP_PATH = DEF(VS2019_BIN_AARCH64)\cl.exe +*_VS2019_AARCH64_PP_PATH = DEF(VS2019_BIN_AARCH64)\cl.exe +*_VS2019_AARCH64_ASM_PATH = DEF(VS2019_BIN_AARCH64)\armasm64.exe +*_VS2019_AARCH64_ASLCC_PATH = DEF(VS2019_BIN_AARCH64)\cl.exe +*_VS2019_AARCH64_ASLPP_PATH = DEF(VS2019_BIN_AARCH64)\cl.exe +*_VS2019_AARCH64_ASLDLINK_PATH = DEF(VS2019_BIN_AARCH64)\link.exe + + DEBUG_VS2019_AARCH64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gw /Oi- +RELEASE_VS2019_AARCH64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw /Oi- +NOOPT_VS2019_AARCH64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Od /Oi- + + DEBUG_VS2019_AARCH64_ASM_FLAGS = /nologo /g +RELEASE_VS2019_AARCH64_ASM_FLAGS = /nologo +NOOPT_VS2019_AARCH64_ASM_FLAGS = /nologo + + DEBUG_VS2019_AARCH64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /DRIVER /DEBUG +RELEASE_VS2019_AARCH64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /DRIVER /MERGE:.rdata=.data +NOOPT_VS2019_AARCH64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /DRIVER /DEBUG + +#################################################################################### +# GCC Common +#################################################################################### + +*_*_*_OBJCOPY_PATH = echo +*_*_*_OBJCOPY_FLAGS = objcopy not needed for +*_*_*_SYMRENAME_PATH = echo +*_*_*_SYMRENAME_FLAGS = Symbol renaming not needed for +DEBUG_*_*_OBJCOPY_ADDDEBUGFLAG = --add-gnu-debuglink="$(DEBUG_DIR)/$(MODULE_NAME).debug" +RELEASE_*_*_OBJCOPY_ADDDEBUGFLAG = +NOOPT_*_*_OBJCOPY_ADDDEBUGFLAG = --add-gnu-debuglink="$(DEBUG_DIR)/$(MODULE_NAME).debug" +*_*_*_OBJCOPY_STRIPFLAG = --strip-unneeded -R .eh_frame +*_*_*_DTC_FLAGS = -H epapr +*_*_*_DTCPP_PATH = DEF(DTCPP_BIN) +*_*_*_DTC_PATH = DEF(DTC_BIN) + +DEFINE GCC_ALL_CC_FLAGS = -g -Os -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -include AutoGen.h -fno-common +DEFINE GCC_ARM_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mlittle-endian -mabi=aapcs -fno-short-enums -funsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -Wno-address -mthumb -fno-pic -fno-pie +DEFINE GCC_LOONGARCH64_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mabi=lp64d -fno-asynchronous-unwind-tables -fno-plt -Wno-address -fno-short-enums -fsigned-char -ffunction-sections -fdata-sections +DEFINE GCC_ARM_CC_XIPFLAGS = -mno-unaligned-access +DEFINE GCC_AARCH64_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mlittle-endian -fno-short-enums -fverbose-asm -funsigned-char -ffunction-sections -fdata-sections -Wno-address -fno-asynchronous-unwind-tables -fno-unwind-tables -fno-pic -fno-pie -ffixed-x18 +DEFINE GCC_AARCH64_CC_XIPFLAGS = -mstrict-align -mgeneral-regs-only +DEFINE GCC_RISCV64_CC_XIPFLAGS = -mstrict-align -mgeneral-regs-only +DEFINE GCC_DLINK_FLAGS_COMMON = -nostdlib --pie +DEFINE GCC_DLINK2_FLAGS_COMMON = -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/GccBase.lds +DEFINE GCC_IA32_X64_DLINK_COMMON = DEF(GCC_DLINK_FLAGS_COMMON) --gc-sections +DEFINE GCC_ARM_AARCH64_DLINK_COMMON= -Wl,--emit-relocs -nostdlib -Wl,--gc-sections -u $(IMAGE_ENTRY_POINT) -Wl,-e,$(IMAGE_ENTRY_POINT),-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map +DEFINE GCC_LOONGARCH64_DLINK_COMMON= -Wl,--emit-relocs -nostdlib -Wl,--gc-sections -u $(IMAGE_ENTRY_POINT) -Wl,-e,$(IMAGE_ENTRY_POINT),-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map +DEFINE GCC_ARM_DLINK_FLAGS = DEF(GCC_ARM_AARCH64_DLINK_COMMON) -z common-page-size=0x20 -Wl,--pic-veneer +DEFINE GCC_AARCH64_DLINK_FLAGS = DEF(GCC_ARM_AARCH64_DLINK_COMMON) -z common-page-size=0x20 +DEFINE GCC_LOONGARCH64_DLINK_FLAGS = DEF(GCC_LOONGARCH64_DLINK_COMMON) -z common-page-size=0x20 +DEFINE GCC_ARM_AARCH64_ASLDLINK_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0 DEF(GCC_DLINK2_FLAGS_COMMON) -z common-page-size=0x20 +DEFINE GCC_IA32_X64_ASLDLINK_FLAGS = DEF(GCC_IA32_X64_DLINK_COMMON) --entry _ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT) +DEFINE GCC_ARM_ASLDLINK_FLAGS = DEF(GCC_ARM_DLINK_FLAGS) -Wl,--entry,ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT) DEF(GCC_ARM_AARCH64_ASLDLINK_FLAGS) +DEFINE GCC_AARCH64_ASLDLINK_FLAGS = DEF(GCC_AARCH64_DLINK_FLAGS) -Wl,--entry,ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT) DEF(GCC_ARM_AARCH64_ASLDLINK_FLAGS) +DEFINE GCC_LOONGARCH64_ASLDLINK_FLAGS = DEF(GCC_LOONGARCH64_DLINK_FLAGS) -Wl,--entry,ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT) +DEFINE GCC_IA32_X64_DLINK_FLAGS = DEF(GCC_IA32_X64_DLINK_COMMON) --entry _$(IMAGE_ENTRY_POINT) --file-alignment 0x20 --section-alignment 0x20 -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map +DEFINE GCC_ASM_FLAGS = -c -x assembler -imacros AutoGen.h +DEFINE GCC_PP_FLAGS = -E -x assembler-with-cpp -include AutoGen.h +DEFINE GCC_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE --include $(MODULE_NAME)StrDefs.h +DEFINE GCC_ASLPP_FLAGS = -x c -E -include AutoGen.h +DEFINE GCC_ASLCC_FLAGS = -x c +DEFINE GCC_WINDRES_FLAGS = -J rc -O coff +DEFINE GCC_DTCPP_FLAGS = -E -x assembler-with-cpp -imacros AutoGen.h -nostdinc -undef +DEFINE GCC_IA32_RC_FLAGS = -I binary -O elf32-i386 -B i386 --rename-section .data=.hii +DEFINE GCC_X64_RC_FLAGS = -I binary -O elf64-x86-64 -B i386 --rename-section .data=.hii +DEFINE GCC_ARM_RC_FLAGS = -I binary -O elf32-littlearm -B arm --rename-section .data=.hii +DEFINE GCC_AARCH64_RC_FLAGS = -I binary -O elf64-littleaarch64 -B aarch64 --rename-section .data=.hii +DEFINE GCC_AARCH64_RC_BTI_FLAGS = --add-section .note.gnu.property=$(WORKSPACE)/ArmPkg/Library/GnuNoteBti.bin --set-section-flags .note.gnu.property=alloc,readonly +DEFINE GCC_RISCV64_RC_FLAGS = -I binary -O elf64-littleriscv -B riscv --rename-section .data=.hii +DEFINE GCC_LOONGARCH64_RC_FLAGS = -I binary -O elf64-loongarch -B loongarch64 --rename-section .data=.hii + +# GCC Build Flag for included header file list generation +DEFINE GCC_DEPS_FLAGS = -MMD -MF $@.deps + +DEFINE GCC48_ALL_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -ffunction-sections -fdata-sections -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings +DEFINE GCC48_IA32_X64_DLINK_COMMON = -nostdlib -Wl,-n,-q,--gc-sections -z common-page-size=0x20 +DEFINE GCC48_IA32_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m32 -march=i586 -malign-double -fno-stack-protector -D EFI32 -fno-asynchronous-unwind-tables -Wno-address -fno-omit-frame-pointer +DEFINE GCC48_X64_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m64 -fno-stack-protector "-DEFIAPI=__attribute__((ms_abi))" -maccumulate-outgoing-args -mno-red-zone -Wno-address -mcmodel=small -fpie -fno-asynchronous-unwind-tables -Wno-address -fno-omit-frame-pointer +DEFINE GCC48_IA32_X64_ASLDLINK_FLAGS = DEF(GCC48_IA32_X64_DLINK_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable +DEFINE GCC48_IA32_X64_DLINK_FLAGS = DEF(GCC48_IA32_X64_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive +DEFINE GCC48_IA32_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x220 DEF(GCC_DLINK2_FLAGS_COMMON) +DEFINE GCC48_X64_DLINK_FLAGS = DEF(GCC48_IA32_X64_DLINK_FLAGS) -Wl,-melf_x86_64,--oformat=elf64-x86-64,-pie +DEFINE GCC48_X64_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 DEF(GCC_DLINK2_FLAGS_COMMON) +DEFINE GCC48_ASM_FLAGS = DEF(GCC_ASM_FLAGS) +DEFINE GCC48_ARM_ASM_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_ASM_FLAGS) -mlittle-endian +DEFINE GCC48_AARCH64_ASM_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_ASM_FLAGS) -mlittle-endian +DEFINE GCC48_ARM_CC_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_ARM_CC_FLAGS) -fstack-protector -mword-relocations +DEFINE GCC48_ARM_CC_XIPFLAGS = DEF(GCC_ARM_CC_XIPFLAGS) +DEFINE GCC48_AARCH64_CC_FLAGS = $(PLATFORM_FLAGS) -mcmodel=large DEF(GCC_AARCH64_CC_FLAGS) +DEFINE GCC48_AARCH64_CC_XIPFLAGS = DEF(GCC_AARCH64_CC_XIPFLAGS) +DEFINE GCC48_ARM_DLINK_FLAGS = DEF(GCC_ARM_DLINK_FLAGS) -Wl,--oformat=elf32-littlearm +DEFINE GCC48_ARM_DLINK2_FLAGS = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x220 +DEFINE GCC48_AARCH64_DLINK_FLAGS = DEF(GCC_AARCH64_DLINK_FLAGS) +DEFINE GCC48_AARCH64_DLINK2_FLAGS = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 +DEFINE GCC48_ARM_ASLDLINK_FLAGS = DEF(GCC_ARM_ASLDLINK_FLAGS) -Wl,--oformat=elf32-littlearm +DEFINE GCC48_AARCH64_ASLDLINK_FLAGS = DEF(GCC_AARCH64_ASLDLINK_FLAGS) +DEFINE GCC48_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) + +DEFINE GCC49_IA32_CC_FLAGS = DEF(GCC48_IA32_CC_FLAGS) -fno-pic -fno-pie +DEFINE GCC49_X64_CC_FLAGS = DEF(GCC48_X64_CC_FLAGS) +DEFINE GCC49_IA32_X64_DLINK_COMMON = -nostdlib -Wl,-n,-q,--gc-sections -z common-page-size=0x40 +DEFINE GCC49_IA32_X64_ASLDLINK_FLAGS = DEF(GCC49_IA32_X64_DLINK_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0 DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable +DEFINE GCC49_IA32_X64_DLINK_FLAGS = DEF(GCC49_IA32_X64_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive +DEFINE GCC49_IA32_DLINK2_FLAGS = DEF(GCC48_IA32_DLINK2_FLAGS) +DEFINE GCC49_X64_DLINK_FLAGS = DEF(GCC49_IA32_X64_DLINK_FLAGS) -Wl,-melf_x86_64,--oformat=elf64-x86-64,-pie +DEFINE GCC49_X64_DLINK2_FLAGS = DEF(GCC48_X64_DLINK2_FLAGS) +DEFINE GCC49_ASM_FLAGS = DEF(GCC48_ASM_FLAGS) +DEFINE GCC49_ARM_ASM_FLAGS = DEF(GCC48_ARM_ASM_FLAGS) +DEFINE GCC49_AARCH64_ASM_FLAGS = DEF(GCC48_AARCH64_ASM_FLAGS) +DEFINE GCC49_ARM_CC_FLAGS = DEF(GCC48_ARM_CC_FLAGS) +DEFINE GCC49_ARM_CC_XIPFLAGS = DEF(GCC48_ARM_CC_XIPFLAGS) +DEFINE GCC49_AARCH64_CC_FLAGS = $(PLATFORM_FLAGS) DEF(GCC48_ALL_CC_FLAGS) DEF(GCC_AARCH64_CC_FLAGS) -mcmodel=small +DEFINE GCC49_AARCH64_CC_XIPFLAGS = DEF(GCC48_AARCH64_CC_XIPFLAGS) +DEFINE GCC49_ARM_DLINK_FLAGS = DEF(GCC48_ARM_DLINK_FLAGS) +DEFINE GCC49_ARM_DLINK2_FLAGS = DEF(GCC48_ARM_DLINK2_FLAGS) +DEFINE GCC49_AARCH64_DLINK_FLAGS = DEF(GCC48_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000 +DEFINE GCC49_AARCH64_DLINK2_FLAGS = DEF(GCC48_AARCH64_DLINK2_FLAGS) +DEFINE GCC49_ARM_ASLDLINK_FLAGS = DEF(GCC48_ARM_ASLDLINK_FLAGS) +DEFINE GCC49_AARCH64_ASLDLINK_FLAGS = DEF(GCC48_AARCH64_ASLDLINK_FLAGS) +DEFINE GCC49_ASLCC_FLAGS = DEF(GCC48_ASLCC_FLAGS) + +DEFINE GCC5_IA32_CC_FLAGS = DEF(GCC49_IA32_CC_FLAGS) +DEFINE GCC5_X64_CC_FLAGS = DEF(GCC49_X64_CC_FLAGS) +DEFINE GCC5_IA32_X64_DLINK_COMMON = DEF(GCC49_IA32_X64_DLINK_COMMON) +DEFINE GCC5_IA32_X64_ASLDLINK_FLAGS = DEF(GCC49_IA32_X64_ASLDLINK_FLAGS) +DEFINE GCC5_IA32_X64_DLINK_FLAGS = DEF(GCC49_IA32_X64_DLINK_FLAGS) +DEFINE GCC5_IA32_DLINK2_FLAGS = DEF(GCC49_IA32_DLINK2_FLAGS) -Wno-error +DEFINE GCC5_X64_DLINK_FLAGS = DEF(GCC49_X64_DLINK_FLAGS) +DEFINE GCC5_X64_DLINK2_FLAGS = DEF(GCC49_X64_DLINK2_FLAGS) -Wno-error +DEFINE GCC5_ASM_FLAGS = DEF(GCC49_ASM_FLAGS) +DEFINE GCC5_ARM_ASM_FLAGS = DEF(GCC49_ARM_ASM_FLAGS) +DEFINE GCC5_AARCH64_ASM_FLAGS = DEF(GCC49_AARCH64_ASM_FLAGS) +DEFINE GCC5_ARM_CC_FLAGS = DEF(GCC49_ARM_CC_FLAGS) +DEFINE GCC5_ARM_CC_XIPFLAGS = DEF(GCC49_ARM_CC_XIPFLAGS) +DEFINE GCC5_AARCH64_CC_FLAGS = DEF(GCC49_AARCH64_CC_FLAGS) +DEFINE GCC5_AARCH64_CC_XIPFLAGS = DEF(GCC49_AARCH64_CC_XIPFLAGS) +DEFINE GCC5_ARM_DLINK_FLAGS = DEF(GCC49_ARM_DLINK_FLAGS) +DEFINE GCC5_ARM_DLINK2_FLAGS = DEF(GCC49_ARM_DLINK2_FLAGS) -Wno-error +DEFINE GCC5_AARCH64_DLINK_FLAGS = DEF(GCC49_AARCH64_DLINK_FLAGS) +DEFINE GCC5_AARCH64_DLINK2_FLAGS = DEF(GCC49_AARCH64_DLINK2_FLAGS) -Wno-error +DEFINE GCC5_ARM_ASLDLINK_FLAGS = DEF(GCC49_ARM_ASLDLINK_FLAGS) +DEFINE GCC5_AARCH64_ASLDLINK_FLAGS = DEF(GCC49_AARCH64_ASLDLINK_FLAGS) +DEFINE GCC5_ASLCC_FLAGS = DEF(GCC49_ASLCC_FLAGS) -fno-lto + +DEFINE GCC5_RISCV_ALL_CC_FLAGS = -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -include AutoGen.h -fno-common -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings -msmall-data-limit=0 +DEFINE GCC5_RISCV_ALL_DLINK_COMMON = -nostdlib -Wl,-n,-q,--gc-sections -z common-page-size=0x40 +DEFINE GCC5_RISCV_ALL_DLINK_FLAGS = DEF(GCC5_RISCV_ALL_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map +DEFINE GCC5_RISCV_ALL_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x220,--script=$(EDK_TOOLS_PATH)/Scripts/GccBase.lds +DEFINE GCC5_RISCV_ALL_ASM_FLAGS = -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h +DEFINE GCC5_RISCV_ALL_CC_FLAGS_WARNING_DISABLE = -Wno-tautological-compare -Wno-pointer-compare + +DEFINE GCC5_RISCV_OPENSBI_TYPES = -DOPENSBI_EXTERNAL_SBI_TYPES=OpensbiTypes.h + +DEFINE GCC5_RISCV64_ARCH = rv64gc +DEFINE GCC5_RISCV32_RISCV64_ASLDLINK_FLAGS = DEF(GCC5_RISCV_ALL_DLINK_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable +DEFINE GCC5_RISCV64_CC_FLAGS = DEF(GCC5_RISCV_ALL_CC_FLAGS) DEF(GCC5_RISCV_ALL_CC_FLAGS_WARNING_DISABLE) DEF(GCC5_RISCV_OPENSBI_TYPES) -march=DEF(GCC5_RISCV64_ARCH) -fno-builtin -fno-builtin-memcpy -fno-stack-protector -Wno-address -fno-asynchronous-unwind-tables -fno-unwind-tables -Wno-unused-but-set-variable -fpack-struct=8 -mcmodel=medany -mabi=lp64 -mno-relax +DEFINE GCC5_RISCV64_DLINK_FLAGS = DEF(GCC5_RISCV_ALL_DLINK_FLAGS) -Wl,-melf64lriscv,--oformat=elf64-littleriscv,--no-relax +DEFINE GCC5_RISCV64_DLINK2_FLAGS = DEF(GCC5_RISCV_ALL_DLINK2_FLAGS) +DEFINE GCC5_RISCV64_ASM_FLAGS = DEF(GCC5_RISCV_ALL_ASM_FLAGS) -march=DEF(GCC5_RISCV64_ARCH) -mcmodel=medany -mabi=lp64 + +DEFINE GCC5_LOONGARCH64_CC_FLAGS = DEF(GCC_LOONGARCH64_CC_FLAGS) -march=loongarch64 -mno-memcpy -Werror -Wno-maybe-uninitialized -Wno-stringop-overflow -Wno-pointer-to-int-cast -no-pie -fno-stack-protector -mno-explicit-relocs +DEFINE GCC5_LOONGARCH64_DLINK_FLAGS = DEF(GCC_LOONGARCH64_DLINK_FLAGS) +DEFINE GCC5_LOONGARCH64_DLINK2_FLAGS = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 +DEFINE GCC5_LOONGARCH64_ASLDLINK_FLAGS = DEF(GCC_LOONGARCH64_ASLDLINK_FLAGS) DEF(GCC5_LOONGARCH64_DLINK2_FLAGS) +DEFINE GCC5_LOONGARCH64_ASM_FLAGS = -x assembler-with-cpp -mabi=lp64d -march=loongarch64 -fno-builtin -c -Wall -mno-explicit-relocs +DEFINE GCC5_LOONGARCH64_PP_FLAGS = -mabi=lp64d -march=loongarch64 DEF(GCC_PP_FLAGS) + +#################################################################################### +# +# GCC 4.8 - This configuration is used to compile under Linux to produce +# PE/COFF binaries using GCC 4.8. +# +#################################################################################### +*_GCC48_*_*_FAMILY = GCC + +*_GCC48_*_MAKE_PATH = DEF(GCC_HOST_PREFIX)make +*_GCC48_*_*_DLL = ENV(GCC48_DLL) +*_GCC48_*_ASL_PATH = DEF(UNIX_IASL_BIN) + +*_GCC48_*_PP_FLAGS = DEF(GCC_PP_FLAGS) +*_GCC48_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) +*_GCC48_*_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) +*_GCC48_*_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) +*_GCC48_*_APP_FLAGS = +*_GCC48_*_ASL_FLAGS = DEF(IASL_FLAGS) +*_GCC48_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) +*_GCC48_*_DEPS_FLAGS = DEF(GCC_DEPS_FLAGS) + +################## +# GCC48 IA32 definitions +################## +*_GCC48_IA32_OBJCOPY_PATH = DEF(GCC48_IA32_PREFIX)objcopy +*_GCC48_IA32_CC_PATH = DEF(GCC48_IA32_PREFIX)gcc +*_GCC48_IA32_SLINK_PATH = DEF(GCC48_IA32_PREFIX)ar +*_GCC48_IA32_DLINK_PATH = DEF(GCC48_IA32_PREFIX)gcc +*_GCC48_IA32_ASLDLINK_PATH = DEF(GCC48_IA32_PREFIX)gcc +*_GCC48_IA32_ASM_PATH = DEF(GCC48_IA32_PREFIX)gcc +*_GCC48_IA32_PP_PATH = DEF(GCC48_IA32_PREFIX)gcc +*_GCC48_IA32_VFRPP_PATH = DEF(GCC48_IA32_PREFIX)gcc +*_GCC48_IA32_ASLCC_PATH = DEF(GCC48_IA32_PREFIX)gcc +*_GCC48_IA32_ASLPP_PATH = DEF(GCC48_IA32_PREFIX)gcc +*_GCC48_IA32_RC_PATH = DEF(GCC48_IA32_PREFIX)objcopy + +*_GCC48_IA32_ASLCC_FLAGS = DEF(GCC48_ASLCC_FLAGS) -m32 +*_GCC48_IA32_ASLDLINK_FLAGS = DEF(GCC48_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386 +*_GCC48_IA32_ASM_FLAGS = DEF(GCC48_ASM_FLAGS) -m32 -march=i386 +*_GCC48_IA32_DLINK_FLAGS = DEF(GCC48_IA32_X64_DLINK_FLAGS) -Wl,-m,elf_i386,--oformat=elf32-i386 +*_GCC48_IA32_DLINK2_FLAGS = DEF(GCC48_IA32_DLINK2_FLAGS) +*_GCC48_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS) +*_GCC48_IA32_OBJCOPY_FLAGS = +*_GCC48_IA32_NASM_FLAGS = -f elf32 + + DEBUG_GCC48_IA32_CC_FLAGS = DEF(GCC48_IA32_CC_FLAGS) +RELEASE_GCC48_IA32_CC_FLAGS = DEF(GCC48_IA32_CC_FLAGS) -Wno-unused-but-set-variable + NOOPT_GCC48_IA32_CC_FLAGS = DEF(GCC48_IA32_CC_FLAGS) -O0 + +################## +# GCC48 X64 definitions +################## +*_GCC48_X64_OBJCOPY_PATH = DEF(GCC48_X64_PREFIX)objcopy +*_GCC48_X64_CC_PATH = DEF(GCC48_X64_PREFIX)gcc +*_GCC48_X64_SLINK_PATH = DEF(GCC48_X64_PREFIX)ar +*_GCC48_X64_DLINK_PATH = DEF(GCC48_X64_PREFIX)gcc +*_GCC48_X64_ASLDLINK_PATH = DEF(GCC48_X64_PREFIX)gcc +*_GCC48_X64_ASM_PATH = DEF(GCC48_X64_PREFIX)gcc +*_GCC48_X64_PP_PATH = DEF(GCC48_X64_PREFIX)gcc +*_GCC48_X64_VFRPP_PATH = DEF(GCC48_X64_PREFIX)gcc +*_GCC48_X64_ASLCC_PATH = DEF(GCC48_X64_PREFIX)gcc +*_GCC48_X64_ASLPP_PATH = DEF(GCC48_X64_PREFIX)gcc +*_GCC48_X64_RC_PATH = DEF(GCC48_X64_PREFIX)objcopy + +*_GCC48_X64_ASLCC_FLAGS = DEF(GCC48_ASLCC_FLAGS) -m64 +*_GCC48_X64_ASLDLINK_FLAGS = DEF(GCC48_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64 +*_GCC48_X64_ASM_FLAGS = DEF(GCC48_ASM_FLAGS) -m64 +*_GCC48_X64_DLINK_FLAGS = DEF(GCC48_X64_DLINK_FLAGS) +*_GCC48_X64_DLINK2_FLAGS = DEF(GCC48_X64_DLINK2_FLAGS) +*_GCC48_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS) +*_GCC48_X64_OBJCOPY_FLAGS = +*_GCC48_X64_NASM_FLAGS = -f elf64 + + DEBUG_GCC48_X64_CC_FLAGS = DEF(GCC48_X64_CC_FLAGS) +RELEASE_GCC48_X64_CC_FLAGS = DEF(GCC48_X64_CC_FLAGS) -Wno-unused-but-set-variable + NOOPT_GCC48_X64_CC_FLAGS = DEF(GCC48_X64_CC_FLAGS) -O0 + +################## +# GCC48 ARM definitions +################## +*_GCC48_ARM_CC_PATH = ENV(GCC48_ARM_PREFIX)gcc +*_GCC48_ARM_SLINK_PATH = ENV(GCC48_ARM_PREFIX)ar +*_GCC48_ARM_DLINK_PATH = ENV(GCC48_ARM_PREFIX)gcc +*_GCC48_ARM_ASLDLINK_PATH = ENV(GCC48_ARM_PREFIX)gcc +*_GCC48_ARM_ASM_PATH = ENV(GCC48_ARM_PREFIX)gcc +*_GCC48_ARM_PP_PATH = ENV(GCC48_ARM_PREFIX)gcc +*_GCC48_ARM_VFRPP_PATH = ENV(GCC48_ARM_PREFIX)gcc +*_GCC48_ARM_ASLCC_PATH = ENV(GCC48_ARM_PREFIX)gcc +*_GCC48_ARM_ASLPP_PATH = ENV(GCC48_ARM_PREFIX)gcc +*_GCC48_ARM_RC_PATH = ENV(GCC48_ARM_PREFIX)objcopy + +*_GCC48_ARM_ASLCC_FLAGS = DEF(GCC48_ASLCC_FLAGS) +*_GCC48_ARM_ASLDLINK_FLAGS = DEF(GCC48_ARM_ASLDLINK_FLAGS) +*_GCC48_ARM_ASM_FLAGS = DEF(GCC48_ARM_ASM_FLAGS) +*_GCC48_ARM_DLINK_FLAGS = DEF(GCC48_ARM_DLINK_FLAGS) +*_GCC48_ARM_DLINK2_FLAGS = DEF(GCC48_ARM_DLINK2_FLAGS) +*_GCC48_ARM_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS) +*_GCC48_ARM_PLATFORM_FLAGS = -march=armv7-a +*_GCC48_ARM_PP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS) +*_GCC48_ARM_RC_FLAGS = DEF(GCC_ARM_RC_FLAGS) +*_GCC48_ARM_VFRPP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS) +*_GCC48_ARM_CC_XIPFLAGS = DEF(GCC48_ARM_CC_XIPFLAGS) + + DEBUG_GCC48_ARM_CC_FLAGS = DEF(GCC48_ARM_CC_FLAGS) -O0 +RELEASE_GCC48_ARM_CC_FLAGS = DEF(GCC48_ARM_CC_FLAGS) -Wno-unused-but-set-variable + NOOPT_GCC48_ARM_CC_FLAGS = DEF(GCC48_ARM_CC_FLAGS) -O0 + +################## +# GCC48 AARCH64 definitions +################## +*_GCC48_AARCH64_CC_PATH = ENV(GCC48_AARCH64_PREFIX)gcc +*_GCC48_AARCH64_SLINK_PATH = ENV(GCC48_AARCH64_PREFIX)ar +*_GCC48_AARCH64_DLINK_PATH = ENV(GCC48_AARCH64_PREFIX)gcc +*_GCC48_AARCH64_ASLDLINK_PATH = ENV(GCC48_AARCH64_PREFIX)gcc +*_GCC48_AARCH64_ASM_PATH = ENV(GCC48_AARCH64_PREFIX)gcc +*_GCC48_AARCH64_PP_PATH = ENV(GCC48_AARCH64_PREFIX)gcc +*_GCC48_AARCH64_VFRPP_PATH = ENV(GCC48_AARCH64_PREFIX)gcc +*_GCC48_AARCH64_ASLCC_PATH = ENV(GCC48_AARCH64_PREFIX)gcc +*_GCC48_AARCH64_ASLPP_PATH = ENV(GCC48_AARCH64_PREFIX)gcc +*_GCC48_AARCH64_RC_PATH = ENV(GCC48_AARCH64_PREFIX)objcopy + +*_GCC48_AARCH64_ASLCC_FLAGS = DEF(GCC48_ASLCC_FLAGS) +*_GCC48_AARCH64_ASLDLINK_FLAGS = DEF(GCC48_AARCH64_ASLDLINK_FLAGS) +*_GCC48_AARCH64_ASM_FLAGS = DEF(GCC48_AARCH64_ASM_FLAGS) +*_GCC48_AARCH64_DLINK_FLAGS = DEF(GCC48_AARCH64_DLINK_FLAGS) +*_GCC48_AARCH64_DLINK2_FLAGS = DEF(GCC48_AARCH64_DLINK2_FLAGS) +*_GCC48_AARCH64_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS) +*_GCC48_AARCH64_PLATFORM_FLAGS = +*_GCC48_AARCH64_PP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS) +*_GCC48_AARCH64_RC_FLAGS = DEF(GCC_AARCH64_RC_FLAGS) +*_GCC48_AARCH64_VFRPP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS) +*_GCC48_AARCH64_CC_XIPFLAGS = DEF(GCC48_AARCH64_CC_XIPFLAGS) + + DEBUG_GCC48_AARCH64_CC_FLAGS = DEF(GCC48_AARCH64_CC_FLAGS) -O0 +RELEASE_GCC48_AARCH64_CC_FLAGS = DEF(GCC48_AARCH64_CC_FLAGS) -Wno-unused-but-set-variable + NOOPT_GCC48_AARCH64_CC_FLAGS = DEF(GCC48_AARCH64_CC_FLAGS) -O0 + +#################################################################################### +# +# GCC 4.9 - This configuration is used to compile under Linux to produce +# PE/COFF binaries using GCC 4.9. +# +#################################################################################### +*_GCC49_*_*_FAMILY = GCC + +*_GCC49_*_MAKE_PATH = DEF(GCC_HOST_PREFIX)make +*_GCC49_*_*_DLL = ENV(GCC49_DLL) +*_GCC49_*_ASL_PATH = DEF(UNIX_IASL_BIN) + +*_GCC49_*_PP_FLAGS = DEF(GCC_PP_FLAGS) +*_GCC49_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) +*_GCC49_*_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) +*_GCC49_*_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) +*_GCC49_*_APP_FLAGS = +*_GCC49_*_ASL_FLAGS = DEF(IASL_FLAGS) +*_GCC49_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) +*_GCC49_*_DEPS_FLAGS = DEF(GCC_DEPS_FLAGS) + +################## +# GCC49 IA32 definitions +################## +*_GCC49_IA32_OBJCOPY_PATH = DEF(GCC49_IA32_PREFIX)objcopy +*_GCC49_IA32_CC_PATH = DEF(GCC49_IA32_PREFIX)gcc +*_GCC49_IA32_SLINK_PATH = DEF(GCC49_IA32_PREFIX)ar +*_GCC49_IA32_DLINK_PATH = DEF(GCC49_IA32_PREFIX)gcc +*_GCC49_IA32_ASLDLINK_PATH = DEF(GCC49_IA32_PREFIX)gcc +*_GCC49_IA32_ASM_PATH = DEF(GCC49_IA32_PREFIX)gcc +*_GCC49_IA32_PP_PATH = DEF(GCC49_IA32_PREFIX)gcc +*_GCC49_IA32_VFRPP_PATH = DEF(GCC49_IA32_PREFIX)gcc +*_GCC49_IA32_ASLCC_PATH = DEF(GCC49_IA32_PREFIX)gcc +*_GCC49_IA32_ASLPP_PATH = DEF(GCC49_IA32_PREFIX)gcc +*_GCC49_IA32_RC_PATH = DEF(GCC49_IA32_PREFIX)objcopy + +*_GCC49_IA32_ASLCC_FLAGS = DEF(GCC49_ASLCC_FLAGS) -m32 +*_GCC49_IA32_ASLDLINK_FLAGS = DEF(GCC49_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386 +*_GCC49_IA32_ASM_FLAGS = DEF(GCC49_ASM_FLAGS) -m32 -march=i386 +*_GCC49_IA32_DLINK_FLAGS = DEF(GCC49_IA32_X64_DLINK_FLAGS) -Wl,-m,elf_i386,--oformat=elf32-i386 +*_GCC49_IA32_DLINK2_FLAGS = DEF(GCC49_IA32_DLINK2_FLAGS) +*_GCC49_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS) +*_GCC49_IA32_OBJCOPY_FLAGS = +*_GCC49_IA32_NASM_FLAGS = -f elf32 + + DEBUG_GCC49_IA32_CC_FLAGS = DEF(GCC49_IA32_CC_FLAGS) +RELEASE_GCC49_IA32_CC_FLAGS = DEF(GCC49_IA32_CC_FLAGS) -Wno-unused-but-set-variable -Wno-unused-const-variable + NOOPT_GCC49_IA32_CC_FLAGS = DEF(GCC49_IA32_CC_FLAGS) -O0 + +################## +# GCC49 X64 definitions +################## +*_GCC49_X64_OBJCOPY_PATH = DEF(GCC49_X64_PREFIX)objcopy +*_GCC49_X64_CC_PATH = DEF(GCC49_X64_PREFIX)gcc +*_GCC49_X64_SLINK_PATH = DEF(GCC49_X64_PREFIX)ar +*_GCC49_X64_DLINK_PATH = DEF(GCC49_X64_PREFIX)gcc +*_GCC49_X64_ASLDLINK_PATH = DEF(GCC49_X64_PREFIX)gcc +*_GCC49_X64_ASM_PATH = DEF(GCC49_X64_PREFIX)gcc +*_GCC49_X64_PP_PATH = DEF(GCC49_X64_PREFIX)gcc +*_GCC49_X64_VFRPP_PATH = DEF(GCC49_X64_PREFIX)gcc +*_GCC49_X64_ASLCC_PATH = DEF(GCC49_X64_PREFIX)gcc +*_GCC49_X64_ASLPP_PATH = DEF(GCC49_X64_PREFIX)gcc +*_GCC49_X64_RC_PATH = DEF(GCC49_X64_PREFIX)objcopy + +*_GCC49_X64_ASLCC_FLAGS = DEF(GCC49_ASLCC_FLAGS) -m64 +*_GCC49_X64_ASLDLINK_FLAGS = DEF(GCC49_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64 +*_GCC49_X64_ASM_FLAGS = DEF(GCC49_ASM_FLAGS) -m64 +*_GCC49_X64_DLINK_FLAGS = DEF(GCC49_X64_DLINK_FLAGS) +*_GCC49_X64_DLINK2_FLAGS = DEF(GCC49_X64_DLINK2_FLAGS) +*_GCC49_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS) +*_GCC49_X64_OBJCOPY_FLAGS = +*_GCC49_X64_NASM_FLAGS = -f elf64 + + DEBUG_GCC49_X64_CC_FLAGS = DEF(GCC49_X64_CC_FLAGS) +RELEASE_GCC49_X64_CC_FLAGS = DEF(GCC49_X64_CC_FLAGS) -Wno-unused-but-set-variable -Wno-unused-const-variable + NOOPT_GCC49_X64_CC_FLAGS = DEF(GCC49_X64_CC_FLAGS) -O0 + +################## +# GCC49 ARM definitions +################## +*_GCC49_ARM_CC_PATH = ENV(GCC49_ARM_PREFIX)gcc +*_GCC49_ARM_SLINK_PATH = ENV(GCC49_ARM_PREFIX)ar +*_GCC49_ARM_DLINK_PATH = ENV(GCC49_ARM_PREFIX)gcc +*_GCC49_ARM_ASLDLINK_PATH = ENV(GCC49_ARM_PREFIX)gcc +*_GCC49_ARM_ASM_PATH = ENV(GCC49_ARM_PREFIX)gcc +*_GCC49_ARM_PP_PATH = ENV(GCC49_ARM_PREFIX)gcc +*_GCC49_ARM_VFRPP_PATH = ENV(GCC49_ARM_PREFIX)gcc +*_GCC49_ARM_ASLCC_PATH = ENV(GCC49_ARM_PREFIX)gcc +*_GCC49_ARM_ASLPP_PATH = ENV(GCC49_ARM_PREFIX)gcc +*_GCC49_ARM_RC_PATH = ENV(GCC49_ARM_PREFIX)objcopy + +*_GCC49_ARM_ASLCC_FLAGS = DEF(GCC49_ASLCC_FLAGS) +*_GCC49_ARM_ASLDLINK_FLAGS = DEF(GCC49_ARM_ASLDLINK_FLAGS) +*_GCC49_ARM_ASM_FLAGS = DEF(GCC49_ARM_ASM_FLAGS) +*_GCC49_ARM_DLINK_FLAGS = DEF(GCC49_ARM_DLINK_FLAGS) +*_GCC49_ARM_DLINK2_FLAGS = DEF(GCC49_ARM_DLINK2_FLAGS) +*_GCC49_ARM_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS) +*_GCC49_ARM_PLATFORM_FLAGS = -march=armv7-a +*_GCC49_ARM_PP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS) +*_GCC49_ARM_RC_FLAGS = DEF(GCC_ARM_RC_FLAGS) +*_GCC49_ARM_VFRPP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS) +*_GCC49_ARM_CC_XIPFLAGS = DEF(GCC49_ARM_CC_XIPFLAGS) + + DEBUG_GCC49_ARM_CC_FLAGS = DEF(GCC49_ARM_CC_FLAGS) -O0 +RELEASE_GCC49_ARM_CC_FLAGS = DEF(GCC49_ARM_CC_FLAGS) -Wno-unused-but-set-variable -Wno-unused-const-variable + NOOPT_GCC49_ARM_CC_FLAGS = DEF(GCC49_ARM_CC_FLAGS) -O0 + +################## +# GCC49 AARCH64 definitions +################## +*_GCC49_AARCH64_CC_PATH = ENV(GCC49_AARCH64_PREFIX)gcc +*_GCC49_AARCH64_SLINK_PATH = ENV(GCC49_AARCH64_PREFIX)ar +*_GCC49_AARCH64_DLINK_PATH = ENV(GCC49_AARCH64_PREFIX)gcc +*_GCC49_AARCH64_ASLDLINK_PATH = ENV(GCC49_AARCH64_PREFIX)gcc +*_GCC49_AARCH64_ASM_PATH = ENV(GCC49_AARCH64_PREFIX)gcc +*_GCC49_AARCH64_PP_PATH = ENV(GCC49_AARCH64_PREFIX)gcc +*_GCC49_AARCH64_VFRPP_PATH = ENV(GCC49_AARCH64_PREFIX)gcc +*_GCC49_AARCH64_ASLCC_PATH = ENV(GCC49_AARCH64_PREFIX)gcc +*_GCC49_AARCH64_ASLPP_PATH = ENV(GCC49_AARCH64_PREFIX)gcc +*_GCC49_AARCH64_RC_PATH = ENV(GCC49_AARCH64_PREFIX)objcopy + +*_GCC49_AARCH64_ASLCC_FLAGS = DEF(GCC49_ASLCC_FLAGS) +*_GCC49_AARCH64_ASLDLINK_FLAGS = DEF(GCC49_AARCH64_ASLDLINK_FLAGS) +*_GCC49_AARCH64_ASM_FLAGS = DEF(GCC49_AARCH64_ASM_FLAGS) +*_GCC49_AARCH64_DLINK2_FLAGS = DEF(GCC49_AARCH64_DLINK2_FLAGS) +*_GCC49_AARCH64_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS) +*_GCC49_AARCH64_PLATFORM_FLAGS = +*_GCC49_AARCH64_PP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS) +*_GCC49_AARCH64_RC_FLAGS = DEF(GCC_AARCH64_RC_FLAGS) +*_GCC49_AARCH64_VFRPP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS) +*_GCC49_AARCH64_CC_XIPFLAGS = DEF(GCC49_AARCH64_CC_XIPFLAGS) + + DEBUG_GCC49_AARCH64_CC_FLAGS = DEF(GCC49_AARCH64_CC_FLAGS) -O0 + DEBUG_GCC49_AARCH64_DLINK_FLAGS = DEF(GCC49_AARCH64_DLINK_FLAGS) + DEBUG_GCC49_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 + +RELEASE_GCC49_AARCH64_CC_FLAGS = DEF(GCC49_AARCH64_CC_FLAGS) -Wno-unused-but-set-variable -Wno-unused-const-variable +RELEASE_GCC49_AARCH64_DLINK_FLAGS = DEF(GCC49_AARCH64_DLINK_FLAGS) +RELEASE_GCC49_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 + + NOOPT_GCC49_AARCH64_CC_FLAGS = DEF(GCC49_AARCH64_CC_FLAGS) -O0 + NOOPT_GCC49_AARCH64_DLINK_FLAGS = DEF(GCC49_AARCH64_DLINK_FLAGS) -O0 + NOOPT_GCC49_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 -O0 + +#################################################################################### +# +# GCC NOLTO - This configuration is used to compile under Linux to produce +# PE/COFF binaries using GCC without Link Time Optimization +# +#################################################################################### +*_GCCNOLTO_*_*_FAMILY = GCC + +*_GCCNOLTO_*_MAKE_PATH = DEF(GCC_HOST_PREFIX)make +*_GCCNOLTO_*_*_DLL = ENV(GCCNOLTO_DLL) +*_GCCNOLTO_*_ASL_PATH = DEF(UNIX_IASL_BIN) + +*_GCCNOLTO_*_PP_FLAGS = DEF(GCC_PP_FLAGS) +*_GCCNOLTO_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) +*_GCCNOLTO_*_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) +*_GCCNOLTO_*_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) +*_GCCNOLTO_*_APP_FLAGS = +*_GCCNOLTO_*_ASL_FLAGS = DEF(IASL_FLAGS) +*_GCCNOLTO_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) +*_GCCNOLTO_*_DEPS_FLAGS = DEF(GCC_DEPS_FLAGS) + +################## +# GCCNOLTO IA32 definitions +################## +*_GCCNOLTO_IA32_OBJCOPY_PATH = DEF(GCCNOLTO_IA32_PREFIX)objcopy +*_GCCNOLTO_IA32_CC_PATH = DEF(GCCNOLTO_IA32_PREFIX)gcc +*_GCCNOLTO_IA32_SLINK_PATH = DEF(GCCNOLTO_IA32_PREFIX)ar +*_GCCNOLTO_IA32_DLINK_PATH = DEF(GCCNOLTO_IA32_PREFIX)gcc +*_GCCNOLTO_IA32_ASLDLINK_PATH = DEF(GCCNOLTO_IA32_PREFIX)gcc +*_GCCNOLTO_IA32_ASM_PATH = DEF(GCCNOLTO_IA32_PREFIX)gcc +*_GCCNOLTO_IA32_PP_PATH = DEF(GCCNOLTO_IA32_PREFIX)gcc +*_GCCNOLTO_IA32_VFRPP_PATH = DEF(GCCNOLTO_IA32_PREFIX)gcc +*_GCCNOLTO_IA32_ASLCC_PATH = DEF(GCCNOLTO_IA32_PREFIX)gcc +*_GCCNOLTO_IA32_ASLPP_PATH = DEF(GCCNOLTO_IA32_PREFIX)gcc +*_GCCNOLTO_IA32_RC_PATH = DEF(GCCNOLTO_IA32_PREFIX)objcopy + +*_GCCNOLTO_IA32_ASLCC_FLAGS = DEF(GCC49_ASLCC_FLAGS) -m32 +*_GCCNOLTO_IA32_ASLDLINK_FLAGS = DEF(GCC49_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386 +*_GCCNOLTO_IA32_ASM_FLAGS = DEF(GCC49_ASM_FLAGS) -m32 -march=i386 +*_GCCNOLTO_IA32_DLINK_FLAGS = DEF(GCC49_IA32_X64_DLINK_FLAGS) -Wl,-m,elf_i386,--oformat=elf32-i386 +*_GCCNOLTO_IA32_DLINK2_FLAGS = DEF(GCC49_IA32_DLINK2_FLAGS) +*_GCCNOLTO_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS) +*_GCCNOLTO_IA32_OBJCOPY_FLAGS = +*_GCCNOLTO_IA32_NASM_FLAGS = -f elf32 + + DEBUG_GCCNOLTO_IA32_CC_FLAGS = DEF(GCC49_IA32_CC_FLAGS) +RELEASE_GCCNOLTO_IA32_CC_FLAGS = DEF(GCC49_IA32_CC_FLAGS) -Wno-unused-but-set-variable -Wno-unused-const-variable + NOOPT_GCCNOLTO_IA32_CC_FLAGS = DEF(GCC49_IA32_CC_FLAGS) -O0 + +################## +# GCCNOLTO X64 definitions +################## +*_GCCNOLTO_X64_OBJCOPY_PATH = DEF(GCCNOLTO_X64_PREFIX)objcopy +*_GCCNOLTO_X64_CC_PATH = DEF(GCCNOLTO_X64_PREFIX)gcc +*_GCCNOLTO_X64_SLINK_PATH = DEF(GCCNOLTO_X64_PREFIX)ar +*_GCCNOLTO_X64_DLINK_PATH = DEF(GCCNOLTO_X64_PREFIX)gcc +*_GCCNOLTO_X64_ASLDLINK_PATH = DEF(GCCNOLTO_X64_PREFIX)gcc +*_GCCNOLTO_X64_ASM_PATH = DEF(GCCNOLTO_X64_PREFIX)gcc +*_GCCNOLTO_X64_PP_PATH = DEF(GCCNOLTO_X64_PREFIX)gcc +*_GCCNOLTO_X64_VFRPP_PATH = DEF(GCCNOLTO_X64_PREFIX)gcc +*_GCCNOLTO_X64_ASLCC_PATH = DEF(GCCNOLTO_X64_PREFIX)gcc +*_GCCNOLTO_X64_ASLPP_PATH = DEF(GCCNOLTO_X64_PREFIX)gcc +*_GCCNOLTO_X64_RC_PATH = DEF(GCCNOLTO_X64_PREFIX)objcopy + +*_GCCNOLTO_X64_ASLCC_FLAGS = DEF(GCC49_ASLCC_FLAGS) -m64 +*_GCCNOLTO_X64_ASLDLINK_FLAGS = DEF(GCC49_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64 +*_GCCNOLTO_X64_ASM_FLAGS = DEF(GCC49_ASM_FLAGS) -m64 +*_GCCNOLTO_X64_DLINK_FLAGS = DEF(GCC49_X64_DLINK_FLAGS) +*_GCCNOLTO_X64_DLINK2_FLAGS = DEF(GCC49_X64_DLINK2_FLAGS) +*_GCCNOLTO_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS) +*_GCCNOLTO_X64_OBJCOPY_FLAGS = +*_GCCNOLTO_X64_NASM_FLAGS = -f elf64 + + DEBUG_GCCNOLTO_X64_CC_FLAGS = DEF(GCC49_X64_CC_FLAGS) +RELEASE_GCCNOLTO_X64_CC_FLAGS = DEF(GCC49_X64_CC_FLAGS) -Wno-unused-but-set-variable -Wno-unused-const-variable + NOOPT_GCCNOLTO_X64_CC_FLAGS = DEF(GCC49_X64_CC_FLAGS) -O0 + +################## +# GCCNOLTO ARM definitions +################## +*_GCCNOLTO_ARM_CC_PATH = ENV(GCCNOLTO_ARM_PREFIX)gcc +*_GCCNOLTO_ARM_SLINK_PATH = ENV(GCCNOLTO_ARM_PREFIX)ar +*_GCCNOLTO_ARM_DLINK_PATH = ENV(GCCNOLTO_ARM_PREFIX)gcc +*_GCCNOLTO_ARM_ASLDLINK_PATH = ENV(GCCNOLTO_ARM_PREFIX)gcc +*_GCCNOLTO_ARM_ASM_PATH = ENV(GCCNOLTO_ARM_PREFIX)gcc +*_GCCNOLTO_ARM_PP_PATH = ENV(GCCNOLTO_ARM_PREFIX)gcc +*_GCCNOLTO_ARM_VFRPP_PATH = ENV(GCCNOLTO_ARM_PREFIX)gcc +*_GCCNOLTO_ARM_ASLCC_PATH = ENV(GCCNOLTO_ARM_PREFIX)gcc +*_GCCNOLTO_ARM_ASLPP_PATH = ENV(GCCNOLTO_ARM_PREFIX)gcc +*_GCCNOLTO_ARM_RC_PATH = ENV(GCCNOLTO_ARM_PREFIX)objcopy + +*_GCCNOLTO_ARM_ASLCC_FLAGS = DEF(GCC49_ASLCC_FLAGS) +*_GCCNOLTO_ARM_ASLDLINK_FLAGS = DEF(GCC49_ARM_ASLDLINK_FLAGS) +*_GCCNOLTO_ARM_ASM_FLAGS = DEF(GCC49_ARM_ASM_FLAGS) +*_GCCNOLTO_ARM_DLINK_FLAGS = DEF(GCC49_ARM_DLINK_FLAGS) +*_GCCNOLTO_ARM_DLINK2_FLAGS = DEF(GCC49_ARM_DLINK2_FLAGS) +*_GCCNOLTO_ARM_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS) +*_GCCNOLTO_ARM_PLATFORM_FLAGS = -march=armv7-a +*_GCCNOLTO_ARM_PP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS) +*_GCCNOLTO_ARM_RC_FLAGS = DEF(GCC_ARM_RC_FLAGS) +*_GCCNOLTO_ARM_VFRPP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS) +*_GCCNOLTO_ARM_CC_XIPFLAGS = DEF(GCC49_ARM_CC_XIPFLAGS) + + DEBUG_GCCNOLTO_ARM_CC_FLAGS = DEF(GCC49_ARM_CC_FLAGS) -O0 +RELEASE_GCCNOLTO_ARM_CC_FLAGS = DEF(GCC49_ARM_CC_FLAGS) -Wno-unused-but-set-variable -Wno-unused-const-variable + NOOPT_GCCNOLTO_ARM_CC_FLAGS = DEF(GCC49_ARM_CC_FLAGS) -O0 + +################## +# GCCNOLTO AARCH64 definitions +################## +*_GCCNOLTO_AARCH64_CC_PATH = ENV(GCCNOLTO_AARCH64_PREFIX)gcc +*_GCCNOLTO_AARCH64_SLINK_PATH = ENV(GCCNOLTO_AARCH64_PREFIX)ar +*_GCCNOLTO_AARCH64_DLINK_PATH = ENV(GCCNOLTO_AARCH64_PREFIX)gcc +*_GCCNOLTO_AARCH64_ASLDLINK_PATH = ENV(GCCNOLTO_AARCH64_PREFIX)gcc +*_GCCNOLTO_AARCH64_ASM_PATH = ENV(GCCNOLTO_AARCH64_PREFIX)gcc +*_GCCNOLTO_AARCH64_PP_PATH = ENV(GCCNOLTO_AARCH64_PREFIX)gcc +*_GCCNOLTO_AARCH64_VFRPP_PATH = ENV(GCCNOLTO_AARCH64_PREFIX)gcc +*_GCCNOLTO_AARCH64_ASLCC_PATH = ENV(GCCNOLTO_AARCH64_PREFIX)gcc +*_GCCNOLTO_AARCH64_ASLPP_PATH = ENV(GCCNOLTO_AARCH64_PREFIX)gcc +*_GCCNOLTO_AARCH64_RC_PATH = ENV(GCCNOLTO_AARCH64_PREFIX)objcopy + +*_GCCNOLTO_AARCH64_ASLCC_FLAGS = DEF(GCC49_ASLCC_FLAGS) +*_GCCNOLTO_AARCH64_ASLDLINK_FLAGS = DEF(GCC49_AARCH64_ASLDLINK_FLAGS) +*_GCCNOLTO_AARCH64_ASM_FLAGS = DEF(GCC49_AARCH64_ASM_FLAGS) +*_GCCNOLTO_AARCH64_DLINK2_FLAGS = DEF(GCC49_AARCH64_DLINK2_FLAGS) +*_GCCNOLTO_AARCH64_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS) +*_GCCNOLTO_AARCH64_PLATFORM_FLAGS = +*_GCCNOLTO_AARCH64_PP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS) +*_GCCNOLTO_AARCH64_RC_FLAGS = DEF(GCC_AARCH64_RC_FLAGS) +*_GCCNOLTO_AARCH64_VFRPP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS) +*_GCCNOLTO_AARCH64_CC_XIPFLAGS = DEF(GCC49_AARCH64_CC_XIPFLAGS) + + DEBUG_GCCNOLTO_AARCH64_CC_FLAGS = DEF(GCC49_AARCH64_CC_FLAGS) -O0 + DEBUG_GCCNOLTO_AARCH64_DLINK_FLAGS = DEF(GCC49_AARCH64_DLINK_FLAGS) + DEBUG_GCCNOLTO_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 + +RELEASE_GCCNOLTO_AARCH64_CC_FLAGS = DEF(GCC49_AARCH64_CC_FLAGS) -Wno-unused-but-set-variable -Wno-unused-const-variable +RELEASE_GCCNOLTO_AARCH64_DLINK_FLAGS = DEF(GCC49_AARCH64_DLINK_FLAGS) +RELEASE_GCCNOLTO_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 + + NOOPT_GCCNOLTO_AARCH64_CC_FLAGS = DEF(GCC49_AARCH64_CC_FLAGS) -O0 + NOOPT_GCCNOLTO_AARCH64_DLINK_FLAGS = DEF(GCC49_AARCH64_DLINK_FLAGS) -O0 + NOOPT_GCCNOLTO_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 -O0 + +#################################################################################### +# +# GCC 5 - This configuration is used to compile under Linux to produce +# PE/COFF binaries using GCC 5 +# +#################################################################################### +*_GCC5_*_*_FAMILY = GCC + +*_GCC5_*_MAKE_PATH = DEF(GCC_HOST_PREFIX)make +*_GCC5_*_*_DLL = ENV(GCC5_DLL) +*_GCC5_*_ASL_PATH = DEF(UNIX_IASL_BIN) + +*_GCC5_*_PP_FLAGS = DEF(GCC_PP_FLAGS) +*_GCC5_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) +*_GCC5_*_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) +*_GCC5_*_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) +*_GCC5_*_APP_FLAGS = +*_GCC5_*_ASL_FLAGS = DEF(IASL_FLAGS) +*_GCC5_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) +*_GCC5_*_DEPS_FLAGS = DEF(GCC_DEPS_FLAGS) + +################## +# GCC5 IA32 definitions +################## +*_GCC5_IA32_OBJCOPY_PATH = DEF(GCC5_IA32_PREFIX)objcopy +*_GCC5_IA32_CC_PATH = DEF(GCC5_IA32_PREFIX)gcc +*_GCC5_IA32_SLINK_PATH = DEF(GCC5_IA32_PREFIX)gcc-ar +*_GCC5_IA32_DLINK_PATH = DEF(GCC5_IA32_PREFIX)gcc +*_GCC5_IA32_ASLDLINK_PATH = DEF(GCC5_IA32_PREFIX)gcc +*_GCC5_IA32_ASM_PATH = DEF(GCC5_IA32_PREFIX)gcc +*_GCC5_IA32_PP_PATH = DEF(GCC5_IA32_PREFIX)gcc +*_GCC5_IA32_VFRPP_PATH = DEF(GCC5_IA32_PREFIX)gcc +*_GCC5_IA32_ASLCC_PATH = DEF(GCC5_IA32_PREFIX)gcc +*_GCC5_IA32_ASLPP_PATH = DEF(GCC5_IA32_PREFIX)gcc +*_GCC5_IA32_RC_PATH = DEF(GCC5_IA32_PREFIX)objcopy + +*_GCC5_IA32_ASLCC_FLAGS = DEF(GCC5_ASLCC_FLAGS) -m32 +*_GCC5_IA32_ASLDLINK_FLAGS = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386 -no-pie +*_GCC5_IA32_ASM_FLAGS = DEF(GCC5_ASM_FLAGS) -m32 -march=i386 +*_GCC5_IA32_DLINK2_FLAGS = DEF(GCC5_IA32_DLINK2_FLAGS) -no-pie +*_GCC5_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS) +*_GCC5_IA32_OBJCOPY_FLAGS = +*_GCC5_IA32_NASM_FLAGS = -f elf32 + + DEBUG_GCC5_IA32_CC_FLAGS = DEF(GCC5_IA32_CC_FLAGS) -flto + DEBUG_GCC5_IA32_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,-m,elf_i386,--oformat=elf32-i386 + +RELEASE_GCC5_IA32_CC_FLAGS = DEF(GCC5_IA32_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable +RELEASE_GCC5_IA32_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,-m,elf_i386,--oformat=elf32-i386 + + NOOPT_GCC5_IA32_CC_FLAGS = DEF(GCC5_IA32_CC_FLAGS) -O0 + NOOPT_GCC5_IA32_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -Wl,-m,elf_i386,--oformat=elf32-i386 -O0 + +################## +# GCC5 X64 definitions +################## +*_GCC5_X64_OBJCOPY_PATH = DEF(GCC5_X64_PREFIX)objcopy +*_GCC5_X64_CC_PATH = DEF(GCC5_X64_PREFIX)gcc +*_GCC5_X64_SLINK_PATH = DEF(GCC5_X64_PREFIX)gcc-ar +*_GCC5_X64_DLINK_PATH = DEF(GCC5_X64_PREFIX)gcc +*_GCC5_X64_ASLDLINK_PATH = DEF(GCC5_X64_PREFIX)gcc +*_GCC5_X64_ASM_PATH = DEF(GCC5_X64_PREFIX)gcc +*_GCC5_X64_PP_PATH = DEF(GCC5_X64_PREFIX)gcc +*_GCC5_X64_VFRPP_PATH = DEF(GCC5_X64_PREFIX)gcc +*_GCC5_X64_ASLCC_PATH = DEF(GCC5_X64_PREFIX)gcc +*_GCC5_X64_ASLPP_PATH = DEF(GCC5_X64_PREFIX)gcc +*_GCC5_X64_RC_PATH = DEF(GCC5_X64_PREFIX)objcopy + +*_GCC5_X64_ASLCC_FLAGS = DEF(GCC5_ASLCC_FLAGS) -m64 +*_GCC5_X64_ASLDLINK_FLAGS = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64 +*_GCC5_X64_ASM_FLAGS = DEF(GCC5_ASM_FLAGS) -m64 +*_GCC5_X64_DLINK2_FLAGS = DEF(GCC5_X64_DLINK2_FLAGS) +*_GCC5_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS) +*_GCC5_X64_OBJCOPY_FLAGS = +*_GCC5_X64_NASM_FLAGS = -f elf64 + + DEBUG_GCC5_X64_CC_FLAGS = DEF(GCC5_X64_CC_FLAGS) -flto -DUSING_LTO + DEBUG_GCC5_X64_DLINK_FLAGS = DEF(GCC5_X64_DLINK_FLAGS) -flto -Os + +RELEASE_GCC5_X64_CC_FLAGS = DEF(GCC5_X64_CC_FLAGS) -flto -DUSING_LTO -Wno-unused-but-set-variable -Wno-unused-const-variable +RELEASE_GCC5_X64_DLINK_FLAGS = DEF(GCC5_X64_DLINK_FLAGS) -flto -Os + + NOOPT_GCC5_X64_CC_FLAGS = DEF(GCC5_X64_CC_FLAGS) -O0 + NOOPT_GCC5_X64_DLINK_FLAGS = DEF(GCC5_X64_DLINK_FLAGS) -O0 + +################## +# GCC5 ARM definitions +################## +*_GCC5_ARM_CC_PATH = ENV(GCC5_ARM_PREFIX)gcc +*_GCC5_ARM_SLINK_PATH = ENV(GCC5_ARM_PREFIX)gcc-ar +*_GCC5_ARM_DLINK_PATH = ENV(GCC5_ARM_PREFIX)gcc +*_GCC5_ARM_ASLDLINK_PATH = ENV(GCC5_ARM_PREFIX)gcc +*_GCC5_ARM_ASM_PATH = ENV(GCC5_ARM_PREFIX)gcc +*_GCC5_ARM_PP_PATH = ENV(GCC5_ARM_PREFIX)gcc +*_GCC5_ARM_VFRPP_PATH = ENV(GCC5_ARM_PREFIX)gcc +*_GCC5_ARM_ASLCC_PATH = ENV(GCC5_ARM_PREFIX)gcc +*_GCC5_ARM_ASLPP_PATH = ENV(GCC5_ARM_PREFIX)gcc +*_GCC5_ARM_RC_PATH = ENV(GCC5_ARM_PREFIX)objcopy + +*_GCC5_ARM_ASLCC_FLAGS = DEF(GCC5_ASLCC_FLAGS) +*_GCC5_ARM_ASLDLINK_FLAGS = DEF(GCC5_ARM_ASLDLINK_FLAGS) +*_GCC5_ARM_ASM_FLAGS = DEF(GCC5_ARM_ASM_FLAGS) +*_GCC5_ARM_DLINK2_FLAGS = DEF(GCC5_ARM_DLINK2_FLAGS) +*_GCC5_ARM_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS) +*_GCC5_ARM_PLATFORM_FLAGS = -march=armv7-a -mfloat-abi=soft +*_GCC5_ARM_PP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS) +*_GCC5_ARM_RC_FLAGS = DEF(GCC_ARM_RC_FLAGS) +*_GCC5_ARM_VFRPP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS) +*_GCC5_ARM_CC_XIPFLAGS = DEF(GCC5_ARM_CC_XIPFLAGS) + + DEBUG_GCC5_ARM_CC_FLAGS = DEF(GCC5_ARM_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable + DEBUG_GCC5_ARM_DLINK_FLAGS = DEF(GCC5_ARM_DLINK_FLAGS) -flto -Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm + +RELEASE_GCC5_ARM_CC_FLAGS = DEF(GCC5_ARM_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable +RELEASE_GCC5_ARM_DLINK_FLAGS = DEF(GCC5_ARM_DLINK_FLAGS) -flto -Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm + + NOOPT_GCC5_ARM_CC_FLAGS = DEF(GCC5_ARM_CC_FLAGS) -O0 + NOOPT_GCC5_ARM_DLINK_FLAGS = DEF(GCC5_ARM_DLINK_FLAGS) -O0 + +################## +# GCC5 AARCH64 definitions +################## +*_GCC5_AARCH64_CC_PATH = ENV(GCC5_AARCH64_PREFIX)gcc +*_GCC5_AARCH64_SLINK_PATH = ENV(GCC5_AARCH64_PREFIX)gcc-ar +*_GCC5_AARCH64_DLINK_PATH = ENV(GCC5_AARCH64_PREFIX)gcc +*_GCC5_AARCH64_ASLDLINK_PATH = ENV(GCC5_AARCH64_PREFIX)gcc +*_GCC5_AARCH64_ASM_PATH = ENV(GCC5_AARCH64_PREFIX)gcc +*_GCC5_AARCH64_PP_PATH = ENV(GCC5_AARCH64_PREFIX)gcc +*_GCC5_AARCH64_VFRPP_PATH = ENV(GCC5_AARCH64_PREFIX)gcc +*_GCC5_AARCH64_ASLCC_PATH = ENV(GCC5_AARCH64_PREFIX)gcc +*_GCC5_AARCH64_ASLPP_PATH = ENV(GCC5_AARCH64_PREFIX)gcc +*_GCC5_AARCH64_RC_PATH = ENV(GCC5_AARCH64_PREFIX)objcopy + +*_GCC5_AARCH64_ASLCC_FLAGS = DEF(GCC5_ASLCC_FLAGS) +*_GCC5_AARCH64_ASLDLINK_FLAGS = DEF(GCC5_AARCH64_ASLDLINK_FLAGS) +*_GCC5_AARCH64_ASM_FLAGS = DEF(GCC5_AARCH64_ASM_FLAGS) +*_GCC5_AARCH64_DLINK2_FLAGS = DEF(GCC5_AARCH64_DLINK2_FLAGS) +*_GCC5_AARCH64_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS) +*_GCC5_AARCH64_PLATFORM_FLAGS = +*_GCC5_AARCH64_PP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS) +*_GCC5_AARCH64_RC_FLAGS = DEF(GCC_AARCH64_RC_FLAGS) DEF(GCC_AARCH64_RC_BTI_FLAGS) +*_GCC5_AARCH64_VFRPP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS) +*_GCC5_AARCH64_CC_XIPFLAGS = DEF(GCC5_AARCH64_CC_XIPFLAGS) + + DEBUG_GCC5_AARCH64_CC_FLAGS = DEF(GCC5_AARCH64_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable + DEBUG_GCC5_AARCH64_DLINK_FLAGS = DEF(GCC5_AARCH64_DLINK_FLAGS) -flto -Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64 -Wno-lto-type-mismatch + DEBUG_GCC5_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 + +RELEASE_GCC5_AARCH64_CC_FLAGS = DEF(GCC5_AARCH64_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable +RELEASE_GCC5_AARCH64_DLINK_FLAGS = DEF(GCC5_AARCH64_DLINK_FLAGS) -flto -Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64 -Wno-lto-type-mismatch +RELEASE_GCC5_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 + + NOOPT_GCC5_AARCH64_CC_FLAGS = DEF(GCC5_AARCH64_CC_FLAGS) -O0 + NOOPT_GCC5_AARCH64_DLINK_FLAGS = DEF(GCC5_AARCH64_DLINK_FLAGS) -O0 + NOOPT_GCC5_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 -O0 + +#################################################################################### +# +# GCC RISC-V This configuration is used to compile under Linux to produce +# PE/COFF binaries using GCC RISC-V tool chain +# +#################################################################################### + +################## +# GCC5 RISCV64 definitions +################## +*_GCC5_RISCV64_OBJCOPY_PATH = ENV(GCC5_RISCV64_PREFIX)objcopy +*_GCC5_RISCV64_CC_PATH = ENV(GCC5_RISCV64_PREFIX)gcc +*_GCC5_RISCV64_SLINK_PATH = ENV(GCC5_RISCV64_PREFIX)gcc-ar +*_GCC5_RISCV64_DLINK_PATH = ENV(GCC5_RISCV64_PREFIX)gcc +*_GCC5_RISCV64_ASLDLINK_PATH = ENV(GCC5_RISCV64_PREFIX)gcc +*_GCC5_RISCV64_ASM_PATH = ENV(GCC5_RISCV64_PREFIX)gcc +*_GCC5_RISCV64_PP_PATH = ENV(GCC5_RISCV64_PREFIX)gcc +*_GCC5_RISCV64_VFRPP_PATH = ENV(GCC5_RISCV64_PREFIX)gcc +*_GCC5_RISCV64_ASLCC_PATH = ENV(GCC5_RISCV64_PREFIX)gcc +*_GCC5_RISCV64_ASLPP_PATH = ENV(GCC5_RISCV64_PREFIX)gcc +*_GCC5_RISCV64_RC_PATH = ENV(GCC5_RISCV64_PREFIX)objcopy + +*_GCC5_RISCV64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) +*_GCC5_RISCV64_ASLDLINK_FLAGS = DEF(GCC5_RISCV32_RISCV64_ASLDLINK_FLAGS) +*_GCC5_RISCV64_ASM_FLAGS = DEF(GCC5_RISCV64_ASM_FLAGS) +*_GCC5_RISCV64_CC_FLAGS = DEF(GCC5_RISCV64_CC_FLAGS) -save-temps +*_GCC5_RISCV64_DLINK_FLAGS = DEF(GCC5_RISCV64_DLINK_FLAGS) +*_GCC5_RISCV64_DLINK2_FLAGS = DEF(GCC5_RISCV64_DLINK2_FLAGS) +*_GCC5_RISCV64_RC_FLAGS = DEF(GCC_RISCV64_RC_FLAGS) +*_GCC5_RISCV64_OBJCOPY_FLAGS = +*_GCC5_RISCV64_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS) +*_GCC5_RISCV64_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(GCC5_RISCV_OPENSBI_TYPES) + +################## +# GCC5 LOONGARCH64 definitions +################## +*_GCC5_LOONGARCH64_OBJCOPY_PATH = ENV(GCC5_LOONGARCH64_PREFIX)objcopy +*_GCC5_LOONGARCH64_CC_PATH = ENV(GCC5_LOONGARCH64_PREFIX)gcc +*_GCC5_LOONGARCH64_SLINK_PATH = ENV(GCC5_LOONGARCH64_PREFIX)gcc-ar +*_GCC5_LOONGARCH64_DLINK_PATH = ENV(GCC5_LOONGARCH64_PREFIX)gcc +*_GCC5_LOONGARCH64_ASLDLINK_PATH = ENV(GCC5_LOONGARCH64_PREFIX)gcc +*_GCC5_LOONGARCH64_ASM_PATH = ENV(GCC5_LOONGARCH64_PREFIX)gcc +*_GCC5_LOONGARCH64_PP_PATH = ENV(GCC5_LOONGARCH64_PREFIX)gcc +*_GCC5_LOONGARCH64_VFRPP_PATH = ENV(GCC5_LOONGARCH64_PREFIX)gcc +*_GCC5_LOONGARCH64_ASLCC_PATH = ENV(GCC5_LOONGARCH64_PREFIX)gcc +*_GCC5_LOONGARCH64_ASLPP_PATH = ENV(GCC5_LOONGARCH64_PREFIX)gcc +*_GCC5_LOONGARCH64_RC_PATH = ENV(GCC5_LOONGARCH64_PREFIX)objcopy + +*_GCC5_LOONGARCH64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) +*_GCC5_LOONGARCH64_ASLDLINK_FLAGS = DEF(GCC5_LOONGARCH64_ASLDLINK_FLAGS) +*_GCC5_LOONGARCH64_ASM_FLAGS = DEF(GCC5_LOONGARCH64_ASM_FLAGS) +*_GCC5_LOONGARCH64_DLINK_FLAGS = DEF(GCC5_LOONGARCH64_DLINK_FLAGS) +*_GCC5_LOONGARCH64_DLINK2_FLAGS = DEF(GCC5_LOONGARCH64_DLINK2_FLAGS) +*_GCC5_LOONGARCH64_RC_FLAGS = DEF(GCC_LOONGARCH64_RC_FLAGS) +*_GCC5_LOONGARCH64_OBJCOPY_FLAGS = +*_GCC5_LOONGARCH64_NASM_FLAGS = -f elf32 +*_GCC5_LOONGARCH64_PP_FLAGS = DEF(GCC5_LOONGARCH64_PP_FLAGS) + +DEBUG_GCC5_LOONGARCH64_CC_FLAGS = DEF(GCC5_LOONGARCH64_CC_FLAGS) +RELEASE_GCC5_LOONGARCH64_CC_FLAGS = DEF(GCC5_LOONGARCH64_CC_FLAGS) -Wno-unused-but-set-variable -Wno-unused-variable + +#################################################################################### +# +# GCC - This configuration is used to compile under Linux to produce +# PE/COFF binaries using GCC 5 or newer +# +#################################################################################### +*_GCC_*_*_FAMILY = GCC + +*_GCC_*_MAKE_PATH = DEF(GCC_HOST_PREFIX)make +*_GCC_*_*_DLL = ENV(GCC_DLL) +*_GCC_*_ASL_PATH = DEF(UNIX_IASL_BIN) + +*_GCC_*_PP_FLAGS = DEF(GCC_PP_FLAGS) +*_GCC_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) +*_GCC_*_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) +*_GCC_*_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) +*_GCC_*_APP_FLAGS = +*_GCC_*_ASL_FLAGS = DEF(IASL_FLAGS) +*_GCC_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) +*_GCC_*_DEPS_FLAGS = DEF(GCC_DEPS_FLAGS) + +################## +# GCC IA32 definitions +################## +*_GCC_IA32_OBJCOPY_PATH = DEF(GCC_IA32_PREFIX)objcopy +*_GCC_IA32_CC_PATH = DEF(GCC_IA32_PREFIX)gcc +*_GCC_IA32_SLINK_PATH = DEF(GCC_IA32_PREFIX)gcc-ar +*_GCC_IA32_DLINK_PATH = DEF(GCC_IA32_PREFIX)gcc +*_GCC_IA32_ASLDLINK_PATH = DEF(GCC_IA32_PREFIX)gcc +*_GCC_IA32_ASM_PATH = DEF(GCC_IA32_PREFIX)gcc +*_GCC_IA32_PP_PATH = DEF(GCC_IA32_PREFIX)gcc +*_GCC_IA32_VFRPP_PATH = DEF(GCC_IA32_PREFIX)gcc +*_GCC_IA32_ASLCC_PATH = DEF(GCC_IA32_PREFIX)gcc +*_GCC_IA32_ASLPP_PATH = DEF(GCC_IA32_PREFIX)gcc +*_GCC_IA32_RC_PATH = DEF(GCC_IA32_PREFIX)objcopy + +*_GCC_IA32_ASLCC_FLAGS = DEF(GCC5_ASLCC_FLAGS) -m32 +*_GCC_IA32_ASLDLINK_FLAGS = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386 -no-pie +*_GCC_IA32_ASM_FLAGS = DEF(GCC5_ASM_FLAGS) -m32 -march=i386 +*_GCC_IA32_DLINK2_FLAGS = DEF(GCC5_IA32_DLINK2_FLAGS) -no-pie +*_GCC_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS) +*_GCC_IA32_OBJCOPY_FLAGS = +*_GCC_IA32_NASM_FLAGS = -f elf32 + + DEBUG_GCC_IA32_CC_FLAGS = DEF(GCC5_IA32_CC_FLAGS) -flto + DEBUG_GCC_IA32_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,-m,elf_i386,--oformat=elf32-i386 + +RELEASE_GCC_IA32_CC_FLAGS = DEF(GCC5_IA32_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable +RELEASE_GCC_IA32_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,-m,elf_i386,--oformat=elf32-i386 + + NOOPT_GCC_IA32_CC_FLAGS = DEF(GCC5_IA32_CC_FLAGS) -O0 + NOOPT_GCC_IA32_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -Wl,-m,elf_i386,--oformat=elf32-i386 -O0 + +################## +# GCC X64 definitions +################## +*_GCC_X64_OBJCOPY_PATH = DEF(GCC_X64_PREFIX)objcopy +*_GCC_X64_CC_PATH = DEF(GCC_X64_PREFIX)gcc +*_GCC_X64_SLINK_PATH = DEF(GCC_X64_PREFIX)gcc-ar +*_GCC_X64_DLINK_PATH = DEF(GCC_X64_PREFIX)gcc +*_GCC_X64_ASLDLINK_PATH = DEF(GCC_X64_PREFIX)gcc +*_GCC_X64_ASM_PATH = DEF(GCC_X64_PREFIX)gcc +*_GCC_X64_PP_PATH = DEF(GCC_X64_PREFIX)gcc +*_GCC_X64_VFRPP_PATH = DEF(GCC_X64_PREFIX)gcc +*_GCC_X64_ASLCC_PATH = DEF(GCC_X64_PREFIX)gcc +*_GCC_X64_ASLPP_PATH = DEF(GCC_X64_PREFIX)gcc +*_GCC_X64_RC_PATH = DEF(GCC_X64_PREFIX)objcopy + +*_GCC_X64_ASLCC_FLAGS = DEF(GCC5_ASLCC_FLAGS) -m64 +*_GCC_X64_ASLDLINK_FLAGS = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64 +*_GCC_X64_ASM_FLAGS = DEF(GCC5_ASM_FLAGS) -m64 +*_GCC_X64_DLINK2_FLAGS = DEF(GCC5_X64_DLINK2_FLAGS) +*_GCC_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS) +*_GCC_X64_OBJCOPY_FLAGS = +*_GCC_X64_NASM_FLAGS = -f elf64 + + DEBUG_GCC_X64_CC_FLAGS = DEF(GCC5_X64_CC_FLAGS) -flto -DUSING_LTO + DEBUG_GCC_X64_DLINK_FLAGS = DEF(GCC5_X64_DLINK_FLAGS) -flto -Os + +RELEASE_GCC_X64_CC_FLAGS = DEF(GCC5_X64_CC_FLAGS) -flto -DUSING_LTO -Wno-unused-but-set-variable -Wno-unused-const-variable +RELEASE_GCC_X64_DLINK_FLAGS = DEF(GCC5_X64_DLINK_FLAGS) -flto -Os + + NOOPT_GCC_X64_CC_FLAGS = DEF(GCC5_X64_CC_FLAGS) -O0 + NOOPT_GCC_X64_DLINK_FLAGS = DEF(GCC5_X64_DLINK_FLAGS) -O0 + +################## +# GCC ARM definitions +################## +*_GCC_ARM_CC_PATH = ENV(GCC_ARM_PREFIX)gcc +*_GCC_ARM_SLINK_PATH = ENV(GCC_ARM_PREFIX)gcc-ar +*_GCC_ARM_DLINK_PATH = ENV(GCC_ARM_PREFIX)gcc +*_GCC_ARM_ASLDLINK_PATH = ENV(GCC_ARM_PREFIX)gcc +*_GCC_ARM_ASM_PATH = ENV(GCC_ARM_PREFIX)gcc +*_GCC_ARM_PP_PATH = ENV(GCC_ARM_PREFIX)gcc +*_GCC_ARM_VFRPP_PATH = ENV(GCC_ARM_PREFIX)gcc +*_GCC_ARM_ASLCC_PATH = ENV(GCC_ARM_PREFIX)gcc +*_GCC_ARM_ASLPP_PATH = ENV(GCC_ARM_PREFIX)gcc +*_GCC_ARM_RC_PATH = ENV(GCC_ARM_PREFIX)objcopy + +*_GCC_ARM_ASLCC_FLAGS = DEF(GCC5_ASLCC_FLAGS) +*_GCC_ARM_ASLDLINK_FLAGS = DEF(GCC5_ARM_ASLDLINK_FLAGS) +*_GCC_ARM_ASM_FLAGS = DEF(GCC5_ARM_ASM_FLAGS) +*_GCC_ARM_DLINK2_FLAGS = DEF(GCC5_ARM_DLINK2_FLAGS) +*_GCC_ARM_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS) +*_GCC_ARM_PLATFORM_FLAGS = -march=armv7-a -mfloat-abi=soft +*_GCC_ARM_PP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS) +*_GCC_ARM_RC_FLAGS = DEF(GCC_ARM_RC_FLAGS) +*_GCC_ARM_VFRPP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS) +*_GCC_ARM_CC_XIPFLAGS = DEF(GCC5_ARM_CC_XIPFLAGS) + + DEBUG_GCC_ARM_CC_FLAGS = DEF(GCC5_ARM_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable + DEBUG_GCC_ARM_DLINK_FLAGS = DEF(GCC5_ARM_DLINK_FLAGS) -flto -Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm + +RELEASE_GCC_ARM_CC_FLAGS = DEF(GCC5_ARM_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable +RELEASE_GCC_ARM_DLINK_FLAGS = DEF(GCC5_ARM_DLINK_FLAGS) -flto -Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm + + NOOPT_GCC_ARM_CC_FLAGS = DEF(GCC5_ARM_CC_FLAGS) -O0 + NOOPT_GCC_ARM_DLINK_FLAGS = DEF(GCC5_ARM_DLINK_FLAGS) -O0 + +################## +# GCC AARCH64 definitions +################## +*_GCC_AARCH64_CC_PATH = ENV(GCC_AARCH64_PREFIX)gcc +*_GCC_AARCH64_SLINK_PATH = ENV(GCC_AARCH64_PREFIX)gcc-ar +*_GCC_AARCH64_DLINK_PATH = ENV(GCC_AARCH64_PREFIX)gcc +*_GCC_AARCH64_ASLDLINK_PATH = ENV(GCC_AARCH64_PREFIX)gcc +*_GCC_AARCH64_ASM_PATH = ENV(GCC_AARCH64_PREFIX)gcc +*_GCC_AARCH64_PP_PATH = ENV(GCC_AARCH64_PREFIX)gcc +*_GCC_AARCH64_VFRPP_PATH = ENV(GCC_AARCH64_PREFIX)gcc +*_GCC_AARCH64_ASLCC_PATH = ENV(GCC_AARCH64_PREFIX)gcc +*_GCC_AARCH64_ASLPP_PATH = ENV(GCC_AARCH64_PREFIX)gcc +*_GCC_AARCH64_RC_PATH = ENV(GCC_AARCH64_PREFIX)objcopy + +*_GCC_AARCH64_ASLCC_FLAGS = DEF(GCC5_ASLCC_FLAGS) +*_GCC_AARCH64_ASLDLINK_FLAGS = DEF(GCC5_AARCH64_ASLDLINK_FLAGS) +*_GCC_AARCH64_ASM_FLAGS = DEF(GCC5_AARCH64_ASM_FLAGS) +*_GCC_AARCH64_DLINK2_FLAGS = DEF(GCC5_AARCH64_DLINK2_FLAGS) +*_GCC_AARCH64_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS) +*_GCC_AARCH64_PLATFORM_FLAGS = +*_GCC_AARCH64_PP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS) +*_GCC_AARCH64_RC_FLAGS = DEF(GCC_AARCH64_RC_FLAGS) DEF(GCC_AARCH64_RC_BTI_FLAGS) +*_GCC_AARCH64_VFRPP_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS) +*_GCC_AARCH64_CC_XIPFLAGS = DEF(GCC5_AARCH64_CC_XIPFLAGS) + + DEBUG_GCC_AARCH64_CC_FLAGS = DEF(GCC5_AARCH64_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable + DEBUG_GCC_AARCH64_DLINK_FLAGS = DEF(GCC5_AARCH64_DLINK_FLAGS) -flto -Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64 -Wno-lto-type-mismatch + DEBUG_GCC_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 + +RELEASE_GCC_AARCH64_CC_FLAGS = DEF(GCC5_AARCH64_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable +RELEASE_GCC_AARCH64_DLINK_FLAGS = DEF(GCC5_AARCH64_DLINK_FLAGS) -flto -Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64 -Wno-lto-type-mismatch +RELEASE_GCC_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 + + NOOPT_GCC_AARCH64_CC_FLAGS = DEF(GCC5_AARCH64_CC_FLAGS) -O0 + NOOPT_GCC_AARCH64_DLINK_FLAGS = DEF(GCC5_AARCH64_DLINK_FLAGS) -O0 + NOOPT_GCC_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 -O0 + +#################################################################################### +# +# GCC RISC-V This configuration is used to compile under Linux to produce +# PE/COFF binaries using GCC RISC-V tool chain +# +#################################################################################### + +################## +# GCC RISCV64 definitions +################## +*_GCC_RISCV64_OBJCOPY_PATH = ENV(GCC_RISCV64_PREFIX)objcopy +*_GCC_RISCV64_CC_PATH = ENV(GCC_RISCV64_PREFIX)gcc +*_GCC_RISCV64_SLINK_PATH = ENV(GCC_RISCV64_PREFIX)gcc-ar +*_GCC_RISCV64_DLINK_PATH = ENV(GCC_RISCV64_PREFIX)gcc +*_GCC_RISCV64_ASLDLINK_PATH = ENV(GCC_RISCV64_PREFIX)gcc +*_GCC_RISCV64_ASM_PATH = ENV(GCC_RISCV64_PREFIX)gcc +*_GCC_RISCV64_PP_PATH = ENV(GCC_RISCV64_PREFIX)gcc +*_GCC_RISCV64_VFRPP_PATH = ENV(GCC_RISCV64_PREFIX)gcc +*_GCC_RISCV64_ASLCC_PATH = ENV(GCC_RISCV64_PREFIX)gcc +*_GCC_RISCV64_ASLPP_PATH = ENV(GCC_RISCV64_PREFIX)gcc +*_GCC_RISCV64_RC_PATH = ENV(GCC_RISCV64_PREFIX)objcopy + +*_GCC_RISCV64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) +*_GCC_RISCV64_ASLDLINK_FLAGS = DEF(GCC5_RISCV32_RISCV64_ASLDLINK_FLAGS) +*_GCC_RISCV64_ASM_FLAGS = DEF(GCC5_RISCV64_ASM_FLAGS) +*_GCC_RISCV64_CC_FLAGS = DEF(GCC5_RISCV64_CC_FLAGS) -save-temps +*_GCC_RISCV64_DLINK_FLAGS = DEF(GCC5_RISCV64_DLINK_FLAGS) +*_GCC_RISCV64_DLINK2_FLAGS = DEF(GCC5_RISCV64_DLINK2_FLAGS) +*_GCC_RISCV64_RC_FLAGS = DEF(GCC_RISCV64_RC_FLAGS) +*_GCC_RISCV64_OBJCOPY_FLAGS = +*_GCC_RISCV64_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS) +*_GCC_RISCV64_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(GCC5_RISCV_OPENSBI_TYPES) + +################## +# GCC LOONGARCH64 definitions +################## +*_GCC_LOONGARCH64_OBJCOPY_PATH = ENV(GCC_LOONGARCH64_PREFIX)objcopy +*_GCC_LOONGARCH64_CC_PATH = ENV(GCC_LOONGARCH64_PREFIX)gcc +*_GCC_LOONGARCH64_SLINK_PATH = ENV(GCC_LOONGARCH64_PREFIX)gcc-ar +*_GCC_LOONGARCH64_DLINK_PATH = ENV(GCC_LOONGARCH64_PREFIX)gcc +*_GCC_LOONGARCH64_ASLDLINK_PATH = ENV(GCC_LOONGARCH64_PREFIX)gcc +*_GCC_LOONGARCH64_ASM_PATH = ENV(GCC_LOONGARCH64_PREFIX)gcc +*_GCC_LOONGARCH64_PP_PATH = ENV(GCC_LOONGARCH64_PREFIX)gcc +*_GCC_LOONGARCH64_VFRPP_PATH = ENV(GCC_LOONGARCH64_PREFIX)gcc +*_GCC_LOONGARCH64_ASLCC_PATH = ENV(GCC_LOONGARCH64_PREFIX)gcc +*_GCC_LOONGARCH64_ASLPP_PATH = ENV(GCC_LOONGARCH64_PREFIX)gcc +*_GCC_LOONGARCH64_RC_PATH = ENV(GCC_LOONGARCH64_PREFIX)objcopy + +*_GCC_LOONGARCH64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) +*_GCC_LOONGARCH64_ASLDLINK_FLAGS = DEF(GCC5_LOONGARCH64_ASLDLINK_FLAGS) +*_GCC_LOONGARCH64_ASM_FLAGS = DEF(GCC5_LOONGARCH64_ASM_FLAGS) +*_GCC_LOONGARCH64_DLINK_FLAGS = DEF(GCC5_LOONGARCH64_DLINK_FLAGS) +*_GCC_LOONGARCH64_DLINK2_FLAGS = DEF(GCC5_LOONGARCH64_DLINK2_FLAGS) +*_GCC_LOONGARCH64_RC_FLAGS = DEF(GCC_LOONGARCH64_RC_FLAGS) +*_GCC_LOONGARCH64_OBJCOPY_FLAGS = +*_GCC_LOONGARCH64_NASM_FLAGS = -f elf32 +*_GCC_LOONGARCH64_PP_FLAGS = DEF(GCC5_LOONGARCH64_PP_FLAGS) + +DEBUG_GCC_LOONGARCH64_CC_FLAGS = DEF(GCC5_LOONGARCH64_CC_FLAGS) +RELEASE_GCC_LOONGARCH64_CC_FLAGS = DEF(GCC5_LOONGARCH64_CC_FLAGS) -Wno-unused-but-set-variable -Wno-unused-variable + +#################################################################################### +# +# CLANGPDB - This configuration is used to compile under Windows/Linux/Mac to produce +# PE/COFF binaries using LLVM/Clang/LLD with Link Time Optimization enabled +# +#################################################################################### +*_CLANGPDB_*_*_FAMILY = GCC +*_CLANGPDB_*_*_BUILDRULEFAMILY = CLANGPDB +*_CLANGPDB_*_MAKE_PATH = ENV(CLANG_HOST_BIN)make +*_CLANGPDB_*_*_DLL = ENV(CLANGPDB_DLL) +*_CLANGPDB_*_ASL_PATH = DEF(UNIX_IASL_BIN) + +*_CLANGPDB_*_APP_FLAGS = +*_CLANGPDB_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS) +*_CLANGPDB_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS) +*_CLANGPDB_*_ASLDLINK_FLAGS = DEF(MSFT_ASLDLINK_FLAGS) +*_CLANGPDB_*_DEPS_FLAGS = DEF(GCC_DEPS_FLAGS) + +DEFINE CLANGPDB_IA32_PREFIX = ENV(CLANG_BIN) +DEFINE CLANGPDB_X64_PREFIX = ENV(CLANG_BIN) + +DEFINE CLANGPDB_IA32_TARGET = -target i686-unknown-windows-gnu +DEFINE CLANGPDB_X64_TARGET = -target x86_64-unknown-windows-gnu + +DEFINE CLANGPDB_WARNING_OVERRIDES = -Wno-parentheses-equality -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare -Wno-empty-body -Wno-unused-const-variable -Wno-varargs -Wno-unknown-warning-option -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-unaligned-access -Wno-microsoft-enum-forward-reference +DEFINE CLANGPDB_ALL_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) DEF(CLANGPDB_WARNING_OVERRIDES) -fno-stack-protector -funsigned-char -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -Wno-address -Wno-shift-negative-value -Wno-unknown-pragmas -Wno-incompatible-library-redeclaration -Wno-null-dereference -mno-implicit-float -mms-bitfields -mno-stack-arg-probe -nostdlib -nostdlibinc -fseh-exceptions + +########################### +# CLANGPDB IA32 definitions +########################### +*_CLANGPDB_IA32_CC_PATH = DEF(CLANGPDB_IA32_PREFIX)clang +*_CLANGPDB_IA32_SLINK_PATH = DEF(CLANGPDB_IA32_PREFIX)llvm-lib +*_CLANGPDB_IA32_DLINK_PATH = DEF(CLANGPDB_IA32_PREFIX)lld-link +*_CLANGPDB_IA32_ASLDLINK_PATH = DEF(CLANGPDB_IA32_PREFIX)lld-link +*_CLANGPDB_IA32_ASM_PATH = DEF(CLANGPDB_IA32_PREFIX)clang +*_CLANGPDB_IA32_PP_PATH = DEF(CLANGPDB_IA32_PREFIX)clang +*_CLANGPDB_IA32_VFRPP_PATH = DEF(CLANGPDB_IA32_PREFIX)clang +*_CLANGPDB_IA32_ASLCC_PATH = DEF(CLANGPDB_IA32_PREFIX)clang +*_CLANGPDB_IA32_ASLPP_PATH = DEF(CLANGPDB_IA32_PREFIX)clang +*_CLANGPDB_IA32_RC_PATH = DEF(CLANGPDB_IA32_PREFIX)llvm-rc + +*_CLANGPDB_IA32_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto DEF(CLANGPDB_IA32_TARGET) +*_CLANGPDB_IA32_ASM_FLAGS = DEF(GCC_ASM_FLAGS) -m32 -march=i386 DEF(CLANGPDB_IA32_TARGET) +*_CLANGPDB_IA32_OBJCOPY_FLAGS = +*_CLANGPDB_IA32_NASM_FLAGS = -f win32 +*_CLANGPDB_IA32_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANGPDB_IA32_TARGET) +*_CLANGPDB_IA32_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANGPDB_IA32_TARGET) +*_CLANGPDB_IA32_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANGPDB_IA32_TARGET) + +DEBUG_CLANGPDB_IA32_CC_FLAGS = DEF(CLANGPDB_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANGPDB_IA32_TARGET) -gcodeview -malign-double +DEBUG_CLANGPDB_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /ALIGN:32 /FILEALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DEBUG:GHASH /MLLVM:-exception-model=wineh /lldmap +DEBUG_CLANGPDB_IA32_DLINK2_FLAGS = + +RELEASE_CLANGPDB_IA32_CC_FLAGS = DEF(CLANGPDB_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANGPDB_IA32_TARGET) -malign-double +RELEASE_CLANGPDB_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /ALIGN:32 /FILEALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /MERGE:.rdata=.data /MLLVM:-exception-model=wineh /lldmap +RELEASE_CLANGPDB_IA32_DLINK2_FLAGS = + +NOOPT_CLANGPDB_IA32_CC_FLAGS = DEF(CLANGPDB_ALL_CC_FLAGS) -m32 -O0 -march=i586 DEF(CLANGPDB_IA32_TARGET) -gcodeview -malign-double +NOOPT_CLANGPDB_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /ALIGN:32 /FILEALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DEBUG:GHASH /MLLVM:-exception-model=wineh /lldmap +NOOPT_CLANGPDB_IA32_DLINK2_FLAGS = + +########################## +# CLANGWIN X64 definitions +########################## +*_CLANGPDB_X64_CC_PATH = DEF(CLANGPDB_X64_PREFIX)clang +*_CLANGPDB_X64_SLINK_PATH = DEF(CLANGPDB_X64_PREFIX)llvm-lib +*_CLANGPDB_X64_DLINK_PATH = DEF(CLANGPDB_X64_PREFIX)lld-link +*_CLANGPDB_X64_ASLDLINK_PATH = DEF(CLANGPDB_X64_PREFIX)lld-link +*_CLANGPDB_X64_ASM_PATH = DEF(CLANGPDB_X64_PREFIX)clang +*_CLANGPDB_X64_PP_PATH = DEF(CLANGPDB_X64_PREFIX)clang +*_CLANGPDB_X64_VFRPP_PATH = DEF(CLANGPDB_X64_PREFIX)clang +*_CLANGPDB_X64_ASLCC_PATH = DEF(CLANGPDB_X64_PREFIX)clang +*_CLANGPDB_X64_ASLPP_PATH = DEF(CLANGPDB_X64_PREFIX)clang +*_CLANGPDB_X64_RC_PATH = DEF(CLANGPDB_IA32_PREFIX)llvm-rc + +*_CLANGPDB_X64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto DEF(CLANGPDB_X64_TARGET) +*_CLANGPDB_X64_ASM_FLAGS = DEF(GCC_ASM_FLAGS) -m64 DEF(CLANGPDB_X64_TARGET) +*_CLANGPDB_X64_OBJCOPY_FLAGS = +*_CLANGPDB_X64_NASM_FLAGS = -f win64 +*_CLANGPDB_X64_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANGPDB_X64_TARGET) +*_CLANGPDB_X64_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANGPDB_X64_TARGET) +*_CLANGPDB_X64_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANGPDB_X64_TARGET) + +DEBUG_CLANGPDB_X64_CC_FLAGS = DEF(CLANGPDB_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -Oz -flto DEF(CLANGPDB_X64_TARGET) -gcodeview -funwind-tables +DEBUG_CLANGPDB_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /ALIGN:32 /FILEALIGN:32 /Machine:X64 /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DEBUG:GHASH /MLLVM:-exception-model=wineh /lldmap +DEBUG_CLANGPDB_X64_DLINK2_FLAGS = +DEBUG_CLANGPDB_X64_GENFW_FLAGS = --keepexceptiontable + +RELEASE_CLANGPDB_X64_CC_FLAGS = DEF(CLANGPDB_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -Oz -flto DEF(CLANGPDB_X64_TARGET) -fno-unwind-tables +RELEASE_CLANGPDB_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /ALIGN:32 /FILEALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /MERGE:.rdata=.data /MLLVM:-exception-model=wineh /lldmap +RELEASE_CLANGPDB_X64_DLINK2_FLAGS = +RELEASE_CLANGPDB_X64_GENFW_FLAGS = + +NOOPT_CLANGPDB_X64_CC_FLAGS = DEF(CLANGPDB_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -O0 DEF(CLANGPDB_X64_TARGET) -gcodeview -funwind-tables +NOOPT_CLANGPDB_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /ALIGN:32 /FILEALIGN:32 /Machine:X64 /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DEBUG:GHASH /MLLVM:-exception-model=wineh /lldmap +NOOPT_CLANGPDB_X64_DLINK2_FLAGS = +NOOPT_CLANGPDB_X64_GENFW_FLAGS = --keepexceptiontable + +#################################################################################### +# +# CLANGDWARF - This configuration is used to compile under Windows/Linux/Mac to produce +# ELF binaries using LLVM/Clang/LLD with Link Time Optimization enabled +# +#################################################################################### +*_CLANGDWARF_*_*_FAMILY = GCC + +*_CLANGDWARF_*_MAKE_PATH = ENV(CLANG_HOST_BIN)make +*_CLANGDWARF_*_*_DLL = ENV(CLANGDWARF_DLL) +*_CLANGDWARF_*_ASL_PATH = DEF(UNIX_IASL_BIN) + +*_CLANGDWARF_*_APP_FLAGS = +*_CLANGDWARF_*_ASL_FLAGS = DEF(IASL_FLAGS) +*_CLANGDWARF_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) + +DEFINE CLANGDWARF_IA32_PREFIX = ENV(CLANG_BIN) +DEFINE CLANGDWARF_X64_PREFIX = ENV(CLANG_BIN) + +# LLVM/CLANG doesn't support -n link option. So, it can't share the same IA32_X64_DLINK_COMMON flag. +# LLVM/CLANG doesn't support common page size. So, it can't share the same GccBase.lds script. +DEFINE CLANGDWARF_IA32_X64_DLINK_COMMON = -nostdlib -Wl,-q,--gc-sections -z max-page-size=0x40 +DEFINE CLANGDWARF_DLINK2_FLAGS_COMMON = -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/ClangBase.lds +DEFINE CLANGDWARF_IA32_X64_ASLDLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0 DEF(CLANGDWARF_DLINK2_FLAGS_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable +DEFINE CLANGDWARF_IA32_X64_DLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive -Wl,-z,notext +DEFINE CLANGDWARF_IA32_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x220 DEF(CLANGDWARF_DLINK2_FLAGS_COMMON) +DEFINE CLANGDWARF_X64_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 DEF(CLANGDWARF_DLINK2_FLAGS_COMMON) + +DEFINE CLANGDWARF_IA32_TARGET = -target i686-pc-linux-gnu +DEFINE CLANGDWARF_X64_TARGET = -target x86_64-pc-linux-gnu + +DEFINE CLANGDWARF_WARNING_OVERRIDES = -Wno-parentheses-equality -Wno-empty-body -Wno-unused-const-variable -Wno-varargs -Wno-unknown-warning-option -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-unaligned-access -Wno-unneeded-internal-declaration +DEFINE CLANGDWARF_ALL_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) DEF(CLANGDWARF_WARNING_OVERRIDES) -fno-stack-protector -mms-bitfields -Wno-address -Wno-shift-negative-value -Wno-unknown-pragmas -Wno-incompatible-library-redeclaration -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -msoft-float -mno-implicit-float -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -funsigned-char -fno-ms-extensions -Wno-null-dereference + +########################### +# CLANGDWARF IA32 definitions +########################### +*_CLANGDWARF_IA32_CC_PATH = DEF(CLANGDWARF_IA32_PREFIX)clang +*_CLANGDWARF_IA32_SLINK_PATH = DEF(CLANGDWARF_IA32_PREFIX)llvm-ar +*_CLANGDWARF_IA32_DLINK_PATH = DEF(CLANGDWARF_IA32_PREFIX)clang +*_CLANGDWARF_IA32_ASLDLINK_PATH = DEF(CLANGDWARF_IA32_PREFIX)clang +*_CLANGDWARF_IA32_ASM_PATH = DEF(CLANGDWARF_IA32_PREFIX)clang +*_CLANGDWARF_IA32_PP_PATH = DEF(CLANGDWARF_IA32_PREFIX)clang +*_CLANGDWARF_IA32_VFRPP_PATH = DEF(CLANGDWARF_IA32_PREFIX)clang +*_CLANGDWARF_IA32_ASLCC_PATH = DEF(CLANGDWARF_IA32_PREFIX)clang +*_CLANGDWARF_IA32_ASLPP_PATH = DEF(CLANGDWARF_IA32_PREFIX)clang +*_CLANGDWARF_IA32_RC_PATH = DEF(CLANGDWARF_IA32_PREFIX)llvm-objcopy + +*_CLANGDWARF_IA32_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto DEF(CLANGDWARF_IA32_TARGET) +*_CLANGDWARF_IA32_ASLDLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386 -fuse-ld=lld -no-pie +*_CLANGDWARF_IA32_ASM_FLAGS = DEF(GCC5_ASM_FLAGS) -m32 -march=i386 DEF(CLANGDWARF_IA32_TARGET) +*_CLANGDWARF_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS) +*_CLANGDWARF_IA32_OBJCOPY_FLAGS = +*_CLANGDWARF_IA32_NASM_FLAGS = -f elf32 +*_CLANGDWARF_IA32_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANGDWARF_IA32_TARGET) +*_CLANGDWARF_IA32_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_IA32_TARGET) +*_CLANGDWARF_IA32_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_IA32_TARGET) + +DEBUG_CLANGDWARF_IA32_CC_FLAGS = DEF(CLANGDWARF_ALL_CC_FLAGS) -fno-pic -fno-pie -m32 -Oz -flto -march=i586 DEF(CLANGDWARF_IA32_TARGET) -g -malign-double +DEBUG_CLANGDWARF_IA32_DLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_i386 -Wl,--oformat,elf32-i386 +DEBUG_CLANGDWARF_IA32_DLINK2_FLAGS = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O3 -fuse-ld=lld -no-pie + +RELEASE_CLANGDWARF_IA32_CC_FLAGS = DEF(CLANGDWARF_ALL_CC_FLAGS) -fno-pic -fno-pie -m32 -Oz -flto -march=i586 DEF(CLANGDWARF_IA32_TARGET) -malign-double +RELEASE_CLANGDWARF_IA32_DLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_i386 -Wl,--oformat,elf32-i386 +RELEASE_CLANGDWARF_IA32_DLINK2_FLAGS = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O3 -fuse-ld=lld -no-pie + +NOOPT_CLANGDWARF_IA32_CC_FLAGS = DEF(CLANGDWARF_ALL_CC_FLAGS) -fno-pic -fno-pie -m32 -O0 -march=i586 DEF(CLANGDWARF_IA32_TARGET) -g -malign-double +NOOPT_CLANGDWARF_IA32_DLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_i386 -Wl,--oformat,elf32-i386 +NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O0 -fuse-ld=lld -no-pie + +########################## +# CLANGDWARF X64 definitions +########################## +*_CLANGDWARF_X64_CC_PATH = DEF(CLANGDWARF_X64_PREFIX)clang +*_CLANGDWARF_X64_SLINK_PATH = DEF(CLANGDWARF_X64_PREFIX)llvm-ar +*_CLANGDWARF_X64_DLINK_PATH = DEF(CLANGDWARF_X64_PREFIX)clang +*_CLANGDWARF_X64_ASLDLINK_PATH = DEF(CLANGDWARF_X64_PREFIX)clang +*_CLANGDWARF_X64_ASM_PATH = DEF(CLANGDWARF_X64_PREFIX)clang +*_CLANGDWARF_X64_PP_PATH = DEF(CLANGDWARF_X64_PREFIX)clang +*_CLANGDWARF_X64_VFRPP_PATH = DEF(CLANGDWARF_X64_PREFIX)clang +*_CLANGDWARF_X64_ASLCC_PATH = DEF(CLANGDWARF_X64_PREFIX)clang +*_CLANGDWARF_X64_ASLPP_PATH = DEF(CLANGDWARF_X64_PREFIX)clang +*_CLANGDWARF_X64_RC_PATH = DEF(CLANGDWARF_X64_PREFIX)llvm-objcopy + +*_CLANGDWARF_X64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto DEF(CLANGDWARF_X64_TARGET) +*_CLANGDWARF_X64_ASLDLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64 -fuse-ld=lld +*_CLANGDWARF_X64_ASM_FLAGS = DEF(GCC5_ASM_FLAGS) -m64 DEF(CLANGDWARF_X64_TARGET) +*_CLANGDWARF_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS) +*_CLANGDWARF_X64_OBJCOPY_FLAGS = +*_CLANGDWARF_X64_NASM_FLAGS = -f elf64 +*_CLANGDWARF_X64_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANGDWARF_X64_TARGET) +*_CLANGDWARF_X64_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_X64_TARGET) +*_CLANGDWARF_X64_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_X64_TARGET) + +DEBUG_CLANGDWARF_X64_CC_FLAGS = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -fdirect-access-external-data -Oz -flto DEF(CLANGDWARF_X64_TARGET) -g +DEBUG_CLANGDWARF_X64_DLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs +DEBUG_CLANGDWARF_X64_DLINK2_FLAGS = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld + +RELEASE_CLANGDWARF_X64_CC_FLAGS = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -fdirect-access-external-data -Oz -flto DEF(CLANGDWARF_X64_TARGET) +RELEASE_CLANGDWARF_X64_DLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs +RELEASE_CLANGDWARF_X64_DLINK2_FLAGS = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld + +NOOPT_CLANGDWARF_X64_CC_FLAGS = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -fdirect-access-external-data -O0 DEF(CLANGDWARF_X64_TARGET) -g +NOOPT_CLANGDWARF_X64_DLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs +NOOPT_CLANGDWARF_X64_DLINK2_FLAGS = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O0 -fuse-ld=lld + +################## +# CLANGDWARF ARM definitions +################## +DEFINE CLANGDWARF_ARM_TARGET = -target arm-linux-gnueabi +DEFINE CLANGDWARF_ARM_CC_FLAGS = DEF(GCC_ARM_CC_FLAGS) DEF(CLANGDWARF_ARM_TARGET) DEF(CLANGDWARF_WARNING_OVERRIDES) -mno-movt +DEFINE CLANGDWARF_ARM_DLINK_FLAGS = DEF(CLANGDWARF_ARM_TARGET) DEF(GCC_ARM_DLINK_FLAGS) + +*_CLANGDWARF_ARM_PP_FLAGS = DEF(GCC_PP_FLAGS) +*_CLANGDWARF_ARM_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) +*_CLANGDWARF_ARM_APP_FLAGS = +*_CLANGDWARF_ARM_ASL_FLAGS = DEF(IASL_FLAGS) +*_CLANGDWARF_ARM_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) +*_CLANGDWARF_ARM_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS) + +*_CLANGDWARF_ARM_CC_PATH = ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_ARM_ASM_PATH = ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_ARM_PP_PATH = ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_ARM_VFRPP_PATH = ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_ARM_ASLCC_PATH = ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_ARM_ASLPP_PATH = ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_ARM_DLINK_PATH = ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_ARM_ASLDLINK_PATH = ENV(CLANGDWARF_BIN)clang + +*_CLANGDWARF_ARM_SLINK_PATH = ENV(CLANGDWARF_BIN)llvm-ar +*_CLANGDWARF_ARM_RC_PATH = ENV(CLANGDWARF_BIN)llvm-objcopy + +*_CLANGDWARF_ARM_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -fno-lto +*_CLANGDWARF_ARM_ASLDLINK_FLAGS = DEF(CLANGDWARF_ARM_TARGET) DEF(GCC_ARM_ASLDLINK_FLAGS) +*_CLANGDWARF_ARM_ASM_FLAGS = DEF(GCC_ASM_FLAGS) DEF(CLANGDWARF_ARM_TARGET) $(PLATFORM_FLAGS) -Qunused-arguments +*_CLANGDWARF_ARM_DLINK2_FLAGS = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x220 +*_CLANGDWARF_ARM_PLATFORM_FLAGS = -march=armv7-a +*_CLANGDWARF_ARM_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANGDWARF_ARM_TARGET) $(PLATFORM_FLAGS) +*_CLANGDWARF_ARM_RC_FLAGS = DEF(GCC_ARM_RC_FLAGS) +*_CLANGDWARF_ARM_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_ARM_TARGET) $(PLATFORM_FLAGS) +*_CLANGDWARF_ARM_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_ARM_TARGET) +*_CLANGDWARF_ARM_CC_XIPFLAGS = DEF(GCC_ARM_CC_XIPFLAGS) + + DEBUG_CLANGDWARF_ARM_CC_FLAGS = DEF(CLANGDWARF_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O1 + DEBUG_CLANGDWARF_ARM_DLINK_FLAGS = DEF(CLANGDWARF_ARM_DLINK_FLAGS) -flto -Wl,-O1 -fuse-ld=lld -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm -Wl,--no-pie,--no-relax + NOOPT_CLANGDWARF_ARM_CC_FLAGS = DEF(CLANGDWARF_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -O0 + NOOPT_CLANGDWARF_ARM_DLINK_FLAGS = DEF(CLANGDWARF_ARM_DLINK_FLAGS) -fuse-ld=lld -Wl,--no-pie,--no-relax +RELEASE_CLANGDWARF_ARM_CC_FLAGS = DEF(CLANGDWARF_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O3 +RELEASE_CLANGDWARF_ARM_DLINK_FLAGS = DEF(CLANGDWARF_ARM_DLINK_FLAGS) -flto -Wl,-O3 -fuse-ld=lld -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm -Wl,--no-pie,--no-relax + +################## +# CLANGDWARF AARCH64 definitions +################## +DEFINE CLANGDWARF_AARCH64_TARGET = -target aarch64-linux-gnu +DEFINE CLANGDWARF_AARCH64_CC_FLAGS = DEF(GCC_AARCH64_CC_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET) -mcmodel=small DEF(CLANGDWARF_WARNING_OVERRIDES) +DEFINE CLANGDWARF_AARCH64_DLINK_FLAGS = DEF(CLANGDWARF_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000 + +*_CLANGDWARF_AARCH64_PP_FLAGS = DEF(GCC_PP_FLAGS) +*_CLANGDWARF_AARCH64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) +*_CLANGDWARF_AARCH64_APP_FLAGS = +*_CLANGDWARF_AARCH64_ASL_FLAGS = DEF(IASL_FLAGS) +*_CLANGDWARF_AARCH64_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) +*_CLANGDWARF_AARCH64_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS) + +*_CLANGDWARF_AARCH64_CC_PATH = ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_AARCH64_ASM_PATH = ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_AARCH64_PP_PATH = ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_AARCH64_VFRPP_PATH = ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_AARCH64_ASLCC_PATH = ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_AARCH64_ASLPP_PATH = ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_AARCH64_DLINK_PATH = ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_AARCH64_ASLDLINK_PATH = ENV(CLANGDWARF_BIN)clang + +*_CLANGDWARF_AARCH64_SLINK_PATH = ENV(CLANGDWARF_BIN)llvm-ar +*_CLANGDWARF_AARCH64_RC_PATH = ENV(CLANGDWARF_BIN)llvm-objcopy + +*_CLANGDWARF_AARCH64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -fno-lto +*_CLANGDWARF_AARCH64_ASLDLINK_FLAGS = DEF(CLANGDWARF_AARCH64_TARGET) DEF(GCC_AARCH64_ASLDLINK_FLAGS) +*_CLANGDWARF_AARCH64_ASM_FLAGS = DEF(GCC_ASM_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET) $(PLATFORM_FLAGS) -Qunused-arguments +*_CLANGDWARF_AARCH64_DLINK_FLAGS = DEF(CLANGDWARF_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000 +*_CLANGDWARF_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 +*_CLANGDWARF_AARCH64_DLINK2_FLAGS = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 +*_CLANGDWARF_AARCH64_PLATFORM_FLAGS = +*_CLANGDWARF_AARCH64_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET) $(PLATFORM_FLAGS) +*_CLANGDWARF_AARCH64_RC_FLAGS = DEF(GCC_AARCH64_RC_FLAGS) DEF(GCC_AARCH64_RC_BTI_FLAGS) +*_CLANGDWARF_AARCH64_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET) $(PLATFORM_FLAGS) +*_CLANGDWARF_AARCH64_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET) +*_CLANGDWARF_AARCH64_CC_XIPFLAGS = -mstrict-align + + DEBUG_CLANGDWARF_AARCH64_CC_FLAGS = DEF(CLANGDWARF_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O1 + DEBUG_CLANGDWARF_AARCH64_DLINK_FLAGS = DEF(CLANGDWARF_AARCH64_DLINK_FLAGS) -flto -Wl,-O1 -fuse-ld=lld -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64 -Wl,--no-pie,--no-relax + NOOPT_CLANGDWARF_AARCH64_CC_FLAGS = DEF(CLANGDWARF_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -O0 + NOOPT_CLANGDWARF_AARCH64_DLINK_FLAGS = DEF(CLANGDWARF_AARCH64_DLINK_FLAGS) -fuse-ld=lld -Wl,--no-pie,--no-relax +RELEASE_CLANGDWARF_AARCH64_CC_FLAGS = DEF(CLANGDWARF_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O3 +RELEASE_CLANGDWARF_AARCH64_DLINK_FLAGS = DEF(CLANGDWARF_AARCH64_DLINK_FLAGS) -flto -Wl,-O3 -fuse-ld=lld -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64 -Wl,--no-pie,--no-relax + +################## +# CLANGDWARF RISCV64 definitions +################## +DEFINE CLANGDWARF_RISCV64_TARGET = -target riscv64-linux-gnu +DEFINE CLANGDWARF_RISCV64_CC_COMMON = DEF(GCC5_RISCV_ALL_CC_FLAGS) DEF(GCC5_RISCV_ALL_CC_FLAGS_WARNING_DISABLE) DEF(GCC5_RISCV_OPENSBI_TYPES) -march=DEF(GCC5_RISCV64_ARCH) -fno-builtin -fno-builtin-memcpy -fno-stack-protector -Wno-address -fno-asynchronous-unwind-tables -fno-unwind-tables -Wno-unused-but-set-variable -fpack-struct=8 -mcmodel=medany -mabi=lp64 -mno-relax +DEFINE CLANGDWARF_RISCV64_CC_FLAGS = DEF(CLANGDWARF_RISCV64_CC_COMMON) DEF(CLANGDWARF_RISCV64_TARGET) DEF(CLANGDWARF_WARNING_OVERRIDES) + +# This is similar to GCC flags but without -n +DEFINE CLANGDWARF_RISCV64_ALL_DLINK_COMMON = -nostdlib -Wl,-q,--gc-sections -z common-page-size=0x40 +DEFINE CLANGDWARF_RISCV64_ALL_DLINK_FLAGS = DEF(CLANGDWARF_RISCV64_ALL_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map +DEFINE CLANGDWARF_RISCV64_DLINK_FLAGS = DEF(CLANGDWARF_RISCV64_TARGET) DEF(CLANGDWARF_RISCV64_ALL_DLINK_FLAGS) -Wl,-melf64lriscv,--oformat=elf64-littleriscv,--no-relax + +*_CLANGDWARF_RISCV64_PP_FLAGS = DEF(GCC_PP_FLAGS) +*_CLANGDWARF_RISCV64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) +*_CLANGDWARF_RISCV64_APP_FLAGS = +*_CLANGDWARF_RISCV64_ASL_FLAGS = DEF(IASL_FLAGS) +*_CLANGDWARF_RISCV64_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) +*_CLANGDWARF_RISCV64_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS) +*_CLANGDWARF_RISCV64_DEPS_FLAGS = DEF(GCC_DEPS_FLAGS) + +*_CLANGDWARF_RISCV64_CC_PATH = ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_RISCV64_ASM_PATH = ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_RISCV64_PP_PATH = ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_RISCV64_VFRPP_PATH = ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_RISCV64_ASLCC_PATH = ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_RISCV64_ASLPP_PATH = ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_RISCV64_DLINK_PATH = ENV(CLANGDWARF_BIN)clang +*_CLANGDWARF_RISCV64_ASLDLINK_PATH = ENV(CLANGDWARF_BIN)clang + +*_CLANGDWARF_RISCV64_SLINK_PATH = ENV(CLANGDWARF_BIN)llvm-ar +*_CLANGDWARF_RISCV64_RC_PATH = ENV(CLANGDWARF_BIN)llvm-objcopy + +*_CLANGDWARF_RISCV64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -fno-lto +*_CLANGDWARF_RISCV64_ASLDLINK_FLAGS = DEF(CLANGDWARF_RISCV64_TARGET) DEF(GCC5_RISCV32_RISCV64_ASLDLINK_FLAGS) +*_CLANGDWARF_RISCV64_ASM_FLAGS = DEF(GCC_ASM_FLAGS) DEF(CLANGDWARF_RISCV64_TARGET) $(PLATFORM_FLAGS) -Qunused-arguments -mabi=lp64 -mno-relax +*_CLANGDWARF_RISCV64_DLINK_FLAGS = DEF(CLANGDWARF_RISCV64_TARGET) DEF(GCC5_RISCV64_DLINK_FLAGS) +*_CLANGDWARF_RISCV64_DLINK_XIPFLAGS = -z common-page-size=0x20 +*_CLANGDWARF_RISCV64_DLINK2_FLAGS = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x240 +*_CLANGDWARF_RISCV64_PLATFORM_FLAGS = +*_CLANGDWARF_RISCV64_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANGDWARF_RISCV64_TARGET) $(PLATFORM_FLAGS) +*_CLANGDWARF_RISCV64_RC_FLAGS = DEF(GCC_RISCV64_RC_FLAGS) +*_CLANGDWARF_RISCV64_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_RISCV64_TARGET) $(PLATFORM_FLAGS) +*_CLANGDWARF_RISCV64_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_RISCV64_TARGET) +*_CLANGDWARF_RISCV64_CC_XIPFLAGS = DEF(GCC_RISCV64_CC_XIPFLAGS) + + DEBUG_CLANGDWARF_RISCV64_CC_FLAGS = DEF(CLANGDWARF_RISCV64_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O1 + DEBUG_CLANGDWARF_RISCV64_DLINK_FLAGS = DEF(CLANGDWARF_RISCV64_DLINK_FLAGS) -flto -Wl,-O1 -fuse-ld=lld -Wl,--no-pie,--no-relax + NOOPT_CLANGDWARF_RISCV64_CC_FLAGS = DEF(CLANGDWARF_RISCV64_CC_FLAGS) $(PLATFORM_FLAGS) -O0 + NOOPT_CLANGDWARF_RISCV64_DLINK_FLAGS = DEF(CLANGDWARF_RISCV64_DLINK_FLAGS) -fuse-ld=lld -Wl,--no-pie,--no-relax +RELEASE_CLANGDWARF_RISCV64_CC_FLAGS = DEF(CLANGDWARF_RISCV64_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O3 +RELEASE_CLANGDWARF_RISCV64_DLINK_FLAGS = DEF(CLANGDWARF_RISCV64_DLINK_FLAGS) -flto -Wl,-O3 -fuse-ld=lld -Wl,--no-pie,--no-relax + +# +# +# XCODE5 support +# + +*_XCODE5_*_*_FAMILY = GCC +*_XCODE5_*_*_BUILDRULEFAMILY = XCODE + +# +# use xcode-select to change Xcode version of command line tools +# +*_XCODE5_*_MAKE_PATH = make +*_XCODE5_*_CC_PATH = clang +*_XCODE5_*_SLINK_PATH = libtool +*_XCODE5_*_DLINK_PATH = ld +*_XCODE5_*_ASM_PATH = as +*_XCODE5_*_PP_PATH = clang +*_XCODE5_*_VFRPP_PATH = clang +*_XCODE5_*_ASL_PATH = iasl +*_XCODE5_*_ASLCC_PATH = clang +*_XCODE5_*_ASLPP_PATH = clang +*_XCODE5_*_ASLDLINK_PATH = ld +*_XCODE5_*_DSYMUTIL_PATH = /usr/bin/dsymutil +*_XCODE5_*_MTOC_PATH = /usr/local/bin/mtoc +*_XCODE5_*_DEPS_FLAGS = DEF(GCC_DEPS_FLAGS) + +################## +# ASL definitions +################## +*_XCODE5_*_ASLCC_FLAGS = -x c -save-temps -g -O0 -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-missing-braces -c -include AutoGen.h +*_XCODE5_*_ASLDLINK_FLAGS = -e _ReferenceAcpiTable -preload -segalign 0x20 -pie -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map +*_XCODE5_*_ASLPP_FLAGS = -x c -E -include AutoGen.h +*_XCODE5_*_ASL_FLAGS = +*_XCODE5_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) + +################## +# MTOC definitions +################## + + DEBUG_XCODE5_*_MTOC_FLAGS = -align 0x20 -d $(DEBUG_DIR)/$(MODULE_NAME).dll + NOOPT_XCODE5_*_MTOC_FLAGS = -align 0x20 -d $(DEBUG_DIR)/$(MODULE_NAME).dll +RELEASE_XCODE5_*_MTOC_FLAGS = -align 0x20 + +#################### +# IA-32 definitions +#################### + DEBUG_XCODE5_IA32_DLINK_FLAGS = -arch i386 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map + NOOPT_XCODE5_IA32_DLINK_FLAGS = -arch i386 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map +RELEASE_XCODE5_IA32_DLINK_FLAGS = -arch i386 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map + +*_XCODE5_IA32_SLINK_FLAGS = -static -o + DEBUG_XCODE5_IA32_ASM_FLAGS = -arch i386 -g + NOOPT_XCODE5_IA32_ASM_FLAGS = -arch i386 -g +RELEASE_XCODE5_IA32_ASM_FLAGS = -arch i386 + *_XCODE5_IA32_NASM_FLAGS = -f macho32 + + + DEBUG_XCODE5_IA32_CC_FLAGS = -arch i386 -c -g -Os -Wall -Werror -include AutoGen.h -funsigned-char -fno-stack-protector -fno-builtin -fshort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit-float -mms-bitfields -msoft-float -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang $(PLATFORM_FLAGS) +RELEASE_XCODE5_IA32_CC_FLAGS = -arch i386 -c -Os -Wall -Werror -include AutoGen.h -funsigned-char -fno-stack-protector -fno-builtin -fshort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit-float -mms-bitfields -msoft-float -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -Wno-unused-const-variable -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang $(PLATFORM_FLAGS) + NOOPT_XCODE5_IA32_CC_FLAGS = -arch i386 -c -g -O0 -Wall -Werror -include AutoGen.h -funsigned-char -fno-stack-protector -fno-builtin -fshort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit-float -mms-bitfields -msoft-float -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang $(PLATFORM_FLAGS) + +################## +# X64 definitions +################## + DEBUG_XCODE5_X64_DLINK_FLAGS = -arch x86_64 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map + NOOPT_XCODE5_X64_DLINK_FLAGS = -arch x86_64 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map +RELEASE_XCODE5_X64_DLINK_FLAGS = -arch x86_64 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map + +*_XCODE5_X64_SLINK_FLAGS = -static -o + DEBUG_XCODE5_X64_ASM_FLAGS = -arch x86_64 -g + NOOPT_XCODE5_X64_ASM_FLAGS = -arch x86_64 -g +RELEASE_XCODE5_X64_ASM_FLAGS = -arch x86_64 + *_XCODE5_X64_NASM_FLAGS = -f macho64 +*_XCODE5_*_PP_FLAGS = -E -x assembler-with-cpp -include AutoGen.h +*_XCODE5_*_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE -include $(MODULE_NAME)StrDefs.h + + DEBUG_XCODE5_X64_CC_FLAGS = -target x86_64-pc-win32-macho -c -g -gdwarf -Os -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mno-implicit-float -mms-bitfields -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -D NO_MSABI_VA_FUNCS $(PLATFORM_FLAGS) + NOOPT_XCODE5_X64_CC_FLAGS = -target x86_64-pc-win32-macho -c -g -gdwarf -O0 -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mno-implicit-float -mms-bitfields -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -D NO_MSABI_VA_FUNCS $(PLATFORM_FLAGS) +RELEASE_XCODE5_X64_CC_FLAGS = -target x86_64-pc-win32-macho -c -Os -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mno-implicit-float -mms-bitfields -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -Wno-unused-const-variable -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -D NO_MSABI_VA_FUNCS $(PLATFORM_FLAGS) + +################# +# ASM 16 linker definitions +################# +*_*_*_ASMLINK_PATH = DEF(WINDDK_BIN16)\link16.exe +*_*_*_ASMLINK_FLAGS = /nologo /tiny + +################## +# VfrCompiler definitions +################## +*_*_*_VFR_PATH = VfrCompile +*_*_*_VFR_FLAGS = -l -n + +################## +# OptionRom tool definitions +################## +*_*_*_OPTROM_PATH = EfiRom +*_*_*_OPTROM_FLAGS = -e + +################## +# GenFw tool definitions +################## +*_*_*_GENFW_PATH = GenFw +*_*_*_GENFW_FLAGS = + +################## +# Asl Compiler definitions +################## +*_*_*_ASLCC_FLAGS = /nologo /c /FIAutoGen.h /TC /Dmain=ReferenceAcpiTable +*_*_*_ASLDLINK_FLAGS = /NODEFAULTLIB /ENTRY:ReferenceAcpiTable /SUBSYSTEM:CONSOLE +*_*_*_ASLPP_FLAGS = /nologo /EP /C +*_*_*_ASL_FLAGS = + +################## +# GenCrc32 tool definitions +################## +*_*_*_CRC32_PATH = GenCrc32 +*_*_*_CRC32_GUID = FC1BCDB0-7D31-49AA-936A-A4600D9DD083 + +################## +# Rsa2048Sha256Sign tool definitions +# +# Notes: This tool definition uses a test signing key for development purposes only. +# The tool Rsa2048Sha256GenerateKeys can be used to generate a new private/public key +# and the gEfiSecurityPkgTokenSpaceGuid.PcdRsa2048Sha256PublicKeyBuffer PCD value. +# A custom tool/script can be implemented using the new private/public key with +# the Rsa2048Sha256Sign tool and this tool definition can be updated to use a +# custom tool/script. +# +# Generate new private/public key and gEfiSecurityPkgTokenSpaceGuid.PcdRsa2048Sha256PublicKeyBuffer PCD value +# +# Rsa2048Sha256GenerateKeys.py -o MyKey.pem --public-key-hash-c MyKey.pcd +# +# Custom script example (MyRsa2048Sha256Sign.cmd): +# +# Rsa2048Sha256Sign --private-key MyKey.pem %1 %2 %3 %4 %5 %6 %7 %8 %9 +# +# WARNING: Vendors that uses private keys are responsible for proper management and protection +# of private keys. Vendors may choose to use infrastructure such as signing servers +# or signing portals to support the management and protection of private keys. +# +################## +*_*_*_RSA2048SHA256SIGN_PATH = Rsa2048Sha256Sign +*_*_*_RSA2048SHA256SIGN_GUID = A7717414-C616-4977-9420-844712A735BF + +################## +# BrotliCompress tool definitions +################## +*_*_*_BROTLI_PATH = BrotliCompress +*_*_*_BROTLI_GUID = 3D532050-5CDA-4FD0-879E-0F7F630D5AFB + +################## +# LzmaCompress tool definitions +################## +*_*_*_LZMA_PATH = LzmaCompress +*_*_*_LZMA_GUID = EE4E5898-3914-4259-9D6E-DC7BD79403CF + +################## +# LzmaF86Compress tool definitions with converter for x86 code. +# It can improve the compression ratio if the input file is IA32 or X64 PE image. +################## +*_*_*_LZMAF86_PATH = LzmaF86Compress +*_*_*_LZMAF86_GUID = D42AE6BD-1352-4bfb-909A-CA72A6EAE889 + +################## +# TianoCompress tool definitions +################## +*_*_*_TIANO_PATH = TianoCompress +*_*_*_TIANO_GUID = A31280AD-481E-41B6-95E8-127F4C984779 + +################## +# BPDG tool definitions +################## +*_*_*_VPDTOOL_PATH = BPDG +*_*_*_VPDTOOL_GUID = 8C3D856A-9BE6-468E-850A-24F7A8D38E08 + +################## +# Pkcs7Sign tool definitions +################## +*_*_*_PKCS7SIGN_PATH = Pkcs7Sign +*_*_*_PKCS7SIGN_GUID = 4AAFD29D-68DF-49EE-8AA9-347D375665A7 + +################## +# NASM tool definitions +################## +*_*_*_NASM_PATH = ENV(NASM_PREFIX)nasm +# NASMB uses NASM produce a .bin from a .nasmb NASM source file +*_*_*_NASMB_FLAGS = -f bin + +################# +# Build rule order +################# +*_*_*_*_BUILDRULEORDER = nasm asm Asm ASM S s nasmb asm16 |
