X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=wizard%2Fbertos_utils.py;h=004e67bf5512b53e1d55eaae7f32f250aa058c05;hb=ce53d10edad6c070e6603cf8cd2e8da464dad32c;hp=e17a4ed586d6bebc090619913d6fb2cc3a659674;hpb=25b3954d828a80625b69aa646d21166c21b64b53;p=bertos.git diff --git a/wizard/bertos_utils.py b/wizard/bertos_utils.py index e17a4ed5..004e67bf 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 @@ -295,8 +307,7 @@ def csrcGenerator(project_info): for file in information["hw"]: if file.endswith(".c"): module_files |= set([hwdir + "/" + os.path.basename(file)]) - for file_dependency in information["depends"]: - if file_dependency in files: + for file_dependency in information["depends"] + tuple(files.keys()): dependencyCFiles, dependencySFiles = findModuleFiles(file_dependency, project_info) dependency_files |= set(dependencyCFiles) asm_files |= set(dependencySFiles) @@ -674,6 +685,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"] = [] @@ -696,6 +708,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(configuration_infos[name]["informations"]["conditional_deps"]) == tuple: + pass + else: + configuration_infos[name]["informations"]["conditional_deps"] = () configuration_infos[name]["description"] = description configuration_infos[name]["brief"] = brief return configuration_infos