X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=wizard%2Fcompatibility.py;h=bf2f635a78c217bec84ecd0867ae73fb85aaaade;hb=57fa5e371a8b40afc99b922731b77d17c55330a4;hp=8f1b0742c4399329995eee907ec5bd0fab1357d9;hpb=caa730dbc7128c09b5a5b883aa2ad97fe23e799d;p=bertos.git diff --git a/wizard/compatibility.py b/wizard/compatibility.py index 8f1b0742..bf2f635a 100644 --- a/wizard/compatibility.py +++ b/wizard/compatibility.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # encoding: utf-8 # -# This file is part of slimqc. +# This file is part of BeRTOS. # # Bertos is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -28,11 +28,57 @@ # # Copyright 2010 Develer S.r.l. (http://www.develer.com/) # -# $Id$ # # Author: Lorenzo Berni # +import const +import os +from bertos_utils import replaceSeparators, csrcGenerator + +def _userMkGenerator(project_info): + makefile = open(os.path.join(const.DATA_DIR, "mktemplates/old/template.mk"), "r").read() + destination = os.path.join(project_info.prjdir, os.path.basename(project_info.prjdir) + ".mk") + # Deadly performances loss was here :( + mk_data = {} + mk_data["$pname"] = os.path.basename(project_info.info("PROJECT_PATH")) + mk_data["$main"] = os.path.basename(project_info.info("PROJECT_PATH")) + "/main.c" + for key in mk_data: + makefile = makefile.replace(key, mk_data[key]) + open(destination, "w").write(makefile) + +def _mkGenerator(project_info): + """ + Generates the mk file for the current project. + """ + makefile = open(os.path.join(const.DATA_DIR, "mktemplates/old/template_wiz.mk"), "r").read() + destination = os.path.join(project_info.prjdir, os.path.basename(project_info.prjdir) + "_wiz.mk") + mk_data = {} + mk_data["$pname"] = project_info.info("PROJECT_NAME") + mk_data["$cpuclockfreq"] = project_info.info("SELECTED_FREQ") + cpu_mk_parameters = [] + for key, value in project_info.info("CPU_INFOS").items(): + if key.startswith(const.MK_PARAM_ID): + cpu_mk_parameters.append("%s = %s" %(key.replace("MK", mk_data["$pname"]), value)) + mk_data["$cpuparameters"] = "\n".join(cpu_mk_parameters) + 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["$main"] = os.path.basename(project_info.info("PROJECT_PATH")) + "/main.c" + for key in mk_data: + makefile = makefile.replace(key, mk_data[key]) + open(destination, "w").write(makefile) + +def _makefileGenerator(project_info): + """ + Generate the Makefile for the current project. + """ + makefile = open(os.path.join(const.DATA_DIR, "mktemplates/old/Makefile"), "r").read() + destination = os.path.join(project_info.maindir, "Makefile") + # TODO write a general function that works for both the mk file and the Makefile + makefile = makefile.replace("$pname", project_info.info("PROJECT_NAME")) + open(destination, "w").write(makefile) + def updateProject(project_data): """ Update incrementally the project_data loaded from a BeRTOS Wizard project @@ -45,5 +91,16 @@ def updateProject(project_data): if wizard_version < 2: # Use SOURCES_PATH instead of BERTOS_PATH for backward compatibility project_data["BERTOS_PATH"] = project_data["SOURCES_PATH"] + if wizard_version < 3: + # Use older makefile templates and generators using monkey patching + import bertos_utils + bertos_utils.mkGenerator = _mkGenerator + bertos_utils.userMkGenerator = _userMkGenerator + bertos_utils.makefileGenerator = _makefileGenerator + if wizard_version < 4: + # Use default PROJECT_SRC_PATH_FROM_MAKEFILE and + # PROJECT_HW_PATH_FROM_MAKEFILE + project_data["PROJECT_SRC_PATH_FROM_MAKEFILE"] = project_data["PROJECT_SRC_PATH"] + project_data["PROJECT_HW_PATH_FROM_MAKEFILE"] = project_data["PROJECT_HW_PATH"] return project_data