rtconfig.py 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. #-*- encoding: utf-8 -*-
  2. #-------------------------------------------------------------------------------
  3. # SConscript
  4. # Copyright (c) Shanghai Real-Thread Electronic Technology Co., Ltd.
  5. #-------------------------------------------------------------------------------
  6. import os, sys
  7. import platform
  8. if os.path.isdir('rt-thread'):
  9. RTT_ROOT = 'rt-thread'
  10. elif os.path.isdir('../rt-thread'):
  11. RTT_ROOT = '../rt-thread'
  12. else:
  13. RTT_ROOT = os.path.join(os.getcwd(), '..', '..', '..', '..', '..')
  14. sys.path = sys.path + [os.path.abspath(os.path.join(RTT_ROOT, 'scripts'))]
  15. from cic import cic_gen_parameters
  16. from cic import cic_add_linked_resource
  17. #-------------------------------------------------------------------------------
  18. # System variables
  19. #-------------------------------------------------------------------------------
  20. TARGET_NAME = 'app'
  21. TARGET_EXT = 'elf'
  22. TARGET = TARGET_NAME + '.' + TARGET_EXT
  23. # BUILD = 'debug'
  24. BUILD = 'release'
  25. #-------------------------------------------------------------------------------
  26. # Architecture configuration
  27. #-------------------------------------------------------------------------------
  28. CHIP = 'rk3506'
  29. ARCH = 'arm'
  30. CPU = 'cortex-a'
  31. CROSS_TOOL = 'gcc'
  32. PLATFORM = 'gcc'
  33. EXEC_PATH = os.getenv('RTT_EXEC_PATH') or '/usr/bin'
  34. #-------------------------------------------------------------------------------
  35. # Toolchain configuration
  36. #-------------------------------------------------------------------------------
  37. PREFIX = 'arm-none-eabi-'
  38. CC = PREFIX + 'gcc'
  39. CXX = PREFIX + 'g++'
  40. CPP = PREFIX + 'cpp'
  41. AS = PREFIX + 'gcc'
  42. AR = PREFIX + 'ar'
  43. LINK = PREFIX + 'gcc'
  44. LD = PREFIX + 'ld'
  45. SIZE = PREFIX + 'size'
  46. STRIP = PREFIX + 'strip'
  47. OBJDUMP = PREFIX + 'objdump'
  48. OBJCPY = PREFIX + 'objcopy'
  49. DTC = 'dtc'
  50. #-------------------------------------------------------------------------------
  51. # Target processor
  52. #-------------------------------------------------------------------------------
  53. TARGET_PROCESSOR = '-march=armv7-a '
  54. TARGET_PROCESSOR += '-mtune=cortex-a7 '
  55. TARGET_PROCESSOR += '-mfpu=vfpv4 '
  56. TARGET_PROCESSOR += '-mfloat-abi=hard '
  57. #-------------------------------------------------------------------------------
  58. # Common parameter
  59. #-------------------------------------------------------------------------------
  60. OPTIMIZATION = '-ftree-vectorize '
  61. OPTIMIZATION += '-ffast-math '
  62. if BUILD == 'debug':
  63. OPTIMIZATION += '-O0'
  64. else:
  65. OPTIMIZATION += '-O2'
  66. WARNINGS = '-Wall'
  67. DEBUGGINGS = '-gdwarf-2'
  68. COMMON_PREPROCESSOR = ''
  69. #-------------------------------------------------------------------------------
  70. # Assembler parameter
  71. #-------------------------------------------------------------------------------
  72. ASM_PREPROCESSOR = COMMON_PREPROCESSOR + ''
  73. ASM_INCLUDES = []
  74. ASM_FLAGS = '-c -x assembler-with-cpp -D__ASSEMBLY__'
  75. #-------------------------------------------------------------------------------
  76. # C compiler parameter
  77. #-------------------------------------------------------------------------------
  78. C_PREPROCESSOR = COMMON_PREPROCESSOR + ''
  79. C_INCLUDES = []
  80. C_FLAGS = ''
  81. C_FLAGS += ' -fno-omit-frame-pointer'
  82. C_FLAGS += ' -funwind-tables'
  83. C_FLAGS += ' -fasynchronous-unwind-tables'
  84. #-------------------------------------------------------------------------------
  85. # C++ compiler parameter
  86. #-------------------------------------------------------------------------------
  87. CXX_PREPROCESSOR = COMMON_PREPROCESSOR + ''
  88. CXX_INCLUDES = []
  89. CXX_FLAGS = ''
  90. #-------------------------------------------------------------------------------
  91. # Linker parameter
  92. #-------------------------------------------------------------------------------
  93. LINKER_GENERAL = '-Wl,--gc-sections,-cref,-u,system_vectors '
  94. if not os.path.isdir('rt-thread'):
  95. LINKER_GENERAL += '-T ../../platform/lds/link.lds'
  96. else:
  97. LINKER_GENERAL += '-T platform/lds/link.lds'
  98. LINKER_LIBRARIES = ''
  99. LINKER_MISCELLANEOUS = '-Wl,-Map=build/%s.map' % (TARGET_NAME)
  100. #-------------------------------------------------------------------------------
  101. # Image parameter
  102. #-------------------------------------------------------------------------------
  103. FLASH_IMAGE_GENERAL = '-O binary'
  104. #-------------------------------------------------------------------------------
  105. # Print Size parameter
  106. #-------------------------------------------------------------------------------
  107. PRINT_SIZE_GENERAL = '--format=berkeley'
  108. #-------------------------------------------------------------------------------
  109. # CIC Parameter handling
  110. #-------------------------------------------------------------------------------
  111. COMMON = [TARGET_PROCESSOR, WARNINGS, DEBUGGINGS]
  112. COMPILER_CONFIGS = {
  113. 'ASM' : COMMON + [ASM_PREPROCESSOR, ASM_INCLUDES, ASM_FLAGS],
  114. 'C' : COMMON + [OPTIMIZATION, C_PREPROCESSOR, C_INCLUDES, C_FLAGS],
  115. 'CXX' : COMMON + [OPTIMIZATION, CXX_PREPROCESSOR, CXX_INCLUDES, CXX_FLAGS],
  116. 'Link' : [TARGET_PROCESSOR,
  117. LINKER_GENERAL, LINKER_LIBRARIES, LINKER_MISCELLANEOUS]
  118. }
  119. AFLAGS, CFLAGS, CXXFLAGS, LFLAGS = (
  120. cic_gen_parameters(config)
  121. for config in COMPILER_CONFIGS.values()
  122. )
  123. #-------------------------------------------------------------------------------
  124. # IDE linked resources
  125. #-------------------------------------------------------------------------------
  126. LINKEDRESOURCES = []
  127. #-------------------------------------------------------------------------------
  128. # Post-compile behavior
  129. #-------------------------------------------------------------------------------
  130. POST_ACTION = '%s -O binary build/%s build/%s\n' % \
  131. (OBJCPY, TARGET, TARGET_NAME + '.bin')
  132. POST_ACTION += '%s build/%s\n' % (SIZE, TARGET)
  133. POST_ACTION_IDE = 'scons -C ../ --app_pkg=${ConfigName}'