From f57ba2d30c2d7aaea8298f4d931901f09f5c1fc0 Mon Sep 17 00:00:00 2001 From: Nicolas Pitre Date: Thu, 13 Jun 2019 14:23:52 -0400 Subject: [PATCH] cmake: toolchain_cc_imacros: don't use space separated arguments Because CMake explicitly deduplicates arguments, it is not possible to use toolchain_cc_imacros() multiple times as the later "-imacros" are stripped away, leaving the associated file arguments dangling. The documented workaround in the CMake manual involves some "SHELL:..." construct but that doesn't get through zephyr_compile_options() undammaged. Let's simply remove this issue altogether by replacing "-imacros x.h" with the joined form "--imacros=x.h" instead. Both gcc and clang support this syntax. FYI, this joined form is also available for other arguments such as: -include x.h --> --include=x.h -A foo --> --assert=foo -D foo --> --define-macro=foo -U foo --> --undefine-macro=foo Etc. Signed-off-by: Nicolas Pitre --- cmake/compiler/gcc/target_imacros.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/compiler/gcc/target_imacros.cmake b/cmake/compiler/gcc/target_imacros.cmake index 31eadf2c66f..804040411c5 100644 --- a/cmake/compiler/gcc/target_imacros.cmake +++ b/cmake/compiler/gcc/target_imacros.cmake @@ -4,6 +4,6 @@ macro(toolchain_cc_imacros header_file) - zephyr_compile_options(-imacros ${header_file}) + zephyr_compile_options(--imacros=${header_file}) endmacro()