Generate CMakeLists.txt files
(env,project)
| 4 | from utils import _make_path_relative |
| 5 | |
| 6 | def 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 | |
| 55 | def ESPIDFProject(env,project): |
| 56 | print('Update setting files for CMakeLists.txt...') |
no test coverage detected