X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=wizard%2Fbertos_utils.py;h=7e5642d4c769eea13f5f310da4ec846bda7267a8;hb=b87c424e6ae205b2b0bee22c25c8f47fb8d7501d;hp=3c7407bfbd846d2a7dc78ce4f3ed6d9030efe9e2;hpb=6b50178e731ae6a8330bacb73fa584c78ccb906c;p=bertos.git diff --git a/wizard/bertos_utils.py b/wizard/bertos_utils.py index 3c7407bf..7e5642d4 100644 --- a/wizard/bertos_utils.py +++ b/wizard/bertos_utils.py @@ -16,6 +16,7 @@ import re import shutil import const +import codelite_project import DefineException def isBertosDir(directory): @@ -67,10 +68,14 @@ def createBertosProject(projectInfo): makefile = open("mktemplates/template.mk", "r").read() makefile = mkGenerator(projectInfo, makefile) open(prjdir + "/" + os.path.basename(prjdir) + ".mk", "w").write(makefile) - workspace = codeliteWorkspaceGenerator(projectInfo) - open(directory + "/" + os.path.basename(prjdir) + ".workspace", "w").write(workspace) - project = codeliteProjectGenerator(projectInfo) - open(directory + "/" + os.path.basename(prjdir) + ".project", "w").write(project) + ## Destination main.c file + main = open("srctemplates/main.c","r").read() + open(prjdir + "/main.c", "w").write(main) + if "codelite" in projectInfo.info("OUTPUT"): + workspace = codeliteWorkspaceGenerator(projectInfo) + open(directory + "/" + os.path.basename(prjdir) + ".workspace", "w").write(workspace) + project = codeliteProjectGenerator(projectInfo) + open(directory + "/" + os.path.basename(prjdir) + ".project", "w").write(project) def mkGenerator(projectInfo, makefile): """ @@ -78,12 +83,13 @@ def mkGenerator(projectInfo, makefile): """ mkData = {} mkData["$pname"] = os.path.basename(projectInfo.info("PROJECT_PATH")) - mkData["$cpuname"] = projectInfo.info("CPU_INFOS")["CPU_NAME"] + mkData["$cpuname"] = projectInfo.info("CPU_INFOS")["CORE_CPU"] mkData["$cflags"] = " ".join(projectInfo.info("CPU_INFOS")["C_FLAGS"]) mkData["$ldflags"] = " ".join(projectInfo.info("CPU_INFOS")["LD_FLAGS"]) - mkData["$csrc"] = csrcGenerator(projectInfo) - mkData["$prefix"] = os.path.basename(projectInfo.info("TOOLCHAIN")["path"]).split("gcc")[0] - mkData["$suffix"] = os.path.basename(projectInfo.info("TOOLCHAIN")["path"]).split("gcc")[1] + mkData["$csrc"], mkData["$pcsrc"] = csrcGenerator(projectInfo) + mkData["$prefix"] = projectInfo.info("TOOLCHAIN")["path"].split("gcc")[0] + mkData["$suffix"] = projectInfo.info("TOOLCHAIN")["path"].split("gcc")[1] + mkData["$cross"] = projectInfo.info("TOOLCHAIN")["path"].split("gcc")[0] for key in mkData: while makefile.find(key) != -1: makefile = makefile.replace(key, mkData[key]) @@ -100,47 +106,42 @@ def makefileGenerator(projectInfo, makefile): def csrcGenerator(projectInfo): modules = projectInfo.info("MODULES") - files = [] + if "harvard" in projectInfo.info("CPU_INFOS")["CPU_TAGS"]: + pcsrc_need = projectInfo.info("CPU_INFOS")["PC_SRC"] + else: + pcsrc_need = [] + csrc = [] + pcsrc = [] for module, information in modules.items(): if information["enabled"]: for filename, path in findDefinitions(module + ".c", projectInfo): - files.append(path + "/" + filename) + path = path.replace(projectInfo.info("SOURCES_PATH"), projectInfo.info("PROJECT_PATH")) + csrc.append(path + "/" + filename) + if module in pcsrc_need: + pcsrc.append(path + "/" + filename) for filename, path in findDefinitions(module + "_" + projectInfo.info("CPU_INFOS")["TOOLCHAIN"] + ".c", projectInfo): - files.append(path + "/" + filename) + path = path.replace(projectInfo.info("SOURCES_PATH"), projectInfo.info("PROJECT_PATH")) + csrc.append(path + "/" + filename) + if module in pcsrc_need: + pcsrc.append(path + "/" + filename) for tag in projectInfo.info("CPU_INFOS")["CPU_TAGS"]: for filename, path in findDefinitions(module + "_" + tag + ".c", projectInfo): - files.append(path + "/" + filename) - csrc = " \\\n\t".join(files) + " \\" - return csrc - -def clFiles(fileDict, directory): - filelist = [] - filelist.append("" %os.path.basename(directory)) - for f in fileDict[directory]["files"]: - filelist.append("" %os.path.join(directory, f)) - for d in fileDict[directory]["dirs"]: - filelist += clFiles(fileDict, os.path.join(directory, d)) - filelist.append("") - return filelist - -def findSources(path): - fileDict = {} - for root, dirs, files in os.walk(path): - if root.find("svn") == -1: - fileDict[root] = {"dirs": [], "files": []} - for dir in dirs: - if dir.find("svn") == -1: - fileDict[root]["dirs"].append(dir) - for file in files: - if file.endswith(const.EXTENSION_FILTER): - fileDict[root]["files"].append(file) - return fileDict + path = path.replace(projectInfo.info("SOURCES_PATH"), projectInfo.info("PROJECT_PATH")) + csrc.append(path + "/" + filename) + if module in pcsrc_need: + pcsrc.append(path + "/" + filename) + csrc = " \\\n\t".join(csrc) + " \\" + pcsrc = " \\\n\t".join(pcsrc) + " \\" + return csrc, pcsrc def codeliteProjectGenerator(projectInfo): template = open("cltemplates/bertos.project").read() - filelist = "\n".join(clFiles(findSources(projectInfo.info("PROJECT_PATH")), projectInfo.info("PROJECT_PATH"))) + filelist = "\n".join(codelite_project.clFiles(codelite_project.findSources(projectInfo.info("PROJECT_PATH")), projectInfo.info("PROJECT_PATH"))) while template.find("$filelist") != -1: template = template.replace("$filelist", filelist) + projectName = os.path.basename(projectInfo.info("PROJECT_PATH")) + while template.find("$project") != -1: + template = template.replace("$project", projectName) return template def codeliteWorkspaceGenerator(projectInfo): @@ -242,20 +243,26 @@ def loadModuleDefinition(first_comment): moduleDefinition["module_description"] = line[line.find("\\brief") + len("\\brief "):] moduleDict = {} if "module_name" in moduleDefinition.keys(): - moduleDict[moduleDefinition["module_name"]] = {} - if "module_depends" in moduleDefinition.keys(): - if type(moduleDefinition["module_depends"]) == str: - moduleDefinition["module_depends"] = (moduleDefinition["module_depends"],) - moduleDict[moduleDefinition["module_name"]]["depends"] = moduleDefinition["module_depends"] + moduleName = moduleDefinition[const.MODULE_DEFINITION["module_name"]] + del moduleDefinition[const.MODULE_DEFINITION["module_name"]] + moduleDict[moduleName] = {} + if const.MODULE_DEFINITION["module_depends"] in moduleDefinition.keys(): + if type(moduleDefinition[const.MODULE_DEFINITION["module_depends"]]) == str: + moduleDefinition[const.MODULE_DEFINITION["module_depends"]] = (moduleDefinition[const.MODULE_DEFINITION["module_depends"]],) + moduleDict[moduleName]["depends"] = moduleDefinition[const.MODULE_DEFINITION["module_depends"]] + del moduleDefinition[const.MODULE_DEFINITION["module_depends"]] else: - moduleDict[moduleDefinition["module_name"]]["depends"] = () - if "module_configuration" in moduleDefinition.keys(): - moduleDict[moduleDefinition["module_name"]]["configuration"] = moduleDefinition["module_configuration"] + moduleDict[moduleName]["depends"] = () + if const.MODULE_DEFINITION["module_configuration"] in moduleDefinition.keys(): + moduleDict[moduleName]["configuration"] = moduleDefinition[const.MODULE_DEFINITION["module_configuration"]] + del moduleDefinition[const.MODULE_DEFINITION["module_configuration"]] else: - moduleDict[moduleDefinition["module_name"]]["configuration"] = "" + moduleDict[moduleName]["configuration"] = "" if "module_description" in moduleDefinition.keys(): - moduleDict[moduleDefinition["module_name"]]["description"] = moduleDefinition["module_description"] - moduleDict[moduleDefinition["module_name"]]["enabled"] = False + moduleDict[moduleName]["description"] = moduleDefinition["module_description"] + del moduleDefinition["module_description"] + moduleDict[moduleName]["consts"] = moduleDefinition + moduleDict[moduleName]["enabled"] = False return toBeParsed, moduleDict def loadDefineLists(commentList):