-def createBertosProject(project_info, edit=False):
- directory = project_info.info("PROJECT_PATH")
- sources_dir = project_info.info("SOURCES_PATH")
- if os.path.isdir(directory) and not edit:
- shutil.rmtree(directory, True)
- os.makedirs(directory)
- f = open(directory + "/project.bertos", "w")
- f.write(projectFileGenerator(project_info))
- f.close()
- # Destination source dir
- srcdir = directory + "/bertos"
- shutil.rmtree(srcdir, True)
- copytree.copytree(sources_dir + "/bertos", srcdir, ignore_list=const.IGNORE_LIST)
- # Destination makefile
- makefile = directory + "/Makefile"
- if os.path.exists(makefile):
- os.remove(makefile)
- makefile = open("mktemplates/Makefile").read()
- makefile = makefileGenerator(project_info, makefile)
- open(directory + "/Makefile", "w").write(makefile)
- # Destination project dir
- prjdir = directory + "/" + os.path.basename(directory)
- shutil.rmtree(prjdir, True)
- os.mkdir(prjdir)
- # Destination hw files
- hwdir = prjdir + "/hw"
- shutil.rmtree(hwdir, True)
- os.mkdir(hwdir)
- # Copy all the hw files
- for module, information in project_info.info("MODULES").items():
- for hwfile in information["hw"]:
- string = open(sources_dir + "/" + hwfile, "r").read()
- open(hwdir + "/" + os.path.basename(hwfile), "w").write(string)
- # Destination configurations files
- cfgdir = prjdir + "/cfg"
- shutil.rmtree(cfgdir, True)
- os.mkdir(cfgdir)
- # Set properly the autoenabled parameters
- for module, information in project_info.info("MODULES").items():
- if "configuration" in information and information["configuration"] != "":
- configurations = project_info.info("CONFIGURATIONS")
- configuration = configurations[information["configuration"]]
- for start, parameter in configuration["paramlist"]:
- if "type" in configuration[parameter]["informations"] and configuration[parameter]["informations"]["type"] == "autoenabled":
- configuration[parameter]["value"] = "1" if information["enabled"] else "0"
- project_info.setInfo("CONFIGURATIONS", configurations)
- # Copy all the configuration files
- for configuration, information in project_info.info("CONFIGURATIONS").items():
- string = open(sources_dir + "/" + configuration, "r").read()
- for start, parameter in information["paramlist"]:
- infos = information[parameter]
- value = infos["value"]
- if "unsigned" in infos["informations"] and infos["informations"]["unsigned"]:
- value += "U"
- if "long" in infos["informations"] and infos["informations"]["long"]:
- value += "L"
- string = sub(string, parameter, value)
- f = open(cfgdir + "/" + os.path.basename(configuration), "w")
- f.write(string)
- f.close()
- # Destinatio mk file
- makefile = open("mktemplates/template.mk", "r").read()
- makefile = mkGenerator(project_info, makefile)
- open(prjdir + "/" + os.path.basename(prjdir) + ".mk", "w").write(makefile)
- # Destination main.c file
- main = open("srctemplates/main.c", "r").read()
- open(prjdir + "/main.c", "w").write(main)
- # Files for selected plugins
- relevants_files = {}
- for plugin in project_info.info("OUTPUT"):
- module = loadPlugin(plugin)
- relevants_files[plugin] = module.createProject(project_info)
- project_info.setInfo("RELEVANT_FILES", relevants_files)
-