diff -r bf6f623d7450 -r 73ecb803d8af targets/toolchain_makefile.py --- 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"]