Changeset 107053 in vbox for trunk/src/VBox/Devices/EFI/Firmware
- Timestamp:
- Nov 20, 2024 11:02:50 AM (3 months ago)
- svn:sync-xref-src-repo-rev:
- 166007
- Location:
- trunk/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/AutoGen/GenMake.py
r105670 r107053 56 56 NMAKE_FILETYPE = "nmake" 57 57 GMAKE_FILETYPE = "gmake" 58 KMK_FILETYPE = "kmk"; # vbox 58 59 WIN32_PLATFORM = "win32" 59 60 POSIX_PLATFORM = "posix" 61 KBUILD_PLATFORM = "kbuild"; # vbox 60 62 61 63 ## BuildFile class … … 73 75 _FILE_NAME_ = { 74 76 NMAKE_FILETYPE : "Makefile", 77 KMK_FILETYPE : "Makefile.kmk", # vbox 75 78 GMAKE_FILETYPE : "GNUmakefile" 76 79 } … … 101 104 _FILE_HEADER_ = { 102 105 NMAKE_FILETYPE : _MAKEFILE_HEADER % _FILE_NAME_[NMAKE_FILETYPE], 106 KMK_FILETYPE : _MAKEFILE_HEADER % _FILE_NAME_[KMK_FILETYPE], # vbox 103 107 GMAKE_FILETYPE : _MAKEFILE_HEADER % _FILE_NAME_[GMAKE_FILETYPE] 104 108 } … … 113 117 _SHELL_CMD_ = { 114 118 WIN32_PLATFORM : { 115 "CP" : 116 "MV" : 117 "RM" : 118 "MD" : 119 "RD" : 119 "CP" : "copy /y", 120 "MV" : "move /y", 121 "RM" : "del /f /q", 122 "MD" : "mkdir", 123 "RD" : "rmdir /s /q", 120 124 }, 125 126 KBUILD_PLATFORM : { # vbox 127 "CP" : "kmk_builtin_cp -f", # vbox 128 "MV" : "kmk_builtin_mv -f", # vbox 129 "MD" : "kmk_builtin_mkdir -p", # vbox 130 "RM" : "kmk_builtin_rm -f", # vbox 131 "RD" : "kmk_builtin_rm -Rf", # vbox 132 }, # vbox 121 133 122 134 POSIX_PLATFORM : { … … 132 144 _SEP_ = { 133 145 WIN32_PLATFORM : "\\", 146 KBUILD_PLATFORM : "\\" if sys.platform == "win32" else '/', # vbox 134 147 POSIX_PLATFORM : "/" 135 148 } … … 138 151 _MD_TEMPLATE_ = { 139 152 WIN32_PLATFORM : 'if not exist %(dir)s $(MD) %(dir)s', 153 KBUILD_PLATFORM : "$(MD) -- %(dir)s", # vbox 140 154 POSIX_PLATFORM : "$(MD) %(dir)s" 141 155 } … … 144 158 _RD_TEMPLATE_ = { 145 159 WIN32_PLATFORM : 'if exist %(dir)s $(RD) %(dir)s', 160 KBUILD_PLATFORM : "$(RD) -- %(dir)s", # vbox 146 161 POSIX_PLATFORM : "$(RD) %(dir)s" 147 162 } … … 149 164 _CP_TEMPLATE_ = { 150 165 WIN32_PLATFORM : 'if exist %(Src)s $(CP) %(Src)s %(Dst)s', 166 KBUILD_PLATFORM : "kmk_builtin_test -f %(Src)s -- $(CP) -- %(Src)s %(Dst)s", # vbox 151 167 POSIX_PLATFORM : "test -f %(Src)s && $(CP) %(Src)s %(Dst)s" 152 168 } … … 154 170 _CD_TEMPLATE_ = { 155 171 WIN32_PLATFORM : 'if exist %(dir)s cd %(dir)s', 172 KBUILD_PLATFORM : "test -e %(dir)s && cd %(dir)s", # vbox 156 173 POSIX_PLATFORM : "test -e %(dir)s && cd %(dir)s" 157 174 } … … 159 176 _MAKE_TEMPLATE_ = { 160 177 WIN32_PLATFORM : 'if exist %(file)s "$(MAKE)" $(MAKE_FLAGS) -f %(file)s', 178 KBUILD_PLATFORM : '+kmk_test -e %(file)s -- "$(MAKE)" $(MAKE_FLAGS) -f %(file)s', # vbox 161 179 POSIX_PLATFORM : 'test -e %(file)s && "$(MAKE)" $(MAKE_FLAGS) -f %(file)s' 162 180 } … … 164 182 _INCLUDE_CMD_ = { 165 183 NMAKE_FILETYPE : '!INCLUDE', 184 KMK_FILETYPE : "include", # vbox 166 185 GMAKE_FILETYPE : "include" 167 186 } … … 181 200 if "nmake" in MakePath: 182 201 self._FileType = NMAKE_FILETYPE 202 elif "kmk" in MakePath: # vbox 203 self._FileType = KMK_FILETYPE # vbox 183 204 else: 184 205 self._FileType = GMAKE_FILETYPE … … 188 209 else: 189 210 self._Platform = POSIX_PLATFORM 211 # vbox start 212 if self._FileType == KMK_FILETYPE: 213 self._Platform = KBUILD_PLATFORM 214 # vbox end 190 215 191 216 ## Create build file. … … 244 269 break 245 270 return Path 271 272 # VBox begin 273 def FixQuietAndRedirForCommandList(self, asCommands): 274 asRet = []; 275 for sCmd in asCommands: 276 sCmd = sCmd.strip(); 277 if sCmd: 278 if sCmd.startswith('if exist ') and self._FileType == KMK_FILETYPE: 279 raise Exception('sCmd=%s' % (sCmd,)); 280 281 if self._FileType == KMK_FILETYPE and sCmd.count('>') == 1 and '&' not in sCmd: 282 sCmd, sOutput = sCmd.split('>'); 283 sCmd = 'kmk_builtin_redirect -wto %s -- %s' % (sOutput.strip(), sCmd.strip()); 284 285 if sCmd[0] == '-' and self._FileType == NMAKE_FILETYPE: 286 sCmd = '-$(EFI_QUIET)' + sCmd[1:]; 287 else: 288 sCmd = '$(EFI_QUIET)' + sCmd; 289 asRet.append(sCmd); 290 return asRet; 291 # VBox end 246 292 247 293 ## ModuleMakefile class … … 1050 1096 Deps.append("$(%s)" % T.ListFileMacro) 1051 1097 1052 # VBox - begin: Add $(QUIET)1053 sAllCmds = None;1054 for sCmd in T.Commands:1055 sCmd = sCmd.strip();1056 if len(sCmd) > 0:1057 if sCmd[0] == '-' and self._FileType == 'nmake':1058 sCmd = '-$(EFI_QUIET)' + sCmd[1:];1059 else:1060 sCmd = '$(EFI_QUIET)' + sCmd;1061 if sAllCmds is None:1062 sAllCmds = sCmd;1063 else:1064 sAllCmds += '\n\t' + sCmd;1065 # VBox - end.1066 1067 1098 if self._AutoGenObject.BuildRuleFamily == TAB_COMPILER_MSFT and Type == TAB_C_CODE_FILE: 1068 1099 T, CmdTarget, CmdTargetDict, CmdCppDict = self.ParserCCodeFile(T, Type, CmdSumDict, CmdTargetDict, … … 1070 1101 ToolsDef, resp_file_number) 1071 1102 resp_file_number += 1 1072 TargetDict = {"target": self.PlaceMacro(T.Target.Path, self.Macros), "cmd": "\n\t".join(T.Commands),"deps": CCodeDeps} 1073 # VBox: Original: TargetDict = {"target": self.PlaceMacro(T.Target.Path, self.Macros), "cmd": sAllCmds,"deps": CCodeDeps} 1074 CmdLine = self._BUILD_TARGET_TEMPLATE.Replace(TargetDict).rstrip().replace('\t$(OBJLIST', '$(OBJLIST') 1103 TargetDict = {"target": self.PlaceMacro(T.Target.Path, self.Macros), "cmd": "\n\t".join(self.FixQuietAndRedirForCommandList(T.Commands)),"deps": CCodeDeps} 1104 CmdLine = self._BUILD_TARGET_TEMPLATE.Replace(TargetDict).rstrip().replace('\t$(OBJLIST', '$(OBJLIST').replace('\t$(EFI_QUIET)$(OBJLIST', '$(OBJLIST') 1075 1105 if T.Commands: 1076 1106 CmdLine = '%s%s' %(CmdLine, TAB_LINE_BREAK) … … 1078 1108 self.BuildTargetList.append(CmdLine) 1079 1109 else: 1080 TargetDict = {"target": self.PlaceMacro(T.Target.Path, self.Macros), "cmd": "\n\t".join(T.Commands),"deps": Deps} 1081 # VBox: Original: TargetDict = {"target": self.PlaceMacro(T.Target.Path, self.Macros), "cmd": sAllCmds,"deps": Deps} 1110 TargetDict = {"target": self.PlaceMacro(T.Target.Path, self.Macros), "cmd": "\n\t".join(self.FixQuietAndRedirForCommandList(T.Commands)),"deps": Deps} 1111 if self._FileType == KMK_FILETYPE and len(T.Outputs) > 1: # vbox 1112 # kmk has syntax for multiple output files. # vbox 1113 asTargets = [TargetDict["target"],]; # vbox 1114 for oOutput in T.Outputs[1:]: # vbox 1115 asTargets.append(self.PlaceMacro(oOutput.Path, self.Macros)); # vbox 1116 TargetDict["target"] = ' +| '.join(asTargets) # vbox 1082 1117 self.BuildTargetList.append(self._BUILD_TARGET_TEMPLATE.Replace(TargetDict)) 1083 1118 1084 # Add a Makefile rule for targets generating multiple files. 1085 # The main output is a prerequisite for the other output files. 1086 for i in T.Outputs[1:]: 1087 AnnexeTargetDict = {"target": self.PlaceMacro(i.Path, self.Macros), "cmd": "", "deps": self.PlaceMacro(T.Target.Path, self.Macros)} 1088 self.BuildTargetList.append(self._BUILD_TARGET_TEMPLATE.Replace(AnnexeTargetDict)) 1119 if self._FileType != KMK_FILETYPE: # vbox 1120 # Add a Makefile rule for targets generating multiple files. 1121 # The main output is a prerequisite for the other output files. 1122 for i in T.Outputs[1:]: 1123 AnnexeTargetDict = {"target": self.PlaceMacro(i.Path, self.Macros), "cmd": "", "deps": self.PlaceMacro(T.Target.Path, self.Macros)} 1124 self.BuildTargetList.append(self._BUILD_TARGET_TEMPLATE.Replace(AnnexeTargetDict)) 1089 1125 1090 1126 def ParserCCodeFile(self, T, Type, CmdSumDict, CmdTargetDict, CmdCppDict, DependencyDict, RespFile, ToolsDef, -
trunk/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py
r99404 r107053 509 509 SaveFileOnChange(CommandFile, ' '.join(Cmd), False) 510 510 if IsMakefile: 511 if sys.platform == "win32": 511 if True: # vbox: badly abstracted. 512 Cmd = ['kmk_test', '-e', Input[0], '--'] + Cmd # vbox: badly abstracted. 513 elif sys.platform == "win32": 512 514 Cmd = ['if', 'exist', Input[0]] + Cmd 513 515 else:
Note:
See TracChangeset
for help on using the changeset viewer.