55 lines
1.9 KiB
CMake
55 lines
1.9 KiB
CMake
# Project name
|
|
project(asteleMotor)
|
|
|
|
# CMake version
|
|
cmake_minimum_required(VERSION 2.6)
|
|
|
|
# Options
|
|
set(MCU "attiny2313" CACHE STRING "Processor Type")
|
|
set(CPU_SPEED "4000000" CACHE STRING "Speed of the CPU")
|
|
set(PORT "/dev/ttyUSB0" CACHE STRING "USB Port")
|
|
set(PORT_SPEED "57600" CACHE STRING "Serial Port Speed")
|
|
set(PROGRAMMER "usbasp" CACHE STRING "Programmer Type")
|
|
set(COMPILE_FLAGS "" CACHE STRING "Additional Compiler Flags")
|
|
|
|
# Set own source files
|
|
set(SRC_FILES main.cpp writepin.cpp comperator.cpp stepper.cpp)
|
|
|
|
# Compiler suite specification
|
|
set(CMAKE_C_COMPILER /usr/bin/avr-gcc)
|
|
set(CMAKE_CXX_COMPILER /usr/bin/avr-g++)
|
|
set(CMAKE_OBJCOPY /usr/bin/avr-objcopy)
|
|
set(CMAKE_OBJDUMP /usr/bin/avr-objdump)
|
|
set(CMAKE_RANLIB /usr/bin/avr-ranlib)
|
|
set(CMAKE_LINKER /usr/bin/avr-ld)
|
|
|
|
# Compiler flags
|
|
add_definitions(-mmcu=${MCU} -DF_CPU=${CPU_SPEED})
|
|
add_definitions(-c -g -Os -flto -Wall -std=c++17 )
|
|
add_definitions(-fno-exceptions -ffunction-sections -fno-rtti -fdata-sections)
|
|
|
|
# Linker flags
|
|
set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") # remove -rdynamic for C
|
|
set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "") # remove -rdynamic for CXX
|
|
set(CMAKE_EXE_LINKER_FLAGS "-s -Os -Wl,--gc-sections -mmcu=${MCU}")
|
|
|
|
add_executable(${PROJECT_NAME} ${ARDUINO_CORE_SRC} ${SRC_FILES})
|
|
|
|
find_program(AR_AVRDUDE NAMES avrdude PATHS /usr/bin NO_DEFAULT_PATH)
|
|
find_program(AR_AVRSIZE NAMES avr-size PATHS /usr/bin NO_DEFAULT_PATH)
|
|
|
|
add_custom_target(download
|
|
COMMAND ${CMAKE_OBJCOPY} -j .text -j .data -O ihex ${PROJECT_NAME} ${PROJECT_NAME}.hex
|
|
COMMAND ${AR_AVRSIZE} -C ${PROJECT_NAME}
|
|
COMMAND ${AR_AVRDUDE} -v -p ${MCU} -c ${PROGRAMMER} -D -U flash:w:${PROJECT_NAME}.hex
|
|
DEPENDS ${PROJECT_NAME}
|
|
)
|
|
|
|
message(STATUS "${CPU_SPEED}")
|
|
|
|
add_custom_target(export
|
|
COMMAND ${CMAKE_OBJCOPY} -j .text -j .data -O ihex ${PROJECT_NAME} ${PROJECT_NAME}.hex
|
|
COMMAND ${AR_AVRSIZE} -C ${PROJECT_NAME}
|
|
DEPENDS ${PROJECT_NAME}
|
|
)
|