diff options
Diffstat (limited to 'src/VBox/Devices/EFI/Firmware/BaseTools/Conf')
8 files changed, 7158 insertions, 0 deletions
diff --git a/src/VBox/Devices/EFI/Firmware/BaseTools/Conf/Empty_Package_Information_Data_File.ini b/src/VBox/Devices/EFI/Firmware/BaseTools/Conf/Empty_Package_Information_Data_File.ini new file mode 100644 index 00000000..53446341 --- /dev/null +++ b/src/VBox/Devices/EFI/Firmware/BaseTools/Conf/Empty_Package_Information_Data_File.ini @@ -0,0 +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 diff --git a/src/VBox/Devices/EFI/Firmware/BaseTools/Conf/ReadMe.txt b/src/VBox/Devices/EFI/Firmware/BaseTools/Conf/ReadMe.txt new file mode 100644 index 00000000..ab7e4a46 --- /dev/null +++ b/src/VBox/Devices/EFI/Firmware/BaseTools/Conf/ReadMe.txt @@ -0,0 +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. diff --git a/src/VBox/Devices/EFI/Firmware/BaseTools/Conf/XMLSchema/DistributionPackage.xsd b/src/VBox/Devices/EFI/Firmware/BaseTools/Conf/XMLSchema/DistributionPackage.xsd new file mode 100644 index 00000000..643b3fac --- /dev/null +++ b/src/VBox/Devices/EFI/Firmware/BaseTools/Conf/XMLSchema/DistributionPackage.xsd @@ -0,0 +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> diff --git a/src/VBox/Devices/EFI/Firmware/BaseTools/Conf/build_rule.template b/src/VBox/Devices/EFI/Firmware/BaseTools/Conf/build_rule.template new file mode 100644 index 00000000..ceaaf739 --- /dev/null +++ b/src/VBox/Devices/EFI/Firmware/BaseTools/Conf/build_rule.template @@ -0,0 +1,674 @@ +# +# 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, Command.RVCT> + # For RVCTCYGWIN CC_FLAGS must be first to work around pathing issues + "$(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, Command.RVCT> + "$(CC)" $(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, InputFile.RVCT> + ?.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, Command.RVCT> + 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 + # For RVCTCYGWIN ASM_FLAGS must be first to work around pathing issues + "$(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, InputFile.RVCT> + ?.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, Command.RVCT> + 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 + # For RVCTCYGWIN ASM_FLAGS must be first to work around pathing issues + "$(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.RVCT> + "$(SLINK)" $(SLINK_FLAGS) ${dst} --via $(OBJECT_FILES_LIST) + + <Command.RVCTCYGWIN> + # $(OBJECT_FILES_LIST) has wrong paths for cygwin + "$(SLINK)" $(SLINK_FLAGS) ${dst} $(OBJECT_FILES) + + <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.RVCT> + "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) --via $(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS) + + <Command.RVCTCYGWIN> + #$(STATIC_LIBRARY_FILES_LIST) has wrong paths for cygwin + "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) $(STATIC_LIBRARY_FILES) $(DLINK2_FLAGS) + + <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.RVCT> + "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) --via $(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS) + + <Command.RVCTCYGWIN> + #$(STATIC_LIBRARY_FILES_LIST) has the wrong paths for cygwin + "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) $(STATIC_LIBRARY_FILES) $(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 + + <Command.MSFT, Command.INTEL, Command.RVCT, 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) --strip-unneeded -R .eh_frame ${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 $(CC_FLAGS) $(ASLCC_FLAGS) + "$(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, OutputFile.RVCT> + $(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, Command.RVCT> + GenFw -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiibinpackage $(HII_BINARY_PACKAGES) diff --git a/src/VBox/Devices/EFI/Firmware/BaseTools/Conf/diff.order b/src/VBox/Devices/EFI/Firmware/BaseTools/Conf/diff.order new file mode 100644 index 00000000..f1534f6c --- /dev/null +++ b/src/VBox/Devices/EFI/Firmware/BaseTools/Conf/diff.order @@ -0,0 +1,13 @@ +# +# Copyright (c) 2019, Linaro Ltd. All rights reserved. +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +*.dec +*.dsc.inc +*.dsc +*.fdf +*.inf +*.h +*.vfr +*.c diff --git a/src/VBox/Devices/EFI/Firmware/BaseTools/Conf/gitattributes b/src/VBox/Devices/EFI/Firmware/BaseTools/Conf/gitattributes new file mode 100644 index 00000000..319e8906 --- /dev/null +++ b/src/VBox/Devices/EFI/Firmware/BaseTools/Conf/gitattributes @@ -0,0 +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
diff --git a/src/VBox/Devices/EFI/Firmware/BaseTools/Conf/target.template b/src/VBox/Devices/EFI/Firmware/BaseTools/Conf/target.template new file mode 100644 index 00000000..14465901 --- /dev/null +++ b/src/VBox/Devices/EFI/Firmware/BaseTools/Conf/target.template @@ -0,0 +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 = VS2015x86 + +# 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/src/VBox/Devices/EFI/Firmware/BaseTools/Conf/tools_def.template b/src/VBox/Devices/EFI/Firmware/BaseTools/Conf/tools_def.template new file mode 100644 index 00000000..0cb4a90d --- /dev/null +++ b/src/VBox/Devices/EFI/Firmware/BaseTools/Conf/tools_def.template @@ -0,0 +1,3160 @@ +# +# Copyright (c) 2006 - 2021, 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) 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 +# +#!VERSION=2.00 + +IDENTIFIER = Default TOOL_CHAIN_CONF + +# common path macros +DEFINE VS2008_BIN = ENV(VS2008_PREFIX)Vc\bin +DEFINE VS2008_DLL = ENV(VS2008_PREFIX)Common7\IDE;DEF(VS2008_BIN) +DEFINE VS2008_BINX64 = DEF(VS2008_BIN)\x86_amd64 +DEFINE VS2008_BIN64 = DEF(VS2008_BIN)\x86_ia64 + +DEFINE VS2008x86_BIN = ENV(VS2008_PREFIX)Vc\bin +DEFINE VS2008x86_DLL = ENV(VS2008_PREFIX)Common7\IDE;DEF(VS2008x86_BIN) +DEFINE VS2008x86_BINX64 = DEF(VS2008x86_BIN)\x86_amd64 +DEFINE VS2008x86_BIN64 = DEF(VS2008x86_BIN)\x86_ia64 + +DEFINE VS2010_BIN = ENV(VS2010_PREFIX)Vc\bin +DEFINE VS2010_DLL = ENV(VS2010_PREFIX)Common7\IDE;DEF(VS2010_BIN) +DEFINE VS2010_BINX64 = DEF(VS2010_BIN)\x86_amd64 +DEFINE VS2010_BIN64 = DEF(VS2010_BIN)\x86_ia64 + +DEFINE VS2010x86_BIN = ENV(VS2010_PREFIX)Vc\bin +DEFINE VS2010x86_DLL = ENV(VS2010_PREFIX)Common7\IDE;DEF(VS2010x86_BIN) +DEFINE VS2010x86_BINX64 = DEF(VS2010x86_BIN)\x86_amd64 +DEFINE VS2010x86_BIN64 = DEF(VS2010x86_BIN)\x86_ia64 + +DEFINE VS2012_BIN = ENV(VS2012_PREFIX)Vc\bin +DEFINE VS2012_DLL = ENV(VS2012_PREFIX)Common7\IDE;DEF(VS2012_BIN) +DEFINE VS2012_BINX64 = DEF(VS2012_BIN)\x86_amd64 + +DEFINE VS2012x86_BIN = ENV(VS2012_PREFIX)Vc\bin +DEFINE VS2012x86_DLL = ENV(VS2012_PREFIX)Common7\IDE;DEF(VS2012x86_BIN) +DEFINE VS2012x86_BINX64 = DEF(VS2012x86_BIN)\x86_amd64 + +DEFINE VS2013_BIN = ENV(VS2013_PREFIX)Vc\bin +DEFINE VS2013_DLL = ENV(VS2013_PREFIX)Common7\IDE;DEF(VS2013_BIN) +DEFINE VS2013_BINX64 = DEF(VS2013_BIN)\x86_amd64 + +DEFINE VS2013x86_BIN = ENV(VS2013_PREFIX)Vc\bin +DEFINE VS2013x86_DLL = ENV(VS2013_PREFIX)Common7\IDE;DEF(VS2013x86_BIN) +DEFINE VS2013x86_BINX64 = DEF(VS2013x86_BIN)\x86_amd64 + +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 2010 +DEFINE WINSDK7_BIN = ENV(WINSDK7_PREFIX) +DEFINE WINSDK7x86_BIN = ENV(WINSDK7x86_PREFIX) + +# Microsoft Visual Studio 2012 Update 1 (required for rc.exe that was not included in the initial release) +DEFINE WINSDK71_BIN = ENV(WINSDK71_PREFIX) +DEFINE WINSDK71x86_BIN = ENV(WINSDK71x86_PREFIX) + +# Microsoft Visual Studio 2013 Professional Edition +DEFINE WINSDK8_BIN = ENV(WINSDK8_PREFIX)x86\ +DEFINE WINSDK8x86_BIN = ENV(WINSDK8x86_PREFIX)x64 + +# 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. + +# Some MS_VS_BIN options: DEF(VS2008_BIN), DEF(VS2008x86_BIN) +DEFINE MS_VS_BIN = DEF(VS2008_BIN) +# Some MS_VS_DLL options: DEF(VS2008_DLL), DEF(VS2008x86_DLL) +DEFINE MS_VS_DLL = DEF(VS2008_DLL) + +DEFINE WINDDK_BIN16 = ENV(WINDDK3790_PREFIX)bin16 +DEFINE WINDDK_BINX64 = ENV(WINDDK3790_PREFIX)win64\x86\amd64 + +DEFINE EBC_BIN = C:\Program Files\Intel\EBC\Bin +DEFINE EBC_BINx86 = C:\Program Files (x86)\Intel\EBC\Bin + + +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 GCC5_IA32_PREFIX = ENV(GCC5_BIN) +DEFINE GCC5_X64_PREFIX = ENV(GCC5_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 IPHONE_TOOLS = /Developer/Platforms/iPhoneOS.platform/Developer + +DEFINE SOURCERY_CYGWIN_TOOLS = /cygdrive/c/Program Files/CodeSourcery/Sourcery G++ Lite/bin + +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 +# ===================== +# VS2008 -win32- Requires: +# Microsoft Visual Studio 2008 Team Suite Edition +# Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830 +# Optional: +# Required to build EBC drivers: +# Intel(r) Compiler for Efi Byte Code (Intel(r) EBC Compiler) +# Required to build platforms or ACPI tables: +# Intel(r) ACPI Compiler (iasl.exe) from +# https://acpica.org/downloads +# VS2010 -win32- Requires: +# Microsoft Visual Studio 2010 Premium Edition +# Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830 +# Optional: +# Required to build EBC drivers: +# Intel(r) Compiler for Efi Byte Code (Intel(r) EBC Compiler) +# Required to build platforms or ACPI tables: +# Intel(r) ACPI Compiler (iasl.exe) from +# https://acpica.org/downloads +# VS2012 -win32- Requires: +# Microsoft Visual Studio 2012 Professional Edition +# Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830 +# Optional: +# Required to build EBC drivers: +# Intel(r) Compiler for Efi Byte Code (Intel(r) EBC Compiler) +# Required to build platforms or ACPI tables: +# Intel(r) ACPI Compiler (iasl.exe) from +# https://acpica.org/downloads +# VS2013 -win32- Requires: +# Microsoft Visual Studio 2013 Professional Edition +# Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830 +# Optional: +# Required to build EBC drivers: +# Intel(r) Compiler for Efi Byte Code (Intel(r) EBC Compiler) +# Required to build platforms or ACPI tables: +# Intel(r) ACPI Compiler (iasl.exe) from +# https://acpica.org/downloads +# VS2015 -win32- Requires: +# Microsoft Visual Studio 2015 Professional Edition +# Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830 +# Optional: +# Required to build EBC drivers: +# Intel(r) Compiler for Efi Byte Code (Intel(r) EBC Compiler) +# 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 EBC drivers: +# Intel(r) Compiler for Efi Byte Code (Intel(r) EBC Compiler) +# 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 EBC drivers: +# Intel(r) Compiler for Efi Byte Code (Intel(r) EBC Compiler) +# 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. +# 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 or riscv64-linux-gnu +# Optional: +# Required to build platforms or ACPI tables: +# Intel(r) ACPI Compiler from +# https://acpica.org/downloads +# +# CLANG35 -Linux,Windows- Requires: +# Clang v3.5 or later, and GNU binutils targeting aarch64-linux-gnu or arm-linux-gnueabi +# Optional: +# Required to build platforms or ACPI tables: +# Intel(r) ACPI Compiler from +# https://acpica.org/downloads +# CLANG38 -Linux- Requires: +# Clang v3.8, LLVMgold plugin and GNU binutils 2.26 targeting x86_64-linux-gnu, aarch64-linux-gnu or arm-linux-gnueabi +# Clang v3.9 or later, LLVMgold plugin and GNU binutils 2.28 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 +# 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/ +# Required to build platforms or ACPI tables: +# Intel(r) ACPI Compiler from +# https://acpica.org/downloads +# VS2008x86 -win64- Requires: +# Microsoft Visual Studio 2008 (x86) +# Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830 +# Optional: +# Required to build platforms or ACPI tables: +# Intel(r) ACPI Compiler (iasl.exe) from +# https://acpica.org/downloads +# VS2010x86 -win64- Requires: +# Microsoft Visual Studio 2010 (x86) Premium Edition +# Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830 +# Optional: +# Required to build platforms or ACPI tables: +# Intel(r) ACPI Compiler (iasl.exe) from +# https://acpica.org/downloads +# VS2012x86 -win64- Requires: +# Microsoft Visual Studio 2012 (x86) Professional Edition +# Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830 +# Optional: +# Required to build platforms or ACPI tables: +# Intel(r) ACPI Compiler (iasl.exe) from +# https://acpica.org/downloads +# VS2013x86 -win64- Requires: +# Microsoft Visual Studio 2013 (x86) Professional Edition +# Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830 +# Optional: +# Required to build platforms or ACPI tables: +# Intel(r) ACPI Compiler (iasl.exe) from +# https://acpica.org/downloads +# VS2015x86 -win64- Requires: +# Microsoft Visual Studio 2015 (x86) Update 2 or above +# Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830 +# Optional: +# Required to build platforms or ACPI tables: +# Intel(r) ACPI Compiler (iasl.exe) from +# https://acpica.org/downloads +# RVCT -win- Requires: +# ARM C/C++ Compiler, 5.00 +# Optional: +# Required to build EBC drivers: +# Intel(r) Compiler for Efi Byte Code (Intel(r) EBC Compiler) +# Required to build platforms or ACPI tables: +# Microsoft ASL ACPI Compiler (asl.exe) v4.0.0 from +# http://download.microsoft.com/download/2/c/1/2c16c7e0-96c1-40f5-81fc-3e4bf7b65496/microsoft_asl_compiler-v4-0-0.msi +# Notes: Since this tool chain is obsolete, it doesn't enable the compiler option for included header file list generation, +# and lose the incremental build capability. +# RVCTLINUX -unix- Requires: +# ARM C/C++ Compiler, 5.00 +# Optional: +# Required to build platforms or ACPI tables: +# Intel(r) ACPI Compiler from +# https://acpica.org/downloads +# Notes: Since this tool chain is obsolete, it doesn't enable the compiler option for included header file list generation, +# and lose the incremental build capability. +# * Commented out - All versions of VS2005 use the same standard install directory +# +#################################################################################### +#################################################################################### +# +# Supported Tool Chain Family +# =========================== +# MSFT - Microsoft +# GCC - GNU GCC +# INTEL - INTEL +# RVCT - ARM RealView Toolchain +#################################################################################### +#################################################################################### +# +# Other Supported Tools +# ===================== +# NASM -- http://www.nasm.us/ +# - NASM 2.10 or later for use with the GCC toolchain family +# - NASM 2.12.01 or later for use with all other toolchain families +# +#################################################################################### +#################################################################################### +# +# Intel EFI Byte Code Compiler (Template) +# +#################################################################################### +# *_*_EBC_*_FAMILY = INTEL +# +# *_*_EBC_PP_PATH = C:\Program Files\Intel\EBC\Bin\iec.exe +# *_*_EBC_CC_PATH = C:\Program Files\Intel\EBC\Bin\iec.exe +# *_*_EBC_SLINK_PATH = C:\Program Files\Intel\EBC\Bin\link.exe +# +# *_*_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC +# *_*_EBC_PP_FLAGS = /nologo /E /TC /FIAutoGen.h +# *_*_EBC_CC_FLAGS = /nologo /FAcs /c /W3 /WX /FIAutoGen.h +# *_*_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /MACHINE:EBC /OPT:REF /NODEFAULTLIB /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /ALIGN:32 /DRIVER +# +#################################################################################### +# +# 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 2008 +# +# VS2008 - Microsoft Visual Studio 2005 All Edition, including Standard, Professional, Express, TeamSuite +# ASL - Intel ACPI Source Language Compiler +#################################################################################### +# VS2008 - Microsoft Visual Studio 2008 ALL Edition, including Standard, Professional, Express, TeamSuite +*_VS2008_*_*_FAMILY = MSFT + +*_VS2008_*_MAKE_PATH = DEF(VS2008_BIN)\nmake.exe +*_VS2008_*_MAKE_FLAGS = /nologo +*_VS2008_*_RC_PATH = DEF(WINSDK_BIN)\rc.exe + +*_VS2008_*_SLINK_FLAGS = /NOLOGO /LTCG +*_VS2008_*_APP_FLAGS = /nologo /E /TC +*_VS2008_*_PP_FLAGS = /nologo /E /TC /FIAutoGen.h +*_VS2008_*_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h +*_VS2008_*_DEPS_FLAGS = DEF(MSFT_DEPS_FLAGS) +*_VS2008_*_ASM16_PATH = DEF(VS2008_BIN)\ml.exe + +################## +# ASL definitions +################## +*_VS2008_*_ASL_PATH = DEF(DEFAULT_WIN_ASL_BIN) +*_VS2008_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS) +*_VS2008_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS) +*_VS2008_*_ASLCC_FLAGS = DEF(MSFT_ASLCC_FLAGS) +*_VS2008_*_ASLPP_FLAGS = DEF(MSFT_ASLPP_FLAGS) +*_VS2008_*_ASLDLINK_FLAGS = DEF(MSFT_ASLDLINK_FLAGS) + +################## +# IA32 definitions +################## +*_VS2008_IA32_*_DLL = DEF(VS2008_DLL) + +*_VS2008_IA32_CC_PATH = DEF(VS2008_BIN)\cl.exe +*_VS2008_IA32_VFRPP_PATH = DEF(VS2008_BIN)\cl.exe +*_VS2008_IA32_SLINK_PATH = DEF(VS2008_BIN)\lib.exe +*_VS2008_IA32_DLINK_PATH = DEF(VS2008_BIN)\link.exe +*_VS2008_IA32_APP_PATH = DEF(VS2008_BIN)\cl.exe +*_VS2008_IA32_PP_PATH = DEF(VS2008_BIN)\cl.exe +*_VS2008_IA32_ASM_PATH = DEF(VS2008_BIN)\ml.exe +*_VS2008_IA32_ASLCC_PATH = DEF(VS2008_BIN)\cl.exe +*_VS2008_IA32_ASLPP_PATH = DEF(VS2008_BIN)\cl.exe +*_VS2008_IA32_ASLDLINK_PATH = DEF(VS2008_BIN)\link.exe + + DEBUG_VS2008_IA32_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm +RELEASE_VS2008_IA32_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF +NOOPT_VS2008_IA32_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm /Od + + DEBUG_VS2008_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi +RELEASE_VS2008_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd +NOOPT_VS2008_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi + + DEBUG_VS2008_IA32_NASM_FLAGS = -Ox -f win32 -g +RELEASE_VS2008_IA32_NASM_FLAGS = -Ox -f win32 +NOOPT_VS2008_IA32_NASM_FLAGS = -O0 -f win32 -g + + DEBUG_VS2008_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_VS2008_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_VS2008_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 +################## +*_VS2008_X64_*_DLL = DEF(VS2008_DLL) + +*_VS2008_X64_CC_PATH = DEF(VS2008_BINX64)\cl.exe +*_VS2008_X64_PP_PATH = DEF(VS2008_BINX64)\cl.exe +*_VS2008_X64_APP_PATH = DEF(VS2008_BINX64)\cl.exe +*_VS2008_X64_VFRPP_PATH = DEF(VS2008_BINX64)\cl.exe +*_VS2008_X64_ASM_PATH = DEF(VS2008_BINX64)\ml64.exe +*_VS2008_X64_SLINK_PATH = DEF(VS2008_BINX64)\lib.exe +*_VS2008_X64_DLINK_PATH = DEF(VS2008_BINX64)\link.exe +*_VS2008_X64_ASLCC_PATH = DEF(VS2008_BINX64)\cl.exe +*_VS2008_X64_ASLPP_PATH = DEF(VS2008_BINX64)\cl.exe +*_VS2008_X64_ASLDLINK_PATH = DEF(VS2008_BINX64)\link.exe + + DEBUG_VS2008_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 +RELEASE_VS2008_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF +NOOPT_VS2008_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od + + DEBUG_VS2008_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi +RELEASE_VS2008_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd +NOOPT_VS2008_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi + + DEBUG_VS2008_X64_NASM_FLAGS = -Ox -f win64 -g +RELEASE_VS2008_X64_NASM_FLAGS = -Ox -f win64 +NOOPT_VS2008_X64_NASM_FLAGS = -O0 -f win64 -g + + DEBUG_VS2008_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_VS2008_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_VS2008_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 + +################## +# EBC definitions +################## +*_VS2008_EBC_*_FAMILY = INTEL +*_VS2008_EBC_*_DLL = DEF(VS2008_DLL) + +*_VS2008_EBC_PP_PATH = DEF(EBC_BIN)\iec.exe +*_VS2008_EBC_VFRPP_PATH = DEF(EBC_BIN)\iec.exe +*_VS2008_EBC_CC_PATH = DEF(EBC_BIN)\iec.exe +*_VS2008_EBC_SLINK_PATH = DEF(VS2008_BIN)\link.exe +*_VS2008_EBC_DLINK_PATH = DEF(VS2008_BIN)\link.exe + +*_VS2008_EBC_PP_FLAGS = /nologo /E /TC /FIAutoGen.h +*_VS2008_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT) +*_VS2008_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h +*_VS2008_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC +*_VS2008_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER + + +#################################################################################### +# VS2008x86 - Microsoft Visual Studio 2008 (x86) with Intel ASL +# ASL - Intel ACPI Source Language Compiler (iasl.exe) +#################################################################################### +# VS2008x86 - Microsoft Visual Studio 2008 (x86) ALL Edition with Intel ASL +*_VS2008x86_*_*_FAMILY = MSFT + +*_VS2008x86_*_MAKE_PATH = DEF(VS2008x86_BIN)\nmake.exe +*_VS2008x86_*_MAKE_FLAGS = /nologo +*_VS2008x86_*_RC_PATH = DEF(WINSDK_BIN)\rc.exe + +*_VS2008x86_*_SLINK_FLAGS = /NOLOGO /LTCG +*_VS2008x86_*_APP_FLAGS = /nologo /E /TC +*_VS2008x86_*_PP_FLAGS = /nologo /E /TC /FIAutoGen.h +*_VS2008x86_*_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h +*_VS2008x86_*_DEPS_FLAGS = DEF(MSFT_DEPS_FLAGS) +*_VS2008x86_*_ASM16_PATH = DEF(VS2008x86_BIN)\ml.exe + +################## +# ASL definitions +################## +*_VS2008x86_*_ASL_PATH = DEF(WIN_IASL_BIN) +*_VS2008x86_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS) +*_VS2008x86_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS) +*_VS2008x86_*_ASLCC_FLAGS = DEF(MSFT_ASLCC_FLAGS) +*_VS2008x86_*_ASLPP_FLAGS = DEF(MSFT_ASLPP_FLAGS) +*_VS2008x86_*_ASLDLINK_FLAGS = DEF(MSFT_ASLDLINK_FLAGS) + +################## +# IA32 definitions +################## +*_VS2008x86_IA32_*_DLL = DEF(VS2008x86_DLL) + +*_VS2008x86_IA32_CC_PATH = DEF(VS2008x86_BIN)\cl.exe +*_VS2008x86_IA32_VFRPP_PATH = DEF(VS2008x86_BIN)\cl.exe +*_VS2008x86_IA32_ASLCC_PATH = DEF(VS2008x86_BIN)\cl.exe +*_VS2008x86_IA32_ASLPP_PATH = DEF(VS2008x86_BIN)\cl.exe +*_VS2008x86_IA32_SLINK_PATH = DEF(VS2008x86_BIN)\lib.exe +*_VS2008x86_IA32_DLINK_PATH = DEF(VS2008x86_BIN)\link.exe +*_VS2008x86_IA32_ASLDLINK_PATH= DEF(VS2008x86_BIN)\link.exe +*_VS2008x86_IA32_APP_PATH = DEF(VS2008x86_BIN)\cl.exe +*_VS2008x86_IA32_PP_PATH = DEF(VS2008x86_BIN)\cl.exe +*_VS2008x86_IA32_ASM_PATH = DEF(VS2008x86_BIN)\ml.exe + + DEBUG_VS2008x86_IA32_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 +RELEASE_VS2008x86_IA32_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF +NOOPT_VS2008x86_IA32_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od + + DEBUG_VS2008x86_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi +RELEASE_VS2008x86_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd +NOOPT_VS2008x86_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi + + DEBUG_VS2008x86_IA32_NASM_FLAGS = -Ox -f win32 -g +RELEASE_VS2008x86_IA32_NASM_FLAGS = -Ox -f win32 +NOOPT_VS2008x86_IA32_NASM_FLAGS = -O0 -f win32 -g + + DEBUG_VS2008x86_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_VS2008x86_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_VS2008x86_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 +################## +*_VS2008x86_X64_*_DLL = DEF(VS2008x86_DLL) + +*_VS2008x86_X64_CC_PATH = DEF(VS2008x86_BINX64)\cl.exe +*_VS2008x86_X64_PP_PATH = DEF(VS2008x86_BINX64)\cl.exe +*_VS2008x86_X64_APP_PATH = DEF(VS2008x86_BINX64)\cl.exe +*_VS2008x86_X64_VFRPP_PATH = DEF(VS2008x86_BINX64)\cl.exe +*_VS2008x86_X64_ASLCC_PATH = DEF(VS2008x86_BINX64)\cl.exe +*_VS2008x86_X64_ASLPP_PATH = DEF(VS2008x86_BINX64)\cl.exe +*_VS2008x86_X64_ASM_PATH = DEF(VS2008x86_BINX64)\ml64.exe +*_VS2008x86_X64_SLINK_PATH = DEF(VS2008x86_BINX64)\lib.exe +*_VS2008x86_X64_DLINK_PATH = DEF(VS2008x86_BINX64)\link.exe +*_VS2008x86_X64_ASLDLINK_PATH = DEF(VS2008x86_BINX64)\link.exe + + DEBUG_VS2008x86_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 +RELEASE_VS2008x86_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF +NOOPT_VS2008x86_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od + DEBUG_VS2008x86_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi +RELEASE_VS2008x86_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd +NOOPT_VS2008x86_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi + + DEBUG_VS2008x86_X64_NASM_FLAGS = -Ox -f win64 -g +RELEASE_VS2008x86_X64_NASM_FLAGS = -Ox -f win64 +NOOPT_VS2008x86_X64_NASM_FLAGS = -O0 -f win64 -g + + DEBUG_VS2008x86_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_VS2008x86_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_VS2008x86_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 + +################## +# EBC definitions +################## +*_VS2008x86_EBC_*_FAMILY = INTEL +*_VS2008x86_EBC_*_DLL = DEF(VS2008x86_DLL) + +*_VS2008x86_EBC_PP_PATH = DEF(EBC_BINx86)\iec.exe +*_VS2008x86_EBC_VFRPP_PATH = DEF(EBC_BINx86)\iec.exe +*_VS2008x86_EBC_CC_PATH = DEF(EBC_BINx86)\iec.exe +*_VS2008x86_EBC_SLINK_PATH = DEF(VS2008x86_BIN)\link.exe +*_VS2008x86_EBC_DLINK_PATH = DEF(VS2008x86_BIN)\link.exe + +*_VS2008x86_EBC_PP_FLAGS = /nologo /E /TC /FIAutoGen.h +*_VS2008x86_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT) +*_VS2008x86_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h +*_VS2008x86_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC +*_VS2008x86_EBC_DLINK_FLAGS = "C:\Program Files (x86)\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER + + + +#################################################################################### +# +# Microsoft Visual Studio 2010 +# +# VS2010 - Microsoft Visual Studio 2010 Premium Edition with Intel ASL +# ASL - Intel ACPI Source Language Compiler +#################################################################################### +# VS2010 - Microsoft Visual Studio 2010 Premium Edition +*_VS2010_*_*_FAMILY = MSFT + +*_VS2010_*_MAKE_PATH = DEF(VS2010_BIN)\nmake.exe +*_VS2010_*_MAKE_FLAGS = /nologo +*_VS2010_*_RC_PATH = DEF(WINSDK7_BIN)\rc.exe + +*_VS2010_*_SLINK_FLAGS = /NOLOGO /LTCG +*_VS2010_*_APP_FLAGS = /nologo /E /TC +*_VS2010_*_PP_FLAGS = /nologo /E /TC /FIAutoGen.h +*_VS2010_*_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h +*_VS2010_*_DEPS_FLAGS = DEF(MSFT_DEPS_FLAGS) +*_VS2010_*_ASM16_PATH = DEF(VS2010_BIN)\ml.exe + +################## +# ASL definitions +################## +*_VS2010_*_ASL_PATH = DEF(DEFAULT_WIN_ASL_BIN) +*_VS2010_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS) +*_VS2010_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS) +*_VS2010_*_ASLCC_FLAGS = DEF(MSFT_ASLCC_FLAGS) +*_VS2010_*_ASLPP_FLAGS = DEF(MSFT_ASLPP_FLAGS) +*_VS2010_*_ASLDLINK_FLAGS = DEF(MSFT_ASLDLINK_FLAGS) + +################## +# IA32 definitions +################## +*_VS2010_IA32_*_DLL = DEF(VS2010_DLL) + +*_VS2010_IA32_CC_PATH = DEF(VS2010_BIN)\cl.exe +*_VS2010_IA32_VFRPP_PATH = DEF(VS2010_BIN)\cl.exe +*_VS2010_IA32_SLINK_PATH = DEF(VS2010_BIN)\lib.exe +*_VS2010_IA32_DLINK_PATH = DEF(VS2010_BIN)\link.exe +*_VS2010_IA32_APP_PATH = DEF(VS2010_BIN)\cl.exe +*_VS2010_IA32_PP_PATH = DEF(VS2010_BIN)\cl.exe +*_VS2010_IA32_ASM_PATH = DEF(VS2010_BIN)\ml.exe +*_VS2010_IA32_ASLCC_PATH = DEF(VS2010_BIN)\cl.exe +*_VS2010_IA32_ASLPP_PATH = DEF(VS2010_BIN)\cl.exe +*_VS2010_IA32_ASLDLINK_PATH = DEF(VS2010_BIN)\link.exe + + DEBUG_VS2010_IA32_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 +RELEASE_VS2010_IA32_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF +NOOPT_VS2010_IA32_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm /Od + + DEBUG_VS2010_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi +RELEASE_VS2010_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd +NOOPT_VS2010_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi + + DEBUG_VS2010_IA32_NASM_FLAGS = -Ox -f win32 -g +RELEASE_VS2010_IA32_NASM_FLAGS = -Ox -f win32 +NOOPT_VS2010_IA32_NASM_FLAGS = -O0 -f win32 -g + + DEBUG_VS2010_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_VS2010_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_VS2010_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 +################## +*_VS2010_X64_*_DLL = DEF(VS2010_DLL) + +*_VS2010_X64_CC_PATH = DEF(VS2010_BINX64)\cl.exe +*_VS2010_X64_PP_PATH = DEF(VS2010_BINX64)\cl.exe +*_VS2010_X64_APP_PATH = DEF(VS2010_BINX64)\cl.exe +*_VS2010_X64_VFRPP_PATH = DEF(VS2010_BINX64)\cl.exe +*_VS2010_X64_ASM_PATH = DEF(VS2010_BINX64)\ml64.exe +*_VS2010_X64_SLINK_PATH = DEF(VS2010_BINX64)\lib.exe +*_VS2010_X64_DLINK_PATH = DEF(VS2010_BINX64)\link.exe +*_VS2010_X64_ASLCC_PATH = DEF(VS2010_BINX64)\cl.exe +*_VS2010_X64_ASLPP_PATH = DEF(VS2010_BINX64)\cl.exe +*_VS2010_X64_ASLDLINK_PATH = DEF(VS2010_BINX64)\link.exe + + DEBUG_VS2010_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 +RELEASE_VS2010_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF +NOOPT_VS2010_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od + + DEBUG_VS2010_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi +RELEASE_VS2010_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd +NOOPT_VS2010_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi + + DEBUG_VS2010_X64_NASM_FLAGS = -Ox -f win64 -g +RELEASE_VS2010_X64_NASM_FLAGS = -Ox -f win64 +NOOPT_VS2010_X64_NASM_FLAGS = -O0 -f win64 -g + + DEBUG_VS2010_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_VS2010_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_VS2010_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 + +################## +# EBC definitions +################## +*_VS2010_EBC_*_FAMILY = INTEL +*_VS2010_EBC_*_DLL = DEF(VS2010_DLL) + +*_VS2010_EBC_PP_PATH = DEF(EBC_BIN)\iec.exe +*_VS2010_EBC_VFRPP_PATH = DEF(EBC_BIN)\iec.exe +*_VS2010_EBC_CC_PATH = DEF(EBC_BIN)\iec.exe +*_VS2010_EBC_SLINK_PATH = DEF(VS2010_BIN)\link.exe +*_VS2010_EBC_DLINK_PATH = DEF(VS2010_BIN)\link.exe + +*_VS2010_EBC_PP_FLAGS = /nologo /E /TC /FIAutoGen.h +*_VS2010_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT) +*_VS2010_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h +*_VS2010_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC +*_VS2010_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER + + +#################################################################################### +# VS2010x86 - Microsoft Visual Studio 2010 (x86) with Intel ASL +# ASL - Intel ACPI Source Language Compiler (iasl.exe) +#################################################################################### +# VS2010x86 - Microsoft Visual Studio 2010 (x86) ALL Edition with Intel ASL +*_VS2010x86_*_*_FAMILY = MSFT + +*_VS2010x86_*_MAKE_PATH = DEF(VS2010x86_BIN)\nmake.exe +*_VS2010x86_*_MAKE_FLAGS = /nologo +*_VS2010x86_*_RC_PATH = DEF(WINSDK7x86_BIN)\rc.exe + +*_VS2010x86_*_SLINK_FLAGS = /NOLOGO /LTCG +*_VS2010x86_*_APP_FLAGS = /nologo /E /TC +*_VS2010x86_*_PP_FLAGS = /nologo /E /TC /FIAutoGen.h +*_VS2010x86_*_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h +*_VS2010x86_*_DEPS_FLAGS = DEF(MSFT_DEPS_FLAGS) +*_VS2010x86_*_ASM16_PATH = DEF(VS2010x86_BIN)\ml.exe + +################## +# ASL definitions +################## +*_VS2010x86_*_ASL_PATH = DEF(WIN_IASL_BIN) +*_VS2010x86_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS) +*_VS2010x86_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS) +*_VS2010x86_*_ASLCC_FLAGS = DEF(MSFT_ASLCC_FLAGS) +*_VS2010x86_*_ASLPP_FLAGS = DEF(MSFT_ASLPP_FLAGS) +*_VS2010x86_*_ASLDLINK_FLAGS = DEF(MSFT_ASLDLINK_FLAGS) + +################## +# IA32 definitions +################## +*_VS2010x86_IA32_*_DLL = DEF(VS2010x86_DLL) + +*_VS2010x86_IA32_CC_PATH = DEF(VS2010x86_BIN)\cl.exe +*_VS2010x86_IA32_VFRPP_PATH = DEF(VS2010x86_BIN)\cl.exe +*_VS2010x86_IA32_ASLCC_PATH = DEF(VS2010x86_BIN)\cl.exe +*_VS2010x86_IA32_ASLPP_PATH = DEF(VS2010x86_BIN)\cl.exe +*_VS2010x86_IA32_SLINK_PATH = DEF(VS2010x86_BIN)\lib.exe +*_VS2010x86_IA32_DLINK_PATH = DEF(VS2010x86_BIN)\link.exe +*_VS2010x86_IA32_ASLDLINK_PATH= DEF(VS2010x86_BIN)\link.exe +*_VS2010x86_IA32_APP_PATH = DEF(VS2010x86_BIN)\cl.exe +*_VS2010x86_IA32_PP_PATH = DEF(VS2010x86_BIN)\cl.exe +*_VS2010x86_IA32_ASM_PATH = DEF(VS2010x86_BIN)\ml.exe + + DEBUG_VS2010x86_IA32_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 +RELEASE_VS2010x86_IA32_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF +NOOPT_VS2010x86_IA32_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od + + DEBUG_VS2010x86_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi +RELEASE_VS2010x86_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd +NOOPT_VS2010x86_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi + + DEBUG_VS2010x86_IA32_NASM_FLAGS = -Ox -f win32 -g +RELEASE_VS2010x86_IA32_NASM_FLAGS = -Ox -f win32 +NOOPT_VS2010x86_IA32_NASM_FLAGS = -O0 -f win32 -g + + DEBUG_VS2010x86_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_VS2010x86_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_VS2010x86_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 +################## +*_VS2010x86_X64_*_DLL = DEF(VS2010x86_DLL) + +*_VS2010x86_X64_CC_PATH = DEF(VS2010x86_BINX64)\cl.exe +*_VS2010x86_X64_PP_PATH = DEF(VS2010x86_BINX64)\cl.exe +*_VS2010x86_X64_APP_PATH = DEF(VS2010x86_BINX64)\cl.exe +*_VS2010x86_X64_VFRPP_PATH = DEF(VS2010x86_BINX64)\cl.exe +*_VS2010x86_X64_ASLCC_PATH = DEF(VS2010x86_BINX64)\cl.exe +*_VS2010x86_X64_ASLPP_PATH = DEF(VS2010x86_BINX64)\cl.exe +*_VS2010x86_X64_ASM_PATH = DEF(VS2010x86_BINX64)\ml64.exe +*_VS2010x86_X64_SLINK_PATH = DEF(VS2010x86_BINX64)\lib.exe +*_VS2010x86_X64_DLINK_PATH = DEF(VS2010x86_BINX64)\link.exe +*_VS2010x86_X64_ASLDLINK_PATH = DEF(VS2010x86_BINX64)\link.exe + + DEBUG_VS2010x86_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 +RELEASE_VS2010x86_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF +NOOPT_VS2010x86_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od + + DEBUG_VS2010x86_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi +RELEASE_VS2010x86_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd +NOOPT_VS2010x86_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi + + DEBUG_VS2010x86_X64_NASM_FLAGS = -Ox -f win64 -g +RELEASE_VS2010x86_X64_NASM_FLAGS = -Ox -f win64 +NOOPT_VS2010x86_X64_NASM_FLAGS = -O0 -f win64 -g + + DEBUG_VS2010x86_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_VS2010x86_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_VS2010x86_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 + +################## +# EBC definitions +################## +*_VS2010x86_EBC_*_FAMILY = INTEL +*_VS2010x86_EBC_*_DLL = DEF(VS2010x86_DLL) + +*_VS2010x86_EBC_PP_PATH = DEF(EBC_BINx86)\iec.exe +*_VS2010x86_EBC_VFRPP_PATH = DEF(EBC_BINx86)\iec.exe +*_VS2010x86_EBC_CC_PATH = DEF(EBC_BINx86)\iec.exe +*_VS2010x86_EBC_SLINK_PATH = DEF(VS2010x86_BIN)\link.exe +*_VS2010x86_EBC_DLINK_PATH = DEF(VS2010x86_BIN)\link.exe + +*_VS2010x86_EBC_PP_FLAGS = /nologo /E /TC /FIAutoGen.h +*_VS2010x86_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT) +*_VS2010x86_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h +*_VS2010x86_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC +*_VS2010x86_EBC_DLINK_FLAGS = "C:\Program Files (x86)\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER + + +#################################################################################### +# +# Microsoft Visual Studio 2012 +# +# VS2012 - Microsoft Visual Studio 2012 Professional Edition with Intel ASL +# ASL - Intel ACPI Source Language Compiler +#################################################################################### +# VS2012 - Microsoft Visual Studio 2012 Professional Edition +*_VS2012_*_*_FAMILY = MSFT + +*_VS2012_*_MAKE_PATH = DEF(VS2012_BIN)\nmake.exe +*_VS2012_*_MAKE_FLAGS = /nologo +*_VS2012_*_RC_PATH = DEF(WINSDK71_BIN)\rc.exe + +*_VS2012_*_SLINK_FLAGS = /NOLOGO /LTCG +*_VS2012_*_APP_FLAGS = /nologo /E /TC +*_VS2012_*_PP_FLAGS = /nologo /E /TC /FIAutoGen.h +*_VS2012_*_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h +*_VS2012_*_DEPS_FLAGS = DEF(MSFT_DEPS_FLAGS) +*_VS2012_*_ASM16_PATH = DEF(VS2012_BIN)\ml.exe + +################## +# ASL definitions +################## +*_VS2012_*_ASL_PATH = DEF(DEFAULT_WIN_ASL_BIN) +*_VS2012_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS) +*_VS2012_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS) +*_VS2012_*_ASLCC_FLAGS = DEF(MSFT_ASLCC_FLAGS) +*_VS2012_*_ASLPP_FLAGS = DEF(MSFT_ASLPP_FLAGS) +*_VS2012_*_ASLDLINK_FLAGS = DEF(MSFT_ASLDLINK_FLAGS) + +################## +# IA32 definitions +################## +*_VS2012_IA32_*_DLL = DEF(VS2012_DLL) + +*_VS2012_IA32_CC_PATH = DEF(VS2012_BIN)\cl.exe +*_VS2012_IA32_VFRPP_PATH = DEF(VS2012_BIN)\cl.exe +*_VS2012_IA32_SLINK_PATH = DEF(VS2012_BIN)\lib.exe +*_VS2012_IA32_DLINK_PATH = DEF(VS2012_BIN)\link.exe +*_VS2012_IA32_APP_PATH = DEF(VS2012_BIN)\cl.exe +*_VS2012_IA32_PP_PATH = DEF(VS2012_BIN)\cl.exe +*_VS2012_IA32_ASM_PATH = DEF(VS2012_BIN)\ml.exe +*_VS2012_IA32_ASLCC_PATH = DEF(VS2012_BIN)\cl.exe +*_VS2012_IA32_ASLPP_PATH = DEF(VS2012_BIN)\cl.exe +*_VS2012_IA32_ASLDLINK_PATH = DEF(VS2012_BIN)\link.exe + + DEBUG_VS2012_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 +RELEASE_VS2012_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF +NOOPT_VS2012_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od + + DEBUG_VS2012_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi +RELEASE_VS2012_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd +NOOPT_VS2012_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi + + DEBUG_VS2012_IA32_NASM_FLAGS = -Ox -f win32 -g +RELEASE_VS2012_IA32_NASM_FLAGS = -Ox -f win32 +NOOPT_VS2012_IA32_NASM_FLAGS = -O0 -f win32 -g + + DEBUG_VS2012_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_VS2012_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_VS2012_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 +################## +*_VS2012_X64_*_DLL = DEF(VS2012_DLL) + +*_VS2012_X64_CC_PATH = DEF(VS2012_BINX64)\cl.exe +*_VS2012_X64_PP_PATH = DEF(VS2012_BINX64)\cl.exe +*_VS2012_X64_APP_PATH = DEF(VS2012_BINX64)\cl.exe +*_VS2012_X64_VFRPP_PATH = DEF(VS2012_BINX64)\cl.exe +*_VS2012_X64_ASM_PATH = DEF(VS2012_BINX64)\ml64.exe +*_VS2012_X64_SLINK_PATH = DEF(VS2012_BINX64)\lib.exe +*_VS2012_X64_DLINK_PATH = DEF(VS2012_BINX64)\link.exe +*_VS2012_X64_ASLCC_PATH = DEF(VS2012_BINX64)\cl.exe +*_VS2012_X64_ASLPP_PATH = DEF(VS2012_BINX64)\cl.exe +*_VS2012_X64_ASLDLINK_PATH = DEF(VS2012_BINX64)\link.exe + + DEBUG_VS2012_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 +RELEASE_VS2012_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF +NOOPT_VS2012_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od + + DEBUG_VS2012_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi +RELEASE_VS2012_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd +NOOPT_VS2012_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi + + DEBUG_VS2012_X64_NASM_FLAGS = -Ox -f win64 -g +RELEASE_VS2012_X64_NASM_FLAGS = -Ox -f win64 +NOOPT_VS2012_X64_NASM_FLAGS = -O0 -f win64 -g + + DEBUG_VS2012_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_VS2012_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_VS2012_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 + +################## +# EBC definitions +################## +*_VS2012_EBC_*_FAMILY = INTEL +*_VS2012_EBC_*_DLL = DEF(VS2012_DLL) + +*_VS2012_EBC_PP_PATH = DEF(EBC_BIN)\iec.exe +*_VS2012_EBC_VFRPP_PATH = DEF(EBC_BIN)\iec.exe +*_VS2012_EBC_CC_PATH = DEF(EBC_BIN)\iec.exe +*_VS2012_EBC_SLINK_PATH = DEF(VS2012_BIN)\link.exe +*_VS2012_EBC_DLINK_PATH = DEF(VS2012_BIN)\link.exe + +*_VS2012_EBC_PP_FLAGS = /nologo /E /TC /FIAutoGen.h +*_VS2012_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT) +*_VS2012_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h +*_VS2012_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC +*_VS2012_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER + + +#################################################################################### +# VS2012x86 - Microsoft Visual Studio 2012 (x86) professional with Intel ASL +# ASL - Intel ACPI Source Language Compiler (iasl.exe) +#################################################################################### +# VS2012x86 - Microsoft Visual Studio 2012 (x86) professional Edition with Intel ASL +*_VS2012x86_*_*_FAMILY = MSFT + +*_VS2012x86_*_MAKE_PATH = DEF(VS2012x86_BIN)\nmake.exe +*_VS2012x86_*_MAKE_FLAGS = /nologo +*_VS2012x86_*_RC_PATH = DEF(WINSDK71x86_BIN)\rc.exe + +*_VS2012x86_*_SLINK_FLAGS = /NOLOGO /LTCG +*_VS2012x86_*_APP_FLAGS = /nologo /E /TC +*_VS2012x86_*_PP_FLAGS = /nologo /E /TC /FIAutoGen.h +*_VS2012x86_*_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h +*_VS2012x86_*_DEPS_FLAGS = DEF(MSFT_DEPS_FLAGS) +*_VS2012x86_*_ASM16_PATH = DEF(VS2012x86_BIN)\ml.exe + +################## +# ASL definitions +################## +*_VS2012x86_*_ASL_PATH = DEF(WIN_IASL_BIN) +*_VS2012x86_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS) +*_VS2012x86_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS) +*_VS2012x86_*_ASLCC_FLAGS = DEF(MSFT_ASLCC_FLAGS) +*_VS2012x86_*_ASLPP_FLAGS = DEF(MSFT_ASLPP_FLAGS) +*_VS2012x86_*_ASLDLINK_FLAGS = DEF(MSFT_ASLDLINK_FLAGS) + +################## +# IA32 definitions +################## +*_VS2012x86_IA32_*_DLL = DEF(VS2012x86_DLL) + +*_VS2012x86_IA32_CC_PATH = DEF(VS2012x86_BIN)\cl.exe +*_VS2012x86_IA32_VFRPP_PATH = DEF(VS2012x86_BIN)\cl.exe +*_VS2012x86_IA32_ASLCC_PATH = DEF(VS2012x86_BIN)\cl.exe +*_VS2012x86_IA32_ASLPP_PATH = DEF(VS2012x86_BIN)\cl.exe +*_VS2012x86_IA32_SLINK_PATH = DEF(VS2012x86_BIN)\lib.exe +*_VS2012x86_IA32_DLINK_PATH = DEF(VS2012x86_BIN)\link.exe +*_VS2012x86_IA32_ASLDLINK_PATH= DEF(VS2012x86_BIN)\link.exe +*_VS2012x86_IA32_APP_PATH = DEF(VS2012x86_BIN)\cl.exe +*_VS2012x86_IA32_PP_PATH = DEF(VS2012x86_BIN)\cl.exe +*_VS2012x86_IA32_ASM_PATH = DEF(VS2012x86_BIN)\ml.exe + + DEBUG_VS2012x86_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 +RELEASE_VS2012x86_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF +NOOPT_VS2012x86_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od + + DEBUG_VS2012x86_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi +RELEASE_VS2012x86_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd +NOOPT_VS2012x86_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi + + DEBUG_VS2012x86_IA32_NASM_FLAGS = -Ox -f win32 -g +RELEASE_VS2012x86_IA32_NASM_FLAGS = -Ox -f win32 +NOOPT_VS2012x86_IA32_NASM_FLAGS = -O0 -f win32 -g + + DEBUG_VS2012x86_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_VS2012x86_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_VS2012x86_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 +################## +*_VS2012x86_X64_*_DLL = DEF(VS2012x86_DLL) + +*_VS2012x86_X64_CC_PATH = DEF(VS2012x86_BINX64)\cl.exe +*_VS2012x86_X64_PP_PATH = DEF(VS2012x86_BINX64)\cl.exe +*_VS2012x86_X64_APP_PATH = DEF(VS2012x86_BINX64)\cl.exe +*_VS2012x86_X64_VFRPP_PATH = DEF(VS2012x86_BINX64)\cl.exe +*_VS2012x86_X64_ASLCC_PATH = DEF(VS2012x86_BINX64)\cl.exe +*_VS2012x86_X64_ASLPP_PATH = DEF(VS2012x86_BINX64)\cl.exe +*_VS2012x86_X64_ASM_PATH = DEF(VS2012x86_BINX64)\ml64.exe +*_VS2012x86_X64_SLINK_PATH = DEF(VS2012x86_BINX64)\lib.exe +*_VS2012x86_X64_DLINK_PATH = DEF(VS2012x86_BINX64)\link.exe +*_VS2012x86_X64_ASLDLINK_PATH = DEF(VS2012x86_BINX64)\link.exe + + DEBUG_VS2012x86_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 +RELEASE_VS2012x86_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF +NOOPT_VS2012x86_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od + + DEBUG_VS2012x86_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi +RELEASE_VS2012x86_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd +NOOPT_VS2012x86_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi + + DEBUG_VS2012x86_X64_NASM_FLAGS = -Ox -f win64 -g +RELEASE_VS2012x86_X64_NASM_FLAGS = -Ox -f win64 +NOOPT_VS2012x86_X64_NASM_FLAGS = -O0 -f win64 -g + + DEBUG_VS2012x86_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_VS2012x86_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_VS2012x86_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 + +################## +# EBC definitions +################## +*_VS2012x86_EBC_*_FAMILY = INTEL +*_VS2012x86_EBC_*_DLL = DEF(VS2012x86_DLL) + +*_VS2012x86_EBC_PP_PATH = DEF(EBC_BINx86)\iec.exe +*_VS2012x86_EBC_VFRPP_PATH = DEF(EBC_BINx86)\iec.exe +*_VS2012x86_EBC_CC_PATH = DEF(EBC_BINx86)\iec.exe +*_VS2012x86_EBC_SLINK_PATH = DEF(VS2012x86_BIN)\link.exe +*_VS2012x86_EBC_DLINK_PATH = DEF(VS2012x86_BIN)\link.exe + +*_VS2012x86_EBC_PP_FLAGS = /nologo /E /TC /FIAutoGen.h +*_VS2012x86_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT) +*_VS2012x86_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h +*_VS2012x86_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC +*_VS2012x86_EBC_DLINK_FLAGS = "C:\Program Files (x86)\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER + + +#################################################################################### +# +# Microsoft Visual Studio 2013 +# +# VS2013 - Microsoft Visual Studio 2013 Professional Edition with Intel ASL +# ASL - Intel ACPI Source Language Compiler +#################################################################################### +# VS2013 - Microsoft Visual Studio 2013 Professional Edition +*_VS2013_*_*_FAMILY = MSFT + +*_VS2013_*_MAKE_PATH = DEF(VS2013_BIN)\nmake.exe +*_VS2013_*_MAKE_FLAGS = /nologo +*_VS2013_*_RC_PATH = DEF(WINSDK8_BIN)\rc.exe + +*_VS2013_*_SLINK_FLAGS = /NOLOGO /LTCG +*_VS2013_*_APP_FLAGS = /nologo /E /TC +*_VS2013_*_PP_FLAGS = /nologo /E /TC /FIAutoGen.h +*_VS2013_*_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h +*_VS2013_*_DEPS_FLAGS = DEF(MSFT_DEPS_FLAGS) +*_VS2013_*_ASM16_PATH = DEF(VS2013_BIN)\ml.exe + +################## +# ASL definitions +################## +*_VS2013_*_ASL_PATH = DEF(DEFAULT_WIN_ASL_BIN) +*_VS2013_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS) +*_VS2013_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS) +*_VS2013_*_ASLCC_FLAGS = DEF(MSFT_ASLCC_FLAGS) +*_VS2013_*_ASLPP_FLAGS = DEF(MSFT_ASLPP_FLAGS) +*_VS2013_*_ASLDLINK_FLAGS = DEF(MSFT_ASLDLINK_FLAGS) + +################## +# IA32 definitions +################## +*_VS2013_IA32_*_DLL = DEF(VS2013_DLL) + +*_VS2013_IA32_CC_PATH = DEF(VS2013_BIN)\cl.exe +*_VS2013_IA32_VFRPP_PATH = DEF(VS2013_BIN)\cl.exe +*_VS2013_IA32_SLINK_PATH = DEF(VS2013_BIN)\lib.exe +*_VS2013_IA32_DLINK_PATH = DEF(VS2013_BIN)\link.exe +*_VS2013_IA32_APP_PATH = DEF(VS2013_BIN)\cl.exe +*_VS2013_IA32_PP_PATH = DEF(VS2013_BIN)\cl.exe +*_VS2013_IA32_ASM_PATH = DEF(VS2013_BIN)\ml.exe +*_VS2013_IA32_ASLCC_PATH = DEF(VS2013_BIN)\cl.exe +*_VS2013_IA32_ASLPP_PATH = DEF(VS2013_BIN)\cl.exe +*_VS2013_IA32_ASLDLINK_PATH = DEF(VS2013_BIN)\link.exe + + DEBUG_VS2013_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_VS2013_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw +NOOPT_VS2013_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od + + DEBUG_VS2013_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi +RELEASE_VS2013_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd +NOOPT_VS2013_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi + + DEBUG_VS2013_IA32_NASM_FLAGS = -Ox -f win32 -g +RELEASE_VS2013_IA32_NASM_FLAGS = -Ox -f win32 +NOOPT_VS2013_IA32_NASM_FLAGS = -O0 -f win32 -g + + DEBUG_VS2013_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_VS2013_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_VS2013_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 +################## +*_VS2013_X64_*_DLL = DEF(VS2013_DLL) + +*_VS2013_X64_CC_PATH = DEF(VS2013_BINX64)\cl.exe +*_VS2013_X64_PP_PATH = DEF(VS2013_BINX64)\cl.exe +*_VS2013_X64_APP_PATH = DEF(VS2013_BINX64)\cl.exe +*_VS2013_X64_VFRPP_PATH = DEF(VS2013_BINX64)\cl.exe +*_VS2013_X64_ASM_PATH = DEF(VS2013_BINX64)\ml64.exe +*_VS2013_X64_SLINK_PATH = DEF(VS2013_BINX64)\lib.exe +*_VS2013_X64_DLINK_PATH = DEF(VS2013_BINX64)\link.exe +*_VS2013_X64_ASLCC_PATH = DEF(VS2013_BINX64)\cl.exe +*_VS2013_X64_ASLPP_PATH = DEF(VS2013_BINX64)\cl.exe +*_VS2013_X64_ASLDLINK_PATH = DEF(VS2013_BINX64)\link.exe + + DEBUG_VS2013_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Gw +RELEASE_VS2013_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Gw +NOOPT_VS2013_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od + + DEBUG_VS2013_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi +RELEASE_VS2013_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd +NOOPT_VS2013_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi + + DEBUG_VS2013_X64_NASM_FLAGS = -Ox -f win64 -g +RELEASE_VS2013_X64_NASM_FLAGS = -Ox -f win64 +NOOPT_VS2013_X64_NASM_FLAGS = -O0 -f win64 -g + + DEBUG_VS2013_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_VS2013_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_VS2013_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 + +################## +# EBC definitions +################## +*_VS2013_EBC_*_FAMILY = INTEL +*_VS2013_EBC_*_DLL = DEF(VS2013_DLL) + +*_VS2013_EBC_PP_PATH = DEF(EBC_BIN)\iec.exe +*_VS2013_EBC_VFRPP_PATH = DEF(EBC_BIN)\iec.exe +*_VS2013_EBC_CC_PATH = DEF(EBC_BIN)\iec.exe +*_VS2013_EBC_SLINK_PATH = DEF(VS2013_BIN)\link.exe +*_VS2013_EBC_DLINK_PATH = DEF(VS2013_BIN)\link.exe + +*_VS2013_EBC_PP_FLAGS = /nologo /E /TC /FIAutoGen.h +*_VS2013_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT) +*_VS2013_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h +*_VS2013_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC +*_VS2013_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER + + +#################################################################################### +# VS2013x86 - Microsoft Visual Studio 2013 (x86) professional with Intel ASL +# ASL - Intel ACPI Source Language Compiler (iasl.exe) +#################################################################################### +# VS2013x86 - Microsoft Visual Studio 2013 (x86) professional Edition with Intel ASL +*_VS2013x86_*_*_FAMILY = MSFT + +*_VS2013x86_*_MAKE_PATH = DEF(VS2013x86_BIN)\nmake.exe +*_VS2013x86_*_MAKE_FLAGS = /nologo +*_VS2013x86_*_RC_PATH = DEF(WINSDK8x86_BIN)\rc.exe + +*_VS2013x86_*_SLINK_FLAGS = /NOLOGO /LTCG +*_VS2013x86_*_APP_FLAGS = /nologo /E /TC +*_VS2013x86_*_PP_FLAGS = /nologo /E /TC /FIAutoGen.h +*_VS2013x86_*_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h +*_VS2013x86_*_DEPS_FLAGS = DEF(MSFT_DEPS_FLAGS) +*_VS2013x86_*_ASM16_PATH = DEF(VS2013x86_BIN)\ml.exe + +################## +# ASL definitions +################## +*_VS2013x86_*_ASL_PATH = DEF(WIN_IASL_BIN) +*_VS2013x86_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS) +*_VS2013x86_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS) +*_VS2013x86_*_ASLCC_FLAGS = DEF(MSFT_ASLCC_FLAGS) +*_VS2013x86_*_ASLPP_FLAGS = DEF(MSFT_ASLPP_FLAGS) +*_VS2013x86_*_ASLDLINK_FLAGS = DEF(MSFT_ASLDLINK_FLAGS) + +################## +# IA32 definitions +################## +*_VS2013x86_IA32_*_DLL = DEF(VS2013x86_DLL) + +*_VS2013x86_IA32_CC_PATH = DEF(VS2013x86_BIN)\cl.exe +*_VS2013x86_IA32_VFRPP_PATH = DEF(VS2013x86_BIN)\cl.exe +*_VS2013x86_IA32_ASLCC_PATH = DEF(VS2013x86_BIN)\cl.exe +*_VS2013x86_IA32_ASLPP_PATH = DEF(VS2013x86_BIN)\cl.exe +*_VS2013x86_IA32_SLINK_PATH = DEF(VS2013x86_BIN)\lib.exe +*_VS2013x86_IA32_DLINK_PATH = DEF(VS2013x86_BIN)\link.exe +*_VS2013x86_IA32_ASLDLINK_PATH= DEF(VS2013x86_BIN)\link.exe +*_VS2013x86_IA32_APP_PATH = DEF(VS2013x86_BIN)\cl.exe +*_VS2013x86_IA32_PP_PATH = DEF(VS2013x86_BIN)\cl.exe +*_VS2013x86_IA32_ASM_PATH = DEF(VS2013x86_BIN)\ml.exe + + DEBUG_VS2013x86_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_VS2013x86_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw +NOOPT_VS2013x86_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od + + DEBUG_VS2013x86_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi +RELEASE_VS2013x86_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd +NOOPT_VS2013x86_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi + + DEBUG_VS2013x86_IA32_NASM_FLAGS = -Ox -f win32 -g +RELEASE_VS2013x86_IA32_NASM_FLAGS = -Ox -f win32 +NOOPT_VS2013x86_IA32_NASM_FLAGS = -O0 -f win32 -g + + DEBUG_VS2013x86_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_VS2013x86_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_VS2013x86_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 +################## +*_VS2013x86_X64_*_DLL = DEF(VS2013x86_DLL) + +*_VS2013x86_X64_CC_PATH = DEF(VS2013x86_BINX64)\cl.exe +*_VS2013x86_X64_PP_PATH = DEF(VS2013x86_BINX64)\cl.exe +*_VS2013x86_X64_APP_PATH = DEF(VS2013x86_BINX64)\cl.exe +*_VS2013x86_X64_VFRPP_PATH = DEF(VS2013x86_BINX64)\cl.exe +*_VS2013x86_X64_ASLCC_PATH = DEF(VS2013x86_BINX64)\cl.exe +*_VS2013x86_X64_ASLPP_PATH = DEF(VS2013x86_BINX64)\cl.exe +*_VS2013x86_X64_ASM_PATH = DEF(VS2013x86_BINX64)\ml64.exe +*_VS2013x86_X64_SLINK_PATH = DEF(VS2013x86_BINX64)\lib.exe +*_VS2013x86_X64_DLINK_PATH = DEF(VS2013x86_BINX64)\link.exe +*_VS2013x86_X64_ASLDLINK_PATH = DEF(VS2013x86_BINX64)\link.exe + + DEBUG_VS2013x86_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Gw +RELEASE_VS2013x86_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Gw +NOOPT_VS2013x86_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od + + DEBUG_VS2013x86_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi +RELEASE_VS2013x86_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd +NOOPT_VS2013x86_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi + + DEBUG_VS2013x86_X64_NASM_FLAGS = -Ox -f win64 -g +RELEASE_VS2013x86_X64_NASM_FLAGS = -Ox -f win64 +NOOPT_VS2013x86_X64_NASM_FLAGS = -O0 -f win64 -g + + DEBUG_VS2013x86_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_VS2013x86_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_VS2013x86_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 + +################## +# EBC definitions +################## +*_VS2013x86_EBC_*_FAMILY = INTEL +*_VS2013x86_EBC_*_DLL = DEF(VS2013x86_DLL) + +*_VS2013x86_EBC_PP_PATH = DEF(EBC_BINx86)\iec.exe +*_VS2013x86_EBC_VFRPP_PATH = DEF(EBC_BINx86)\iec.exe +*_VS2013x86_EBC_CC_PATH = DEF(EBC_BINx86)\iec.exe +*_VS2013x86_EBC_SLINK_PATH = DEF(VS2013x86_BIN)\link.exe +*_VS2013x86_EBC_DLINK_PATH = DEF(VS2013x86_BIN)\link.exe + +*_VS2013x86_EBC_PP_FLAGS = /nologo /E /TC /FIAutoGen.h +*_VS2013x86_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT) +*_VS2013x86_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h +*_VS2013x86_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC +*_VS2013x86_EBC_DLINK_FLAGS = "C:\Program Files (x86)\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER + + +#################################################################################### +# +# 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 + +################## +# EBC definitions +################## +*_VS2015_EBC_*_FAMILY = INTEL +*_VS2015_EBC_*_DLL = DEF(VS2015_DLL) + +*_VS2015_EBC_PP_PATH = DEF(EBC_BIN)\iec.exe +*_VS2015_EBC_VFRPP_PATH = DEF(EBC_BIN)\iec.exe +*_VS2015_EBC_CC_PATH = DEF(EBC_BIN)\iec.exe +*_VS2015_EBC_SLINK_PATH = DEF(VS2015_BIN)\link.exe +*_VS2015_EBC_DLINK_PATH = DEF(VS2015_BIN)\link.exe + +*_VS2015_EBC_PP_FLAGS = /nologo /E /TC /FIAutoGen.h +*_VS2015_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT) +*_VS2015_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h +*_VS2015_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC +*_VS2015_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER + + +#################################################################################### +# 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 + +################## +# EBC definitions +################## +*_VS2015x86_EBC_*_FAMILY = INTEL +*_VS2015x86_EBC_*_DLL = DEF(VS2015x86_DLL) + +*_VS2015x86_EBC_PP_PATH = DEF(EBC_BINx86)\iec.exe +*_VS2015x86_EBC_VFRPP_PATH = DEF(EBC_BINx86)\iec.exe +*_VS2015x86_EBC_CC_PATH = DEF(EBC_BINx86)\iec.exe +*_VS2015x86_EBC_SLINK_PATH = DEF(VS2015x86_BIN)\link.exe +*_VS2015x86_EBC_DLINK_PATH = DEF(VS2015x86_BIN)\link.exe + +*_VS2015x86_EBC_PP_FLAGS = /nologo /E /TC /FIAutoGen.h +*_VS2015x86_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT) +*_VS2015x86_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h +*_VS2015x86_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC +*_VS2015x86_EBC_DLINK_FLAGS = "C:\Program Files (x86)\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER + + +#################################################################################### +# 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 + +################## +# EBC definitions +################## +*_VS2017_EBC_*_FAMILY = INTEL + +*_VS2017_EBC_PP_PATH = DEF(EBC_BINx86)\iec.exe +*_VS2017_EBC_VFRPP_PATH = DEF(EBC_BINx86)\iec.exe +*_VS2017_EBC_CC_PATH = DEF(EBC_BINx86)\iec.exe +*_VS2017_EBC_SLINK_PATH = DEF(VS2017_BIN_IA32)\link.exe +*_VS2017_EBC_DLINK_PATH = DEF(VS2017_BIN_IA32)\link.exe + +*_VS2017_EBC_PP_FLAGS = /nologo /E /TC /FIAutoGen.h +*_VS2017_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT) +*_VS2017_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h +*_VS2017_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC +*_VS2017_EBC_DLINK_FLAGS = "C:\Program Files (x86)\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER + +#################################################################################### +# 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 + +################## +# EBC definitions +################## +*_VS2019_EBC_*_FAMILY = INTEL + +*_VS2019_EBC_PP_PATH = DEF(EBC_BINx86)\iec.exe +*_VS2019_EBC_VFRPP_PATH = DEF(EBC_BINx86)\iec.exe +*_VS2019_EBC_CC_PATH = DEF(EBC_BINx86)\iec.exe +*_VS2019_EBC_SLINK_PATH = DEF(VS2019_BIN_IA32)\link.exe +*_VS2019_EBC_DLINK_PATH = DEF(VS2019_BIN_IA32)\link.exe + +*_VS2019_EBC_PP_FLAGS = /nologo /E /TC /FIAutoGen.h +*_VS2019_EBC_CC_FLAGS = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT) +*_VS2019_EBC_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h +*_VS2019_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC +*_VS2019_EBC_DLINK_FLAGS = "C:\Program Files (x86)\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER + +#################################################################################### +# 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 +*_*_*_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_IA32_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -m32 -malign-double -freorder-blocks -freorder-blocks-and-partition -O2 -mno-stack-arg-probe +DEFINE GCC_X64_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mno-red-zone -Wno-address -mno-stack-arg-probe +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 -mfloat-abi=soft -fno-pic -fno-pie +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_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_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_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_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_RISCV64_RC_FLAGS = -I binary -O elf64-littleriscv -B riscv --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 +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 +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 = $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ASM_FLAGS) -mlittle-endian +DEFINE GCC48_AARCH64_ASM_FLAGS = $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ASM_FLAGS) -mlittle-endian +DEFINE GCC48_ARM_CC_FLAGS = $(ARCHCC_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 = $(ARCHCC_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 = $(ARCHCC_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 = rv64imafdc +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 -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 GCC_PP_FLAGS = -E -x assembler-with-cpp -include AutoGen.h DEF(GCC5_RISCV_OPENSBI_TYPES) + +#################################################################################### +# +# 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) -Os +RELEASE_GCC48_IA32_CC_FLAGS = DEF(GCC48_IA32_CC_FLAGS) -Os -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) -Os +RELEASE_GCC48_X64_CC_FLAGS = DEF(GCC48_X64_CC_FLAGS) -Os -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_ARCHCC_FLAGS = -mthumb +*_GCC48_ARM_PLATFORM_FLAGS = -march=armv7-a + +*_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 = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS) +*_GCC48_ARM_RC_FLAGS = DEF(GCC_ARM_RC_FLAGS) +*_GCC48_ARM_VFRPP_FLAGS = $(ARCHCC_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 = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS) +*_GCC48_AARCH64_RC_FLAGS = DEF(GCC_AARCH64_RC_FLAGS) +*_GCC48_AARCH64_VFRPP_FLAGS = $(ARCHCC_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) -Os +RELEASE_GCC49_IA32_CC_FLAGS = DEF(GCC49_IA32_CC_FLAGS) -Os -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) -Os +RELEASE_GCC49_X64_CC_FLAGS = DEF(GCC49_X64_CC_FLAGS) -Os -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_ARCHCC_FLAGS = -mthumb +*_GCC49_ARM_PLATFORM_FLAGS = -march=armv7-a + +*_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 = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS) +*_GCC49_ARM_RC_FLAGS = DEF(GCC_ARM_RC_FLAGS) +*_GCC49_ARM_VFRPP_FLAGS = $(ARCHCC_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 = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS) +*_GCC49_AARCH64_RC_FLAGS = DEF(GCC_AARCH64_RC_FLAGS) +*_GCC49_AARCH64_VFRPP_FLAGS = $(ARCHCC_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 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 -Os + 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 -Os -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 -Os + 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 -Os -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_ARCHCC_FLAGS = -mthumb +*_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 +*_GCC5_ARM_PP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS) +*_GCC5_ARM_RC_FLAGS = DEF(GCC_ARM_RC_FLAGS) +*_GCC5_ARM_VFRPP_FLAGS = $(ARCHCC_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 = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS) +*_GCC5_AARCH64_RC_FLAGS = DEF(GCC_AARCH64_RC_FLAGS) +*_GCC5_AARCH64_VFRPP_FLAGS = $(ARCHCC_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) + +#################################################################################### +# +# CLANG35 - This configuration is used to compile under Linux to produce +# PE/COFF binaries using the clang compiler and assembler (v3.5 and up) +# and GNU linker +# +#################################################################################### +*_CLANG35_*_*_FAMILY = GCC + +*_CLANG35_*_MAKE_PATH = make +*_CLANG35_*_*_DLL = ENV(CLANG35_DLL) +*_CLANG35_*_ASL_PATH = DEF(UNIX_IASL_BIN) + +*_CLANG35_*_PP_FLAGS = DEF(GCC_PP_FLAGS) +*_CLANG35_*_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) +*_CLANG35_*_APP_FLAGS = +*_CLANG35_*_ASL_FLAGS = DEF(IASL_FLAGS) +*_CLANG35_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) +*_CLANG35_*_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS) + +*_CLANG35_*_CC_PATH = ENV(CLANG35_BIN)clang +*_CLANG35_*_ASM_PATH = ENV(CLANG35_BIN)clang +*_CLANG35_*_PP_PATH = ENV(CLANG35_BIN)clang +*_CLANG35_*_VFRPP_PATH = ENV(CLANG35_BIN)clang +*_CLANG35_*_ASLCC_PATH = ENV(CLANG35_BIN)clang +*_CLANG35_*_ASLPP_PATH = ENV(CLANG35_BIN)clang +*_CLANG35_*_DLINK_PATH = ENV(CLANG35_BIN)clang +*_CLANG35_*_ASLDLINK_PATH = ENV(CLANG35_BIN)clang +*_CLANG35_*_DEPS_FLAGS = DEF(GCC_DEPS_FLAGS) + +DEFINE CLANG35_ARM_TARGET = -target arm-linux-gnueabi +DEFINE CLANG35_AARCH64_TARGET = -target aarch64-linux-gnu + +DEFINE CLANG35_WARNING_OVERRIDES = -Wno-parentheses-equality -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare -Wno-empty-body -Wno-unknown-warning-option +DEFINE CLANG35_ARM_CC_FLAGS = DEF(GCC_ARM_CC_FLAGS) DEF(CLANG35_ARM_TARGET) DEF(CLANG35_WARNING_OVERRIDES) +DEFINE CLANG35_AARCH64_CC_FLAGS = DEF(GCC_AARCH64_CC_FLAGS) DEF(CLANG35_AARCH64_TARGET) -mcmodel=small DEF(CLANG35_WARNING_OVERRIDES) + +################## +# CLANG35 ARM definitions +################## +*_CLANG35_ARM_SLINK_PATH = ENV(CLANG35_ARM_PREFIX)ar +*_CLANG35_ARM_RC_PATH = ENV(CLANG35_ARM_PREFIX)objcopy + +*_CLANG35_ARM_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) +*_CLANG35_ARM_ASLDLINK_FLAGS = DEF(CLANG35_ARM_TARGET) DEF(GCC_ARM_ASLDLINK_FLAGS) +*_CLANG35_ARM_ASM_FLAGS = DEF(GCC_ASM_FLAGS) DEF(CLANG35_ARM_TARGET) $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) -Qunused-arguments +*_CLANG35_ARM_DLINK_FLAGS = DEF(CLANG35_ARM_TARGET) DEF(GCC_ARM_DLINK_FLAGS) +*_CLANG35_ARM_DLINK2_FLAGS = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x220 +*_CLANG35_ARM_PLATFORM_FLAGS = -march=armv7-a -mkernel -Qunused-arguments +*_CLANG35_ARM_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANG35_ARM_TARGET) $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) +*_CLANG35_ARM_RC_FLAGS = DEF(GCC_ARM_RC_FLAGS) +*_CLANG35_ARM_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANG35_ARM_TARGET) $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) +*_CLANG35_ARM_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANG35_ARM_TARGET) +*_CLANG35_ARM_CC_XIPFLAGS = DEF(GCC_ARM_CC_XIPFLAGS) + + DEBUG_CLANG35_ARM_CC_FLAGS = DEF(CLANG35_ARM_CC_FLAGS) $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -O1 +RELEASE_CLANG35_ARM_CC_FLAGS = DEF(CLANG35_ARM_CC_FLAGS) $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -Oz + NOOPT_CLANG35_ARM_CC_FLAGS = DEF(CLANG35_ARM_CC_FLAGS) $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -O0 + +################## +# CLANG35 AARCH64 definitions +################## +*_CLANG35_AARCH64_SLINK_PATH = ENV(CLANG35_AARCH64_PREFIX)ar +*_CLANG35_AARCH64_RC_PATH = ENV(CLANG35_AARCH64_PREFIX)objcopy + +*_CLANG35_AARCH64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) +*_CLANG35_AARCH64_ASLDLINK_FLAGS = DEF(CLANG35_AARCH64_TARGET) DEF(GCC_AARCH64_ASLDLINK_FLAGS) +*_CLANG35_AARCH64_ASM_FLAGS = DEF(GCC_ASM_FLAGS) DEF(CLANG35_AARCH64_TARGET) $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) -Qunused-arguments +*_CLANG35_AARCH64_DLINK_FLAGS = DEF(CLANG35_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000 +*_CLANG35_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 +*_CLANG35_AARCH64_DLINK2_FLAGS = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 +*_CLANG35_AARCH64_PLATFORM_FLAGS = +*_CLANG35_AARCH64_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANG35_AARCH64_TARGET) $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) +*_CLANG35_AARCH64_RC_FLAGS = DEF(GCC_AARCH64_RC_FLAGS) +*_CLANG35_AARCH64_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANG35_AARCH64_TARGET) $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) +*_CLANG35_AARCH64_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANG35_AARCH64_TARGET) +*_CLANG35_AARCH64_CC_XIPFLAGS = DEF(GCC_AARCH64_CC_XIPFLAGS) + + DEBUG_CLANG35_AARCH64_CC_FLAGS = DEF(CLANG35_AARCH64_CC_FLAGS) $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -O1 +RELEASE_CLANG35_AARCH64_CC_FLAGS = DEF(CLANG35_AARCH64_CC_FLAGS) $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -Oz + NOOPT_CLANG35_AARCH64_CC_FLAGS = DEF(CLANG35_AARCH64_CC_FLAGS) $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -O0 + +#################################################################################### +# +# Clang 3.8 - This configuration is used to compile under Linux to produce +# PE/COFF binaries using LLVM/Clang 3.8 with Link Time Optimization enabled +# +#################################################################################### +*_CLANG38_*_*_FAMILY = GCC +*_CLANG38_*_MAKE_PATH = make +*_CLANG38_*_*_DLL = ENV(CLANG38_DLL) +*_CLANG38_*_ASL_PATH = DEF(UNIX_IASL_BIN) + +*_CLANG38_*_APP_FLAGS = +*_CLANG38_*_ASL_FLAGS = DEF(IASL_FLAGS) +*_CLANG38_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) +*_CLANG38_*_DEPS_FLAGS = DEF(GCC_DEPS_FLAGS) +DEFINE CLANG38_IA32_PREFIX = ENV(CLANG38_BIN) +DEFINE CLANG38_X64_PREFIX = ENV(CLANG38_BIN) + +DEFINE CLANG38_IA32_TARGET = -target i686-pc-linux-gnu +DEFINE CLANG38_X64_TARGET = -target x86_64-pc-linux-gnu + +DEFINE CLANG38_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 +DEFINE CLANG38_ALL_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) DEF(CLANG38_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 + +########################### +# CLANG38 IA32 definitions +########################### +*_CLANG38_IA32_OBJCOPY_PATH = objcopy +*_CLANG38_IA32_CC_PATH = DEF(CLANG38_IA32_PREFIX)clang +*_CLANG38_IA32_SLINK_PATH = DEF(CLANG38_IA32_PREFIX)llvm-ar +*_CLANG38_IA32_DLINK_PATH = DEF(CLANG38_IA32_PREFIX)clang +*_CLANG38_IA32_ASLDLINK_PATH = DEF(CLANG38_IA32_PREFIX)clang +*_CLANG38_IA32_ASM_PATH = DEF(CLANG38_IA32_PREFIX)clang +*_CLANG38_IA32_PP_PATH = DEF(CLANG38_IA32_PREFIX)clang +*_CLANG38_IA32_VFRPP_PATH = DEF(CLANG38_IA32_PREFIX)clang +*_CLANG38_IA32_ASLCC_PATH = DEF(CLANG38_IA32_PREFIX)clang +*_CLANG38_IA32_ASLPP_PATH = DEF(CLANG38_IA32_PREFIX)clang +*_CLANG38_IA32_RC_PATH = objcopy + +*_CLANG38_IA32_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto DEF(CLANG38_IA32_TARGET) +*_CLANG38_IA32_ASLDLINK_FLAGS = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386 +*_CLANG38_IA32_ASM_FLAGS = DEF(GCC5_ASM_FLAGS) -m32 -march=i386 DEF(CLANG38_IA32_TARGET) +*_CLANG38_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS) +*_CLANG38_IA32_OBJCOPY_FLAGS = +*_CLANG38_IA32_NASM_FLAGS = -f elf32 +*_CLANG38_IA32_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANG38_IA32_TARGET) +*_CLANG38_IA32_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_IA32_TARGET) +*_CLANG38_IA32_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_IA32_TARGET) + +DEBUG_CLANG38_IA32_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANG38_IA32_TARGET) -g +DEBUG_CLANG38_IA32_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=elf32-i386 +DEBUG_CLANG38_IA32_DLINK2_FLAGS = DEF(GCC5_IA32_DLINK2_FLAGS) -O3 + +RELEASE_CLANG38_IA32_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANG38_IA32_TARGET) +RELEASE_CLANG38_IA32_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=elf32-i386 +RELEASE_CLANG38_IA32_DLINK2_FLAGS = DEF(GCC5_IA32_DLINK2_FLAGS) -O3 + +NOOPT_CLANG38_IA32_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m32 -O0 -march=i586 DEF(CLANG38_IA32_TARGET) -g +NOOPT_CLANG38_IA32_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_i386 -Wl,--oformat=elf32-i386 +NOOPT_CLANG38_IA32_DLINK2_FLAGS = DEF(GCC5_IA32_DLINK2_FLAGS) -O0 + +########################## +# CLANG38 X64 definitions +########################## +*_CLANG38_X64_OBJCOPY_PATH = objcopy +*_CLANG38_X64_CC_PATH = DEF(CLANG38_X64_PREFIX)clang +*_CLANG38_X64_SLINK_PATH = DEF(CLANG38_X64_PREFIX)llvm-ar +*_CLANG38_X64_DLINK_PATH = DEF(CLANG38_X64_PREFIX)clang +*_CLANG38_X64_ASLDLINK_PATH = DEF(CLANG38_X64_PREFIX)clang +*_CLANG38_X64_ASM_PATH = DEF(CLANG38_X64_PREFIX)clang +*_CLANG38_X64_PP_PATH = DEF(CLANG38_X64_PREFIX)clang +*_CLANG38_X64_VFRPP_PATH = DEF(CLANG38_X64_PREFIX)clang +*_CLANG38_X64_ASLCC_PATH = DEF(CLANG38_X64_PREFIX)clang +*_CLANG38_X64_ASLPP_PATH = DEF(CLANG38_X64_PREFIX)clang +*_CLANG38_X64_RC_PATH = objcopy + +*_CLANG38_X64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto DEF(CLANG38_X64_TARGET) +*_CLANG38_X64_ASLDLINK_FLAGS = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64 +*_CLANG38_X64_ASM_FLAGS = DEF(GCC5_ASM_FLAGS) -m64 DEF(CLANG38_X64_TARGET) +*_CLANG38_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS) +*_CLANG38_X64_OBJCOPY_FLAGS = +*_CLANG38_X64_NASM_FLAGS = -f elf64 +*_CLANG38_X64_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANG38_X64_TARGET) +*_CLANG38_X64_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_X64_TARGET) +*_CLANG38_X64_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_X64_TARGET) + +DEBUG_CLANG38_X64_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANG38_X64_TARGET) -g +DEBUG_CLANG38_X64_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small +DEBUG_CLANG38_X64_DLINK2_FLAGS = DEF(GCC5_X64_DLINK2_FLAGS) -O3 + +RELEASE_CLANG38_X64_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANG38_X64_TARGET) +RELEASE_CLANG38_X64_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small +RELEASE_CLANG38_X64_DLINK2_FLAGS = DEF(GCC5_X64_DLINK2_FLAGS) -O3 + +NOOPT_CLANG38_X64_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -O0 DEF(CLANG38_X64_TARGET) -g +NOOPT_CLANG38_X64_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small +NOOPT_CLANG38_X64_DLINK2_FLAGS = DEF(GCC5_X64_DLINK2_FLAGS) -O0 + +################## +# CLANG38 ARM definitions +################## +DEFINE CLANG38_ARM_TARGET = -target arm-linux-gnueabi +DEFINE CLANG38_ARM_CC_FLAGS = DEF(GCC_ARM_CC_FLAGS) DEF(CLANG38_ARM_TARGET) DEF(CLANG38_WARNING_OVERRIDES) -mno-movt +DEFINE CLANG38_ARM_DLINK_FLAGS = DEF(CLANG38_ARM_TARGET) DEF(GCC_ARM_DLINK_FLAGS) + +*_CLANG38_ARM_PP_FLAGS = DEF(GCC_PP_FLAGS) +*_CLANG38_ARM_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) +*_CLANG38_ARM_APP_FLAGS = +*_CLANG38_ARM_ASL_FLAGS = DEF(IASL_FLAGS) +*_CLANG38_ARM_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) +*_CLANG38_ARM_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS) + +*_CLANG38_ARM_CC_PATH = ENV(CLANG38_BIN)clang +*_CLANG38_ARM_ASM_PATH = ENV(CLANG38_BIN)clang +*_CLANG38_ARM_PP_PATH = ENV(CLANG38_BIN)clang +*_CLANG38_ARM_VFRPP_PATH = ENV(CLANG38_BIN)clang +*_CLANG38_ARM_ASLCC_PATH = ENV(CLANG38_BIN)clang +*_CLANG38_ARM_ASLPP_PATH = ENV(CLANG38_BIN)clang +*_CLANG38_ARM_DLINK_PATH = ENV(CLANG38_BIN)clang +*_CLANG38_ARM_ASLDLINK_PATH = ENV(CLANG38_BIN)clang + +*_CLANG38_ARM_SLINK_PATH = ENV(CLANG38_BIN)llvm-ar +*_CLANG38_ARM_RC_PATH = ENV(CLANG38_ARM_PREFIX)objcopy + +*_CLANG38_ARM_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -fno-lto +*_CLANG38_ARM_ASLDLINK_FLAGS = DEF(CLANG38_ARM_TARGET) DEF(GCC_ARM_ASLDLINK_FLAGS) +*_CLANG38_ARM_ASM_FLAGS = DEF(GCC_ASM_FLAGS) DEF(CLANG38_ARM_TARGET) $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) -Qunused-arguments +*_CLANG38_ARM_DLINK2_FLAGS = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x220 +*_CLANG38_ARM_PLATFORM_FLAGS = -march=armv7-a +*_CLANG38_ARM_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANG38_ARM_TARGET) $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) +*_CLANG38_ARM_RC_FLAGS = DEF(GCC_ARM_RC_FLAGS) +*_CLANG38_ARM_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_ARM_TARGET) $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) +*_CLANG38_ARM_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_ARM_TARGET) +*_CLANG38_ARM_CC_XIPFLAGS = DEF(GCC_ARM_CC_XIPFLAGS) + + DEBUG_CLANG38_ARM_CC_FLAGS = DEF(CLANG38_ARM_CC_FLAGS) $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -flto -O1 + DEBUG_CLANG38_ARM_DLINK_FLAGS = DEF(CLANG38_ARM_DLINK_FLAGS) -flto -Wl,-O1 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm + NOOPT_CLANG38_ARM_CC_FLAGS = DEF(CLANG38_ARM_CC_FLAGS) $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -O0 + NOOPT_CLANG38_ARM_DLINK_FLAGS = DEF(CLANG38_ARM_DLINK_FLAGS) +RELEASE_CLANG38_ARM_CC_FLAGS = DEF(CLANG38_ARM_CC_FLAGS) $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -flto -O3 +RELEASE_CLANG38_ARM_DLINK_FLAGS = DEF(CLANG38_ARM_DLINK_FLAGS) -flto -Wl,-O3 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm + +################## +# CLANG38 AARCH64 definitions +################## +DEFINE CLANG38_AARCH64_TARGET = -target aarch64-linux-gnu +DEFINE CLANG38_AARCH64_CC_FLAGS = DEF(GCC_AARCH64_CC_FLAGS) DEF(CLANG38_AARCH64_TARGET) -mcmodel=small DEF(CLANG38_WARNING_OVERRIDES) +DEFINE CLANG38_AARCH64_DLINK_FLAGS = DEF(CLANG38_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000 + +*_CLANG38_AARCH64_PP_FLAGS = DEF(GCC_PP_FLAGS) +*_CLANG38_AARCH64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) +*_CLANG38_AARCH64_APP_FLAGS = +*_CLANG38_AARCH64_ASL_FLAGS = DEF(IASL_FLAGS) +*_CLANG38_AARCH64_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) +*_CLANG38_AARCH64_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS) + +*_CLANG38_AARCH64_CC_PATH = ENV(CLANG38_BIN)clang +*_CLANG38_AARCH64_ASM_PATH = ENV(CLANG38_BIN)clang +*_CLANG38_AARCH64_PP_PATH = ENV(CLANG38_BIN)clang +*_CLANG38_AARCH64_VFRPP_PATH = ENV(CLANG38_BIN)clang +*_CLANG38_AARCH64_ASLCC_PATH = ENV(CLANG38_BIN)clang +*_CLANG38_AARCH64_ASLPP_PATH = ENV(CLANG38_BIN)clang +*_CLANG38_AARCH64_DLINK_PATH = ENV(CLANG38_BIN)clang +*_CLANG38_AARCH64_ASLDLINK_PATH = ENV(CLANG38_BIN)clang + +*_CLANG38_AARCH64_SLINK_PATH = ENV(CLANG38_BIN)llvm-ar +*_CLANG38_AARCH64_RC_PATH = ENV(CLANG38_AARCH64_PREFIX)objcopy + +*_CLANG38_AARCH64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -fno-lto +*_CLANG38_AARCH64_ASLDLINK_FLAGS = DEF(CLANG38_AARCH64_TARGET) DEF(GCC_AARCH64_ASLDLINK_FLAGS) +*_CLANG38_AARCH64_ASM_FLAGS = DEF(GCC_ASM_FLAGS) DEF(CLANG38_AARCH64_TARGET) $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) -Qunused-arguments +*_CLANG38_AARCH64_DLINK_FLAGS = DEF(CLANG38_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000 +*_CLANG38_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 +*_CLANG38_AARCH64_DLINK2_FLAGS = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 +*_CLANG38_AARCH64_PLATFORM_FLAGS = +*_CLANG38_AARCH64_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANG38_AARCH64_TARGET) $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) +*_CLANG38_AARCH64_RC_FLAGS = DEF(GCC_AARCH64_RC_FLAGS) +*_CLANG38_AARCH64_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_AARCH64_TARGET) $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) +*_CLANG38_AARCH64_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_AARCH64_TARGET) +*_CLANG38_AARCH64_CC_XIPFLAGS = DEF(GCC_AARCH64_CC_XIPFLAGS) + + DEBUG_CLANG38_AARCH64_CC_FLAGS = DEF(CLANG38_AARCH64_CC_FLAGS) $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -flto -O1 + DEBUG_CLANG38_AARCH64_DLINK_FLAGS = DEF(CLANG38_AARCH64_DLINK_FLAGS) -flto -Wl,-O1 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64 + NOOPT_CLANG38_AARCH64_CC_FLAGS = DEF(CLANG38_AARCH64_CC_FLAGS) $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -O0 + NOOPT_CLANG38_AARCH64_DLINK_FLAGS = DEF(CLANG38_AARCH64_DLINK_FLAGS) +RELEASE_CLANG38_AARCH64_CC_FLAGS = DEF(CLANG38_AARCH64_CC_FLAGS) $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -flto -O3 +RELEASE_CLANG38_AARCH64_DLINK_FLAGS = DEF(CLANG38_AARCH64_DLINK_FLAGS) -flto -Wl,-O3 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64 + +#################################################################################### +# +# 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-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 +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) +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 +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 + +# +# +# 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) + +#################################################################################### +# +# RVCT Common +# +#################################################################################### + +DEFINE RVCT_ALL_ASM_FLAGS = --diag_suppress=1786 --diag_error=warning --apcs /interwork +DEFINE RVCT_ALL_CC_FLAGS = --c90 --no_autoinline --asm --gnu --apcs /interwork --signed_chars --no_unaligned_access --split_sections --enum_is_int --preinclude AutoGen.h --diag_suppress=186,188,1,111,68 --diag_warning 167 --diag_error=warning --diag_style=ide --protect_stack +DEFINE RVCT_ALL_DLINK_FLAGS = --no_scanlib --no_exceptions --datacompressor off --strict --symbols --diag_style=ide --no_legacyalign --scatter $(EDK_TOOLS_PATH)/Scripts/Rvct-Align32.sct + +#################################################################################### +# +# ARM RealView Tools - Windows +# +#################################################################################### +# RVCT - Tools from ARM + +*_RVCT_*_*_FAMILY = RVCT + +# +# Use default values, or override in DSC file +# +*_RVCT_ARM_ARCHCC_FLAGS = --thumb --fpu=softvfp +*_RVCT_ARM_ARCHASM_FLAGS = +*_RVCT_ARM_ARCHDLINK_FLAGS = +*_RVCT_ARM_PLATFORM_FLAGS = --cpu 7-A + + DEBUG_RVCT_ARM_DLINK_FLAGS = $(ARCHDLINK_FLAGS) DEF(RVCT_ALL_DLINK_FLAGS) --entry $(IMAGE_ENTRY_POINT) --map --list $(DEST_DIR_DEBUG)/$(BASE_NAME).map +RELEASE_RVCT_ARM_DLINK_FLAGS = $(ARCHDLINK_FLAGS) DEF(RVCT_ALL_DLINK_FLAGS) --entry $(IMAGE_ENTRY_POINT) --map --list $(DEST_DIR_DEBUG)/$(BASE_NAME).map + + +*_RVCT_ARM_ASM_FLAGS = $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) DEF(RVCT_ALL_ASM_FLAGS) +*_RVCT_ARM_PP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -E --preinclude AutoGen.h +*_RVCT_ARM_VFRPP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -E -DVFRCOMPILE --preinclude $(MODULE_NAME)StrDefs.h +*_RVCT_ARM_MAKE_PATH = nmake /NOLOGO +*_RVCT_ARM_SLINK_FLAGS = --partial -o + DEBUG_RVCT_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(RVCT_ALL_CC_FLAGS) -O1 -g +RELEASE_RVCT_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) --diag_suppress=550 DEF(RVCT_ALL_CC_FLAGS) -O2 + +################## +# ARM definitions +################## +*_RVCT_ARM_CC_PATH = ENV(RVCT_TOOLS_PATH)armcc +*_RVCT_ARM_SLINK_PATH = ENV(RVCT_TOOLS_PATH)armlink +*_RVCT_ARM_DLINK_PATH = ENV(RVCT_TOOLS_PATH)armlink +*_RVCT_ARM_ASM_PATH = ENV(RVCT_TOOLS_PATH)armasm +*_RVCT_ARM_PP_PATH = ENV(RVCT_TOOLS_PATH)armcc +*_RVCT_ARM_VFRPP_PATH = ENV(RVCT_TOOLS_PATH)armcc +*_RVCT_ARM_FROMELF_PATH = ENV(RVCT_TOOLS_PATH)fromelf + +#################################################################################### +# +# ARM RealView Tools - Linux +# +#################################################################################### +# RVCTLINUX - Tools from ARM in a Cygwin environment +*_RVCTLINUX_*_*_FAMILY = RVCT +*_RVCTLINUX_*_*_BUILDRULEFAMILY = RVCTLINUX + +*_RVCTLINUX_*_MAKE_PATH = make + +# +# Use default values, or override in DSC file +# +*_RVCTLINUX_ARM_ARCHCC_FLAGS = --thumb --fpu=softvfp +*_RVCTLINUX_ARM_ARCHASM_FLAGS = +*_RVCTLINUX_ARM_ARCHDLINK_FLAGS = +*_RVCTLINUX_ARM_PLATFORM_FLAGS = --cpu 7-A + +DEBUG_RVCTLINUX_ARM_DLINK_FLAGS = $(ARCHDLINK_FLAGS) DEF(RVCT_ALL_DLINK_FLAGS) --entry $(IMAGE_ENTRY_POINT) --map --list $(DEST_DIR_DEBUG)/$(BASE_NAME).map +RELEASE_RVCTLINUX_ARM_DLINK_FLAGS = $(ARCHDLINK_FLAGS) DEF(RVCT_ALL_DLINK_FLAGS) --entry $(IMAGE_ENTRY_POINT) --map --list $(DEST_DIR_DEBUG)/$(BASE_NAME).map + +*_RVCTLINUX_ARM_ASM_FLAGS = $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) DEF(RVCT_ALL_ASM_FLAGS) +*_RVCTLINUX_ARM_PP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -E +*_RVCTLINUX_ARM_VFRPP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -E -DVFRCOMPILE --preinclude $(MODULE_NAME)StrDefs.h +*_RVCTLINUX_ARM_SLINK_FLAGS = --partial -o + DEBUG_RVCTLINUX_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(RVCT_ALL_CC_FLAGS) -O1 -g +RELEASE_RVCTLINUX_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) --diag_suppress=550 DEF(RVCT_ALL_CC_FLAGS) -O2 + +################## +# ARM definitions +################## +*_RVCTLINUX_ARM_CC_PATH = ENV(RVCT_TOOLS_PATH)armcc +*_RVCTLINUX_ARM_SLINK_PATH = ENV(RVCT_TOOLS_PATH)armlink +*_RVCTLINUX_ARM_DLINK_PATH = ENV(RVCT_TOOLS_PATH)armlink +*_RVCTLINUX_ARM_ASM_PATH = ENV(RVCT_TOOLS_PATH)armasm +*_RVCTLINUX_ARM_PP_PATH = ENV(RVCT_TOOLS_PATH)armcc +*_RVCTLINUX_ARM_VFRPP_PATH = ENV(RVCT_TOOLS_PATH)armcc +*_RVCTLINUX_ARM_FROMELF_PATH = ENV(RVCT_TOOLS_PATH)fromelf + +#################################################################################### +# +# ARM RealView Tools - Cygwin +# +#################################################################################### +# ARMCYGWIN - Tools from ARM in a Cygwin environment + +*_RVCTCYGWIN_*_*_FAMILY = RVCT +*_RVCTCYGWIN_*_*_BUILDRULEFAMILY = RVCTCYGWIN + +*_RVCTCYGWIN_ARM_CCPATH_FLAG = ENV(RVCT_TOOLS_PATH)armcc +*_RVCTCYGWIN_ARM_SLINKPATH_FLAG = ENV(RVCT_TOOLS_PATH)armlink +*_RVCTCYGWIN_ARM_DLINKPATH_FLAG = ENV(RVCT_TOOLS_PATH)armlink +*_RVCTCYGWIN_ARM_ASMPATH_FLAG = ENV(RVCT_TOOLS_PATH)armasm +*_RVCTCYGWIN_ARM_PPPATH_FLAG = ENV(RVCT_TOOLS_PATH)armcc +*_RVCTCYGWIN_ARM_VFRPPPATH_FLAG = ENV(RVCT_TOOLS_PATH)armcc +*_RVCTCYGWIN_ARM_FROMELFPATH_FLAG = ENV(RVCT_TOOLS_PATH)fromelf + +# +# Use default values, or override in DSC file +# +*_RVCTCYGWIN_ARM_ARCHCC_FLAGS = --thumb --fpu=softvfp +*_RVCTCYGWIN_ARM_ARCHASM_FLAGS = +*_RVCTCYGWIN_ARM_ARCHDLINK_FLAGS = +*_RVCTCYGWIN_ARM_PLATFORM_FLAGS = --cpu 7-A + + DEBUG_RVCTCYGWIN_ARM_DLINK_FLAGS = "$(DLINKPATH_FLAG)" $(ARCHDLINK_FLAGS) DEF(RVCT_ALL_DLINK_FLAGS) --entry $(IMAGE_ENTRY_POINT) --map --list `cygpath -m $(DEST_DIR_DEBUG)/$(BASE_NAME).map` +RELEASE_RVCTCYGWIN_ARM_DLINK_FLAGS = "$(DLINKPATH_FLAG)" $(ARCHDLINK_FLAGS) DEF(RVCT_ALL_DLINK_FLAGS) --entry $(IMAGE_ENTRY_POINT) --map --list `cygpath -m $(DEST_DIR_DEBUG)/$(BASE_NAME).map` + +*_RVCTCYGWIN_ARM_ASM_FLAGS = "$(ASMPATH_FLAG)" $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) DEF(RVCT_ALL_ASM_FLAGS) +*_RVCTCYGWIN_ARM_PP_FLAGS = "$(CCPATH_FLAG)" $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -E +*_RVCTCYGWIN_ARM_VFRPP_FLAGS = "$(CCPATH_FLAG)" $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -E -DVFRCOMPILE --preinclude `cygpath -m $(MODULE_NAME)StrDefs.h` +*_RVCTCYGWIN_ARM_MAKE_PATH = make +*_RVCTCYGWIN_ARM_SLINK_FLAGS = "$(SLINKPATH_FLAG)" --partial -o + DEBUG_RVCTCYGWIN_ARM_CC_FLAGS = "$(CCPATH_FLAG)" $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(RVCT_ALL_CC_FLAGS) -O1 -g +RELEASE_RVCTCYGWIN_ARM_CC_FLAGS = "$(CCPATH_FLAG)" $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) --diag_suppress=550 DEF(RVCT_ALL_CC_FLAGS) -O2 + +################## +# ARM definitions +################## +*_RVCTCYGWIN_ARM_CC_PATH = ENV(WORKSPACE)/BaseTools/Bin/CYGWIN_NT-5.1-i686/armcc_wrapper.py +*_RVCTCYGWIN_ARM_SLINK_PATH = ENV(WORKSPACE)/BaseTools/Bin/CYGWIN_NT-5.1-i686/armcc_wrapper.py +*_RVCTCYGWIN_ARM_DLINK_PATH = ENV(WORKSPACE)/BaseTools/Bin/CYGWIN_NT-5.1-i686/armcc_wrapper.py +*_RVCTCYGWIN_ARM_ASM_PATH = ENV(WORKSPACE)/BaseTools/Bin/CYGWIN_NT-5.1-i686/armcc_wrapper.py +*_RVCTCYGWIN_ARM_PP_PATH = ENV(WORKSPACE)/BaseTools/Bin/CYGWIN_NT-5.1-i686/armcc_wrapper.py +*_RVCTCYGWIN_ARM_VFRPP_PATH = ENV(WORKSPACE)/BaseTools/Bin/CYGWIN_NT-5.1-i686/armcc_wrapper.py +*_RVCTCYGWIN_ARM_FROMELF_PATH = ENV(WORKSPACE)/BaseTools/Bin/CYGWIN_NT-5.1-i686/armcc_wrapper.py + +################# +# 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 |