From 9b7971e801002a18e58db495ca0a4bf669c124ea Mon Sep 17 00:00:00 2001 From: "yaxing.chen" Date: Mon, 18 Jan 2021 16:00:57 +0800 Subject: add dist-ide support for all bsp --- tools/studio.py | 339 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 339 insertions(+) create mode 100644 tools/studio.py (limited to 'tools/studio.py') diff --git a/tools/studio.py b/tools/studio.py new file mode 100644 index 0000000000..0a23d6488b --- /dev/null +++ b/tools/studio.py @@ -0,0 +1,339 @@ +import os +import re +from string import Template + +import rtconfig + +cproject_temp = """ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +""" + +project_temp = """ + + __project_name_flag__ + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.rt-thread.studio.rttnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + +""" + +projcfg_ini_temp = """#RT-Thread Studio Project Configuration +#Sat Jan 16 15:18:32 CST 2021 +project_type=rtt +chip_name=${chip_name} +cpu_name=None +target_freq= +clock_source= +dvendor_name= +rx_pin_name= +rtt_path= +source_freq= +csp_path= +sub_series_name= +selected_rtt_version=latest +cfg_version=v3.0 +tool_chain=gcc +uart_name= +tx_pin_name= +rtt_nano_path= +output_project_path= +hardware_adapter=J-Link +project_name=${project_name}""" + +eclipse_core_runtime_temp = """content-types/enabled=true +content-types/org.eclipse.cdt.core.asmSource/file-extensions=s +eclipse.preferences.version=1""" + +makefile_targets_temp = """clean2: +\t-$(RM) $(CC_DEPS)$(C++_DEPS)$(C_UPPER_DEPS)$(CXX_DEPS)$(SECONDARY_FLASH)$(SECONDARY_SIZE)$(ASM_DEPS)$(S_UPPER_DEPS)$(C_DEPS)$(CPP_DEPS) +\t-$(RM) $(OBJS) *.elf +\t-@echo ' ' + +*.elf: $(wildcard ../linkscripts/*/*.lds) $(wildcard ../linkscripts/*/*/*.lds)""" + + +def get_mcu_info(uvproj_file_path): + if os.path.exists(uvproj_file_path): + with open(uvproj_file_path, mode='r') as f: + data = f.read() + result = re.search("(.*)", data) + if result: + return result.group(1) + else: + return "" + else: + return "" + + +def gen_makefile_targets(output_file_path): + try: + w_str = makefile_targets_temp + dir_name = os.path.dirname(output_file_path) + if not os.path.exists(dir_name): + os.makedirs(dir_name) + with open(output_file_path, 'w') as f: + f.write(w_str) + return True + except Exception as e: + print(e) + return False + + +def gen_org_eclipse_core_runtime_prefs(output_file_path): + try: + w_str = eclipse_core_runtime_temp + dir_name = os.path.dirname(output_file_path) + if not os.path.exists(dir_name): + os.makedirs(dir_name) + with open(output_file_path, 'w') as f: + f.write(w_str) + return True + except Exception as e: + print(e) + return False + + +def gen_cproject_file(output_file_path): + CFLAGS = rtconfig.CFLAGS + AFLAGS = rtconfig.AFLAGS + LFLAGS = rtconfig.LFLAGS + if 'CXXFLAGS' in dir(rtconfig): + CXXFLAGS = rtconfig.CXXFLAGS + else: + CXXFLAGS = "" + + if "-T" in LFLAGS: + items = str(LFLAGS).split() + t_index = items.index("-T") + items[t_index] = "" + items[t_index + 1] = "" + LFLAGS = " ".join(items) + + try: + w_str = cproject_temp + if "a_misc_flag" in w_str: + w_str = w_str.replace("a_misc_flag", AFLAGS) + if "c_misc_flag" in w_str: + w_str = w_str.replace("c_misc_flag", CFLAGS) + if "cpp_misc_flag" in w_str: + w_str = w_str.replace("cpp_misc_flag", CXXFLAGS) + if "c_link_misc_flag" in w_str: + w_str = w_str.replace("c_link_misc_flag", LFLAGS) + if "cpp_link_misc_flag" in w_str: + w_str = w_str.replace("cpp_link_misc_flag", LFLAGS) + + dir_name = os.path.dirname(output_file_path) + if not os.path.exists(dir_name): + os.makedirs(dir_name) + with open(output_file_path, 'w') as f: + f.write(w_str) + return True + except Exception as e: + return False + + +def gen_project_file(output_file_path): + try: + w_str = project_temp + dir_name = os.path.dirname(output_file_path) + if not os.path.exists(dir_name): + os.makedirs(dir_name) + with open(output_file_path, 'w') as f: + f.write(w_str) + return True + except Exception as e: + return False + + +def gen_projcfg_ini_file(chip_name, project_name, output_file_path): + try: + projcfg_file_tmp = Template(projcfg_ini_temp) + w_str = projcfg_file_tmp.substitute(project_name=project_name, + chip_name=(chip_name)) + + dir_name = os.path.dirname(output_file_path) + if not os.path.exists(dir_name): + os.makedirs(dir_name) + with open(output_file_path, 'w') as f: + f.write(w_str) + return True + except Exception as e: + return False -- cgit v1.3.1