rtconfig.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. import os
  2. import SCons.Tool.MSCommon.vc
  3. # toolchains options
  4. ARCH='sim'
  5. #CROSS_TOOL='msvc' or 'gcc' or 'mingw'
  6. #'msvc' and 'mingw' are both for windows
  7. # 'gcc' is for linux
  8. CROSS_TOOL='msvc'
  9. if os.getenv('RTT_CC'):
  10. CROSS_TOOL = os.getenv('RTT_CC')
  11. # cross_tool provides the cross compiler
  12. # EXEC_PATH is the compiler execute path
  13. if CROSS_TOOL == 'gcc' or CROSS_TOOL == 'clang-analyze':
  14. CPU = 'posix'
  15. PLATFORM = 'gcc'
  16. EXEC_PATH = ''
  17. elif CROSS_TOOL == 'mingw':
  18. CPU = 'win32'
  19. PLATFORM = 'mingw'
  20. EXEC_PATH = r'D:\Program Files\CodeBlocks\MinGW\bin'
  21. elif CROSS_TOOL == 'msvc':
  22. CPU = 'win32'
  23. PLATFORM = 'cl'
  24. EXEC_PATH = ''
  25. vc_version = ''
  26. vc_versions = SCons.Tool.MSCommon.vc.get_installed_vcs()
  27. if not vc_versions:
  28. print("No vc version!")
  29. exit(1)
  30. else:
  31. vc_version = vc_versions[0]
  32. EXEC_PATH = SCons.Tool.MSCommon.vc.find_vc_pdir(vc_version)
  33. if not EXEC_PATH:
  34. print('Installed VC %s failure!' % vc_version)
  35. exit(1)
  36. else:
  37. print('Successfully installed VC %s, path:%s' % (vc_version, EXEC_PATH))
  38. else:
  39. print("bad CROSS TOOL!")
  40. exit(1)
  41. if os.getenv('RTT_EXEC_PATH'):
  42. EXEC_PATH = os.getenv('RTT_EXEC_PATH')
  43. BUILD = 'debug'
  44. #BUILD = ''
  45. if PLATFORM == 'gcc':
  46. # toolchains
  47. PREFIX = ''
  48. CC = PREFIX + 'gcc'
  49. AS = PREFIX + 'gcc'
  50. AR = PREFIX + 'ar'
  51. LINK = PREFIX + 'gcc'
  52. TARGET_EXT = 'elf'
  53. SIZE = PREFIX + 'size'
  54. OBJDUMP = PREFIX + 'objdump'
  55. OBJCPY = PREFIX + 'objcopy'
  56. DEVICE = ' -ffunction-sections -fdata-sections'
  57. DEVICE = ' '
  58. CFLAGS = DEVICE + ' -I/usr/include -w -D_REENTRANT -D_LINUX -DHAVE_SYS_SIGNALS'
  59. AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp'
  60. #LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread-linux.map -lpthread'
  61. LFLAGS = DEVICE + ' -Wl,-Map=rtthread-linux.map -pthread -T gcc.ld'
  62. CPATH = ''
  63. LPATH = ''
  64. if BUILD == 'debug':
  65. CFLAGS += ' -g -O0 -gdwarf-2'
  66. AFLAGS += ' -gdwarf-2'
  67. else:
  68. CFLAGS += ' -O2'
  69. POST_ACTION = ''
  70. elif PLATFORM == 'mingw':
  71. # toolchains
  72. PREFIX = ''
  73. CC = PREFIX + 'gcc'
  74. CXX = PREFIX + 'g++'
  75. AS = PREFIX + 'gcc'
  76. AR = PREFIX + 'ar'
  77. LINK = PREFIX + 'g++'
  78. TARGET_EXT = 'exe'
  79. SIZE = PREFIX + 'size'
  80. OBJDUMP = PREFIX + 'objdump'
  81. OBJCPY = PREFIX + 'objcopy'
  82. DEVICE = ''
  83. CFLAGS = DEVICE + ' -D_Win32 -DNO_OLDNAMES -fno-pic -fno-builtin -fno-exceptions -fno-omit-frame-pointer'
  84. AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp'
  85. LFLAGS = DEVICE + ' -static-libgcc -Wl,--gc-sections,-Map=rtthread-win32.map -T mingw.ld '
  86. CPATH = ''
  87. LPATH = ''
  88. if BUILD == 'debug':
  89. CFLAGS += ' -g -O0 -gdwarf-2'
  90. AFLAGS += ' -gdwarf-2'
  91. else:
  92. CFLAGS += ' -O2'
  93. CXXFLAGS = CFLAGS
  94. POST_ACTION = ''
  95. elif PLATFORM == 'cl':
  96. # toolchains
  97. PREFIX = ''
  98. TARGET_EXT = 'exe'
  99. AS = PREFIX + 'cl'
  100. CC = PREFIX + 'cl'
  101. AR = PREFIX + 'cl'
  102. LINK = PREFIX + 'cl'
  103. AFLAGS = ''
  104. CFLAGS = ''
  105. LFLAGS = ''
  106. if BUILD == 'debug':
  107. CFLAGS += ' /MTd'
  108. LFLAGS += ' /DEBUG'
  109. else:
  110. CFLAGS += ' /MT'
  111. LFLAGS += ''
  112. CFLAGS += ' /Zi /Od /W 3 /WL /D_Win32'
  113. LFLAGS += ' /SUBSYSTEM:CONSOLE /MACHINE:X86 /INCREMENTAL:NO'
  114. CPATH = ''
  115. LPATH = ''
  116. POST_ACTION = ''