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
This commit is contained in:
@ -53,14 +53,14 @@ import org.w3c.dom.Node;
|
|||||||
**/
|
**/
|
||||||
public class FileProcess {
|
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" },
|
public final String[][] fileTypes = { {".h", "", "CHeader" },
|
||||||
{".c", "", "CCode" },
|
{".c", "CC", "CCode" },
|
||||||
{".inc", "", "ASMHeader" },
|
{".inc", "", "ASMHeader" },
|
||||||
{".asm", "", "ASM" },
|
{".asm", "ASM", "ASM" },
|
||||||
{".S", "", "ASM" },
|
{".S", "ASM", "ASM" },
|
||||||
{".s", "", "ASM" },
|
{".s", "ASM", "ASM" },
|
||||||
{".uni", "", "UNI" },
|
{".uni", "", "UNI" },
|
||||||
{".vfr", "", "VFR" },
|
{".vfr", "", "VFR" },
|
||||||
{".Vfr", "", "VFR" },
|
{".Vfr", "", "VFR" },
|
||||||
@ -74,7 +74,7 @@ public class FileProcess {
|
|||||||
{".FYI", "", "FFS" },
|
{".FYI", "", "FFS" },
|
||||||
{".FFS", "", "FFS" },
|
{".FFS", "", "FFS" },
|
||||||
{".bmp", "", "BMP" },
|
{".bmp", "", "BMP" },
|
||||||
{".i", "", "PPCode"}};
|
{".i", "PP", "PPCode"}};
|
||||||
///
|
///
|
||||||
/// Current ANT context.
|
/// Current ANT context.
|
||||||
///
|
///
|
||||||
@ -121,9 +121,9 @@ public class FileProcess {
|
|||||||
@param root Root node
|
@param root Root node
|
||||||
@param unicodeFirst whether build Unicode file firstly or not
|
@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;
|
this.unicodeFirst = unicodeFirst;
|
||||||
parseFile(filename, root);
|
parseFile(filename, family, root);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -143,9 +143,9 @@ public class FileProcess {
|
|||||||
@param root Root node
|
@param root Root node
|
||||||
@param unicodeFirst whether build Unicode file firstly or not
|
@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;
|
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 filename Source file name
|
||||||
@param root Root node
|
@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++) {
|
for (int i = 0; i < fileTypes.length; i++) {
|
||||||
if (filename.endsWith(fileTypes[i][0])) {
|
if (filename.endsWith(fileTypes[i][0])) {
|
||||||
parseFile(filename, fileTypes[i][2], root);
|
parseFile(filename, fileTypes[i][2], family, root);
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -175,7 +175,21 @@ public class FileProcess {
|
|||||||
@param filetype Source file type
|
@param filetype Source file type
|
||||||
@param root Root node
|
@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 (unicodeFirst) {
|
||||||
if ( ! filetype.equalsIgnoreCase("UNI")){
|
if ( ! filetype.equalsIgnoreCase("UNI")){
|
||||||
return ;
|
return ;
|
||||||
@ -205,7 +219,7 @@ public class FileProcess {
|
|||||||
// If define CC_EXT in tools_def.txt file, the source file with
|
// If define CC_EXT in tools_def.txt file, the source file with
|
||||||
// different suffix is skipped
|
// different suffix is skipped
|
||||||
//
|
//
|
||||||
String toolsDefExtName = project.getProperty(filetype + "_EXT");
|
String toolsDefExtName = project.getProperty(toolCode + "_EXT");
|
||||||
if (toolsDefExtName != null) {
|
if (toolsDefExtName != null) {
|
||||||
String[] exts = toolsDefExtName.split(" ");
|
String[] exts = toolsDefExtName.split(" ");
|
||||||
for (int i = 0; i < exts.length; i++) {
|
for (int i = 0; i < exts.length; i++) {
|
||||||
@ -260,4 +274,13 @@ public class FileProcess {
|
|||||||
ele.appendChild(includesEle);
|
ele.appendChild(includesEle);
|
||||||
root.appendChild(ele);
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
@ -110,7 +110,7 @@ public class FrameworkBuildTask extends Task{
|
|||||||
// set Logger
|
// set Logger
|
||||||
//
|
//
|
||||||
GenBuildLogger logger = new GenBuildLogger(getProject());
|
GenBuildLogger logger = new GenBuildLogger(getProject());
|
||||||
EdkLog.setLogLevel(EdkLog.EDK_DEBUG);
|
EdkLog.setLogLevel(EdkLog.EDK_DEBUG);
|
||||||
EdkLog.setLogLevel(getProject().getProperty("env.LOGLEVEL"));
|
EdkLog.setLogLevel(getProject().getProperty("env.LOGLEVEL"));
|
||||||
EdkLog.setLogger(logger);
|
EdkLog.setLogger(logger);
|
||||||
|
|
||||||
|
@ -363,7 +363,9 @@ public class ModuleBuildFileGenerator {
|
|||||||
**/
|
**/
|
||||||
private void applyCompileElement(Document document, Node root) {
|
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());
|
String[][] sourceFiles = saq.getSourceFiles(fpdModuleId.getArch());
|
||||||
|
|
||||||
@ -395,9 +397,9 @@ public class ModuleBuildFileGenerator {
|
|||||||
sourceFiles[i][1] = sourceFile.getPath();
|
sourceFiles[i][1] = sourceFile.getPath();
|
||||||
String filetype = sourceFiles[i][0];
|
String filetype = sourceFiles[i][0];
|
||||||
if (filetype != null) {
|
if (filetype != null) {
|
||||||
fileProcess.parseFile(sourceFiles[i][1], filetype, root, true);
|
fileProcess.parseFile(sourceFiles[i][1], filetype, sourceFiles[i][2], root, true);
|
||||||
} else {
|
} 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
|
// Parse AutoGen.c & AutoGen.h
|
||||||
//
|
//
|
||||||
if ( ! fpdModuleId.getModule().getName().equalsIgnoreCase("Shell")) {
|
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++) {
|
for (int i = 0; i < sourceFiles.length; i++) {
|
||||||
String filetype = sourceFiles[i][0];
|
String filetype = sourceFiles[i][0];
|
||||||
if (filetype != null) {
|
if (filetype != null) {
|
||||||
fileProcess.parseFile(sourceFiles[i][1], filetype, root, false);
|
fileProcess.parseFile(sourceFiles[i][1], filetype, sourceFiles[i][2], root, false);
|
||||||
} else {
|
} else {
|
||||||
fileProcess.parseFile(sourceFiles[i][1], root, false);
|
fileProcess.parseFile(sourceFiles[i][1], sourceFiles[i][2], root, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,7 +38,6 @@ import org.tianocore.build.id.PackageIdentification;
|
|||||||
import org.tianocore.build.id.PlatformIdentification;
|
import org.tianocore.build.id.PlatformIdentification;
|
||||||
import org.tianocore.build.toolchain.ToolChainInfo;
|
import org.tianocore.build.toolchain.ToolChainInfo;
|
||||||
import org.tianocore.common.exception.EdkException;
|
import org.tianocore.common.exception.EdkException;
|
||||||
import org.tianocore.common.logger.EdkLog;
|
|
||||||
import org.w3c.dom.Node;
|
import org.w3c.dom.Node;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -249,22 +248,32 @@ public class SurfaceAreaQuery {
|
|||||||
returns = get("SourceFiles", xPath);
|
returns = get("SourceFiles", xPath);
|
||||||
|
|
||||||
if (returns == null || returns.length == 0) {
|
if (returns == null || returns.length == 0) {
|
||||||
return new String[0][0];
|
return new String[0][3];
|
||||||
}
|
}
|
||||||
|
|
||||||
Filename[] sourceFileNames = (Filename[]) returns;
|
Filename[] sourceFileNames = (Filename[]) returns;
|
||||||
List<String[]> outputList = new ArrayList<String[]>();
|
List<String[]> outputList = new ArrayList<String[]>();
|
||||||
for (int i = 0; i < sourceFileNames.length; i++) {
|
for (int i = 0; i < sourceFileNames.length; i++) {
|
||||||
List archList = sourceFileNames[i].getSupArchList();
|
List archList = sourceFileNames[i].getSupArchList();
|
||||||
if (arch == null || arch.equalsIgnoreCase("") || archList == null || contains(archList, arch)) {
|
if (arch == null || arch.trim().equalsIgnoreCase("") || archList == null || contains(archList, arch)) {
|
||||||
outputList.add(new String[] {sourceFileNames[i].getToolCode(),sourceFileNames[i].getStringValue()});
|
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++) {
|
for (int index = 0; index < outputList.size(); index++) {
|
||||||
|
//
|
||||||
|
// ToolCode (FileType)
|
||||||
|
//
|
||||||
outputString[index][0] = outputList.get(index)[0];
|
outputString[index][0] = outputList.get(index)[0];
|
||||||
|
//
|
||||||
|
// File name (relative to MODULE_DIR)
|
||||||
|
//
|
||||||
outputString[index][1] = outputList.get(index)[1];
|
outputString[index][1] = outputList.get(index)[1];
|
||||||
|
//
|
||||||
|
// Tool chain family
|
||||||
|
//
|
||||||
|
outputString[index][2] = outputList.get(index)[2];
|
||||||
}
|
}
|
||||||
return outputString;
|
return outputString;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user