summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Neundorf <neundorf@kde.org>2010-08-17 19:40:45 (GMT)
committerAlex Neundorf <neundorf@kde.org>2010-08-17 19:40:45 (GMT)
commite6c9bc267b6037e66447561b546e3ba25369140a (patch)
treed07f4ad036eb4fed3cf6ad42e91d536cdd8c8828
parentab90916638b8f000d9e55624f9ef891c9fc0e6da (diff)
downloadCMake-e6c9bc267b6037e66447561b546e3ba25369140a.zip
CMake-e6c9bc267b6037e66447561b546e3ba25369140a.tar.gz
CMake-e6c9bc267b6037e66447561b546e3ba25369140a.tar.bz2
Add timeout to execute_process() in CMAKE_DETERMINE_COMPILER_ID().
In CMAKE_DETERMINE_COMPILER_ID_VENDOR() the compiler is called with various arguments. In some cases, this can make the compiler hang and wait forever for input (e.g. "as -v"). That's why add an timeout so it terminates finally. 10 seconds should be more than enough, this is the time it takes to startup the compiler, which is usually quite fast. Alex
-rw-r--r--Modules/CMakeDetermineCompilerId.cmake13
1 files changed, 10 insertions, 3 deletions
diff --git a/Modules/CMakeDetermineCompilerId.cmake b/Modules/CMakeDetermineCompilerId.cmake
index 5fc2238..bf78a5b 100644
--- a/Modules/CMakeDetermineCompilerId.cmake
+++ b/Modules/CMakeDetermineCompilerId.cmake
@@ -283,6 +283,7 @@ FUNCTION(CMAKE_DETERMINE_COMPILER_ID_VENDOR lang)
WORKING_DIRECTORY ${CMAKE_${lang}_COMPILER_ID_DIR}
OUTPUT_VARIABLE output ERROR_VARIABLE output
RESULT_VARIABLE result
+ TIMEOUT 10
)
IF("${output}" MATCHES "${regex}")
FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
@@ -291,9 +292,15 @@ FUNCTION(CMAKE_DETERMINE_COMPILER_ID_VENDOR lang)
SET(CMAKE_${lang}_COMPILER_ID "${vendor}" PARENT_SCOPE)
BREAK()
ELSE()
- FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
- "Checking whether the ${lang} compiler is ${vendor} using \"${flags}\" "
- "did not match \"${regex}\":\n${output}")
+ IF("${result}" MATCHES "timeout")
+ FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+ "Checking whether the ${lang} compiler is ${vendor} using \"${flags}\" "
+ "terminated after 10 s due to timeout.")
+ ELSE()
+ FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+ "Checking whether the ${lang} compiler is ${vendor} using \"${flags}\" "
+ "did not match \"${regex}\":\n${output}")
+ ENDIF()
ENDIF()
ENDFOREACH()
ENDFUNCTION(CMAKE_DETERMINE_COMPILER_ID_VENDOR)