1
0

buildutil.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import os
  2. def GetStringFromConfig(bsp_dir, string):
  3. try:
  4. config = open(bsp_dir + '/rtconfig.h', 'r')
  5. except IOError:
  6. print('no found rtconfig.h, use scons --menuconfig before compile')
  7. else:
  8. cfg_list = config.readlines()
  9. for cfg in cfg_list:
  10. if cfg.find(string) != -1:
  11. target = cfg[cfg.find('"'):-1]
  12. target = eval(target)
  13. config.close()
  14. return target
  15. print('no found ' + string + ' in rtconfig.h, you must define this in kconfig of board')
  16. return ''
  17. def GetRTConfigOption(bsp_dir, option):
  18. value = False
  19. try:
  20. config = open(bsp_dir + '/rtconfig.h', 'r')
  21. except IOError:
  22. print('no found rtconfig.h, use scons --menuconfig before compile')
  23. else:
  24. cfg_list = config.readlines()
  25. for cfg in cfg_list:
  26. if cfg.find('#define ' + option) != -1:
  27. cfg = cfg.rstrip('\n')
  28. values = cfg.split(' ')
  29. if len(values) == 3:
  30. value = values[2]
  31. else:
  32. value = True
  33. config.close()
  34. return value
  35. return value
  36. def GetImageSetting(bsp_dir):
  37. board = GetStringFromConfig(bsp_dir, 'RT_BOARD_NAME')
  38. path = 'board/{dir}/setting.ini'.format(dir = board)
  39. if (bsp_dir.endswith('/') == False):
  40. bsp_dir += '/'
  41. if os.path.exists(bsp_dir + path) == True:
  42. return path
  43. else:
  44. return 'board/common/setting.ini'
  45. def ParsePartitionStart(bsp_dir, name):
  46. start = -1
  47. path = GetImageSetting(bsp_dir)
  48. configer = configparser.ConfigParser()
  49. configer.read(path)
  50. for section in configer.sections():
  51. if (configer.has_option(section, 'Name')):
  52. if configer.get(section, 'Name') == name:
  53. sector = int(configer.get(section, 'PartOffset'), 16)
  54. start = (sector + 1) * 512
  55. return start