Advertisement
Guest User

compiler specifics

a guest
Dec 28th, 2018
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
CMake 1.80 KB | None | 0 0
  1. set(CMAKE_SYSTEM_NAME Generic)
  2. set(CMAKE_SYSTEM_PROCESSOR arm)
  3.  
  4. set(CMAKE_CXX_COMPILER clang++)
  5. set(CMAKE_CXX_COMPILER_TARGET clang++)
  6.  
  7. # utilities
  8. set(OBJCOPY llvm-objcopy)
  9. set(OBJDUMP llvm-objdump)
  10. set(SIZE llvm-size)
  11.  
  12. # setup C++17 required compiler standard
  13. set(CMAKE_CXX_STANDARD 17)
  14. set(CMAKE_CXX_STANDARD_REQUIRED on)
  15. set(CMAKE_CXX_EXTENSIONS off)
  16.  
  17. function (setup_custom_compiler_flags)
  18.     set(NRTI_FLAGS "-fno-rtti -fno-exceptions -fno-unwind-tables")
  19.     set(CLANG_FLAGS "-target thumbv7em-unkown-none-eabi")
  20.     set(ARCH_FLAGS "${CLANG_FLAGS} -march=armv7e-m -mcpu=cortex-m4")
  21.     set(TARGET_CFLAGS "${ARCH_FLAGS} -nostdinc -g")
  22.     set(TARGET_FLAGS "-mlittle-endian -nostdlib -fno-common -fno-pic")
  23.     set(COMMON_FLAGS "${NRTI_FLAGS} ${TARGET_FLAGS} ${TARGET_CFLAGS}")
  24.  
  25.     set(WARN_FLAGS "-Wall -Wextra")
  26.     set(OPTIMIZE_FLAGS "-ffreestanding -fomit-frame-pointer")
  27.  
  28.     set(EXTEND_FLAGS "${WARN_FLAGS} ${OPTIMIZE_FLAGS}")
  29.  
  30.     set(CMAKE_CXX_FLAGS "${COMMON_FLAGS} ${EXTEND_FLAGS}"
  31.         CACHE INTERNAL "cxx compiler flags")
  32. endfunction()
  33.  
  34. function (setup_custom_linker_flags LINKER_SCRIPT TARGET)
  35.     get_filename_component(SCRIPT_PATH "${LINKER_SCRIPT}" PATH)
  36.     set(CMAKE_CXX_LINK_FLAGS
  37.         "-L${SCRIPT_PATH} -Wl,-T${LINKER_SCRIPT} -Wl,-Map,${TARGET}.map"
  38.         CACHE INTERNAL "cxx linker flags")
  39. endfunction()
  40.  
  41. function (setup_custom_target_properties TARGET)
  42.     set(BIN_FILE ${TARGET}.bin)
  43.     add_custom_command(TARGET ${TARGET} POST_BUILD
  44.         COMMAND ${OBJCOPY} -O binary $<TARGET_FILE:${TARGET}> ${BIN_FILE}
  45.         COMMENT "BUILDING ${BIN_FILE}"
  46.         COMMAND ${OBJDUMP} -triple=thumbv7em -disassemble $<TARGET_FILE:${TARGET}> > ${TARGET}.dis
  47.         COMMENT "CREATING ${TARGET}.dis"
  48.         COMMAND ${SIZE} $<TARGET_FILE:${TARGET}>
  49.     )
  50. endfunction()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement