Add support for parametric hw dir.
[bertos.git] / wizard / BProject.py
index a9d285b90ac4522983a367ff99086515e8bd4282..798a96a9539c2a27eadbdf6de91df59f3840eef4 100644 (file)
@@ -93,6 +93,7 @@ class BProject(object):
         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))
@@ -167,6 +168,7 @@ class BProject(object):
         # 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"]
@@ -187,6 +189,7 @@ class BProject(object):
         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):
         """
@@ -304,7 +307,7 @@ class BProject(object):
                 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"))
@@ -341,6 +344,9 @@ class BProject(object):
 
         # 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()
@@ -438,6 +444,7 @@ class BProject(object):
         # 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",
@@ -499,6 +506,13 @@ class BProject(object):
     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)