pico_arm_clang_arm.cmake 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. # NOTE: THIS IS A WIP ONLY PICO_ARM_GCC IS CURRENTLY SUPPORTED
  2. # todo there is probably a more "cmake" way of doing this going thru the standard path with our "PICO" platform
  3. # i.e. CMake<Lang>Information and whatnot
  4. include(${CMAKE_CURRENT_LIST_DIR}/find_compiler.cmake)
  5. # include our Platform/PICO.cmake
  6. set(CMAKE_SYSTEM_NAME PICO)
  7. set(CMAKE_SYSTEM_PROCESSOR cortex-m0plus)
  8. # Find ARMClang.
  9. pico_find_compiler(PICO_COMPILER_CC armclang)
  10. pico_find_compiler(PICO_COMPILER_CXX armclang)
  11. pico_find_compiler(PICO_COMPILER_ASM armasm)
  12. set(PICO_COMPILER_ASM "${PICO_COMPILER_ASM}" CACHE INTERNAL "")
  13. pico_find_compiler(PICO_OBJCOPY llvm-objcopy)
  14. pico_find_compiler(PICO_OBJDUMP llvm-objdump)
  15. # Specify the cross compiler.
  16. set(CMAKE_C_COMPILER ${PICO_COMPILER_CC} CACHE FILEPATH "C compiler")
  17. set(CMAKE_CXX_COMPILER ${PICO_COMPILER_CXX} CACHE FILEPATH "C++ compiler")
  18. set(CMAKE_C_OUTPUT_EXTENSION .o)
  19. # todo should we be including CMakeASMInformation anyway - i guess that is host side
  20. set(CMAKE_ASM_COMPILER ${PICO_COMPILER_ASM} CACHE FILEPATH "ASM compiler")
  21. set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> -c <SOURCE>")
  22. set(CMAKE_INCLUDE_FLAG_ASM "-I")
  23. set(CMAKE_OBJCOPY ${PICO_OBJCOPY} CACHE FILEPATH "")
  24. set(CMAKE_OBJDUMP ${PICO_OBJDUMP} CACHE FILEPATH "")
  25. # Disable compiler checks.
  26. set(CMAKE_C_COMPILER_FORCED TRUE)
  27. set(CMAKE_CXX_COMPILER_FORCED TRUE)
  28. # Add target system root to cmake find path.
  29. get_filename_component(PICO_COMPILER_DIR "${PICO_COMPILER_CC}" DIRECTORY)
  30. get_filename_component(CMAKE_FIND_ROOT_PATH "${PICO_COMPILER_DIR}" DIRECTORY)
  31. # Look for includes and libraries only in the target system prefix.
  32. set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
  33. set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
  34. set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
  35. set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
  36. # todo move to platform/Generix-xxx
  37. set(ARM_CLANG_COMMON_FLAGS " --cpu=Cortex-M0plus")
  38. string(APPEND CMAKE_C_FLAGS_INIT "${ARM_CLANG_COMMON_FLAGS}")
  39. string(APPEND CMAKE_CXX_FLAGS_INIT "${ARM_CLANG_COMMON_FLAGS}")
  40. string(APPEND CMAKE_ASM_FLAGS_INIT "${ARM_CLANG_COMMON_FLAGS}")
  41. string(APPEND CMAKE_C_FLAGS_DEBUG_INIT "${ARM_CLANG_COMMON_FLAGS} -Og")
  42. string(APPEND CMAKE_CXX_FLAGS_DEBUG_INIT "${ARM_CLANG_COMMON_FLAGS} -Og")