CheckIPOSupported: Tolerate backslashes in output of failed checks

Avoid passing the output of our `try_compile` through a macro argument.
Macro invocations re-parse their arguments and so should not be given
arbitrary content that may contain backslashes and such.

Instead pass a simple message.  This is also more readable in the case
that the macro generates a message itself.  After the macro returns,
report the real output directly to the variable named by our caller.
Also record the output in a log file as other checks do on failure.

Fixes: #18244
This commit is contained in:
Brad King 2018-08-30 11:22:54 -04:00
parent b7dbb25a0a
commit 4e1ea02bb8

View File

@ -126,7 +126,13 @@ macro(_ipo_run_language_check language)
)
if(NOT result)
_ipo_not_supported("${output}")
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
"${language} compiler IPO check failed with the following output:\n"
"${output}\n")
_ipo_not_supported("check failed to compile")
if(X_OUTPUT)
set("${X_OUTPUT}" "${output}" PARENT_SCOPE)
endif()
return()
endif()
endmacro()