aa64e0ece65f6a2665f35edaeef13108998023e8
[people/mcb30/basetools.git] / Source / Python / GenFds / GenFdsGlobalVariable.py
1 import os\r
2 import subprocess\r
3 class GenFdsGlobalVariable:\r
4     FvDir = ''\r
5     OuputDir = ''\r
6     BinDir = ''\r
7     FfsDir = ''      # FvDir + os.sep + 'Ffs'\r
8     FdfParser = None\r
9     LibDir = ''\r
10     WorkSpace = None\r
11     WorkSpaceDir = ''\r
12     RuleDict = {}\r
13     DefaultRule = None\r
14     ArchList = None\r
15     VtfDict = {}\r
16     \r
17     def ExtendMarco (String):\r
18         return String\r
19     \r
20     def SetDir (OutputDir, FdfParser, WorkSpace, ArchList):\r
21         print "GenFdsGlobalVariable.OuputDir :%s" %OutputDir\r
22         GenFdsGlobalVariable.OuputDir = os.path.normpath(OutputDir)\r
23         GenFdsGlobalVariable.FdfParser = FdfParser\r
24         GenFdsGlobalVariable.WorkSpace = WorkSpace\r
25         GenFdsGlobalVariable.FvDir = os.path.join(GenFdsGlobalVariable.OuputDir, 'Fv')\r
26         GenFdsGlobalVariable.FfsDir = os.path.join(GenFdsGlobalVariable.FvDir, 'Ffs')\r
27         GenFdsGlobalVariable.WorkSpaceDir = GenFdsGlobalVariable.WorkSpace.Workspace.WorkspaceDir\r
28         if ArchList != None:\r
29             GenFdsGlobalVariable.ArchList = ArchList\r
30             \r
31         if not os.path.exists(GenFdsGlobalVariable.FvDir) :\r
32             os.makedirs(GenFdsGlobalVariable.FvDir)\r
33             \r
34     def SetDefaultRule (Rule) :\r
35         GenFdsGlobalVariable.DefaultRule = Rule\r
36 \r
37     def ReplaceWorkspaceMarco(String):\r
38         Str = String.replace('$(WORKSPACE)', GenFdsGlobalVariable.WorkSpaceDir)\r
39         Str = os.path.realpath(Str)\r
40         return Str\r
41     \r
42     def CallExternalTool (cmd, errorMess):\r
43         PopenObject = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr= subprocess.PIPE)\r
44         (out, error) = PopenObject.communicate()\r
45 \r
46         while PopenObject.returncode == None :\r
47             PopenObject.wait()\r
48         if PopenObject.returncode != 0:\r
49             print "Return Value = %d" %PopenObject.returncode\r
50             print out\r
51             print error\r
52             raise Exception(errorMess)\r
53         \r
54     SetDir = staticmethod(SetDir)\r
55     ExtendMarco = staticmethod(ExtendMarco)\r
56     SetDefaultRule = staticmethod(SetDefaultRule)\r
57     ReplaceWorkspaceMarco = staticmethod(ReplaceWorkspaceMarco)\r
58     CallExternalTool = staticmethod(CallExternalTool)\r