public final static String TOOLS_DEF_ATTRIBUTE_SPATH = "SPATH";\r
public final static String TOOLS_DEF_ATTRIBUTE_EXT = "EXT";\r
public final static String TOOLS_DEF_ATTRIBUTE_FAMILY = "FAMILY";\r
- public final static String TOOLS_DEF_ATTRIBUTE_FLAGS = "FALGS";\r
+ public final static String TOOLS_DEF_ATTRIBUTE_FLAGS = "FLAGS";\r
\r
///\r
/// Tool Chain Families in the Tools Definition file\r
import org.tianocore.build.global.GlobalData;\r
import org.tianocore.build.global.SurfaceAreaQuery;\r
import org.tianocore.build.id.FpdModuleIdentification;\r
+import org.tianocore.common.definitions.EdkDefinitions;\r
import org.w3c.dom.Document;\r
import org.w3c.dom.Element;\r
\r
///\r
/// mapping from section type to section output file extension\r
///\r
- public static final String[][] sectionExt = { { "EFI_SECTION_FREEFORM_SUBTYPE_GUID", ".sec" },\r
- { "EFI_SECTION_VERSION", ".ver" },\r
- { "EFI_SECTION_USER_INTERFACE", ".ui" },\r
- { "EFI_SECTION_DXE_DEPEX", ".dpx" },\r
- { "EFI_SECTION_PEI_DEPEX", ".dpx" }, \r
- { "EFI_SECTION_PE32", ".pe32" },\r
- { "EFI_SECTION_PIC", ".pic" }, \r
- { "EFI_SECTION_TE", ".tes" },\r
- { "EFI_SECTION_RAW", ".sec" }, \r
- { "EFI_SECTION_COMPRESSION", ".sec" },\r
- { "EFI_SECTION_GUID_DEFINED", ".sec" },\r
- { "EFI_SECTION_COMPATIBILITY16", ".sec" },\r
- { "EFI_SECTION_FIRMWARE_VOLUME_IMAGE", ".sec" } };\r
+ public static final String[][] sectionExt = EdkDefinitions.SectionTypeExtensions;\r
\r
/**\r
search in the type, if componentType is listed in type, return true; \r
import org.tianocore.build.global.GlobalData;\r
import org.tianocore.build.toolchain.ConfigReader;\r
import org.tianocore.build.toolchain.ToolChainInfo;\r
+import org.tianocore.common.definitions.ToolDefinitions;\r
\r
public class FrameworkBuildTask extends Task{\r
\r
\r
private Set<File> msaFiles = new LinkedHashSet<File>();\r
\r
- String toolsDefFilename = "Tools" + File.separatorChar + "Conf" + File.separatorChar + "tools_def.txt";\r
+ String toolsDefFilename = ToolDefinitions.DEFAULT_TOOLS_DEF_FILE_PATH;\r
\r
- String targetFilename = "target.txt";\r
+ String targetFilename = ToolDefinitions.TARGET_FILE_PATH;\r
+ \r
+ String dbFilename = ToolDefinitions.FRAMEWORK_DATABASE_FILE_PATH;\r
\r
String activePlatform = null;\r
\r
//\r
buildFiles.add(files[i]);\r
\r
- } else if (files[i].getName().endsWith(".fpd")) {\r
+ } else if (files[i].getName().endsWith(ToolDefinitions.FPD_EXTENSION)) {\r
//\r
// Second, search FPD file, if found, build it\r
//\r
fpdFiles.add(files[i]);\r
- } else if (files[i].getName().endsWith(".msa")) {\r
+ } else if (files[i].getName().endsWith(ToolDefinitions.MSA_EXTENSION)) {\r
//\r
// Third, search MSA file, if found, build it\r
//\r
//\r
File workspacePath = new File(getProject().getProperty("WORKSPACE"));\r
getProject().setProperty("WORKSPACE_DIR", workspacePath.getPath().replaceAll("(\\\\)", "/"));\r
- GlobalData.initInfo("Tools" + File.separatorChar + "Conf" + File.separatorChar + "FrameworkDatabase.db",\r
- workspacePath.getPath(), toolsDefFilename);\r
+ GlobalData.initInfo(dbFilename, workspacePath.getPath(), toolsDefFilename);\r
\r
\r
\r
//\r
File buildFile = null;\r
if (msaFiles.size() > 1) {\r
- throw new BuildException("More than one MSA file under current directory. It is not allowd. ");\r
- }\r
- else if (msaFiles.size() == 1 && activePlatform == null) {\r
- throw new BuildException("If try to build a single module, please set ACTIVE_PLATFORM in file [Tool/Conf/target.txt]. ");\r
- }\r
- else if (msaFiles.size() == 1 && activePlatform != null) {\r
+ throw new BuildException("Having more than one MSA file in a directory is not allowed!");\r
+ } else if (msaFiles.size() == 1 && activePlatform == null) {\r
+ throw new BuildException("If trying to build a single module, please set ACTIVE_PLATFORM in file [" + targetFilename + "]. ");\r
+ } else if (msaFiles.size() == 1 && activePlatform != null) {\r
//\r
// Build the single module\r
//\r
buildFile = msaFiles.toArray(new File[1])[0];\r
- }\r
- else if (activePlatform != null) {\r
+ } else if (activePlatform != null) {\r
buildFile = new File(GlobalData.getWorkspacePath() + File.separatorChar + activePlatform);\r
- }\r
- else if (fpdFiles.size() == 1) {\r
+ } else if (fpdFiles.size() == 1) {\r
buildFile = fpdFiles.toArray(new File[1])[0];\r
- }\r
- else if (fpdFiles.size() > 1) {\r
+ } else if (fpdFiles.size() > 1) {\r
buildFile = intercommuniteWithUser();\r
}\r
//\r
// If there is no build files or FPD files or MSA files, stop build\r
//\r
else {\r
- throw new BuildException("Can't find any FPD files or MSA files in current directory. ");\r
+ throw new BuildException("Can't find any FPD or MSA files in the current directory. ");\r
}\r
\r
//\r
// Build every FPD files (PLATFORM build)\r
//\r
- if (buildFile.getName().endsWith(".fpd")) {\r
- System.out.println("Start to build FPD file [" + buildFile.getPath() + "] ..>> ");\r
+ if (buildFile.getName().endsWith(ToolDefinitions.FPD_EXTENSION)) {\r
+ System.out.println("Processing the FPD file [" + buildFile.getPath() + "] ..>> ");\r
FpdParserTask fpdParserTask = new FpdParserTask();\r
fpdParserTask.setType(type);\r
fpdParserTask.setProject(getProject());\r
//\r
// Build every MSA files (SINGLE MODULE BUILD)\r
//\r
- else if (buildFile.getName().endsWith(".msa")) {\r
+ else if (buildFile.getName().endsWith(ToolDefinitions.MSA_EXTENSION)) {\r
File tmpFile = new File(GlobalData.getWorkspacePath() + File.separatorChar + activePlatform);\r
- System.out.println("Using FPD file [" + tmpFile.getPath() + "] as active platform. ");\r
- System.out.println("Start to build MSA file [" + buildFile.getPath() + "] ..>> ");\r
+ System.out.println("Using the FPD file [" + tmpFile.getPath() + "] for the active platform. ");\r
+ System.out.println("Processing the MSA file [" + buildFile.getPath() + "] ..>> ");\r
GenBuildTask genBuildTask = new GenBuildTask();\r
genBuildTask.setSingleModuleBuild(true);\r
genBuildTask.setType(type);\r
\r
private File intercommuniteWithUser(){\r
File file = null;\r
- if (fpdFiles.size() + msaFiles.size() > 1) {\r
- File[] allFiles = new File[fpdFiles.size() + msaFiles.size()];\r
+ if (fpdFiles.size() > 1) {\r
+ File[] allFiles = new File[fpdFiles.size()];\r
int index = 0;\r
Iterator<File> iter = fpdFiles.iterator();\r
while (iter.hasNext()) {\r
allFiles[index] = iter.next();\r
index++;\r
}\r
- iter = msaFiles.iterator();\r
- while (iter.hasNext()) {\r
- allFiles[index] = iter.next();\r
- index++;\r
- }\r
- System.out.println("Find " + allFiles.length + " FPD and MSA files: ");\r
+\r
+ System.out.println("Finding " + allFiles.length + " FPD files: ");\r
for (int i = 0; i < allFiles.length; i++) {\r
System.out.println("[" + (i + 1) + "]: " + allFiles[i].getName());\r
}\r
\r
boolean flag = true;\r
- System.out.print("Please select one file to build:[1] ");\r
+ System.out.print("Please select one of the following FPD files to build:[1] ");\r
do{\r
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));\r
try {\r
flag = true;\r
}\r
} while (flag);\r
- }\r
- else if (fpdFiles.size() == 1) {\r
+ } else if (fpdFiles.size() == 1) {\r
file = fpdFiles.toArray(new File[1])[0];\r
}\r
- else if (msaFiles.size() == 1) {\r
- file = msaFiles.toArray(new File[1])[0];\r
- }\r
return file;\r
}\r
\r
public void setType(String type) {\r
if (type.equalsIgnoreCase("clean") || type.equalsIgnoreCase("cleanall")) {\r
this.type = type.toLowerCase();\r
- }\r
- else {\r
+ } else {\r
this.type = "all";\r
}\r
}\r
\r
private void readTargetFile(){\r
try {\r
- String targetFile = getProject().getProperty("WORKSPACE_DIR") + File.separatorChar \r
- + "Tools" + File.separatorChar + "Conf" + File.separatorChar + targetFilename;\r
+ String targetFile = getProject().getProperty("WORKSPACE_DIR") + File.separatorChar + targetFilename;\r
+ \r
String[][] targetFileInfo = ConfigReader.parse(targetFile);\r
\r
//\r
// Get ToolChain Info from target.txt\r
//\r
ToolChainInfo envToolChainInfo = new ToolChainInfo(); \r
- String str = getValue("TARGET", targetFileInfo);\r
+ String str = getValue(ToolDefinitions.TARGET_KEY_TARGET, targetFileInfo);\r
if (str == null || str.trim().equals("")) {\r
envToolChainInfo.addTargets("*");\r
- }\r
- else {\r
+ } else {\r
envToolChainInfo.addTargets(str);\r
}\r
- str = getValue("TOOL_CHAIN_TAG", targetFileInfo);\r
+ str = getValue(ToolDefinitions.TARGET_KEY_TOOLCHAIN, targetFileInfo);\r
if (str == null || str.trim().equals("")) {\r
envToolChainInfo.addTagnames("*");\r
- }\r
- else {\r
+ } else {\r
envToolChainInfo.addTagnames(str);\r
}\r
- str = getValue("TARGET_ARCH", targetFileInfo);\r
+ str = getValue(ToolDefinitions.TARGET_KEY_ARCH, targetFileInfo);\r
if (str == null || str.trim().equals("")) {\r
envToolChainInfo.addArchs("*");\r
- }\r
- else {\r
+ } else {\r
envToolChainInfo.addArchs(str);\r
}\r
GlobalData.setToolChainEnvInfo(envToolChainInfo);\r
\r
- str = getValue("TOOL_CHAIN_CONF", targetFileInfo);\r
+ str = getValue(ToolDefinitions.TARGET_KEY_TOOLS_DEF, targetFileInfo);\r
if (str != null && str.trim().length() > 0) {\r
toolsDefFilename = str;\r
}\r
\r
- str = getValue("ACTIVE_PLATFORM", targetFileInfo);\r
+ str = getValue(ToolDefinitions.TARGET_KEY_ACTIVE_PLATFORM, targetFileInfo);\r
if (str != null && ! str.trim().equals("")) {\r
if ( ! str.endsWith(".fpd")) {\r
- throw new BuildException("FPD file's file extension must be \".fpd\"");\r
+ throw new BuildException("FPD file's extension must be \"" + ToolDefinitions.FPD_EXTENSION + "\"!");\r
}\r
activePlatform = str;\r
}\r
import org.apache.tools.ant.taskdefs.Property;\r
import org.apache.xmlbeans.XmlObject;\r
\r
+import org.tianocore.common.definitions.ToolDefinitions;\r
import org.tianocore.common.exception.EdkException;\r
import org.tianocore.common.logger.EdkLog;\r
import org.tianocore.build.autogen.AutoGen;\r
/**\r
<p>\r
<code>GenBuildTask</code> is an ANT task that can be used in ANT build\r
- system. The main function of this task is to parse module's surface area,\r
+ system. \r
+ \r
+ <p>The main function of this task is to parse module's surface area (MSA),\r
then generate the corresponding <em>BaseName_build.xml</em> (the real ANT\r
build script) and call this to build the module. The whole process including:\r
- 1. generate AutoGen.c and AutoGen.h; 2. build all dependent library instances;\r
- 3. build all source files inlcude AutoGen.c; 4. generate sections;\r
+ 1. generate AutoGen.c and AutoGen.h; \r
+ 2. build all dependent library instances;\r
+ 3. build all source files inlcude AutoGen.c; \r
+ 4. generate sections;\r
5. generate FFS file if it is driver module while LIB file if it is Library module.\r
</p>\r
\r
// Set cmd, like CC, DLINK\r
//\r
String[] key = new String[]{target, toolchain, fpdModuleId.getArch(), cmd[m], null};\r
- key[4] = "PATH";\r
+ key[4] = ToolDefinitions.TOOLS_DEF_ATTRIBUTE_PATH;\r
String cmdPath = GlobalData.getCommandSetting(key, fpdModuleId);\r
- key[4] = "NAME";\r
+ key[4] = ToolDefinitions.TOOLS_DEF_ATTRIBUTE_NAME;\r
String cmdName = GlobalData.getCommandSetting(key, fpdModuleId);\r
File cmdFile = new File(cmdPath + File.separatorChar + cmdName);\r
getProject().setProperty(cmd[m], cmdFile.getPath().replaceAll("(\\\\)", "/"));\r
//\r
// set CC_FLAGS\r
//\r
- key[4] = "FLAGS";\r
+ key[4] = ToolDefinitions.TOOLS_DEF_ATTRIBUTE_FLAGS;\r
String cmdFlags = GlobalData.getCommandSetting(key, fpdModuleId);\r
Set<String> addset = new LinkedHashSet<String>();\r
Set<String> subset = new LinkedHashSet<String>();\r
//\r
// Set CC_EXT\r
//\r
- key[4] = "EXT";\r
+ key[4] = ToolDefinitions.TOOLS_DEF_ATTRIBUTE_EXT;\r
String extName = GlobalData.getCommandSetting(key, fpdModuleId);\r
if ( extName != null && ! extName.equalsIgnoreCase("")) {\r
getProject().setProperty(cmd[m] + "_EXT", extName);\r
//\r
// set CC_FAMILY\r
//\r
- key[4] = "FAMILY";\r
+ key[4] = ToolDefinitions.TOOLS_DEF_ATTRIBUTE_FAMILY;\r
String toolChainFamily = GlobalData.getCommandSetting(key, fpdModuleId);\r
if (toolChainFamily != null) {\r
getProject().setProperty(cmd[m] + "_FAMILY", toolChainFamily);\r
//\r
// set CC_SPATH\r
//\r
- key[4] = "SPATH";\r
+ key[4] = ToolDefinitions.TOOLS_DEF_ATTRIBUTE_SPATH;\r
String spath = GlobalData.getCommandSetting(key, fpdModuleId);\r
if (spath != null) {\r
getProject().setProperty(cmd[m] + "_SPATH", spath.replaceAll("(\\\\)", "/"));\r
//\r
// set CC_DPATH\r
//\r
- key[4] = "DPATH";\r
+ key[4] = ToolDefinitions.TOOLS_DEF_ATTRIBUTE_DPATH;\r
String dpath = GlobalData.getCommandSetting(key, fpdModuleId);\r
if (dpath != null) {\r
getProject().setProperty(cmd[m] + "_DPATH", dpath.replaceAll("(\\\\)", "/"));\r
\r
import org.apache.tools.ant.BuildException;\r
import org.apache.xmlbeans.XmlObject;\r
-import org.tianocore.GuidsDocument;\r
-import org.tianocore.LibraryClassDocument.LibraryClass;\r
-import org.tianocore.PPIsDocument;\r
-import org.tianocore.ProtocolsDocument;\r
import org.tianocore.build.exception.*;\r
import org.tianocore.build.global.GlobalData;\r
-import org.tianocore.build.global.Spd;\r
import org.tianocore.build.global.SurfaceAreaQuery;\r
import org.tianocore.build.id.ModuleIdentification;\r
import org.tianocore.build.id.PackageIdentification;\r
private void collectLibInstanceInfo(){\r
int index;\r
\r
- String moduleType = SurfaceAreaQuery.getModuleType();\r
String libConstructName = null;\r
String libDestructName = null;\r
String[] setVirtuals = null;\r
import java.util.Map;\r
\r
import org.apache.xmlbeans.XmlObject;\r
-import org.tianocore.LibraryClassDocument.LibraryClass;\r
\r
import org.tianocore.build.global.GlobalData;\r
import org.tianocore.build.global.SurfaceAreaQuery;\r
**/\r
package org.tianocore.build.autogen;\r
\r
-import java.util.HashSet;\r
import java.util.Iterator;\r
import java.util.LinkedHashSet;\r
import java.util.Set;\r
import org.apache.tools.ant.taskdefs.Property;\r
import org.apache.xmlbeans.XmlObject;\r
\r
+import org.tianocore.common.definitions.EdkDefinitions;\r
import org.tianocore.common.exception.EdkException;\r
import org.tianocore.pcd.action.ActionMessage;\r
import org.tianocore.build.global.GlobalData;\r
throw new BuildException("Module type is not specified.");\r
}\r
\r
- String[][] suffix = { { "BASE", ".FFS"},\r
- { "SEC", ".SEC" }, { "PEI_CORE", ".PEI" },\r
- { "PEIM", ".PEI" }, { "DXE_CORE", ".DXE" },\r
- { "DXE_DRIVER", ".DXE" }, { "DXE_RUNTIME_DRIVER", ".DXE" },\r
- { "DXE_SAL_DRIVER", ".DXE" }, { "DXE_SMM_DRIVER", ".DXE" },\r
- { "TOOL", ".FFS" }, { "UEFI_DRIVER", ".DXE" },\r
- { "UEFI_APPLICATION", ".APP" }, { "USER_DEFINED", ".FFS" } };\r
+ String[][] suffix = EdkDefinitions.ModuleTypeExtensions;\r
\r
for (int i = 0; i < suffix.length; i++) {\r
if (suffix[i][0].equalsIgnoreCase(moduleType)) {\r
**/\r
package org.tianocore.build.pcd.action;\r
\r
-import java.io.File;\r
import java.util.ArrayList;\r
import java.util.List;\r
import java.util.regex.Matcher;\r
import java.util.regex.Pattern;\r
\r
import org.tianocore.build.autogen.CommonDefinition;\r
-import org.tianocore.build.exception.PcdAutogenException;\r
import org.tianocore.build.global.GlobalData;\r
import org.tianocore.build.id.ModuleIdentification;\r
import org.tianocore.pcd.action.ActionMessage;\r
**/\r
package org.tianocore.build.pcd.action;\r
\r
-import java.io.File;\r
import java.util.ArrayList;\r
import java.util.Comparator;\r
import java.util.HashMap;\r
import java.util.List;\r
import java.util.Map;\r
import java.util.UUID;\r
-import org.tianocore.build.global.GlobalData;\r
import org.tianocore.pcd.entity.DynamicTokenValue;\r
import org.tianocore.pcd.entity.Token;\r
import org.tianocore.pcd.exception.EntityException;\r
import org.tianocore.PcdBuildDefinitionDocument;\r
import org.tianocore.PlatformSurfaceAreaDocument;\r
import org.tianocore.build.exception.PlatformPcdPreprocessBuildException;\r
-import org.tianocore.build.fpd.FpdParserTask;\r
import org.tianocore.build.global.GlobalData;\r
import org.tianocore.build.id.FpdModuleIdentification;\r
import org.tianocore.pcd.action.ActionMessage;\r
\r
package org.tianocore.build.toolchain;\r
\r
-import java.util.HashMap;\r
import java.util.LinkedHashSet;\r
-import java.util.Map;\r
import java.util.Set;\r
\r
/**\r
public int compareTo(ToolChainKey dstKey) {\r
String[] dstKeySet = dstKey.getKeySet();\r
int result = 0;\r
- for (int i = 0; i < this.keyLength; ++i) {\r
+ for (int i = 0; i < ToolChainKey.keyLength; ++i) {\r
result = this.keySet[i].compareToIgnoreCase(dstKeySet[i]);\r
if (result != 0) {\r
break;\r
return true;\r
}\r
\r
- if (dstKeySet.length != this.keyLength) {\r
+ if (dstKeySet.length != ToolChainKey.keyLength) {\r
return false;\r
}\r
\r
- for (int i = 0; i < this.keyLength; ++i) {\r
+ for (int i = 0; i < ToolChainKey.keyLength; ++i) {\r
if (!this.keySet[i].equalsIgnoreCase(dstKeySet[i])) {\r
return false;\r
}\r
@param keySet The string array of key value\r
**/\r
public void setKey(String[] keySet) throws EdkException {\r
- if (keySet.length != this.keyLength) {\r
+ if (keySet.length != ToolChainKey.keyLength) {\r
throw new EdkException("Invalid ToolChain key");\r
}\r
\r
//\r
// Clone the string array because we don't want to change original one\r
// \r
- this.keySet = new String[this.keyLength];\r
- System.arraycopy(keySet, 0, this.keySet, 0, this.keyLength);\r
- for (int i = 0; i < this.keyLength; ++i) {\r
+ this.keySet = new String[ToolChainKey.keyLength];\r
+ System.arraycopy(keySet, 0, this.keySet, 0, ToolChainKey.keyLength);\r
+ for (int i = 0; i < ToolChainKey.keyLength; ++i) {\r
if (this.keySet[i] == null || this.keySet[i].length() == 0) {\r
this.keySet[i] = "*";\r
}\r
@param index The key part index\r
**/\r
public void setKey(String keySetString, int index) throws EdkException {\r
- if (index >= this.keyLength) {\r
+ if (index >= ToolChainKey.keyLength) {\r
throw new EdkException("Invalid ToolChain key index");\r
}\r
\r
public void setKey(String keyString) throws EdkException {\r
this.keySet = keyString.split(this.delimiter);\r
\r
- if (this.keySet.length != this.keyLength) {\r
+ if (this.keySet.length != ToolChainKey.keyLength) {\r
throw new EdkException("Invalid ToolChain key");\r
}\r
\r
public void setKey(String keyString, String delimiter) throws EdkException {\r
this.keySet = keyString.split(delimiter);\r
\r
- if (this.keySet.length != this.keyLength) {\r
+ if (this.keySet.length != ToolChainKey.keyLength) {\r
throw new EdkException("Invalid ToolChain key");\r
}\r
\r
StringBuffer keyStringBuf = new StringBuffer(64);\r
\r
keyStringBuf.append(this.keySet[0]);\r
- for (int i = 1; i < this.keyLength; ++i) {\r
+ for (int i = 1; i < ToolChainKey.keyLength; ++i) {\r
keyStringBuf.append(this.delimiter);\r
keyStringBuf.append(this.keySet[i]);\r
}\r