this patch add new feature to support override PCD value on the command line. The value from the command line is the highest priority. 1.Add option(--pcd) to support both PcdName and TokenSpaceGuild.PcdName 2.For void* type PCD, use following format: cstring PCD: --pcd PcdName="string" unicodestring PCD: --pcd PcdName=L"string" CArray PCD: --pcd PcdName=B"{0x1, 0x2}" 3.Build Report, use *B to show the PCD value was overridden in the command line. 4.Error Condition: Report error if the PCD is not found Report error if the PcdName is found under multiple different TokenSpaceGuid Report error if PCD value syntax is incorrect Report error if void* type PCD value exceed its max size Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
81 lines
2.1 KiB
Python
81 lines
2.1 KiB
Python
## @file
|
|
# This file is used to define common static strings used by INF/DEC/DSC files
|
|
#
|
|
# Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>
|
|
# 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 re
|
|
|
|
gIsWindows = None
|
|
|
|
gEdkCompatibilityPkg = "EdkCompatibilityPkg"
|
|
gWorkspace = "."
|
|
gEdkSource = "EdkCompatibilityPkg"
|
|
gEfiSource = "."
|
|
gEcpSource = "EdkCompatibilityPkg"
|
|
|
|
gOptions = None
|
|
gCaseInsensitive = False
|
|
gAllFiles = None
|
|
|
|
gGlobalDefines = {}
|
|
gPlatformDefines = {}
|
|
# PCD name and value pair for fixed at build and feature flag
|
|
gPlatformPcds = {}
|
|
# PCDs with type that are not fixed at build and feature flag
|
|
gPlatformOtherPcds = {}
|
|
gActivePlatform = None
|
|
gCommandLineDefines = {}
|
|
gEdkGlobal = {}
|
|
gOverrideDir = {}
|
|
|
|
# for debug trace purpose when problem occurs
|
|
gProcessingFile = ''
|
|
gBuildingModule = ''
|
|
|
|
## Regular expression for matching macro used in DSC/DEC/INF file inclusion
|
|
gMacroRefPattern = re.compile("\$\(([A-Z][_A-Z0-9]*)\)", re.UNICODE)
|
|
gMacroDefPattern = re.compile("^(DEFINE|EDK_GLOBAL)[ \t]+")
|
|
gMacroNamePattern = re.compile("^[A-Z][A-Z0-9_]*$")
|
|
# C-style wide string pattern
|
|
gWideStringPattern = re.compile('(\W|\A)L"')
|
|
#
|
|
# A global variable for whether current build in AutoGen phase or not.
|
|
#
|
|
gAutoGenPhase = False
|
|
|
|
#
|
|
# The Conf dir outside the workspace dir
|
|
#
|
|
gConfDirectory = ''
|
|
|
|
#
|
|
# The relative default database file path
|
|
#
|
|
gDatabasePath = ".cache/build.db"
|
|
|
|
#
|
|
# Build flag for binary build
|
|
#
|
|
gIgnoreSource = False
|
|
|
|
#
|
|
# FDF parser
|
|
#
|
|
gFdfParser = None
|
|
|
|
#
|
|
# If a module is built more than once with different PCDs or library classes
|
|
# a temporary INF file with same content is created, the temporary file is removed
|
|
# when build exits.
|
|
#
|
|
gTempInfs = []
|
|
|
|
BuildOptionPcd = []
|