self.setProjectInfo("PROJECT_PATH", unicode(self.pageContent.projectPath.text()))
self.setProjectInfo("PROJECT_NAME", os.path.basename(unicode(self.pageContent.projectPath.text())))
self.setProjectInfo("PROJECT_SRC_PATH", os.path.join(self.projectInfo("PROJECT_PATH"), self.projectInfo("PROJECT_NAME")))
+ self.setProjectInfo("HW_PATH", os.path.join(self.projectInfo("PROJECT_PATH"), self.projectInfo("PROJECT_NAME")))
self.setProjectInfo("ROUTE", self.next_page)
self.setProjectInfo("PROJECT_FROM_PRESET", self.from_preset)
return True
else:
# In projects created with older versions of the Wizard this metadata doesn't exist
self.infos["PROJECT_SRC_PATH"] = os.path.join(self.infos["PROJECT_PATH"], self.infos["PROJECT_NAME"])
+ self.infos["HW_PATH"] = os.path.join(self.infos["PROJECT_PATH"], project_data.get("HW_PATH", self.infos["PROJECT_PATH"]))
linked_sources_path = project_data["BERTOS_PATH"]
sources_abspath = os.path.abspath(os.path.join(project_dir, linked_sources_path))
# TODO: find a better way to reuse loadModuleData
preset_project_name = project_data.get("PROJECT_NAME", os.path.basename(preset))
preset_prj_src_path = os.path.join(preset, project_data.get("PROJECT_SRC_PATH", os.path.join(preset, preset_project_name)))
+ preset_hw_path = os.path.join(preset, project_data.get("PROJET_HW_DIR", preset))
old_project_name = self.infos["PROJECT_NAME"]
old_project_path = self.infos["PROJECT_PATH"]
self.infos["PRESET_NAME"] = preset_project_name
self.infos["PRESET_PATH"] = preset
self.infos["PRESET_SRC_PATH"] = preset_prj_src_path
+ self.infos["PRESET_HW_DIR"] = preset_hw_path
def loadProjectPresets(self):
"""
self._newBertosProjectFromPreset()
def _newBertosProject(self):
- for directory in (self.maindir, self.srcdir, self.prjdir, self.cfgdir):
+ for directory in (self.maindir, self.srcdir, self.prjdir, self.cfgdir, self.hwdir):
self._createDirectory(directory)
# Write the project file
self._writeProjectFile(os.path.join(self.maindir, "project.bertos"))
# Copy all the files and dirs except cfg/hw/*.mk
self._writeCustomSrcFiles()
+
+ # Copy the hw files
+ self._writeHwFiles(self.src_hwdir, self.hwdir)
# Copyt the new *_user.mk file
self._writeUserMkFileFromPreset()
# Files to be ignored (all project files, cfg dir, wizard mk file, all global ignored dirs)
project_related_stuff = (
"cfg",
+ "hw",
self.infos["PRESET_NAME"] + ".mk",
self.infos["PRESET_NAME"] + "_user.mk",
"project.bertos",
def sources_dir(self):
return self.infos.get("BERTOS_PATH", None)
+ @property
+ def src_hwdir(self):
+ if self.from_preset:
+ return os.path.join(self.infos["PRESET_PATH"], self.infos["PRESET_HW_DIR"])
+ else:
+ return self.sources_dir
+
@property
def from_preset(self):
return self.infos.get("PROJECT_FROM_PRESET", False)
project_data["OUTPUT"] = project_info.info("OUTPUT")
project_data["WIZARD_VERSION"] = WIZARD_VERSION
project_data["PRESET"] = project_info.info("PRESET")
+ project_data["HW_PATH"] = relpath.relpath(project_info.info("HW_PATH"), directory)
return pickle.dumps(project_data)
def loadPlugin(plugin):
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])
+ mk_data["$hwpath"] = relpath.relpath(project_info.info("HW_PATH"), project_info.info("PROJECT_PATH"))
for key in mk_data:
makefile = makefile.replace(key, mk_data[key])
open(destination, "w").write(makefile)
# TODO write a general function that works for both the mk file and the Makefile
mk_data = {}
mk_data["$pname"] = project_info.info("PROJECT_NAME")
- mk_data["$ppath"] = os.path.basename(project_info.info("PROJECT_SRC_PATH"))
+ mk_data["$ppath"] = relpath.relpath(project_info.info("PROJECT_SRC_PATH"), project_info.info("PROJECT_PATH"))
for key in mk_data:
makefile = makefile.replace(key, mk_data[key])
open(destination, "w").write(makefile)