BaseTools: Update Build tool to support multiple workspaces
WORKSPACE is still kept. New PACKAGES_PATH is introduced to specify the additional WORKSPACEs. In PACKAGES_PATH, ';' is separator in Windows, ':' is separator in Linux. Build directory is in WORKSPACE. Package, BaseTools and Conf directory will be found from WORKSPACE and PACKAGES_PATH. In implementation, BaseTools adds MultipleWorkspace class for the file path conversion from WORKSPACE and PACKAGES_PATH. Verify two tree layouts. Root\edk2\MdePkg Root\edk2\MdeMdeModulePkg Root\edk2\... 1. set WORKSPACE=Root\edk2 2. set WORKSPACE=Root, and set PACKAGES_PATH=Root\edk2 Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Li YangX <yangx.li@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18579 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@ -31,6 +31,7 @@ from AutoGen.BuildEngine import BuildRule
|
||||
import Common.DataType as DataType
|
||||
from Common.Misc import PathClass
|
||||
from Common.LongFilePathSupport import OpenLongFilePath as open
|
||||
from Common.MultipleWorkspace import MultipleWorkspace as mws
|
||||
|
||||
## Global variables
|
||||
#
|
||||
@ -322,12 +323,13 @@ class GenFdsGlobalVariable:
|
||||
# @param String String that may contain macro
|
||||
#
|
||||
def ReplaceWorkspaceMacro(String):
|
||||
String = mws.handleWsMacro(String)
|
||||
Str = String.replace('$(WORKSPACE)', GenFdsGlobalVariable.WorkSpaceDir)
|
||||
if os.path.exists(Str):
|
||||
if not os.path.isabs(Str):
|
||||
Str = os.path.abspath(Str)
|
||||
else:
|
||||
Str = os.path.join(GenFdsGlobalVariable.WorkSpaceDir, String)
|
||||
Str = mws.join(GenFdsGlobalVariable.WorkSpaceDir, String)
|
||||
return os.path.normpath(Str)
|
||||
|
||||
## Check if the input files are newer than output files
|
||||
|
Reference in New Issue
Block a user