Fixed EDKT482. Added support for multiple msa files in the same directory.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2079 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
jwang36 2006-12-08 08:14:10 +00:00
parent c587fa4b28
commit c340a28e27
3 changed files with 25 additions and 18 deletions

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<ModuleSurfaceArea xmlns="http://www.TianoCore.org/2006/Edk2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<MsaHeader>
<ModuleName>Hello World UEFI Application</ModuleName>
<ModuleName>Hello_World_UEFI_Application</ModuleName>
<ModuleType>UEFI_APPLICATION</ModuleType>
<GuidValue>6987936E-ED34-44db-AE97-1FA5E4ED2116</GuidValue>
<Version>1.0</Version>
@ -48,4 +48,4 @@
<ModuleEntryPoint>UefiMain</ModuleEntryPoint>
</Extern>
</Externs>
</ModuleSurfaceArea>
</ModuleSurfaceArea>

View File

@ -207,11 +207,10 @@ public class FrameworkBuildTask extends Task{
// If find more than one FPD files, report error.
//
File buildFile = null;
if (msaFiles.size() > 1) {
throw new BuildException("Found " + msaFiles.size() + " MSA files in current dir. ");
} else if (msaFiles.size() == 1 && activePlatform == null) {
throw new BuildException("If trying to build a single module, please set ACTIVE_PLATFORM in file [" + targetFilename + "]. ");
} else if (msaFiles.size() == 1 && activePlatform != null) {
if (msaFiles.size() > 0) {
if (activePlatform == null) {
throw new BuildException("If trying to build a single module, please set ACTIVE_PLATFORM in file [" + targetFilename + "]. ");
}
//
// Build the single module
//
@ -278,17 +277,21 @@ public class FrameworkBuildTask extends Task{
}
File tmpFile = new File(GlobalData.getWorkspacePath() + File.separatorChar + activePlatform);
EdkLog.log(this, "Using the FPD file [" + tmpFile.getPath() + "] for the active platform. ");
EdkLog.log(this, "Processing the MSA file [" + buildFile.getPath() + "] ..>> ");
GenBuildTask genBuildTask = new GenBuildTask();
genBuildTask.setSingleModuleBuild(true);
genBuildTask.setType(type);
getProject().setProperty("PLATFORM_FILE", activePlatform);
if( !multithread) {
originalProperties.put("PLATFORM_FILE", activePlatform);
File[] moduleFiles = msaFiles.toArray(new File[msaFiles.size()]);
for (int i = 0; i < moduleFiles.length; ++i) {
EdkLog.log(this, "Processing the MSA file [" + moduleFiles[i].getPath() + "] ..>> ");
GenBuildTask genBuildTask = new GenBuildTask();
genBuildTask.setSingleModuleBuild(true);
genBuildTask.setType(type);
getProject().setProperty("PLATFORM_FILE", activePlatform);
if( !multithread) {
originalProperties.put("PLATFORM_FILE", activePlatform);
}
genBuildTask.setProject(getProject());
genBuildTask.setMsaFile(moduleFiles[i]);
genBuildTask.perform();
}
genBuildTask.setProject(getProject());
genBuildTask.setMsaFile(buildFile);
genBuildTask.perform();
}
}

View File

@ -253,6 +253,10 @@ public class GenBuildTask extends Ant {
}
}
if (archList.length == 0) {
EdkLog.log(this, EdkLog.EDK_WARNING, "Warning: " + moduleId + " was not found in current platform FPD file!\n");
}
for (int k = 0; k < archList.length; k++) {
getProject().setProperty("ARCH", archList[k]);
@ -422,7 +426,7 @@ public class GenBuildTask extends Ant {
getProject().setProperty("VERSION", moduleId.getVersion());
getProject().setProperty("MODULE_TYPE", moduleId.getModuleType());
getProject().setProperty("MODULE_DIR", moduleId.getMsaFile().getParent().replaceAll("(\\\\)", "/"));
getProject().setProperty("MODULE_RELATIVE_DIR", moduleId.getModuleRelativePath().replaceAll("(\\\\)", "/"));
getProject().setProperty("MODULE_RELATIVE_DIR", moduleId.getModuleRelativePath().replaceAll("(\\\\)", "/") + File.separatorChar + moduleId.getName());
//
// SUBSYSTEM