cfgdir = prjdir + "/cfg"
shutil.rmtree(cfgdir, True)
os.mkdir(cfgdir)
+ # Set to 1 the autoenabled for enabled modules
+ for module, information in project_info.info("MODULES").items():
+ if information["enabled"] and "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] and configuration[parameter]["type"] == "autoenabled":
+ configuration[parameter]["value"] = "1"
+ 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 "type" in infos["informations"] and infos["informations"]["type"] == "autoenabled":
- value = "1"
if "unsigned" in infos["informations"].keys() and infos["informations"]["unsigned"]:
value += "U"
if "long" in infos["informations"].keys() and infos["informations"]["long"]:
"""
mk_data = {}
mk_data["$pname"] = os.path.basename(project_info.info("PROJECT_PATH"))
+ mk_data["$cpuflag"] = project_info.info("CPU_INFOS")["CPU_FLAG_NAME"]
mk_data["$cpuname"] = project_info.info("CPU_INFOS")["CORE_CPU"]
mk_data["$cflags"] = " ".join(project_info.info("CPU_INFOS")["C_FLAGS"])
mk_data["$ldflags"] = " ".join(project_info.info("CPU_INFOS")["LD_FLAGS"])
- mk_data["$csrc"], mk_data["$pcsrc"], mk_data["$asrc"], mk_data["$constants"] = csrcGenerator(project_info)
+ mk_data["$cppflags"] = " ".join(project_info.info("CPU_INFOS")["CPP_FLAGS"])
+ mk_data["$cppaflags"] = " ".join(project_info.info("CPU_INFOS")["CPPA_FLAGS"])
+ mk_data["$cxxflags"] = " ".join(project_info.info("CPU_INFOS")["CXX_FLAGS"])
+ mk_data["$asflags"] = " ".join(project_info.info("CPU_INFOS")["AS_FLAGS"])
+ mk_data["$arflags"] = " ".join(project_info.info("CPU_INFOS")["AR_FLAGS"])
+ mk_data["$csrc"], mk_data["$pcsrc"], mk_data["$cppasrc"], mk_data["$cxxsrc"], mk_data["$asrc"], mk_data["$constants"] = csrcGenerator(project_info)
mk_data["$prefix"] = project_info.info("TOOLCHAIN")["path"].split("gcc")[0]
mk_data["$suffix"] = project_info.info("TOOLCHAIN")["path"].split("gcc")[1]
- mk_data["$cross"] = project_info.info("TOOLCHAIN")["path"].split("gcc")[0]
mk_data["$main"] = os.path.basename(project_info.info("PROJECT_PATH")) + "/main.c"
for key in mk_data:
while makefile.find(key) != -1:
# file to be included in PCSRC variable
pcsrc = []
# files to be included in CPPASRC variable
+ cppasrc = []
+ # files to be included in CXXSRC variable
+ cxxsrc = []
+ # files to be included in ASRC variable
asrc = []
# constants to be included at the beginning of the makefile
constants = {}
asm_files |= set(dependencySFiles)
for file in module_files:
if not harvard or "harvard" not in information or information["harvard"] == "both":
- csrc.append(os.path.normpath(file))
+ csrc.append(file)
if harvard and "harvard" in information:
- pcsrc.append(os.path.normpath(file))
+ pcsrc.append(file)
for file in dependency_files:
- csrc.append(os.path.normpath(file))
+ csrc.append(file)
+ for file in project_info.info("CPU_INFOS")["C_SRC"]:
+ csrc.append(file)
+ for file in project_info.info("CPU_INFOS")["PC_SRC"]:
+ pcsrc.append(file)
for file in asm_files:
- asrc.append(os.path.normpath(file))
+ cppasrc.append(file)
+ for file in project_info.info("CPU_INFOS")["CPPA_SRC"]:
+ cppasrc.append(file)
+ for file in project_info.info("CPU_INFOS")["CXX_SRC"]:
+ cxxsrc.append(file)
+ for file in project_info.info("CPU_INFOS")["ASRC"]:
+ asrc.append(file)
csrc = " \\\n\t".join(csrc) + " \\"
pcsrc = " \\\n\t".join(pcsrc) + " \\"
+ cppasrc = " \\\n\t".join(cppasrc) + " \\"
+ cxxsrc = " \\\n\t".join(cxxsrc) + " \\"
asrc = " \\\n\t".join(asrc) + " \\"
constants = "\n".join([os.path.basename(project_info.info("PROJECT_PATH")) + "_" + key + " = " + str(value) for key, value in constants.items()])
- return csrc, pcsrc, asrc, constants
-
+ return csrc, pcsrc, cppasrc, cxxsrc, asrc, constants
+
def findModuleFiles(module, project_info):
# Find the files related to the selected module
cfiles = []
# .c files related to the module and the cpu architecture
for filename, path in findDefinitions(module + ".c", project_info) + \
findDefinitions(module + "_" + project_info.info("CPU_INFOS")["TOOLCHAIN"] + ".c", project_info):
- path = path.replace(project_info.info("SOURCES_PATH") + "/", "")
+ path = path.replace(project_info.info("SOURCES_PATH") + os.sep, "")
+ if os.sep != "/":
+ path = replaceSeparators(path)
cfiles.append(path + "/" + filename)
# .s files related to the module and the cpu architecture
for filename, path in findDefinitions(module + ".s", project_info) + \
findDefinitions(module + "_" + project_info.info("CPU_INFOS")["TOOLCHAIN"] + ".s", project_info) + \
findDefinitions(module + ".S", project_info) + \
findDefinitions(module + "_" + project_info.info("CPU_INFOS")["TOOLCHAIN"] + ".S", project_info):
- path = path.replace(project_info.info("SOURCES_PATH") + "/", "")
+ path = path.replace(project_info.info("SOURCES_PATH") + os.sep, "")
+ if os.sep != "/":
+ path = replaceSeparators(path)
sfiles.append(path + "/" + filename)
# .c and .s files related to the module and the cpu tags
for tag in project_info.info("CPU_INFOS")["CPU_TAGS"]:
for filename, path in findDefinitions(module + "_" + tag + ".c", project_info):
- path = path.replace(project_info.info("SOURCES_PATH") + "/", "")
+ path = path.replace(project_info.info("SOURCES_PATH") + os.sep, "")
+ if os.sep != "/":
+ path = replaceSeparators(path)
cfiles.append(path + "/" + filename)
for filename, path in findDefinitions(module + "_" + tag + ".s", project_info) + \
findDefinitions(module + "_" + tag + ".S", project_info):
- path = path.replace(project_info.info("SOURCES_PATH") + "/", "")
+ path = path.replace(project_info.info("SOURCES_PATH") + os.sep, "")
+ if os.sep != "/":
+ path = replaceSeparators(path)
sfiles.append(path + "/" + filename)
return cfiles, sfiles
+def replaceSeparators(path):
+ """
+ Replace the separators in the given path with unix standard separator.
+ """
+ while path.find(os.sep) != -1:
+ path = path.replace(os.sep, "/")
+ return path
+
def getSystemPath():
path = os.environ["PATH"]
if os.name == "nt":
define_list[key] = (value,)
return define_list
-def getDescriptionInformations(comment):
- """
- Take the doxygen comment and strip the wizard informations, returning the tuple
- (comment, wizard_information)
+def getDescriptionInformations(comment):
+ """
+ Take the doxygen comment and strip the wizard informations, returning the tuple
+ (comment, wizard_information)
"""
brief = ""
description = ""
project.setInfo("LISTS", list_info_dict)
project.setInfo("CONFIGURATIONS", configuration_info_dict)
project.setInfo("FILES", file_dict)
-
+
def formatParamNameValue(text):
"""
Take the given string and return a tuple with the name of the parameter in the first position