pico_arm_clang.cmake 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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 CLANG
  9. pico_find_compiler(PICO_COMPILER_CC clang)
  10. pico_find_compiler(PICO_COMPILER_CXX clang)
  11. #pico_find_compiler(PICO_COMPILER_ASM armasm)
  12. set(PICO_COMPILER_ASM "${PICO_COMPILER_CC}" 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. include_directories(/usr/include/newlib)
  37. # todo move to platform/Generix-xxx
  38. set(ARM_CLANG_COMMON_FLAGS " --target=arm-none-eabi -mcpu=cortex-m0plus -mthumb")
  39. set(CMAKE_C_FLAGS_INIT "${ARM_CLANG_COMMON_FLAGS}")
  40. set(CMAKE_CXX_FLAGS_INIT "${ARM_CLANG_COMMON_FLAGS}")
  41. set(CMAKE_ASM_FLAGS_INIT "${ARM_CLANG_COMMON_FLAGS}")
  42. set(CMAKE_C_FLAGS_DEBUG_INIT "${ARM_CLANG_COMMON_FLAGS} -Og")
  43. set(CMAKE_CXX_FLAGS_DEBUG_INIT "${ARM_CLANG_COMMON_FLAGS} -Og")