CMakeLists.txt 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. cmake_minimum_required(VERSION 3.16...3.24)
  2. set(CMAKE_BUILD_TYPE Debug)
  3. set(CMAKE_VERBOSE_MAKEFILE 0)
  4. set(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY")
  5. set(CMAKE_C_COMPILER arm-none-eabi-gcc) #tested with: clang, arm-none-eabi-gcc
  6. set(CMAKE_SYSROOT "/opt/gcc-arm-none-eabi/arm-none-eabi")
  7. set(ARM_CORTEXM_MULTI_DIR "/opt/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard")
  8. set(ARM_CORTEXM_BUILTINS_DIR "/opt/gcc-arm-none-eabi/lib/gcc/arm-none-eabi/11.2.1/thumb/v7e-m+fp/hard")
  9. set(SRC_FILES
  10. USB_Device/Target/usbd_conf.c
  11. USB_Device/App/usb_device.c
  12. USB_Device/App/usbd_cdc_if.c
  13. USB_Device/App/usbd_desc.c
  14. Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c
  15. Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM33_NTZ/non_secure/port.c
  16. Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM33_NTZ/non_secure/portasm.c
  17. Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c
  18. Middlewares/Third_Party/FreeRTOS/Source/croutine.c
  19. Middlewares/Third_Party/FreeRTOS/Source/event_groups.c
  20. Middlewares/Third_Party/FreeRTOS/Source/list.c
  21. Middlewares/Third_Party/FreeRTOS/Source/queue.c
  22. Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c
  23. Middlewares/Third_Party/FreeRTOS/Source/tasks.c
  24. Middlewares/Third_Party/FreeRTOS/Source/timers.c
  25. Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c
  26. Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c
  27. Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c
  28. Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c
  29. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal.c
  30. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_adc.c
  31. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_adc_ex.c
  32. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_cortex.c
  33. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_dma.c
  34. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_dma_ex.c
  35. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_exti.c
  36. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_fdcan.c
  37. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_flash.c
  38. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_flash_ex.c
  39. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_flash_ramfunc.c
  40. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_gpio.c
  41. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_gtzc.c
  42. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_i2c.c
  43. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_i2c_ex.c
  44. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_icache.c
  45. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_pcd.c
  46. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_pcd_ex.c
  47. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_pwr.c
  48. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_pwr_ex.c
  49. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_rcc.c
  50. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_rcc_ex.c
  51. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_spi.c
  52. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_spi_ex.c
  53. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_sram.c
  54. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_tim.c
  55. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_tim_ex.c
  56. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_uart.c
  57. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_hal_uart_ex.c
  58. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_ll_fmc.c
  59. Drivers/STM32L5xx_HAL_Driver/Src/stm32l5xx_ll_usb.c
  60. Core/Startup/startup_stm32l552zetx.s
  61. Core/Src/sc03mpd/sc03mpd.c
  62. Core/Src/ImC/decoder.c
  63. Core/Src/ImC/imc_api.c
  64. Core/Src/ImC/imc_kernel.c
  65. # Core/Src/ImC/uartBufferIT.c
  66. Core/Src/app_freertos.c
  67. Core/Src/main.c
  68. Core/Src/stm32l5xx_hal_msp.c
  69. Core/Src/stm32l5xx_hal_timebase_tim.c
  70. Core/Src/stm32l5xx_it.c
  71. Core/Src/syscalls.c
  72. Core/Src/sysmem.c
  73. Core/Src/system_stm32l5xx.c
  74. )
  75. include_directories(
  76. Core/Inc
  77. Drivers/STM32L5xx_HAL_Driver/Inc
  78. Drivers/STM32L5xx_HAL_Driver/Inc/Legacy
  79. Drivers/CMSIS/Device/ST/STM32L5xx/Include
  80. Drivers/CMSIS/Include
  81. USB_Device/App
  82. USB_Device/Target
  83. Middlewares/ST/STM32_USB_Device_Library/Core/Inc
  84. Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc
  85. Middlewares/Third_Party/FreeRTOS/Source/include
  86. Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2
  87. Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM33_NTZ/non_secure
  88. )
  89. # compile flags
  90. add_compile_definitions(USE_HAL_DRIVER STM32L552xx)
  91. set(CMAKE_SYSTEM_NAME Generic)
  92. set(CPU "-mcpu=cortex-m33")
  93. set(FPU "-mfpu=fpv5-sp-d16")
  94. set(FLOAT-ABI "-mfloat-abi=hard")
  95. set(MCU "${CPU} -mthumb ${FPU} ${FLOAT-ABI}")
  96. set(OPT "-O1")
  97. #set(C_FLAGS_NO_ASM "-g -gdwarf-2")
  98. set(C_FLAGS_NO_ASM )
  99. set(C_FLAGS_EXTRA "-Wall -Wno-char-subscripts -Wno-unused-function -Wno-unused-variable -Wno-unused-but-set-variable -nostdlib -fdata-sections -ffunction-sections")
  100. set(COMPILER_SPECIFIC_CFLAGS )
  101. if (CMAKE_C_COMPILER MATCHES "clang")
  102. set(TARGET-TRIPPLE "--target=arm-none-eabi --sysroot=${CMAKE_SYSROOT}")
  103. set(COMPILER_SPECIFIC_CFLAGS "${TARGET-TRIPPLE}")
  104. endif()
  105. set(COMMON_CC_FLAGS "${MCU} ${TARGET-TRIPPLE} ${OPT} ${C_FLAGS_EXTRA} ${COMPILER_SPECIFIC_CFLAGS}")
  106. set(CMAKE_C_FLAGS "${COMMON_CC_FLAGS} ${C_FLAGS_NO_ASM}")
  107. # asm options
  108. set(ASM_OPTIONS "-x assembler-with-cpp -Wno-null-character")
  109. set(CMAKE_ASM_FLAGS "${COMMON_CC_FLAGS} ${ASM_OPTIONS}")
  110. # linker options
  111. set(ARM_CORTEXM_BUILTINS "-L${ARM_CORTEXM_BUILTINS_DIR}")
  112. set(LD_ADDITIONAL_FILES "${ARM_CORTEXM_BUILTINS_DIR}/crti.o ${ARM_CORTEXM_BUILTINS_DIR}/crtn.o")
  113. set(LINKER_SCRIPT "${CMAKE_SOURCE_DIR}/STM32L552ZETX_FLASH.ld")
  114. set(LIBDIR "-L${ARM_CORTEXM_MULTI_DIR} ${ARM_CORTEXM_BUILTINS}")
  115. set(VERBOSE_LINKER_OUTPUT "") #-v for verbose output
  116. #set(LDFLAGS "${VERBOSE_LINKER_OUTPUT} -lc -lm -lnosys -lgcc -u _printf_float")
  117. set(LDFLAGS "${VERBOSE_LINKER_OUTPUT} -lc -lm -lnosys -lgcc")
  118. set(COMPILER_SPECIFIC_LDFLAGS )
  119. set(CMAKE_EXE_LINKER_FLAGS "${LD_ADDITIONAL_FILES} ${LIBDIR} ${LDFLAGS} ${COMPILER_SPECIFIC_LDFLAGS} -T ${LINKER_SCRIPT}")
  120. project(imc_freeRTOS C ASM)
  121. add_executable(imc_freeRTOS ${SRC_FILES})
  122. target_compile_options(imc_freeRTOS PRIVATE "-g")
  123. set_target_properties(imc_freeRTOS PROPERTIES LINK_DEPENDS ${LINKER_SCRIPT})