rtconfig.py 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  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 = 'rk3562'
  29. ARCH = 'aarch64'
  30. CPU = 'cortex-a53'
  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 = 'aarch64-none-elf-'
  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=armv8-a '
  54. TARGET_PROCESSOR += '-mtune=cortex-a53 '
  55. #-------------------------------------------------------------------------------
  56. # Common parameter
  57. #-------------------------------------------------------------------------------
  58. OPTIMIZATION = '-ftree-vectorize '
  59. OPTIMIZATION += '-ffast-math '
  60. if BUILD == 'debug':
  61. OPTIMIZATION += '-O0'
  62. else:
  63. OPTIMIZATION += '-O2'
  64. WARNINGS = '-Wall'
  65. DEBUGGINGS = '-gdwarf-2'
  66. COMMON_PREPROCESSOR = ''
  67. #-------------------------------------------------------------------------------
  68. # Assembler parameter
  69. #-------------------------------------------------------------------------------
  70. ASM_PREPROCESSOR = COMMON_PREPROCESSOR + ''
  71. ASM_INCLUDES = []
  72. ASM_FLAGS = '-c -x assembler-with-cpp -D__ASSEMBLY__'
  73. #-------------------------------------------------------------------------------
  74. # C compiler parameter
  75. #-------------------------------------------------------------------------------
  76. C_PREPROCESSOR = COMMON_PREPROCESSOR + ''
  77. C_INCLUDES = []
  78. C_FLAGS = ''
  79. C_FLAGS += ' -fno-omit-frame-pointer'
  80. C_FLAGS += ' -funwind-tables'
  81. C_FLAGS += ' -fasynchronous-unwind-tables'
  82. #-------------------------------------------------------------------------------
  83. # C++ compiler parameter
  84. #-------------------------------------------------------------------------------
  85. CXX_PREPROCESSOR = COMMON_PREPROCESSOR + ''
  86. CXX_INCLUDES = []
  87. CXX_FLAGS = ''
  88. #-------------------------------------------------------------------------------
  89. # Linker parameter
  90. #-------------------------------------------------------------------------------
  91. LINKER_GENERAL = '-Wl,--gc-sections,-cref,-u,system_vectors,--no-warn-rwx-segments '
  92. if not os.path.isdir('rt-thread'):
  93. LINKER_GENERAL += '-T ../../platform/lds/link.lds'
  94. else:
  95. LINKER_GENERAL += '-T platform/lds/link.lds'
  96. LINKER_LIBRARIES = ''
  97. LINKER_MISCELLANEOUS = '-Wl,-Map=build/%s.map' % (TARGET_NAME)
  98. #-------------------------------------------------------------------------------
  99. # Image parameter
  100. #-------------------------------------------------------------------------------
  101. FLASH_IMAGE_GENERAL = '-O binary'
  102. #-------------------------------------------------------------------------------
  103. # Print Size parameter
  104. #-------------------------------------------------------------------------------
  105. PRINT_SIZE_GENERAL = '--format=berkeley'
  106. #-------------------------------------------------------------------------------
  107. # CIC Parameter handling
  108. #-------------------------------------------------------------------------------
  109. COMMON = [TARGET_PROCESSOR, WARNINGS, DEBUGGINGS]
  110. COMPILER_CONFIGS = {
  111. 'ASM' : COMMON + [ASM_PREPROCESSOR, ASM_INCLUDES, ASM_FLAGS],
  112. 'C' : COMMON + [OPTIMIZATION, C_PREPROCESSOR, C_INCLUDES, C_FLAGS],
  113. 'CXX' : COMMON + [OPTIMIZATION, CXX_PREPROCESSOR, CXX_INCLUDES, CXX_FLAGS],
  114. 'Link' : [TARGET_PROCESSOR,
  115. LINKER_GENERAL, LINKER_LIBRARIES, LINKER_MISCELLANEOUS]
  116. }
  117. AFLAGS, CFLAGS, CXXFLAGS, LFLAGS = (
  118. cic_gen_parameters(config)
  119. for config in COMPILER_CONFIGS.values()
  120. )
  121. #-------------------------------------------------------------------------------
  122. # IDE linked resources
  123. #-------------------------------------------------------------------------------
  124. LINKEDRESOURCES = []
  125. #-------------------------------------------------------------------------------
  126. # Post-compile behavior
  127. #-------------------------------------------------------------------------------
  128. POST_ACTION = '%s -O binary build/%s build/%s\n' % \
  129. (OBJCPY, TARGET, TARGET_NAME + '.bin')
  130. POST_ACTION += '%s build/%s\n' % (SIZE, TARGET)
  131. POST_ACTION_IDE = 'scons -C ../ --app_pkg=${ConfigName}'