X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=wizard%2Fbertos_utils.py;h=c0c9ecb2a3d367047aee9a19b7eddbca8bea2c41;hb=eea2624b23b44f93fb894a4c98689c683c3d60d9;hp=363b08b5e182e5e1f5573aa04ce27336cfff9e8d;hpb=2156a825ba83da6e71a78237285a5558956da549;p=bertos.git diff --git a/wizard/bertos_utils.py b/wizard/bertos_utils.py index 363b08b5..c0c9ecb2 100644 --- a/wizard/bertos_utils.py +++ b/wizard/bertos_utils.py @@ -47,20 +47,24 @@ import plugins import DefineException import BProject +from LoadException import VersionException, ToolchainException + def isBertosDir(directory): return os.path.exists(directory + "/VERSION") def bertosVersion(directory): return open(directory + "/VERSION").readline().strip() -def loadBertosProject(project_file): +def loadBertosProject(project_file, info_dict): project_data = pickle.loads(open(project_file, "r").read()) project_info = BProject.BProject() project_info.setInfo("PROJECT_PATH", os.path.dirname(project_file)) - project_info.setInfo("SOURCES_PATH", project_data["SOURCES_PATH"]) - project_info.setInfo("TOOLCHAIN", project_data["TOOLCHAIN"]) - project_info.setInfo("SELECTED_FREQ", project_data["SELECTED_FREQ"]) - project_info.setInfo("OUTPUT", project_data["OUTPUT"]) + if "SOURCES_PATH" in info_dict: + project_data["SOURCES_PATH"] = info_dict["SOURCES_PATH"] + if os.path.exists(project_data["SOURCES_PATH"]): + project_info.setInfo("SOURCES_PATH", project_data["SOURCES_PATH"]) + else: + raise VersionException(project_info) loadSourceTree(project_info) cpu_name = project_data["CPU_NAME"] project_info.setInfo("CPU_NAME", cpu_name) @@ -81,6 +85,14 @@ def loadBertosProject(project_file): else: tag_dict[tag] = False project_info.setInfo("ALL_CPU_TAGS", tag_dict) + if "TOOLCHAIN" in info_dict: + project_data["TOOLCHAIN"] = info_dict["TOOLCHAIN"] + if os.path.exists(project_data["TOOLCHAIN"]["path"]): + project_info.setInfo("TOOLCHAIN", project_data["TOOLCHAIN"]) + else: + raise ToolchainException(project_info) + project_info.setInfo("SELECTED_FREQ", project_data["SELECTED_FREQ"]) + project_info.setInfo("OUTPUT", project_data["OUTPUT"]) loadModuleData(project_info, True) setEnabledModules(project_info, project_data["ENABLED_MODULES"]) return project_info @@ -319,10 +331,15 @@ def csrcGenerator(project_info): cxxsrc.append(file) for file in project_info.info("CPU_INFOS")["ASRC"]: asrc.append(file) + csrc = set(csrc) csrc = " \\\n\t".join(csrc) + " \\" + pcsrc = set(pcsrc) pcsrc = " \\\n\t".join(pcsrc) + " \\" + cppasrc = set(cppasrc) cppasrc = " \\\n\t".join(cppasrc) + " \\" + cxxsrc = set(cxxsrc) cxxsrc = " \\\n\t".join(cxxsrc) + " \\" + asrc = set(asrc) asrc = " \\\n\t".join(asrc) + " \\" constants = "\n".join([os.path.basename(project_info.info("PROJECT_PATH")) + "_" + key + " = " + unicode(value) for key, value in constants.items()]) return csrc, pcsrc, cppasrc, cxxsrc, asrc, constants @@ -669,6 +686,7 @@ def loadConfigurationInfos(path): "long": boolean indicating if the num is a long "unsigned": boolean indicating if the num is an unsigned "value_list": the name of the enum for enum parameters + "conditional_deps": the list of conditional dependencies for boolean parameters """ configuration_infos = {} configuration_infos["paramlist"] = [] @@ -691,6 +709,14 @@ def loadConfigurationInfos(path): configuration_infos[name]["value"].find("U") != -1): configuration_infos[name]["informations"]["unsigned"] = True configuration_infos[name]["value"] = configuration_infos[name]["value"].replace("U", "") + if "conditional_deps" in configuration_infos[name]["informations"]: + if (type(configuration_infos[name]["informations"]["conditional_deps"]) == str or + type(configuration_infos[name]["informations"]["conditional_deps"]) == unicode): + configuration_infos[name]["informations"]["conditional_deps"] = (configuration_infos[name]["informations"]["conditional_deps"], ) + elif type(configurations_infos[name]["informations"]["conditional_deps"]) == tuple: + pass + else: + configurations_infos[name]["informations"]["conditional_deps"] = () configuration_infos[name]["description"] = description configuration_infos[name]["brief"] = brief return configuration_infos