Skip to content
This repository was archived by the owner on Apr 17, 2023. It is now read-only.

Commit 3e032cb

Browse files
committed
Merge branch 'feature/3rd-party-arduino-libs' into feature/sketchbook
2 parents 4991c2e + 04e9bf2 commit 3e032cb

25 files changed

+3918
-8
lines changed

cmake/Platform/Sources/SourcesManager.cmake

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,9 @@ function(get_headers_parent_directories _sources _return_var)
6464
get_filename_component(header_parent_dir ${header_source} DIRECTORY)
6565
list(APPEND parent_dirs ${header_parent_dir})
6666
endforeach ()
67-
list(REMOVE_DUPLICATES parent_dirs)
67+
if (parent_dirs) # Check parent dirs, could be none if there aren't any headers amongst sources
68+
list(REMOVE_DUPLICATES parent_dirs)
69+
endif ()
6870

6971
set(${_return_var} ${parent_dirs} PARENT_SCOPE)
7072

cmake/Platform/Targets/ArduinoLibraryTarget.cmake

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ endfunction()
7676
# _board_id - Board ID associated with the linked Core Lib.
7777
# _sources - Source and header files to create target from.
7878
#=============================================================================#
79-
function(_add_arduino_library _target_name _board_id _sources)
79+
function(add_arduino_library _target_name _board_id _sources)
8080

8181
_add_arduino_cmake_library(${_target_name} ${_board_id} "${_sources}" "${ARGN}")
8282
find_dependent_platform_libraries("${_sources}" lib_platform_libs)
@@ -97,18 +97,22 @@ endfunction()
9797
#=============================================================================#
9898
function(find_arduino_library _target_name _library_name _board_id)
9999

100-
convert_string_to_pascal_case(${_library_name} arduino_compliant_library_name)
101-
set(library_path "${ARDUINO_SDK_LIBRARIES_PATH}/${arduino_compliant_library_name}")
100+
cmake_parse_arguments(find_lib "3RD_PARTY" "" "" ${ARGN})
101+
102+
if (NOT find_lib_3RD_PARTY)
103+
convert_string_to_pascal_case(${_library_name} _library_name)
104+
endif ()
105+
set(library_path "${ARDUINO_SDK_LIBRARIES_PATH}/${_library_name}")
102106
set(library_properties_path "${library_path}/library.properties")
103107

104108
if (NOT EXISTS "${library_properties_path}")
105-
message(SEND_ERROR "Couldn't find library named ${arduino_compliant_library_name}")
109+
message(SEND_ERROR "Couldn't find library named ${_library_name}")
106110
else () # Library is found
107111
_get_library_architecture("${library_properties_path}" lib_arch)
108112
if (lib_arch)
109113
if ("${lib_arch}" MATCHES "UNSUPPORTED")
110114
string(CONCAT error_message
111-
"${arduino_compliant_library_name} "
115+
"${_library_name} "
112116
"library isn't supported on the platform's architecture "
113117
"${ARDUINO_CMAKE_PLATFORM_ARCHITECTURE}")
114118
message(SEND_ERROR ${error_message})
@@ -126,12 +130,12 @@ function(find_arduino_library _target_name _library_name _board_id)
126130

127131
if (NOT library_sources)
128132
set(error_message
129-
"${arduino_compliant_library_name} doesn't have any source files \
133+
"${_library_name} doesn't have any source files \
130134
under the 'src' directory")
131135
message(SEND_ERROR "${error_message}")
132136
else ()
133137
set(sources ${library_headers} ${library_sources})
134-
_add_arduino_library(${_target_name} ${_board_id} "${sources}" ARCH ${lib_arch})
138+
add_arduino_library(${_target_name} ${_board_id} "${sources}" ARCH ${lib_arch})
135139
endif ()
136140
endif ()
137141
endif ()

examples/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ project(Examples LANGUAGES C CXX ASM)
44

55
add_subdirectory(hello-world)
66
add_subdirectory(arduino-library)
7+
add_subdirectory(custom-library)
78
add_subdirectory(blink-example)
89
add_subdirectory(servo-knob-example)
910
add_subdirectory(sketch)

0 commit comments

Comments
 (0)