Browse Source

ENH: Added support for finding/using VTK 4.0 without using its UseVTK.cmake file that does a LOAD_CACHE.

Brad King 23 years ago
parent
commit
14771cf5f6
4 changed files with 457 additions and 27 deletions
  1. 20 27
      Modules/FindVTK.cmake
  2. 20 0
      Modules/UseVTK40.cmake
  3. 23 0
      Modules/UseVTKBuildSettings40.cmake
  4. 394 0
      Modules/UseVTKConfig40.cmake

+ 20 - 27
Modules/FindVTK.cmake

@@ -1,23 +1,30 @@
 #
 # Find a VTK installation or build tree.
 #
-# When VTK is found, the VTKConfig.cmake file is sourced to setup the
-# location and configuration of VTK.  Please read this file, or
-# VTKConfig.cmake.in from the VTK source tree for the full list of
-# definitions.  Of particular interest is
+# The following variables are set if VTK is found.  If VTK is not
+# found, VTK_FOUND is set to false.
 #
-# VTK_USE_FILE          - A CMake source file that can be included
-#                         to set the include directories, library
-#                         directories, and preprocessor macros.
+# VTK_FOUND          - Set to true when VTK is found.
+# VTK_USE_FILE       - CMake source file to setup a project to use VTK.
+# VTK_MAJOR_VERSION  - The VTK major version number.
+# VTK_MINOR_VERSION  - The VTK minor version number (odd for non-release).
+# VTK_BUILD_VERSION  - The VTK patch level (meaningless for odd minor).
+# VTK_INCLUDE_DIRS   - Include directories for VTK headers.
+# VTK_LIBRARY_DIRS   - Link directories for VTK libraries.
+# VTK_KITS           - List of VTK kits, in all CAPS (COMMON, IO, ...).
+# VTK_LANGUAGES      - List of wrapped languages, in all CAPS (TCL, ...).
+# VTK_SETTINGS       - List of all CMake variable settings provided by
+#                      the version of VTK that was found.  This list
+#                      may include settings that are not listed here.
 #
-# In addition to the variables read from VTKConfig.cmake, this find
-# module also defines
+# The following cache entries must be set by the user to locate VTK:
 #
 # VTK_DIR      - The directory containing VTKConfig.cmake.  This is either
 #                the root of the build tree, or the lib/vtk
 #                directory.  This is the only cache entry.
 #
-# VTK_FOUND    - Whether VTK was found.  If this is true, VTK_DIR is okay.
+# The following variables are set for backward compatability and
+# should not be used in new code:
 #
 # USE_VTK_FILE - The full path to the UseVTK.cmake file.  This is provided
 #                for backward compatability.  Use VTK_USE_FILE instead.
@@ -100,23 +107,8 @@ IF(VTK_DIR)
     IF(EXISTS ${VTK_DIR}/UseVTK.cmake)
       # We found VTK 4.0 (UseVTK.cmake exists, but not VTKConfig.cmake).
       SET(VTK_FOUND 1)
-      SET(VTK_USE_FILE ${VTK_DIR}/UseVTK.cmake)
-
-      # Hard-code the version number since it isn't provided by VTK 4.0.
-      SET(VTK_MAJOR_VERSION 4)
-      SET(VTK_MINOR_VERSION 0)
-      SET(VTK_BUILD_VERSION 2)
-
-      # Make sure old UseVTK.cmake will work.
-      IF(EXISTS ${VTK_DIR}/Common)
-        # This is a VTK 4.0 build tree.
-        SET(USE_BUILT_VTK 1)
-        SET(VTK_BINARY_PATH ${VTK_DIR})
-      ELSE(EXISTS ${VTK_DIR}/Common)
-        # This is a VTK 4.0 install tree.
-        SET(USE_INSTALLED_VTK 1)
-        SET(VTK_INSTALL_PATH ${VTK_DIR}/../..)
-      ENDIF(EXISTS ${VTK_DIR}/Common)
+      # Load settings for VTK 4.0.
+      INCLUDE(${CMAKE_ROOT}/Modules/UseVTKConfig40.cmake)
     ELSE(EXISTS ${VTK_DIR}/UseVTK.cmake)
       # We did not find VTK.
       SET(VTK_FOUND 0)
@@ -127,6 +119,7 @@ ELSE(VTK_DIR)
   SET(VTK_FOUND 0)
 ENDIF(VTK_DIR)
 
