esp_idf.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import os
  2. import re
  3. import utils
  4. from utils import _make_path_relative
  5. def GenerateCFiles(env,project):
  6. """
  7. Generate CMakeLists.txt files
  8. """
  9. info = utils.ProjectInfo(env)
  10. init_export = []
  11. main_component_dir = os.path.join(os.getcwd(), 'main')
  12. cm_file = open(os.path.join(main_component_dir, 'CMakeLists.txt'), 'w')
  13. if cm_file:
  14. cm_file.write("idf_component_register(\n")
  15. cm_file.write("\tSRCS\n")
  16. for group in project:
  17. for f in group['src']:
  18. path = _make_path_relative(main_component_dir, os.path.normpath(f.rfile().abspath))
  19. cm_file.write( "\t" + path.replace("\\", "/") + "\n" )
  20. src = open(f.rfile().abspath, 'r')
  21. for line in src.readlines():
  22. if re.match('INIT_(BOARD|PREV|DEVICE|COMPONENT|ENV|APP)_EXPORT\(.+\)', line):
  23. init_export.append(re.search('\(.+\)', line).group(0)[1:-1])
  24. src.close()
  25. cm_file.write("\n")
  26. cm_file.write("\tINCLUDE_DIRS\n")
  27. for i in info['CPPPATH']:
  28. path = _make_path_relative(main_component_dir, i)
  29. cm_file.write( "\t" + path.replace("\\", "/") + "\n")
  30. cm_file.write(")\n\n")
  31. print(init_export)
  32. n = len(init_export)
  33. if n:
  34. cm_file.write("target_link_libraries(${COMPONENT_LIB}\n")
  35. for i in range(n):
  36. cm_file.write("\tINTERFACE \"-u __rt_init_" + init_export[i] + "\"\n")
  37. cm_file.write(")\n")
  38. def ESPIDFProject(env,project):
  39. print('Update setting files for CMakeLists.txt...')
  40. GenerateCFiles(env,project)
  41. print('Done!')