+def setEnabledModules(project_info, enabled_modules):
+ modules = project_info.info("MODULES")
+ files = {}
+ for module, information in modules.items():
+ information["enabled"] = module in enabled_modules
+ if information["enabled"]:
+ for dependency in information["depends"]:
+ if not dependency in modules:
+ files[dependency] = files.get(dependency, 0) + 1
+ project_info.setInfo("MODULES", modules)
+ 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
+ #
+ shutil.rmtree(srcdir, True)
+ copytree.copytree(os.path.join(new_sources, "bertos"), srcdir, ignore_list=const.IGNORE_LIST)
+
+def projectFileGenerator(project_info):
+ directory = project_info.info("PROJECT_PATH")
+ project_data = {}
+ enabled_modules = []
+ for module, information in project_info.info("MODULES").items():
+ if information["enabled"]:
+ enabled_modules.append(module)
+ project_data["ENABLED_MODULES"] = enabled_modules
+ # Use the local BeRTOS version instead of the original one
+ # project_data["SOURCES_PATH"] = project_info.info("SOURCES_PATH")
+ project_data["SOURCES_PATH"] = directory
+ project_data["PROJECT_NAME"] = project_info.info("PROJECT_NAME", os.path.basename(directory))
+ project_data["TOOLCHAIN"] = project_info.info("TOOLCHAIN")
+ project_data["CPU_NAME"] = project_info.info("CPU_NAME")
+ project_data["SELECTED_FREQ"] = project_info.info("SELECTED_FREQ")
+ project_data["OUTPUT"] = project_info.info("OUTPUT")
+ project_data["WIZARD_VERSION"] = WIZARD_VERSION
+ return pickle.dumps(project_data)
+
+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)
+ os.makedirs(directory)
+ # Write the project file