summaryrefslogtreecommitdiff
path: root/Modules/CheckCXXSourceRuns.cmake
diff options
context:
space:
mode:
authorAlexander Neundorf <neundorf@kde.org>2007-07-31 13:30:10 -0400
committerAlexander Neundorf <neundorf@kde.org>2007-07-31 13:30:10 -0400
commit7beee2df4899c88c0d743766ca326c345cb03701 (patch)
tree4f2fae708103fa7d4a691575bc71f96270fcc517 /Modules/CheckCXXSourceRuns.cmake
parentbe1b19ada0ea623381756b0905516f7b3cbaa84f (diff)
downloadcmake-7beee2df4899c88c0d743766ca326c345cb03701.tar.gz
STYLE: don't use FIND_INCLUDE_FILE() but only FIND_INCLUDE_FILES() in
FindThreads.h BUG: improve CheckC(XX)SourceRuns.cmake so that it works with cross compiling, the return value has to go in the cache but shouldn't overwrite the actual return value, and it should go only in the cache if we have a result from try_run() otherwise we won't get here again if we have a result later on Alex
Diffstat (limited to 'Modules/CheckCXXSourceRuns.cmake')
-rw-r--r--Modules/CheckCXXSourceRuns.cmake20
1 files changed, 13 insertions, 7 deletions
diff --git a/Modules/CheckCXXSourceRuns.cmake b/Modules/CheckCXXSourceRuns.cmake
index 920a5543f5..01d4c64304 100644
--- a/Modules/CheckCXXSourceRuns.cmake
+++ b/Modules/CheckCXXSourceRuns.cmake
@@ -32,7 +32,7 @@ MACRO(CHECK_CXX_SOURCE_RUNS SOURCE VAR)
"${SOURCE}\n")
MESSAGE(STATUS "Performing Test ${VAR}")
- TRY_RUN(${VAR} ${VAR}_COMPILED
+ TRY_RUN(${VAR}_EXITCODE ${VAR}_COMPILED
${CMAKE_BINARY_DIR}
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.cxx
COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
@@ -43,25 +43,31 @@ MACRO(CHECK_CXX_SOURCE_RUNS SOURCE VAR)
# if it did not compile make the return value fail code of 1
IF(NOT ${VAR}_COMPILED)
- SET(${VAR} 1)
+ SET(${VAR}_EXITCODE 1)
ENDIF(NOT ${VAR}_COMPILED)
# if the return value was 0 then it worked
- SET(result_var ${${VAR}})
- IF("${result_var}" EQUAL 0)
+ IF("${${VAR}_EXITCODE}" EQUAL 0)
+ SET(${VAR} 1 CACHE INTERNAL "Test ${VAR}")
MESSAGE(STATUS "Performing Test ${VAR} - Success")
FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
"Performing C++ SOURCE FILE Test ${VAR} succeded with the following output:\n"
"${OUTPUT}\n"
"Return value: ${${VAR}}\n"
"Source file was:\n${SOURCE}\n")
- ELSE("${result_var}" EQUAL 0)
+ ELSE("${${VAR}_EXITCODE}" EQUAL 0)
+ IF(CMAKE_CROSSCOMPILING AND "${${VAR}_EXITCODE}" MATCHES "FAILED_TO_RUN")
+ SET(${VAR} "${${VAR}_EXITCODE}")
+ ELSE(CMAKE_CROSSCOMPILING AND "${${VAR}_EXITCODE}" MATCHES "FAILED_TO_RUN")
+ SET(${VAR} "" CACHE INTERNAL "Test ${VAR}")
+ ENDIF(CMAKE_CROSSCOMPILING AND "${${VAR}_EXITCODE}" MATCHES "FAILED_TO_RUN")
+
MESSAGE(STATUS "Performing Test ${VAR} - Failed")
FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
"Performing C++ SOURCE FILE Test ${VAR} failed with the following output:\n"
"${OUTPUT}\n"
- "Return value: ${${VAR}}\n"
+ "Return value: ${${VAR}_EXITCODE}\n"
"Source file was:\n${SOURCE}\n")
- ENDIF("${result_var}" EQUAL 0)
+ ENDIF("${${VAR}_EXITCODE}" EQUAL 0)
ENDIF("${VAR}" MATCHES "^${VAR}$")
ENDMACRO(CHECK_CXX_SOURCE_RUNS)