Просмотр исходного кода

ENH: fix for makedev three args test

Bill Hoffman 19 лет назад
Родитель
Сommit
947edfcdf5
2 измененных файлов с 15 добавлено и 5 удалено
  1. 12 4
      Modules/CheckCSourceRuns.cmake
  2. 3 1
      Utilities/cmtar/CMakeLists.txt

+ 12 - 4
Modules/CheckCSourceRuns.cmake

@@ -1,4 +1,4 @@
-# - Check if the source code provided in the SOURCE argument compiles.
+# - Check if the source code provided in the SOURCE argument compiles and runs.
 # CHECK_C_SOURCE_RUNS(SOURCE VAR)
 # - macro which checks if the source code runs
 #  SOURCE   - source code to try to compile
@@ -40,21 +40,29 @@ MACRO(CHECK_C_SOURCE_RUNS SOURCE VAR)
       "${CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES}"
       "${CHECK_C_SOURCE_COMPILES_ADD_INCLUDES}"
       OUTPUT_VARIABLE OUTPUT)
-    IF(${VAR})
+    # if it did not compile make the return value fail code of 1
+    IF(NOT ${${VAR}_COMPILED})
+      SET(${VAR} 1)
+    ENDIF(NOT ${${VAR}_COMPILED})
+    # if the return value was 0 then it worked
+    SET(result_var ${${VAR}})
+    IF(${result_var} EQUAL 0)
       SET(${VAR} 1 CACHE INTERNAL "Test ${FUNCTION}")
       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(${VAR})
+    ELSE(${result_var} EQUAL 0)
       MESSAGE(STATUS "Performing Test ${VAR} - Failed")
       SET(${VAR} "" CACHE INTERNAL "Test ${FUNCTION}")
       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: ${result_var}\n"
         "Source file was:\n${SOURCE}\n")
-    ENDIF(${VAR})
+    ENDIF(${result_var} EQUAL 0)
   ENDIF("${VAR}" MATCHES "^${VAR}$")
 ENDMACRO(CHECK_C_SOURCE_RUNS)
 

+ 3 - 1
Utilities/cmtar/CMakeLists.txt

@@ -252,7 +252,9 @@ int main ()
 
   dev = makedev(0, maj, min);
   if(major(dev) != maj || minor(dev) != min)
-    exit(1);
+    {
+    return 1;
+    }
   return 0;
 }
 ")