makefile.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. import os
  2. import sys
  3. from utils import *
  4. from utils import _make_path_relative
  5. import rtconfig
  6. def TargetMakefile(env):
  7. project = ProjectInfo(env)
  8. BSP_ROOT = os.path.abspath(env['BSP_ROOT'])
  9. RTT_ROOT = os.path.abspath(env['RTT_ROOT'])
  10. match_bsp = False
  11. if BSP_ROOT.startswith(RTT_ROOT):
  12. match_bsp = True
  13. make = open('config.mk', 'w')
  14. make.write('BSP_ROOT ?= %s\n' % BSP_ROOT.replace('\\', '\\\\'))
  15. make.write('RTT_ROOT ?= %s\n' % RTT_ROOT.replace('\\', '\\\\'))
  16. make.write('\n')
  17. cross = os.path.abspath(rtconfig.EXEC_PATH)
  18. cross = os.path.join(cross, rtconfig.PREFIX)
  19. make.write('CROSS_COMPILE ?=%s' % cross.replace('\\', '\\\\'))
  20. make.write('\n')
  21. make.write('\n')
  22. make.write('CFLAGS :=%s' % (rtconfig.CFLAGS))
  23. make.write('\n')
  24. make.write('AFLAGS :=%s' % (rtconfig.AFLAGS))
  25. make.write('\n')
  26. make.write('LFLAGS :=%s' % (rtconfig.LFLAGS))
  27. make.write('\n')
  28. if 'CXXFLAGS' in dir(rtconfig):
  29. make.write('CXXFLAGS :=%s' % (rtconfig.CXXFLAGS))
  30. make.write('\n')
  31. make.write('\n')
  32. Files = project['FILES']
  33. Headers = project['HEADERS']
  34. CPPDEFINES = project['CPPDEFINES']
  35. paths = [os.path.normpath(i) for i in project['CPPPATH']]
  36. CPPPATH = []
  37. for path in paths:
  38. fn = os.path.normpath(path)
  39. if match_bsp:
  40. if fn.startswith(BSP_ROOT):
  41. fn = '$(BSP_ROOT)' + fn.replace(BSP_ROOT, '')
  42. elif fn.startswith(RTT_ROOT):
  43. fn = '$(RTT_ROOT)' + fn.replace(RTT_ROOT, '')
  44. else:
  45. if fn.startswith(RTT_ROOT):
  46. fn = '$(RTT_ROOT)' + fn.replace(RTT_ROOT, '')
  47. elif fn.startswith(BSP_ROOT):
  48. fn = '$(BSP_ROOT)' + fn.replace(BSP_ROOT, '')
  49. CPPPATH.append(fn)
  50. path = ''
  51. paths = CPPPATH
  52. for item in paths:
  53. path += '\t-I%s \\\n' % item
  54. make.write('CPPPATHS :=')
  55. if path[0] == '\t': path = path[1:]
  56. length = len(path)
  57. if path[length - 2] == '\\': path = path[:length - 2]
  58. make.write(path)
  59. make.write('\n')
  60. make.write('\n')
  61. defines = ''
  62. for item in project['CPPDEFINES']:
  63. defines += ' -D%s' % item
  64. make.write('DEFINES :=')
  65. make.write(defines)
  66. make.write('\n')
  67. files = Files
  68. Files = []
  69. for file in files:
  70. fn = os.path.normpath(file)
  71. if match_bsp:
  72. if fn.startswith(BSP_ROOT):
  73. fn = '$(BSP_ROOT)' + fn.replace(BSP_ROOT, '')
  74. elif fn.startswith(RTT_ROOT):
  75. fn = '$(RTT_ROOT)' + fn.replace(RTT_ROOT, '')
  76. else:
  77. if fn.startswith(RTT_ROOT):
  78. fn = '$(RTT_ROOT)' + fn.replace(RTT_ROOT, '')
  79. elif fn.startswith(BSP_ROOT):
  80. fn = '$(BSP_ROOT)' + fn.replace(BSP_ROOT, '')
  81. Files.append(fn)
  82. # print(fn)
  83. src = open('src.mk', 'w')
  84. files = Files
  85. src.write('SRC_FILES :=\n')
  86. for item in files:
  87. src.write('SRC_FILES +=%s\n' % item)
  88. return