@@ -646,7 +646,7 @@ function(__arduino_collect_source_files OUTPUT_VARIABLE DIRECTORY) # [DIRECTORY.
646646 list (APPEND _glob_pattern_list
647647 "${_dirpath} /*.[cC]"
648648 "${_dirpath} /*.[cC][cC]"
649- "${_dirpath} /*.[cC ][pP][pP]"
649+ "${_dirpath} /*.[cCiItT ][pP][pP]"
650650 "${_dirpath} /*.[cC][xX][xX]"
651651 "${_dirpath} /*.[hH]"
652652 "${_dirpath} /*.[hH][hH]"
@@ -662,7 +662,7 @@ endfunction()
662662# ----------------------------------------------------------------------------------------------------------------------
663663# Resolves the absolute filepath where arduino-cli would store `FILENAME` after processing.
664664# ----------------------------------------------------------------------------------------------------------------------
665- function (__arduino_resolve_preprocessed_filepath SOURCE_DIRPATH FILENAME SKETCH_DIRPATH OUTPUT_VARIABLE )
665+ function (__arduino_resolve_preprocessed_filepath SOURCE_DIRPATH FILENAME OUTPUT_DIRPATH OUTPUT_VARIABLE )
666666 cmake_path(
667667 ABSOLUTE_PATH FILENAME
668668 BASE_DIRECTORY "${SOURCE_DIRPATH} "
@@ -677,7 +677,11 @@ function(__arduino_resolve_preprocessed_filepath SOURCE_DIRPATH FILENAME SKETCH_
677677 BASE_DIRECTORY "${SOURCE_DIRPATH} "
678678 OUTPUT_VARIABLE _relative_filepath)
679679
680- set ("${OUTPUT_VARIABLE} " "${SKETCH_DIRPATH} /${_relative_filepath} " PARENT_SCOPE)
680+ if (_relative_filepath MATCHES "${__ARDUINO_SKETCH_SUFFIX} " )
681+ string (APPEND _relative_filepath ".cpp" )
682+ endif ()
683+
684+ set ("${OUTPUT_VARIABLE} " "${OUTPUT_DIRPATH} /${_relative_filepath} " PARENT_SCOPE)
681685 else ()
682686 unset ("${OUTPUT_VARIABLE} " PARENT_SCOPE)
683687 endif ()
@@ -803,7 +807,7 @@ function(__arduino_add_upload_target TARGET UPLOAD_TARGET FIRMWARE_FILENAME UPLO
803807endfunction ()
804808
805809# ----------------------------------------------------------------------------------------------------------------------
806- # Proprocesses `SOURCE_FILENAME..` in `MODE`, similar like arduino-cli would do.
810+ # Preprocesses `SOURCE_FILENAME..` in `MODE`, similar like arduino-cli would do.
807811# ----------------------------------------------------------------------------------------------------------------------
808812function (__arduino_preprocess OUTPUT_VARIABLE OUTPUT_DIRPATH SOURCE_DIRPATH MODE SOURCE_FILENAME) # [OTHER_SKETCHES...]
809813 set (OTHER_SKETCHES ${ARGN} )
@@ -818,10 +822,6 @@ function(__arduino_preprocess OUTPUT_VARIABLE OUTPUT_DIRPATH SOURCE_DIRPATH MODE
818822 "${SOURCE_DIRPATH} " "${_source_filepath} "
819823 "${OUTPUT_DIRPATH} " _output_filepath)
820824
821- if (MODE STREQUAL "SKETCH" )
822- string (APPEND _output_filepath ".cpp" )
823- endif ()
824-
825825 string (MD5 _filepath_hash "${_output_filepath} " )
826826 set (_config_filepath "${CMAKE_BINARY_DIR} /ArduinoFiles/${_target} /preprocess-config-${_filepath_hash} .cmake" )
827827
@@ -839,10 +839,8 @@ endfunction()
839839# ----------------------------------------------------------------------------------------------------------------------
840840# Preprocesses the source files of `TARGET`, similar like arduino-cli would do.
841841# ----------------------------------------------------------------------------------------------------------------------
842- function (__arduino_preprocess_sketch TARGET OUTPUT_DIRPATH SOURCE_DIRPATH SOURCE_FILENAME) # [SOURCE_FILENAME...]
843- set (_source_list "${SOURCE_FILENAME} " ${ARGN} )
844-
845- set (_sketch_list ${_source_list} ) # <-------------------------------------------- collect sketches from _source_list
842+ function (__arduino_preprocess_sketch TARGET OUTPUT_DIRPATH SOURCE_DIRPATH SOURCES )
843+ set (_sketch_list ${SOURCES} ) # <------------------------------------------------------ collect sketches from SOURCES
846844 list (FILTER _sketch_list INCLUDE REGEX "${__ARDUINO_SKETCH_SUFFIX} " )
847845 list (PREPEND _sketch_list "${TARGET} .ino" )
848846 list (REMOVE_DUPLICATES _sketch_list)
@@ -853,9 +851,9 @@ function(__arduino_preprocess_sketch TARGET OUTPUT_DIRPATH SOURCE_DIRPATH SOURCE
853851
854852 target_sources ("${TARGET} " PUBLIC "${_preprocessed_filepath} " )
855853
856- list (REMOVE_ITEM _source_list ${_sketch_list} ) # <--------------------------------- preprocess regular/other sources
854+ list (REMOVE_ITEM SOURCES ${_sketch_list} ) # <----- --------------------------------- preprocess regular/other sources
857855
858- foreach (_filename IN LISTS _source_list )
856+ foreach (_filename IN LISTS SOURCES )
859857 __arduino_preprocess(
860858 _preprocessed_filepath "${OUTPUT_DIRPATH} "
861859 "${SOURCE_DIRPATH} " SOURCE "${_filename} " )
@@ -909,7 +907,7 @@ function(__arduino_toolchain_finalize DIRECTORY)
909907
910908 __arduino_preprocess_sketch( # <----------------------------------------------------------- build the sketch
911909 "${_target} " "${_sketch_dirpath} "
912- "${_source_dirpath} " ${_source_list} )
910+ "${_source_dirpath} " " ${_source_list} " )
913911
914912 target_link_libraries ("${_target} " PUBLIC Arduino::Core)
915913
0 commit comments