1
0

ua.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import os
  2. import sys
  3. from utils import _make_path_relative
  4. def PrefixPath(prefix, path):
  5. path = os.path.abspath(path)
  6. prefix = os.path.abspath(prefix)
  7. if sys.platform == 'win32':
  8. prefix = prefix.lower()
  9. path = path.lower()
  10. if path.startswith(prefix):
  11. return True
  12. return False
  13. def PrepareUA(project, RTT_ROOT, BSP_ROOT):
  14. with open('rtua.py', 'w') as ua:
  15. # ua.write('import os\n')
  16. # ua.write('import sys\n')
  17. ua.write('\n')
  18. print RTT_ROOT
  19. CPPPATH = []
  20. CPPDEFINES = []
  21. for group in project:
  22. # get each include path
  23. if group.has_key('CPPPATH') and group['CPPPATH']:
  24. CPPPATH += group['CPPPATH']
  25. # get each group's definitions
  26. if group.has_key('CPPDEFINES') and group['CPPDEFINES']:
  27. CPPDEFINES += group['CPPDEFINES']
  28. if len(CPPPATH):
  29. # use absolute path
  30. for i in range(len(CPPPATH)):
  31. CPPPATH[i] = os.path.abspath(CPPPATH[i])
  32. # remove repeat path
  33. paths = [i for i in set(CPPPATH)]
  34. CPPPATH = []
  35. for path in paths:
  36. if PrefixPath(RTT_ROOT, path):
  37. CPPPATH += ['RTT_ROOT + "/%s",' % _make_path_relative(RTT_ROOT, path).replace('\\', '/')]
  38. elif PrefixPath(BSP_ROOT, path):
  39. CPPPATH += ['BSP_ROOT + "/%s",' % _make_path_relative(BSP_ROOT, path).replace('\\', '/')]
  40. else:
  41. CPPPATH += ['"%s",' % path.replace('\\', '/')]
  42. CPPPATH.sort()
  43. ua.write('def GetCPPPATH(BSP_ROOT, RTT_ROOT):\n')
  44. ua.write('\tCPPPATH=[\n')
  45. for path in CPPPATH:
  46. ua.write('\t\t%s\n' % path)
  47. ua.write('\t]\n\n')
  48. ua.write('\treturn CPPPATH\n\n')
  49. if len(CPPDEFINES):
  50. CPPDEFINES = [i for i in set(CPPDEFINES)]
  51. ua.write('def GetCPPDEFINES():\n')
  52. ua.write('\tCPPDEFINES=%s\n' % str(CPPDEFINES))
  53. ua.write('\treturn CPPDEFINES\n\n')
  54. print CPPDEFINES