summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
l---------BaseTools/Bin/Darwin1
l---------BaseTools/Bin/PosixLike/BuildEnv1
l---------BaseTools/Bin/PosixLike/GenFw1
-rwxr-xr-xBaseTools/Bin/PosixLike/RunBinToolFromBuildDir27
-rwxr-xr-xBaseTools/Bin/PosixLike/RunToolFromSource21
l---------BaseTools/Bin/PosixLike/build1
-rwxr-xr-xBaseTools/Bin/Win32/BootSectImage.exebin0 -> 65536 bytes
-rwxr-xr-xBaseTools/Bin/Win32/EfiLdrImage.exebin0 -> 65536 bytes
-rwxr-xr-xBaseTools/Bin/Win32/EfiRom.exebin0 -> 94208 bytes
-rw-r--r--BaseTools/Bin/Win32/Fpd2Dsc.exebin0 -> 1408700 bytes
-rwxr-xr-xBaseTools/Bin/Win32/GenBootSector.exebin0 -> 49152 bytes
-rwxr-xr-xBaseTools/Bin/Win32/GenFds.exebin0 -> 1287309 bytes
-rwxr-xr-xBaseTools/Bin/Win32/GenFfs.exebin0 -> 77824 bytes
-rwxr-xr-xBaseTools/Bin/Win32/GenFv.exebin0 -> 126976 bytes
-rwxr-xr-xBaseTools/Bin/Win32/GenFw.exebin0 -> 90112 bytes
-rwxr-xr-xBaseTools/Bin/Win32/GenPage.exebin0 -> 53248 bytes
-rwxr-xr-xBaseTools/Bin/Win32/GenSec.exebin0 -> 94208 bytes
-rwxr-xr-xBaseTools/Bin/Win32/GenVtf.exebin0 -> 90112 bytes
-rw-r--r--BaseTools/Bin/Win32/MigrationMsa2Inf.exebin0 -> 1367026 bytes
-rwxr-xr-xBaseTools/Bin/Win32/PcdSyntaxUpdate.exebin0 -> 558789 bytes
-rwxr-xr-xBaseTools/Bin/Win32/Spd2Dec.exebin0 -> 1329333 bytes
-rwxr-xr-xBaseTools/Bin/Win32/Split.exebin0 -> 65536 bytes
-rwxr-xr-xBaseTools/Bin/Win32/TargetTool.exebin0 -> 559089 bytes
-rwxr-xr-xBaseTools/Bin/Win32/TianoCompress.exebin0 -> 86016 bytes
-rwxr-xr-xBaseTools/Bin/Win32/Trim.exebin0 -> 551033 bytes
-rwxr-xr-xBaseTools/Bin/Win32/VfrCompile.exebin0 -> 290816 bytes
-rw-r--r--BaseTools/Bin/Win32/_hashlib.pydbin0 -> 323584 bytes
-rw-r--r--BaseTools/Bin/Win32/_socket.pydbin0 -> 53248 bytes
-rw-r--r--BaseTools/Bin/Win32/_ssl.pydbin0 -> 655360 bytes
-rwxr-xr-xBaseTools/Bin/Win32/antlr.exebin0 -> 495616 bytes
-rwxr-xr-xBaseTools/Bin/Win32/build.exebin0 -> 1499848 bytes
-rwxr-xr-xBaseTools/Bin/Win32/dlg.exebin0 -> 131072 bytes
-rw-r--r--BaseTools/Bin/Win32/pyexpat.pydbin0 -> 135168 bytes
-rwxr-xr-xBaseTools/Bin/Win32/python25.dllbin0 -> 2113536 bytes
-rwxr-xr-xBaseTools/Bin/Win32/select.pydbin0 -> 7680 bytes
-rwxr-xr-xBaseTools/BuildEnv.py274
-rw-r--r--BaseTools/ChangeLog.txt308
-rw-r--r--BaseTools/Conf/FrameworkDatabase.template31
-rw-r--r--BaseTools/Conf/ReadMe.txt9
-rw-r--r--BaseTools/Conf/XMLSchema/FarManifest.xsd174
-rw-r--r--BaseTools/Conf/XMLSchema/FrameworkDataAttributes.xsd180
-rw-r--r--BaseTools/Conf/XMLSchema/FrameworkDataElements.xsd728
-rw-r--r--BaseTools/Conf/XMLSchema/FrameworkDataTypes.xsd581
-rw-r--r--BaseTools/Conf/XMLSchema/FrameworkHeaders.xsd93
-rw-r--r--BaseTools/Conf/XMLSchema/NamingConvention.xsd186
-rw-r--r--BaseTools/Conf/XMLSchema/SurfaceArea.xsd82
-rw-r--r--BaseTools/Conf/build_rule.template301
-rw-r--r--BaseTools/Conf/target.template71
-rw-r--r--BaseTools/Conf/tools_def.template749
-rw-r--r--BaseTools/ConfTemplates/Darwin/build_rule.txt300
-rw-r--r--BaseTools/ConfTemplates/Darwin/target.txt71
-rw-r--r--BaseTools/ConfTemplates/Darwin/tools_def.txt659
-rw-r--r--BaseTools/ReadMe.txt164
-rwxr-xr-xBaseTools/toolsetup.bat132
54 files changed, 5145 insertions, 0 deletions
diff --git a/BaseTools/Bin/Darwin b/BaseTools/Bin/Darwin
new file mode 120000
index 0000000000..6de8e478db
--- /dev/null
+++ b/BaseTools/Bin/Darwin
@@ -0,0 +1 @@
+PosixLike \ No newline at end of file
diff --git a/BaseTools/Bin/PosixLike/BuildEnv b/BaseTools/Bin/PosixLike/BuildEnv
new file mode 120000
index 0000000000..af6c748b1a
--- /dev/null
+++ b/BaseTools/Bin/PosixLike/BuildEnv
@@ -0,0 +1 @@
+RunToolFromSource \ No newline at end of file
diff --git a/BaseTools/Bin/PosixLike/GenFw b/BaseTools/Bin/PosixLike/GenFw
new file mode 120000
index 0000000000..0993e62324
--- /dev/null
+++ b/BaseTools/Bin/PosixLike/GenFw
@@ -0,0 +1 @@
+RunBinToolFromBuildDir \ No newline at end of file
diff --git a/BaseTools/Bin/PosixLike/RunBinToolFromBuildDir b/BaseTools/Bin/PosixLike/RunBinToolFromBuildDir
new file mode 100755
index 0000000000..c1368925d6
--- /dev/null
+++ b/BaseTools/Bin/PosixLike/RunBinToolFromBuildDir
@@ -0,0 +1,27 @@
+#!/usr/bin/env bash
+
+if [ ! $WORKSPACE=="" ]
+then
+ echo WORKSPACE environment variable must be set
+elif [ -e $WORKSPACE/Conf/BaseToolsCBinaries ]
+then
+ $WORKSPACE/Conf/BaseToolsCBinaries/`basename $0`
+elif [ -e $WORKSPACE/Conf/BaseToolsSource ]
+then
+ if [ ! -e $WORKSPACE/Conf/BaseToolsSource/Source/C/bin/`basename $0` ]
+ then
+ echo BaseTools C Tool binary was not found \(`basename $0`\)
+ echo You may need to run:
+ echo " make -C $WORKSPACE/Conf/BaseToolsSource/Source/C"
+ else
+ $WORKSPACE/Conf/BaseToolsSource/Source/C/bin/`basename $0` $*
+ fi
+else
+ echo Unable to find the real \'`basename $0`\' to run
+ echo A symbolic link is needed under
+ echo " $WORKSPACE/Conf"
+ echo This message was printed by
+ echo " $0"
+ exit -1
+fi
+
diff --git a/BaseTools/Bin/PosixLike/RunToolFromSource b/BaseTools/Bin/PosixLike/RunToolFromSource
new file mode 100755
index 0000000000..25e5c84dbe
--- /dev/null
+++ b/BaseTools/Bin/PosixLike/RunToolFromSource
@@ -0,0 +1,21 @@
+#!/usr/bin/env bash
+
+if [ ! $WORKSPACE=="" ]
+then
+ echo WORKSPACE environment variable must be set
+elif [ -e $WORKSPACE/Conf/BaseToolsFrozenPython ]
+then
+ $WORKSPACE/Conf/BaseToolsFrozenPython/`basename $0`
+elif [ -e $WORKSPACE/Conf/BaseToolsSource ]
+then
+ PYTHONPATH=$WORKSPACE/Conf/BaseToolsSource/Source/Python \
+ python $WORKSPACE/Conf/BaseToolsSource/Source/Python/`basename $0`/`basename $0`.py $*
+else
+ echo Unable to find the real \'`basename $0`\' to run
+ echo A symbolic link is needed under
+ echo " $WORKSPACE/Conf"
+ echo This message was printed by
+ echo " $0"
+ exit -1
+fi
+
diff --git a/BaseTools/Bin/PosixLike/build b/BaseTools/Bin/PosixLike/build
new file mode 120000
index 0000000000..af6c748b1a
--- /dev/null
+++ b/BaseTools/Bin/PosixLike/build
@@ -0,0 +1 @@
+RunToolFromSource \ No newline at end of file
diff --git a/BaseTools/Bin/Win32/BootSectImage.exe b/BaseTools/Bin/Win32/BootSectImage.exe
new file mode 100755
index 0000000000..0ccd05253f
--- /dev/null
+++ b/BaseTools/Bin/Win32/BootSectImage.exe
Binary files differ
diff --git a/BaseTools/Bin/Win32/EfiLdrImage.exe b/BaseTools/Bin/Win32/EfiLdrImage.exe
new file mode 100755
index 0000000000..37ea7e066c
--- /dev/null
+++ b/BaseTools/Bin/Win32/EfiLdrImage.exe
Binary files differ
diff --git a/BaseTools/Bin/Win32/EfiRom.exe b/BaseTools/Bin/Win32/EfiRom.exe
new file mode 100755
index 0000000000..5d5162237e
--- /dev/null
+++ b/BaseTools/Bin/Win32/EfiRom.exe
Binary files differ
diff --git a/BaseTools/Bin/Win32/Fpd2Dsc.exe b/BaseTools/Bin/Win32/Fpd2Dsc.exe
new file mode 100644
index 0000000000..383b330ab6
--- /dev/null
+++ b/BaseTools/Bin/Win32/Fpd2Dsc.exe
Binary files differ
diff --git a/BaseTools/Bin/Win32/GenBootSector.exe b/BaseTools/Bin/Win32/GenBootSector.exe
new file mode 100755
index 0000000000..bbc2ae19c4
--- /dev/null
+++ b/BaseTools/Bin/Win32/GenBootSector.exe
Binary files differ
diff --git a/BaseTools/Bin/Win32/GenFds.exe b/BaseTools/Bin/Win32/GenFds.exe
new file mode 100755
index 0000000000..d805f15790
--- /dev/null
+++ b/BaseTools/Bin/Win32/GenFds.exe
Binary files differ
diff --git a/BaseTools/Bin/Win32/GenFfs.exe b/BaseTools/Bin/Win32/GenFfs.exe
new file mode 100755
index 0000000000..96fc9b21a8
--- /dev/null
+++ b/BaseTools/Bin/Win32/GenFfs.exe
Binary files differ
diff --git a/BaseTools/Bin/Win32/GenFv.exe b/BaseTools/Bin/Win32/GenFv.exe
new file mode 100755
index 0000000000..875611355f
--- /dev/null
+++ b/BaseTools/Bin/Win32/GenFv.exe
Binary files differ
diff --git a/BaseTools/Bin/Win32/GenFw.exe b/BaseTools/Bin/Win32/GenFw.exe
new file mode 100755
index 0000000000..2ff8a00ee7
--- /dev/null
+++ b/BaseTools/Bin/Win32/GenFw.exe
Binary files differ
diff --git a/BaseTools/Bin/Win32/GenPage.exe b/BaseTools/Bin/Win32/GenPage.exe
new file mode 100755
index 0000000000..2fba9fba69
--- /dev/null
+++ b/BaseTools/Bin/Win32/GenPage.exe
Binary files differ
diff --git a/BaseTools/Bin/Win32/GenSec.exe b/BaseTools/Bin/Win32/GenSec.exe
new file mode 100755
index 0000000000..6b302d14d9
--- /dev/null
+++ b/BaseTools/Bin/Win32/GenSec.exe
Binary files differ
diff --git a/BaseTools/Bin/Win32/GenVtf.exe b/BaseTools/Bin/Win32/GenVtf.exe
new file mode 100755
index 0000000000..3857695b81
--- /dev/null
+++ b/BaseTools/Bin/Win32/GenVtf.exe
Binary files differ
diff --git a/BaseTools/Bin/Win32/MigrationMsa2Inf.exe b/BaseTools/Bin/Win32/MigrationMsa2Inf.exe
new file mode 100644
index 0000000000..aeff511e45
--- /dev/null
+++ b/BaseTools/Bin/Win32/MigrationMsa2Inf.exe
Binary files differ
diff --git a/BaseTools/Bin/Win32/PcdSyntaxUpdate.exe b/BaseTools/Bin/Win32/PcdSyntaxUpdate.exe
new file mode 100755
index 0000000000..30a7bc1e7a
--- /dev/null
+++ b/BaseTools/Bin/Win32/PcdSyntaxUpdate.exe
Binary files differ
diff --git a/BaseTools/Bin/Win32/Spd2Dec.exe b/BaseTools/Bin/Win32/Spd2Dec.exe
new file mode 100755
index 0000000000..822aab9e38
--- /dev/null
+++ b/BaseTools/Bin/Win32/Spd2Dec.exe
Binary files differ
diff --git a/BaseTools/Bin/Win32/Split.exe b/BaseTools/Bin/Win32/Split.exe
new file mode 100755
index 0000000000..ecaa2241b8
--- /dev/null
+++ b/BaseTools/Bin/Win32/Split.exe
Binary files differ
diff --git a/BaseTools/Bin/Win32/TargetTool.exe b/BaseTools/Bin/Win32/TargetTool.exe
new file mode 100755
index 0000000000..10428a723c
--- /dev/null
+++ b/BaseTools/Bin/Win32/TargetTool.exe
Binary files differ
diff --git a/BaseTools/Bin/Win32/TianoCompress.exe b/BaseTools/Bin/Win32/TianoCompress.exe
new file mode 100755
index 0000000000..468b304b32
--- /dev/null
+++ b/BaseTools/Bin/Win32/TianoCompress.exe
Binary files differ
diff --git a/BaseTools/Bin/Win32/Trim.exe b/BaseTools/Bin/Win32/Trim.exe
new file mode 100755
index 0000000000..a61960d8a7
--- /dev/null
+++ b/BaseTools/Bin/Win32/Trim.exe
Binary files differ
diff --git a/BaseTools/Bin/Win32/VfrCompile.exe b/BaseTools/Bin/Win32/VfrCompile.exe
new file mode 100755
index 0000000000..ec1cede839
--- /dev/null
+++ b/BaseTools/Bin/Win32/VfrCompile.exe
Binary files differ
diff --git a/BaseTools/Bin/Win32/_hashlib.pyd b/BaseTools/Bin/Win32/_hashlib.pyd
new file mode 100644
index 0000000000..3d9506400b
--- /dev/null
+++ b/BaseTools/Bin/Win32/_hashlib.pyd
Binary files differ
diff --git a/BaseTools/Bin/Win32/_socket.pyd b/BaseTools/Bin/Win32/_socket.pyd
new file mode 100644
index 0000000000..fa477db419
--- /dev/null
+++ b/BaseTools/Bin/Win32/_socket.pyd
Binary files differ
diff --git a/BaseTools/Bin/Win32/_ssl.pyd b/BaseTools/Bin/Win32/_ssl.pyd
new file mode 100644
index 0000000000..91349c5315
--- /dev/null
+++ b/BaseTools/Bin/Win32/_ssl.pyd
Binary files differ
diff --git a/BaseTools/Bin/Win32/antlr.exe b/BaseTools/Bin/Win32/antlr.exe
new file mode 100755
index 0000000000..1d70ecb1e4
--- /dev/null
+++ b/BaseTools/Bin/Win32/antlr.exe
Binary files differ
diff --git a/BaseTools/Bin/Win32/build.exe b/BaseTools/Bin/Win32/build.exe
new file mode 100755
index 0000000000..7dbec90b58
--- /dev/null
+++ b/BaseTools/Bin/Win32/build.exe
Binary files differ
diff --git a/BaseTools/Bin/Win32/dlg.exe b/BaseTools/Bin/Win32/dlg.exe
new file mode 100755
index 0000000000..e992f38eaf
--- /dev/null
+++ b/BaseTools/Bin/Win32/dlg.exe
Binary files differ
diff --git a/BaseTools/Bin/Win32/pyexpat.pyd b/BaseTools/Bin/Win32/pyexpat.pyd
new file mode 100644
index 0000000000..499507f4a5
--- /dev/null
+++ b/BaseTools/Bin/Win32/pyexpat.pyd
Binary files differ
diff --git a/BaseTools/Bin/Win32/python25.dll b/BaseTools/Bin/Win32/python25.dll
new file mode 100755
index 0000000000..f223ccd251
--- /dev/null
+++ b/BaseTools/Bin/Win32/python25.dll
Binary files differ
diff --git a/BaseTools/Bin/Win32/select.pyd b/BaseTools/Bin/Win32/select.pyd
new file mode 100755
index 0000000000..70aae3a266
--- /dev/null
+++ b/BaseTools/Bin/Win32/select.pyd
Binary files differ
diff --git a/BaseTools/BuildEnv.py b/BaseTools/BuildEnv.py
new file mode 100755
index 0000000000..7b3d192a0a
--- /dev/null
+++ b/BaseTools/BuildEnv.py
@@ -0,0 +1,274 @@
+## @file BuildEnv.py
+# Initialize Environment for building
+#
+# Copyright (c) 2007, Intel Corporation
+#
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+
+##
+# Import Modules
+#
+import os
+import os.path
+import pickle
+import shutil
+import sys
+
+from optparse import OptionParser
+
+# Version and Copyright
+VersionNumber = "0.01"
+__version__ = "%prog Version " + VersionNumber
+__copyright__ = "Copyright (c) 2007, Intel Corporation All rights reserved."
+
+class SetupBuildEnvironmentApp:
+
+ def __init__(self):
+ (self.Opt, self.Args) = self.ProcessCommandLine()
+ self.SetupDefaults()
+ self.DetermineEnvironment()
+ self.CopyTemplates()
+ self.WriteEnvironmentConfigurationScript()
+
+ def SetupDefaults(self):
+ self.itemsToConfigure = (
+ 'compiler',
+ 'compiler-prefix',
+ 'templates and Conf directory',
+ )
+
+ self.defaults = {
+ 'compiler': {
+ 'options': ('gcc', 'icc'),
+ 'default': 'gcc',
+ },
+ 'compiler-prefix': {
+ 'options': ('/usr/bin', '/usr/bin/x86_64-pc-mingw32-'),
+ 'freeform': True,
+ },
+ 'templates and Conf directory': {
+ 'options': (
+ 'copy once (no-overwrite)',
+ 'copy with overwrite',
+ 'symlink to templates',
+ 'do nothing',
+ ),
+ 'default': 'copy once (no-overwrite)',
+ },
+ }
+
+ def ProcessCommandLine(self):
+ Parser = OptionParser(description=__copyright__,version=__version__,prog="Tools/BuildEnv")
+ Parser.add_option("-q", "--quiet", action="store_true", type=None, help="Disable all messages except FATAL ERRORS.")
+ Parser.add_option("-v", "--verbose", action="store_true", type=None, help="Turn on verbose output with informational messages printed, "\
+ "including library instances selected, final dependency expression, "\
+ "and warning messages, etc.")
+ Parser.add_option("-d", "--debug", action="store", type="int", help="Enable debug messages at specified level.")
+
+ if os.environ.has_key('WORKSPACE'):
+ default = os.environ['WORKSPACE']
+ else:
+ default = os.getcwd()
+ Parser.add_option("--workspace", action="store", type="string", help="Base director of tree to configure", default=default)
+
+ (Opt, Args)=Parser.parse_args()
+ Parser.print_version()
+
+ return (Opt, Args)
+
+ def DetermineEnvironment(self):
+ confFilename = os.path.join(os.path.expanduser('~'), '.edk-build-env.pickle')
+ try:
+ confFile = open(confFilename, 'r')
+ conf = pickle.load(confFile)
+ confFile.close()
+ except Exception:
+ conf = {}
+ self.conf = conf
+
+ for item in self.itemsToConfigure:
+ if not conf.has_key(item):
+ self.AskForValueOfOption(item)
+
+ while True:
+ self.SummarizeCurrentState()
+
+ if not self.Opt.quiet:
+ response = raw_input('Would you like to change anything? (default=no): ')
+ response = response.strip()
+ else:
+ response = ''
+
+ if response.lower() in ('', 'n', 'no'):
+ break
+
+ for item in self.itemsToConfigure:
+ self.AskForValueOfOption(item)
+
+ confFile = open(confFilename, 'w')
+ pickle.dump(conf, confFile)
+ confFile.close()
+
+ def AskCompiler(self):
+ self.AskForValueOfOption('compiler')
+
+ def AskCompilerPrefix(self):
+ self.AskForValueOfOption('compiler-prefix')
+
+ def AskForValueOfOption(self, option):
+ options = self.defaults[option]['options']
+ if self.defaults[option].has_key('default'):
+ default = self.defaults[option]['default']
+ else:
+ default = None
+ if self.defaults[option].has_key('freeform'):
+ freeform = self.defaults[option]['freeform']
+ else:
+ freeform = False
+ self.AskForValue(option, options, default, freeform)
+
+ def AskForValue(self, index, options, default=None, freeform=False):
+ conf = self.conf
+ if conf.has_key(index):
+ default = conf[index]
+ options = list(options) # in case options came in as a tuple
+ assert((default == '') or (default is None) or ('' not in options))
+ if (default is not None) and (default not in options):
+ options.append(default)
+ if (freeform and ('' not in options)):
+ options.append('')
+ options.sort()
+ while True:
+ print
+ if len(options) > 0:
+ print 'Options for', index
+ for i in range(len(options)):
+ print ' %d.' % (i + 1),
+ if options[i] != '':
+ print options[i],
+ else:
+ print '(empty string)',
+ if options[i] == default:
+ print '(default)'
+ else:
+ print
+
+ if len(options) > 0:
+ prompt = 'Select number or type value: '
+ else:
+ prompt = 'Type value for %s: ' % index
+ response = raw_input(prompt)
+ response = response.strip()
+
+ if response.isdigit():
+ response = int(response)
+ if response > len(options):
+ print 'ERROR: Invalid number selection!'
+ continue
+ response = options[response - 1]
+ elif (response == '') and (default is not None):
+ response = default
+
+ if (not freeform) and (response not in options):
+ print 'ERROR: Invalid selection! (must be from list)'
+ continue
+
+ break
+
+ conf[index] = response
+ print 'Using', conf[index], 'for', index
+
+ def SummarizeCurrentState(self):
+ print
+ print 'Current configuration:'
+ conf = self.conf
+ for item in self.itemsToConfigure:
+ value = conf[item]
+ if value == '': value = '(empty string)'
+ print ' ', item, '->', value
+
+ def CopyTemplates(self):
+ todo = self.conf['templates and Conf directory']
+ workspace = os.path.realpath(self.Opt.workspace)
+ templatesDir = \
+ os.path.join(workspace, 'Tools', 'BaseTools', 'ConfTemplates', sys.platform.title())
+ confDir = \
+ os.path.join(workspace, 'Conf')
+ print
+ print 'Templates & Conf directory'
+ print ' Templates dir:', self.RelativeToWorkspace(templatesDir)
+ for filename in os.listdir(templatesDir):
+ if filename.startswith('.'): continue
+
+ srcFilename = os.path.join(templatesDir, filename)
+ destFilename = os.path.join(confDir, filename)
+ print ' ', self.RelativeToWorkspace(destFilename),
+
+ if todo == 'copy once (no-overwrite)':
+ if os.path.exists(destFilename):
+ print '[skipped, already exists]'
+ else:
+ shutil.copy(srcFilename, destFilename)
+ print '[copied]'
+ elif todo == 'copy with overwrite':
+ overwrite = ''
+ if os.path.exists(destFilename):
+ os.remove(destFilename)
+ overwrite = ', overwritten'
+ shutil.copy(srcFilename, destFilename)
+ print '[copied' + overwrite + ']'
+ elif todo == 'symlink to templates':
+ if os.path.exists(destFilename):
+ if not os.path.islink(destFilename):
+ raise Exception, '%s is not a symlink! (remove file if you want to start using symlinks)' % \
+ (self.RelativeToWorkspace(destFilename))
+ os.remove(destFilename)
+ os.symlink(srcFilename, destFilename)
+ print '[symlinked]'
+ elif todo == 'do nothing':
+ print '[skipped by user request]'
+ else:
+ raise Exception, 'Unknown action for templates&conf: %s' % todo
+
+ def WriteEnvironmentConfigurationScript(self):
+ workspace = os.path.realpath(self.Opt.workspace)
+ scriptFilename = os.path.join(workspace, 'Conf', 'BuildEnv.sh')
+ print
+ print 'Storing environment configuration into',
+ print self.RelativeToWorkspace(scriptFilename)
+ script = open(scriptFilename, 'w')
+
+ print >> script, 'export WORKSPACE="%s"' % workspace
+ print >> script, 'export TOOLCHAIN="%s"' % self.conf['compiler']
+ print >> script, 'export EDK_CC_PATH_PREFIX="%s"' % self.conf['compiler-prefix']
+
+ #
+ # Change PATH variable
+ #
+ newPath = os.environ['PATH'].split(os.path.pathsep)
+ binDir = \
+ os.path.join(workspace, 'Tools', 'BaseTools', 'Bin', sys.platform.title())
+ if binDir not in newPath:
+ newPath.append(binDir)
+ newPath = os.path.pathsep.join(newPath)
+ print >> script, 'export PATH=%s' % newPath
+
+ script.close()
+
+ def RelativeToWorkspace(self, path):
+ workspace = os.path.realpath(self.Opt.workspace)
+ for prefix in (workspace + os.path.sep, workspace):
+ if path.startswith(prefix):
+ return path[len(prefix):]
+
+
+if __name__ == '__main__':
+ SetupBuildEnvironmentApp()
+
diff --git a/BaseTools/ChangeLog.txt b/BaseTools/ChangeLog.txt
new file mode 100644
index 0000000000..752d110ea4
--- /dev/null
+++ b/BaseTools/ChangeLog.txt
@@ -0,0 +1,308 @@
+##########################################################################################
+!!!!!!!!!!!!!!!!! Notes for this ChangeLog.txt !!!!!!!!!!!!!!!!!
+
+This log file is used to record two kinds of important information:
+ a) "Non-Compatible Changes": all non-compatible changes should be recorded. These info
+ will help the package user to merge this package; and some non-compatible changes
+ can also be added into release notes as news features when we release this package.
+ Normally Non-Compatible Changes contains the following types:
+ 1) Package's external services were changed/updated
+ 2) Package's common .h file is renamed, deleted, or the file path is changed.
+ 3) The definition of package's common data structure is changed
+ ...
+
+ b) "Important Compatible Changes": some important compatible changes can aslo be recorded
+ in this file, and we can add these updating into release notes when we release this
+ package.
+
+Non-Compatible and Compatible example format:
+==========================================================================================
+EDK_0010: Non-Compatible: owner
+
+ Class_HFile: PPI A of MdePkg has been removed.
+
+ Code Change :
+ 1) Removed the .h file: MdePkg\Include\Ppi\A.h
+
+ Possible Impacts:
+ 1) All modules that used this PPI A should be updated.
+
+==========================================================================================
+EDK_0000: Compatible: owner
+
+ Class_BuildTool: with the EDK_0000 build.exe, the build performance is enhanced great.
+
+ Code Change :
+ 1) BaseTools\Bin\Win32\build.exe
+
+!!!!!!!!!!!!!!!!!! End of Notes !!!!!!!!!!!!!!!!!!
+##########################################################################################
+
+==========================================================================================
+EDK_4096: Non-Compatible: jwang36
+
+ Class_BuildTool:
+ 1) Removed the calling of vsvars32.bat in edksetup.bat, unless
+ "--nt32" switch is used.
+ 2) Added MAKE command in tools_def.txt. This is used to locate where
+ the nmake.exe or make.exe is because it will not be in PATH any more.
+ 3) Removed the calling of vsvars32.bat in toolsetup.bat.
+ 4) Solved the hang issue of build.exe when error occurred or Ctrl+C is
+ pressed.
+ 5) Passed "-v/-d/-q" command line option to GenFds.exe in makefile if
+ it's used by build.exe.
+
+ Code Change :
+ 1) BaseTools/Bin/Win32/build.exe
+ 2) BaseTools/Bin/Win32/GenFds.exe
+ 3) BaseTools/Conf/tools_def.template
+ 4) BaseTools/toolsetup.bat
+ 5) edksetup.bat
+
+ Possible Impacts:
+ 1) Nt32Pkg build needs to run vsvars32.bat before edksetup.bat or run
+ edksetup.bat with "--nt32" option, like
+
+ edksetup.bat --nt32 newbuild
+
+ 2) $(WORKSPACE)/Conf/tools_def.txt must be deleted before running
+ edksetup.bat because of new tools_def.template. Otherwise the
+ build.exe cannot find the nmake.exe to call.
+
+==========================================================================================
+EDK_3947: Compatible: jwang36
+
+ Class_BuildTool:
+ 1) Improved spawn mode (multi-thread) build performance (build -s)
+ 2) Changed the error/debug/warning message format
+ 3) Added "--log" command line option to support storing log in file
+
+ Code Change :
+ 1) BaseTools/Bin/Win32/build.exe
+
+
+==========================================================================================
+EDK_3936: Compatible: klu2
+
+ Class_BuildTool:
+ 1) The first parameter of PEIM's entry point in autogen.c has been changed to
+ EFI_PEI_FILE_HANDLE
+
+ Code Change :
+ 1) BaseTools/Bin/Win32/build.exe
+
+==========================================================================================
+EDK_3926: Compatible: jlin16
+
+ Class_BuildTool:
+ 1) Added support of Capsule generation from FDF file.
+
+ Code Change :
+ 1) BaseTools/Bin/Win32/build.exe
+ 2) BaseTools/Bin/Win32/GenFds.exe
+
+ Possible Impacts:
+ 1) To generate capsule, insert [Capsule] section after [FV] sections and specifying
+ what FV will be put into capsule, For example:
+ [Capsule.Fob]
+ CAPSULE_GUID = 3B6686BD-0D76-4030-B70E-B5519E2FC5A0
+ CAPSULE_FLAG = PersistAcrossReset
+ FV = BiosUpdate
+
+==========================================================================================
+EDK_3911: Compatible: jlin16
+
+ Class_BuildTool:
+ 1) Added support of Apriori file generation from FDF file.
+ 2) Added support of INF that describes binary files to put binary into FV.
+ 3) Fixed single FV/FD generation error when specifying -i/-r option in GenFds.
+
+
+ Code Change :
+ 1) BaseTools/Bin/Win32/build.exe
+ 2) BaseTools/Bin/Win32/GenFds.exe
+
+ Possible Impacts:
+ 1) To generate Apriori file in FV, insert APRIORI statement just before the INF or
+ FILE statement list of the FV, For example:
+ APRIORI PEI {
+ INF MdeModulePkg/Universal/PCD/Pei/Pcd.inf
+ FILE PEIM = B7A5041A-78BA-49e3-B73B-54C757811FB6 {
+ SECTION PE32 = MyBinPkg\bin\ia32\PeimAfterPcd.efi
+ }
+ INF IntelFrameworkModulePkg/Universal/StatusCode/Pei/PeiStatusCode.inf
+ }
+ 2) To add binary file described by INF file into FV, only insert the INF statement
+ into the INF statements list of that FV, like this:
+
+ INF RuleOverride=Test MdeModulePkg/Logo/Logo.inf
+
+ Specifying how to process the binary file by defining corresponding Rule like this:
+ [Rule.Common.Base.Test]
+ FILE FREEFORM = $(NAMED_GUID) {
+ COMPRESS PI_STD {
+ GUIDED {
+ RAW BIN |.bmp
+ }
+ }
+ }
+
+==========================================================================================
+EDK_3832: Non-Compatible: jwang36
+
+ Class_BuildTool:
+ 1) Added support of MACRO in tools_def.txt
+ 2) Merged PATH and NAME attributes in tools_def.txt
+ 3) Changed DPATH attribute to DLL in tools_def.txt
+ 4) Removed SPATH attribute in tools_def.txt
+ 5) Added support for library instance without library class
+ 6) Fixed the issue in Trim tool which zero file will be generated if the trimmed
+ file has not line directive
+
+ Code Change :
+ 1) BaseTools/Bin/Win32/build.exe
+ 2) BaseTools/Bin/Win32/GenFds.exe
+ 3) BaseTools/Bin/Win32/Trim.exe
+ 4) BaseTools/Conf/tools_def.template
+
+ Possible Impacts:
+ 1) All platforms and modules build
+
+==========================================================================================
+EDK_3801: Compatible: jwang36
+
+ Class_BuildConfiguration: Added makefile as dependency for "Dynamic-Library-File" to
+ solve the incremental build issue occurred when there's library changes
+
+ Code Change :
+ 1) BaseTools/Conf/build_rule.template
+
+==========================================================================================
+EDK_3800: Compatible: lgao4
+
+ Class_BuildTool: Update EfiRom tool to fix checksum and PCI3.0 data structure
+
+ Code Change :
+ 1) BaseTools/Bin/Win32/EfiRom.exe
+
+==========================================================================================
+EDK_3795: Compatible: htao
+
+ Class_BuildTool: GenVtf tool open/write file with "r+b"/"w+b" attribute, but this cause
+ the RO attribute of the file changed. Fix this issue by changing
+ "r+b"/"w+b" to "rb"/"wb".
+
+ Code Change :
+ 1) BaseTools/Bin/Win32/GenVtf.exe
+
+==========================================================================================
+EDK_3791: Compatible: jlin16
+
+ Class_BuildTool:
+ 1) use '#' to indicate flash generation progress.
+ 2) use -v to switch on detail output messages.
+
+ Code Change :
+ 1) BaseTools/Bin/Win32/GenFds.exe
+
+==========================================================================================
+EDK_3789: Non-Compatible: lgao4
+
+ Class_BuildTool: support new Rules format and PCD format defined in FDF file
+
+ Code Change :
+ 1) BaseTools/Bin/Win32/build.exe
+ 2) BaseTools/Bin/Win32/GenFds.exe
+
+ Possible Impacts:
+ 1) All platform's FDF file, if any, must be changed to new format.
+ a) PCD format is changed from old PcdName to new PcdTokenSpaceGuid.PcdName,
+ for example PcdWinNtFdBaseAddress in old FDF file will be replaced
+ by gEfiNt32PkgTokenSpaceGuid.PcdWinNtFdBaseAddres.
+ b) Rule format adds binary file type and file postfix name support,
+ and doesn't require the full file path. Examples for Peim and AcpiTable module:
+ Old Peim Rule:
+ [Rule.Common.PEIM]
+ FILE PEIM = $(NAMED_GUID) {
+ PEI_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).Depex
+ PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
+ UI Optional $(MODULE_NAME)
+ VERSION Optional BUILD_NUM=$(BUILD_NUMBER) $(INF_VERSION)
+ }
+ New Peim Rule:
+ [Rule.Common.PEIM]
+ FILE PEIM = $(NAMED_GUID) {
+ PEI_DEPEX PEI_DEPEX Optional |.Depex
+ PE32 PE32 |.efi
+ UI STRING="$(MODULE_NAME)" Optional
+ VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
+ }
+
+ Old AcpiTable Rule:
+ [Rule.Common.DXE_DRIVER.ACPITABLE]
+ FILE FREEFORM = $(NAMED_GUID) {
+ RAW $(INF_OUTPUT)/Madt.acpi
+ RAW $(INF_OUTPUT)/Fadt.acpi
+ RAW $(INF_OUTPUT)/Facs.acpi
+ RAW $(INF_OUTPUT)/Spcr.acpi
+ RAW $(INF_OUTPUT)/Dsdt.aml
+ }
+ New AcpiTable Rule:
+ [Rule.Common.DXE_DRIVER.ACPITABLE]
+ FILE FREEFORM = $(NAMED_GUID) {
+ RAW ACPI |.acpi
+ RAW ASL |.aml
+ }
+
+==========================================================================================
+EDK_3786: Compatible: vjeff
+
+ Class_BuildConfiguration:
+ 1) Redirect ICC_IA32_*_PATH from C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin
+ to C:\Program Files\Intel\Compiler\C++\9.1\IA32\Bin.
+ 2) Add ICC X64 definition to enable ICC X64 build.
+
+ Code Change :
+ 1) BaseTools/Conf/tools_def.template
+
+==========================================================================================
+EDK_3785: Non-Compatible: klu2
+
+ Class_BuildTool: Upgrade the format of EFI_PEIM_ENTRY_POINT to
+ EFI_PEIM_ENTRY_POINT2 according to PI specification.
+
+
+ Code Change :
+ 1) BaseTools/Bin/Win32/build.exe
+
+ Possible Impacts:
+ 1) All modules build
+
+
+==========================================================================================
+EDK_3780: Non-Compatible: qhuang8
+
+ Class_MigrationTool: Update the syntax of PCD section.
+ Update the syntax of binary INF file
+ The generated Extended INF file should follow Extended INF spec 0.44
+
+ Code Change :
+ 1) BaseTools/Bin/Win32/MigrationMsa2Inf.exe
+
+ Possible Impacts:
+ 1) New module migrated from old R9
+
+
+==========================================================================================
+EDK_3766: Non-Compatible: lgao4
+
+ Class_BuildConfiguration: Update Acpi Asl file Build rule to remove trim step.
+
+ Code Change :
+ 1) Conf/build_rule.template
+
+ Possible Impacts:
+ 1) Platform with ACPI module. Acpi module needs to set /EP preprocessor compiler option
+ for APP_FLAGS in module inf to override the default /E option defined in tools_def.txt file.
+
+
diff --git a/BaseTools/Conf/FrameworkDatabase.template b/BaseTools/Conf/FrameworkDatabase.template
new file mode 100644
index 0000000000..864584af8a
--- /dev/null
+++ b/BaseTools/Conf/FrameworkDatabase.template
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<FrameworkDatabase xmlns="http://www.TianoCore.org/2006/Edk2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <FdbHeader>
+ <DatabaseName>FrameworkDatabase</DatabaseName>
+ <GuidValue>DD6913E0-3E4E-4B83-8838-57EE7FB71DD1</GuidValue>
+ <Version>0.3</Version>
+ <Abstract>The Framework Module Development Packaging System Database</Abstract>
+ <Description>
+ This Database tracks all packages and archives installed in this workspace.
+ </Description>
+ <Copyright>Copyright (c) 2007, Intel Corporation All rights reserved.</Copyright>
+ <License>
+ This program and the accompanying materials are licensed and made available
+ under the terms and conditions of the BSD License which accompanies this
+ distribution. The full text of the license may be found at:
+ http://opensource.org/licenses/bsd-license.php
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT
+ WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+ </License>
+ <Specification>FRAMEWORK_PACKAGING_SPECIFICATION 0x00090000</Specification>
+ </FdbHeader>
+ <PackageList>
+ <Filename>MdePkg/MdePkg.nspd</Filename>
+ <Filename>MdeModulePkg/MdeModulePkg.nspd</Filename>
+ <Filename>IntelFrameworkModulePkg/IntelFrameworkModulePkg.nspd</Filename>
+ <Filename>IntelFrameworkPkg/IntelFrameworkPkg.nspd</Filename>
+ <Filename>Nt32Pkg/Nt32Pkg.nspd</Filename>
+ <Filename>FatBinPkg/FatBinPkg.nspd</Filename>
+ <Filename>ShellBinPkg/ShellBinPkg.nspd</Filename>
+ </PackageList>
+</FrameworkDatabase>
diff --git a/BaseTools/Conf/ReadMe.txt b/BaseTools/Conf/ReadMe.txt
new file mode 100644
index 0000000000..0e5e39d36b
--- /dev/null
+++ b/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. \ No newline at end of file
diff --git a/BaseTools/Conf/XMLSchema/FarManifest.xsd b/BaseTools/Conf/XMLSchema/FarManifest.xsd
new file mode 100644
index 0000000000..6e7573464a
--- /dev/null
+++ b/BaseTools/Conf/XMLSchema/FarManifest.xsd
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Filename: FarManifest.xsd
+
+Copyright (c) 2007, Intel Corp.
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which may be found at http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.TianoCore.org/2007/Edk2.1" xmlns="http://www.TianoCore.org/2007/Edk2.1">
+ <xs:include schemaLocation="FrameworkHeaders.xsd"/>
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ The Framework Archive File Format is defined as a Java Archive file, with a special xml file called FrameworkArchiveManifest.xml at the top of the archive. The FrameworkArchiveManifest.xml must be an instance of this schema.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:element name="FrameworkArchiveManifest">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ This schema defines the Framework Archive Manifest.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="FarHeader"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="FarPackageList">
+ <xs:annotation>
+ <xs:documentation>
+ The list of packages in this FAR.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Contents">
+ <xs:annotation>
+ <xs:documentation>
+ Extra contents that are not part of any Package. These file paths are WORKSPACE relative. If a file exists in the workspace at this location, then the user should be asked whether to overwrite. When the user removes the far, these should be removed also, unless they have been modified (per md5sum).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="FarPackageList">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" ref="FarPackage"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="FarPackage">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="FarFilename">
+ <xs:annotation>
+ <xs:documentation>
+ This is the name of the .spd or file that describes the package. It must exist in the directory identified by DefaultPath.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="GuidValue"></xs:element>
+ <xs:element ref="Version"></xs:element>
+ <xs:element ref="DefaultPath">
+ <xs:annotation>
+ <xs:documentation>
+ This is the default installation location within the workspace. This also serves as the location within the far itself of the package root. The Contents of the pacakage will be found there. The user may choose some other location within the workspace to install the package, as long as it does not overlap a package that is already installed.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="Contents">
+ <xs:annotation>
+ <xs:documentation>
+ This is the list of files that belong to the package. They are specified by relative path from the root of the pacakge.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"></xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="DefaultPath" type="PathAndFilename"/>
+ <xs:element name="FarFilename" type="DbPathAndFilename">
+ <xs:annotation>
+ <xs:documentation>
+ The FarFilename is used to build up the Contents list. It has an md5sum attribute for keeping track of whether the file is changed after it is installed. The Md5sum can also be used to check the integrity of a far before it is installed into the workspace.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="GuidValue" type="GuidType">
+ <xs:annotation>
+ <xs:documentation>
+ The purpose of this element is to allow Guids to be assigned to or used by other elements in the schema.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Contents">
+ <xs:annotation>
+ <xs:documentation>
+ This tag allows us to specify a tree of files all having a common root. All the files specified are relative to that common root.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="FarFilename"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ Definitions and rules for creating, installing, updating and removing fars within the workspace.
+ </xs:documentation>
+ <xs:documentation>
+ 1. A module m is said to depend upon a package p, iff there exists a tuple (PackageGuid, PackageVerion) in the set m->PackageDependencies for which p->Guid==PackageGuid, and if PackageVersion is not empty, then p->Version== PackageVersion.
+ </xs:documentation>
+ <xs:documentation>
+ 2. A far f is said to depend on a far g, iff there is a module in a package in f that depends on a package in g.
+ </xs:documentation>
+ <xs:documentation>
+ 3. A far f is said to depend on a package p, iff there is a module m contained in f that depends on p.
+ </xs:documentation>
+ <xs:documentation>
+ 4. A far f may be installed into the workspace w, iff for each module m in f, m's dependencies are met by the packages in w or f.
+ </xs:documentation>
+ <xs:documentation>
+ a. It is supported to "partially" install a far. A partial installation of a far means that 1 or more packages are installed into the workspace from the far. For each package p in f, p's dependencies must be satisfied by a package in the workspace.
+ </xs:documentation>
+ <xs:documentation>
+ 5. A far f may be removed from the workspace w, iff for each module m in w, and for each package p in f, m does not depend on p.
+ </xs:documentation>
+ <xs:documentation>
+ a. It is supported to "partially" remove a far. In this case, one or more of the packages in the far can be removed, provided that for each package p in the workspace w, there does not exist a module m such that m depends on p.
+ </xs:documentation>
+ <xs:documentation>
+ 6. When installing a far f into workspace w, for each package p in f, allow the user to install in p's default location, or choose a new location l (which must be unoccupied) within the workspace. Record this location l in the database. Each package p in f will be recorded in the database, associated with the GUID of f, as well as the actual install location l. (So we will know which far each package belongs to.)
+ </xs:documentation>
+ <xs:documentation>
+ 7. When installing a far f into workspace w, if there exists a package p in w, and p is in f, then the user must be prompted to choose a location that does not collide with the location of p in workspace w. We will end up with two instances of p in w at two distinct locations. Alternately, the user may elect to partially install the far, leaving out the redundant package.
+ </xs:documentation>
+ <xs:documentation>
+ 8. A far f may replace a far g in the workspace w, iff for each module m contained in w, if m depends on a package p, and p is only contained in g, then there must exist a package q in f, such that m depends on q. The net effect is that g is removed and f is installed, in one operation. The normal rules for installing f still apply--the dependencies of the modules of f must be satisfied. After the replacement, it must be the case that all the modules dependencies in the workspace are satisfied. Note that it is possible to backrev a package in this way.
+ </xs:documentation>
+ <xs:documentation>
+ (If we find that the replace is not permitted, then the user may install f and keep g. Next, he could _port_ every module m in w that depends on g, to f and eventually remove g.)
+ </xs:documentation>
+ <xs:documentation>
+ 9. A special case of the above rule is that a far f may be reinstalled into the workspace. (This would allow the user to get a fresh copy, or change the location in the workspace where one or more of the packages of f are installed.)
+ </xs:documentation>
+ <xs:documentation>
+ 10. When a far f is removed from the workspace w, for each package p in f, we will remove p from w.
+ </xs:documentation>
+ <xs:documentation>
+ 11. If a package p belongs to a far f, then it is legal to remove p from the workspace w iff, there does not exist a module m in w such that m depends on p.
+ </xs:documentation>
+ <xs:documentation>
+ 12. When a far f is removed from the workspace, the we will remove all the files in f from the workspace tree. If a file has been modified from the original as installed from the far (per md5sum) then the user should be asked if he is "sure" he wants to remove it.
+ </xs:documentation>
+ <xs:documentation>
+ 13. When a far is created, a GUID is generated and assigned to the far. If a far is created from the same components at a later time, it would have a different GUID.
+ </xs:documentation>
+ <xs:documentation>
+ 14. If a package p is marked with p->RePackage==false, then p may not be added to a far.
+ </xs:documentation>
+ <xs:documentation>
+ 15. A far f is identical to a far g, iff f->Guid == g->Guid.
+ </xs:documentation>
+ <xs:documentation>
+ 17. A far f may be installed into the workspace w, iff there is no far g in w such that f->Guid==g->Guid. In that case, it is called "updating" the far in the workspace. The user may select some subset of packages to reinstall or update, to ensure that the files in the workspace are correct.
+ </xs:documentation>
+ </xs:annotation>
+</xs:schema>
diff --git a/BaseTools/Conf/XMLSchema/FrameworkDataAttributes.xsd b/BaseTools/Conf/XMLSchema/FrameworkDataAttributes.xsd
new file mode 100644
index 0000000000..d40561e4f7
--- /dev/null
+++ b/BaseTools/Conf/XMLSchema/FrameworkDataAttributes.xsd
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://www.TianoCore.org/2007/Edk2.1" targetNamespace="http://www.TianoCore.org/2007/Edk2.1">
+ <!--
+ Filename: FrameworkDataAttributes.xsd
+
+ Copyright (c) 2007, Intel Corp.
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which may be found at http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+ -->
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This schema defines EFI and Framework Attribute. Only attributeGroups are specified in this file. </xs:documentation>
+ </xs:annotation>
+ <xs:include schemaLocation="NamingConvention.xsd"/>
+ <xs:include schemaLocation="FrameworkDataTypes.xsd"/>
+ <!-- Fix Name data type from xs:string -->
+ <xs:attributeGroup name="BinaryFileAttributes">
+ <xs:attribute name="FileType" type="BinFileType" use="required"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="Target" type="ToolsNameConvention" use="optional"/>
+ <xs:attribute name="TagName" type="ToolsNameConvention" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="BootModeAttributes">
+ <xs:attribute name="BootModeName" type="BootModeNames" use="required"/>
+ <xs:attribute name="Usage" type="BootModeUsage" use="required"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="DataHubAttributes">
+ <xs:attribute name="Usage" type="DataHubUsage" use="required"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="EventAttributes">
+ <xs:attribute name="Usage" type="EventUsage" use="required"/>
+ <xs:attribute name="EventGuidCName" type="C_NameType" use="optional"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="ExternAttributes">
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="FilenameAttributes">
+ <xs:attribute name="TagName" type="ToolsNameConvention" use="optional"/>
+ <xs:attribute name="ToolCode" type="ToolsNameConvention" use="optional"/>
+ <xs:attribute name="ToolChainFamily" type="ToolsNameConvention" use="optional"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="GuidAttributes">
+ <xs:attribute name="Usage" type="GuidUsage" use="required"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="GuidDeclarationAttributes">
+ <xs:attribute name="Name" type="UiNameType" use="required"/>
+ <xs:attribute name="GuidTypeList" type="GuidListType" use="optional"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="HiiPackageAttributes">
+ <xs:attribute name="Usage" type="HiiPackageUsage" use="required"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="HobAttributes">
+ <xs:attribute name="Usage" type="HobUsage" use="required"/>
+ <xs:attribute name="HobGuidCName" type="C_NameType" use="optional"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="IncludeHeaderAttributes">
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
+ <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="IndustryStdHeaderAttributes">
+ <xs:attribute name="Name" type="KeywordType" use="required"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="LibraryClassAttributes">
+ <xs:attribute name="Usage" type="LibraryUsage" use="required"/>
+ <xs:attribute name="RecommendedInstanceVersion" type="VersionDataType" use="optional"/>
+ <xs:attribute name="RecommendedInstanceGuid" type="GuidType" use="optional"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
+ <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="LibraryClassDeclarationAttributes">
+ <xs:attribute name="Name" type="KeywordType" use="required"/>
+ <xs:attribute name="RecommendedInstanceVersion" type="VersionDataType" use="optional"/>
+ <xs:attribute name="RecommendedInstanceGuid" type="GuidType" use="optional"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="OptionAttributes">
+ <xs:attribute name="BuildTargets" type="BuildTargetList" use="optional"/>
+ <xs:attribute name="ToolChainFamily" type="ToolsNameConvention" use="optional"/>
+ <xs:attribute name="TagName" type="ToolsNameConvention" use="optional"/>
+ <xs:attribute name="ToolCode" type="ToolsNameConvention" use="optional"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="PackageHeaderAttributes">
+ <xs:attribute name="ModuleType" type="ModuleTypeDef" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="PackageAttributes">
+ <!-- Used with the MSA File, PackageDependencies.Package -->
+ <xs:attribute name="PackageGuid" type="GuidType" use="required"/>
+ <xs:attribute name="PackageVersion" type="VersionDataType" use="optional"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="PackageNameAttributes">
+ <!--Used with the FrameworkDatabase PackageList.Packagename -->
+ <xs:attribute name="PackageGuid" type="GuidType" use="optional"/>
+ <xs:attribute name="PackageVersion" type="VersionDataType" use="optional"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="PcdCodedAttributes">
+ <!-- We need to modify ALL the MSA files that have PcdCoded sections to
+ set the PcdUsage. Once we modify all the MSA files and we modify the
+ wizard and the build tools, we need to make this required. -->
+ <xs:attribute name="Usage" type="PcdUsage" use="optional"/>
+ <xs:attribute name="PcdItemType" type="PcdItemTypes" use="required"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="PcdDeclarationAttributes">
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="PpiDeclarationAttributes">
+ <xs:attribute name="Name" type="UiNameType" use="required"/>
+ <xs:attribute name="GuidTypeList" type="GuidListType" use="optional"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="PpiAttributes">
+ <xs:attribute name="Usage" type="PpiUsage" use="required"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="PpiNotifyAttributes">
+ <xs:attribute name="Usage" type="PpiNotifyUsage" use="required"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="ProtocolAttributes">
+ <xs:attribute name="Usage" type="ProtocolUsage" use="required"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="ProtocolDeclarationAttributes">
+ <xs:attribute name="Name" type="UiNameType" use="required"/>
+ <xs:attribute name="GuidTypeList" type="GuidListType" use="optional"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="ProtocolNotifyAttributes">
+ <xs:attribute name="Usage" type="ProtocolNotifyUsage" use="required"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="SystemTableAttributes">
+ <xs:attribute name="Usage" type="SystemTableUsage" use="required"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="VariableAttributes">
+ <xs:attribute name="Usage" type="VariableUsage" use="required"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
+ </xs:attributeGroup>
+</xs:schema>
diff --git a/BaseTools/Conf/XMLSchema/FrameworkDataElements.xsd b/BaseTools/Conf/XMLSchema/FrameworkDataElements.xsd
new file mode 100644
index 0000000000..12bba93d40
--- /dev/null
+++ b/BaseTools/Conf/XMLSchema/FrameworkDataElements.xsd
@@ -0,0 +1,728 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://www.TianoCore.org/2007/Edk2.1" targetNamespace="http://www.TianoCore.org/2007/Edk2.1">
+ <!--
+ Filename: FrameworkDataElements.xsd
+
+ Copyright (c) 2007, Intel Corp.
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which may be found at http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+ -->
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> This schema defines EFI and Framework Data Elements </xs:documentation>
+ </xs:annotation>
+ <xs:include schemaLocation="NamingConvention.xsd"/>
+ <xs:include schemaLocation="FrameworkDataTypes.xsd"/>
+ <xs:include schemaLocation="FrameworkDataAttributes.xsd"/>
+ <xs:element name="Abstract" type="Sentence">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Abstract is valid for all Description Files</xs:documentation>
+ <xs:documentation xml:lang="en">This section is required. This is a single sentence to describe the module and will be used in sample files as the abstract data in the header comment section.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="BootModes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">BootModes is valid for all Description Files</xs:documentation>
+ <xs:documentation xml:lang="en">This is a list of BootModes Supported by the Module</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="BootMode">
+ <xs:complexType>
+ <xs:sequence minOccurs="0">
+ <xs:element name="HelpText" type="Paragraph"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="BootModeAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Copyright" type="Paragraph"/>
+ <xs:element name="DataHubs">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is a list of DataHubRecord elements.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="DataHubRecord">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="DataHubCName" type="C_NameType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="DataHubAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="DefaultValue">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">The default setting of a PCD entry.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString"/>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Depex">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This section is used to describe the DXE or PEI Dependency code</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Define" type="xs:normalizedString"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Expression" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Description" type="Paragraph">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This section is required for new modules and libraries and must contain more information than the Abstract.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="BinaryFiles">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Multiple Filenames may be specified, and they may also be scoped to a specific Architecture.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="PathAndFilename">
+ <xs:attributeGroup ref="BinaryFileAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Events">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is a list of MSA Events</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="CreateEvents">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="EventTypes">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="EventType" type="EventTypes"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="EventAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="SignalEvents">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module has an event that is waiting to be signaled. Event is named by GUID.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="EventTypes">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="EventType" type="EventTypes"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="EventAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Externs">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is a child of MSA files.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1">
+ <xs:element minOccurs="0" maxOccurs="1" name="PcdIsDriver" type="PcdDriverTypes"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="TianoR8FlashMap_h" type="xs:boolean" default="false"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Specification" type="Sentence"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Extern">
+ <xs:complexType>
+ <xs:choice minOccurs="1" maxOccurs="1">
+ <xs:sequence minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Driver Module</xs:documentation>
+ </xs:annotation>
+ <xs:element minOccurs="0" maxOccurs="1" name="ModuleEntryPoint" type="C_NameType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="ModuleUnloadImage" type="C_NameType"/>
+ </xs:sequence>
+ <xs:sequence minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Library Module</xs:documentation>
+ </xs:annotation>
+ <xs:element minOccurs="0" maxOccurs="1" name="Constructor" type="C_NameType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="Destructor" type="C_NameType"/>
+ </xs:sequence>
+ <xs:sequence minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Allow multiple entries for DriverBinding, ComponentName, DriverConfig and DriverDiag elements. For ComponentName, DriverConfig and/or DriverDiag - you must have a 1:1 mapping to DriverBinding if the element is defined.</xs:documentation>
+ <xs:documentation xml:lang="en">Permit User Defined Extern Tags</xs:documentation>
+ </xs:annotation>
+ <xs:element minOccurs="1" maxOccurs="1" name="DriverBinding" type="C_NameType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="ComponentName" type="C_NameType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="DriverConfig" type="C_NameType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="DriverDiag" type="C_NameType"/>
+ </xs:sequence>
+ <xs:sequence minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> Module Call Backs</xs:documentation>
+ </xs:annotation>
+ <xs:element minOccurs="0" maxOccurs="1" name="SetVirtualAddressMapCallBack" type="C_NameType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="ExitBootServicesCallBack" type="C_NameType"/>
+ </xs:sequence>
+ </xs:choice>
+ <xs:attributeGroup ref="ExternAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Filename">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Describe the valid content of a filename This should extend PathAndFilename - Variable names not allowed here!</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="PathAndFilename">
+ <xs:attributeGroup ref="FilenameAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Filenames">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is a list of Filenames</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1">
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="Filename"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="GuidDeclarations">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is a child of PackageSurfaceArea (SPD) </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="GuidDeclarationAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Guids">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="GuidCNames">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Describe the valid content of a GUID element in and MSA file.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="GuidCName" type="C_NameType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="GuidAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="HiiPackages">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Describe the list of a HiiPackage elements</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="HiiPackage">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="HiiCName" type="C_NameType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="HiiPackageAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Hobs">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="HobTypes">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="HobType" type="HobTypes"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="HobAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="IncludeHeader">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="PathAndFilename">
+ <xs:attributeGroup ref="IncludeHeaderAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="IndustryStdIncludes">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" ref="IndustryStdHeader"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="IndustryStdHeader">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="IncludeHeader" type="PathAndFilename"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="IndustryStdHeaderAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="LibraryClass">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Used in MSA files. This defines what class of library is being supported = produced (library module) or consumed by a module.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="Keyword" type="KeywordType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="LibraryClassAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- LAH This is SPD LibraryClassDeclarations FINAL version -->
+ <xs:element name="LibraryClassDeclarations">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="IncludeHeader" type="PathAndFilename"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="LibraryClassDeclarationAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="LibraryClassDefinitions">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This section defines what Classes of Library that this library supports. A Library may belong to multiple different library classes.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" ref="LibraryClass"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="License">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="Paragraph">
+ <xs:attribute name="URL" type="xs:anyURI" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ModuleBuildOptions">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Options"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ModuleDefinitions">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="SupportedArchitectures" type="ArchListType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="BinaryModule" type="xs:boolean" default="false"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="OutputFileBasename" type="FileNameConvention"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Cloned">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="PackageGuid" type="GuidType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="PackageVersion" type="VersionDataType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="ModuleGuid" type="GuidType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="ModuleVersion" type="VersionDataType"/>
+ </xs:sequence>
+ <!-- The Id is a number used to track heritage the first entry will be 0 and increment from then on. -->
+ <xs:attribute name="Id" type="xs:nonNegativeInteger" use="required"/>
+ <!-- If the original module was installed from a FAR, track the FAR it came from. -->
+ <xs:attribute name="FarGuid" type="GuidType" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ModuleType" type="ModuleTypeDef">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Describe the valid EFI Phase that the Module is designed to execute under.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <!-- Use in Final -->
+ <xs:element name="MsaFiles">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">MsaFiles is a child of Surface Area Package Description (SPD) files</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename" type="PathAndFilename"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Options">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" ref="Option"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="NonProcessedFiles">
+ <xs:complexType>
+ <xs:sequence minOccurs="1" maxOccurs="unbounded">
+ <xs:element name="Filename" type="PathAndFilename"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Option">
+ <!-- This element is used to store flags from the Tools -->
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attributeGroup ref="OptionAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PackageDefinitions">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="ReadOnly" type="xs:boolean" default="false"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="RePackage" type="xs:boolean" default="false"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Cloned">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="PackageGuid" type="GuidType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="PackageVersion" type="VersionDataType"/>
+ </xs:sequence>
+ <!-- The Id is a number used to track heritage the first entry will be 0 and increment from then on. -->
+ <xs:attribute name="Id" type="xs:nonNegativeInteger" use="required"/>
+ <!-- If the original Package was installed from a FAR, track the FAR it came from. -->
+ <xs:attribute name="FarGuid" type="GuidType" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PackageDependencies">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This tag is used in the Module Surface Area Description File (MSA) to track package dependencies for a module.</xs:documentation>
+ <xs:documentation xml:lang="en">Attributes to PackageName include Required: Usage PackageGuid PackageVesion, Optional: FeatureFlag</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Package">
+ <xs:complexType>
+ <xs:attributeGroup ref="PackageAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PackageHeaders">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">PackageHeaders is a child of PackageSurfaceArea (SPD) </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="IncludePkgHeader">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="PathAndFilename">
+ <xs:attributeGroup ref="PackageHeaderAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PackageList">
+ <!-- Valid for DB usage only! -->
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This tag is used in the Framework Package Database File to track all packages (SPD files) installed in a workspace. (Database)</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="PathAndFilename">
+ <xs:attributeGroup ref="PackageNameAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PcdCoded">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Child of Module Surface Area Description (MSA)</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="C_Name" type="C_NameType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCName" type="C_NameType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="DefaultValueType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>
+ </xs:sequence>
+ <!-- MSA file declares a single usage, and must match one of the entries in what the SPD file declares as the set of possible Item Types. -->
+ <xs:attributeGroup ref="PcdCodedAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- LAH This is PcdDeclarations FINAL version -->
+ <xs:element name="PcdDeclarations">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">PcdDeclaratins is a child of Package Surface Area Description (SPD)</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1">
+ <xs:element maxOccurs="unbounded" name="PcdEntry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="Token" type="TokenDataType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCName" type="C_NameType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="ValidUsage" type="PcdListType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="DefaultValueType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="PcdDeclarationAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="FarList">
+ <!-- Valid for DB usage only! -->
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This tag is used in the Framework Package Database File to track all DISTRIBUTION packages (FAR files) installed in a workspace. (Database)</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename" type="DbPathAndFilename"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PpiDeclarations">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">PpiDeclarations is a child of PackageSurfaceArea (SPD) </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="PpiDeclarationAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PPIs">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Provide for one or more Ppi or PpiNotify sections. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1">
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Ppi">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="PpiCName" type="C_NameType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="PpiAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="PpiNotify">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="PpiNotifyCName" type="C_NameType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="PpiNotifyAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ProtocolDeclarations">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">ProtocolDeclarations is a child of PackageSurfaceArea (SPD) </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="ProtocolDeclarationAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Protocols">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">If either Protocol or ProtocolNotify sections are needed, one or more of them should be specified within this section</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Protocol">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="ProtocolCName" type="C_NameType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="ProtocolAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="ProtocolNotify">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="ProtocolNotifyCName" type="C_NameType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="ProtocolNotifyAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SourceFiles">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Multiple Filenames may be specified, and they may also be scoped to a specific Architecture.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" ref="Filename"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SystemTables">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is list of System Table elements.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="SystemTableCNames">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="SystemTableCName" type="C_NameType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="SystemTableAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="UserExtensions">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
+ </xs:sequence>
+ <xs:attribute name="UserID" type="xs:NCName" use="required"/>
+ <xs:attribute name="Identifier" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Variables">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">An MSA FILE list of EFI Variables described by string pair.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Variable">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is an EFI Variable Entry</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="VariableName" type="HexWordArrayType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="GuidC_Name" type="C_NameType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="VariableAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Version" type="VersionDataType"/>
+</xs:schema>
diff --git a/BaseTools/Conf/XMLSchema/FrameworkDataTypes.xsd b/BaseTools/Conf/XMLSchema/FrameworkDataTypes.xsd
new file mode 100644
index 0000000000..18db60888a
--- /dev/null
+++ b/BaseTools/Conf/XMLSchema/FrameworkDataTypes.xsd
@@ -0,0 +1,581 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://www.TianoCore.org/2007/Edk2.1" targetNamespace="http://www.TianoCore.org/2007/Edk2.1">
+ <!--
+ Filename: FrameworkDataTypes.xsd
+
+ Copyright (c) 2007, Intel Corp.
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which may be found at http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+ -->
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This schema defines EFI and Framework Data Types. Only simpleType are specified in this file. </xs:documentation>
+ </xs:annotation>
+ <xs:include schemaLocation="NamingConvention.xsd"/>
+ <xs:simpleType name="PrimaryArchListType">
+ <xs:list itemType="SupportedArchitectures"/>
+ </xs:simpleType>
+ <xs:simpleType name="ArchListType">
+ <xs:restriction base="PrimaryArchListType">
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="BinFileType">
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="LIB"/>
+ <xs:enumeration value="UNI_UI"/>
+ <xs:enumeration value="UNI_VER"/>
+ <xs:enumeration value="PE32"/>
+ <xs:enumeration value="FW"/>
+ <xs:enumeration value="GUID"/>
+ <xs:enumeration value="FREEFORM"/>
+ <xs:enumeration value="UEFI_APP"/>
+ <xs:enumeration value="PIC"/>
+ <xs:enumeration value="PEI_DEPEX"/>
+ <xs:enumeration value="DXE_DEPEX"/>
+ <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:simpleType name="BlockNameType">
+ <xs:restriction base="UCNameType">
+ <xs:pattern value="\s*BLOCK[A-F0-9]{2}\s*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="BootModeNames">
+ <xs:restriction base="UCNameType">
+ <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:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="BootModeUsage">
+ <xs:restriction base="UsageTypes">
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="BuildTargetList">
+ <xs:restriction base="BuildTargetUList">
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="BuildTargetUList">
+ <xs:list itemType="BrUType"/>
+ </xs:simpleType>
+ <xs:simpleType name="BrUType">
+ <xs:union memberTypes="BrType UCNameType"/>
+ </xs:simpleType>
+ <xs:simpleType name="BrType">
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="DEBUG"/>
+ <xs:enumeration value="RELEASE"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ComponentExecutionPhase">
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="MDE"/>
+ <xs:enumeration value="SEC"/>
+ <xs:enumeration value="PEI_CORE"/>
+ <xs:enumeration value="PEIM"/>
+ <xs:enumeration value="DXE_CORE"/>
+ <xs:enumeration value="DXE_DRIVER"/>
+ <xs:enumeration value="DXE_RUNTIME_DRIVER"/>
+ <xs:enumeration value="DXE_SAL_DRIVER"/>
+ <xs:enumeration value="DXE_SMM_DRIVER"/>
+ <xs:enumeration value="UEFI"/>
+ <xs:enumeration value="UEFI_APPLICATION"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="DataHubUsage">
+ <xs:restriction base="UsageTypes">
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ <xs:enumeration value="PRIVATE"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="DatumSizeLimitation">
+ <xs:restriction base="xs:nonNegativeInteger">
+ <xs:maxExclusive value="13777216"/>
+ <xs:pattern value="(\s)*[1-9][0-9]*(\s)*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="DefaultValueType">
+ <xs:union memberTypes="xs:normalizedString Hex64BitDataType UnicodeString HexByteArrayType"/>
+ </xs:simpleType>
+ <xs:simpleType name="EfiSectionType">
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="EFI_SECTION_FREEFORM_SUBTYPE_GUID"/>
+ <xs:enumeration value="EFI_SECTION_VERSION"/>
+ <xs:enumeration value="EFI_SECTION_USER_INTERFACE"/>
+ <xs:enumeration value="EFI_SECTION_DXE_DEPEX"/>
+ <xs:enumeration value="EFI_SECTION_PEI_DEPEX"/>
+ <xs:enumeration value="EFI_SECTION_PE32"/>
+ <xs:enumeration value="EFI_SECTION_PIC"/>
+ <xs:enumeration value="EFI_SECTION_TE"/>
+ <xs:enumeration value="EFI_SECTION_RAW"/>
+ <xs:enumeration value="EFI_SECTION_COMPRESSION"/>
+ <xs:enumeration value="EFI_SECTION_GUID_DEFINED"/>
+ <xs:enumeration value="EFI_SECTION_COMPATIBILITY16"/>
+ <xs:enumeration value="EFI_SECTION_FIRMWARE_VOLUME_IMAGE"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="EventTypes">
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="EVENT_GROUP_GUID"/>
+ <xs:enumeration value="EVENT_TYPE_PERIODIC_TIMER"/>
+ <xs:enumeration value="EVENT_TYPE_RELATIVE_TIMER"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="EventUsage">
+ <xs:restriction base="UsageTypes">
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ <xs:enumeration value="PRIVATE"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ExecutionType">
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="REL" id="Relocatable"/>
+ <xs:enumeration value="NREL" id="Non-Relocatable"/>
+ <xs:enumeration value="XIP" id="Execute_In_Place"/>
+ <xs:enumeration value="PIC" id="Position_Independent_Code"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ExternType">
+ <xs:restriction base="xs:normalizedString">
+ <xs:minLength value="1"/>
+ <!--<xs:pattern value="((\w)+(\W)*(\s)*)+"/>-->
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ExternUsage">
+ <xs:restriction base="UsageTypes">
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="FileNameUsage">
+ <xs:restriction base="UsageTypes">
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ <xs:enumeration value="PRIVATE"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="FeatureFlagExpressionType">
+ <xs:restriction base="xs:normalizedString">
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="FrameworkComponentListType">
+ <xs:list itemType="FrameworkComponentTypes"/>
+ </xs:simpleType>
+ <xs:simpleType name="FrameworkComponentTypes">
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="APRIORI"/>
+ <xs:enumeration value="SEC"/>
+ <xs:enumeration value="LIBRARY"/>
+ <xs:enumeration value="FV_IMAGE_FILE"/>
+ <xs:enumeration value="BS_DRIVER"/>
+ <xs:enumeration value="RT_DRIVER"/>
+ <xs:enumeration value="SAL_RT_DRIVER"/>
+ <xs:enumeration value="PE32_PEIM"/>
+ <xs:enumeration value="PIC_PEIM"/>
+ <xs:enumeration value="COMBINED_PEIM_DRIVER"/>
+ <xs:enumeration value="PEI_CORE"/>
+ <xs:enumeration value="DXE_CORE"/>
+ <xs:enumeration value="BS_DRIVER_EFI"/>
+ <xs:enumeration value="SHELLAPP"/>
+ <xs:enumeration value="BINARY"/>
+ <xs:enumeration value="LOGO"/>
+ <xs:enumeration value="USER_DEFINED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="FrameworkModuleTypes">
+ <xs:restriction base="ModuleTypeDef">
+ <xs:enumeration value="BASE"/>
+ <xs:enumeration value="SEC"/>
+ <xs:enumeration value="PEI_CORE"/>
+ <xs:enumeration value="PEIM"/>
+ <xs:enumeration value="DXE_CORE"/>
+ <xs:enumeration value="DXE_DRIVER"/>
+ <xs:enumeration value="DXE_RUNTIME_DRIVER"/>
+ <xs:enumeration value="DXE_SAL_DRIVER"/>
+ <xs:enumeration value="DXE_SMM_DRIVER"/>
+ <xs:enumeration value="UEFI_DRIVER"/>
+ <xs:enumeration value="UEFI_APPLICATION"/>
+ <xs:enumeration value="USER_DEFINED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="FvRegionTypes">
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="FV_MAIN"/>
+ <xs:enumeration value="FV_MAIN_COMPACT"/>
+ <xs:enumeration value="NV_STORAGE"/>
+ <xs:enumeration value="FV_RECOVERY"/>
+ <xs:enumeration value="FV_RECOVERY_FLOPPY"/>
+ <xs:enumeration value="FV_FILE"/>
+ <xs:enumeration value="CAPSULE_CARGO"/>
+ <xs:enumeration value="NULL"/>
+ <xs:enumeration value="USER_DEFINED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="PrimaryGuidListType">
+ <xs:list itemType="GuidTypes"/>
+ </xs:simpleType>
+ <xs:simpleType name="GuidListType">
+ <xs:restriction base="PrimaryGuidListType">
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="GuidTypes">
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="DATA_HUB_RECORD"/>
+ <xs:enumeration value="EFI_EVENT"/>
+ <xs:enumeration value="EFI_SYSTEM_CONFIGURATION_TABLE"/>
+ <xs:enumeration value="EFI_VARIABLE"/>
+ <xs:enumeration value="GUID"/>
+ <xs:enumeration value="HII_PACKAGE_LIST"/>
+ <xs:enumeration value="HOB"/>
+ <xs:enumeration value="TOKEN_SPACE_GUID"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="GuidUsage">
+ <xs:restriction base="UsageTypes">
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ <xs:enumeration value="PRIVATE"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="HexByteArrayListType">
+ <xs:restriction base="xs:normalizedString">
+ <xs:minLength value="4"/>
+ <xs:pattern value="\s*((( )?0x[a-fA-F0-9]{2})(,)?)+( )?"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="HexByteArrayType">
+ <xs:restriction base="xs:normalizedString">
+ <xs:minLength value="4"/>
+ <xs:pattern value="((\s)*0x([a-fA-F0-9]){2}(,)?(\s)*)+"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="HexWordArrayType">
+ <xs:restriction base="xs:normalizedString">
+ <xs:minLength value="6"/>
+ <xs:pattern value="((\s)*0x([a-fA-F0-9]){4}(,)?(\s)*)+"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="HiiPackageUsage">
+ <xs:restriction base="UsageTypes">
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ <xs:enumeration value="PRIVATE"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="HobTypes">
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="PHIT"/>
+ <xs:enumeration value="MEMORY_ALLOCATION"/>
+ <xs:enumeration value="RESOURCE_DESCRIPTOR"/>
+ <xs:enumeration value="GUID_EXTENSION"/>
+ <xs:enumeration value="FIRMWARE_VOLUME"/>
+ <xs:enumeration value="CPU"/>
+ <xs:enumeration value="POOL"/>
+ <xs:enumeration value="CAPSULE_VOLUME"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="HobUsage">
+ <xs:restriction base="UsageTypes">
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ <xs:enumeration value="PRIVATE"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="IntermediateOutputType">
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="MODULE"/>
+ <xs:enumeration value="UNIFIED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="LibraryUsage">
+ <xs:restriction base="UsageTypes">
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ <xs:enumeration value="PRIVATE"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ModuleTypeDef">
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="BASE"/>
+ <xs:enumeration value="SEC"/>
+ <xs:enumeration value="PEI_CORE"/>
+ <xs:enumeration value="PEIM"/>
+ <xs:enumeration value="DXE_CORE"/>
+ <xs:enumeration value="DXE_DRIVER"/>
+ <xs:enumeration value="DXE_RUNTIME_DRIVER"/>
+ <xs:enumeration value="DXE_SAL_DRIVER"/>
+ <xs:enumeration value="DXE_SMM_DRIVER"/>
+ <xs:enumeration value="TOOL"/>
+ <xs:enumeration value="UEFI_DRIVER"/>
+ <xs:enumeration value="UEFI_APPLICATION"/>
+ <xs:enumeration value="USER_DEFINED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Md5sumType">
+ <xs:restriction base="xs:normalizedString">
+ <xs:pattern value="\s*[a-fA-F0-9]{32}\s*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="PrimaryModuleListType">
+ <xs:list itemType="FrameworkModuleTypes"/>
+ </xs:simpleType>
+ <xs:simpleType name="ModuleListType">
+ <xs:restriction base="PrimaryModuleListType">
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="PackageType">
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="SOURCE"/>
+ <xs:enumeration value="BINARY"/>
+ <xs:enumeration value="MIXED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="PackageUsage">
+ <xs:restriction base="UsageTypes">
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="PcdListType">
+ <xs:restriction base="PrimaryPcdListType">
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="PrimaryPcdListType">
+ <xs:list itemType="PcdItemTypes"/>
+ </xs:simpleType>
+ <xs:simpleType name="PcdTypes">
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="FIXED_AT_BUILD"/>
+ <xs:enumeration value="FEATURE_FLAG"/>
+ <xs:enumeration value="PATCHABLE_IN_MODULE"/>
+ <xs:enumeration value="DYNAMIC"/>
+ <xs:enumeration value="DYNAMIC_EX"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="PcdDriverTypes">
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="PEI_PCD_DRIVER"/>
+ <xs:enumeration value="DXE_PCD_DRIVER"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="PcdDataTypes">
+ <xs:restriction base="xs:normalizedString">
+ <xs:enumeration value="UINT8"/>
+ <xs:enumeration value="UINT16"/>
+ <xs:enumeration value="UINT32"/>
+ <xs:enumeration value="UINT64"/>
+ <xs:enumeration value="VOID*"/>
+ <xs:enumeration value="BOOLEAN"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="PcdFeatureFlagUsage">
+ <xs:restriction base="UsageTypes">
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="PcdItemTypes">
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="FEATURE_FLAG"/>
+ <xs:enumeration value="FIXED_AT_BUILD"/>
+ <xs:enumeration value="PATCHABLE_IN_MODULE"/>
+ <xs:enumeration value="DYNAMIC"/>
+ <xs:enumeration value="DYNAMIC_EX"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="PcdUsage">
+ <xs:restriction base="UsageTypes">
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="PpiNotifyUsage">
+ <xs:restriction base="UsageTypes">
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="PpiUsage">
+ <xs:restriction base="UsageTypes">
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ <xs:enumeration value="PRIVATE"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ProtocolNotifyUsage">
+ <xs:restriction base="UsageTypes">
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ProtocolUsage">
+ <xs:restriction base="UsageTypes">
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ <xs:enumeration value="TO_START"/>
+ <xs:enumeration value="BY_START"/>
+ <xs:enumeration value="PRIVATE"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="SkuListType">
+ <xs:restriction base="xs:normalizedString">
+ <xs:minLength value="1"/>
+ <xs:pattern value="\s*(\d)+((,)?(\s)*(\d)+)*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="SupportedArchitectures">
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="EBC"/>
+ <xs:enumeration value="IA32"/>
+ <xs:enumeration value="X64"/>
+ <xs:enumeration value="IPF"/>
+ <xs:enumeration value="ARM"/>
+ <xs:enumeration value="PPC"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="SystemTableUsage">
+ <xs:restriction base="UsageTypes">
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ <xs:enumeration value="PRIVATE"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="TokenDataType">
+ <xs:union memberTypes="HexDoubleWordDataType xs:nonNegativeInteger"/>
+ </xs:simpleType>
+ <xs:simpleType name="ToolChains">
+ <xs:restriction base="UCNameType">
+ <xs:minLength value="2"/>
+ <xs:enumeration value="MSFT"/>
+ <xs:enumeration value="INTEL"/>
+ <xs:enumeration value="GCC"/>
+ <xs:enumeration value="CYGWIN"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="UiNameType">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:pattern value="[^ ].*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="UnicodeString">
+ <xs:restriction base="xs:normalizedString">
+ <xs:minLength value="3"/>
+ <xs:pattern value="(\s)*L(\:)?&quot;[^&quot;]*&quot;(\s)*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="UsageListType">
+ <xs:restriction base="PrimaryUsageList">
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="PrimaryUsageList">
+ <xs:list itemType="UsageTypes"/>
+ </xs:simpleType>
+ <!-- UsageTypes describes all of the Usage Attributes that are defined in the Module Surface Area Specification -->
+ <xs:simpleType name="UsageTypes">
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ <xs:enumeration value="TO_START"/>
+ <xs:enumeration value="BY_START"/>
+ <xs:enumeration value="PRIVATE"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="VariableOffsetValues">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:pattern value="\s*\d+(:)?\d*\s*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="VariableUsage">
+ <xs:restriction base="UsageTypes">
+ <!-- Module requires the variable entry to be set -->
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <!-- Module will use the variable entry if it's set -->
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ <!-- Module Always will write the variable -->
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <!-- Module sometimes writes the variable -->
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ <!-- Variable is produced and consumed only by this module -->
+ <xs:enumeration value="PRIVATE"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <!-- Complex Data Types -->
+ <xs:complexType name="DbPathAndFilename">
+ <xs:simpleContent>
+ <xs:extension base="PathAndFilename">
+ <xs:attribute name="FarGuid" type="GuidType" use="optional"/>
+ <xs:attribute name="Md5sum" type="Md5sumType"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:complexType name="ArgsType">
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="Arg" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="ToolType">
+ <xs:sequence>
+ <xs:element name="ToolName" type="xs:string"/>
+ <xs:element name="ToolArgs" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
diff --git a/BaseTools/Conf/XMLSchema/FrameworkHeaders.xsd b/BaseTools/Conf/XMLSchema/FrameworkHeaders.xsd
new file mode 100644
index 0000000000..6927c7bcca
--- /dev/null
+++ b/BaseTools/Conf/XMLSchema/FrameworkHeaders.xsd
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.TianoCore.org/2007/Edk2.1" xmlns="http://www.TianoCore.org/2007/Edk2.1">
+ <!--
+ Filename: FrameworkHeaders.xsd
+
+ Copyright (c) 2007, Intel Corp.
+
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which may be found at http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+ APPROVED: 05-Jun-2007
+ -->
+ <xs:include schemaLocation="FrameworkDataElements.xsd"/>
+ <xs:element name="FdbHeader">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is the header for the Framework Package Database (DB) file.</xs:documentation>
+ <xs:documentation xml:lang="en">The Guid MUST change if backward compatibility breaks caused by a new release of XML Schema.</xs:documentation>
+ <xs:documentation xml:lang="en">The Version will change if a minor change to XML Schema has been made, but backward compatiblity is maintained.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="DatabaseName" type="UiNameType" fixed="FrameworkDatabase"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType" default="DD6913E0-3E4E-4B83-8838-57EE7FB71DD1"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Abstract"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Description"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Copyright"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="License"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="Specification" type="Sentence" default="FRAMEWORK_PACKAGING_SPECIFICATION 0x00090000"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="FarHeader">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is the header for the Framework Archive Manifest file.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="FarName" type="UiNameType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Abstract"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Description"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Copyright"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="License"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="Specification" type="Sentence" default="FRAMEWORK_PACKAGING_SPECIFICATION 0x00090000"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="MsaHeader">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This header is for the Module Surface Area Description (MSA) files</xs:documentation>
+ <xs:documentation xml:lang="en">The Guid MUST change if the Module changes break backward compatibility.</xs:documentation>
+ <xs:documentation xml:lang="en">The Version MUST change if the Module changes, however, backward compatiblity is maintained.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="ModuleName" type="UiNameType"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="ModuleType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Abstract"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Description"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Copyright"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="License"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="Specification" type="Sentence" default="FRAMEWORK_PACKAGING_SPECIFICATION 0x00090000"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SpdHeader">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This head is for the Surface Area Package Description file (SPD)</xs:documentation>
+ <xs:documentation xml:lang="en">The Guid MUST change when the contents of the file undergo MAJOR FUNCTIONALITY changes.</xs:documentation>
+ <xs:documentation xml:lang="en">The Version MUST change when the contents of the file undergo MINOR FUNCTIONALITY changes.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="PackageName" type="UiNameType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Abstract"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Description"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Copyright"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="License"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="Specification" type="Sentence" default="FRAMEWORK_PACKAGING_SPECIFICATION 0x00090000"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/BaseTools/Conf/XMLSchema/NamingConvention.xsd b/BaseTools/Conf/XMLSchema/NamingConvention.xsd
new file mode 100644
index 0000000000..809f1a8485
--- /dev/null
+++ b/BaseTools/Conf/XMLSchema/NamingConvention.xsd
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.TianoCore.org/2007/Edk2.1" xmlns="http://www.TianoCore.org/2007/Edk2.1">
+ <!--
+ Filename: NamingConvention.xsd
+
+ Copyright (c) 2007, Intel Corp.
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which may be found at http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+ -->
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> This schema defines various data types and naming conventions including: base name, filename and directory naming conventions. These are all simple data types.</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType name="C_NameType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> C_Names must start with either an underscore (_) character followed by one or more alpha characters, followed by any combination of underscore or alphanumeric characters.</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="\s*(_)*[a-zA-Z]+((_)*[a-zA-Z0-9]*)*\s*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="FileNameConvention">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> This defines what a Filename is: Alphanumeric characters and optional underscore (_) or dash (-) characters, followed by a optional dot and more alphanumeric characters. </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="\s*[a-zA-Z](\.?[\-_a-zA-Z0-9]+)*\s*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="GuidType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> The GUID data was a union of GuidType1 and GuidType2; standardizing on GuidType2. </xs:documentation>
+ </xs:annotation>
+ <xs:union memberTypes="GuidType2"/>
+ </xs:simpleType>
+ <xs:simpleType name="GuidType1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> This defines the minimum specification for a GUID Array which is 8 Hex Digits - 4 Hex Digits - 4 Hex Digits - 8 Hex Bytes, the last 16 Hex Digits can be enclosed in sqiggle {} brackets.</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="\s*0x[a-fA-F0-9]{1,8},( )*0x[a-fA-F0-9]{1,4},( )*0x[a-fA-F0-9]{1,4}(,( )*\{)?(,?( )*0x[a-fA-F0-9]{1,2}){8}( )*(\})?\s*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="GuidType2">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> 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="Hex64BitDataType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define a Hex 64 Bit Value to be 0x[a-f0-9]{16}</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="\s*(0x)?[a-fA-F0-9]{1,16}\s*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="HexAddressType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define a Hex Address, 0x[a-fA-F0-9]{1,16}</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="\s*0x[a-fA-F0-9]{1,16}\s*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="HexByteDataType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define a Hex Byte Value to be 0x[a-f0-9]{2}</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="\s*(0x)?[a-fA-F0-9]{1,2}\s*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="HexDataType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define a Hex Value to be 0x[a-f0-9]+</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="\s*0x[a-fA-F0-9]+\s*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="HexDigitType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define a Hex Diget to be 0x[a-f0-9]</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="\s*[a-fA-F0-9]{1}\s*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="HexDoubleWordDataType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define a Hex Double Word Value to be 0x[a-f0-9]{8}</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="\s*0x[a-fA-F0-9]{1,8}\s*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="HexWordDataType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define a Hex Word Value to be 0x[a-f0-9]{4}</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="\s*0x[a-fA-F0-9]{1,4}\s*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="KeywordList">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1"/>
+ <xs:pattern value="\s*[a-zA-Z]+(\ *_*[a-zA-Z0-9]*)*\s*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="KeywordType">
+ <xs:restriction base="xs:normalizedString">
+ <xs:pattern value="\s*[a-zA-Z]+(_*[a-zA-Z0-9]*)*\s*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Paragraph">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This describes the normal text of a paragraph that can be used in a license or description tag.</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <xs:simpleType name="PathAndFilename">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> Naming convention for a path and file name</xs:documentation>
+ </xs:annotation>
+ <xs:union memberTypes="xs:normalizedString xs:anyURI"/>
+ </xs:simpleType>
+ <xs:simpleType name="Polarity">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Limit Polarity vaild values to 0 and 1</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:int">
+ <xs:pattern value="\s*0|1\s*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Sentence">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> This data type requires two or more words </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:normalizedString">
+ <xs:pattern value="\s*(\w+\W*)+( )+(\W*\w*\W*\s*)*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ToolsNameConvention">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This data type is used for ToolCommand, ToolChainFamily and TagName.</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NCName">
+ <xs:pattern value="\s*[a-zA-Z][a-zA-Z0-9]*\s*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="UCNameType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> Definition of a UpperCase Name, which can be any combination of upper case characters followed by zero or more underscore and/or uppercase alphanumeric characters </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="\s*[A-Z]+(_*[A-Z0-9]*)*\s*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="VersionDataType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> Definition of a Version Number, which is one or more strings of decimal digits separated by dots. </xs:documentation>
+ <xs:documentation>
+ The algorithm to compare two versions A and B is as follows. if A==B, then A is the same version as B. Otherwise, say A is a1.a2.a3...an and B is b1.b2.b3...bn. For the first pair (ai, bi), for i less than n and i less than m, where ai is not equal to bi, if ai is less than bi, then A is less than B. If ai is greater than bi, then A is greater than B.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="\s*\d+(\.\d+)*\s*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Zero">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define Zero as a vaild value</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:int">
+ <xs:pattern value="\s*0\s*"/>
+ </xs:restriction>
+ </xs:simpleType>
+</xs:schema>
diff --git a/BaseTools/Conf/XMLSchema/SurfaceArea.xsd b/BaseTools/Conf/XMLSchema/SurfaceArea.xsd
new file mode 100644
index 0000000000..f95de26b1a
--- /dev/null
+++ b/BaseTools/Conf/XMLSchema/SurfaceArea.xsd
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.TianoCore.org/2007/Edk2.1" xmlns="http://www.TianoCore.org/2007/Edk2.1">
+ <!--
+ Filename: SurfaceArea.xsd
+
+ Copyright (c) 2007, Intel Corp.
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which may be found at http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+ APPROVED: 05-Jun-2007
+ -->
+ <xs:include schemaLocation="FrameworkHeaders.xsd"/>
+ <xs:include schemaLocation="FrameworkDataElements.xsd"/>
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This describes the valid content of a FrameworkDatabase (DB) File.</xs:documentation>
+ </xs:annotation>
+ <xs:element name="FrameworkDatabase">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="FdbHeader"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="PackageList"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="FarList"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This describes the valid content for a Module Surface Area Description (MSA) file.</xs:documentation>
+ </xs:annotation>
+ <xs:element name="ModuleSurfaceArea">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="MsaHeader"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="ModuleDefinitions"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="LibraryClassDefinitions"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="SourceFiles"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="BinaryFiles"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="NonProcessedFiles"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="PackageDependencies"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Protocols"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Events"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Hobs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="PPIs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Variables"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="BootModes"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="SystemTables"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="DataHubs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="HiiPackages"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Guids"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Externs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="PcdCoded"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Depex"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="ModuleBuildOptions"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This describes the valid content for a Package Surface Area Description (SPD) file.</xs:documentation>
+ </xs:annotation>
+ <xs:element name="PackageSurfaceArea">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="SpdHeader"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="PackageDefinitions"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="LibraryClassDeclarations"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="IndustryStdIncludes"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="MsaFiles"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="PackageHeaders"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="GuidDeclarations"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="ProtocolDeclarations"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="PpiDeclarations"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="PcdDeclarations"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/BaseTools/Conf/build_rule.template b/BaseTools/Conf/build_rule.template
new file mode 100644
index 0000000000..5c22a0badd
--- /dev/null
+++ b/BaseTools/Conf/build_rule.template
@@ -0,0 +1,301 @@
+#
+# Copyright (c) 2007, Intel Corporation
+#
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Filename: build_rule.template
+#
+
+## 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.
+#
+# "[" Build.<File-Type>[.<version>][, Build.<File-Type>[.<version>]] "]" <EOL>
+# <InputFile[.<ToolChainFamily>]> <EOL>
+# [File-Type =] (?|*).<File-Extension> [(\n|,|;) (?|*).<File-Extension>]
+#
+# <OutputFile[.<ToolChainFamily>]> <EOL>
+# <FileFullPath>
+#
+# <Command[.<ToolChainFamily>]> <EOL>
+# <Command1>
+# [<Command2>]
+#
+
+## 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
+# $(LIBS) Static library files of current module
+# $(<tool>_FLAGS) Tools flags of current module
+# $(MODULE_NAME) Current module name
+# $(MODULE_TYPE) Current module type
+# $(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_TYPE_LIST>) 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_FILE_LIST macro.)
+#
+# $(CP) copy command
+# $(MV) move command
+# $(RM) delete command
+# $(MD) create dir command
+# $(RD) remove dir command
+#
+
+## Reserved File-Type
+#
+# Dont'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.C-Code-File]
+ <InputFile>
+ ?.c
+ ?.C
+ ?.cc
+ ?.CC
+ ?.cpp
+ ?.Cpp
+ ?.CPP
+
+ <OutputFile>
+ $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
+
+ <Command.MSFT, Command.INTEL>
+ "$(CC)" /Fo${dst} $(CC_FLAGS) $(INC) ${src}
+
+ <Command.GCC>
+ "$(CC)" -o ${dst} $(CC_FLAGS) $(INC) ${src}
+
+[Build.C-Header-File]
+ <InputFile>
+ *.h, *.H
+
+ <OutputFile>
+ $(OUTPUT_DIR)(+)$(MODULE_NAME).gch
+ $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
+
+ <Command>
+
+
+[Build.Assembly-Code-File]
+ <InputFile.MSFT, InputFile.INTEL>
+ Assembly-Code-File = ?.asm, ?.Asm, ?.ASM
+
+ <InputFile.GCC>
+ ?.S
+
+ <OutputFile>
+ $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
+
+ <Command.MSFT, Command.INTEL>
+ "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
+ Trim --source-code --convert-hex -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i
+ "$(ASM)" /Fo${dst} $(ASM_FLAGS) $(INC) ${d_path}(+)${s_base}.iii
+
+ <Command.GCC>
+ "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
+ Trim --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i
+ "$(ASM)" -o ${dst} $(ASM_FLAGS) $(INC) ${d_path}(+)${s_base}.iii
+
+[Build.Iasm-Code-File]
+ <InputFile>
+ ?.s
+
+ <OutputFile>
+ $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
+
+ <Command.MSFT, Command.INTEL>
+ "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
+ Trim --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i
+ "$(ASM)" -o ${dst} $(ASM_FLAGS) ${d_path}(+)${s_base}.iii
+
+[Build.Visual-Form-Representation-File]
+ <InputFile>
+ ?.vfr
+ ?.Vfr
+ ?.VFR
+
+ <OutputFile>
+ $(DEBUG_DIR)(+)${s_dir}(+)${s_base}.c
+
+ <Command>
+ "$(PP)" $(VFRPP_FLAGS) $(INC) ${src} > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i
+ Trim --vfr-file -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i
+ -mkdir ${d_path} > NUL 2>&1
+ VfrCompile -od ${d_path} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii
+
+[Build.Object-File]
+ <InputFile>
+ *.obj
+ *.o
+
+ <OutputFile>
+ $(OUTPUT_DIR)(+)$(MODULE_NAME).lib
+
+ <Command.MSFT, Command.INTEL>
+ "$(SLINK)" $(SLINK_FLAGS) /OUT:${dst} ${src}
+
+ <Command.GCC>
+ "$(SLINK)" -cr ${dst} $(SLINK_FLAGS) ${src}
+
+#[Build.Object-File, Build.Static-Library-File]
+#BUILD_VERSION = 0x00010000
+#
+# <InputFile>
+# Object-File = *.obj
+# Static-Library-File = *.lib, *.a
+#
+# <OutputFile>
+# $(OUTPUT_DIR)(+)$(MODULE_NAME).lib
+#
+# <Command.MSFT>
+# "$(SLINK)" /OUT:${dst} $(SLINK_FLAGS) ${src}
+#
+# <Command.GCC>
+# "$(SLINK)" -cr ${dst} $(SLINK_FLAGS) ${src1} -( ${src2} -)
+#
+[Build.Static-Library-File]
+ <InputFile>
+ ?.lib
+ $(LIBS)
+ $(MODULE_BUILD_DIR)\Makefile
+
+ <OutputFile>
+ $(DEBUG_DIR)(+)$(MODULE_NAME).dll
+
+ <Command.MSFT, Command.INTEL>
+ "$(DLINK)" /OUT:${dst} $(DLINK_FLAGS) $(DLINK_SPATH) $(LIBS) ${src}
+
+ <Command.GCC>
+ "$(DLINK)" -o ${dst} $(DLINK_FLAGS) -( $(DLINK_SPATH) $(LIBS) ${src} -)
+
+[Build.Dynamic-Library-File]
+ <InputFile>
+ ?.dll
+
+ <OutputFile>
+ $(DEBUG_DIR)(+)$(MODULE_NAME).efi
+
+ <Command>
+ GenFw -e $(MODULE_TYPE) -o ${dst} ${src}
+ $(CP) ${dst} $(OUTPUT_DIR)
+ $(CP) ${dst} $(BIN_DIR)
+ -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR)
+
+[Build.Dependency-Expression-File]
+ <InputFile>
+ ?.dxs, ?.Dxs, ?.DXS
+
+ <OutputFile>
+ $(OUTPUT_DIR)(+)$(MODULE_NAME).depex
+
+ <Command>
+# GenDepex -o ${dst} ${src}
+
+[Build.Acpi-Source-Language-File]
+ <InputFile>
+ ?.asl, ?.Asl, ?.ASL
+
+ <OutputFile>
+ $(OUTPUT_DIR)(+)${s_base}.aml
+
+ <Command.MSFT, Command.INTEL>
+ "$(PP)" $(APP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
+ "$(ASL)" -p ${dst} ${d_path}(+)${s_base}.i
+
+[Build.Acpi-Table-Code-File]
+ <InputFile>
+ ?.aslc
+
+ <OutputFile>
+ $(OUTPUT_DIR)(+)${s_base}.acpi
+
+ <Command.MSFT, Command.INTEL>
+ "$(CC)" /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(INC) ${src}
+ "$(DLINK)" /OUT:$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(SLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
+ GenFw -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll
+
+[Build.Masm16-Code-File]
+ <InputFile>
+ ?.asm16, ?.Asm16, ?.ASM16
+
+ <OutputFile>
+ $(OUTPUT_DIR)(+)${s_base}.com
+
+ <Command.MSFT, Command.INTEL>
+ cd $(OUTPUT_DIR)(+)${s_dir}
+ "$(ASM)" /nologo /c /omf /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj ${src}
+ "$(ASMLINK)" $(ASMLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj,${dst},,,,
+
+[Build.Microcode-File]
+ <InputFile>
+ ?.txt, ?.TXT, ?.Txt
+
+ <OutputFile>
+ $(OUTPUT_DIR)(+)${s_base}.mcb
+
+ <Command>
+ GenFw -o ${dst} -m ${src}
+
+[Build.Microcode-Binary-File]
+ <InputFile>
+ *.mcb
+
+ <OutputFile>
+ $(OUTPUT_DIR)(+)$(MODULE_NAME).bin
+
+ <Command>
+ GenFw -o ${dst} -j ${src}
+
+[Build.Unicode-Text-File]
+ <InputFile>
+ *.uni, *.Uni, *.UNI
+
+ <OutputFile>
+ $(DEBUG_DIR)(+)AutoGen.c
+ $(DEBUG_DIR)(+)AutoGen.h
+
+ <Command>
+
diff --git a/BaseTools/Conf/target.template b/BaseTools/Conf/target.template
new file mode 100644
index 0000000000..e8e3243873
--- /dev/null
+++ b/BaseTools/Conf/target.template
@@ -0,0 +1,71 @@
+#
+# Copyright (c) 2006-2007, Intel Corporation
+#
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Filename: target.template
+#
+# 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 FPD 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 FPD files.
+ACTIVE_PLATFORM = Nt32Pkg/Nt32Pkg.dsc
+
+# TARGET List Optional Zero or more of the following: DEBUG, RELEASE,
+# UserDefined; separated by a space character.
+# If the line is missing or no value is specified, all
+# valid targets specified in the FPD file will attempt
+# to be built. The following line will build all platform
+# targets.
+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 or ARM.
+# Multiple values can be specified on a single line, using
+# space charaters to separate the values. These are used
+# during the parsing of an FPD file, restricting the build
+# output target(s.)
+# The Build Target ARCH is determined by a logical AND of:
+# FPD BuildOptions: <SupportedArchitectures> tag
+# If not specified, then all valid architectures specified
+# in the FPD 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,
+# tools_def.txt will be used for the build. This file
+# MUST be located in the WORKSPACE/Conf directory.
+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 = MYTOOLS
+
+# MULTIPLE_THREAD FLAG Optional Flag to enable multi-thread build. If not specified, default
+# is "Disable". If your computer is multi-core or multiple CPUs,
+# enabling this feature will bring much benefit.
+# This feature is only available for "spawn" build mode, and
+# only for PLATFORM build. The clean, cleanall or
+# stand-alone module build is still using the normal way.
+MULTIPLE_THREAD = Disable
+
+# MAX_CONCURRENT_THREAD_NUMBER NUMBER Optional The number of concurrent threads. Default is 2. Recommend to
+# set this value to one more than the number of your compurter
+# cores or CPUs.
+MAX_CONCURRENT_THREAD_NUMBER = 2
diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
new file mode 100644
index 0000000000..b099e0ee6d
--- /dev/null
+++ b/BaseTools/Conf/tools_def.template
@@ -0,0 +1,749 @@
+#
+# Copyright (c) 2006-2007, Intel Corporation
+#
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+
+IDENTIFIER = Default TOOL_CHAIN_CONF
+
+# common path macros
+DEFINE VSNET_BIN = C:\Program Files\Microsoft Visual Studio .NET\Vc7\bin
+DEFINE VSNET_DLL = C:\Program Files\Microsoft Visual Studio .NET\Common7\IDE
+
+DEFINE VSNET2003_BIN = C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin
+DEFINE VSNET2003_DLL = C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE
+
+DEFINE VS2005EXP_BIN = C:\Program Files\Microsoft Visual Studio 8\Vc\bin
+DEFINE VS2005EXP_DLL = C:\Program Files\Microsoft Visual Studio 8\Common7\IDE
+
+DEFINE VS2005STD_BIN = C:\Program Files\Microsoft Visual Studio 8\Vc\bin
+DEFINE VS2005STD_DLL = C:\Program Files\Microsoft Visual Studio 8\Common7\IDE
+
+DEFINE VS2005PRO_BIN = C:\Program Files\Microsoft Visual Studio 8\Vc\bin
+DEFINE VS2005PRO_BINX64 = C:\Program Files\Microsoft Visual Studio 8\Vc\bin\x86_amd64
+DEFINE VS2005PRO_DLL = C:\Program Files\Microsoft Visual Studio 8\Common7\IDE
+
+DEFINE VS2005TEAMSUITE_BIN = C:\Program Files\Microsoft Visual Studio 8\Vc\bin
+DEFINE VS2005TEAMSUITE_BINX64 = C:\Program Files\Microsoft Visual Studio 8\Vc\bin\x86_amd64
+DEFINE VS2005TEAMSUITE_BIN64 = C:\Program Files\Microsoft Visual Studio 8\Vc\bin\x86_ia64
+DEFINE VS2005TEAMSUITE_DLL = C:\Program Files\Microsoft Visual Studio 8\Common7\IDE
+
+DEFINE WINDDK_BIN16 = C:\WINDDK\3790.1830\bin\bin16
+DEFINE WINDDK_BIN32 = C:\WINDDK\3790.1830\bin\x86
+DEFINE WINDDK_BINX64 = C:\WINDDK\3790.1830\bin\win64\x86\amd64
+DEFINE WINDDK_BIN64 = C:\WINDDK\3790.1830\bin\win64\x86
+
+DEFINE ICC_BIN32 = C:\Program Files\Intel\Compiler\C++\9.1\IA32\Bin
+DEFINE ICC_BINX64 = C:\Program Files\Intel\Compiler\C++\9.1\EM64T\Bin
+DEFINE ICC_BIN64 = C:\Program Files\Intel\Compiler\C++\9.1\Itanium\Bin
+
+DEFINE EBC_BIN = C:\Program Files\Intel\EBC\Bin
+
+DEFINE ELFGCC_BIN = /usr/bin
+
+DEFINE PEGCC_BIN32 = /opt/tiano/i386-tiano-pe/i386-tiano-pe/bin
+DEFINE PEGCC_BINX64 = /opt/tiano/x86_64-pc-mingw64/x86_64-pc-mingw64/bin
+
+DEFINE CYGWIN_BIN = c:/cygwin/bin
+DEFINE CYGWIN_BIN32 = 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 ASL_BIN = C:\ASL
+
+####################################################################################
+#
+# format: TARGET_TOOLCHAIN_ARCH_COMMANDTYPE_ATTRIBUTE = <string>
+# priorty:
+# 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
+# =====================
+# VS2003 - Microsoft Visual Studio .NET 2003
+# VS2005EXP* - Microsoft Visual Studio 2005 Express Edition
+# VS2005STD* - Microsoft Visual Studio 2005 Standard Edition
+# VS2005PRO - Microsoft Visual Studio 2005 Professional Edition
+# VS2005TEAMSUITE* - Microsoft Visual Studio 2005 Team Suite Edition
+# WINDDK3790x1830 - Microsoft Windows DDK 3790.1830
+# UINIXGCC - UNIX GCC
+# ELFGCC - Linux ELF GCC
+# CYGWINGCC - CygWin GCC
+# ICC - Intel C Compiler V9.1
+# MYTOOLS - Settings compatible with previous versions of tools_def.template
+#
+# * Commented out - All versions of VS2005 use the same standard install directory
+#
+####################################################################################
+####################################################################################
+#
+# Supported Tool Chain Family
+# ===========================
+# MSFT - Microsoft
+# GCC - GNU GCC
+# INTEL - INTEL
+
+####################################################################################
+#
+# Microsoft Visual Studio .NET 2003 (IA-32 only, with Link Time Code Generation)
+#
+####################################################################################
+# VS2003 - Microsoft Visual Studio .NET 2003
+*_VS2003_*_*_FAMILY = MSFT
+
+##################
+# IA32 definitions
+##################
+*_VS2003_IA32_*_DLL = DEF(VSNET2003_DLL)
+
+*_VS2003_IA32_MAKE_PATH = DEF(VSNET2003_BIN)\nmake.exe
+*_VS2003_IA32_CC_PATH = DEF(VSNET2003_BIN)\cl.exe
+*_VS2003_IA32_VFRPP_PATH = DEF(VSNET2003_BIN)\cl.exe
+*_VS2003_IA32_SLINK_PATH = DEF(VSNET2003_BIN)\lib.exe
+*_VS2003_IA32_DLINK_PATH = DEF(VSNET2003_BIN)\link.exe
+*_VS2003_IA32_ASMLINK_PATH = DEF(WINDDK_BIN16)\link.exe
+*_VS2003_IA32_APP_PATH = DEF(VSNET2003_BIN)\cl.exe
+*_VS2003_IA32_PP_PATH = DEF(VSNET2003_BIN)\cl.exe
+*_VS2003_IA32_ASM_PATH = DEF(VSNET2003_BIN)\ml.exe
+*_VS2003_IA32_PCH_PATH = DEF(VSNET2003_BIN)\cl.exe
+
+ *_VS2003_IA32_MAKE_FLAGS = /nologo
+ *_VS2003_IA32_APP_FLAGS = /nologo /E /TC
+ *_VS2003_IA32_PP_FLAGS = /nologo /E /TC /FIAutoGen.h
+ *_VS2003_IA32_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FIAutoGen.h
+ DEBUG_VS2003_IA32_CC_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GF /Gs8192 /Zi /Gm
+RELEASE_VS2003_IA32_CC_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GF /Gs8192
+ DEBUG_VS2003_IA32_PCH_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GF /Gs8192 /Fp$(DEST_DIR_OUTPUT)/AutoGen.h.gch /Yc /TC /Zi /Gm
+RELEASE_VS2003_IA32_PCH_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GF /Gs8192 /Fp$(DEST_DIR_OUTPUT)/AutoGen.h.gch /Yc /TC
+ DEBUG_VS2003_IA32_ASM_FLAGS = /nologo /W3 /WX /c /coff /Cx /Zd /W0 /Zi
+RELEASE_VS2003_IA32_ASM_FLAGS = /nologo /W3 /WX /c /coff /Cx /Zd /W0
+ *_VS2003_IA32_SLINK_FLAGS = /nologo /LTCG
+ DEBUG_VS2003_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
+RELEASE_VS2003_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text
+
+####################################################################################
+#
+# Microsoft Visual Studio 2005
+#
+####################################################################################
+# VS2005PRO - Microsoft Visual Studio 2005 Professional Edition
+*_VS2005PRO_*_*_FAMILY = MSFT
+
+*_VS2005PRO_*_TIANO_PATH = TianoCompress.exe
+*_VS2005PRO_*_TIANO_GUID = A31280AD-481E-41B6-95E8-127F4C984779
+
+*_VS2005PRO_*_ASL_PATH = DEF(ASL_BIN)\iasl.exe
+*_VS2005PRO_*_MAKE_PATH = DEF(VS2005PRO_BIN)\nmake.exe
+
+*_VS2005PRO_*_MAKE_FLAGS = /nologo
+*_VS2005PRO_*_SLINK_FLAGS = /NOLOGO /LTCG
+*_VS2005PRO_*_APP_FLAGS = /nologo /E /TC
+*_VS2005PRO_*_PP_FLAGS = /nologo /E /TC /FIAutoGen.h
+*_VS2005PRO_*_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FIAutoGen.h
+##################
+# IA32 definitions
+##################
+*_VS2005PRO_IA32_*_DLL = DEF(VS2005PRO_DLL)
+
+*_VS2005PRO_IA32_CC_PATH = DEF(VS2005PRO_BIN)\cl.exe
+*_VS2005PRO_IA32_VFRPP_PATH = DEF(VS2005PRO_BIN)\cl.exe
+*_VS2005PRO_IA32_SLINK_PATH = DEF(VS2005PRO_BIN)\lib.exe
+*_VS2005PRO_IA32_DLINK_PATH = DEF(VS2005PRO_BIN)\link.exe
+*_VS2005PRO_IA32_ASMLINK_PATH = DEF(WINDDK_BIN16)\link.exe
+*_VS2005PRO_IA32_APP_PATH = DEF(VS2005PRO_BIN)\cl.exe
+*_VS2005PRO_IA32_PP_PATH = DEF(VS2005PRO_BIN)\cl.exe
+*_VS2005PRO_IA32_ASM_PATH = DEF(VS2005PRO_BIN)\ml.exe
+
+ DEBUG_VS2005PRO_IA32_CC_FLAGS = /GS- /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GF /Gs8192 /Zi /Gm
+RELEASE_VS2005PRO_IA32_CC_FLAGS = /GS- /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GF /Gs8192
+ DEBUG_VS2005PRO_IA32_ASM_FLAGS = /nologo /W3 /WX /c /coff /Cx /Zd /W0 /Zi
+RELEASE_VS2005PRO_IA32_ASM_FLAGS = /nologo /W3 /WX /c /coff /Cx /Zd /W0
+ DEBUG_VS2005PRO_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
+RELEASE_VS2005PRO_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text
+ *_VS2005PRO_IA32_ASMLINK_FLAGS = /nologo /tiny
+
+##################
+# X64 definitions
+##################
+*_VS2005PRO_X64_*_DLL = DEF(VS2005PRO_DLL)
+
+*_VS2005PRO_X64_CC_PATH = DEF(VS2005PRO_BINX64)\cl.exe
+*_VS2005PRO_X64_PP_PATH = DEF(VS2005PRO_BINX64)\cl.exe
+*_VS2005PRO_X64_APP_PATH = DEF(VS2005PRO_BINX64)\cl.exe
+*_VS2005PRO_X64_VFRPP_PATH = DEF(VS2005PRO_BINX64)\cl.exe
+*_VS2005PRO_X64_ASM_PATH = DEF(VS2005PRO_BINX64)\ml64.exe
+*_VS2005PRO_X64_SLINK_PATH = DEF(VS2005PRO_BINX64)\lib.exe
+*_VS2005PRO_X64_DLINK_PATH = DEF(VS2005PRO_BINX64)\link.exe
+*_VS2005PRO_X64_ASMLINK_PATH = DEF(VS2005PRO_BINX64)\link.exe
+
+ DEBUG_VS2005PRO_X64_CC_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FIAutoGen.h /EHs-c- /GF /Zi /Gm
+RELEASE_VS2005PRO_X64_CC_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FIAutoGen.h /EHs-c- /GF
+ DEBUG_VS2005PRO_X64_ASM_FLAGS = /nologo /W3 /WX /c /Cx /Zd /Zi
+RELEASE_VS2005PRO_X64_ASM_FLAGS = /nologo /W3 /WX /c /Cx /Zd
+ DEBUG_VS2005PRO_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /Machine:AMD64 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
+RELEASE_VS2005PRO_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /Machine:AMD64 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text
+
+####################################################################################
+# VS2005TEAMSUITE - Microsoft Visual Studio 2005 Team Suite Edition
+*_VS2005TEAMSUITE_*_*_FAMILY = MSFT
+
+*_VS2005TEAMSUITE_*_TIANO_PATH = TianoCompress.exe
+*_VS2005TEAMSUITE_*_TIANO_GUID = A31280AD-481E-41B6-95E8-127F4C984779
+
+*_VS2005TEAMSUITE_*_ASL_PATH = DEF(ASL_BIN)\iasl.exe
+*_VS2005TEAMSUITE_*_MAKE_PATH = DEF(VS2005TEAMSUITE_BIN)\nmake.exe
+
+
+*_VS2005TEAMSUITE_*_MAKE_FLAGS = /nologo
+*_VS2005TEAMSUITE_*_SLINK_FLAGS = /NOLOGO /LTCG
+*_VS2005TEAMSUITE_*_APP_FLAGS = /nologo /E /TC
+*_VS2005TEAMSUITE_*_PP_FLAGS = /nologo /E /TC /FIAutoGen.h
+*_VS2005TEAMSUITE_*_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FIAutoGen.h
+##################
+# IA32 definitions
+##################
+*_VS2005TEAMSUITE_IA32_*_DLL = DEF(VS2005TEAMSUITE_DLL)
+
+*_VS2005TEAMSUITE_IA32_MAKE_PATH = DEF(VS2005TEAMSUITE_BIN)\nmake.exe
+*_VS2005TEAMSUITE_IA32_CC_PATH = DEF(VS2005TEAMSUITE_BIN)\cl.exe
+*_VS2005TEAMSUITE_IA32_VFRPP_PATH = DEF(VS2005TEAMSUITE_BIN)\cl.exe
+*_VS2005TEAMSUITE_IA32_SLINK_PATH = DEF(VS2005TEAMSUITE_BIN)\lib.exe
+*_VS2005TEAMSUITE_IA32_DLINK_PATH = DEF(VS2005TEAMSUITE_BIN)\link.exe
+*_VS2005TEAMSUITE_IA32_ASMLINK_PATH = DEF(WINDDK_BIN16)\link.exe
+*_VS2005TEAMSUITE_IA32_APP_PATH = DEF(VS2005TEAMSUITE_BIN)\cl.exe
+*_VS2005TEAMSUITE_IA32_PP_PATH = DEF(VS2005TEAMSUITE_BIN)\cl.exe
+*_VS2005TEAMSUITE_IA32_ASM_PATH = DEF(VS2005TEAMSUITE_BIN)\ml.exe
+
+ *_VS2005TEAMSUITE_IA32_MAKE_FLAGS = /nologo
+ DEBUG_VS2005TEAMSUITE_IA32_CC_FLAGS = /GS- /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GF /Gs8192 /Zi /Gm
+RELEASE_VS2005TEAMSUITE_IA32_CC_FLAGS = /GS- /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GF /Gs8192
+ DEBUG_VS2005TEAMSUITE_IA32_ASM_FLAGS = /nologo /W3 /WX /c /coff /Cx /Zd /W0 /Zi
+RELEASE_VS2005TEAMSUITE_IA32_ASM_FLAGS = /nologo /W3 /WX /c /coff /Cx /Zd /W0
+ DEBUG_VS2005TEAMSUITE_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
+RELEASE_VS2005TEAMSUITE_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text
+ *_VS2005TEAMSUITE_IA32_ASMLINK_FLAGS= /nologo /tiny
+
+##################
+# X64 definitions
+##################
+*_VS2005TEAMSUITE_X64_*_DLL = DEF(VS2005TEAMSUITE_DLL)
+
+*_VS2005TEAMSUITE_X64_CC_PATH = DEF(VS2005TEAMSUITE_BINX64)\cl.exe
+*_VS2005TEAMSUITE_X64_PP_PATH = DEF(VS2005TEAMSUITE_BINX64)\cl.exe
+*_VS2005TEAMSUITE_X64_APP_PATH = DEF(VS2005TEAMSUITE_BINX64)\cl.exe
+*_VS2005TEAMSUITE_X64_VFRPP_PATH = DEF(VS2005TEAMSUITE_BINX64)\cl.exe
+*_VS2005TEAMSUITE_X64_ASM_PATH = DEF(VS2005TEAMSUITE_BINX64)\ml64.exe
+*_VS2005TEAMSUITE_X64_SLINK_PATH = DEF(VS2005TEAMSUITE_BINX64)\lib.exe
+*_VS2005TEAMSUITE_X64_DLINK_PATH = DEF(VS2005TEAMSUITE_BINX64)\link.exe
+
+ DEBUG_VS2005TEAMSUITE_X64_CC_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FIAutoGen.h /EHs-c- /GF /Zi /Gm
+RELEASE_VS2005TEAMSUITE_X64_CC_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FIAutoGen.h /EHs-c- /GF
+ DEBUG_VS2005TEAMSUITE_X64_ASM_FLAGS = /nologo /W3 /WX /c /Cx /Zd /Zi
+RELEASE_VS2005TEAMSUITE_X64_ASM_FLAGS = /nologo /W3 /WX /c /Cx /Zd
+ DEBUG_VS2005TEAMSUITE_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /Machine:AMD64 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
+RELEASE_VS2005TEAMSUITE_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /Machine:AMD64 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text
+
+##################
+# IPF definitions
+##################
+*_VS2005TEAMSUITE_IPF_*_DLL = DEF(VS2005TEAMSUITE_DLL)
+
+*_VS2005TEAMSUITE_IPF_PP_PATH = DEF(VS2005TEAMSUITE_BIN64)\cl.exe
+*_VS2005TEAMSUITE_IPF_APP_PATH = DEF(VS2005TEAMSUITE_BIN64)\cl.exe
+*_VS2005TEAMSUITE_IPF_VFRPP_PATH = DEF(VS2005TEAMSUITE_BIN64)\cl.exe
+*_VS2005TEAMSUITE_IPF_CC_PATH = DEF(VS2005TEAMSUITE_BIN64)\cl.exe
+*_VS2005TEAMSUITE_IPF_ASM_PATH = DEF(VS2005TEAMSUITE_BIN64)\ias.exe
+*_VS2005TEAMSUITE_IPF_SLINK_PATH = DEF(VS2005TEAMSUITE_BIN64)\lib.exe
+*_VS2005TEAMSUITE_IPF_DLINK_PATH = DEF(VS2005TEAMSUITE_BIN64)\link.exe
+
+ DEBUG_VS2005TEAMSUITE_IPF_CC_FLAGS = /GS- /nologo /W4 /WX /EHs-c- /Gy /c /Os /GL /X /FIAutoGen.h /Zi
+RELEASE_VS2005TEAMSUITE_IPF_CC_FLAGS = /GS- /nologo /W4 /WX /EHs-c- /Gy /c /Os /GL /X /FIAutoGen.h
+ DEBUG_VS2005TEAMSUITE_IPF_ASM_FLAGS = -N us -X explicit -M ilp64 -N so -W4 -d debug
+RELEASE_VS2005TEAMSUITE_IPF_ASM_FLAGS = -N us -X explicit -M ilp64 -N so -W4
+ DEBUG_VS2005TEAMSUITE_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF,ICF /IGNORE:4086 /MAP /ALIGN:32 /MACHINE:IA64 /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEBUG_DIR)/$(BASE_NAME).map /PDB:$(DEBUG_DIR)/$(BASE_NAME).pdb /DEBUG
+RELEASE_VS2005TEAMSUITE_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF.ICF /IGNORE:4086 /MAP /ALIGN:32 /MACHINE:IA64 /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEBUG_DIR)/$(BASE_NAME).map /PDB:$(DEBUG_DIR)/$(BASE_NAME).pdb
+
+####################################################################################
+#
+# Microsoft Device Driver Kit 3790.1830 (IA-32, X64, Itanium, with Link Time Code Generation)
+#
+####################################################################################
+# WINDDK3790x1830 - Microsoft Windows DDK 3790.1830
+*_WINDDK3790x1830_*_*_FAMILY = MSFT
+
+*_WINDDK3790x1830_*_MAKE_PATH = DEF(WINDDK_BIN32)\nmake.exe
+*_WINDDK3790x1830_*_MAKE_FLAGS = /nologo
+
+*_WINDDK3790x1830_*_PP_FLAGS = /nologo /E /TC /FIAutoGen.h
+*_WINDDK3790x1830_*_APP_FLAGS = /nologo /E /TC
+*_WINDDK3790x1830_*_SLINK_FLAGS = /nologo /LTCG
+*_WINDDK3790x1830_*_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FIAutoGen.h
+
+##################
+# ASL definitions
+##################
+*_WINDDK3790x1830_*_ASL_PATH = DEF(ASL_BIN)\iasl.exe
+
+##################
+# IA32 definitions
+##################
+*_WINDDK3790x1830_IA32_CC_PATH = DEF(WINDDK_BIN32)\cl.exe
+*_WINDDK3790x1830_IA32_SLINK_PATH = DEF(WINDDK_BIN32)\lib.exe
+*_WINDDK3790x1830_IA32_DLINK_PATH = DEF(WINDDK_BIN32)\link.exe
+*_WINDDK3790x1830_IA32_ASMLINK_PATH = DEF(WINDDK_BIN16)\link.exe
+*_WINDDK3790x1830_IA32_PP_PATH = DEF(WINDDK_BIN32)\cl.exe
+*_WINDDK3790x1830_IA32_VFRPP_PATH = DEF(WINDDK_BIN32)\cl.exe
+*_WINDDK3790x1830_IA32_APP_PATH = DEF(WINDDK_BIN32)\cl.exe
+*_WINDDK3790x1830_IA32_PCH_PATH = DEF(WINDDK_BIN32)\cl.exe
+*_WINDDK3790x1830_IA32_ASM_PATH = DEF(WINDDK_BIN32)\ml.exe
+
+ DEBUG_WINDDK3790x1830_IA32_CC_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GF /Gs8192 /Zi /Gm
+RELEASE_WINDDK3790x1830_IA32_CC_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GF /Gs8192
+ DEBUG_WINDDK3790x1830_IA32_PCH_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GF /Gs8192 /Fp$(DEST_DIR_OUTPUT)/AutoGen.h.gch /Yc /TC /Zi /Gm
+RELEASE_WINDDK3790x1830_IA32_PCH_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GF /Gs8192 /Fp$(DEST_DIR_OUTPUT)/AutoGen.h.gch /Yc /TC
+ DEBUG_WINDDK3790x1830_IA32_ASM_FLAGS = /nologo /W3 /WX /c /coff /Cx /Zd /W0 /Zi
+RELEASE_WINDDK3790x1830_IA32_ASM_FLAGS = /nologo /W3 /WX /c /coff /Cx /Zd /W0
+ DEBUG_WINDDK3790x1830_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
+RELEASE_WINDDK3790x1830_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text
+ *_WINDDK3790x1830_IA32_ASMLINK_FLAGS = /nologo /tiny
+
+##################
+# x64 definitions
+##################
+*_WINDDK3790x1830_X64_CC_PATH = DEF(WINDDK_BINX64)\cl.exe
+*_WINDDK3790x1830_X64_SLINK_PATH = DEF(WINDDK_BINX64)\lib.exe
+*_WINDDK3790x1830_X64_DLINK_PATH = DEF(WINDDK_BINX64)\link.exe
+*_WINDDK3790x1830_X64_ASMLINK_PATH = DEF(WINDDK_BIN16)\link.exe
+*_WINDDK3790x1830_X64_PP_PATH = DEF(WINDDK_BINX64)\cl.exe
+*_WINDDK3790x1830_X64_VFRPP_PATH = DEF(WINDDK_BINX64)\cl.exe
+*_WINDDK3790x1830_X64_APP_PATH = DEF(WINDDK_BINX64)\cl.exe
+*_WINDDK3790x1830_X64_PCH_PATH = DEF(WINDDK_BINX64)\cl.exe
+*_WINDDK3790x1830_X64_ASM_PATH = DEF(WINDDK_BINX64)\ml64.exe
+
+ DEBUG_WINDDK3790x1830_X64_CC_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FIAutoGen.h /Zi /Gm /EHs-c- /GF
+RELEASE_WINDDK3790x1830_X64_CC_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FIAutoGen.h /EHs-c- /GF
+ DEBUG_WINDDK3790x1830_X64_PCH_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FIAutoGen.h /Fp$(DEST_DIR_OUTPUT)/AutoGen.h.gch /Yc /TC /Zi /Gm /EHs-c- /GF
+RELEASE_WINDDK3790x1830_X64_PCH_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FIAutoGen.h /Fp$(DEST_DIR_OUTPUT)/AutoGen.h.gch /Yc /TC /EHs-c- /GF
+ DEBUG_WINDDK3790x1830_X64_ASM_FLAGS = /nologo /W3 /WX /c /Cx /Zd /Zi
+RELEASE_WINDDK3790x1830_X64_ASM_FLAGS = /nologo /W3 /WX /c /Cx /Zd
+ DEBUG_WINDDK3790x1830_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /Machine:AMD64 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
+RELEASE_WINDDK3790x1830_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /Machine:AMD64 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text
+
+##################
+# IPF definitions
+##################
+*_WINDDK3790x1830_IPF_CC_PATH = DEF(WINDDK_BIN64)\cl.exe
+*_WINDDK3790x1830_IPF_SLINK_PATH = DEF(WINDDK_BIN64)\lib.exe
+*_WINDDK3790x1830_IPF_DLINK_PATH = DEF(WINDDK_BIN64)\link.exe
+*_WINDDK3790x1830_IPF_ASMLINK_PATH = DEF(WINDDK_BIN16)\link.exe
+*_WINDDK3790x1830_IPF_PP_PATH = DEF(WINDDK_BIN64)\cl.exe
+*_WINDDK3790x1830_IPF_VFRPP_PATH = DEF(WINDDK_BIN64)\cl.exe
+*_WINDDK3790x1830_IPF_APP_PATH = DEF(WINDDK_BIN64)\cl.exe
+*_WINDDK3790x1830_IPF_PCH_PATH = DEF(WINDDK_BIN64)\cl.exe
+*_WINDDK3790x1830_IPF_ASM_PATH = DEF(WINDDK_BIN64)\ias.exe
+
+ DEBUG_WINDDK3790x1830_IPF_CC_FLAGS = /GS- /nologo /W4 /WX /EHs-c- /Gy /c /Os /GL /X /FIAutoGen.h /Zi
+RELEASE_WINDDK3790x1830_IPF_CC_FLAGS = /GS- /nologo /W4 /WX /EHs-c- /Gy /c /Os /GL /X /FIAutoGen.h
+ DEBUG_WINDDK3790x1830_IPF_PCH_FLAGS = /GS- /nologo /W4 /WX /EHs-c- /Gy /c /Os /GL /X /FIAutoGen.h /Fp$(DEST_DIR_OUTPUT)/AutoGen.h.gch /Yc /TC /Zi
+RELEASE_WINDDK3790x1830_IPF_PCH_FLAGS = /GS- /nologo /W4 /WX /EHs-c- /Gy /c /Os /GL /X /FIAutoGen.h /Fp$(DEST_DIR_OUTPUT)/AutoGen.h.gch /Yc /TC
+ DEBUG_WINDDK3790x1830_IPF_ASM_FLAGS = -N us -X explicit -M ilp64 -N so -W4 -d debug
+RELEASE_WINDDK3790x1830_IPF_ASM_FLAGS = -N us -X explicit -M ilp64 -N so -W4
+ DEBUG_WINDDK3790x1830_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF,ICF /IGNORE:4086 /MAP /ALIGN:32 /MACHINE:IA64 /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEST_DIR_DEBUG)/$(BASE_NAME).map /PDB:$(DEST_DIR_DEBUG)/$(BASE_NAME).pdb /DEBUG
+RELEASE_WINDDK3790x1830_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF.ICF /IGNORE:4086 /MAP /ALIGN:32 /MACHINE:IA64 /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEST_DIR_DEBUG)/$(BASE_NAME).map /PDB:$(DEST_DIR_DEBUG)/$(BASE_NAME).pdb
+
+##################
+# EBC definitions
+##################
+*_WINDDK3790x1830_EBC_*_FAMILY = INTEL
+
+*_WINDDK3790x1830_EBC_PP_PATH = DEF(EBC_BIN)\iec.exe
+*_WINDDK3790x1830_EBC_CC_PATH = DEF(EBC_BIN)\iec.exe
+*_WINDDK3790x1830_EBC_DLINK_PATH = DEF(EBC_BIN)\link.exe
+*_WINDDK3790x1830_EBC_SLINK_PATH = DEF(EBC_BIN)\link.exe
+
+*_WINDDK3790x1830_EBC_CC_FLAGS = /nologo /c /W3 /WX /FIAutoGen.h
+*_WINDDK3790x1830_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC
+*_WINDDK3790x1830_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER
+
+####################################################################################
+#
+# Unix GCC
+#
+####################################################################################
+# UINIXGCC - UINIX GCC
+*_UNIXGCC_*_*_FAMILY = GCC
+
+*_UNIXGCC_*_DLINK_FLAGS = -nostdlib -O2 --gc-sections --dll --export-all-symbols --entry _$(ENTRYPOINT) --file-alignment 0x20 --section-alignment 0x20
+*_UNIXGCC_*_ASM_FLAGS = -c -imacros $(DEST_DIR_DEBUG)/AutoGen.h
+*_UNIXGCC_*_PP_FLAGS = -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h
+*_UNIXGCC_*_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE --include AutoGen.h
+
+##################
+# IA32 definitions
+##################
+*_UNIXGCC_IA32_CC_PATH = DEF(PEGCC_BIN32)/gcc
+*_UNIXGCC_IA32_SLINK_PATH = DEF(PEGCC_BIN32)/ar
+*_UNIXGCC_IA32_DLINK_PATH = DEF(PEGCC_BIN32)/ld
+*_UNIXGCC_IA32_ASM_PATH = DEF(PEGCC_BIN32)/gcc
+*_UNIXGCC_IA32_PP_PATH = DEF(PEGCC_BIN32)/gcc
+*_UNIXGCC_IA32_VFRPP_PATH = DEF(PEGCC_BIN32)/cc
+
+*_UNIXGCC_IA32_CC_FLAGS = -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-missing-braces -c -include AutoGen.h
+
+##################
+# X64 definitions
+##################
+*_UNIXGCC_X64_CC_PATH = DEF(PEGCC_BINX64)/gcc
+*_UNIXGCC_X64_SLINK_PATH = DEF(PEGCC_BINX64)/ar
+*_UNIXGCC_X64_DLINK_PATH = DEF(PEGCC_BINX64)/ld
+*_UNIXGCC_X64_ASM_PATH = DEF(PEGCC_BINX64)/gcc
+*_UNIXGCC_X64_PP_PATH = DEF(PEGCC_BINX64)/gcc
+*_UNIXGCC_X64_VFRPP_PATH = DEF(PEGCC_BINX64)/gcc
+
+*_UNIXGCC_X64_CC_FLAGS = -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-missing-braces -c -include AutoGen.h -D_EFI_P64
+
+####################################################################################
+#
+# Cygwin GCC
+#
+####################################################################################
+# CYGWINGCC - CygWin GCC
+*_CYGWINGCC_*_*_FAMILY = GCC
+
+*_CYGWINGCC_*_*_DPATH = DEF(CYGWIN_BIN)
+*_CYGWINGCC_*_ASL_PATH = DEF(ASL_BIN)/iasl.exe
+*_CYGWINGCC_*_MAKE_PATH = DEF(VSNET2003_BIN)\nmake.exe
+
+*_CYGWINGCC_*_MAKE_FLAGS = /nologo
+*_CYGWINGCC_*_DLINK_FLAGS = -nostdlib -O2 --gc-sections --dll --export-all-symbols --entry _$(ENTRYPOINT) --file-alignment 0x20 --section-alignment 0x20
+*_CYGWINGCC_*_ASM_FLAGS = -c -x assembler -imacros AutoGen.h
+*_CYGWINGCC_*_PP_FLAGS = -E -x assembler-with-cpp -include AutoGen.h
+*_CYGWINGCC_*_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE --include AutoGen.h
+
+##################
+# IA32 definitions
+##################
+*_CYGWINGCC_IA32_CC_PATH = DEF(CYGWIN_BIN32)/gcc
+*_CYGWINGCC_IA32_SLINK_PATH = DEF(CYGWIN_BIN32)/ar
+*_CYGWINGCC_IA32_DLINK_PATH = DEF(CYGWIN_BIN32)/ld
+*_CYGWINGCC_IA32_ASM_PATH = DEF(CYGWIN_BIN32)/gcc
+*_CYGWINGCC_IA32_PP_PATH = DEF(CYGWIN_BIN32)/gcc
+*_CYGWINGCC_IA32_VFRPP_PATH = DEF(CYGWIN_BIN32)/gcc
+
+*_CYGWINGCC_IA32_CC_FLAGS = -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -c -include AutoGen.h
+
+##################
+# X64 definitions
+##################
+*_CYGWINGCC_X64_CC_PATH = DEF(CYGWIN_BINX64)/gcc
+*_CYGWINGCC_X64_SLINK_PATH = DEF(CYGWIN_BINX64)/ar
+*_CYGWINGCC_X64_DLINK_PATH = DEF(CYGWIN_BINX64)/ld
+*_CYGWINGCC_X64_ASM_PATH = DEF(CYGWIN_BINX64)/gcc
+*_CYGWINGCC_X64_PP_PATH = DEF(CYGWIN_BINX64)/gcc
+*_CYGWINGCC_X64_VFRPP_PATH = DEF(CYGWIN_BINX64)/gcc
+
+*_CYGWINGCC_X64_CC_FLAGS = -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -c -include AutoGen.h -D_EFI_P64
+
+####################################################################################
+#
+# Elf GCC - This configuration is used to compile on Linux boxes to produce elf
+# binaries.
+#
+####################################################################################
+# ELFGCC - Linux ELF GCC
+*_ELFGCC_*_*_FAMILY = GCC
+
+*_ELFGCC_IA32_CC_PATH = DEF(ELFGCC_BIN)/gcc
+*_ELFGCC_IA32_SLINK_PATH = DEF(ELFGCC_BIN)/ar
+*_ELFGCC_IA32_DLINK_PATH = DEF(ELFGCC_BIN)/ld
+*_ELFGCC_IA32_ASM_PATH = DEF(ELFGCC_BIN)/gcc
+*_ELFGCC_IA32_PP_PATH = DEF(ELFGCC_BIN)/gcc
+*_ELFGCC_IA32_VFRPP_PATH = DEF(ELFGCC_BIN)/gcc
+
+*_ELFGCC_IA32_CC_FLAGS = -m32 -g -fshort-wchar -fno-strict-aliasing -Wall -malign-double -c -include $(DEST_DIR_DEBUG)/AutoGen.h -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings
+*_ELFGCC_*_DLINK_FLAGS = -melf_i386 -nostdlib -n -q -Ttext 0x220 --entry $(ENTRYPOINT) -u $(ENTRYPOINT)
+*_ELFGCC_*_ASM_FLAGS = -m32 -c -imacros $(DEST_DIR_DEBUG)/AutoGen.h
+*_ELFGCC_*_PP_FLAGS = -m32 -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h
+*_ELFGCC_*_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE --include AutoGen.h
+
+
+####################################################################################
+#
+# 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 /FI$(DEST_DIR_DEBUG)/AutoGen.h
+# *_*_EBC_CC_FLAGS = /nologo /FAcs /c /W3 /WX /FI$(DEST_DIR_DEBUG)/AutoGen.h
+# *_*_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /MACHINE:EBC /OPT:REF /NODEFAULTLIB /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:EFI_BOOT_SERVICE_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\iasl.exe
+#
+
+
+####################################################################################
+#
+# Intel(R) C++ Compiler Version 9.1
+#
+# IPF - Intel(R) C++ Compiler for Itanium(R)Version 9.1 Build 20060928 Package ID: W_CC_C_9.1.032
+# ASL - Intel ACPI Source Language COmpiler
+#
+####################################################################################
+# ICC - Intel C Compiler V9.1
+*_ICC_*_*_FAMILY = INTEL
+
+*_ICC_*_ASL_PATH = DEF(ASL_BIN)\iasl.exe
+*_ICC_*_MAKE_PATH = DEF(VSNET2003_BIN)\nmake.exe
+
+*_ICC_*_MAKE_FLAGS = /nologo
+*_ICC_*_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FIAutoGen.h
+*_ICC_*_APP_FLAGS = /nologo /E /TC
+*_ICC_*_PP_FLAGS = /nologo /E /TC /FIAutoGen.h
+
+##################
+# IA32 definitions
+##################
+*_ICC_IA32_PCH_PATH = DEF(ICC_BIN32)\icl.exe
+*_ICC_IA32_CC_PATH = DEF(ICC_BIN32)\icl.exe
+*_ICC_IA32_SLINK_PATH = DEF(ICC_BIN32)\xilib.exe
+# xilib.exe needs lib.exe from Visual Studio
+*_ICC_IA32_SLINK_DLL = DEF(VSNET2003_BIN)
+*_ICC_IA32_DLINK_PATH = DEF(ICC_BIN32)\xilink.exe
+*_ICC_IA32_ASMLINK_PATH = DEF(ICC_BIN32)\xilink.exe
+*_ICC_IA32_PP_PATH = DEF(ICC_BIN32)\icl.exe
+*_ICC_IA32_VFRPP_PATH = DEF(ICC_BIN32)\icl.exe
+*_ICC_IA32_APP_PATH = DEF(ICC_BIN32)\icl.exe
+*_ICC_IA32_ASM_PATH = DEF(VSNET2003_BIN)\ml.exe
+*_ICC_IA32_ASM_DLL = DEF(VSNET2003_DLL)
+
+ DEBUG_ICC_IA32_CC_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /DEFI_FIRMWARE_VENDOR=L\"INTEL\" /FIAutoGen.h /EHs-c- /GF /Gs8192 /Zi /Gm
+RELEASE_ICC_IA32_CC_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /DEFI_FIRMWARE_VENDOR=L\"INTEL\" /FIAutoGen.h /EHs-c- /GF /Gs8192
+ DEBUG_ICC_IA32_PCH_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /DEFI_FIRMWARE_VENDOR=L\"INTEL\" /FI$(DEST_DIR_DEBUG)/AutoGen.h /EHs-c- /GF /Gs8192 /Yc /TC /Zi /Gm
+RELEASE_ICC_IA32_PCH_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /DEFI_FIRMWARE_VENDOR=L\"INTEL\" /FI$(DEST_DIR_DEBUG)/AutoGen.h /EHs-c- /GF /Gs8192 /Yc /TC
+ DEBUG_ICC_IA32_ASM_FLAGS = /nologo /W3 /WX /c /Zd /W0 /Zi
+RELEASE_ICC_IA32_ASM_FLAGS = /nologo /W3 /WX /c /Zd /W0
+ *_ICC_IA32_SLINK_FLAGS = /nologo
+ DEBUG_ICC_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
+RELEASE_ICC_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text
+
+##################
+# X64 definitions
+##################
+*_ICC_X64_PCH_PATH = DEF(ICC_BINX64)\icl.exe
+*_ICC_X64_CC_PATH = DEF(ICC_BINX64)\icl.exe
+*_ICC_X64_SLINK_PATH = DEF(ICC_BINX64)\xilib.exe
+# xilib.exe needs lib.exe from Visual Studio
+*_ICC_X64_SLINK_DLL = DEF(VSNET2003_BIN)
+*_ICC_X64_DLINK_PATH = DEF(ICC_BINX64)\xilink.exe
+*_ICC_X64_ASMLINK_PATH = DEF(ICC_BINX64)\xilink.exe
+*_ICC_X64_PP_PATH = DEF(ICC_BINX64)\icl.exe
+*_ICC_X64_VFRPP_PATH = DEF(ICC_BINX64)\icl.exe
+*_ICC_X64_APP_PATH = DEF(ICC_BINX64)\icl.exe
+*_ICC_X64_ASM_PATH = DEF(WINDDK_BINX64)\ml64.exe
+*_ICC_X64_ASM_DLL = DEF(VSNET2003_DLL)
+
+ DEBUG_ICC_X64_CC_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FI$(DEST_DIR_DEBUG)/AutoGen.h /Zi /Gm /EHs-c- /GF
+RELEASE_ICC_X64_CC_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FI$(DEST_DIR_DEBUG)/AutoGen.h /EHs-c- /GF
+ DEBUG_ICC_X64_PCH_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FI$(DEST_DIR_DEBUG)/AutoGen.h /TC /Zi /Gm /EHs-c- /GF
+RELEASE_ICC_X64_PCH_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FI$(DEST_DIR_DEBUG)/AutoGen.h /TC /EHs-c- /GF
+ DEBUG_ICC_X64_ASM_FLAGS = /nologo /W3 /WX /c /Cx /Zd /Zi
+RELEASE_ICC_X64_ASM_FLAGS = /nologo /W3 /WX /c /Cx /Zd
+ DEBUG_ICC_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /Machine:AMD64 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
+RELEASE_ICC_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /Machine:AMD64 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text
+ *_ICC_X64_SLINK_FLAGS = /nologo /LTCG
+
+
+##################
+# IPF definitions
+##################
+*_ICC_IPF_CC_PATH = DEF(ICC_BIN64)\icl.exe
+# icl.exe needs cl.exe from Visual Studio
+*_ICC_IPF_CC_DLL = DEF(VSNET2003_BIN)
+*_ICC_IPF_SLINK_PATH = DEF(ICC_BIN64)\xilib.exe
+# xilib.exe needs lib.exe from Visual Studio
+*_ICC_IPF_SLINK_DLL = DEF(VSNET2003_BIN);DEF(VSNET2003_DLL)
+*_ICC_IPF_DLINK_PATH = DEF(ICC_BIN64)\xilink.exe
+*_ICC_IPF_ASMLINK_PATH = DEF(ICC_BIN64)\xilink.exe
+*_ICC_IPF_PP_PATH = DEF(ICC_BIN64)\icl.exe
+*_ICC_IPF_VFRPP_PATH = DEF(ICC_BIN64)\icl.exe
+
+*_ICC_IPF_PCH_PATH = DEF(ICC_BIN64)\icl.exe
+*_ICC_IPF_APP_PATH = DEF(ICC_BIN64)\icl.exe
+*_ICC_IPF_ASM_PATH = DEF(ICC_BIN64)\ias.exe
+
+ DEBUG_ICC_IPF_CC_FLAGS = /nologo /W4 /WX /GX /Gy /c /Od /FI$(DEST_DIR_DEBUG)/AutoGen.h /QIA64_fr32 /Zi
+RELEASE_ICC_IPF_CC_FLAGS = /nologo /W4 /WX /GX /Gy /c /Od /FI$(DEST_DIR_DEBUG)/AutoGen.h /QIA64_fr32
+ DEBUG_ICC_IPF_PCH_FLAGS = /nologo /W4 /WX /GX /Gy /c /Os /FI$(DEST_DIR_DEBUG)/AutoGen.h /Yc /TC /Zi
+RELEASE_ICC_IPF_PCH_FLAGS = /nologo /W4 /WX /GX /Gy /c /Os /FI$(DEST_DIR_DEBUG)/AutoGen.h /Yc /TC
+ DEBUG_ICC_IPF_ASM_FLAGS = -N us -X explicit -M ilp64 -N so -W3 -d debug -F COFF32
+RELEASE_ICC_IPF_ASM_FLAGS = -N us -X explicit -M ilp64 -N so -W3 -F COFF32
+ DEBUG_ICC_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF,ICF /IGNORE:4086 /MAP /ALIGN:64 /MACHINE:IA64 /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEST_DIR_DEBUG)/$(BASE_NAME).map /PDB:$(DEST_DIR_DEBUG)/$(BASE_NAME).pdb /DEBUG
+RELEASE_ICC_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF,ICF /IGNORE:4086 /MAP /ALIGN:64 /MACHINE:IA64 /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEST_DIR_DEBUG)/$(BASE_NAME).map /PDB:$(DEST_DIR_DEBUG)/$(BASE_NAME).pdb
+ *_ICC_IPF_SLINK_FLAGS = /nologo
+
+####################################################################################
+#
+# MYTOOLS
+# IA32 - Microsoft Visual Studio .NET 2003 and Microsoft Windows DDK 3790.1830 for 16-bit linker
+# X64 - Microsoft Windows DDK 3790.1830
+# IPF - Microsoft Windows DDK 3790.1830
+# EBC - Intel EFI Byte Code Compiler
+#
+####################################################################################
+# MYTOOLS - Settings compatible with previous versions of tools_def.template
+*_MYTOOLS_*_*_FAMILY = MSFT
+
+*_MYTOOLS_*_TIANO_PATH = TianoCompress.exe
+*_MYTOOLS_*_TIANO_GUID = A31280AD-481E-41B6-95E8-127F4C984779
+
+*_MYTOOLS_*_ASL_PATH = DEF(ASL_BIN)\iasl.exe
+
+*_MYTOOLS_*_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FIAutoGen.h
+
+##################
+# IA32 definitions
+##################
+*_MYTOOLS_IA32_*_DLL = DEF(VSNET2003_DLL)
+
+*_MYTOOLS_IA32_MAKE_PATH = DEF(VSNET2003_BIN)\nmake.exe
+*_MYTOOLS_IA32_CC_PATH = DEF(VSNET2003_BIN)\cl.exe
+*_MYTOOLS_IA32_SLINK_PATH = DEF(VSNET2003_BIN)\lib.exe
+*_MYTOOLS_IA32_DLINK_PATH = DEF(VSNET2003_BIN)\link.exe
+*_MYTOOLS_IA32_ASMLINK_PATH = DEF(WINDDK_BIN16)\link.exe
+*_MYTOOLS_IA32_PP_PATH = DEF(VSNET2003_BIN)\cl.exe
+*_MYTOOLS_IA32_VFRPP_PATH = DEF(VSNET2003_BIN)\cl.exe
+*_MYTOOLS_IA32_APP_PATH = DEF(VSNET2003_BIN)\cl.exe
+*_MYTOOLS_IA32_ASM_PATH = DEF(VSNET2003_BIN)\ml.exe
+*_MYTOOLS_IA32_PCH_PATH = DEF(VSNET2003_BIN)\cl.exe
+
+ *_MYTOOLS_IA32_MAKE_FLAGS = /nologo
+ *_MYTOOLS_IA32_APP_FLAGS = /nologo /E /TC
+ *_MYTOOLS_IA32_PP_FLAGS = /nologo /E /TC /FI$(DEST_DIR_DEBUG)/AutoGen.h
+ DEBUG_MYTOOLS_IA32_CC_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FI$(DEST_DIR_DEBUG)/AutoGen.h /EHs-c- /GF /Gs8192 /Zi /Gm
+RELEASE_MYTOOLS_IA32_CC_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FI$(DEST_DIR_DEBUG)/AutoGen.h /EHs-c- /GF /Gs8192
+ DEBUG_MYTOOLS_IA32_PCH_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FI$(DEST_DIR_DEBUG)/AutoGen.h /EHs-c- /GF /Gs8192 /Fp$(DEST_DIR_OUTPUT)/AutoGen.h.gch /Yc /TC /Zi /Gm
+RELEASE_MYTOOLS_IA32_PCH_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FI$(DEST_DIR_DEBUG)/AutoGen.h /EHs-c- /GF /Gs8192 /Fp$(DEST_DIR_OUTPUT)/AutoGen.h.gch /Yc /TC
+ DEBUG_MYTOOLS_IA32_ASM_FLAGS = /nologo /W3 /WX /c /coff /Cx /Zd /W0 /Zi
+RELEASE_MYTOOLS_IA32_ASM_FLAGS = /nologo /W3 /WX /c /coff /Cx /Zd /W0
+ *_MYTOOLS_IA32_ASMLINK_FLAGS = /nologo /tiny
+ *_MYTOOLS_IA32_SLINK_FLAGS = /nologo /LTCG
+ DEBUG_MYTOOLS_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG /PDB:$(DEST_DIR_DEBUG)/$(BASE_NAME).pdb
+RELEASE_MYTOOLS_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text /PDB:$(DEST_DIR_DEBUG)/$(BASE_NAME).pdb
+
+##################
+# x64 definitions
+##################
+*_MYTOOLS_X64_MAKE_PATH = DEF(WINDDK_BIN32)\nmake.exe
+*_MYTOOLS_X64_CC_PATH = DEF(WINDDK_BINX64)\cl.exe
+*_MYTOOLS_X64_SLINK_PATH = DEF(WINDDK_BINX64)\lib.exe
+*_MYTOOLS_X64_DLINK_PATH = DEF(WINDDK_BINX64)\link.exe
+*_MYTOOLS_X64_ASMLINK_PATH = DEF(WINDDK_BIN16)\link.exe
+*_MYTOOLS_X64_PP_PATH = DEF(WINDDK_BINX64)\cl.exe
+*_MYTOOLS_X64_VFRPP_PATH = DEF(WINDDK_BINX64)\cl.exe
+*_MYTOOLS_X64_APP_PATH = DEF(WINDDK_BINX64)\cl.exe
+*_MYTOOLS_X64_ASM_PATH = DEF(WINDDK_BINX64)\ml64.exe
+*_MYTOOLS_X64_PCH_PATH = DEF(WINDDK_BINX64)\cl.exe
+
+ *_MYTOOLS_X64_SLINK_FLAGS = /nologo /LTCG
+ *_MYTOOLS_X64_APP_FLAGS = /nologo /E /TC
+ *_MYTOOLS_X64_PP_FLAGS = /nologo /E /TC /FI$(DEST_DIR_DEBUG)/AutoGen.h
+ *_MYTOOLS_X64_MAKE_FLAGS = /nologo
+ DEBUG_MYTOOLS_X64_CC_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FI$(DEST_DIR_DEBUG)/AutoGen.h /Zi /Gm /EHs-c- /GF
+RELEASE_MYTOOLS_X64_CC_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FI$(DEST_DIR_DEBUG)/AutoGen.h /EHs-c- /GF
+ DEBUG_MYTOOLS_X64_PCH_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FI$(DEST_DIR_DEBUG)/AutoGen.h /TC /Zi /Gm /EHs-c- /GF
+RELEASE_MYTOOLS_X64_PCH_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FI$(DEST_DIR_DEBUG)/AutoGen.h /TC /EHs-c- /GF
+ DEBUG_MYTOOLS_X64_ASM_FLAGS = /nologo /W3 /WX /c /Cx /Zd /Zi
+RELEASE_MYTOOLS_X64_ASM_FLAGS = /nologo /W3 /WX /c /Cx /Zd
+ DEBUG_MYTOOLS_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /Machine:AMD64 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
+RELEASE_MYTOOLS_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /Machine:AMD64 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text
+
+##################
+# IPF definitions
+##################
+*_MYTOOLS_IPF_MAKE_PATH = DEF(WINDDK_BIN32)\nmake.exe
+*_MYTOOLS_IPF_CC_PATH = DEF(WINDDK_BIN64)\cl.exe
+*_MYTOOLS_IPF_SLINK_PATH = DEF(WINDDK_BIN64)\lib.exe
+*_MYTOOLS_IPF_DLINK_PATH = DEF(WINDDK_BIN64)\link.exe
+*_MYTOOLS_IPF_ASMLINK_PATH = DEF(WINDDK_BIN16)\link.exe
+*_MYTOOLS_IPF_PP_PATH = DEF(WINDDK_BIN64)\cl.exe
+*_MYTOOLS_IPF_VFRPP_PATH = DEF(WINDDK_BIN64)\cl.exe
+*_MYTOOLS_IPF_APP_PATH = DEF(WINDDK_BIN64)\cl.exe
+*_MYTOOLS_IPF_ASM_PATH = DEF(WINDDK_BIN64)\ias.exe
+*_MYTOOLS_IPF_PCH_PATH = DEF(WINDDK_BIN64)\cl.exe
+
+ *_MYTOOLS_IPF_ASM_OUTPUT = "-o "
+
+ *_MYTOOLS_IPF_MAKE_FLAGS = /nologo
+ *_MYTOOLS_IPF_APP_FLAGS = /nologo /E /TC
+ *_MYTOOLS_IPF_PP_FLAGS = /nologo /E /TC /FI$(DEST_DIR_DEBUG)/AutoGen.h
+ DEBUG_MYTOOLS_IPF_CC_FLAGS = /GS- /nologo /W4 /WX /EHs-c- /Gy /c /Ox /GF /GL /X /FI$(DEST_DIR_DEBUG)/AutoGen.h /Zi /Zx
+RELEASE_MYTOOLS_IPF_CC_FLAGS = /GS- /nologo /W4 /WX /EHs-c- /Gy /c /Ox /GF /GL /X /FI$(DEST_DIR_DEBUG)/AutoGen.h /Zx
+ DEBUG_MYTOOLS_IPF_PCH_FLAGS = /GS- /nologo /W4 /WX /EHs-c- /Gy /c /Ox /GF /GL /X /FI$(DEST_DIR_DEBUG)/AutoGen.h /TC /Zi /Zx
+RELEASE_MYTOOLS_IPF_PCH_FLAGS = /GS- /nologo /W4 /WX /EHs-c- /Gy /c /Ox /GF /GL /X /FI$(DEST_DIR_DEBUG)/AutoGen.h /Yc /TC /Zx
+ DEBUG_MYTOOLS_IPF_ASM_FLAGS = -N us -X explicit -M ilp64 -N so -W4 -d debug
+RELEASE_MYTOOLS_IPF_ASM_FLAGS = -N us -X explicit -M ilp64 -N so -W4
+ DEBUG_MYTOOLS_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF /OPT:ICF=10 /IGNORE:4086 /MAP /ALIGN:32 /MACHINE:IA64 /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEST_DIR_DEBUG)/$(BASE_NAME).map /PDB:$(DEST_DIR_DEBUG)/$(BASE_NAME).pdb /DEBUG
+RELEASE_MYTOOLS_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF /OPT:ICF=10 /IGNORE:4086 /MAP /ALIGN:32 /MACHINE:IA64 /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEST_DIR_DEBUG)/$(BASE_NAME).map /PDB:$(DEST_DIR_DEBUG)/$(BASE_NAME).pdb
+ *_MYTOOLS_IPF_SLINK_FLAGS = /nologo /LTCG
+
+##################
+# EBC definitions
+##################
+*_MYTOOLS_EBC_*_FAMILY = INTEL
+
+*_MYTOOLS_EBC_MAKE_PATH = DEF(VSNET2003_BIN)\nmake.exe
+*_MYTOOLS_EBC_PP_PATH = DEF(EBC_BIN)\iec.exe
+*_MYTOOLS_EBC_CC_PATH = DEF(EBC_BIN)\iec.exe
+*_MYTOOLS_EBC_SLINK_PATH = DEF(EBC_BIN)\link.exe
+*_MYTOOLS_EBC_DLINK_PATH = DEF(EBC_BIN)\link.exe
+
+*_MYTOOLS_EBC_MAKE_FLAGS = /nologo
+*_MYTOOLS_EBC_PP_FLAGS = /nologo /E /TC /FIAutoGen.h
+*_MYTOOLS_EBC_CC_FLAGS = /nologo /c /W3 /WX /FIAutoGen.h
+*_MYTOOLS_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC
+*_MYTOOLS_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER
+
diff --git a/BaseTools/ConfTemplates/Darwin/build_rule.txt b/BaseTools/ConfTemplates/Darwin/build_rule.txt
new file mode 100644
index 0000000000..06cfb6d1ba
--- /dev/null
+++ b/BaseTools/ConfTemplates/Darwin/build_rule.txt
@@ -0,0 +1,300 @@
+#
+# Copyright (c) 2007, Intel Corporation
+#
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Filename: build_rule.template
+#
+
+## 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.
+#
+# "[" Build.<File-Type>[.<version>][, Build.<File-Type>[.<version>]] "]" <EOL>
+# <InputFile[.<ToolChainFamily>]> <EOL>
+# [File-Type =] (?|*).<File-Extension> [(\n|,|;) (?|*).<File-Extension>]
+#
+# <OutputFile[.<ToolChainFamily>]> <EOL>
+# <FileFullPath>
+#
+# <Command[.<ToolChainFamily>]> <EOL>
+# <Command1>
+# [<Command2>]
+#
+
+## 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
+# $(LIBS) Static library files of current module
+# $(<tool>_FLAGS) Tools flags of current module
+# $(MODULE_NAME) Current module name
+# $(MODULE_TYPE) Current module type
+# $(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_TYPE_LIST>) 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_FILE_LIST macro.)
+#
+# $(CP) copy command
+# $(MV) move command
+# $(RM) delete command
+# $(MD) create dir command
+# $(RD) remove dir command
+#
+
+## Reserved File-Type
+#
+# Dont'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.C-Code-File]
+ <InputFile>
+ ?.c
+ ?.C
+ ?.cc
+ ?.CC
+ ?.cpp
+ ?.Cpp
+ ?.CPP
+
+ <OutputFile>
+ $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
+
+ <Command.MSFT, Command.INTEL>
+ "$(CC)" /Fo${dst} $(CC_FLAGS) $(INC) ${src}
+
+ <Command.GCC>
+ "$(CC)" -o ${dst} $(CC_FLAGS) $(INC) ${src}
+
+[Build.C-Header-File]
+ <InputFile>
+ *.h, *.H
+
+ <OutputFile>
+ $(OUTPUT_DIR)(+)$(MODULE_NAME).gch
+ $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
+
+ <Command>
+
+
+[Build.Assembly-Code-File]
+ <InputFile.MSFT, InputFile.INTEL>
+ Assembly-Code-File = ?.asm, ?.Asm, ?.ASM
+
+ <InputFile.GCC>
+ ?.S
+
+ <OutputFile>
+ $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
+
+ <Command.MSFT, Command.INTEL>
+ "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
+ Trim --source-code --convert-hex -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i
+ "$(ASM)" /Fo${dst} $(ASM_FLAGS) $(INC) ${d_path}(+)${s_base}.iii
+
+ <Command.GCC>
+ "$(ASM)" -o ${dst} $(ASM_FLAGS) $(INC) ${src}
+
+[Build.Iasm-Code-File]
+ <InputFile>
+ ?.s
+
+ <OutputFile>
+ $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
+
+ <Command.MSFT, Command.INTEL>
+ "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
+ Trim --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i
+ "$(ASM)" -o ${dst} $(ASM_FLAGS) ${d_path}(+)${s_base}.iii
+
+[Build.Visual-Form-Representation-File]
+ <InputFile>
+ ?.vfr
+ ?.Vfr
+ ?.VFR
+
+ <OutputFile>
+ $(DEBUG_DIR)(+)${s_dir}(+)${s_base}.c
+
+ <Command>
+ "$(PP)" $(VFRPP_FLAGS) $(INC) ${src} > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i
+ Trim --vfr-file -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i
+ -mkdir ${d_path} > NUL 2>&1
+ VfrCompile -od ${d_path} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii
+
+[Build.Object-File]
+ <InputFile>
+ *.obj
+ *.o
+
+ <OutputFile>
+ $(OUTPUT_DIR)(+)$(MODULE_NAME).lib
+
+ <Command.MSFT, Command.INTEL>
+ "$(SLINK)" $(SLINK_FLAGS) /OUT:${dst} ${src}
+
+ <Command.GCC>
+ "$(SLINK)" -cr ${dst} $(SLINK_FLAGS) ${src}
+
+#[Build.Object-File, Build.Static-Library-File]
+#BUILD_VERSION = 0x00010000
+#
+# <InputFile>
+# Object-File = *.obj
+# Static-Library-File = *.lib, *.a
+#
+# <OutputFile>
+# $(OUTPUT_DIR)(+)$(MODULE_NAME).lib
+#
+# <Command.MSFT>
+# "$(SLINK)" /OUT:${dst} $(SLINK_FLAGS) ${src}
+#
+# <Command.GCC>
+# "$(SLINK)" -cr ${dst} $(SLINK_FLAGS) ${src1} -( ${src2} -)
+#
+[Build.Static-Library-File]
+ <InputFile>
+ ?.lib
+ $(LIBS)
+ $(MODULE_BUILD_DIR)\Makefile
+
+ <OutputFile>
+ $(DEBUG_DIR)(+)$(MODULE_NAME).dll
+
+ <Command.MSFT, Command.INTEL>
+ "$(DLINK)" /OUT:${dst} $(DLINK_FLAGS) $(DLINK_SPATH) $(LIBS) ${src}
+
+ <Command.GCC>
+ "$(DLINK)" -o ${dst} $(DLINK_FLAGS) -( $(DLINK_SPATH) $(LIBS) ${src} -)
+
+[Build.Dynamic-Library-File]
+ <InputFile>
+ ?.dll
+
+ <OutputFile>
+ $(DEBUG_DIR)(+)$(MODULE_NAME).efi
+
+ <Command>
+ GenFw -e $(MODULE_TYPE) -o ${dst} ${src}
+ $(CP) ${dst} $(OUTPUT_DIR)
+ $(CP) ${dst} $(BIN_DIR)
+ -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR)
+
+[Build.Dependency-Expression-File]
+ <InputFile>
+ ?.dxs, ?.Dxs, ?.DXS
+
+ <OutputFile>
+ $(OUTPUT_DIR)(+)$(MODULE_NAME).depex
+
+ <Command>
+# GenDepex -o ${dst} ${src}
+
+[Build.Acpi-Source-Language-File]
+ <InputFile>
+ ?.asl, ?.Asl, ?.ASL
+
+ <OutputFile>
+ $(OUTPUT_DIR)(+)${s_base}.aml
+
+ <Command.MSFT, Command.INTEL>
+ "$(PP)" $(APP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
+ "$(ASL)" -p ${dst} ${d_path}(+)${s_base}.i
+
+[Build.Acpi-Table-Code-File]
+ <InputFile>
+ ?.aslc
+
+ <OutputFile>
+ $(OUTPUT_DIR)(+)${s_base}.acpi
+
+ <Command.MSFT, Command.INTEL>
+ "$(CC)" /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(INC) ${src}
+ "$(DLINK)" /OUT:$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(SLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
+ GenFw -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll
+
+[Build.Masm16-Code-File]
+ <InputFile>
+ ?.asm16, ?.Asm16, ?.ASM16
+
+ <OutputFile>
+ $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.com
+
+ <Command.MSFT, Command.INTEL>
+ pushd .
+ cd $(OUTPUT_DIR)(+)${s_dir}
+ "$(ASM)" /nologo /omf ${src} /Bl"$(ASMLINK)" $(ASMLINK_FLAGS)
+ -$(CP) ${dst} $(OUTPUT_DIR) & popd
+
+[Build.Microcode-File]
+ <InputFile>
+ ?.txt, ?.TXT, ?.Txt
+
+ <OutputFile>
+ $(OUTPUT_DIR)(+)${s_base}.mcb
+
+ <Command>
+ GenFw -o ${dst} -m ${src}
+
+[Build.Microcode-Binary-File]
+ <InputFile>
+ *.mcb
+
+ <OutputFile>
+ $(OUTPUT_DIR)(+)$(MODULE_NAME).bin
+
+ <Command>
+ GenFw -o ${dst} -j ${src}
+
+[Build.Unicode-Text-File]
+ <InputFile>
+ *.uni, *.Uni, *.UNI
+
+ <OutputFile>
+ $(DEBUG_DIR)(+)AutoGen.c
+ $(DEBUG_DIR)(+)AutoGen.h
+
+ <Command>
+
diff --git a/BaseTools/ConfTemplates/Darwin/target.txt b/BaseTools/ConfTemplates/Darwin/target.txt
new file mode 100644
index 0000000000..e8e3243873
--- /dev/null
+++ b/BaseTools/ConfTemplates/Darwin/target.txt
@@ -0,0 +1,71 @@
+#
+# Copyright (c) 2006-2007, Intel Corporation
+#
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Filename: target.template
+#
+# 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 FPD 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 FPD files.
+ACTIVE_PLATFORM = Nt32Pkg/Nt32Pkg.dsc
+
+# TARGET List Optional Zero or more of the following: DEBUG, RELEASE,
+# UserDefined; separated by a space character.
+# If the line is missing or no value is specified, all
+# valid targets specified in the FPD file will attempt
+# to be built. The following line will build all platform
+# targets.
+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 or ARM.
+# Multiple values can be specified on a single line, using
+# space charaters to separate the values. These are used
+# during the parsing of an FPD file, restricting the build
+# output target(s.)
+# The Build Target ARCH is determined by a logical AND of:
+# FPD BuildOptions: <SupportedArchitectures> tag
+# If not specified, then all valid architectures specified
+# in the FPD 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,
+# tools_def.txt will be used for the build. This file
+# MUST be located in the WORKSPACE/Conf directory.
+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 = MYTOOLS
+
+# MULTIPLE_THREAD FLAG Optional Flag to enable multi-thread build. If not specified, default
+# is "Disable". If your computer is multi-core or multiple CPUs,
+# enabling this feature will bring much benefit.
+# This feature is only available for "spawn" build mode, and
+# only for PLATFORM build. The clean, cleanall or
+# stand-alone module build is still using the normal way.
+MULTIPLE_THREAD = Disable
+
+# MAX_CONCURRENT_THREAD_NUMBER NUMBER Optional The number of concurrent threads. Default is 2. Recommend to
+# set this value to one more than the number of your compurter
+# cores or CPUs.
+MAX_CONCURRENT_THREAD_NUMBER = 2
diff --git a/BaseTools/ConfTemplates/Darwin/tools_def.txt b/BaseTools/ConfTemplates/Darwin/tools_def.txt
new file mode 100644
index 0000000000..08d52ba8b5
--- /dev/null
+++ b/BaseTools/ConfTemplates/Darwin/tools_def.txt
@@ -0,0 +1,659 @@
+#
+# Copyright (c) 2006-2007, Intel Corporation
+#
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+
+IDENTIFIER = Default TOOL_CHAIN_CONF
+
+# common path macros
+DEFINE VSNET_BIN = C:\Program Files\Microsoft Visual Studio .NET\Vc7\bin
+DEFINE VSNET_DLL = C:\Program Files\Microsoft Visual Studio .NET\Common7\IDE
+
+DEFINE VSNET2003_BIN = C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin
+DEFINE VSNET2003_DLL = C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE
+
+DEFINE VS2005EXP_BIN = C:\Program Files\Microsoft Visual Studio 8\Vc\bin
+DEFINE VS2005EXP_DLL = C:\Program Files\Microsoft Visual Studio 8\Common7\IDE
+
+DEFINE VS2005STD_BIN = C:\Program Files\Microsoft Visual Studio 8\Vc\bin
+DEFINE VS2005STD_DLL = C:\Program Files\Microsoft Visual Studio 8\Common7\IDE
+
+DEFINE VS2005PRO_BIN = C:\Program Files\Microsoft Visual Studio 8\Vc\bin
+DEFINE VS2005PRO_BINX64 = C:\Program Files\Microsoft Visual Studio 8\Vc\bin\x86_amd64
+DEFINE VS2005PRO_DLL = C:\Program Files\Microsoft Visual Studio 8\Common7\IDE
+
+DEFINE VS2005TS_BIN = C:\Program Files\Microsoft Visual Studio 8\Vc\bin
+DEFINE VS2005TS_DLL = C:\Program Files\Microsoft Visual Studio 8\Common7\IDE
+
+DEFINE WINDDK_BIN16 = C:\WINDDK\3790.1830\bin\bin16
+DEFINE WINDDK_BIN32 = C:\WINDDK\3790.1830\bin\x86
+DEFINE WINDDK_BINX64 = C:\WINDDK\3790.1830\bin\win64\x86\amd64
+DEFINE WINDDK_BIN64 = C:\WINDDK\3790.1830\bin\win64\x86
+
+DEFINE ICC_BIN32 = C:\Program Files\Intel\Compiler\C++\9.1\IA32\Bin
+DEFINE ICC_BINX64 = C:\Program Files\Intel\Compiler\C++\9.1\EM64T\Bin
+DEFINE ICC_BIN64 = C:\Program Files\Intel\Compiler\C++\9.1\Itanium\Bin
+
+DEFINE EBC_BIN = C:\Program Files\Intel\EBC\Bin
+
+DEFINE ELFGCC_BIN = /usr/bin
+
+DEFINE PEGCC_BIN32 = /opt/tiano/i386-tiano-pe/i386-tiano-pe/bin
+DEFINE PEGCC_BINX64 = /opt/tiano/x86_64-pc-mingw64/x86_64-pc-mingw64/bin
+
+DEFINE CYGWIN_BIN = c:/cygwin/bin
+DEFINE CYGWIN_BIN32 = 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 ASL_BIN = C:\ASL
+
+####################################################################################
+#
+# format: TARGET_TOOLCHAIN_ARCH_COMMANDTYPE_ATTRIBUTE = <string>
+# priorty:
+# 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
+# =====================
+# VS2003 - Microsoft Visual Studio .NET 2003
+# VS2005EXP* - Microsoft Visual Studio 2005 Express Edition
+# VS2005STD* - Microsoft Visual Studio 2005 Standard Edition
+# VS2005PRO - Microsoft Visual Studio 2005 Professional Edition
+# VS2005TEAMSUITE* - Microsoft Visual Studio 2005 Team Suite Edition
+# WINDDK3790x1830 - Microsoft Windows DDK 3790.1830
+# UINIXGCC - UNIX GCC
+# ELFGCC - Linux ELF GCC
+# CYGWINGCC - CygWin GCC
+# ICC - Intel C Compiler V9.1
+# MYTOOLS - Settings compatible with previous versions of tools_def.template
+#
+# * Commented out - All versions of VS2005 use the same standard install directory
+#
+####################################################################################
+####################################################################################
+#
+# Supported Tool Chain Family
+# ===========================
+# MSFT - Microsoft
+# GCC - GNU GCC
+# INTEL - INTEL
+
+####################################################################################
+#
+# Microsoft Visual Studio .NET 2003 (IA-32 only, with Link Time Code Generation)
+#
+####################################################################################
+# VS2003 - Microsoft Visual Studio .NET 2003
+*_VS2003_*_*_FAMILY = MSFT
+
+##################
+# IA32 definitions
+##################
+*_VS2003_IA32_*_DLL = DEF(VSNET2003_DLL)
+
+*_VS2003_IA32_MAKE_PATH = DEF(VSNET2003_BIN)\nmake.exe
+*_VS2003_IA32_CC_PATH = DEF(VSNET2003_BIN)\cl.exe
+*_VS2003_IA32_VFRPP_PATH = DEF(VSNET2003_BIN)\cl.exe
+*_VS2003_IA32_SLINK_PATH = DEF(VSNET2003_BIN)\lib.exe
+*_VS2003_IA32_DLINK_PATH = DEF(VSNET2003_BIN)\link.exe
+*_VS2003_IA32_ASMLINK_PATH = DEF(VSNET2003_BIN)\link.exe
+*_VS2003_IA32_APP_PATH = DEF(VSNET2003_BIN)\cl.exe
+*_VS2003_IA32_PP_PATH = DEF(VSNET2003_BIN)\cl.exe
+*_VS2003_IA32_ASM_PATH = DEF(VSNET2003_BIN)\ml.exe
+*_VS2003_IA32_PCH_PATH = DEF(VSNET2003_BIN)\cl.exe
+
+ *_VS2003_IA32_MAKE_FLAGS = /nologo
+ *_VS2003_IA32_APP_FLAGS = /nologo /E /TC
+ *_VS2003_IA32_PP_FLAGS = /nologo /E /TC /FIAutoGen.h
+ *_VS2003_IA32_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FIAutoGen.h
+ DEBUG_VS2003_IA32_CC_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GF /Gs8192 /Zi /Gm
+RELEASE_VS2003_IA32_CC_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GF /Gs8192
+ DEBUG_VS2003_IA32_PCH_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GF /Gs8192 /Fp$(DEST_DIR_OUTPUT)/AutoGen.h.gch /Yc /TC /Zi /Gm
+RELEASE_VS2003_IA32_PCH_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GF /Gs8192 /Fp$(DEST_DIR_OUTPUT)/AutoGen.h.gch /Yc /TC
+ DEBUG_VS2003_IA32_ASM_FLAGS = /nologo /W3 /WX /c /coff /Cx /Zd /W0 /Zi
+RELEASE_VS2003_IA32_ASM_FLAGS = /nologo /W3 /WX /c /coff /Cx /Zd /W0
+ *_VS2003_IA32_SLINK_FLAGS = /nologo /LTCG
+ DEBUG_VS2003_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
+RELEASE_VS2003_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text
+
+####################################################################################
+#
+# Microsoft Visual Studio 2005
+#
+####################################################################################
+# VS2005PRO - Microsoft Visual Studio 2005 Professional Edition
+*_VS2005PRO_*_*_FAMILY = MSFT
+
+*_VS2005PRO_*_TIANO_PATH = TianoCompress.exe
+*_VS2005PRO_*_TIANO_GUID = A31280AD-481E-41B6-95E8-127F4C984779
+
+*_VS2005PRO_*_ASL_PATH = DEF(ASL_BIN)\iasl.exe
+
+
+*_VS2005PRO_*_SLINK_FLAGS = /NOLOGO /LTCG
+*_VS2005PRO_*_APP_FLAGS = /nologo /E /TC
+*_VS2005PRO_*_PP_FLAGS = /nologo /E /TC /FIAutoGen.h
+*_VS2005PRO_*_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FIAutoGen.h
+##################
+# IA32 definitions
+##################
+*_VS2005PRO_IA32_*_DLL = DEF(VS2005PRO_DLL)
+
+*_VS2005PRO_IA32_MAKE_PATH = DEF(VS2005PRO_BIN)\nmake.exe
+*_VS2005PRO_IA32_CC_PATH = DEF(VS2005PRO_BIN)\cl.exe
+*_VS2005PRO_IA32_VFRPP_PATH = DEF(VS2005PRO_BIN)\cl.exe
+*_VS2005PRO_IA32_SLINK_PATH = DEF(VS2005PRO_BIN)\lib.exe
+*_VS2005PRO_IA32_DLINK_PATH = DEF(VS2005PRO_BIN)\link.exe
+*_VS2005PRO_IA32_ASMLINK_PATH = DEF(VS2005PRO_BIN)\link.exe
+*_VS2005PRO_IA32_APP_PATH = DEF(VS2005PRO_BIN)\cl.exe
+*_VS2005PRO_IA32_PP_PATH = DEF(VS2005PRO_BIN)\cl.exe
+*_VS2005PRO_IA32_ASM_PATH = DEF(VS2005PRO_BIN)\ml.exe
+
+ *_VS2005PRO_IA32_MAKE_FLAGS = /nologo
+ DEBUG_VS2005PRO_IA32_CC_FLAGS = /GS- /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GF /Gs8192 /Zi /Gm
+RELEASE_VS2005PRO_IA32_CC_FLAGS = /GS- /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GF /Gs8192
+ DEBUG_VS2005PRO_IA32_ASM_FLAGS = /nologo /W3 /WX /c /coff /Cx /Zd /W0 /Zi
+RELEASE_VS2005PRO_IA32_ASM_FLAGS = /nologo /W3 /WX /c /coff /Cx /Zd /W0
+ DEBUG_VS2005PRO_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
+RELEASE_VS2005PRO_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text
+*_VS2005PRO_IA32_ASMLINK_FLAGS = /link /nologo /tiny
+
+##################
+# X64 definitions
+##################
+*_VS2005PRO_X64_*_DLL = DEF(VS2005PRO_DLL)
+
+*_VS2005PRO_X64_CC_PATH = DEF(VS2005PRO_BINX64)\cl.exe
+*_VS2005PRO_X64_PP_PATH = DEF(VS2005PRO_BINX64)\cl.exe
+*_VS2005PRO_X64_APP_PATH = DEF(VS2005PRO_BINX64)\cl.exe
+*_VS2005PRO_X64_VFRPP_PATH = DEF(VS2005PRO_BINX64)\cl.exe
+*_VS2005PRO_X64_ASM_PATH = DEF(VS2005PRO_BINX64)\ml64.exe
+*_VS2005PRO_X64_SLINK_PATH = DEF(VS2005PRO_BINX64)\lib.exe
+*_VS2005PRO_X64_DLINK_PATH = DEF(VS2005PRO_BINX64)\link.exe
+*_VS2005PRO_X64_ASMLINK_PATH = DEF(VS2005PRO_BINX64)\link.exe
+
+ DEBUG_VS2005PRO_X64_CC_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FIAutoGen.h /EHs-c- /GF /Zi /Gm
+RELEASE_VS2005PRO_X64_CC_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FIAutoGen.h /EHs-c- /GF
+ DEBUG_VS2005PRO_X64_ASM_FLAGS = /nologo /W3 /WX /c /Cx /Zd /Zi
+RELEASE_VS2005PRO_X64_ASM_FLAGS = /nologo /W3 /WX /c /Cx /Zd
+ DEBUG_VS2005PRO_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /Machine:AMD64 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
+RELEASE_VS2005PRO_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /Machine:AMD64 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text
+
+####################################################################################
+#
+# Microsoft Device Driver Kit 3790.1830 (IA-32, X64, Itanium, with Link Time Code Generation)
+#
+####################################################################################
+# WINDDK3790x1830 - Microsoft Windows DDK 3790.1830
+*_WINDDK3790x1830_*_*_FAMILY = MSFT
+
+*_WINDDK3790x1830_*_PP_FLAGS = /nologo /E /TC /FIAutoGen.h
+*_WINDDK3790x1830_*_APP_FLAGS = /nologo /E /TC
+*_WINDDK3790x1830_*_SLINK_FLAGS = /nologo /LTCG
+*_WINDDK3790x1830_*_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FIAutoGen.h
+
+##################
+# ASL definitions
+##################
+*_WINDDK3790x1830_*_ASL_PATH = DEF(ASL_BIN)\iasl.exe
+
+##################
+# IA32 definitions
+##################
+*_WINDDK3790x1830_IA32_CC_PATH = DEF(WINDDK_BIN32)\cl.exe
+*_WINDDK3790x1830_IA32_SLINK_PATH = DEF(WINDDK_BIN32)\lib.exe
+*_WINDDK3790x1830_IA32_DLINK_PATH = DEF(WINDDK_BIN32)\link.exe
+*_WINDDK3790x1830_IA32_ASMLINK_PATH = DEF(WINDDK_BIN16)\link.exe
+*_WINDDK3790x1830_IA32_PP_PATH = DEF(WINDDK_BIN32)\cl.exe
+*_WINDDK3790x1830_IA32_VFRPP_PATH = DEF(WINDDK_BIN32)\cl.exe
+*_WINDDK3790x1830_IA32_APP_PATH = DEF(WINDDK_BIN32)\cl.exe
+*_WINDDK3790x1830_IA32_PCH_PATH = DEF(WINDDK_BIN32)\cl.exe
+*_WINDDK3790x1830_IA32_ASM_PATH = DEF(WINDDK_BIN32)\ml.exe
+
+ DEBUG_WINDDK3790x1830_IA32_CC_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GF /Gs8192 /Zi /Gm
+RELEASE_WINDDK3790x1830_IA32_CC_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GF /Gs8192
+ DEBUG_WINDDK3790x1830_IA32_PCH_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GF /Gs8192 /Fp$(DEST_DIR_OUTPUT)/AutoGen.h.gch /Yc /TC /Zi /Gm
+RELEASE_WINDDK3790x1830_IA32_PCH_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GF /Gs8192 /Fp$(DEST_DIR_OUTPUT)/AutoGen.h.gch /Yc /TC
+ DEBUG_WINDDK3790x1830_IA32_ASM_FLAGS = /nologo /W3 /WX /c /coff /Cx /Zd /W0 /Zi
+RELEASE_WINDDK3790x1830_IA32_ASM_FLAGS = /nologo /W3 /WX /c /coff /Cx /Zd /W0
+ DEBUG_WINDDK3790x1830_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
+RELEASE_WINDDK3790x1830_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text
+ *_WINDDK3790x1830_IA32_ASMLINK_FLAGS = /link /nologo /tiny
+
+##################
+# x64 definitions
+##################
+*_WINDDK3790x1830_IA32_CC_PATH = DEF(WINDDK_BINX64)\cl.exe
+*_WINDDK3790x1830_IA32_SLINK_PATH = DEF(WINDDK_BINX64)\lib.exe
+*_WINDDK3790x1830_IA32_DLINK_PATH = DEF(WINDDK_BINX64)\link.exe
+*_WINDDK3790x1830_IA32_ASMLINK_PATH = DEF(WINDDK_BIN16)\link.exe
+*_WINDDK3790x1830_IA32_PP_PATH = DEF(WINDDK_BINX64)\cl.exe
+*_WINDDK3790x1830_IA32_VFRPP_PATH = DEF(WINDDK_BINX64)\cl.exe
+*_WINDDK3790x1830_IA32_APP_PATH = DEF(WINDDK_BINX64)\cl.exe
+*_WINDDK3790x1830_IA32_PCH_PATH = DEF(WINDDK_BINX64)\cl.exe
+*_WINDDK3790x1830_IA32_ASM_PATH = DEF(WINDDK_BINX64)\ml64.exe
+
+ DEBUG_WINDDK3790x1830_X64_CC_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FIAutoGen.h /Zi /Gm /EHs-c- /GF
+RELEASE_WINDDK3790x1830_X64_CC_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FIAutoGen.h /EHs-c- /GF
+ DEBUG_WINDDK3790x1830_X64_PCH_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FIAutoGen.h /Fp$(DEST_DIR_OUTPUT)/AutoGen.h.gch /Yc /TC /Zi /Gm /EHs-c- /GF
+RELEASE_WINDDK3790x1830_X64_PCH_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FIAutoGen.h /Fp$(DEST_DIR_OUTPUT)/AutoGen.h.gch /Yc /TC /EHs-c- /GF
+ DEBUG_WINDDK3790x1830_X64_ASM_FLAGS = /nologo /W3 /WX /c /Cx /Zd /Zi
+RELEASE_WINDDK3790x1830_X64_ASM_FLAGS = /nologo /W3 /WX /c /Cx /Zd
+ DEBUG_WINDDK3790x1830_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /Machine:AMD64 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
+RELEASE_WINDDK3790x1830_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /Machine:AMD64 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text
+
+##################
+# IPF definitions
+##################
+*_WINDDK3790x1830_IA32_CC_PATH = DEF(WINDDK_BIN64)\cl.exe
+*_WINDDK3790x1830_IA32_SLINK_PATH = DEF(WINDDK_BIN64)\lib.exe
+*_WINDDK3790x1830_IA32_DLINK_PATH = DEF(WINDDK_BIN64)\link.exe
+*_WINDDK3790x1830_IA32_ASMLINK_PATH = DEF(WINDDK_BIN16)\link.exe
+*_WINDDK3790x1830_IA32_PP_PATH = DEF(WINDDK_BIN64)\cl.exe
+*_WINDDK3790x1830_IA32_VFRPP_PATH = DEF(WINDDK_BIN64)\cl.exe
+*_WINDDK3790x1830_IA32_APP_PATH = DEF(WINDDK_BIN64)\cl.exe
+*_WINDDK3790x1830_IA32_PCH_PATH = DEF(WINDDK_BIN64)\cl.exe
+*_WINDDK3790x1830_IPF_ASM_PATH = DEF(WINDDK_BIN64)\ias.exe
+
+ DEBUG_WINDDK3790x1830_IPF_CC_FLAGS = /GS- /nologo /W4 /WX /EHs-c- /Gy /c /Os /GL /X /FIAutoGen.h /Zi
+RELEASE_WINDDK3790x1830_IPF_CC_FLAGS = /GS- /nologo /W4 /WX /EHs-c- /Gy /c /Os /GL /X /FIAutoGen.h
+ DEBUG_WINDDK3790x1830_IPF_PCH_FLAGS = /GS- /nologo /W4 /WX /EHs-c- /Gy /c /Os /GL /X /FIAutoGen.h /Fp$(DEST_DIR_OUTPUT)/AutoGen.h.gch /Yc /TC /Zi
+RELEASE_WINDDK3790x1830_IPF_PCH_FLAGS = /GS- /nologo /W4 /WX /EHs-c- /Gy /c /Os /GL /X /FIAutoGen.h /Fp$(DEST_DIR_OUTPUT)/AutoGen.h.gch /Yc /TC
+ DEBUG_WINDDK3790x1830_IPF_ASM_FLAGS = -N us -X explicit -M ilp64 -N so -W4 -d debug
+RELEASE_WINDDK3790x1830_IPF_ASM_FLAGS = -N us -X explicit -M ilp64 -N so -W4
+ DEBUG_WINDDK3790x1830_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF,ICF /IGNORE:4086 /MAP /ALIGN:32 /MACHINE:IA64 /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEST_DIR_DEBUG)/$(BASE_NAME).map /PDB:$(DEST_DIR_DEBUG)/$(BASE_NAME).pdb /DEBUG
+RELEASE_WINDDK3790x1830_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF.ICF /IGNORE:4086 /MAP /ALIGN:32 /MACHINE:IA64 /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEST_DIR_DEBUG)/$(BASE_NAME).map /PDB:$(DEST_DIR_DEBUG)/$(BASE_NAME).pdb
+
+##################
+# EBC definitions
+##################
+*_WINDDK3790x1830_EBC_*_FAMILY = INTEL
+
+*_WINDDK3790x1830_EBC_PP_PATH = DEF(EBC_BIN)\iec.exe
+*_WINDDK3790x1830_EBC_CC_PATH = DEF(EBC_BIN)\iec.exe
+*_WINDDK3790x1830_EBC_DLINK_PATH = DEF(EBC_BIN)\link.exe
+*_WINDDK3790x1830_EBC_SLINK_PATH = DEF(EBC_BIN)\link.exe
+
+*_WINDDK3790x1830_EBC_CC_FLAGS = /nologo /c /W3 /WX /FIAutoGen.h
+*_WINDDK3790x1830_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC
+*_WINDDK3790x1830_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER
+
+####################################################################################
+#
+# Unix GCC
+#
+####################################################################################
+# UINIXGCC - UINIX GCC
+*_UNIXGCC_*_*_FAMILY = GCC
+
+*_UNIXGCC_*_DLINK_FLAGS = -nostdlib -O2 --gc-sections --dll --export-all-symbols --entry _$(ENTRYPOINT) --file-alignment 0x20 --section-alignment 0x20
+*_UNIXGCC_*_ASM_FLAGS = -c -imacros $(DEST_DIR_DEBUG)/AutoGen.h
+*_UNIXGCC_*_PP_FLAGS = -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h
+*_UNIXGCC_*_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE --include AutoGen.h
+
+##################
+# IA32 definitions
+##################
+*_UNIXGCC_IA32_CC_PATH = DEF(PEGCC_BIN32)/gcc
+*_UNIXGCC_IA32_SLINK_PATH = DEF(PEGCC_BIN32)/ar
+*_UNIXGCC_IA32_DLINK_PATH = DEF(PEGCC_BIN32)/ld
+*_UNIXGCC_IA32_ASM_PATH = DEF(PEGCC_BIN32)/gcc
+*_UNIXGCC_IA32_PP_PATH = DEF(PEGCC_BIN32)/gcc
+*_UNIXGCC_IA32_VFRPP_PATH = DEF(PEGCC_BIN32)/cc
+
+*_UNIXGCC_IA32_CC_FLAGS = -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-missing-braces -c -include AutoGen.h
+
+##################
+# X64 definitions
+##################
+*_UNIXGCC_X64_CC_PATH = DEF(PEGCC_BINX64)/gcc
+*_UNIXGCC_X64_SLINK_PATH = DEF(PEGCC_BINX64)/ar
+*_UNIXGCC_X64_DLINK_PATH = DEF(PEGCC_BINX64)/ld
+*_UNIXGCC_X64_ASM_PATH = DEF(PEGCC_BINX64)/gcc
+*_UNIXGCC_X64_PP_PATH = DEF(PEGCC_BINX64)/gcc
+*_UNIXGCC_X64_VFRPP_PATH = DEF(PEGCC_BINX64)/gcc
+
+*_UNIXGCC_X64_CC_FLAGS = -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-missing-braces -c -include AutoGen.h -D_EFI_P64
+
+####################################################################################
+#
+# Cygwin GCC
+#
+####################################################################################
+# CYGWINGCC - CygWin GCC
+*_CYGWINGCC_*_*_FAMILY = GCC
+
+*_CYGWINGCC_*_*_DPATH = DEF(CYGWIN_BIN)
+*_CYGWINGCC_*_ASL_PATH = DEF(ASL_BIN)/iasl.exe
+*_CYGWINGCC_*_MAKE_PATH = DEF(VSNET2003_BIN)\nmake.exe
+
+*_CYGWINGCC_*_MAKE_FLAGS = /nologo
+*_CYGWINGCC_*_DLINK_FLAGS = -nostdlib -O2 --gc-sections --dll --export-all-symbols --entry _$(ENTRYPOINT) --file-alignment 0x20 --section-alignment 0x20
+*_CYGWINGCC_*_ASM_FLAGS = -c -imacros AutoGen.h
+*_CYGWINGCC_*_PP_FLAGS = -E -x assembler-with-cpp -include AutoGen.h
+*_CYGWINGCC_*_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE --include AutoGen.h
+
+##################
+# IA32 definitions
+##################
+*_CYGWINGCC_IA32_CC_PATH = DEF(CYGWIN_BIN32)/gcc
+*_CYGWINGCC_IA32_SLINK_PATH = DEF(CYGWIN_BIN32)/ar
+*_CYGWINGCC_IA32_DLINK_PATH = DEF(CYGWIN_BIN32)/ld
+*_CYGWINGCC_IA32_ASM_PATH = DEF(CYGWIN_BIN32)/gcc
+*_CYGWINGCC_IA32_PP_PATH = DEF(CYGWIN_BIN32)/gcc
+*_CYGWINGCC_IA32_VFRPP_PATH = DEF(CYGWIN_BIN32)/gcc
+
+*_CYGWINGCC_IA32_CC_FLAGS = -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -c -include AutoGen.h
+
+##################
+# X64 definitions
+##################
+*_CYGWINGCC_X64_CC_PATH = DEF(CYGWIN_BINX64)/gcc
+*_CYGWINGCC_X64_SLINK_PATH = DEF(CYGWIN_BINX64)/ar
+*_CYGWINGCC_X64_DLINK_PATH = DEF(CYGWIN_BINX64)/ld
+*_CYGWINGCC_X64_ASM_PATH = DEF(CYGWIN_BINX64)/gcc
+*_CYGWINGCC_X64_PP_PATH = DEF(CYGWIN_BINX64)/gcc
+*_CYGWINGCC_X64_VFRPP_PATH = DEF(CYGWIN_BINX64)/gcc
+
+*_CYGWINGCC_X64_CC_FLAGS = -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -c -include AutoGen.h -D_EFI_P64
+
+####################################################################################
+#
+# Elf GCC - This configuration is used to compile on Linux boxes to produce elf
+# binaries.
+#
+####################################################################################
+# ELFGCC - Linux ELF GCC
+*_ELFGCC_*_*_FAMILY = GCC
+
+*_ELFGCC_IA32_CC_PATH = DEF(ELFGCC_BIN)/gcc
+*_ELFGCC_IA32_SLINK_PATH = DEF(ELFGCC_BIN)/ar
+*_ELFGCC_IA32_DLINK_PATH = DEF(ELFGCC_BIN)/ld
+*_ELFGCC_IA32_ASM_PATH = DEF(ELFGCC_BIN)/gcc
+*_ELFGCC_IA32_PP_PATH = DEF(ELFGCC_BIN)/gcc
+*_ELFGCC_IA32_VFRPP_PATH = DEF(ELFGCC_BIN)/gcc
+
+*_ELFGCC_IA32_CC_FLAGS = -m32 -g -fshort-wchar -fno-strict-aliasing -Wall -malign-double -c -include $(DEST_DIR_DEBUG)/AutoGen.h -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings
+*_ELFGCC_*_DLINK_FLAGS = -melf_i386 -nostdlib -n -q -Ttext 0x220 --entry $(ENTRYPOINT) -u $(ENTRYPOINT)
+*_ELFGCC_*_ASM_FLAGS = -m32 -c -imacros $(DEST_DIR_DEBUG)/AutoGen.h
+*_ELFGCC_*_PP_FLAGS = -m32 -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h
+*_ELFGCC_*_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE --include AutoGen.h
+
+
+####################################################################################
+#
+# 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 /FI$(DEST_DIR_DEBUG)/AutoGen.h
+# *_*_EBC_CC_FLAGS = /nologo /FAcs /c /W3 /WX /FI$(DEST_DIR_DEBUG)/AutoGen.h
+# *_*_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /MACHINE:EBC /OPT:REF /NODEFAULTLIB /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:EFI_BOOT_SERVICE_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\iasl.exe
+#
+
+
+####################################################################################
+#
+# Intel(R) C++ Compiler Version 9.1
+#
+# IPF - Intel(R) C++ Compiler for Itanium(R)Version 9.1 Build 20060928 Package ID: W_CC_C_9.1.032
+# ASL - Intel ACPI Source Language COmpiler
+#
+####################################################################################
+# ICC - Intel C Compiler V9.1
+*_ICC_*_*_FAMILY = INTEL
+
+*_ICC_*_ASL_PATH = DEF(ASL_BIN)\iasl.exe
+*_ICC_*_MAKE_PATH = DEF(VSNET2003_BIN)\nmake.exe
+
+*_ICC_*_MAKE_FLAGS = /nologo
+*_ICC_*_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FIAutoGen.h
+*_ICC_*_APP_FLAGS = /nologo /E /TC
+*_ICC_*_PP_FLAGS = /nologo /E /TC /FIAutoGen.h
+
+##################
+# IA32 definitions
+##################
+*_ICC_IA32_PCH_PATH = DEF(ICC_BIN32)\icl.exe
+*_ICC_IA32_CC_PATH = DEF(ICC_BIN32)\icl.exe
+*_ICC_IA32_SLINK_PATH = DEF(ICC_BIN32)\xilib.exe
+# xilib.exe needs lib.exe from Visual Studio
+*_ICC_IA32_SLINK_DLL = DEF(VSNET2003_BIN)
+*_ICC_IA32_DLINK_PATH = DEF(ICC_BIN32)\xilink.exe
+*_ICC_IA32_ASMLINK_PATH = DEF(ICC_BIN32)\xilink.exe
+*_ICC_IA32_PP_PATH = DEF(ICC_BIN32)\icl.exe
+*_ICC_IA32_VFRPP_PATH = DEF(ICC_BIN32)\icl.exe
+*_ICC_IA32_APP_PATH = DEF(ICC_BIN32)\icl.exe
+*_ICC_IA32_ASM_PATH = DEF(VSNET2003_BIN)\ml.exe
+*_ICC_IA32_ASM_DLL = DEF(VSNET2003_DLL)
+
+ DEBUG_ICC_IA32_CC_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /DEFI_FIRMWARE_VENDOR=L\"INTEL\" /FIAutoGen.h /EHs-c- /GF /Gs8192 /Zi /Gm
+RELEASE_ICC_IA32_CC_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /DEFI_FIRMWARE_VENDOR=L\"INTEL\" /FIAutoGen.h /EHs-c- /GF /Gs8192
+ DEBUG_ICC_IA32_PCH_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /DEFI_FIRMWARE_VENDOR=L\"INTEL\" /FI$(DEST_DIR_DEBUG)/AutoGen.h /EHs-c- /GF /Gs8192 /Yc /TC /Zi /Gm
+RELEASE_ICC_IA32_PCH_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /DEFI_FIRMWARE_VENDOR=L\"INTEL\" /FI$(DEST_DIR_DEBUG)/AutoGen.h /EHs-c- /GF /Gs8192 /Yc /TC
+ DEBUG_ICC_IA32_ASM_FLAGS = /nologo /W3 /WX /c /Zd /W0 /Zi
+RELEASE_ICC_IA32_ASM_FLAGS = /nologo /W3 /WX /c /Zd /W0
+ *_ICC_IA32_SLINK_FLAGS = /nologo
+ DEBUG_ICC_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
+RELEASE_ICC_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text
+
+##################
+# X64 definitions
+##################
+*_ICC_X64_PCH_PATH = DEF(ICC_BINX64)\icl.exe
+*_ICC_X64_CC_PATH = DEF(ICC_BINX64)\icl.exe
+*_ICC_X64_SLINK_PATH = DEF(ICC_BINX64)\xilib.exe
+*_ICC_X64_DLINK_PATH = DEF(ICC_BINX64)\xilink.exe
+*_ICC_X64_ASMLINK_PATH = DEF(ICC_BINX64)\xilink.exe
+*_ICC_X64_PP_PATH = DEF(ICC_BINX64)\icl.exe
+*_ICC_X64_VFRPP_PATH = DEF(ICC_BINX64)\icl.exe
+*_ICC_X64_APP_PATH = DEF(ICC_BINX64)\icl.exe
+*_ICC_X64_ASM_PATH = DEF(WINDDK_BINX64)\ml64.exe
+*_ICC_X64_ASM_DLL = DEF(VSNET2003_DLL)
+
+ DEBUG_ICC_X64_CC_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FI$(DEST_DIR_DEBUG)/AutoGen.h /Zi /Gm /EHs-c- /GF
+RELEASE_ICC_X64_CC_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FI$(DEST_DIR_DEBUG)/AutoGen.h /EHs-c- /GF
+ DEBUG_ICC_X64_PCH_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FI$(DEST_DIR_DEBUG)/AutoGen.h /TC /Zi /Gm /EHs-c- /GF
+RELEASE_ICC_X64_PCH_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FI$(DEST_DIR_DEBUG)/AutoGen.h /TC /EHs-c- /GF
+ DEBUG_ICC_X64_ASM_FLAGS = /nologo /W3 /WX /c /Cx /Zd /Zi
+RELEASE_ICC_X64_ASM_FLAGS = /nologo /W3 /WX /c /Cx /Zd
+ DEBUG_ICC_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /Machine:AMD64 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
+RELEASE_ICC_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /Machine:AMD64 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text
+ *_ICC_X64_SLINK_FLAGS = /nologo /LTCG
+
+
+##################
+# IPF definitions
+##################
+*_ICC_IPF_CC_PATH = DEF(ICC_BIN64)\icl.exe
+*_ICC_IPF_SLINK_PATH = DEF(ICC_BIN64)\xilib.exe
+*_ICC_IPF_DLINK_PATH = DEF(ICC_BIN64)\xilink.exe
+*_ICC_IPF_ASMLINK_PATH = DEF(ICC_BIN64)\xilink.exe
+*_ICC_IPF_PP_PATH = DEF(ICC_BIN64)\icl.exe
+*_ICC_IPF_VFRPP_PATH = DEF(ICC_BIN64)\icl.exe
+
+*_ICC_IPF_PCH_PATH = DEF(ICC_BIN64)\icl.exe
+*_ICC_IPF_APP_PATH = DEF(ICC_BIN64)\icl.exe
+*_ICC_IPF_ASM_PATH = DEF(ICC_BIN64)\ias.exe
+
+ DEBUG_ICC_IPF_CC_FLAGS = /nologo /W4 /WX /GX /Gy /c /Od /FI$(DEST_DIR_DEBUG)/AutoGen.h /QIA64_fr32 /Zi
+RELEASE_ICC_IPF_CC_FLAGS = /nologo /W4 /WX /GX /Gy /c /Od /FI$(DEST_DIR_DEBUG)/AutoGen.h /QIA64_fr32
+ DEBUG_ICC_IPF_PCH_FLAGS = /nologo /W4 /WX /GX /Gy /c /Os /FI$(DEST_DIR_DEBUG)/AutoGen.h /Yc /TC /Zi
+RELEASE_ICC_IPF_PCH_FLAGS = /nologo /W4 /WX /GX /Gy /c /Os /FI$(DEST_DIR_DEBUG)/AutoGen.h /Yc /TC
+ DEBUG_ICC_IPF_ASM_FLAGS = -N us -X explicit -M ilp64 -N so -W3 -d debug -F COFF32
+RELEASE_ICC_IPF_ASM_FLAGS = -N us -X explicit -M ilp64 -N so -W3 -F COFF32
+ DEBUG_ICC_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF,ICF /IGNORE:4086 /MAP /ALIGN:64 /MACHINE:IA64 /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEST_DIR_DEBUG)/$(BASE_NAME).map /PDB:$(DEST_DIR_DEBUG)/$(BASE_NAME).pdb /DEBUG
+RELEASE_ICC_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF,ICF /IGNORE:4086 /MAP /ALIGN:64 /MACHINE:IA64 /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEST_DIR_DEBUG)/$(BASE_NAME).map /PDB:$(DEST_DIR_DEBUG)/$(BASE_NAME).pdb
+ *_ICC_IPF_SLINK_FLAGS = /nologo
+
+####################################################################################
+#
+# MYTOOLS
+# IA32 - Microsoft Visual Studio .NET 2003 and Microsoft Windows DDK 3790.1830 for 16-bit linker
+# X64 - Microsoft Windows DDK 3790.1830
+# IPF - Microsoft Windows DDK 3790.1830
+# EBC - Intel EFI Byte Code Compiler
+#
+####################################################################################
+# MYTOOLS - Settings compatible with previous versions of tools_def.template
+*_MYTOOLS_*_*_FAMILY = MSFT
+
+*_MYTOOLS_*_TIANO_PATH = TianoCompress.exe
+*_MYTOOLS_*_TIANO_GUID = A31280AD-481E-41B6-95E8-127F4C984779
+
+*_MYTOOLS_*_ASL_PATH = DEF(ASL_BIN)\iasl.exe
+
+*_MYTOOLS_*_VFRPP_FLAGS = /nologo /E /TC /DVFRCOMPILE /FIAutoGen.h
+
+##################
+# IA32 definitions
+##################
+*_MYTOOLS_IA32_*_DLL = DEF(VSNET2003_DLL)
+
+*_MYTOOLS_IA32_MAKE_PATH = DEF(VSNET2003_BIN)\nmake.exe
+*_MYTOOLS_IA32_CC_PATH = DEF(VSNET2003_BIN)\cl.exe
+*_MYTOOLS_IA32_SLINK_PATH = DEF(VSNET2003_BIN)\lib.exe
+*_MYTOOLS_IA32_DLINK_PATH = DEF(VSNET2003_BIN)\link.exe
+*_MYTOOLS_IA32_ASMLINK_PATH = DEF(WINDDK_BIN16)\link.exe
+*_MYTOOLS_IA32_PP_PATH = DEF(VSNET2003_BIN)\cl.exe
+*_MYTOOLS_IA32_VFRPP_PATH = DEF(VSNET2003_BIN)\cl.exe
+*_MYTOOLS_IA32_APP_PATH = DEF(VSNET2003_BIN)\cl.exe
+*_MYTOOLS_IA32_ASM_PATH = DEF(VSNET2003_BIN)\ml.exe
+*_MYTOOLS_IA32_PCH_PATH = DEF(VSNET2003_BIN)\cl.exe
+
+ *_MYTOOLS_IA32_MAKE_FLAGS = /nologo
+ *_MYTOOLS_IA32_APP_FLAGS = /nologo /E /TC
+ *_MYTOOLS_IA32_PP_FLAGS = /nologo /E /TC /FI$(DEST_DIR_DEBUG)/AutoGen.h
+ DEBUG_MYTOOLS_IA32_CC_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FI$(DEST_DIR_DEBUG)/AutoGen.h /EHs-c- /GF /Gs8192 /Zi /Gm
+RELEASE_MYTOOLS_IA32_CC_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FI$(DEST_DIR_DEBUG)/AutoGen.h /EHs-c- /GF /Gs8192
+ DEBUG_MYTOOLS_IA32_PCH_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FI$(DEST_DIR_DEBUG)/AutoGen.h /EHs-c- /GF /Gs8192 /Fp$(DEST_DIR_OUTPUT)/AutoGen.h.gch /Yc /TC /Zi /Gm
+RELEASE_MYTOOLS_IA32_PCH_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /O1ib2 /GL /FI$(DEST_DIR_DEBUG)/AutoGen.h /EHs-c- /GF /Gs8192 /Fp$(DEST_DIR_OUTPUT)/AutoGen.h.gch /Yc /TC
+ DEBUG_MYTOOLS_IA32_ASM_FLAGS = /nologo /W3 /WX /c /coff /Cx /Zd /W0 /Zi
+RELEASE_MYTOOLS_IA32_ASM_FLAGS = /nologo /W3 /WX /c /coff /Cx /Zd /W0
+ *_MYTOOLS_IA32_ASMLINK_FLAGS = /link /nologo /tiny
+ *_MYTOOLS_IA32_SLINK_FLAGS = /nologo /LTCG
+ DEBUG_MYTOOLS_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG /PDB:$(DEST_DIR_DEBUG)/$(BASE_NAME).pdb
+RELEASE_MYTOOLS_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text /PDB:$(DEST_DIR_DEBUG)/$(BASE_NAME).pdb
+
+##################
+# x64 definitions
+##################
+*_MYTOOLS_X64_MAKE_PATH = DEF(WINDDK_BIN32)\nmake.exe
+*_MYTOOLS_X64_CC_PATH = DEF(WINDDK_BINX64)\cl.exe
+*_MYTOOLS_X64_SLINK_PATH = DEF(WINDDK_BINX64)\lib.exe
+*_MYTOOLS_X64_DLINK_PATH = DEF(WINDDK_BINX64)\link.exe
+*_MYTOOLS_X64_ASMLINK_PATH = DEF(WINDDK_BIN16)\link.exe
+*_MYTOOLS_X64_PP_PATH = DEF(WINDDK_BINX64)\cl.exe
+*_MYTOOLS_X64_VFRPP_PATH = DEF(WINDDK_BINX64)\cl.exe
+*_MYTOOLS_X64_APP_PATH = DEF(WINDDK_BINX64)\cl.exe
+*_MYTOOLS_X64_ASM_PATH = DEF(WINDDK_BINX64)\ml64.exe
+*_MYTOOLS_X64_PCH_PATH = DEF(WINDDK_BINX64)\cl.exe
+
+ *_MYTOOLS_X64_SLINK_FLAGS = /nologo /LTCG
+ *_MYTOOLS_X64_APP_FLAGS = /nologo /E /TC
+ *_MYTOOLS_X64_PP_FLAGS = /nologo /E /TC /FI$(DEST_DIR_DEBUG)/AutoGen.h
+ *_MYTOOLS_X64_MAKE_FLAGS = /nologo
+ DEBUG_MYTOOLS_X64_CC_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FI$(DEST_DIR_DEBUG)/AutoGen.h /Zi /Gm /EHs-c- /GF
+RELEASE_MYTOOLS_X64_CC_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FI$(DEST_DIR_DEBUG)/AutoGen.h /EHs-c- /GF
+ DEBUG_MYTOOLS_X64_PCH_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FI$(DEST_DIR_DEBUG)/AutoGen.h /TC /Zi /Gm /EHs-c- /GF
+RELEASE_MYTOOLS_X64_PCH_FLAGS = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /FI$(DEST_DIR_DEBUG)/AutoGen.h /TC /EHs-c- /GF
+ DEBUG_MYTOOLS_X64_ASM_FLAGS = /nologo /W3 /WX /c /Cx /Zd /Zi
+RELEASE_MYTOOLS_X64_ASM_FLAGS = /nologo /W3 /WX /c /Cx /Zd
+ DEBUG_MYTOOLS_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /Machine:AMD64 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
+RELEASE_MYTOOLS_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /Machine:AMD64 /LTCG /DLL /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text
+
+##################
+# IPF definitions
+##################
+*_MYTOOLS_IPF_MAKE_PATH = DEF(WINDDK_BIN32)\nmake.exe
+*_MYTOOLS_IPF_CC_PATH = DEF(WINDDK_BIN64)\cl.exe
+*_MYTOOLS_IPF_SLINK_PATH = DEF(WINDDK_BIN64)\lib.exe
+*_MYTOOLS_IPF_DLINK_PATH = DEF(WINDDK_BIN64)\link.exe
+*_MYTOOLS_IPF_ASMLINK_PATH = DEF(WINDDK_BIN16)\link.exe
+*_MYTOOLS_IPF_PP_PATH = DEF(WINDDK_BIN64)\cl.exe
+*_MYTOOLS_IPF_VFRPP_PATH = DEF(WINDDK_BIN64)\cl.exe
+*_MYTOOLS_IPF_APP_PATH = DEF(WINDDK_BIN64)\cl.exe
+*_MYTOOLS_IPF_ASM_PATH = DEF(WINDDK_BIN64)\ias.exe
+*_MYTOOLS_IPF_PCH_PATH = DEF(WINDDK_BIN64)\cl.exe
+
+ *_MYTOOLS_IPF_ASM_OUTPUT = "-o "
+
+ *_MYTOOLS_IPF_MAKE_FLAGS = /nologo
+ *_MYTOOLS_IPF_APP_FLAGS = /nologo /E /TC
+ *_MYTOOLS_IPF_PP_FLAGS = /nologo /E /TC /FI$(DEST_DIR_DEBUG)/AutoGen.h
+ DEBUG_MYTOOLS_IPF_CC_FLAGS = /GS- /nologo /W4 /WX /EHs-c- /Gy /c /Ox /GF /GL /X /FI$(DEST_DIR_DEBUG)/AutoGen.h /Zi /Zx
+RELEASE_MYTOOLS_IPF_CC_FLAGS = /GS- /nologo /W4 /WX /EHs-c- /Gy /c /Ox /GF /GL /X /FI$(DEST_DIR_DEBUG)/AutoGen.h /Zx
+ DEBUG_MYTOOLS_IPF_PCH_FLAGS = /GS- /nologo /W4 /WX /EHs-c- /Gy /c /Ox /GF /GL /X /FI$(DEST_DIR_DEBUG)/AutoGen.h /TC /Zi /Zx
+RELEASE_MYTOOLS_IPF_PCH_FLAGS = /GS- /nologo /W4 /WX /EHs-c- /Gy /c /Ox /GF /GL /X /FI$(DEST_DIR_DEBUG)/AutoGen.h /Yc /TC /Zx
+ DEBUG_MYTOOLS_IPF_ASM_FLAGS = -N us -X explicit -M ilp64 -N so -W4 -d debug
+RELEASE_MYTOOLS_IPF_ASM_FLAGS = -N us -X explicit -M ilp64 -N so -W4
+ DEBUG_MYTOOLS_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF /OPT:ICF=10 /IGNORE:4086 /MAP /ALIGN:32 /MACHINE:IA64 /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEST_DIR_DEBUG)/$(BASE_NAME).map /PDB:$(DEST_DIR_DEBUG)/$(BASE_NAME).pdb /DEBUG
+RELEASE_MYTOOLS_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF /OPT:ICF=10 /IGNORE:4086 /MAP /ALIGN:32 /MACHINE:IA64 /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEST_DIR_DEBUG)/$(BASE_NAME).map /PDB:$(DEST_DIR_DEBUG)/$(BASE_NAME).pdb
+ *_MYTOOLS_IPF_SLINK_FLAGS = /nologo /LTCG
+
+##################
+# EBC definitions
+##################
+*_MYTOOLS_EBC_*_FAMILY = INTEL
+
+*_MYTOOLS_EBC_MAKE_PATH = DEF(VSNET2003_BIN)\nmake.exe
+*_MYTOOLS_EBC_PP_PATH = DEF(EBC_BIN)\iec.exe
+*_MYTOOLS_EBC_CC_PATH = DEF(EBC_BIN)\iec.exe
+*_MYTOOLS_EBC_SLINK_PATH = DEF(EBC_BIN)\link.exe
+*_MYTOOLS_EBC_DLINK_PATH = DEF(EBC_BIN)\link.exe
+
+*_MYTOOLS_EBC_MAKE_FLAGS = /nologo
+*_MYTOOLS_EBC_PP_FLAGS = /nologo /E /TC /FIAutoGen.h
+*_MYTOOLS_EBC_CC_FLAGS = /nologo /c /W3 /WX /FIAutoGen.h
+*_MYTOOLS_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC
+*_MYTOOLS_EBC_DLINK_FLAGS = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(ENTRYPOINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER
+
diff --git a/BaseTools/ReadMe.txt b/BaseTools/ReadMe.txt
new file mode 100644
index 0000000000..2ebc06d297
--- /dev/null
+++ b/BaseTools/ReadMe.txt
@@ -0,0 +1,164 @@
+This directory contains the next generation of EDK II build tools and template files.
+Templates are located in the Conf directory, while the tools executables for
+Microsoft Windows 32-bit Operating Systems are located in the Bin\Win32 directory.
+
+The binary tools will be updated only after passing developer testing.
+
+The BaseTools package will be updated with new tools only after all testing on a set
+of binary tools has successfully completed.
+
+Current state of the tools is Proto-Type - not all tool functions have been implemented
+and there may be bugs in these tools. These tools are under constant development at
+this time.
+
+BaseTools Simple Usage:
+1) Change the directory to the EDK2 root directory, where the edksetup.bat is
+2) Run "edksetup.bat NewBuild"
+3) Set the ACTIVE_PLATFORM to your desired platform description file
+ (%WORKSPACE%\Conf\target.txt)
+4) To build platform, run "build" command in non-module directory
+5) To build module individually, run "build" command in module directory, i.e. where the
+ *.inf file is
+
+Notes:
+1) The tree structure generated by build tools is similar to Ant build system.
+2) Makefile can be called directly by nmake for both top level platform and module. But
+ after you call "nmake cleanall", you have to call "build" command to rebuild platform
+ or modules because the AutoGen.* files have been be removed. The "makefile" itself
+ cannot generate AutoGen.* files. Only "build" command can.
+3) build.exe in %WORKSPACE%\BaseTools\Bin\Win32 is generated from following revision of
+ Python source code:
+ r827 <buildtools_project>\BaseTools\Source\Python\Autogen
+ r827 <buildtools_project>\BaseTools\Source\Python\build
+ r827 <buildtools_project>\BaseTools\Source\Python\Common
+ r827 <buildtools_project>\BaseTools\Source\Python\CommonDataClass
+ r827 <buildtools_project>\BaseTools\Source\Python\GenFds
+
+4) GenFds.exe has is a combo of the follow python source.(This is a temporary branch)
+ r827 <buildtools_project>\BaseTools\Source\Python\Common
+ r827 <buildtools_project>\BaseTools\Source\Python\CommonDataClass
+ r827 <buildtools_project>\BaseTools\Source\Python\GenFds
+
+Brief usage for Migration Tool MigrationMsa2Inf.exe:
+1. Command line format:
+ MigrationMsa2Inf [options]
+2. Input Files:
+ A syntactically valid MSA file
+3. Output Files:
+ An extended INF file with possible auto-generated EntryPoint.c, CommonHeader.h/CommonHeader.txt, depending on options and module contents.
+4. Prerequisite:
+ a. The workspace directory must be specified either by environment variable or -w option.
+ b. The Framework Database file must exist to specify the available packages in current workspace.
+ Two possible locations are: (The first location overrides the second)
+ $(WORKSPACE)\Tools\Conf\FrameworkDatabase.db
+ $(WORKSPACE)\Conf\FrameworkDatabase.db.
+ The <PackageList> field in FrameworkDatabase.db lists all available packages in current workspace.
+ One example:
+ <PackageList>
+ <Filename>MdePkg/MdePkg.nspd</Filename>
+ <Filename>MdeModulePkg/MdeModulePkg.spd</Filename>
+ <Filename>IntelFrameworkPkg/IntelFrameworkPkg.spd</Filename>
+ </PackageList>
+ The package list in FrameworkDatabase.db is important to the final quality of migration:
+ (1) It suggests the new package location: Translate package dependency Guid in MSA to Workspace relative path.
+ If the package dependency Guid cannot be found in current workspace a warning message is raised.
+ (2) It collects the Protocol/Guid/Ppi GuidCName a package contains.
+ The GuidCName acts as "clue" to add e.g. #include <Protocol/DiskIo.h> in CommonHeader.h
+
+5. Example:
+ WORKSAPCE has already been set: $(WORKSPACE) = c:\work\EdkII.
+
+ a. MigrationMsa2Inf -f c:\work\EdkII\Nt32Pkg\WinNtThunkDxe\WinNtThunk.msa -o c:\work\EdkII\Nt32Pkg\WinNtThunkDxe\WinNtThunk.inf
+ b. MigrationMsa2Inf -f c:\work\EdkII\Nt32Pkg\WinNtThunkDxe\WinNtThunk.msa -a
+ Example a & b are equivalent to migrate WinNtThunk driver from EDKII to EDKII' code base.
+
+ c. MigrationMsa2Inf -f c:\work\EdkII\Nt32Pkg\WinNtThunkDxe\WinNtThunk.msa -a -c
+ The extra "-c" option performs several hardcode mapping due to the naming change in EDKII':
+ OldMdePkg Guid -> MdePkgGuid,
+ EdkModulePkg Guid -> MdeModulePkgGuid,
+ EdkGraphicsLib -> GraphicsLib
+ HiiLib -> HiiLibFramework
+ ...
+
+ d. MigrationMsa2Inf -f c:\work\EdkII\Nt32Pkg\WinNtThunkDxe\WinNtThunk.msa -m
+ The extra "-m" option suppresses the generation of "CommonHeader.h" and leave all C files intact.
+ Instead, it generates "CommonHeader.txt". Developers can manually copy its content to a local common header file in a module.
+
+6. Known Limitations:
+ a. Tool does not handle Exit Boot Services Callback & Virtual Address Changed Event. Developers need to handle it manually.
+ b. The #include <Library/AbcLib.h> is based on library class naming convention: The header filename for "AbcLib" class are "AbcLib.h" by convention.
+ c. The #include <Guid/Xyz.h>, <Protocol/Xyz.h> and <Ppi/Xyz.h> are added based on gGuidCName listed in MSA.
+ If a GuidCName cannot map to a package Guid/Protocol/Ppi header file, a warning message is raised.
+ If a module uses the definition in a pakcage Guid/Protocol/Ppi header file without list its associative GuidCName, the build will beak. Developer needs to manually add the include statement.
+ d. The [Depex] sections are generated from DXS files with Guid Macro translated to Guid CName by naming convention, etc.
+ If tool fails to "guess" the Guid CName from Guid Macro, it will leave the GuidMacro in [Depex] section for manual resolution.
+ e. When tool generates [Sources] section, the modifiers for source files are lost. (Need to add proper tool chain, etc)
+ f. When tool generates [LibraryClasses] section, the recommended library instances are lost. (No impact to build)
+
+7. Pyton Source
+ r682 <buildtools_project>\BaseTools\Source\Python\MigrationMsa2Inf
+
+
+Brief Usage for PcdSyntax Update:
+Usage:
+ PcdSyntaxUpdate.exe <directory_name>
+It searches all INF, DEC and DSC file under <directory_name> and update them with the following rules:
+1. Update INF files to conform to INF spec 0.44:
+ a. Rename PCD section name: e.g. [PcdsFeatureFlag] -> [FeaturePcd]
+ b. Adjust PCD section item format: e.g. PcdDebugClearMemoryValue|gEfiMdePkgTokenSpaceGuid -> gEfiMdePkgTokenSpaceGuid.PcdDebugClearMemoryValue
+ c. Update the syntax of binary INF file (not PCD related)
+2. Update DEC files to confirm to DEC spec 0.36
+ Adjust PCD section item format: e.g. PcdWinNtPhysicalDisk|0x00001000|gEfiNt32PkgTokenSpaceGuid|VOID*|L"E:RW;245760;512"-> gEfiNt32PkgTokenSpaceGuid.PcdWinNtFlashFvRecoverySize|0x0|UINT32|0x00001011
+3. Update DSC files to confirm to DSC spec
+ a. Adjust string/array typed PCD item format: e.g. PcdWinNtMemorySizeForSecMain|gEfiNt32PkgTokenSpaceGuid|L"64!64"|12 -> gEfiNt32PkgTokenSpaceGuid.PcdWinNtMemorySizeForSecMain|L"64!64"|VOID*|12
+ b. Adjust non-string/array typed PCD item format: e.g. PcdWinNtBootMode|gEfiNt32PkgTokenSpaceGuid|1 -> gEfiNt32PkgTokenSpaceGuid.PcdWinNtBootMode|1
+ c. Update the override library class in [Components] section: e.g.
+ <LibraryClass> {
+ PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
+ }
+ To
+ <LibraryClasses> {
+ PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
+ }
+
+Brief usage for Migration Tool Spd2Dec.exe:
+1. Command line format:
+ Spd2Dec [options] input_filename
+2. Input File:
+ A syntactically valid SPD file
+3. Output Files:
+ A DEC file whose syntax confirms to DEC spec.
+
+4. Example:
+ a. Spd2Dec -o c:\work\EdkII\Nt32Pkg\Nt32.spd c:\work\EdkII\Nt32Pkg\Nt32.dec
+ b. Spd2Dec -a c:\work\EdkII\Nt32Pkg\Nt32.spd
+ Example a & b are equivalent to migrate Nt32 package SPD file from EDKII to EDKII' snytax.
+
+6. Pyton Source
+ r777 <buildtools_project>\BaseTools\Source\Python\spd2Dec
+
+Brief usage for Migration Tool Fpd2Dsc.exe:
+1. Command line format:
+ Fpd2Dsc [options] input_filename
+2. Input File:
+ A syntactically valid FPD file
+3. Output Files:
+ A DSC file which syntax confirms to DSC spec.
+4. Prerequisite:
+ a. The workspace directory must be specified either by environment variable or -w option.
+
+5. Example:
+ WORKSAPCE has already been set: $(WORKSPACE) = c:\work\EdkII.
+
+ a. Fpd2Dsc -o c:\work\EdkII\Nt32Pkg\Nt32.dsc c:\work\EdkII\Nt32Pkg\Nt32.fpd
+ b. Fpd2Dsc -a c:\work\EdkII\Nt32Pkg\Nt32.fpd
+ Example a & b are equivalent to migrate Nt32 platform description file from EDKII to EDKII' snytax.
+
+6. Known Limitations:
+ a. Tool does not handle Libraries Section since no related info in original FPD file. Developers need to handle it manually in the output DSC file.
+ b. If MSA file which is corresponds to module guid could not be found in currect workspace, tool will dump the module guid.
+
+7. Pyton Source
+ r767 <buildtools_project>\BaseTools\Source\Python\Fpd2Dsc
+
+27-September-2007
diff --git a/BaseTools/toolsetup.bat b/BaseTools/toolsetup.bat
new file mode 100755
index 0000000000..f2a3558301
--- /dev/null
+++ b/BaseTools/toolsetup.bat
@@ -0,0 +1,132 @@
+@REM
+@REM Copyright (c) 2006, Intel Corporation
+@REM All rights reserved. This program and the accompanying materials
+@REM are licensed and made available under the terms and conditions of the BSD License
+@REM which accompanies this distribution. The full text of the license may be found at
+@REM http://opensource.org/licenses/bsd-license.php
+@REM
+@REM THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+@REM WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+@REM
+
+@echo off
+
+REM ##############################################################
+REM # You should not have to modify anything below this line
+REM #
+
+if /I "%1"=="-h" goto usage
+if /I "%1"=="-help" goto usage
+if /I "%1"=="--help" goto usage
+if /I "%1"=="/h" goto usage
+if /I "%1"=="/?" goto usage
+if /I "%1"=="/help" goto usage
+
+if /I "%1"=="Reconfig" (
+ if NOT "%2"=="" set EDK_TOOLS_PATH=%2
+) else (
+ if NOT "%1"=="" set EDK_TOOLS_PATH=%1
+)
+
+REM
+REM Check the required system environment variables
+REM
+
+:setup_workspace
+REM
+REM check the EDK_TOOLS_PATH
+REM
+if not defined EDK_TOOLS_PATH goto no_tools_path
+if exist %EDK_TOOLS_PATH% goto set_path
+echo.
+echo !!!WARNING!!! %EDK_TOOLS_PATH% doesn't exist. %WORKSPACE%\BaseTools will be used !!!
+echo.
+
+:no_tools_path
+if exist %WORKSPACE%\BaseTools (
+ set EDK_TOOLS_PATH=%WORKSPACE%\BaseTools
+) else (
+ echo.
+ echo !!!WARNING!!! No tools path found. Please set EDK_TOOLS_PATH !!!
+ echo.
+ goto end
+)
+
+:set_path
+if defined WORKSPACE_TOOLS_PATH goto check_path
+set PATH=%EDK_TOOLS_PATH%\Bin;%EDK_TOOLS_PATH%\Bin\Win32;%PATH%
+set WORKSPACE_TOOLS_PATH=%EDK_TOOLS_PATH%
+goto path_ok
+
+:check_path
+if "%EDK_TOOLS_PATH%"=="%WORKSPACE_TOOLS_PATH%" goto path_ok
+set PATH=%EDK_TOOLS_PATH%\Bin;%EDK_TOOLS_PATH%\Bin\Win32;%PATH%
+set WORKSPACE_TOOLS_PATH=%EDK_TOOLS_PATH%
+echo Resetting the PATH variable to include the EDK_TOOLS_PATH for this WORKSPACE
+
+:path_ok
+echo PATH = %PATH%
+echo.
+echo WORKSPACE = %WORKSPACE%
+echo EDK_TOOLS_PATH = %EDK_TOOLS_PATH%
+echo.
+
+REM
+REM copy *.template to %WORKSPACE%\Conf
+REM
+if NOT exist %WORKSPACE%\Conf (
+ mkdir %WORKSPACE%\Conf
+) else (
+ if /I "%1"=="Reconfig" (
+ echo.
+ echo Over-writing the files in the WORKSPACE\Conf directory
+ echo using the default template files
+ echo.
+ )
+)
+if NOT exist %WORKSPACE%\Conf\FrameworkDatabase.db (
+ echo copying ... FrameworkDatabase.template to %WORKSPACE%\Conf\FrameworkDatabase.db
+ copy %EDK_TOOLS_PATH%\Conf\FrameworkDatabase.template %WORKSPACE%\Conf\FrameworkDatabase.db > nul
+) else (
+ if /I "%1"=="Reconfig" copy /Y %EDK_TOOLS_PATH%\Conf\FrameworkDatabase.template %WORKSPACE%\Conf\FrameworkDatabase.db > nul
+)
+if NOT exist %WORKSPACE%\Conf\target.txt (
+ echo copying ... target.template to %WORKSPACE%\Conf\target.txt
+ copy %EDK_TOOLS_PATH%\Conf\target.template %WORKSPACE%\Conf\target.txt > nul
+) else (
+ if /I "%1"=="Reconfig" copy /Y %EDK_TOOLS_PATH%\Conf\target.template %WORKSPACE%\Conf\target.txt > nul
+)
+if NOT exist %WORKSPACE%\Conf\tools_def.txt (
+ echo copying ... tools_def.template to %WORKSPACE%\Conf\tools_def.txt
+ copy %EDK_TOOLS_PATH%\Conf\tools_def.template %WORKSPACE%\Conf\tools_def.txt > nul
+) else (
+ if /I "%1"=="Reconfig" copy /Y %EDK_TOOLS_PATH%\Conf\tools_def.template %WORKSPACE%\Conf\tools_def.txt > nul
+)
+if NOT exist %WORKSPACE%\Conf\build_rule.txt (
+ echo copying ... build_rule.template to %WORKSPACE%\Conf\build_rule.txt
+ copy %EDK_TOOLS_PATH%\Conf\build_rule.template %WORKSPACE%\Conf\build_rule.txt > nul
+) else (
+ if /I "%1"=="Reconfig" copy /Y %EDK_TOOLS_PATH%\Conf\build_rule.template %WORKSPACE%\Conf\build_rule.txt > nul
+)
+
+REM
+REM copy XMLSchema to %EDK_TOOLS_PATH%\Conf\XMLSchema
+REM
+REM echo copying ... XMLSchema to %EDK_TOOLS_PATH%\Conf\XMLSchema
+REM xcopy %WORKSPACE%\Conf\XMLSchema %EDK_TOOLS_PATH%\Conf\XMLSchema /S /I /D /F /Q > nul
+
+REM
+REM Done!!!
+REM
+goto end
+
+:usage
+echo.
+echo "Usage: %0 [/? | /h | /help | -h | -help | --help] [Reconfig] [tools_path]"
+echo.
+echo tools_path Tools' path. EDK_TOOLS_PATH will be set to this path.
+echo.
+
+:end
+@echo on
+