if sys.version_info[0] < 3: raise Exception("Python 3 or later is required") ######################################################################################################################## if __name__ == "__main__": startTime = time.time() print("Update started.\n") status = 'OK' errorMsg = '' try: utils.verifyFolderStructure() paths = pth.UpdatePaths() bData = build.BuildData() cP = wks.CProperties() makefile = mkf.Makefile() tasks = tasks.Tasks() launch = launch.LaunchConfigurations() wksFile = workspaceFile.UpdateWorkspaceFile() # Makefile must exist makefile.checkMakefileFile( ) # no point in continuing if Makefile does not exist makefile.restoreOriginalMakefile() # build data (update tools paths if neccessary) buildData = bData.prepareBuildData() # data from original makefile makeExePath = buildData[bData.bStr.buildToolsPath]
def createNewMakefile(self): ''' Merge existing Makefile data and user fields from existing 'c_cpp_properties.json.' ''' cP = wks.CProperties() cPropertiesData = cP.getCPropertiesData() with open(utils.makefilePath, 'r') as makefile: data = makefile.readlines() # sources cSources = cP.getCPropertiesKeyData(cPropertiesData, self.cPStr.user_cSources) data = self.searchAndAppend(data, self.mkfStr.cSources, cSources) asmSources = cP.getCPropertiesKeyData(cPropertiesData, self.cPStr.user_asmSources) data = self.searchAndAppend(data, self.mkfStr.asmSources, asmSources) ldSources = cP.getCPropertiesKeyData(cPropertiesData, self.cPStr.user_ldSources) data = self.searchAndAppend(data, self.mkfStr.ldSources, ldSources, preappend='-l:') # includes cIncludes = cP.getCPropertiesKeyData(cPropertiesData, self.cPStr.user_cIncludes) data = self.searchAndAppend(data, self.mkfStr.cIncludes, cIncludes, preappend='-I') asmIncludes = cP.getCPropertiesKeyData(cPropertiesData, self.cPStr.user_asmIncludes) data = self.searchAndAppend(data, self.mkfStr.asmIncludes, asmIncludes, preappend='-I') ldIncludes = cP.getCPropertiesKeyData(cPropertiesData, self.cPStr.user_ldIncludes) data = self.searchAndAppend(data, self.mkfStr.ldIncludes, ldIncludes, preappend='-L') # defines cDefines = cP.getCPropertiesKeyData(cPropertiesData, self.cPStr.user_cDefines) data = self.searchAndAppend(data, self.mkfStr.cDefines, cDefines, preappend='-D') asmDefines = cP.getCPropertiesKeyData(cPropertiesData, self.cPStr.user_asmDefines) data = self.searchAndAppend(data, self.mkfStr.asmDefines, asmDefines, preappend='-D') # compiler flags cFlags = cP.getCPropertiesKeyData(cPropertiesData, self.cPStr.user_cFlags) data = self.searchAndAppend(data, self.mkfStr.cFlags, cFlags) asmFlags = cP.getCPropertiesKeyData(cPropertiesData, self.cPStr.user_asmFlags) data = self.searchAndAppend(data, self.mkfStr.asmFlags, asmFlags) ldFlags = cP.getCPropertiesKeyData(cPropertiesData, self.cPStr.user_ldFlags) data = self.searchAndAppend(data, self.mkfStr.ldFlags, ldFlags) data = self.replaceMakefileHeader(data) try: with open(utils.makefilePath, 'w') as makefile: for line in data: makefile.write(line) print("New Makefile data succesfully written.") except Exception as err: errorMsg = "Exception error writing new data to Makefile:\n" errorMsg += str(err) utils.printAndQuit(errorMsg)