X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=wizard%2Fbertos_utils.py;h=f509a4c2430055680334b2856fc9994389ee6fe8;hb=8485e3cfe2e7421e1313752f0b802e5ddd55e86b;hp=71b073848c50f978adee9f585a47f0f44dc43e76;hpb=e34dc0282b9cc8414207891d9882bcde8984b8a0;p=bertos.git diff --git a/wizard/bertos_utils.py b/wizard/bertos_utils.py index 71b07384..f509a4c2 100644 --- a/wizard/bertos_utils.py +++ b/wizard/bertos_utils.py @@ -76,21 +76,44 @@ def loadBertosProject(project_file): tag_dict[element] = False infos = project_info.info("CPU_INFOS") for tag in tag_dict: - if tag in infos["CPU_TAGS"] + [infos["CPU_NAME"], infos["CORE_CPU"], infos["TOOLCHAIN"]]: + if tag in infos["CPU_TAGS"] + [infos["CPU_NAME"], infos["TOOLCHAIN"]]: tag_dict[tag] = True else: tag_dict[tag] = False project_info.setInfo("ALL_CPU_TAGS", tag_dict) loadModuleData(project_info, True) + setEnabledModules(project_info, project_data["ENABLED_MODULES"]) + return project_info + +def setEnabledModules(project_info, enabled_modules): modules = project_info.info("MODULES") + files = {} for module, information in modules.items(): - information["enabled"] = module in project_data["ENABLED_MODULES"] + information["enabled"] = module in enabled_modules + for dependency in information["depends"]: + if not dependency in modules: + if dependency in files: + files[dependency] += 1 + else: + files[dependency] = 1 project_info.setInfo("MODULES", modules) - return project_info + project_info.setInfo("FILES", files) + +def enabledModules(project_info): + enabled_modules = [] + for name, module in project_info.info("MODULES").items(): + if module["enabled"]: + enabled_modules.append(name) + return enabled_modules def mergeSources(srcdir, new_sources, old_sources): + # The current mergeSources function provide only a raw copy of the sources in the + # created project. + # # TODO: implement the three way merge algorithm - pass + # + shutil.rmtree(srcdir, True) + copytree.copytree(sources_dir + "/bertos", srcdir, ignore_list=const.IGNORE_LIST) def projectFileGenerator(project_info): directory = project_info.info("PROJECT_PATH") @@ -110,6 +133,7 @@ def projectFileGenerator(project_info): def createBertosProject(project_info, edit=False): directory = project_info.info("PROJECT_PATH") sources_dir = project_info.info("SOURCES_PATH") + old_sources_dir = project_info.info("OLD_SOURCES_PATH") if not edit: if os.path.isdir(directory): shutil.rmtree(directory, True) @@ -124,13 +148,11 @@ def createBertosProject(project_info, edit=False): # If not in editing mode it copies all the bertos sources in the /bertos subdirectory of the project shutil.rmtree(srcdir, True) copytree.copytree(sources_dir + "/bertos", srcdir, ignore_list=const.IGNORE_LIST) - else: + elif old_sources_dir: # If in editing mode it merges the current bertos sources with the selected ones # TODO: implement the three way merge algotihm # - # mergeSources(srcdir, sources_dir, old_sources_dir) - # - pass + mergeSources(srcdir, sources_dir, old_sources_dir) # Destination makefile makefile = directory + "/Makefile" makefile = open("mktemplates/Makefile").read() @@ -215,16 +237,12 @@ def mkGenerator(project_info, makefile): """ mk_data = {} mk_data["$pname"] = os.path.basename(project_info.info("PROJECT_PATH")) - mk_data["$cpuflag"] = project_info.info("CPU_INFOS")["CPU_FLAG_NAME"] - mk_data["$cpuname"] = project_info.info("CPU_INFOS")["CORE_CPU"] mk_data["$cpuclockfreq"] = project_info.info("SELECTED_FREQ") - mk_data["$cflags"] = " ".join(project_info.info("CPU_INFOS")["C_FLAGS"]) - mk_data["$ldflags"] = " ".join(project_info.info("CPU_INFOS")["LD_FLAGS"]) - mk_data["$cppflags"] = " ".join(project_info.info("CPU_INFOS")["CPP_FLAGS"]) - mk_data["$cppaflags"] = " ".join(project_info.info("CPU_INFOS")["CPPA_FLAGS"]) - mk_data["$cxxflags"] = " ".join(project_info.info("CPU_INFOS")["CXX_FLAGS"]) - mk_data["$asflags"] = " ".join(project_info.info("CPU_INFOS")["AS_FLAGS"]) - mk_data["$arflags"] = " ".join(project_info.info("CPU_INFOS")["AR_FLAGS"]) + cpu_mk_parameters = [] + for key, value in project_info.info("CPU_INFOS").items(): + if key.startswith(const.MK_PARAM_ID): + cpu_mk_parameters.append("%s = %s" %(key.replace("MK", mk_data["$pname"]), value)) + mk_data["$cpuparameters"] = "\n".join(cpu_mk_parameters) mk_data["$csrc"], mk_data["$pcsrc"], mk_data["$cppasrc"], mk_data["$cxxsrc"], mk_data["$asrc"], mk_data["$constants"] = csrcGenerator(project_info) mk_data["$prefix"] = replaceSeparators(project_info.info("TOOLCHAIN")["path"].split("gcc")[0]) mk_data["$suffix"] = replaceSeparators(project_info.info("TOOLCHAIN")["path"].split("gcc")[1]) @@ -419,7 +437,6 @@ def getTagSet(cpu_info): for cpu in cpu_info: tag_set |= set([cpu["CPU_NAME"]]) tag_set |= set(cpu["CPU_TAGS"]) - tag_set |= set([cpu["CORE_CPU"]]) tag_set |= set([cpu["TOOLCHAIN"]]) return tag_set @@ -680,7 +697,8 @@ def loadConfigurationInfos(path): def updateConfigurationValues(def_conf, user_conf): for param in def_conf["paramlist"]: - def_conf[param[1]]["value"] = user_conf[param[1]]["value"] + if param[1] in user_conf and "value" in user_conf[param[1]]: + def_conf[param[1]]["value"] = user_conf[param[1]]["value"] return def_conf def findParameterType(parameter):