@throws BuidException\r
**/\r
public void execute() throws BuildException {\r
+ if (isUptodate()) {\r
+ EdkLog.log(this, EdkLog.EDK_VERBOSE, headerFile.toFileList() \r
+ + imageOutFile.toFileList()\r
+ + mcoFile.toFileList()\r
+ + dscFile.toFileList()\r
+ + asmIncFile.toFileList()\r
+ + outStrFile\r
+ + " is/are up-to-date!");\r
+ return;\r
+ }\r
\r
Project project = this.getOwningTarget().getProject();\r
//\r
public void setOutputDir(String outputDir) {\r
this.outputDir = outputDir;\r
}\r
+\r
+ //\r
+ // Dependency check\r
+ // \r
+ private boolean isUptodate() {\r
+ long srcTimeStamp = 0;\r
+ String srcName = "";\r
+ long dstTimeStamp = 0;\r
+ String dstName = "";\r
+ long timeStamp = 0;\r
+\r
+ if (!flashDefFile.isEmpty()) {\r
+ srcName = flashDefFile.getValue();\r
+ timeStamp = new File(srcName).lastModified();\r
+ if (timeStamp > srcTimeStamp) {\r
+ srcTimeStamp = timeStamp;\r
+ }\r
+ }\r
+\r
+ if (!mciFile.isEmpty()) {\r
+ srcName = mciFile.getValue();\r
+ timeStamp = new File(srcName).lastModified();\r
+ if (timeStamp > srcTimeStamp) {\r
+ srcTimeStamp = timeStamp;\r
+ }\r
+ }\r
+\r
+ if (!fdImage.isEmpty()) {\r
+ srcName = fdImage.getValue();\r
+ timeStamp = new File(srcName).lastModified();\r
+ if (timeStamp > srcTimeStamp) {\r
+ srcTimeStamp = timeStamp;\r
+ }\r
+ }\r
+\r
+ if (inStrFile.length() != 0) {\r
+ srcName = inStrFile;\r
+ timeStamp = new File(srcName).lastModified();\r
+ if (timeStamp > srcTimeStamp) {\r
+ srcTimeStamp = timeStamp;\r
+ }\r
+ }\r
+\r
+ if (!mciFileArray.isEmpty()) {\r
+ for (int i = 0; i < mciFileArray.nameList.size(); ++i) {\r
+ srcName += mciFileArray.nameList.get(i) + " ";\r
+ timeStamp = new File(mciFileArray.nameList.get(i)).lastModified();\r
+ if (timeStamp > srcTimeStamp) {\r
+ srcTimeStamp = timeStamp;\r
+ }\r
+ }\r
+ }\r
+\r
+ if (!headerFile.isEmpty()) {\r
+ dstName = headerFile.getValue();\r
+ File dstFile = new File(dstName);\r
+ if (!dstFile.isAbsolute()) {\r
+ dstName = outputDir + File.separator + dstName;\r
+ dstFile = new File(dstName);\r
+ }\r
+\r
+ if (srcTimeStamp > dstFile.lastModified()) {\r
+ EdkLog.log(this, EdkLog.EDK_VERBOSE, srcName + " has been changed since last build!");\r
+ return false;\r
+ }\r
+ }\r
+\r
+ if (!imageOutFile.isEmpty()) {\r
+ dstName = imageOutFile.getValue();\r
+ File dstFile = new File(dstName);\r
+ if (!dstFile.isAbsolute()) {\r
+ dstName = outputDir + File.separator + dstName;\r
+ dstFile = new File(dstName);\r
+ }\r
+\r
+ if (srcTimeStamp > dstFile.lastModified()) {\r
+ EdkLog.log(this, EdkLog.EDK_VERBOSE, srcName + " has been changed since last build!");\r
+ return false;\r
+ }\r
+ }\r
+\r
+ if (!mcoFile.isEmpty()) {\r
+ dstName = mcoFile.getValue();\r
+ File dstFile = new File(dstName);\r
+ if (!dstFile.isAbsolute()) {\r
+ dstName = outputDir + File.separator + dstName;\r
+ dstFile = new File(dstName);\r
+ }\r
+\r
+ if (srcTimeStamp > dstFile.lastModified()) {\r
+ EdkLog.log(this, EdkLog.EDK_VERBOSE, srcName + " has been changed since last build!");\r
+ return false;\r
+ }\r
+ }\r
+\r
+ if (!dscFile.isEmpty()) {\r
+ dstName = dscFile.getValue();\r
+ File dstFile = new File(dstName);\r
+ if (!dstFile.isAbsolute()) {\r
+ dstName = outputDir + File.separator + dstName;\r
+ dstFile = new File(dstName);\r
+ }\r
+\r
+ if (srcTimeStamp > dstFile.lastModified()) {\r
+ EdkLog.log(this, EdkLog.EDK_VERBOSE, srcName + " has been changed since last build!");\r
+ return false;\r
+ }\r
+ }\r
+\r
+ if (!asmIncFile.isEmpty()) {\r
+ dstName = asmIncFile.getValue();\r
+ File dstFile = new File(dstName);\r
+ if (!dstFile.isAbsolute()) {\r
+ dstName = outputDir + File.separator + dstName;\r
+ dstFile = new File(dstName);\r
+ }\r
+\r
+ if (srcTimeStamp > dstFile.lastModified()) {\r
+ EdkLog.log(this, EdkLog.EDK_VERBOSE, srcName + " has been changed since last build!");\r
+ return false;\r
+ }\r
+ }\r
+\r
+ if (outStrFile.length() != 0) {\r
+ dstName = outStrFile;\r
+ File dstFile = new File(dstName);\r
+ if (!dstFile.isAbsolute()) {\r
+ dstName = outputDir + File.separator + dstName;\r
+ dstFile = new File(dstName);\r
+ }\r
+\r
+ if (srcTimeStamp > dstFile.lastModified()) {\r
+ EdkLog.log(this, EdkLog.EDK_VERBOSE, srcName + " has been changed since last build!");\r
+ return false;\r
+ }\r
+ }\r
+\r
+ return true;\r
+ }\r
}\r