61 lines
2.1 KiB
CMake
61 lines
2.1 KiB
CMake
#Name of the OS
|
|
set(CMAKE_SYSTEM_NAME )
|
|
|
|
set(PROG_TYPE usbasp)
|
|
|
|
#Default MCU setup
|
|
set(MCU atmega328p)
|
|
set(F_CPU 16000000)
|
|
set(BAUD 9600)
|
|
add_definitions(-DF_CPU=${F_CPU})
|
|
|
|
# program names
|
|
set(AVRCPP avr-g++)
|
|
set(AVRC avr-gcc)
|
|
set(AVRSTRIP avr-strip)
|
|
set(OBJCOPY avr-objcopy)
|
|
set(OBJDUMP avr-objdump)
|
|
set(AVRSIZE avr-size)
|
|
set(AVRDUDE avrdude)
|
|
|
|
# Sets the compiler
|
|
# Needs to come before the project function
|
|
set(CMAKE_SYSTEM_NAME Generic)
|
|
set(CMAKE_CXX_COMPILER ${AVRCPP})
|
|
set(CMAKE_C_COMPILER ${AVRC})
|
|
set(CMAKE_ASM_COMPILER ${AVRC})
|
|
|
|
project (template_project C CXX ASM)
|
|
|
|
# Compiler flags
|
|
set(CSTANDARD "-std=gnu99")
|
|
set(CDEBUG "-gstabs -g -ggdb")
|
|
set(CWARN "-Wall -Wstrict-prototypes -Wl,--gc-sections -Wl,--relax")
|
|
set(CTUNING "-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -ffunction-sections -fdata-sections")
|
|
set(COPT "-Os -lm -lprintf_flt")
|
|
set(CMCU "-mmcu=${MCU}")
|
|
set(CDEFS "-DF_CPU=${F_CPU} -DBAUD=${BAUD}")
|
|
|
|
set(CFLAGS "${CMCU} ${CDEBUG} ${CDEFS} ${COPT} ${CWARN} ${CSTANDARD} ${CTUNING}")
|
|
set(CXXFLAGS "${CMCU} ${CDEBUG} ${CDEFS} ${COPT} ${CTUNING}")
|
|
|
|
set(CMAKE_C_FLAGS "${CFLAGS}")
|
|
set(CMAKE_CXX_FLAGS "${CXXFLAGS}")
|
|
set(CMAKE_ASM_FLAGS "${CFLAGS}")
|
|
|
|
|
|
# Project setup
|
|
include_directories(${INC_PATH} ${LIB_INC_PATH})
|
|
add_executable(${PROJECT_NAME} ${SRC_FILES} ${LIB_SRC_FILES})
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "${PROJECT_NAME}.elf")
|
|
|
|
# Compiling targets
|
|
add_custom_target(strip ALL ${AVRSTRIP} "${PROJECT_NAME}.elf" DEPENDS ${PROJECT_NAME})
|
|
add_custom_target(hex ALL ${OBJCOPY} -R .eeprom -O ihex "${PROJECT_NAME}.elf" "${PROJECT_NAME}.hex" DEPENDS strip)
|
|
add_custom_target(eeprom ${OBJCOPY} -j .eeprom --change-section-lma .eeprom=0 -O ihex "${PROJECT_NAME}.elf" "${PROJECT_NAME}.eeprom" DEPENDS strip)
|
|
|
|
# We want "flash" to be a build target.
|
|
add_custom_target(flash ${AVRDUDE} -c ${PROG_TYPE} -p ${MCU} -U flash:w:${PROJECT_NAME}.hex DEPENDS hex)
|
|
|
|
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${PROJECT_NAME}.hex;${PROJECT_NAME}.eeprom;${PROJECT_NAME}.lst")
|