summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authortangzz98 <[email protected]>2022-09-14 03:49:05 -0400
committerGitHub <[email protected]>2022-09-14 03:49:05 -0400
commitcb7fd304ff64f19df56fa403a5199f072ddcebc7 (patch)
tree10d43575fe926f7c42efc70983fe19e62f36756c /tools
parent52e1d76254dc3ae7f5ebc1e4c1ca21586cd4ce76 (diff)
ESP32_C3 migrate to ESP-IDF package (#6427)
Diffstat (limited to 'tools')
-rw-r--r--tools/building.py9
-rw-r--r--tools/esp_idf.py48
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!')