ua.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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. # remove repeat path
  30. paths = [i for i in set(CPPPATH)]
  31. CPPPATH = []
  32. for path in paths:
  33. if PrefixPath(RTT_ROOT, path):
  34. CPPPATH += ['RTT_ROOT + "/%s",' % _make_path_relative(RTT_ROOT, path).replace('\\', '/')]
  35. elif PrefixPath(BSP_ROOT, path):
  36. CPPPATH += ['BSP_ROOT + "/%s",' % _make_path_relative(RTT_ROOT, path).replace('\\', '/')]
  37. else:
  38. CPPPATH += ['"%s",' % path.replace('\\', '/')]
  39. CPPPATH.sort()
  40. ua.write('def GetCPPPATH(BSP_ROOT, RTT_ROOT):\n')
  41. ua.write('\tCPPPATH=[\n')
  42. for path in CPPPATH:
  43. ua.write('\t\t%s\n' % path)
  44. ua.write('\t]\n\n')
  45. ua.write('\treturn CPPPATH\n\n')
  46. if len(CPPDEFINES):
  47. CPPDEFINES = [i for i in set(CPPDEFINES)]
  48. ua.write('def GetCPPDEFINES():\n')
  49. ua.write('\tCPPDEFINES=%s\n' % str(CPPDEFINES))
  50. ua.write('\treturn CPPDEFINES\n\n')
  51. print CPPDEFINES