+#-----------------------------------------------------------------------------
 IF(VTK_FOUND)
   # Set USE_VTK_FILE for backward-compatability.
   SET(USE_VTK_FILE ${VTK_USE_FILE})

+ 20 - 0
Modules/UseVTK40.cmake

@@ -0,0 +1,20 @@
+# This is an implementation detail for using VTK 4.0 with the
+# FindVTK.cmake module.  Do not include directly by name.  This should
+# be included only when FindVTK.cmake sets the VTK_USE_FILE variable
+# to point here.
+
+# Load the compiler settings used for VTK.
+IF(VTK_BUILD_SETTINGS_FILE)
+  INCLUDE(${CMAKE_ROOT}/Modules/CMakeImportBuildSettings.cmake)
+  CMAKE_IMPORT_BUILD_SETTINGS(${VTK_BUILD_SETTINGS_FILE})
+ENDIF(VTK_BUILD_SETTINGS_FILE)
+
+# Add compiler flags needed to use VTK.
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${VTK_REQUIRED_C_FLAGS}")
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${VTK_REQUIRED_CXX_FLAGS}")
+
+# Add include directories needed to use VTK.
+INCLUDE_DIRECTORIES(${VTK_INCLUDE_DIRS})
+
+# Add link directories needed to use VTK.
+LINK_DIRECTORIES(${VTK_LIBRARY_DIRS})

+ 23 - 0
Modules/UseVTKBuildSettings40.cmake

