CMakeLists.txt 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. # Copyright (c) 2024 HPMicro
  2. # SPDX-License-Identifier: BSD-3-Clause
  3. cmake_minimum_required(VERSION 3.0.0 FATAL_ERROR)
  4. # Define CONFIG_CUSTOM_RTOS_IRQ_STACK if there is need to change rtos's irq stack
  5. if(DEFINED CONFIG_CUSTOM_RTOS_IRQ_STACK)
  6. sdk_compile_definitions(-D__threadx_irq_stack_top=${CONFIG_CUSTOM_RTOS_IRQ_STACK})
  7. else()
  8. sdk_compile_definitions(-D__threadx_irq_stack_top=_stack)
  9. endif()
  10. sdk_compile_definitions(-DCONFIG_THREADX=1)
  11. sdk_compile_definitions(-DCONFIG_DISABLE_GLOBAL_IRQ_ON_STARTUP=1)
  12. sdk_compile_definitions(-DUSE_NONVECTOR_MODE=1)
  13. sdk_compile_definitions(-DTX_INCLUDE_USER_DEFINE_FILE=1)
  14. if(NOT DEFINED THREADX_ARCH)
  15. message(FATAL_ERROR "Error: THREADX_ARCH not defined")
  16. endif()
  17. if(NOT DEFINED THREADX_TOOLCHAIN)
  18. message(FATAL_ERROR "Error: THREADX_TOOLCHAIN not defined")
  19. endif()
  20. message(STATUS "THREADX_ARCH: ${THREADX_ARCH}")
  21. message(STATUS "THREADX_TOOLCHAIN: ${THREADX_TOOLCHAIN}")
  22. # If CONFIG_ECLIPSE_THREADX_TIMER_RESOURCE_MTIMER is defined, the mtimer is used to generate systic
  23. # Otherwise use the gptimer to generate systic
  24. if(NOT DEFINED CONFIG_ECLIPSE_THREADX_TIMER_RESOURCE_MTIMER)
  25. sdk_compile_definitions("-DportasmHAS_MTIME=0")
  26. else()
  27. sdk_compile_definitions("-DportasmHAS_MTIME=1")
  28. endif()
  29. # Define our target library and an alias for consumers
  30. # Pick up the port specific variables and apply them
  31. sdk_ses_inc(ports/riscv32/gnu/inc)
  32. sdk_gcc_inc(ports/riscv32/gnu/inc)
  33. sdk_iar_inc(ports/riscv32/iar/inc)
  34. sdk_ses_src(ports/riscv32/gnu/src/tx_thread_context_restore.S)
  35. sdk_ses_src(ports/riscv32/gnu/src/tx_thread_context_save.S)
  36. sdk_ses_src(ports/riscv32/gnu/src/tx_thread_interrupt_control.S)
  37. sdk_ses_src(ports/riscv32/gnu/src/tx_thread_schedule.S)
  38. sdk_ses_src(ports/riscv32/gnu/src/tx_thread_stack_build.S)
  39. sdk_ses_src(ports/riscv32/gnu/src/tx_thread_system_return.S)
  40. sdk_ses_src(ports/riscv32/gnu/src/tx_timer_interrupt.S)
  41. sdk_ses_src(ports/riscv32/gnu/src/tx_initialize_low_level.c)
  42. sdk_ses_src(ports/riscv32/gnu/src/tx_disable_isr.S)
  43. sdk_ses_src(ports/riscv32/gnu/src/portASM.S)
  44. sdk_gcc_src(ports/riscv32/gnu/src/tx_thread_context_restore.S)
  45. sdk_gcc_src(ports/riscv32/gnu/src/tx_thread_context_save.S)
  46. sdk_gcc_src(ports/riscv32/gnu/src/tx_thread_interrupt_control.S)
  47. sdk_gcc_src(ports/riscv32/gnu/src/tx_thread_schedule.S)
  48. sdk_gcc_src(ports/riscv32/gnu/src/tx_thread_stack_build.S)
  49. sdk_gcc_src(ports/riscv32/gnu/src/tx_thread_system_return.S)
  50. sdk_gcc_src(ports/riscv32/gnu/src/tx_timer_interrupt.S)
  51. sdk_gcc_src(ports/riscv32/gnu/src/tx_initialize_low_level.c)
  52. sdk_gcc_src(ports/riscv32/gnu/src/tx_disable_isr.S)
  53. sdk_gcc_src(ports/riscv32/gnu/src/portASM.S)
  54. sdk_iar_src(ports/riscv32/iar/src/tx_thread_context_restore.S)
  55. sdk_iar_src(ports/riscv32/iar/src/tx_thread_context_save.S)
  56. sdk_iar_src(ports/riscv32/iar/src/tx_thread_interrupt_control.S)
  57. sdk_iar_src(ports/riscv32/iar/src/tx_thread_schedule.S)
  58. sdk_iar_src(ports/riscv32/iar/src/tx_thread_stack_build.S)
  59. sdk_iar_src(ports/riscv32/iar/src/tx_thread_system_return.S)
  60. sdk_iar_src(ports/riscv32/iar/src/tx_timer_interrupt.S)
  61. sdk_iar_src(ports/riscv32/iar/src/tx_initialize_low_level.S)
  62. sdk_iar_src(ports/riscv32/iar/src/tx_disable_isr.S)
  63. sdk_iar_src(ports/riscv32/iar/src/portASM.S)
  64. add_subdirectory(ports/common)
  65. # Pick up the common stuff
  66. add_subdirectory(common)
  67. sdk_compile_definitions_ifdef(CONFIG_AZURE_RTOS_TRACE "-DTX_ENABLE_EVENT_TRACE=1")
  68. sdk_compile_definitions_ifdef(CONFIG_AZURE_RTOS_PROFILE "-DTX_EXECUTION_PROFILE_ENABLE=1")
  69. add_subdirectory_ifdef(CONFIG_AZURE_RTOS_PROFILE utility/execution_profile_kit)
  70. add_subdirectory_ifdef(CONFIG_ECLIPSE_THREADX_LOWPOWER utility/low_power)
  71. # Define the FreeRTOS adaptation layer
  72. add_library(freertos-threadx EXCLUDE_FROM_ALL)
  73. target_include_directories(freertos-threadx
  74. PUBLIC
  75. ${CMAKE_CURRENT_LIST_DIR}/utility/rtos_compatibility_layers/FreeRTOS
  76. )
  77. target_sources(freertos-threadx
  78. PRIVATE
  79. ${CMAKE_CURRENT_LIST_DIR}/utility/rtos_compatibility_layers/FreeRTOS/tx_freertos.c
  80. )
  81. target_link_libraries(freertos-threadx PUBLIC threadx)
  82. # # If the user provided an override, copy it to the custom directory
  83. # if (NOT TX_USER_FILE)
  84. # message(STATUS "Using default tx_user.h file")
  85. # set(TX_USER_FILE ${CMAKE_CURRENT_LIST_DIR}/common/inc/tx_user_sample.h)
  86. # else()
  87. # message(STATUS "Using custom tx_user.h file from ${TX_USER_FILE}")
  88. # endif()
  89. # # set include file path to place configure file
  90. # set(generated_file_path "${__build_dir}/generated")
  91. # set(CUSTOM_INC_DIR ${generated_file_path}/include)
  92. # message(STATUS "copy tx_user.h to " ${CUSTOM_INC_DIR})
  93. # configure_file(${TX_USER_FILE} ${CUSTOM_INC_DIR}/tx_user.h COPYONLY)
  94. # sdk_inc(${CUSTOM_INC_DIR})
  95. # Enable a build target that produces a ZIP file of all sources
  96. # set(CPACK_SOURCE_GENERATOR "ZIP")
  97. # set(CPACK_SOURCE_IGNORE_FILES
  98. # \\.git/
  99. # \\.github/
  100. # _build/
  101. # \\.git
  102. # \\.gitattributes
  103. # \\.gitignore
  104. # ".*~$"
  105. # )
  106. # set(CPACK_VERBATIM_VARIABLES YES)
  107. # include(CPack)