#-----------------------------------------------------------------------------
# Macro to compile VTK's CMake extension commands.
# The arguments are the source and build tree locations for the loaded
# commands project, and the variable in which success/failure should
# be stored.
MACRO(VTK_COMPILE_CMAKE_EXTENSIONS source_dir build_dir result_var)
  # do we need the extensions
  SET (VTK_NEED_LOADED_COMMANDS 0)
  IF (VTK_WRAP_TCL OR VTK_WRAP_PYTHON)
    SET (VTK_NEED_LOADED_COMMANDS 1)
  ENDIF (VTK_WRAP_TCL OR VTK_WRAP_PYTHON)
  IF (VTK_WRAP_JAVA)
    SET (VTK_NEED_LOADED_COMMANDS 1)
  ENDIF (VTK_WRAP_JAVA)
  
  # if we need them
  IF (VTK_NEED_LOADED_COMMANDS)
    # if they are not already loaded
    IF(COMMAND VTK_WRAP_TCL2)
    ELSE(COMMAND VTK_WRAP_TCL2)
      MESSAGE(STATUS "Compiling VTK CMake commands")
      TRY_COMPILE("${result_var}" "${build_dir}" "${source_dir}"
        VTK_LOADED_COMMANDS      
        CMAKE_FLAGS -DVTK_BUILD_FROM_TRY_COMPILE:BOOL=TRUE
        OUTPUT_VARIABLE VTK_COMPILE_CMAKE_EXTENSIONS_OUTPUT)
      IF("${result_var}")
        MESSAGE(STATUS "Compiling VTK CMake commands - done")
      ELSE("${result_var}")
        WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeError.log 
          "Building of VTK extensions failed with the following output:\n"
          "${VTK_COMPILE_CMAKE_EXTENSIONS_OUTPUT}\n" APPEND)
        MESSAGE(FATAL_ERROR "Compiling VTK CMake commands - failed")
      ENDIF("${result_var}")
    ENDIF(COMMAND VTK_WRAP_TCL2)
  ENDIF (VTK_NEED_LOADED_COMMANDS)
ENDMACRO(VTK_COMPILE_CMAKE_EXTENSIONS)
