#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")