@@ -0,0 +1,23 @@
+# Implementation detail for FindVTK.cmake to let it provide a
+# VTK_BUILD_SETTINGS_FILE for VTK 4.0.
+
+SET(CMAKE_BUILD_SETTING_CMAKE_MAJOR_VERSION "${VTK40_CMAKE_MAJOR_VERSION}")
+SET(CMAKE_BUILD_SETTING_CMAKE_MINOR_VERSION "${VTK40_CMAKE_MINOR_VERSION}")
+SET(CMAKE_BUILD_SETTING_PROJECT_NAME "VTK")
+
+SET(CMAKE_BUILD_SETTING_C_COMPILER "${VTK40_CMAKE_C_COMPILER}")
+SET(CMAKE_BUILD_SETTING_C_FLAGS "${VTK40_CMAKE_C_FLAGS}")
+SET(CMAKE_BUILD_SETTING_C_FLAGS_DEBUG "${VTK40_CMAKE_C_FLAGS_DEBUG}")
+SET(CMAKE_BUILD_SETTING_C_FLAGS_RELEASE "${VTK40_CMAKE_C_FLAGS_RELEASE}")
+SET(CMAKE_BUILD_SETTING_C_FLAGS_MINSIZEREL "${VTK40_CMAKE_C_FLAGS_MINSIZEREL}")
+SET(CMAKE_BUILD_SETTING_C_FLAGS_RELWITHDEBINFO "${VTK40_CMAKE_C_FLAGS_RELWITHDEBINFO}")
+
+SET(CMAKE_BUILD_SETTING_CXX_COMPILER "${VTK40_CMAKE_CXX_COMPILER}")
+SET(CMAKE_BUILD_SETTING_CXX_FLAGS "${VTK40_CMAKE_CXX_FLAGS}")
+SET(CMAKE_BUILD_SETTING_CXX_FLAGS_DEBUG "${VTK40_CMAKE_CXX_FLAGS_DEBUG}")
+SET(CMAKE_BUILD_SETTING_CXX_FLAGS_RELEASE "${VTK40_CMAKE_CXX_FLAGS_RELEASE}")
+SET(CMAKE_BUILD_SETTING_CXX_FLAGS_MINSIZEREL "${VTK40_CMAKE_CXX_FLAGS_MINSIZEREL}")
+SET(CMAKE_BUILD_SETTING_CXX_FLAGS_RELWITHDEBINFO "${VTK40_CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
+
+SET(CMAKE_BUILD_SETTING_BUILD_TYPE "${VTK40_CMAKE_BUILD_TYPE}")
+SET(CMAKE_BUILD_SETTING_BUILD_TOOL "${VTK40_CMAKE_BUILD_TOOL}")

+ 394 - 0
Modules/UseVTKConfig40.cmake

@@ -0,0 +1,394 @@
+# This is an implementation detail for using VTK 4.0 with the
+# FindVTK.cmake module.  Do not include directly.
+
+# Hard-code the version number since it isn't provided by VTK 4.0.
+SET(VTK_MAJOR_VERSION 4)
+SET(VTK_MINOR_VERSION 0)
+SET(VTK_BUILD_VERSION 2)
+
+# Provide a new UseVTK file that doesn't do a full LOAD_CACHE.
+SET(VTK_USE_FILE ${CMAKE_ROOT}/Modules/UseVTK40.cmake)
+
+# Provide a build settings file.
+SET(VTK_BUILD_SETTINGS_FILE ${CMAKE_ROOT}/Modules/UseVTKBuildSettings40.cmake)
+
+# There are no CMake extensions for VTK 4.0.
+SET(VTK_CMAKE_EXTENSIONS_DIR "")
+
+# grep "VTK40_" UseVTKConfig40.cmake |sed 's/.*VTK40_\([A-Za-z0-9_]*\).*/  \1/'
+LOAD_CACHE(${VTK_DIR} READ_WITH_PREFIX VTK40_
+  BUILD_SHARED_LIBS
+  CMAKE_BUILD_TOOL
+  CMAKE_BUILD_TYPE
+  CMAKE_CACHE_MAJOR_VERSION
+  CMAKE_CACHE_MINOR_VERSION
+  CMAKE_CXX_COMPILER
+  CMAKE_CXX_FLAGS
+  CMAKE_CXX_FLAGS_DEBUG
+  CMAKE_CXX_FLAGS_MINSIZEREL
+  CMAKE_CXX_FLAGS_RELEASE
+  CMAKE_CXX_FLAGS_RELWITHDEBINFO
+  CMAKE_C_COMPILER
+  CMAKE_C_FLAGS
+  CMAKE_C_FLAGS_DEBUG
+  CMAKE_C_FLAGS_MINSIZEREL
+  CMAKE_C_FLAGS_RELEASE
+  CMAKE_C_FLAGS_RELWITHDEBINFO
+  CMAKE_INSTALL_PREFIX
+  CMAKE_Xutil_INCLUDE_PATH
+  EXECUTABLE_OUTPUT_PATH
+  JAVA_INCLUDE_PATH2
+  LIBRARY_OUTPUT_PATH
+  MPIRUN
+  MPI_INCLUDE_PATH
+  MPI_POSTFLAGS
+  MPI_PREFLAGS
+  OPENGL_INCLUDE_DIR
+  OSMESA_INCLUDE_PATH
+  PYTHON_INCLUDE_PATH
+  TCL_INCLUDE_PATH
+  VLI_INCLUDE_PATH_FOR_VG500
+  VLI_INCLUDE_PATH_FOR_VP1000
+  VTK_BINARY_DIR
+  VTK_DEBUG_LEAKS
+  VTK_HAVE_VG500
+  VTK_HAVE_VP1000
+  VTK_MANGLE_MESA
+  VTK_OPENGL_HAS_OSMESA
+  VTK_PARSE_JAVA_EXE
+  VTK_SOURCE_DIR
+  VTK_USE_64BIT_IDS
+  VTK_USE_ANSI_STDLIB
+  VTK_USE_HYBRID
+  VTK_USE_MATROX_IMAGING
+  VTK_USE_MPI
+  VTK_USE_PARALLEL
+  VTK_USE_PATENTED
+  VTK_USE_RENDERING
+  VTK_USE_VIDEO_FOR_WINDOWS
+  VTK_USE_VOLUMEPRO
+  VTK_USE_X
+  VTK_WRAP_JAVA
+  VTK_WRAP_JAVA_EXE
+  VTK_WRAP_PYTHON
+  VTK_WRAP_PYTHON_EXE
+  VTK_WRAP_TCL
+  VTK_WRAP_TCL_EXE
+  vtkCommonJava_LIB_DEPENDS
+  vtkCommonPython_LIB_DEPENDS
+  vtkCommonTCL_LIB_DEPENDS
+  vtkCommon_LIB_DEPENDS
+  vtkFilteringJava_LIB_DEPENDS
+  vtkFilteringPython_LIB_DEPENDS
+  vtkFilteringTCL_LIB_DEPENDS
+  vtkFiltering_LIB_DEPENDS
+  vtkGraphicsJava_LIB_DEPENDS
+  vtkGraphicsPython_LIB_DEPENDS
+  vtkGraphicsTCL_LIB_DEPENDS
+  vtkGraphics_LIB_DEPENDS
+  vtkHybridJava_LIB_DEPENDS
+  vtkHybridPython_LIB_DEPENDS
+  vtkHybridTCL_LIB_DEPENDS
+  vtkHybrid_LIB_DEPENDS
+  vtkIOJava_LIB_DEPENDS
+  vtkIOPython_LIB_DEPENDS
+  vtkIOTCL_LIB_DEPENDS
+  vtkIO_LIB_DEPENDS
+  vtkImagingJava_LIB_DEPENDS
+  vtkImagingPython_LIB_DEPENDS
+  vtkImagingTCL_LIB_DEPENDS
+  vtkImaging_LIB_DEPENDS
+  vtkParallelJava_LIB_DEPENDS
+  vtkParallelPython_LIB_DEPENDS
+  vtkParallelTCL_LIB_DEPENDS
+  vtkParallel_LIB_DEPENDS
+  vtkPatentedJava_LIB_DEPENDS
+  vtkPatentedPython_LIB_DEPENDS
+  vtkPatentedTCL_LIB_DEPENDS
+  vtkPatented_LIB_DEPENDS
+  vtkRenderingJava_LIB_DEPENDS
+  vtkRenderingPythonTkWidgets_LIB_DEPENDS
+  vtkRenderingPython_LIB_DEPENDS
+  vtkRenderingTCL_LIB_DEPENDS
+  vtkRendering_LIB_DEPENDS
+  vtkjpeg_LIB_DEPENDS
+  vtkpng_LIB_DEPENDS
+  vtkzlib_LIB_DEPENDS
+)
+
+# Copy needed settings from the VTK 4.0 cache.
+SET(VTK_BUILD_SHARED ${VTK40_BUILD_SHARED_LIBS})
+SET(VTK_DEBUG_LEAKS ${VTK40_VTK_DEBUG_LEAKS})
+SET(VTK_HAVE_VG500 ${VTK40_VTK_HAVE_VG500})
+SET(VTK_HAVE_VP1000 ${VTK40_VTK_HAVE_VP1000})
+SET(VTK_USE_MANGLED_MESA ${VTK40_VTK_MANGLE_MESA})
+SET(VTK_MPIRUN_EXE ${VTK40_MPIRUN})
+SET(VTK_MPI_POSTFLAGS ${VTK40_MPI_POSTFLAGS})
+SET(VTK_MPI_PREFLAGS ${VTK40_MPI_PREFLAGS})
+SET(VTK_OPENGL_HAS_OSMESA ${VTK40_VTK_OPENGL_HAS_OSMESA})
+SET(VTK_USE_64BIT_IDS ${VTK40_VTK_USE_64BIT_IDS})
+SET(VTK_USE_ANSI_STDLIB ${VTK40_VTK_USE_ANSI_STDLIB})
+SET(VTK_USE_HYBRID ${VTK40_VTK_USE_HYBRID})
+SET(VTK_USE_MATROX_IMAGING ${VTK40_VTK_USE_MATROX_IMAGING})
+SET(VTK_USE_MPI ${VTK40_VTK_USE_MPI})
+SET(VTK_USE_PARALLEL ${VTK40_VTK_USE_PARALLEL})
+SET(VTK_USE_PATENTED ${VTK40_VTK_USE_PATENTED})
+SET(VTK_USE_RENDERING ${VTK40_VTK_USE_RENDERING})
+SET(VTK_USE_VIDEO_FOR_WINDOWS ${VTK40_VTK_USE_VIDEO_FOR_WINDOWS})
+SET(VTK_USE_VOLUMEPRO ${VTK40_VTK_USE_VOLUMEPRO})
+SET(VTK_USE_X ${VTK40_VTK_USE_X})
+SET(VTK_WRAP_JAVA ${VTK40_VTK_WRAP_JAVA})
+SET(VTK_WRAP_PYTHON ${VTK40_VTK_WRAP_PYTHON})
+SET(VTK_WRAP_TCL ${VTK40_VTK_WRAP_TCL})
+
+# Create the list of available kits.
+SET(VTK_KITS COMMON FILTERING GRAPHICS IMAGING IO)
+IF(VTK_USE_RENDERING)
+  SET(VTK_KITS ${VTK_KITS} RENDERING)
+ENDIF(VTK_USE_RENDERING)
+IF(VTK_USE_HYBRID)
+  SET(VTK_KITS ${VTK_KITS} HYBRID)
+ENDIF(VTK_USE_HYBRID)
+IF(VTK_USE_PARALLEL)
+  SET(VTK_KITS ${VTK_KITS} PARALLEL)
+ENDIF(VTK_USE_PARALLEL)
+IF(VTK_USE_PATENTED)
+  SET(VTK_KITS ${VTK_KITS} PATENTED)
+ENDIF(VTK_USE_PATENTED)
+
+# Create the list of available languages.
+SET(VTK_LANGUAGES "")
+IF(VTK_WRAP_TCL)
+  SET(VTK_LANGUAGES ${VTK_LANGUAGES} TCL)
+ENDIF(VTK_WRAP_TCL)
+IF(VTK_WRAP_PYTHON)
+  SET(VTK_LANGUAGES ${VTK_LANGUAGES} PYTHON)
+ENDIF(VTK_WRAP_PYTHON)
+IF(VTK_WRAP_JAVA)
+  SET(VTK_LANGUAGES ${VTK_LANGUAGES} JAVA)
+ENDIF(VTK_WRAP_JAVA)
+
+# Include directories for other projects installed on the system and
+# used by VTK.
+SET(VTK_INCLUDE_DIRS_SYS "")
+IF(VTK_USE_RENDERING)
+  SET(VTK_INCLUDE_DIRS_SYS ${VTK_INCLUDE_DIRS_SYS}
+      ${VTK40_OPENGL_INCLUDE_PATH} ${VTK40_OPENGL_INCLUDE_DIR})
+  IF(VTK_USE_X)
+    SET(VTK_INCLUDE_DIRS_SYS ${VTK_INCLUDE_DIRS_SYS}
+        ${VTK40_CMAKE_Xlib_INCLUDE_PATH} ${VTK40_CMAKE_Xutil_INCLUDE_PATH})
+  ENDIF(VTK_USE_X)
+ENDIF(VTK_USE_RENDERING)
+
+IF(VTK_OPENGL_HAS_OSMESA)
+  SET(VTK_INCLUDE_DIRS_SYS ${VTK_INCLUDE_DIRS_SYS}
+      ${VTK40_OSMESA_INCLUDE_PATH})
+ENDIF(VTK_OPENGL_HAS_OSMESA)
+
+IF(VTK_USE_MPI)
+  SET(VTK_INCLUDE_DIRS_SYS ${VTK_INCLUDE_DIRS_SYS} ${VTK40_MPI_INCLUDE_PATH})
+ENDIF(VTK_USE_MPI)
+
+IF(VTK_WRAP_TCL)
+  SET(VTK_INCLUDE_DIRS_SYS ${VTK_INCLUDE_DIRS_SYS} ${VTK40_TCL_INCLUDE_PATH})
+ENDIF(VTK_WRAP_TCL)
+
+IF(VTK_WRAP_PYTHON)
+  SET(VTK_INCLUDE_DIRS_SYS ${VTK_INCLUDE_DIRS_SYS} ${VTK40_PYTHON_INCLUDE_PATH})
+ENDIF(VTK_WRAP_PYTHON)
+
+IF(VTK_WRAP_JAVA)
+  SET(VTK_INCLUDE_DIRS_SYS ${VTK_INCLUDE_DIRS_SYS}
+      ${VTK40_JAVA_INCLUDE_PATH} ${VTK40_JAVA_INCLUDE_PATH2})
+ENDIF(VTK_WRAP_JAVA)
+
+IF(VTK_HAVE_VG500)
+  SET(VTK_INCLUDE_DIRS_SYS ${VTK_INCLUDE_DIRS_SYS}
+      ${VTK40_VLI_INCLUDE_PATH_FOR_VG500})
+ENDIF(VTK_HAVE_VG500)
+
+IF(VTK_HAVE_VP1000)
+  SET(VTK_INCLUDE_DIRS_SYS ${VTK_INCLUDE_DIRS_SYS}
+      ${VTK40_VLI_INCLUDE_PATH_FOR_VP1000})
+ENDIF(VTK_HAVE_VP1000)
+
+# See if this is a build tree or install tree.
+IF(EXISTS ${VTK_DIR}/Common)
+  # This is a VTK 4.0 build tree.
+
+  SET(VTK_LIBRARY_DIRS ${VTK40_LIBRARY_OUTPUT_PATH})
+
+  # Determine the include directories needed.
+  SET(VTK_INCLUDE_DIRS ${VTK40_VTK_BINARY_DIR})
+  IF(VTK_USE_PARALLEL)
+    SET(VTK_INCLUDE_DIRS ${VTK_INCLUDE_DIRS} ${VTK40_VTK_SOURCE_DIR}/Parallel)
+  ENDIF(VTK_USE_PARALLEL)
+  IF(VTK_USE_HYBRID)
+    SET(VTK_INCLUDE_DIRS ${VTK_INCLUDE_DIRS} ${VTK40_VTK_SOURCE_DIR}/Hybrid)
+  ENDIF(VTK_USE_HYBRID)
+  IF(VTK_USE_PATENTED)
+    SET(VTK_INCLUDE_DIRS ${VTK_INCLUDE_DIRS} ${VTK40_VTK_SOURCE_DIR}/Patented)
+  ENDIF(VTK_USE_PATENTED)
+  IF(VTK_USE_RENDERING)
+    SET(VTK_INCLUDE_DIRS ${VTK_INCLUDE_DIRS} ${VTK40_VTK_SOURCE_DIR}/Rendering)
+  ENDIF(VTK_USE_RENDERING)
+
+  # These directories are always needed.
+  SET(VTK_INCLUDE_DIRS ${VTK_INCLUDE_DIRS}
+    ${VTK40_VTK_SOURCE_DIR}/IO
+    ${VTK40_VTK_SOURCE_DIR}/Imaging
+    ${VTK40_VTK_SOURCE_DIR}/Graphics
+    ${VTK40_VTK_SOURCE_DIR}/Filtering
+    ${VTK40_VTK_SOURCE_DIR}/Common)
+
+  # Give access to a few utilities.
+  SET(VTK_INCLUDE_DIRS ${VTK_INCLUDE_DIRS}
+    ${VTK40_VTK_BINARY_DIR}/Utilities/png
+    ${VTK40_VTK_SOURCE_DIR}/Utilities/png
+    ${VTK40_VTK_BINARY_DIR}/Utilities/zlib
+    ${VTK40_VTK_SOURCE_DIR}/Utilities/zlib)
+
+  # Executable locations.
+  IF(VTK_WRAP_TCL)
+    SET(VTK_TCL_EXE ${VTK40_EXECUTABLE_OUTPUT_PATH}/vtk)
+    SET(VTK_WRAP_TCL_EXE ${VTK40_VTK_WRAP_TCL_EXE})
+    SET(VTK_TCL_HOME ${VTK40_VTK_SOURCE_DIR}/Wrapping/Tcl)
+  ENDIF(VTK_WRAP_TCL)
+  IF(VTK_WRAP_PYTHON)
+    SET(VTK_WRAP_PYTHON_EXE ${VTK40_VTK_WRAP_PYTHON_EXE})
+  ENDIF(VTK_WRAP_PYTHON)
+  IF(VTK_WRAP_JAVA)
+    SET(VTK_PARSE_JAVA_EXE ${VTK40_VTK_PARSE_JAVA_EXE})
+    SET(VTK_WRAP_JAVA_EXE ${VTK40_VTK_WRAP_JAVA_EXE})
+  ENDIF(VTK_WRAP_JAVA)
+
+ELSE(EXISTS ${VTK_DIR}/Common)
+  # This is a VTK 4.0 install tree.
+
+  SET(VTK_INCLUDE_DIRS ${VTK_DIR})
+  SET(VTK_LIBRARY_DIRS ${VTK40_CMAKE_INSTALL_PREFIX}/lib/vtk)
+
+  # Executable locations.
+  IF(VTK_WRAP_TCL)
+    SET(VTK_TCL_EXE ${VTK40_CMAKE_INSTALL_PREFIX}/bin/vtk)
+    SET(VTK_WRAP_TCL_EXE ${VTK40_CMAKE_INSTALL_PREFIX}/bin/vtkWrapTcl)
+    SET(VTK_TCL_HOME ${VTK40_CMAKE_INSTALL_PREFIX}/lib/vtk/tcl)
+  ENDIF(VTK_WRAP_TCL)
+  IF(VTK_WRAP_PYTHON)
+    SET(VTK_WRAP_PYTHON_EXE ${VTK40_CMAKE_INSTALL_PREFIX}/bin/vtkWrapPython)
+  ENDIF(VTK_WRAP_PYTHON)
+  IF(VTK_WRAP_JAVA)
+    SET(VTK_PARSE_JAVA_EXE ${VTK40_CMAKE_INSTALL_PREFIX}/bin/vtkParseJava)
+    SET(VTK_WRAP_JAVA_EXE ${VTK40_CMAKE_INSTALL_PREFIX}/bin/vtkWrapJava)
+  ENDIF(VTK_WRAP_JAVA)
+ENDIF(EXISTS ${VTK_DIR}/Common)
+
+# Add the system include directories last.
+SET(VTK_INCLUDE_DIRS ${VTK_INCLUDE_DIRS} ${VTK_INCLUDE_DIRS_SYS})
+
+# Find the required C and C++ compiler flags.
+IF(CMAKE_COMPILER_IS_GNUCXX)
+  IF(WIN32)
+    # The platform is gcc on cygwin.
+    SET(VTK_REQUIRED_CXX_FLAGS "${VTK_REQUIRED_CXX_FLAGS} -mwin32")
+    SET(VTK_REQUIRED_C_FLAGS "${VTK_REQUIRED_C_FLAGS} -mwin32")
+  ENDIF(WIN32)
+ELSE(CMAKE_COMPILER_IS_GNUCXX)
+  IF(CMAKE_ANSI_CFLAGS)
+    SET(VTK_REQUIRED_C_FLAGS "${VTK_REQUIRED_C_FLAGS} ${CMAKE_ANSI_CFLAGS}")
+  ENDIF(CMAKE_ANSI_CFLAGS)
+  IF(CMAKE_SYSTEM MATCHES "OSF1-V.*")
+     SET(VTK_REQUIRED_CXX_FLAGS
+         "${VTK_REQUIRED_CXX_FLAGS} -timplicit_local -no_implicit_include")
+  ENDIF(CMAKE_SYSTEM MATCHES "OSF1-V.*")
+ENDIF(CMAKE_COMPILER_IS_GNUCXX)
+
+IF(VTK_USE_X)
+  IF(CMAKE_X_CFLAGS)
+    SET(VTK_REQUIRED_C_FLAGS "${VTK_REQUIRED_C_FLAGS} ${CMAKE_X_CFLAGS}")
+    SET(VTK_REQUIRED_CXX_FLAGS "${VTK_REQUIRED_CXX_FLAGS} ${CMAKE_X_CFLAGS}")
+  ENDIF(CMAKE_X_CFLAGS)
+ENDIF(VTK_USE_X)
+
+# Copy library dependencies.
+SET(vtkCommonJava_LIB_DEPENDS ${VTK40_vtkCommonJava_LIB_DEPENDS})
+SET(vtkCommonPython_LIB_DEPENDS ${VTK40_vtkCommonPython_LIB_DEPENDS})
+SET(vtkCommonTCL_LIB_DEPENDS ${VTK40_vtkCommonTCL_LIB_DEPENDS})
+SET(vtkCommon_LIB_DEPENDS ${VTK40_vtkCommon_LIB_DEPENDS})
+SET(vtkFilteringJava_LIB_DEPENDS ${VTK40_vtkFilteringJava_LIB_DEPENDS})
+SET(vtkFilteringPython_LIB_DEPENDS ${VTK40_vtkFilteringPython_LIB_DEPENDS})
+SET(vtkFilteringTCL_LIB_DEPENDS ${VTK40_vtkFilteringTCL_LIB_DEPENDS})
+SET(vtkFiltering_LIB_DEPENDS ${VTK40_vtkFiltering_LIB_DEPENDS})
+SET(vtkGraphicsJava_LIB_DEPENDS ${VTK40_vtkGraphicsJava_LIB_DEPENDS})
+SET(vtkGraphicsPython_LIB_DEPENDS ${VTK40_vtkGraphicsPython_LIB_DEPENDS})
+SET(vtkGraphicsTCL_LIB_DEPENDS ${VTK40_vtkGraphicsTCL_LIB_DEPENDS})
+SET(vtkGraphics_LIB_DEPENDS ${VTK40_vtkGraphics_LIB_DEPENDS})
+SET(vtkHybridJava_LIB_DEPENDS ${VTK40_vtkHybridJava_LIB_DEPENDS})
+SET(vtkHybridPython_LIB_DEPENDS ${VTK40_vtkHybridPython_LIB_DEPENDS})
+SET(vtkHybridTCL_LIB_DEPENDS ${VTK40_vtkHybridTCL_LIB_DEPENDS})
+SET(vtkHybrid_LIB_DEPENDS ${VTK40_vtkHybrid_LIB_DEPENDS})
+SET(vtkIOJava_LIB_DEPENDS ${VTK40_vtkIOJava_LIB_DEPENDS})
+SET(vtkIOPython_LIB_DEPENDS ${VTK40_vtkIOPython_LIB_DEPENDS})
+SET(vtkIOTCL_LIB_DEPENDS ${VTK40_vtkIOTCL_LIB_DEPENDS})
+SET(vtkIO_LIB_DEPENDS ${VTK40_vtkIO_LIB_DEPENDS})
+SET(vtkImagingJava_LIB_DEPENDS ${VTK40_vtkImagingJava_LIB_DEPENDS})
+SET(vtkImagingPython_LIB_DEPENDS ${VTK40_vtkImagingPython_LIB_DEPENDS})
+SET(vtkImagingTCL_LIB_DEPENDS ${VTK40_vtkImagingTCL_LIB_DEPENDS})
+SET(vtkImaging_LIB_DEPENDS ${VTK40_vtkImaging_LIB_DEPENDS})
+SET(vtkParallelJava_LIB_DEPENDS ${VTK40_vtkParallelJava_LIB_DEPENDS})
+SET(vtkParallelPython_LIB_DEPENDS ${VTK40_vtkParallelPython_LIB_DEPENDS})
+SET(vtkParallelTCL_LIB_DEPENDS ${VTK40_vtkParallelTCL_LIB_DEPENDS})
+SET(vtkParallel_LIB_DEPENDS ${VTK40_vtkParallel_LIB_DEPENDS})
+SET(vtkPatentedJava_LIB_DEPENDS ${VTK40_vtkPatentedJava_LIB_DEPENDS})
+SET(vtkPatentedPython_LIB_DEPENDS ${VTK40_vtkPatentedPython_LIB_DEPENDS})
+SET(vtkPatentedTCL_LIB_DEPENDS ${VTK40_vtkPatentedTCL_LIB_DEPENDS})
+SET(vtkPatented_LIB_DEPENDS ${VTK40_vtkPatented_LIB_DEPENDS})
+SET(vtkRenderingJava_LIB_DEPENDS ${VTK40_vtkRenderingJava_LIB_DEPENDS})
+SET(vtkRenderingPythonTkWidgets_LIB_DEPENDS ${VTK40_vtkRenderingPythonTkWidgets_LIB_DEPENDS})
+SET(vtkRenderingPython_LIB_DEPENDS ${VTK40_vtkRenderingPython_LIB_DEPENDS})
+SET(vtkRenderingTCL_LIB_DEPENDS ${VTK40_vtkRenderingTCL_LIB_DEPENDS})
+SET(vtkRendering_LIB_DEPENDS ${VTK40_vtkRendering_LIB_DEPENDS})
+SET(vtkjpeg_LIB_DEPENDS ${VTK40_vtkjpeg_LIB_DEPENDS})
+SET(vtkpng_LIB_DEPENDS ${VTK40_vtkpng_LIB_DEPENDS})
+SET(vtkzlib_LIB_DEPENDS ${VTK40_vtkzlib_LIB_DEPENDS})
+
+# List of VTK configuration variables set above.
+# grep "^[ ]*SET(VTK" UseVTKConfig40.cmake |sed 's/[ ]*SET(\([^ ]*\) .*/  \1/'
+SET(VTK_SETTINGS
+  VTK_BUILD_SHARED
+  VTK_BUILD_VERSION
+  VTK_DEBUG_LEAKS
+  VTK_HAVE_VG500
+  VTK_HAVE_VP1000
+  VTK_INCLUDE_DIRS
+  VTK_KITS
+  VTK_LANGUAGES
+  VTK_LIBRARY_DIRS
+  VTK_MAJOR_VERSION
+  VTK_MANGLE_MESA
+  VTK_MINOR_VERSION
+  VTK_MPIRUN_EXE
+  VTK_MPI_POSTFLAGS
+  VTK_MPI_PREFLAGS
+  VTK_OPENGL_HAS_OSMESA
+  VTK_PARSE_JAVA_EXE
+  VTK_TCL_EXE
+  VTK_TCL_HOME
+  VTK_USE_64BIT_IDS
+  VTK_USE_ANSI_STDLIB
+  VTK_USE_HYBRID
+  VTK_USE_MATROX_IMAGING
+  VTK_USE_MPI
+  VTK_USE_PARALLEL
+  VTK_USE_PATENTED
+  VTK_USE_RENDERING
+  VTK_USE_VIDEO_FOR_WINDOWS
+  VTK_USE_VOLUMEPRO
+  VTK_USE_X
+  VTK_WRAP_JAVA
+  VTK_WRAP_JAVA_EXE
+  VTK_WRAP_PYTHON
+  VTK_WRAP_PYTHON_EXE
+  VTK_WRAP_TCL
+  VTK_WRAP_TCL_EXE
+)