# $(LIBS) Static library files of current module\r
# $(<tool>_FLAGS) Tools flags of current module\r
# $(MODULE_NAME) Current module name\r
+# $(MODULE_NAME_GUID) Current module name with module FILE_GUID if same $(MODULE_NAME) exists\r
+# in different modules, otherwise its value is same as $(MODULE_NAME)\r
# $(MODULE_TYPE) Current module type\r
# $(MODULE_GUID) Current module guid\r
# $(ARCH) Architecture of current module\r
<Command.MSFT, Command.INTEL, Command.RVCT, Command.ARMGCC, Command.ARMLINUXGCC> \r
"$(GENFW)" -e $(MODULE_TYPE) -o ${dst} ${src} $(GENFW_FLAGS)\r
$(CP) ${dst} $(OUTPUT_DIR)\r
- $(CP) ${dst} $(BIN_DIR)\r
+ $(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).efi\r
-$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR)\r
-$(CP) $(DEBUG_DIR)(+)*.pdb $(OUTPUT_DIR) \r
<Command.GCC>\r
#The below 2 lines are only needed for UNIXGCC tool chain, which genereates PE image directly\r
#\r
-$(OBJCOPY) $(OBJCOPY_ADDDEBUGFLAG) ${src}\r
- -$(CP) $(DEBUG_DIR)(+)$(MODULE_NAME).debug $(BIN_DIR)\r
+ -$(CP) $(DEBUG_DIR)(+)$(MODULE_NAME).debug $(BIN_DIR)(+)$(MODULE_NAME_GUID).debug\r
\r
"$(GENFW)" -e $(MODULE_TYPE) -o ${dst} ${src} $(GENFW_FLAGS)\r
$(CP) ${dst} $(OUTPUT_DIR)\r
- $(CP) ${dst} $(BIN_DIR)\r
+ $(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).efi\r
-$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR)\r
\r
<Command.XCODE>\r
-$(DSYMUTIL) ${src}\r
"$(GENFW)" -e $(MODULE_TYPE) -o ${dst} $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff $(GENFW_FLAGS)\r
$(CP) ${dst} $(OUTPUT_DIR)\r
- $(CP) ${dst} $(BIN_DIR)\r
+ $(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).efi\r
-$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR)\r
\r
[Dependency-Expression-File]\r
\r
<Command>\r
"$(GENFW)" -o ${dst} -j $(MICROCODE_BINARY_FILES) $(GENFW_FLAGS)\r
- -$(CP) ${dst} $(BIN_DIR)\r
+ -$(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).bin\r
\r
[EFI-Image-File]\r
<InputFile>\r
?.efi, ?.EFI, ?.Efi\r
\r
<OutputFile>\r
- $(BIN_DIR)(+)$(MODULE_NAME).rom\r
+ $(BIN_DIR)(+)$(MODULE_NAME_GUID).rom\r
\r
<Command>\r
$(OPTROM) -i $(PCI_DEVICE_ID) -f $(PCI_VENDOR_ID) -l $(PCI_CLASS_CODE) -r $(PCI_REVISION) -o $dst $(OPTROM_FLAGS) $src\r
import re\r
import os.path as path\r
import copy\r
+import uuid\r
\r
import GenC\r
import GenMake\r
\r
return self._FixedAtBuildPcds \r
\r
+ def _GetUniqueBaseName(self):\r
+ BaseName = self.Name\r
+ for Module in self.PlatformInfo.ModuleAutoGenList:\r
+ if Module.MetaFile == self.MetaFile:\r
+ continue\r
+ if Module.Name == self.Name:\r
+ EdkLogger.warn('build', 'Modules have same BaseName:\n %s\n %s' % (Module.MetaFile, self.MetaFile))\r
+ if uuid.UUID(Module.Guid) == uuid.UUID(self.Guid):\r
+ EdkLogger.error("build", FILE_DUPLICATED, 'Modules have same BaseName and FILE_GUID:\n'\r
+ ' %s\n %s' % (Module.MetaFile, self.MetaFile))\r
+ BaseName = '%s_%s' % (self.Name, self.Guid)\r
+ return BaseName\r
+\r
# Macros could be used in build_rule.txt (also Makefile)\r
def _GetMacros(self):\r
if self._Macro == None:\r
self._Macro = sdict()\r
self._Macro["WORKSPACE" ] = self.WorkspaceDir\r
self._Macro["MODULE_NAME" ] = self.Name\r
+ self._Macro["MODULE_NAME_GUID" ] = self._GetUniqueBaseName()\r
self._Macro["MODULE_GUID" ] = self.Guid\r
self._Macro["MODULE_VERSION" ] = self.Version\r
self._Macro["MODULE_TYPE" ] = self.ModuleType\r
#\r
MODULE_NAME = ${module_name}\r
MODULE_GUID = ${module_guid}\r
+MODULE_NAME_GUID = ${module_name_guid}\r
MODULE_VERSION = ${module_version}\r
MODULE_TYPE = ${module_type}\r
MODULE_FILE = ${module_file}\r
\r
"module_name" : self._AutoGenObject.Name,\r
"module_guid" : self._AutoGenObject.Guid,\r
+ "module_name_guid" : self._AutoGenObject._GetUniqueBaseName(),\r
"module_version" : self._AutoGenObject.Version,\r
"module_type" : self._AutoGenObject.ModuleType,\r
"module_file" : self._AutoGenObject.MetaFile.Name,\r
#\r
MODULE_NAME = ${module_name}\r
MODULE_GUID = ${module_guid}\r
+MODULE_NAME_GUID = ${module_name_guid}\r
MODULE_VERSION = ${module_version}\r
MODULE_TYPE = ${module_type}\r
MODULE_FILE = ${module_file}\r
\r
"module_name" : self._AutoGenObject.Name,\r
"module_guid" : self._AutoGenObject.Guid,\r
+ "module_name_guid" : self._AutoGenObject._GetUniqueBaseName(),\r
"module_version" : self._AutoGenObject.Version,\r
"module_type" : self._AutoGenObject.ModuleType,\r
"module_file" : self._AutoGenObject.MetaFile,\r