]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/BPDG/BPDG.py
BaseTools: Enhance BaseTools supports FixedAtBuild usage in VFR file
[mirror_edk2.git] / BaseTools / Source / Python / BPDG / BPDG.py
index 10692c48340eabdf04f0f0fbedaf1a8ac5967fe6..b1e328ff3f118096f83091e7ca51a0ee528aa505 100644 (file)
@@ -6,7 +6,7 @@
 #  file of PCD layout for use during the build when the platform integrator selects to use \r
 #  automatic offset calculation.\r
 #\r
-#  Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>\r
+#  Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.<BR>\r
 #\r
 #  This program and the accompanying materials\r
 #  are licensed and made available under the terms and conditions of the BSD License\r
 ##\r
 # Import Modules\r
 #\r
-import os\r
+import Common.LongFilePathOs as os\r
 import sys\r
 import encodings.ascii\r
 \r
 from optparse import OptionParser\r
-from encodings import gbk\r
 from Common import EdkLogger\r
 from Common.BuildToolError import *\r
+from Common.BuildVersion import gBUILD_VERSION\r
 \r
 import StringTable as st\r
 import GenVpd\r
 \r
 PROJECT_NAME       = st.LBL_BPDG_LONG_UNI\r
-VERSION            = st.LBL_BPDG_VERSION\r
+VERSION            = (st.LBL_BPDG_VERSION + " Build " + gBUILD_VERSION)\r
 \r
 ## Tool entrance method\r
 #\r
@@ -49,13 +49,11 @@ def main():
     \r
     # Initialize log system\r
     EdkLogger.Initialize()          \r
-    Options, Args = myOptionParser()\r
+    Options, Args = MyOptionParser()\r
     \r
     ReturnCode = 0\r
     \r
-    if Options.opt_slient:\r
-        EdkLogger.SetLevel(EdkLogger.ERROR)\r
-    elif Options.opt_verbose:\r
+    if Options.opt_verbose:\r
         EdkLogger.SetLevel(EdkLogger.VERBOSE)\r
     elif Options.opt_quiet:\r
         EdkLogger.SetLevel(EdkLogger.QUIET)\r
@@ -64,7 +62,7 @@ def main():
     else:\r
         EdkLogger.SetLevel(EdkLogger.INFO)\r
                   \r
-    if Options.vpd_filename == None:\r
+    if Options.bin_filename == None:\r
         EdkLogger.error("BPDG", ATTRIBUTE_NOT_AVAILABLE, "Please use the -o option to specify the file name for the VPD binary file")  \r
     if Options.filename == None:\r
         EdkLogger.error("BPDG", ATTRIBUTE_NOT_AVAILABLE, "Please use the -m option to specify the file name for the mapping file")  \r
@@ -74,18 +72,26 @@ def main():
         Force = True\r
 \r
     if (Args[0] != None) :\r
-        startBPDG(Args[0], Options.filename, Options.vpd_filename, Force)\r
+        StartBpdg(Args[0], Options.filename, Options.bin_filename, Force)\r
     else :\r
         EdkLogger.error("BPDG", ATTRIBUTE_NOT_AVAILABLE, "Please specify the file which contain the VPD pcd info.",\r
                         None)         \r
     \r
     return ReturnCode\r
-            \r
-def myOptionParser():   \r
+\r
+\r
+## Parse command line options\r
+#\r
+# Using standard Python module optparse to parse command line option of this tool.\r
+#\r
+#   @retval options   A optparse.Values object containing the parsed options\r
+#   @retval args      Target of BPDG command\r
+#            \r
+def MyOptionParser():   \r
     #\r
     # Process command line firstly.\r
     #\r
-    parser = OptionParser(version="%s - Version %s\n" % (PROJECT_NAME, VERSION),\r
+    parser = OptionParser(version="%s - Version %s" % (PROJECT_NAME, VERSION),\r
                           description='',\r
                           prog='BPDG',\r
                           usage=st.LBL_BPDG_USAGE\r
@@ -94,11 +100,9 @@ def myOptionParser():
                       help=st.MSG_OPTION_DEBUG_LEVEL)\r
     parser.add_option('-v', '--verbose', action='store_true', dest='opt_verbose',\r
                       help=st.MSG_OPTION_VERBOSE)\r
-    parser.add_option('-s', '--silent', action='store_true', dest='opt_slient', default=False,\r
-                      help=st.MSG_OPTION_SILENT)\r
     parser.add_option('-q', '--quiet', action='store_true', dest='opt_quiet', default=False,\r
                       help=st.MSG_OPTION_QUIET)\r
-    parser.add_option('-o', '--vpd-filename', action='store', dest='vpd_filename',\r
+    parser.add_option('-o', '--vpd-filename', action='store', dest='bin_filename',\r
                       help=st.MSG_OPTION_VPD_FILENAME)\r
     parser.add_option('-m', '--map-filename', action='store', dest='filename',\r
                       help=st.MSG_OPTION_MAP_FILENAME)   \r
@@ -111,8 +115,22 @@ def myOptionParser():
         EdkLogger.info(parser.usage)\r
         sys.exit(1)\r
     return options, args\r
-    \r
-def startBPDG(InputFileName, MapFileName, VpdFileName, Force):\r
+\r
+\r
+## Start BPDG and call the main functions \r
+#\r
+# This method mainly focus on call GenVPD class member functions to complete\r
+# BPDG's target. It will process VpdFile override, and provide the interface file\r
+# information.\r
+#\r
+#   @Param      InputFileName   The filename include the vpd type pcd information\r
+#   @param      MapFileName     The filename of map file that stores vpd type pcd information.\r
+#                               This file will be generated by the BPDG tool after fix the offset\r
+#                               and adjust the offset to make the pcd data aligned.\r
+#   @param      VpdFileName     The filename of Vpd file that hold vpd pcd information.\r
+#   @param      Force           Override the exist Vpdfile or not.\r
+#\r
+def StartBpdg(InputFileName, MapFileName, VpdFileName, Force):\r
     if os.path.exists(VpdFileName) and not Force:\r
         print "\nFile %s already exist, Overwrite(Yes/No)?[Y]: " % VpdFileName\r
         choice = sys.stdin.readline()\r