MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / GenerateCFiles

Function GenerateCFiles

tools/targets/esp_idf.py:6–53  ·  view source on GitHub ↗

Generate CMakeLists.txt files

(env,project)

Source from the content-addressed store, hash-verified

4from utils import _make_path_relative
5
6def GenerateCFiles(env,project):
7 """
8 Generate CMakeLists.txt files
9 """
10 info = utils.ProjectInfo(env)
11 init_export = []
12
13 main_component_dir = os.path.join(os.getcwd(), 'main')
14 cm_file = open(os.path.join(main_component_dir, 'CMakeLists.txt'), 'w')
15 if cm_file:
16 cm_file.write("idf_component_register(\n")
17
18 cm_file.write("\tSRCS\n")
19 for group in project:
20 for f in group['src']:
21 path = _make_path_relative(main_component_dir, os.path.normpath(f.rfile().abspath))
22 cm_file.write( "\t" + path.replace("\\", "/") + "\n" )
23 src = open(f.rfile().abspath, 'r')
24 for line in src.readlines():
25 if re.match(r'INIT_(BOARD|PREV|DEVICE|COMPONENT|ENV|APP)_EXPORT\(.+\)', line):
26 init_export.append(re.search(r'\(.+\)', line).group(0)[1:-1])
27 src.close()
28
29 cm_file.write("\n")
30
31 cm_file.write("\tINCLUDE_DIRS\n")
32 for i in info['CPPPATH']:
33 path = _make_path_relative(main_component_dir, i)
34 cm_file.write( "\t" + path.replace("\\", "/") + "\n")
35 cm_file.write(")\n\n")
36
37 n = len(init_export)
38 if n:
39 cm_file.write("target_link_libraries(${COMPONENT_LIB}\n")
40 for i in range(n):
41 cm_file.write("\tINTERFACE \"-u __rt_init_" + init_export[i] + "\"\n")
42 cm_file.write(")\n")
43 cm_file.close()
44
45 cm_file = open('CMakeLists.txt', 'w')
46 if cm_file:
47 cm_file.write("cmake_minimum_required(VERSION 3.16)\n")
48 cm_file.write("set(COMPONENTS esptool_py main)\n")
49 cm_file.write("include($ENV{IDF_PATH}/tools/cmake/project.cmake)\n")
50 freertos_root = os.getcwd().replace('\\', '/') + '/packages/FreeRTOS_Wrapper-latest/FreeRTOS'
51 cm_file.write("set(freertos_root " + freertos_root + ')\n')
52 cm_file.write("project(rtthread)\n")
53 cm_file.close()
54
55def ESPIDFProject(env,project):
56 print('Update setting files for CMakeLists.txt...')

Callers 1

ESPIDFProjectFunction · 0.70

Calls 4

_make_path_relativeFunction · 0.90
openFunction · 0.50
joinMethod · 0.45
writeMethod · 0.45

Tested by

no test coverage detected