summaryrefslogtreecommitdiff
path: root/tools/esp_idf.py
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/esp_idf.py
parent52e1d76254dc3ae7f5ebc1e4c1ca21586cd4ce76 (diff)
ESP32_C3 migrate to ESP-IDF package (#6427)
Diffstat (limited to 'tools/esp_idf.py')
-rw-r--r--tools/esp_idf.py48
1 files changed, 48 insertions, 0 deletions
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!')