|
|
|
@ -280,7 +280,10 @@ function(setup_arduino_core VAR_NAME BOARD_ID)
@@ -280,7 +280,10 @@ function(setup_arduino_core VAR_NAME BOARD_ID)
|
|
|
|
|
if(BOARD_CORE AND NOT TARGET ${CORE_LIB_NAME}) |
|
|
|
|
set(BOARD_CORE_PATH ${ARDUINO_CORES_PATH}/${BOARD_CORE}) |
|
|
|
|
find_sources(CORE_SRCS ${BOARD_CORE_PATH} True) |
|
|
|
|
|
|
|
|
|
# Debian/Ubuntu fix |
|
|
|
|
list(REMOVE_ITEM CORE_SRCS "${BOARD_CORE_PATH}/main.cxx") |
|
|
|
|
|
|
|
|
|
add_library(${CORE_LIB_NAME} ${CORE_SRCS}) |
|
|
|
|
set(${VAR_NAME} ${CORE_LIB_NAME} PARENT_SCOPE) |
|
|
|
|
endif() |
|
|
|
@ -340,22 +343,26 @@ endfunction()
@@ -340,22 +343,26 @@ endfunction()
|
|
|
|
|
# |
|
|
|
|
# Creates an Arduino library, with all it's library dependencies. |
|
|
|
|
# |
|
|
|
|
# "LIB_NAME"_RECURSE controls if the library will recurse |
|
|
|
|
# when looking for source files |
|
|
|
|
# ${LIB_NAME}_RECURSE controls if the library will recurse |
|
|
|
|
# when looking for source files. |
|
|
|
|
# |
|
|
|
|
|
|
|
|
|
# For known libraries can list recurse here |
|
|
|
|
set(Wire_RECURSE True) |
|
|
|
|
set(Ethernet_RECURSE True) |
|
|
|
|
function(setup_arduino_library VAR_NAME BOARD_ID LIB_PATH) |
|
|
|
|
set(LIB_TARGETS) |
|
|
|
|
|
|
|
|
|
get_filename_component(LIB_NAME ${LIB_PATH} NAME) |
|
|
|
|
set(TARGET_LIB_NAME ${BOARD_ID}_${LIB_NAME}) |
|
|
|
|
if(NOT TARGET ${TARGET_LIB_NAME}) |
|
|
|
|
string(REGEX REPLACE ".*/" "" LIB_SHORT_NAME ${LIB_NAME}) |
|
|
|
|
#message(STATUS "short name: ${LIB_SHORT_NAME} recures: ${${LIB_SHORT_NAME}_RECURSE}") |
|
|
|
|
|
|
|
|
|
# Detect if recursion is needed |
|
|
|
|
if (NOT DEFINED ${LIB_SHORT_NAME}_RECURSE) |
|
|
|
|
set(${LIB_SHORT_NAME}_RECURSE False) |
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
find_sources(LIB_SRCS ${LIB_PATH} ${${LIB_SHORT_NAME}_RECURSE}) |
|
|
|
|
if(LIB_SRCS) |
|
|
|
|
|
|
|
|
@ -393,7 +400,7 @@ endfunction()
@@ -393,7 +400,7 @@ endfunction()
|
|
|
|
|
# |
|
|
|
|
function(setup_arduino_libraries VAR_NAME BOARD_ID SRCS) |
|
|
|
|
set(LIB_TARGETS) |
|
|
|
|
find_arduino_libraries(TARGET_LIBS ${SRCS}) |
|
|
|
|
find_arduino_libraries(TARGET_LIBS "${SRCS}") |
|
|
|
|
foreach(TARGET_LIB ${TARGET_LIBS}) |
|
|
|
|
setup_arduino_library(LIB_DEPS ${BOARD_ID} ${TARGET_LIB}) # Create static library instead of returning sources |
|
|
|
|
list(APPEND LIB_TARGETS ${LIB_DEPS}) |
|
|
|
@ -443,15 +450,18 @@ function(setup_arduino_upload BOARD_ID TARGET_NAME PORT)
@@ -443,15 +450,18 @@ function(setup_arduino_upload BOARD_ID TARGET_NAME PORT)
|
|
|
|
|
if(DEFINED ${TARGET_NAME}_AFLAGS) |
|
|
|
|
set(AVRDUDE_FLAGS ${${TARGET_NAME}_AFLAGS}) |
|
|
|
|
endif() |
|
|
|
|
if (${${BOARD_ID}.upload.protocol} STREQUAL "stk500") |
|
|
|
|
set(${BOARD_ID}.upload.protocol "stk500v1") |
|
|
|
|
endif() |
|
|
|
|
add_custom_target(${TARGET_NAME}-upload |
|
|
|
|
${ARDUINO_AVRDUDE_PROGRAM} |
|
|
|
|
-U flash:w:${TARGET_NAME}.hex |
|
|
|
|
${AVRDUDE_FLAGS} |
|
|
|
|
-C${ARDUINO_AVRDUDE_CONFIG_PATH} |
|
|
|
|
-p${${BOARD_ID}.build.mcu} |
|
|
|
|
-c${${BOARD_ID}.upload.protocol} |
|
|
|
|
-b ${${BOARD_ID}.upload.speed} |
|
|
|
|
-P ${PORT} |
|
|
|
|
-P${PORT} -b${${BOARD_ID}.upload.speed} |
|
|
|
|
-D |
|
|
|
|
-Uflash:w:${CMAKE_BINARY_DIR}/${TARGET_NAME}.hex:i |
|
|
|
|
DEPENDS ${TARGET_NAME}) |
|
|
|
|
if(NOT TARGET upload) |
|
|
|
|
add_custom_target(upload) |
|
|
|
@ -476,12 +486,13 @@ function(find_sources VAR_NAME LIB_PATH RECURSE)
@@ -476,12 +486,13 @@ function(find_sources VAR_NAME LIB_PATH RECURSE)
|
|
|
|
|
${LIB_PATH}/*.h |
|
|
|
|
${LIB_PATH}/*.hh |
|
|
|
|
${LIB_PATH}/*.hxx) |
|
|
|
|
|
|
|
|
|
if(RECURSE) |
|
|
|
|
file(GLOB_RECURSE LIB_FILES ${FILE_SEARCH_LIST}) |
|
|
|
|
else() |
|
|
|
|
file(GLOB LIB_FILES ${FILE_SEARCH_LIST}) |
|
|
|
|
endif() |
|
|
|
|
#message(STATUS "${LIB_PATH} recurse: ${RECURSE}") |
|
|
|
|
|
|
|
|
|
if(LIB_FILES) |
|
|
|
|
set(${VAR_NAME} ${LIB_FILES} PARENT_SCOPE) |
|
|
|
|
endif() |
|
|
|
@ -522,44 +533,51 @@ endfunction()
@@ -522,44 +533,51 @@ endfunction()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Setting up Arduino enviroment settings |
|
|
|
|
if(NOT ARDUINO_FOUND) |
|
|
|
|
find_file(ARDUINO_CORES_PATH |
|
|
|
|
NAMES cores |
|
|
|
|
PATHS ${ARDUINO_SDK_PATH} |
|
|
|
|
PATH_SUFFIXES hardware/arduino) |
|
|
|
|
PATH_SUFFIXES hardware/arduino |
|
|
|
|
NO_DEFAULT_PATH) |
|
|
|
|
|
|
|
|
|
find_file(ARDUINO_LIBRARIES_PATH |
|
|
|
|
NAMES libraries |
|
|
|
|
PATHS ${ARDUINO_SDK_PATH}) |
|
|
|
|
PATHS ${ARDUINO_SDK_PATH} |
|
|
|
|
NO_DEFAULT_PATH) |
|
|
|
|
|
|
|
|
|
find_file(ARDUINO_BOARDS_PATH |
|
|
|
|
NAMES boards.txt |
|
|
|
|
PATHS ${ARDUINO_SDK_PATH} |
|
|
|
|
PATH_SUFFIXES hardware/arduino) |
|
|
|
|
PATH_SUFFIXES hardware/arduino |
|
|
|
|
NO_DEFAULT_PATH) |
|
|
|
|
|
|
|
|
|
find_file(ARDUINO_PROGRAMMERS_PATH |
|
|
|
|
NAMES programmers.txt |
|
|
|
|
PATHS ${ARDUINO_SDK_PATH} |
|
|
|
|
PATH_SUFFIXES hardware/arduino) |
|
|
|
|
PATH_SUFFIXES hardware/arduino |
|
|
|
|
NO_DEFAULT_PATH) |
|
|
|
|
|
|
|
|
|
find_file(ARDUINO_REVISIONS_PATH |
|
|
|
|
NAMES revisions.txt |
|
|
|
|
PATHS ${ARDUINO_SDK_PATH}) |
|
|
|
|
PATHS ${ARDUINO_SDK_PATH} |
|
|
|
|
NO_DEFAULT_PATH) |
|
|
|
|
|
|
|
|
|
find_file(ARDUINO_VERSION_PATH |
|
|
|
|
NAMES lib/version.txt |
|
|
|
|
PATHS ${ARDUINO_SDK_PATH}) |
|
|
|
|
PATHS ${ARDUINO_SDK_PATH} |
|
|
|
|
NO_DEFAULT_PATH) |
|
|
|
|
|
|
|
|
|
find_program(ARDUINO_AVRDUDE_PROGRAM |
|
|
|
|
NAMES avrdude |
|
|
|
|
PATHS ${ARDUINO_SDK_PATH} |
|
|
|
|
PATH_SUFFIXES hardware/tools) |
|
|
|
|
PATH_SUFFIXES hardware/tools |
|
|
|
|
NO_DEFAULT_PATH) |
|
|
|
|
|
|
|
|
|
find_program(ARDUINO_AVRDUDE_CONFIG_PATH |
|
|
|
|
find_file(ARDUINO_AVRDUDE_CONFIG_PATH |
|
|
|
|
NAMES avrdude.conf |
|
|
|
|
PATHS ${ARDUINO_SDK_PATH} /etc/avrdude |
|
|
|
|
PATH_SUFFIXES hardware/tools |
|
|
|
|
hardware/tools/avr/etc) |
|
|
|
|
hardware/tools/avr/etc |
|
|
|
|
NO_DEFAULT_PATH) |
|
|
|
|
|
|
|
|
|
set(ARDUINO_OBJCOPY_EEP_FLAGS -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 |
|
|
|
|
CACHE STRING "") |
|
|
|
|