diff options
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/building.py | 9 | ||||
| -rw-r--r-- | tools/esp_idf.py | 48 |
2 files changed, 56 insertions, 1 deletions
diff --git a/tools/building.py b/tools/building.py index 680c6a55ab..8b8c0d82f9 100644 --- a/tools/building.py +++ b/tools/building.py @@ -186,7 +186,8 @@ def PrepareBuilding(env, root_directory, has_libcpu=False, remove_components = [ 'cmake':('gcc', 'gcc'), 'cmake-armclang':('keil', 'armclang'), 'xmake':('gcc', 'gcc'), - 'codelite' : ('gcc', 'gcc')} + 'codelite' : ('gcc', 'gcc'), + 'esp-idf': ('gcc', 'gcc')} tgt_name = GetOption('target') if tgt_name: @@ -857,10 +858,16 @@ def GenTargetProject(program = None): if GetOption('target') == 'cmake' or GetOption('target') == 'cmake-armclang': from cmake import CMakeProject CMakeProject(Env,Projects) + if GetOption('target') == 'xmake': from xmake import XMakeProject XMakeProject(Env, Projects) + if GetOption('target') == 'esp-idf': + from esp_idf import ESPIDFProject + ESPIDFProject(Env, Projects) + exit(0) + def EndBuilding(target, program = None): need_exit = False diff --git a/tools/esp_idf.py b/tools/esp_idf.py new file mode 100644 index 0000000000..2977b3a507 --- /dev/null +++ b/tools/esp_idf.py @@ -0,0 +1,48 @@ +import os +import re +import utils +from utils import _make_path_relative + +def GenerateCFiles(env,project): + """ + Generate CMakeLists.txt files + """ + info = utils.ProjectInfo(env) + init_export = [] + + main_component_dir = os.path.join(os.getcwd(), 'main') + cm_file = open(os.path.join(main_component_dir, 'CMakeLists.txt'), 'w') + if cm_file: + cm_file.write("idf_component_register(\n") + + cm_file.write("\tSRCS\n") + for group in project: + for f in group['src']: + path = _make_path_relative(main_component_dir, os.path.normpath(f.rfile().abspath)) + cm_file.write( "\t" + path.replace("\\", "/") + "\n" ) + src = open(f.rfile().abspath, 'r') + for line in src.readlines(): + if re.match('INIT_(BOARD|PREV|DEVICE|COMPONENT|ENV|APP)_EXPORT\(.+\)', line): + init_export.append(re.search('\(.+\)', line).group(0)[1:-1]) + src.close() + + cm_file.write("\n") + + cm_file.write("\tINCLUDE_DIRS\n") + for i in info['CPPPATH']: + path = _make_path_relative(main_component_dir, i) + cm_file.write( "\t" + path.replace("\\", "/") + "\n") + cm_file.write(")\n\n") + + print(init_export) + n = len(init_export) + if n: + cm_file.write("target_link_libraries(${COMPONENT_LIB}\n") + for i in range(n): + cm_file.write("\tINTERFACE \"-u __rt_init_" + init_export[i] + "\"\n") + cm_file.write(")\n") + +def ESPIDFProject(env,project): + print('Update setting files for CMakeLists.txt...') + GenerateCFiles(env,project) + print('Done!') |
