set(CMAKE_SYSTEM_NAME Generic) set(CMAKE_SYSTEM_PROCESSOR arm) set(CMAKE_CROSSCOMPILING TRUE) set(CMAKE_EXECUTABLE_SUFFIX ".elf") set(CMAKE_EXECUTABLE_SUFFIX_C ".elf") set(CMAKE_EXECUTABLE_SUFFIX_CXX ".elf") set(CMAKE_EXECUTABLE_SUFFIX_ASM ".elf") set(CMAKE_C_LINK_EXECUTABLE " -o ") set(CMAKE_CXX_LINK_EXECUTABLE " -o ") set(CMAKE_ASM_LINK_EXECUTABLE " -o ") set(CMAKE_C_COMPILER_WORKS 1) set(CMAKE_CXX_COMPILER_WORKS 1) # Toolchain prefix # set(TOOLCHAIN_PATH "D:/ARM_GCC/bin/") # set(TOOLCHAIN_PREFIX "${TOOLCHAIN_PATH}arm-none-eabi-") set(TOOLCHAIN_PREFIX "arm-none-eabi-") set(CMAKE_C_COMPILER "${TOOLCHAIN_PREFIX}gcc") set(CMAKE_CXX_COMPILER "${TOOLCHAIN_PREFIX}g++") set(CMAKE_ASM_COMPILER "${TOOLCHAIN_PREFIX}gcc") set(CMAKE_OBJCOPY "${TOOLCHAIN_PREFIX}objcopy") set(CMAKE_SIZE "${TOOLCHAIN_PREFIX}size") set(CMAKE_GDB "${TOOLCHAIN_PREFIX}gdb") set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) # Compiler flags set(CPU_FLAGS "-mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard") set(COMMON_FLAGS "${CPU_FLAGS} -Wall -Wextra -ffunction-sections -fdata-sections -g3 -O0") set(CMAKE_C_FLAGS "${COMMON_FLAGS} -std=c99") set(CMAKE_CXX_FLAGS "${COMMON_FLAGS} -std=c++11 -fno-rtti -fno-exceptions") set(CMAKE_ASM_FLAGS "${CPU_FLAGS} -x assembler-with-cpp") set(CMAKE_EXE_LINKER_FLAGS "${CPU_FLAGS} -Wl,--gc-sections --specs=nano.specs --specs=nosys.specs")