Merge topic 'abi-check-tolerate-COPY_FILE-failure'
4dc4018
Teach compiler ABI check to tolerate try_compile COPY_FILE failure
This commit is contained in:
commit
4113f67187
|
@ -41,6 +41,7 @@ function(CMAKE_DETERMINE_COMPILER_ABI lang src)
|
|||
"--no-warn-unused-cli"
|
||||
OUTPUT_VARIABLE OUTPUT
|
||||
COPY_FILE "${BIN}"
|
||||
COPY_FILE_ERROR _copy_error
|
||||
)
|
||||
# Move result from cache to normal variable.
|
||||
set(CMAKE_${lang}_ABI_COMPILED ${CMAKE_${lang}_ABI_COMPILED})
|
||||
|
@ -48,7 +49,7 @@ function(CMAKE_DETERMINE_COMPILER_ABI lang src)
|
|||
set(CMAKE_${lang}_ABI_COMPILED ${CMAKE_${lang}_ABI_COMPILED} PARENT_SCOPE)
|
||||
|
||||
# Load the resulting information strings.
|
||||
if(CMAKE_${lang}_ABI_COMPILED)
|
||||
if(CMAKE_${lang}_ABI_COMPILED AND NOT _copy_error)
|
||||
message(STATUS "Detecting ${lang} compiler ABI info - done")
|
||||
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
|
||||
"Detecting ${lang} compiler ABI info compiled with the following output:\n${OUTPUT}\n\n")
|
||||
|
@ -131,7 +132,7 @@ function(CMAKE_DETERMINE_COMPILER_ABI lang src)
|
|||
else()
|
||||
message(STATUS "Detecting ${lang} compiler ABI info - failed")
|
||||
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
|
||||
"Detecting ${lang} compiler ABI info failed to compile with the following output:\n${OUTPUT}\n\n")
|
||||
"Detecting ${lang} compiler ABI info failed to compile with the following output:\n${OUTPUT}\n${_copy_error}\n\n")
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
set(log "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/CMakeError.log")
|
||||
if(EXISTS "${log}")
|
||||
file(READ "${log}" error_log)
|
||||
else()
|
||||
set(error_log "")
|
||||
endif()
|
||||
if(NOT error_log MATCHES "Cannot copy output executable.*
|
||||
to destination specified by COPY_FILE:.*
|
||||
Unable to find the executable at any of:
|
||||
.*\\.missing")
|
||||
string(REGEX REPLACE "\n" "\n " error_log " ${error_log}")
|
||||
set(RunCMake_TEST_FAILED "Log file:\n ${log}\ndoes not have expected COPY_FILE failure message:\n${error_log}")
|
||||
endif()
|
|
@ -0,0 +1,6 @@
|
|||
# Change the executable suffix that try_compile will use for
|
||||
# COPY_FILE but not inside the test project. This forces failure.
|
||||
get_property(in_try_compile GLOBAL PROPERTY IN_TRY_COMPILE)
|
||||
if(NOT in_try_compile)
|
||||
set(CMAKE_EXECUTABLE_SUFFIX .missing)
|
||||
endif()
|
|
@ -0,0 +1,4 @@
|
|||
-- Detecting C compiler ABI info
|
||||
-- Detecting C compiler ABI info - failed
|
||||
-- Configuring done
|
||||
-- Generating done
|
|
@ -0,0 +1,2 @@
|
|||
set(CMAKE_USER_MAKE_RULES_OVERRIDE_C ${CMAKE_CURRENT_SOURCE_DIR}/FailCopyFileABI-override.cmake)
|
||||
enable_language(C)
|
|
@ -1,3 +1,4 @@
|
|||
include(RunCMake)
|
||||
|
||||
run_cmake(ErrorLogs)
|
||||
run_cmake(FailCopyFileABI)
|
||||
|
|
Loading…
Reference in New Issue