Fix naming convention issue (related to HW_DIR/HW_PATH/PROJECT_HW_PATH...)
[bertos.git] / wizard / BProject.py
index 79e4477fe57fbed51da28c3561497faec3290195..adf78febaca716f03cba94fd5b84bb4893a485a8 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["PROJECT_HW_PATH"] = os.path.join(self.infos["PROJECT_PATH"], project_data.get("PROJECT_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,14 +168,17 @@ 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_prj_hw_path = os.path.join(preset, project_data.get("PROJECT_HW_PATH", preset))
 
         old_project_name = self.infos["PROJECT_NAME"]
         old_project_path = self.infos["PROJECT_PATH"]
         old_project_src_path = self.infos["PROJECT_SRC_PATH"]
+        old_project_hw_path = self.infos["PROJECT_HW_PATH"]
 
         self.infos["PROJECT_NAME"] = preset_project_name
         self.infos["PROJECT_PATH"] = preset
         self.infos["PROJECT_SRC_PATH"] = preset_prj_src_path
+        self.infos["PROJECT_HW_PATH"] = preset_prj_hw_path
 
         self.loadModuleData(True)
         self.setEnabledModules(project_data["ENABLED_MODULES"])
@@ -182,11 +186,13 @@ class BProject(object):
         self.infos["PROJECT_NAME"] = old_project_name
         self.infos["PROJECT_PATH"] = old_project_path
         self.infos["PROJECT_SRC_PATH"] = old_project_src_path
+        self.infos["PROJECT_HW_PATH"] = old_project_hw_path
         # End of the ugly HACK!
 
         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_PATH"] = preset_prj_hw_path
 
     def loadProjectPresets(self):
         """
@@ -304,7 +310,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"))
@@ -339,8 +345,14 @@ class BProject(object):
         # Create/write/copy the common things
         self._newBertosProject()
 
-        # Copy all the files and dirs except cfg/hw/*_wiz.mk
+        # 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()
 
         if self.infos["EMPTY_MAIN"]:
             # Create and empty main.c file only if the user check the box
@@ -395,6 +407,9 @@ class BProject(object):
     def _writeUserMkFile(self):
         bertos_utils.userMkGenerator(self)
 
+    def _writeUserMkFileFromPreset(self):
+        bertos_utils.userMkGeneratorFromPreset(self)
+
     def _writeWizardMkFile(self):
         bertos_utils.mkGenerator(self)
 
@@ -432,7 +447,9 @@ class BProject(object):
         # Files to be ignored (all project files, cfg dir, wizard mk file, all global ignored dirs)
         project_related_stuff = (
             "cfg",
-            self.infos["PRESET_NAME"] + "_wiz.mk",
+            "hw",
+            self.infos["PRESET_NAME"] + ".mk",
+            self.infos["PRESET_NAME"] + "_user.mk",
             "project.bertos",
             self.infos["PRESET_NAME"] + ".project",
             self.infos["PRESET_NAME"] + ".workspace",
@@ -492,6 +509,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_PATH"])
+        else:
+            return self.sources_dir
+
     @property
     def from_preset(self):
         return self.infos.get("PROJECT_FROM_PRESET", False)