Browse Source

Fix missing set of MSVC10 and add CheckCompilerRelatedVariables test.

David Cole 15 years ago
parent
commit
2938263636

+ 1 - 0
Modules/Platform/Windows-cl.cmake.in

@@ -8,6 +8,7 @@ SET(MSVC70 @MSVC70@)
 SET(MSVC71 @MSVC71@)
 SET(MSVC80 @MSVC80@)
 SET(MSVC90 @MSVC90@)
+SET(MSVC10 @MSVC10@)
 SET(MSVC_IDE @MSVC_IDE@)
 SET(MSVC_VERSION @MSVC_VERSION@)
 SET(WIN32 1)

+ 2 - 0
Tests/CMakeLists.txt

@@ -980,6 +980,8 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=master -P ${CMake_SOURCE_DIR}/Utilities/
     ADD_TEST_MACRO(ModuleDefinition example_exe)
   ENDIF(CMAKE_TEST_MSVC)
 
+  ADD_TEST_MACRO(CheckCompilerRelatedVariables CheckCompilerRelatedVariables)
+
   IF("${CMAKE_TEST_GENERATOR}" MATCHES "Makefile")
     ADD_TEST(MakeClean ${CMAKE_CTEST_COMMAND}
       --build-and-test

+ 85 - 0
Tests/CheckCompilerRelatedVariables/CMakeLists.txt

@@ -0,0 +1,85 @@
+cmake_minimum_required(VERSION 2.8)
+project(CheckCompilerRelatedVariables)
+
+
+function(echo_var var)
+  if(DEFINED ${var})
+    message("${var}='${${var}}' is defined")
+  else()
+    message("${var}='${${var}}' is NOT defined")
+  endif()
+endfunction()
+
+
+#
+# Check that the correct number of MSVC** variables are defined...
+#
+set(msvc_total 0)
+
+if(DEFINED MSVC60)
+  math(EXPR msvc_total "${msvc_total} + 1")
+endif()
+if(DEFINED MSVC70)
+  math(EXPR msvc_total "${msvc_total} + 1")
+endif()
+if(DEFINED MSVC71)
+  math(EXPR msvc_total "${msvc_total} + 1")
+endif()
+if(DEFINED MSVC80)
+  math(EXPR msvc_total "${msvc_total} + 1")
+endif()
+if(DEFINED MSVC90)
+  math(EXPR msvc_total "${msvc_total} + 1")
+endif()
+if(DEFINED MSVC10)
+  math(EXPR msvc_total "${msvc_total} + 1")
+endif()
+
+echo_var(MSVC)
+echo_var(MSVC60)
+echo_var(MSVC70)
+echo_var(MSVC71)
+echo_var(MSVC80)
+echo_var(MSVC90)
+echo_var(MSVC10)
+
+if(MSVC)
+  #
+  # MSVC is set in cl.cmake when cl is the compiler...
+  #
+  # Exactly one of the numbered variables should also be set
+  # indicating which version of the cl compiler / Visual Studio
+  # is in use...
+  #
+  if(msvc_total EQUAL 1)
+    message("test passes: exactly one MSVC** variable is defined...")
+  else()
+    message(FATAL_ERROR "error: ${msvc_total} MSVC** variables are defined -- exactly 1 expected")
+  endif()
+else()
+  #
+  # The compiler is something other than cl... None of the MSVC** variables
+  # should be defined...
+  #
+  if(msvc_total EQUAL 0)
+    message("test passes: no MSVC** variables are defined on non-MSVC build...")
+  else()
+    message(FATAL_ERROR "error: ${msvc_total} MSVC** variables are defined -- exactly 0 expected")
+  endif()
+endif()
+
+
+#
+# This is a no-op executable... If this test is going to fail, it fails during
+# the configure step while cmake is configuring this CMakeLists.txt file...
+#
+
+file(WRITE
+  "${CMAKE_CURRENT_BINARY_DIR}/main.cxx"
+  "int main() { return 0; }"
+  )
+
+add_executable(
+  CheckCompilerRelatedVariables
+  "${CMAKE_CURRENT_BINARY_DIR}/main.cxx"
+  )