diff --git a/cmake/modules/extensions.cmake b/cmake/modules/extensions.cmake index 061ed7747c1eaf..12e0e4731eb6b9 100644 --- a/cmake/modules/extensions.cmake +++ b/cmake/modules/extensions.cmake @@ -2095,16 +2095,12 @@ function(toolchain_parse_make_rule input_file include_files) # the element separator, so let's get the pure `;` back. string(REPLACE "\;" ";" input_as_list ${input}) - # Pop the first line and treat it specially - list(POP_FRONT input_as_list first_input_line) - string(FIND ${first_input_line} ": " index) - math(EXPR j "${index} + 2") - string(SUBSTRING ${first_input_line} ${j} -1 first_include_file) + # The file might also contain multiple files on one line if one or both of + # the file paths are short, split these up into multiple elements using regex + string(REGEX REPLACE "([^ ])[ ]([^ ])" "\\1;\\2" input_as_list "${input_as_list}") - # Remove whitespace before and after filename and convert to CMake path. - string(STRIP "${first_include_file}" first_include_file) - file(TO_CMAKE_PATH "${first_include_file}" first_include_file) - set(result "${first_include_file}") + # Pop the first item containing "empty_file.o:" + list(POP_FRONT input_as_list first_input_line) # Remove whitespace before and after filename and convert to CMake path. foreach(file ${input_as_list})