Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- set(CMAKE_SYSTEM_NAME Generic)
- set(CMAKE_SYSTEM_PROCESSOR arm)
- set(CMAKE_CXX_COMPILER clang++)
- set(CMAKE_CXX_COMPILER_TARGET clang++)
- # utilities
- set(OBJCOPY llvm-objcopy)
- set(OBJDUMP llvm-objdump)
- set(SIZE llvm-size)
- # setup C++17 required compiler standard
- set(CMAKE_CXX_STANDARD 17)
- set(CMAKE_CXX_STANDARD_REQUIRED on)
- set(CMAKE_CXX_EXTENSIONS off)
- function (setup_custom_compiler_flags)
- set(NRTI_FLAGS "-fno-rtti -fno-exceptions -fno-unwind-tables")
- set(CLANG_FLAGS "-target thumbv7em-unkown-none-eabi")
- set(ARCH_FLAGS "${CLANG_FLAGS} -march=armv7e-m -mcpu=cortex-m4")
- set(TARGET_CFLAGS "${ARCH_FLAGS} -nostdinc -g")
- set(TARGET_FLAGS "-mlittle-endian -nostdlib -fno-common -fno-pic")
- set(COMMON_FLAGS "${NRTI_FLAGS} ${TARGET_FLAGS} ${TARGET_CFLAGS}")
- set(WARN_FLAGS "-Wall -Wextra")
- set(OPTIMIZE_FLAGS "-ffreestanding -fomit-frame-pointer")
- set(EXTEND_FLAGS "${WARN_FLAGS} ${OPTIMIZE_FLAGS}")
- set(CMAKE_CXX_FLAGS "${COMMON_FLAGS} ${EXTEND_FLAGS}"
- CACHE INTERNAL "cxx compiler flags")
- endfunction()
- function (setup_custom_linker_flags LINKER_SCRIPT TARGET)
- get_filename_component(SCRIPT_PATH "${LINKER_SCRIPT}" PATH)
- set(CMAKE_CXX_LINK_FLAGS
- "-L${SCRIPT_PATH} -Wl,-T${LINKER_SCRIPT} -Wl,-Map,${TARGET}.map"
- CACHE INTERNAL "cxx linker flags")
- endfunction()
- function (setup_custom_target_properties TARGET)
- set(BIN_FILE ${TARGET}.bin)
- add_custom_command(TARGET ${TARGET} POST_BUILD
- COMMAND ${OBJCOPY} -O binary $<TARGET_FILE:${TARGET}> ${BIN_FILE}
- COMMENT "BUILDING ${BIN_FILE}"
- COMMAND ${OBJDUMP} -triple=thumbv7em -disassemble $<TARGET_FILE:${TARGET}> > ${TARGET}.dis
- COMMENT "CREATING ${TARGET}.dis"
- COMMAND ${SIZE} $<TARGET_FILE:${TARGET}>
- )
- endfunction()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement