--- a/targets/toolchain_makefile.py Fri Dec 11 13:04:22 2009 +0100
+++ b/targets/toolchain_makefile.py Fri Dec 11 16:39:20 2009 +0100
@@ -5,26 +5,63 @@
includes_re = re.compile('\s*#include\s*["<]([^">]*)[">].*')
-class toolchain_makefile(toolchain_gcc):
- """
- This abstract class contains GCC specific code.
- It cannot be used as this and should be inherited in a target specific
- class such as target_linux or target_win32
- """
+class toolchain_makefile():
+ def __init__(self, PluginsRootInstance):
+ self.PluginsRootInstance = PluginsRootInstance
+ self.md5key = None
+ self.buildpath = None
+ self.SetBuildPath(self.PluginsRootInstance._getBuildPath())
+
+ def getTarget(self):
+ target = self.PluginsRootInstance.BeremizRoot.getTargetType()
+ if target.getcontent() is None:
+ target = self.PluginsRootInstance.GetDefaultTarget()
+ return target
+
+ def SetBuildPath(self, buildpath):
+ self.buildpath = buildpath
+ self.exe_path = os.path.join(self.buildpath, "ArmPLC_rom.bin")
+ self.md5_path = os.path.join(self.buildpath, "ArmPLC.md5")
+
+ def GetBinaryCode(self):
+ try:
+ return open(self.exe_path, "rb").read()
+ except Exception, e:
+ return None
+
+ def _GetMD5FileName(self):
+ return os.path.join(self.buildpath, "lastbuildPLC.md5")
+
+ def GetBinaryCodeMD5(self):
+ if self.md5key is not None:
+ return self.md5key
+ else:
+ try:
+ return open(self._GetMD5FileName(), "r").read()
+ except Exception, e:
+ return None
def build(self):
srcfiles= []
cflags = []
for Location, CFilesAndCFLAGS, DoCalls in self.PluginsRootInstance.LocationCFilesAndCFLAGS:
- # Get CFiles list to give it to makefile
+ wholesrcdata = ""
+ # Get CFiles list to give it to makefile
for CFile, CFLAGS in CFilesAndCFLAGS:
CFileName = os.path.basename(CFile)
+ wholesrcdata += open(CFile, "r").read()
srcfiles.append(CFileName)
if CFLAGS not in cflags:
cflags.append(CFLAGS)
+ self.md5key = hashlib.md5(wholesrcdata).hexdigest()
+ # Store new PLC filename based on md5 key
+ f = open(self._GetMD5FileName(), "w")
+ f.write(self.md5key)
+ f.close()
beremizcommand = {"src": ' '.join(srcfiles),
- "cflags": ' '.join(cflags)
+ "cflags": ' '.join(cflags),
+ "md5": self.md5key
}
target = self.getTarget().getcontent()["value"]