cmake_minimum_required(VERSION 3.3 FATAL_ERROR)

project(WikiExamples)

# Display type of build
set(_msg "VTKWikiExamples: Building VTKWikiExamples stand-alone")
message(STATUS "${_msg}")
if(VTK_BINARY_DIR)
  message(STATUS "${_msg} - no")
else()
  message(STATUS "${_msg} - yes")
endif()

# Display build properties
set(_msg "VTKWikiExamples: Setting executables prefix")
message(STATUS "${_msg}")
if(VTK_BINARY_DIR)
  set(WIKI "wiki")
  message(STATUS "${_msg} - yes [prefix: ${WIKI}]")
else()
  set(WIKI "")
  message(STATUS "${_msg} - no")
endif()

# Display VTK version
if(NOT VTK_BINARY_DIR)
  find_package(VTK REQUIRED)
endif()
if(NOT VTK_RENDERING_BACKEND)
  set(VTK_RENDERING_BACKEND OpenGL) # Support VTK version prior to introduction of rendering backend
endif()
message(STATUS "VTKWikiExamples: VTK VERSION: ${VTK_VERSION}(${VTK_RENDERING_BACKEND})")

#-----------------------------------------------------------------------------
set(CMAKE_MODULE_PATH
  ${WikiExamples_SOURCE_DIR}/CMake
  ${CMAKE_MODULE_PATH}
  ${VTK_CMAKE_DIR}
  )

#-----------------------------------------------------------------------------
include(WikiModuleConfigLegacy)
if(WikiModuleConfigLegacy_RETURN)
  return()
endif()
include(WikiModuleConfig)
include(WikiOutputDirectories)
include(WikiPlatformSpecificChecks)
include(WikiPolicies)
include(WikiTestingConfig)

#-----------------------------------------------------------------------------
# Mac specific
if(APPLE)
  set(EXECUTABLE_FLAG MACOSX_BUNDLE)
endif()

#-----------------------------------------------------------------------------
add_subdirectory(src/Cxx/Animation)
add_subdirectory(src/Cxx/CompositeData)
if(VTK_USE_MYSQL)
  add_subdirectory(src/Cxx/Databases)
endif()
add_subdirectory(src/Cxx/DataStructures)
if(${VTK_VERSION} VERSION_GREATER "6.10")
  add_subdirectory(src/Cxx/Developers)
endif()
add_subdirectory(src/Cxx/Filtering)
add_subdirectory(src/Cxx/GeometricObjects)
if(VTK_USE_INFOVIS)
  if(VTK_USE_BOOST)
    add_subdirectory(src/Cxx/Graphs)
  endif()
endif()
add_subdirectory(src/Cxx/Annotation)
add_subdirectory(src/Cxx/ImageData)
add_subdirectory(src/Cxx/Geovis)
add_subdirectory(src/Cxx/HyperTreeGrid)
add_subdirectory(src/Cxx/ImageProcessing)
add_subdirectory(src/Cxx/Images)
add_subdirectory(src/Cxx/ImplicitFunctions)
add_subdirectory(src/Cxx/InfoVis)
add_subdirectory(src/Cxx/Interaction)
add_subdirectory(src/Cxx/IO)
add_subdirectory(src/Cxx/Lighting)
add_subdirectory(src/Cxx/Math)
add_subdirectory(src/Cxx/Medical)
add_subdirectory(src/Cxx/Meshes)
add_subdirectory(src/Cxx/Modelling)
if(VTK_USE_PARALLEL)
  add_subdirectory(src/Cxx/Parallel)
endif()
add_subdirectory(src/Cxx/Picking)
add_subdirectory(src/Cxx/Plotting)
add_subdirectory(src/Cxx/PolyData)
add_subdirectory(src/Cxx/Points)
add_subdirectory(src/Cxx/RectilinearGrid)
add_subdirectory(src/Cxx/Remote)
add_subdirectory(src/Cxx/Rendering)
add_subdirectory(src/Cxx/RenderMan)
add_subdirectory(src/Cxx/SimpleOperations)
add_subdirectory(src/Cxx/Shaders)
add_subdirectory(src/Cxx/StructuredGrid)
add_subdirectory(src/Cxx/StructuredPoints)
add_subdirectory(src/Cxx/Texture)
add_subdirectory(src/Cxx/UnstructuredGrid)
add_subdirectory(src/Cxx/Utilities)
add_subdirectory(src/Cxx/Video)
if(VTK_USE_VIEWS)
  add_subdirectory(src/Cxx/Views)
endif()
add_subdirectory(src/Cxx/Visualization)
add_subdirectory(src/Cxx/VisualizationAlgorithms)
add_subdirectory(src/Cxx/VolumeRendering)
add_subdirectory(src/Cxx/Widgets)

# add_subdirectory(Python/GeometricObjects)

if(vtkGUISupportQt_LOADED)
  message(STATUS "VTKWikiExamples: Building Qt examples")
  if(${VTK_VERSION} VERSION_GREATER "6" AND VTK_QT_VERSION VERSION_GREATER "4")
    # Instruct CMake to run moc automatically when needed.
    set(CMAKE_AUTOMOC ON)
    # We have ui files, this will bring in the macro: qt5_wrap_ui
    find_package(Qt5Widgets REQUIRED QUIET)
  else()
    find_package(Qt4 REQUIRED)
    include(${QT_USE_FILE})
  endif()
  add_subdirectory(src/Cxx/Qt)
else()
  message(STATUS "VTKWikiExamples: Not building Qt examples")
endif()
# Is git lfs installed?
file(READ "${WikiExamples_SOURCE_DIR}/src/Testing/Data/GitLfsInstalled" data)
if (NOT data STREQUAL "GitLfsInstalled")
     message(STATUS "VTKWikiExamples: git lfs is not installed. Some tests will not be created.")
else ()
     message(STATUS "VTKWikiExamples: git lfs is installed.")
endif()
