summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwuyizhong <wuyizhong@6f19259b-4bc3-4df7-8a09-765794883524>2006-10-11 03:50:46 +0000
committerwuyizhong <wuyizhong@6f19259b-4bc3-4df7-8a09-765794883524>2006-10-11 03:50:46 +0000
commit91a1f0d7ac1e62fb578d645c546c9c12e81f5fe2 (patch)
tree27405d055e0188e4b42a3468eb31eac033c8037d
parent188fdd0ac5a81d6768ec56263c7088c59837106f (diff)
downloadedk2-91a1f0d7ac1e62fb578d645c546c9c12e81f5fe2.zip
edk2-91a1f0d7ac1e62fb578d645c546c9c12e81f5fe2.tar.gz
edk2-91a1f0d7ac1e62fb578d645c546c9c12e81f5fe2.tar.bz2
Support using @ToolChainFamily in <Filename> to do the filter. This is also to fix track T365.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1720 6f19259b-4bc3-4df7-8a09-765794883524
-rw-r--r--Tools/Java/Source/GenBuild/org/tianocore/build/FileProcess.java51
-rw-r--r--Tools/Java/Source/GenBuild/org/tianocore/build/FrameworkBuildTask.java2
-rw-r--r--Tools/Java/Source/GenBuild/org/tianocore/build/ModuleBuildFileGenerator.java14
-rw-r--r--Tools/Java/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java19
4 files changed, 60 insertions, 26 deletions
diff --git a/Tools/Java/Source/GenBuild/org/tianocore/build/FileProcess.java b/Tools/Java/Source/GenBuild/org/tianocore/build/FileProcess.java
index 09ccd1f..59a2e58 100644
--- a/Tools/Java/Source/GenBuild/org/tianocore/build/FileProcess.java
+++ b/Tools/Java/Source/GenBuild/org/tianocore/build/FileProcess.java
@@ -53,14 +53,14 @@ import org.w3c.dom.Node;
**/
public class FileProcess {
///
- /// The mapping information about source suffix, result suffix, file type.
+ /// The mapping information about source suffix, tool code, file type.
///
public final String[][] fileTypes = { {".h", "", "CHeader" },
- {".c", "", "CCode" },
+ {".c", "CC", "CCode" },
{".inc", "", "ASMHeader" },
- {".asm", "", "ASM" },
- {".S", "", "ASM" },
- {".s", "", "ASM" },
+ {".asm", "ASM", "ASM" },
+ {".S", "ASM", "ASM" },
+ {".s", "ASM", "ASM" },
{".uni", "", "UNI" },
{".vfr", "", "VFR" },
{".Vfr", "", "VFR" },
@@ -74,7 +74,7 @@ public class FileProcess {
{".FYI", "", "FFS" },
{".FFS", "", "FFS" },
{".bmp", "", "BMP" },
- {".i", "", "PPCode"}};
+ {".i", "PP", "PPCode"}};
///
/// Current ANT context.
///
@@ -121,9 +121,9 @@ public class FileProcess {
@param root Root node
@param unicodeFirst whether build Unicode file firstly or not
**/
- public synchronized void parseFile(String filename, Node root, boolean unicodeFirst) {
+ public synchronized void parseFile(String filename, String family, Node root, boolean unicodeFirst) {
this.unicodeFirst = unicodeFirst;
- parseFile(filename, root);
+ parseFile(filename, family, root);
}
/**
@@ -143,9 +143,9 @@ public class FileProcess {
@param root Root node
@param unicodeFirst whether build Unicode file firstly or not
**/
- public synchronized void parseFile(String filename, String filetype, Node root, boolean unicodeFirst) {
+ public synchronized void parseFile(String filename, String filetype, String family, Node root, boolean unicodeFirst) {
this.unicodeFirst = unicodeFirst;
- parseFile(filename, filetype, root);
+ parseFile(filename, filetype, family, root);
}
/**
@@ -154,10 +154,10 @@ public class FileProcess {
@param filename Source file name
@param root Root node
**/
- public synchronized void parseFile(String filename, Node root) throws BuildException {
+ public synchronized void parseFile(String filename, String family, Node root) throws BuildException {
for (int i = 0; i < fileTypes.length; i++) {
if (filename.endsWith(fileTypes[i][0])) {
- parseFile(filename, fileTypes[i][2], root);
+ parseFile(filename, fileTypes[i][2], family, root);
return ;
}
}
@@ -175,7 +175,21 @@ public class FileProcess {
@param filetype Source file type
@param root Root node
**/
- public synchronized void parseFile(String filename, String filetype, Node root) {
+ public synchronized void parseFile(String filename, String filetype, String family, Node root) {
+ //
+ // Filter file with family. Only family is specified in source file and
+ // not include current family will skip the file.
+ //
+ String toolCode = getToolCodeByFileType(filetype);
+ if (family != null && !family.trim().equalsIgnoreCase("")) {
+ String toolChainFamily = project.getProperty(toolCode + "_FAMILY");
+ if (toolChainFamily != null) {
+ if(!toolChainFamily.equalsIgnoreCase(family)) {
+ return ;
+ }
+ }
+ }
+
if (unicodeFirst) {
if ( ! filetype.equalsIgnoreCase("UNI")){
return ;
@@ -205,7 +219,7 @@ public class FileProcess {
// If define CC_EXT in tools_def.txt file, the source file with
// different suffix is skipped
//
- String toolsDefExtName = project.getProperty(filetype + "_EXT");
+ String toolsDefExtName = project.getProperty(toolCode + "_EXT");
if (toolsDefExtName != null) {
String[] exts = toolsDefExtName.split(" ");
for (int i = 0; i < exts.length; i++) {
@@ -260,4 +274,13 @@ public class FileProcess {
ele.appendChild(includesEle);
root.appendChild(ele);
}
+
+ private String getToolCodeByFileType(String fileType) {
+ for (int i = 0; i < fileTypes.length; i++) {
+ if (fileTypes[i][2].equalsIgnoreCase(fileType)) {
+ return fileTypes[i][1];
+ }
+ }
+ return null;
+ }
} \ No newline at end of file
diff --git a/Tools/Java/Source/GenBuild/org/tianocore/build/FrameworkBuildTask.java b/Tools/Java/Source/GenBuild/org/tianocore/build/FrameworkBuildTask.java
index 1165263..4ba6ec4 100644
--- a/Tools/Java/Source/GenBuild/org/tianocore/build/FrameworkBuildTask.java
+++ b/Tools/Java/Source/GenBuild/org/tianocore/build/FrameworkBuildTask.java
@@ -110,7 +110,7 @@ public class FrameworkBuildTask extends Task{
// set Logger
//
GenBuildLogger logger = new GenBuildLogger(getProject());
- EdkLog.setLogLevel(EdkLog.EDK_DEBUG);
+ EdkLog.setLogLevel(EdkLog.EDK_DEBUG);
EdkLog.setLogLevel(getProject().getProperty("env.LOGLEVEL"));
EdkLog.setLogger(logger);
diff --git a/Tools/Java/Source/GenBuild/org/tianocore/build/ModuleBuildFileGenerator.java b/Tools/Java/Source/GenBuild/org/tianocore/build/ModuleBuildFileGenerator.java
index 195ffde..a38c3c6 100644
--- a/Tools/Java/Source/GenBuild/org/tianocore/build/ModuleBuildFileGenerator.java
+++ b/Tools/Java/Source/GenBuild/org/tianocore/build/ModuleBuildFileGenerator.java
@@ -363,7 +363,9 @@ public class ModuleBuildFileGenerator {
**/
private void applyCompileElement(Document document, Node root) {
//
- // sourceFiles[][0] is FileType, [][1] is File name relative to Module_Dir
+ // sourceFiles[][0] is FileType,
+ // [][1] is File name relative to Module_Dir,
+ // [][2] is ToolChainFamily
//
String[][] sourceFiles = saq.getSourceFiles(fpdModuleId.getArch());
@@ -395,9 +397,9 @@ public class ModuleBuildFileGenerator {
sourceFiles[i][1] = sourceFile.getPath();
String filetype = sourceFiles[i][0];
if (filetype != null) {
- fileProcess.parseFile(sourceFiles[i][1], filetype, root, true);
+ fileProcess.parseFile(sourceFiles[i][1], filetype, sourceFiles[i][2], root, true);
} else {
- fileProcess.parseFile(sourceFiles[i][1], root, true);
+ fileProcess.parseFile(sourceFiles[i][1], sourceFiles[i][2], root, true);
}
}
@@ -422,7 +424,7 @@ public class ModuleBuildFileGenerator {
// Parse AutoGen.c & AutoGen.h
//
if ( ! fpdModuleId.getModule().getName().equalsIgnoreCase("Shell")) {
- fileProcess.parseFile(project.getProperty("DEST_DIR_DEBUG") + File.separatorChar + "AutoGen.c", root, false);
+ fileProcess.parseFile(project.getProperty("DEST_DIR_DEBUG") + File.separatorChar + "AutoGen.c", null, root, false);
}
//
@@ -431,9 +433,9 @@ public class ModuleBuildFileGenerator {
for (int i = 0; i < sourceFiles.length; i++) {
String filetype = sourceFiles[i][0];
if (filetype != null) {
- fileProcess.parseFile(sourceFiles[i][1], filetype, root, false);
+ fileProcess.parseFile(sourceFiles[i][1], filetype, sourceFiles[i][2], root, false);
} else {
- fileProcess.parseFile(sourceFiles[i][1], root, false);
+ fileProcess.parseFile(sourceFiles[i][1], sourceFiles[i][2], root, false);
}
}
diff --git a/Tools/Java/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java b/Tools/Java/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java
index 1e95eb2..6afeb30 100644
--- a/Tools/Java/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java
+++ b/Tools/Java/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java
@@ -38,7 +38,6 @@ import org.tianocore.build.id.PackageIdentification;
import org.tianocore.build.id.PlatformIdentification;
import org.tianocore.build.toolchain.ToolChainInfo;
import org.tianocore.common.exception.EdkException;
-import org.tianocore.common.logger.EdkLog;
import org.w3c.dom.Node;
/**
@@ -249,22 +248,32 @@ public class SurfaceAreaQuery {
returns = get("SourceFiles", xPath);
if (returns == null || returns.length == 0) {
- return new String[0][0];
+ return new String[0][3];
}
Filename[] sourceFileNames = (Filename[]) returns;
List<String[]> outputList = new ArrayList<String[]>();
for (int i = 0; i < sourceFileNames.length; i++) {
List archList = sourceFileNames[i].getSupArchList();
- if (arch == null || arch.equalsIgnoreCase("") || archList == null || contains(archList, arch)) {
- outputList.add(new String[] {sourceFileNames[i].getToolCode(),sourceFileNames[i].getStringValue()});
+ if (arch == null || arch.trim().equalsIgnoreCase("") || archList == null || contains(archList, arch)) {
+ outputList.add(new String[] {sourceFileNames[i].getToolCode(), sourceFileNames[i].getStringValue(), sourceFileNames[i].getToolChainFamily()});
}
}
- String[][] outputString = new String[outputList.size()][2];
+ String[][] outputString = new String[outputList.size()][3];
for (int index = 0; index < outputList.size(); index++) {
+ //
+ // ToolCode (FileType)
+ //
outputString[index][0] = outputList.get(index)[0];
+ //
+ // File name (relative to MODULE_DIR)
+ //
outputString[index][1] = outputList.get(index)[1];
+ //
+ // Tool chain family
+ //
+ outputString[index][2] = outputList.get(index)[2];
}
return outputString;
}