static_kernel.cmake 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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. # user configurations: use -D option to change these on command line
  6. set(IMC_INSERT_COMPILER_CHECKPOINTS 1 CACHE BOOL "")
  7. set(IMC_ENABLE_EXTENSION 0 CACHE BOOL "")
  8. set(IMC_USE_CHECKPOINT_PASS_COUNTER 1 CACHE BOOL "")
  9. set(IMC_USE_CHECKPOINT_VOLTAGE_CHECK 0 CACHE BOOL "")
  10. set(IMC_CHECKPOINT_PASS_COUNT 100 CACHE STRING "")
  11. # set(CMAKE_C_COMPILER arm-none-eabi-gcc) #tested with: clang, arm-none-eabi-gcc
  12. set(CMAKE_C_COMPILER /home/ybkim/workspace/imc/llvm/llvm-17/build/bin/clang)
  13. set(CMAKE_SYSROOT "/opt/gcc-arm-none-eabi/arm-none-eabi")
  14. set(ARM_CORTEXM_MULTI_DIR "/opt/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard")
  15. set(ARM_CORTEXM_BUILTINS_DIR "/opt/gcc-arm-none-eabi/lib/gcc/arm-none-eabi/11.2.1/thumb/v8-m.main+fp/hard")
  16. set(OPT_BIN /home/ybkim/workspace/imc/llvm/llvm-17/build/bin/opt)
  17. set(LLC_BIN /home/ybkim/workspace/imc/llvm/llvm-17/build/bin/llc)
  18. set(LLVM_OPT_PLUGIN /home/ybkim/workspace/imc/loop_duplication/build/lib/libImcInsertCheckpoints.so)
  19. set(SRC_FILES
  20. Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM33_NTZ/non_secure/port.c
  21. Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM33_NTZ/non_secure/portasm.c
  22. Middlewares/Third_Party/FreeRTOS/Source/tasks.c
  23. )
  24. include_directories(
  25. Core/Inc
  26. Drivers/STM32L5xx_HAL_Driver/Inc
  27. Drivers/STM32L5xx_HAL_Driver/Inc/Legacy
  28. Drivers/CMSIS/Device/ST/STM32L5xx/Include
  29. Drivers/CMSIS/Include
  30. USB_Device/App
  31. USB_Device/Target
  32. Middlewares/ST/STM32_USB_Device_Library/Core/Inc
  33. Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc
  34. Middlewares/Third_Party/FreeRTOS/Source/include
  35. Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2
  36. Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM33_NTZ/non_secure
  37. )
  38. # link_directories(
  39. # ${ARM_CORTEXM_BUILTINS_DIR}
  40. # ${ARM_CORTEXM_MULTI_DIR}
  41. # )
  42. # if(IMC_ENABLE_EXTENSION)
  43. # include(imc_extension.cmake)
  44. # add_compile_definitions(imcUSE_IMC_EXTENSION=1)
  45. # else()
  46. # add_compile_definitions(imcUSE_IMC_EXTENSION=0)
  47. # endif()
  48. # compile flags
  49. add_compile_definitions(USE_HAL_DRIVER STM32L552xx)
  50. set(CMAKE_SYSTEM_NAME Generic)
  51. set(CPU "-mcpu=cortex-m33")
  52. set(FPU "-mfpu=fpv5-sp-d16")
  53. set(FLOAT-ABI "-mfloat-abi=hard")
  54. set(MCU "${CPU} -mthumb ${FPU} ${FLOAT-ABI}")
  55. set(OPT "-O1")
  56. set(C_FLAGS_NO_ASM )
  57. set(C_FLAGS_EXTRA "-Wall -Wno-char-subscripts -Wno-unused-function -Wno-unused-variable -Wno-unused-but-set-variable -Wno-format -nostdlib -fdata-sections -ffunction-sections")
  58. set(COMPILER_SPECIFIC_CFLAGS )
  59. if (CMAKE_C_COMPILER MATCHES "clang")
  60. set(TARGET-TRIPPLE "--target=armv8m-none-eabi --sysroot=${CMAKE_SYSROOT}")
  61. set(COMPILER_SPECIFIC_CFLAGS "${TARGET-TRIPPLE}")
  62. endif()
  63. set(COMMON_CC_FLAGS "${MCU} ${TARGET-TRIPPLE} ${OPT} ${C_FLAGS_EXTRA} ${COMPILER_SPECIFIC_CFLAGS}")
  64. set(CMAKE_C_FLAGS "${COMMON_CC_FLAGS} ${C_FLAGS_NO_ASM}")
  65. # asm options
  66. set(ASM_OPTIONS "-x assembler-with-cpp -Wno-null-character")
  67. set(CMAKE_ASM_FLAGS "${COMMON_CC_FLAGS} ${ASM_OPTIONS}")
  68. # linker options
  69. # set(ARM_CORTEXM_BUILTINS "-L${ARM_CORTEXM_BUILTINS_DIR}")
  70. # set(LD_ADDITIONAL_FILES "${ARM_CORTEXM_BUILTINS_DIR}/crti.o ${ARM_CORTEXM_BUILTINS_DIR}/crtn.o ${IMC_LINK_OBJS}")
  71. # set(LINKER_SCRIPT "${CMAKE_SOURCE_DIR}/STM32L552ZETX_FLASH.ld")
  72. # set(CMAKE_EXE_LINKER_FLAGS "${LD_ADDITIONAL_FILES} -T ${LINKER_SCRIPT}")
  73. project(imc_freeRTOS C ASM)
  74. add_library(imc_freeRTOS ${SRC_FILES})
  75. # add_executable(imc_freeRTOS ${SRC_FILES})
  76. # target_compile_options(imc_freeRTOS PRIVATE "-g")
  77. # set_target_properties(imc_freeRTOS PROPERTIES LINK_DEPENDS ${LINKER_SCRIPT})