package org.tianocore.build;\r
\r
import java.io.File;\r
-import java.io.FileInputStream;\r
-import java.io.InputStream;\r
import java.util.Vector;\r
\r
import javax.xml.namespace.QName;\r
-import javax.xml.parsers.DocumentBuilder;\r
-import javax.xml.parsers.DocumentBuilderFactory;\r
\r
import org.apache.tools.ant.BuildException;\r
import org.apache.tools.ant.Project;\r
import org.tianocore.build.id.FpdModuleIdentification;\r
import org.w3c.dom.Document;\r
import org.w3c.dom.Element;\r
-import org.w3c.dom.NamedNodeMap;\r
import org.w3c.dom.Node;\r
-import org.w3c.dom.NodeList;\r
\r
/** \r
<p><code>FfsProcess</code> is a class to find the corresponding FFS layout. </p>\r
}\r
\r
//\r
- // if module specify sections itself, it's okay\r
- // otherwise find sections from WORKSPACE default setting with\r
- // ComponentType\r
+ // If FfsFormatKey is not null, report exception and fail build\r
+ // Otherwise report warning message\r
//\r
- if (ffs == null) {\r
- File file = new File(project.getProperty("COMMON_FILE"));\r
- //\r
- // if common file is not existed, just return\r
- //\r
- if (!file.exists()) {\r
- return false;\r
- }\r
- DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();\r
- try {\r
- DocumentBuilder dombuilder = domfac.newDocumentBuilder();\r
- InputStream is = new FileInputStream(file);\r
- Document doc = dombuilder.parse(is);\r
- Element root = doc.getDocumentElement();\r
- NodeList items = root.getChildNodes();\r
- for (int i = 0; i < items.getLength(); i++) {\r
- Node node = items.item(i);\r
- if (node.getNodeType() == Node.ELEMENT_NODE) {\r
- String nodeName = node.getNodeName();\r
- if (nodeName.equalsIgnoreCase("Ffs")) {\r
- NamedNodeMap attr = node.getAttributes();\r
- Node type = attr.getNamedItem("type");\r
- if (type != null) {\r
- if (isMatch(type.getTextContent(), buildType)) {\r
- ffs = node;\r
- return true;\r
- }\r
- }\r
- }\r
- }\r
- }\r
- } catch (Exception e) {\r
- throw new BuildException("Parse COMMON_FILE [" + file.getPath() + "] error!\n" + e.getMessage());\r
+ if (buildType == null) {\r
+ System.out.println("Warning: this module doesn't specify a FfsFormatKey. ");\r
}\r
+ else {\r
+ throw new BuildException("Can't find FfsFormatKey [" + buildType + "] in FPD file. "); \r
}\r
+\r
if (ffs == null) {\r
return false;\r
} else {\r
outofdateEle.appendChild(sourceEle);\r
Element targetEle = document.createElement("targetfiles");\r
Element fileEle = document.createElement("file");\r
- fileEle.setAttribute("name", "${BIN_DIR}\\" + targetFilename);\r
+ fileEle.setAttribute("name", "${BIN_DIR}" + File.separatorChar + targetFilename);\r
targetEle.appendChild(fileEle);\r
outofdateEle.appendChild(targetEle);\r
Element sequentialEle = document.createElement("sequential");\r
// outputPath = "${DEST_DIR_OUTPUT}">\r
//\r
ele = doc.createElement("tool");\r
- ele.setAttribute("toolName", "${WORKSPACE_DIR}" + File.separatorChar + "Tools" + File.separatorChar + "Bin"\r
+ ele.setAttribute("toolName", "${WORKSPACE_DIR}" + File.separatorChar + "Tools" + File.separatorChar + "bin"\r
+ File.separatorChar + "GenCRC32Section");\r
ele.setAttribute("outputPath", "${DEST_DIR_OUTPUT}");\r
}\r