public.mk 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400
  1. #------------------------------------------------------------------------------
  2. # BSP "PUBLIC" MAKEFILE CONTENT
  3. #
  4. # This file is intended to be included in an application or library
  5. # Makefile that is using this BSP. You can create such a Makefile with
  6. # the nios2-app-generate-makefile or nios2-lib-generate-makefile
  7. # commands.
  8. #
  9. # The following variables must be defined before including this file:
  10. #
  11. # ALT_LIBRARY_ROOT_DIR
  12. # Contains the path to the BSP top-level (aka root) directory
  13. #------------------------------------------------------------------------------
  14. #------------------------------------------------------------------------------
  15. # PATHS
  16. #------------------------------------------------------------------------------
  17. # Path to the provided linker script.
  18. BSP_LINKER_SCRIPT := $(ALT_LIBRARY_ROOT_DIR)/linker.x
  19. # Include paths:
  20. # The path to root of all header files that a library wishes to make
  21. # available for an application's use is specified here. Note that this
  22. # may not be *all* folders within a hierarchy. For example, if it is
  23. # desired that the application developer type:
  24. # #include <sockets.h>
  25. # #include <ip/tcpip.h>
  26. # With files laid out like this:
  27. # <root of library>/inc/sockets.h
  28. # <root of library>/inc/ip/tcpip.h
  29. #
  30. # Then, only <root of library>/inc need be added to the list of include
  31. # directories. Alternatively, if you wish to be able to directly include
  32. # all files in a hierarchy, separate paths to each folder in that
  33. # hierarchy must be defined.
  34. # The following are the "base" set of include paths for a BSP.
  35. # These paths are appended to the list that individual software
  36. # components, drivers, etc., add in the generated portion of this
  37. # file (below).
  38. ALT_INCLUDE_DIRS_TO_APPEND += \
  39. $(ALT_LIBRARY_ROOT_DIR) \
  40. $(ALT_LIBRARY_ROOT_DIR)/drivers/inc
  41. # Additions to linker library search-path:
  42. # Here we provide a path to "our self" for the application to construct a
  43. # "-L <path to BSP>" out of. This should contain a list of directories,
  44. # relative to the library root, of all directories with .a files to link
  45. # against.
  46. ALT_LIBRARY_DIRS += $(ALT_LIBRARY_ROOT_DIR)
  47. #------------------------------------------------------------------------------
  48. # COMPILATION FLAGS
  49. #------------------------------------------------------------------------------
  50. # Default C pre-processor flags for a BSP:
  51. ALT_CPPFLAGS += -pipe
  52. #------------------------------------------------------------------------------
  53. # MANAGED CONTENT
  54. #
  55. # All content between the lines "START MANAGED" and "END MANAGED" below is
  56. # generated based on variables in the BSP settings file when the
  57. # nios2-bsp-generate-files command is invoked. If you wish to persist any
  58. # information pertaining to the build process, it is recomended that you
  59. # utilize the BSP settings mechanism to do so.
  60. #------------------------------------------------------------------------------
  61. #START MANAGED
  62. # The following TYPE comment allows tools to identify the 'type' of target this
  63. # makefile is associated with.
  64. # TYPE: BSP_PUBLIC_MAKEFILE
  65. # This following VERSION comment indicates the version of the tool used to
  66. # generate this makefile. A makefile variable is provided for VERSION as well.
  67. # ACDS_VERSION: 18.1
  68. ACDS_VERSION := 18.1
  69. # This following BUILD_NUMBER comment indicates the build number of the tool
  70. # used to generate this makefile.
  71. # BUILD_NUMBER: 646
  72. # Qsys--generated SOPCINFO file. Required for resolving node instance ID's with
  73. # design component names.
  74. SOPCINFO_FILE := $(ABS_BSP_ROOT_DIR)/../../nios2_uc.sopcinfo
  75. # Big-Endian operation.
  76. # setting BIG_ENDIAN is false
  77. # BMX present.
  78. # setting BMX is false
  79. # Path to the provided C language runtime initialization code.
  80. BSP_CRT0 := $(ALT_LIBRARY_ROOT_DIR)/obj/HAL/src/crt0.o
  81. # Name of BSP library as provided to linker using the "-msys-lib" flag or
  82. # linker script GROUP command.
  83. # setting BSP_SYS_LIB is hal_bsp
  84. BSP_SYS_LIB := hal_bsp
  85. ELF_PATCH_FLAG += --thread_model hal
  86. # Type identifier of the BSP library
  87. # setting BSP_TYPE is hal
  88. ALT_CPPFLAGS += -D__hal__
  89. BSP_TYPE := hal
  90. # CDX present.
  91. # setting CDX is false
  92. # CPU Name
  93. # setting CPU_NAME is nios2
  94. CPU_NAME = nios2
  95. ELF_PATCH_FLAG += --cpu_name $(CPU_NAME)
  96. # Hardware Divider present.
  97. # setting HARDWARE_DIVIDE is false
  98. ALT_CFLAGS += -mno-hw-div
  99. # Hardware Multiplier present.
  100. # setting HARDWARE_MULTIPLY is false
  101. ALT_CFLAGS += -mno-hw-mul
  102. # Hardware Mulx present.
  103. # setting HARDWARE_MULX is false
  104. ALT_CFLAGS += -mno-hw-mulx
  105. # Debug Core present.
  106. # setting HAS_DEBUG_CORE is true
  107. CPU_HAS_DEBUG_CORE = 1
  108. # Qsys generated design
  109. # setting QSYS is 1
  110. QSYS := 1
  111. ELF_PATCH_FLAG += --qsys true
  112. # Design Name
  113. # setting SOPC_NAME is nios2_uc
  114. SOPC_NAME := nios2_uc
  115. # SopcBuilder Simulation Enabled
  116. # setting SOPC_SIMULATION_ENABLED is false
  117. ELF_PATCH_FLAG += --simulation_enabled false
  118. # Enable JTAG UART driver to recover when host is inactive causing buffer to
  119. # full without returning error. Printf will not fail with this recovery. none
  120. # setting altera_avalon_jtag_uart_driver.enable_jtag_uart_ignore_fifo_full_error is false
  121. # Small-footprint (polled mode) driver none
  122. # setting altera_avalon_jtag_uart_driver.enable_small_driver is false
  123. # Build a custom version of newlib with the specified space-separated compiler
  124. # flags. The custom newlib build will be placed in the <bsp root>/newlib
  125. # directory, and will be used only for applications that utilize this BSP.
  126. # setting hal.custom_newlib_flags is none
  127. # Enable support for a subset of the C++ language. This option increases code
  128. # footprint by adding support for C++ constructors. Certain features, such as
  129. # multiple inheritance and exceptions are not supported. If false, adds
  130. # -DALT_NO_C_PLUS_PLUS to ALT_CPPFLAGS in public.mk, and reduces code
  131. # footprint. none
  132. # setting hal.enable_c_plus_plus is true
  133. # When your application exits, close file descriptors, call C++ destructors,
  134. # etc. Code footprint can be reduced by disabling clean exit. If disabled, adds
  135. # -DALT_NO_CLEAN_EXIT to ALT_CPPFLAGS -D'exit(a)=_exit(a)' in public.mk. none
  136. # setting hal.enable_clean_exit is true
  137. # Add exit() support. This option increases code footprint if your "main()"
  138. # routine does "return" or call "exit()". If false, adds -DALT_NO_EXIT to
  139. # ALT_CPPFLAGS in public.mk, and reduces footprint none
  140. # setting hal.enable_exit is true
  141. # Causes code to be compiled with gprof profiling enabled and the application
  142. # ELF to be linked with the GPROF library. If true, adds -DALT_PROVIDE_GMON to
  143. # ALT_CPPFLAGS and -pg to ALT_CFLAGS in public.mk. none
  144. # setting hal.enable_gprof is false
  145. # Enables lightweight device driver API. This reduces code and data footprint
  146. # by removing the HAL layer that maps device names (e.g. /dev/uart0) to file
  147. # descriptors. Instead, driver routines are called directly. The open(),
  148. # close(), and lseek() routines will always fail if called. The read(),
  149. # write(), fstat(), ioctl(), and isatty() routines only work for the stdio
  150. # devices. If true, adds -DALT_USE_DIRECT_DRIVERS to ALT_CPPFLAGS in public.mk.
  151. # The Altera Host and read-only ZIP file systems can't be used if
  152. # hal.enable_lightweight_device_driver_api is true.
  153. # setting hal.enable_lightweight_device_driver_api is false
  154. # Adds code to emulate multiply and divide instructions in case they are
  155. # executed but aren't present in the CPU. Normally this isn't required because
  156. # the compiler won't use multiply and divide instructions that aren't present
  157. # in the CPU. If false, adds -DALT_NO_INSTRUCTION_EMULATION to ALT_CPPFLAGS in
  158. # public.mk. none
  159. # setting hal.enable_mul_div_emulation is false
  160. ALT_CPPFLAGS += -DALT_NO_INSTRUCTION_EMULATION
  161. # Certain drivers are compiled with reduced functionality to reduce code
  162. # footprint. Not all drivers observe this setting. The altera_avalon_uart and
  163. # altera_avalon_jtag_uart drivers switch from interrupt-driven to polled
  164. # operation. CAUTION: Several device drivers are disabled entirely. These
  165. # include the altera_avalon_cfi_flash, altera_avalon_epcs_flash_controller, and
  166. # altera_avalon_lcd_16207 drivers. This can result in certain API (HAL flash
  167. # access routines) to fail. You can define a symbol provided by each driver to
  168. # prevent it from being removed. If true, adds -DALT_USE_SMALL_DRIVERS to
  169. # ALT_CPPFLAGS in public.mk. none
  170. # setting hal.enable_reduced_device_drivers is false
  171. # Turns on HAL runtime stack checking feature. Enabling this setting causes
  172. # additional code to be placed into each subroutine call to generate an
  173. # exception if a stack collision occurs with the heap or statically allocated
  174. # data. If true, adds -DALT_STACK_CHECK and -fstack-limit-register=et to
  175. # ALT_CPPFLAGS in public.mk. none
  176. # setting hal.enable_runtime_stack_checking is false
  177. # The BSP is compiled with optimizations to speedup HDL simulation such as
  178. # initializing the cache, clearing the .bss section, and skipping long delay
  179. # loops. If true, adds -DALT_SIM_OPTIMIZE to ALT_CPPFLAGS in public.mk. When
  180. # this setting is true, the BSP shouldn't be used to build applications that
  181. # are expected to run real hardware.
  182. # setting hal.enable_sim_optimize is false
  183. # Causes the small newlib (C library) to be used. This reduces code and data
  184. # footprint at the expense of reduced functionality. Several newlib features
  185. # are removed such as floating-point support in printf(), stdin input routines,
  186. # and buffered I/O. The small C library is not compatible with Micrium
  187. # MicroC/OS-II. If true, adds -msmallc to ALT_LDFLAGS in public.mk. none
  188. # setting hal.enable_small_c_library is false
  189. # Enable SOPC Builder System ID. If a System ID SOPC Builder component is
  190. # connected to the CPU associated with this BSP, it will be enabled in the
  191. # creation of command-line arguments to download an ELF to the target.
  192. # Otherwise, system ID and timestamp values are left out of public.mk for
  193. # application Makefile "download-elf" target definition. With the system ID
  194. # check disabled, the Nios II EDS tools will not automatically ensure that the
  195. # application .elf file (and BSP it is linked against) corresponds to the
  196. # hardware design on the target. If false, adds --accept-bad-sysid to
  197. # SOPC_SYSID_FLAG in public.mk. none
  198. # setting hal.enable_sopc_sysid_check is true
  199. # C/C++ compiler to generate (do not generate) GP-relative accesses. 'none'
  200. # tells the compilter not to generate GP-relative accesses. 'local' will
  201. # generate GP-relative accesses for small data objects that are not external,
  202. # weak, or uninitialized common symbols. Also use GP-relative addressing for
  203. # objects that have been explicitly placed in a small data section via a
  204. # section attribute. provides the default set of debug symbols typically
  205. # required to debug a typical application. 'global' is same as 'local' but also
  206. # generate GP-relative accesses for small data objects that are external, weak,
  207. # or common. none
  208. # setting hal.make.cflags_mgpopt is -mgpopt=global
  209. ALT_CFLAGS += -mgpopt=global
  210. # Enable BSP generation to query if SOPC system is big endian. If true ignores
  211. # export of 'ALT_CFLAGS += -meb' to public.mk if big endian system. none
  212. # setting hal.make.ignore_system_derived.big_endian is false
  213. # If true, prevents GCC from using BMX instructions. If false, GCC uses BMX
  214. # instructions if present in the CPU. none
  215. # setting hal.make.ignore_system_derived.bmx_present is false
  216. # If true, prevents GCC from using CDX instructions. If false, GCC uses CDX
  217. # instructions if present in the CPU. none
  218. # setting hal.make.ignore_system_derived.cdx_present is false
  219. # Enable BSP generation to query if SOPC system has a debug core present. If
  220. # true ignores export of 'CPU_HAS_DEBUG_CORE = 1' to public.mk if a debug core
  221. # is found in the system. If true ignores export of 'CPU_HAS_DEBUG_CORE = 0' if
  222. # no debug core is found in the system. none
  223. # setting hal.make.ignore_system_derived.debug_core_present is false
  224. # Enable BSP generation to query if SOPC system has FPU present. If true
  225. # ignores export of 'ALT_CFLAGS += -mhard-float' to public.mk if FPU is found
  226. # in the system. If true ignores export of 'ALT_CFLAGS += -mhard-soft' if FPU
  227. # is not found in the system. none
  228. # setting hal.make.ignore_system_derived.fpu_present is false
  229. # Enable BSP generation to query if SOPC system has hardware divide present. If
  230. # true ignores export of 'ALT_CFLAGS += -mno-hw-div' to public.mk if no
  231. # division is found in system. If true ignores export of 'ALT_CFLAGS +=
  232. # -mhw-div' if division is found in the system. none
  233. # setting hal.make.ignore_system_derived.hardware_divide_present is false
  234. # Enable BSP generation to query if SOPC system floating point custom
  235. # instruction with a divider is present. If true ignores export of 'ALT_CFLAGS
  236. # += -mcustom-fpu-cfg=60-2' and 'ALT_LDFLAGS += -mcustom-fpu-cfg=60-2' to
  237. # public.mk if the custom instruction is found in the system. none
  238. # setting hal.make.ignore_system_derived.hardware_fp_cust_inst_divider_present is false
  239. # Enable BSP generation to query if SOPC system floating point custom
  240. # instruction without a divider is present. If true ignores export of
  241. # 'ALT_CFLAGS += -mcustom-fpu-cfg=60-1' and 'ALT_LDFLAGS +=
  242. # -mcustom-fpu-cfg=60-1' to public.mk if the custom instruction is found in the
  243. # system. none
  244. # setting hal.make.ignore_system_derived.hardware_fp_cust_inst_no_divider_present is false
  245. # Enable BSP generation to query if SOPC system has multiplier present. If true
  246. # ignores export of 'ALT_CFLAGS += -mno-hw-mul' to public.mk if no multiplier
  247. # is found in the system. If true ignores export of 'ALT_CFLAGS += -mhw-mul' if
  248. # multiplier is found in the system. none
  249. # setting hal.make.ignore_system_derived.hardware_multiplier_present is false
  250. # Enable BSP generation to query if SOPC system has hardware mulx present. If
  251. # true ignores export of 'ALT_CFLAGS += -mno-hw-mulx' to public.mk if no mulx
  252. # is found in the system. If true ignores export of 'ALT_CFLAGS += -mhw-mulx'
  253. # if mulx is found in the system. none
  254. # setting hal.make.ignore_system_derived.hardware_mulx_present is false
  255. # Enable BSP generation to query if SOPC system has simulation enabled. If true
  256. # ignores export of 'ELF_PATCH_FLAG += --simulation_enabled' to public.mk. none
  257. # setting hal.make.ignore_system_derived.sopc_simulation_enabled is false
  258. # Enable BSP generation to query SOPC system for system ID base address. If
  259. # true ignores export of 'SOPC_SYSID_FLAG += --sidp=<address>' and
  260. # 'ELF_PATCH_FLAG += --sidp=<address>' to public.mk. none
  261. # setting hal.make.ignore_system_derived.sopc_system_base_address is false
  262. # Enable BSP generation to query SOPC system for system ID. If true ignores
  263. # export of 'SOPC_SYSID_FLAG += --id=<sysid>' and 'ELF_PATCH_FLAG +=
  264. # --id=<sysid>' to public.mk. none
  265. # setting hal.make.ignore_system_derived.sopc_system_id is false
  266. # Enable BSP generation to query SOPC system for system timestamp. If true
  267. # ignores export of 'SOPC_SYSID_FLAG += --timestamp=<timestamp>' and
  268. # 'ELF_PATCH_FLAG += --timestamp=<timestamp>' to public.mk. none
  269. # setting hal.make.ignore_system_derived.sopc_system_timestamp is false
  270. # Slave descriptor of STDERR character-mode device. This setting is used by the
  271. # ALT_STDERR family of defines in system.h. none
  272. # setting hal.stderr is jtag_uart
  273. ELF_PATCH_FLAG += --stderr_dev jtag_uart
  274. # Slave descriptor of STDIN character-mode device. This setting is used by the
  275. # ALT_STDIN family of defines in system.h. none
  276. # setting hal.stdin is jtag_uart
  277. ELF_PATCH_FLAG += --stdin_dev jtag_uart
  278. # Slave descriptor of STDOUT character-mode device. This setting is used by the
  279. # ALT_STDOUT family of defines in system.h. none
  280. # setting hal.stdout is jtag_uart
  281. ELF_PATCH_FLAG += --stdout_dev jtag_uart
  282. #------------------------------------------------------------------------------
  283. # SOFTWARE COMPONENT & DRIVER INCLUDE PATHS
  284. #------------------------------------------------------------------------------
  285. ALT_INCLUDE_DIRS += $(ALT_LIBRARY_ROOT_DIR)/HAL/inc
  286. #------------------------------------------------------------------------------
  287. # SOFTWARE COMPONENT & DRIVER PRODUCED ALT_CPPFLAGS ADDITIONS
  288. #------------------------------------------------------------------------------
  289. ALT_CPPFLAGS += -DALT_SINGLE_THREADED
  290. #END MANAGED
  291. #------------------------------------------------------------------------------
  292. # LIBRARY INFORMATION
  293. #------------------------------------------------------------------------------
  294. # Assemble the name of the BSP *.a file using the BSP library name
  295. # (BSP_SYS_LIB) in generated content above.
  296. BSP_LIB := lib$(BSP_SYS_LIB).a
  297. # Additional libraries to link against:
  298. # An application including this file will prefix each library with "-l".
  299. # For example, to include the Newlib math library "m" is included, which
  300. # becomes "-lm" when linking the application.
  301. ALT_LIBRARY_NAMES += m
  302. # Additions to linker dependencies:
  303. # An application Makefile will typically add these directly to the list
  304. # of dependencies required to build the executable target(s). The BSP
  305. # library (*.a) file is specified here.
  306. ALT_LDDEPS += $(ALT_LIBRARY_ROOT_DIR)/$(BSP_LIB)
  307. # Is this library "Makeable"?
  308. # Add to list of root library directories that support running 'make'
  309. # to build them. Because libraries may or may not have a Makefile in their
  310. # root, appending to this variable tells an application to run 'make' in
  311. # the library root to build/update this library.
  312. MAKEABLE_LIBRARY_ROOT_DIRS += $(ALT_LIBRARY_ROOT_DIR)
  313. # Additional Assembler Flags
  314. # -gdwarf2 flag is required for stepping through assembly code
  315. ALT_ASFLAGS += -gdwarf2
  316. #------------------------------------------------------------------------------
  317. # FINAL INCLUDE PATH LIST
  318. #------------------------------------------------------------------------------
  319. # Append static include paths to paths specified by OS/driver/sw package
  320. # additions to the BSP thus giving them precedence in case a BSP addition
  321. # is attempting to override BSP sources.
  322. ALT_INCLUDE_DIRS += $(ALT_INCLUDE_DIRS_TO_APPEND)