diff --git a/cmake/extensions.cmake b/cmake/extensions.cmake index 7e492e11deb38e..498c5acc10db97 100644 --- a/cmake/extensions.cmake +++ b/cmake/extensions.cmake @@ -1797,30 +1797,35 @@ endfunction() # The argument 'include_files' is an output parameter with the result # of parsing the include files. function(toolchain_parse_make_rule input_file include_files) - file(READ ${input_file} input) + file(STRINGS ${input_file} input) # The file is formatted like this: # empty_file.o: misc/empty_file.c \ # nrf52840dk_nrf52840/nrf52840dk_nrf52840.dts \ # nrf52840_qiaa.dtsi - # Get rid of the backslashes - string(REPLACE "\\" ";" input_as_list ${input}) + # The dep file will contain `\` for line continuation. + # This results in `\;` which is then treated a the char `;` instead of + # 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(GET input_as_list 0 first_input_line) + 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) - list(REMOVE_AT input_as_list 0) - list(APPEND result ${first_include_file}) + # 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}") - # Add the other lines - list(APPEND result ${input_as_list}) - - # Strip away the newlines and whitespaces - list(TRANSFORM result STRIP) + # Remove whitespace before and after filename and convert to CMake path. + foreach(file ${input_as_list}) + string(STRIP "${file}" file) + file(TO_CMAKE_PATH "${file}" file) + list(APPEND result "${file}") + endforeach() set(${include_files} ${result} PARENT_SCOPE) endfunction()