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()
|
||||
|
13
Tests/RunCMake/Configure/FailCopyFileABI-check.cmake
Normal file
13
Tests/RunCMake/Configure/FailCopyFileABI-check.cmake
Normal file
@ -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()
|
6
Tests/RunCMake/Configure/FailCopyFileABI-override.cmake
Normal file
6
Tests/RunCMake/Configure/FailCopyFileABI-override.cmake
Normal file
@ -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()
|
4
Tests/RunCMake/Configure/FailCopyFileABI-stdout.txt
Normal file
4
Tests/RunCMake/Configure/FailCopyFileABI-stdout.txt
Normal file
@ -0,0 +1,4 @@
|
||||
-- Detecting C compiler ABI info
|
||||
-- Detecting C compiler ABI info - failed
|
||||
-- Configuring done
|
||||
-- Generating done
|
2
Tests/RunCMake/Configure/FailCopyFileABI.cmake
Normal file
2
Tests/RunCMake/Configure/FailCopyFileABI.cmake
Normal file
@ -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…
x
Reference in New Issue
Block a user