project(MeshViz3DDataDemos)
include_directories(MeshViewer)

set(MeshViewer_SOURCES
  MeshViewer/MeshViewer.cxx
  MeshViewer/Mesh2DScalarViewer.cxx
  MeshViewer/Mesh2DVecViewer.cxx
  MeshViewer/Mesh3DScalarViewer.cxx
  MeshViewer/Mesh3DVecViewer.cxx
  MeshViewer/MeshStreamViewer.cxx
  MeshViewer/MeshFilterViewer.cxx
  MeshViewer/MeshProbeViewer.cxx
)

add_oiv_library(CellFilterIn SHARED
  MeshViewer/CellFilterIn.cxx
)

add_oiv_library(CellFilterOut SHARED
  MeshViewer/CellFilterOut.cxx
)
target_link_libraries(CellFilterOut CellFilterIn)

if(NOT APPLE)
  add_oiv_executable(Furnace
    Furnace.cxx
  )
endif()

add_oiv_executable(CartesianGrid2D
  CartesianGrid2D.cxx
  ${MeshViewer_SOURCES}
)
target_link_libraries(CartesianGrid2D CellFilterIn CellFilterOut)

add_oiv_executable(CartesianGrid3D
  CartesianGrid3D.cxx
  ${MeshViewer_SOURCES}
)
target_link_libraries(CartesianGrid3D CellFilterIn CellFilterOut)

add_oiv_executable(HexahedronMesh3D
  HexahedronMesh3D.cxx
  ${MeshViewer_SOURCES}
)
target_link_libraries(HexahedronMesh3D CellFilterIn CellFilterOut)

add_oiv_executable(MeshViewerMain
  MeshViewerMain.cxx
  ${MeshViewer_SOURCES}
)
target_link_libraries(MeshViewerMain CellFilterIn CellFilterOut)

add_oiv_executable(Meteo2D
  Meteo2D.cxx
  ${MeshViewer_SOURCES}
)
target_link_libraries(Meteo2D CellFilterIn CellFilterOut)

add_oiv_executable_notest(Meteorology
  Meteorology.cxx
  ${MeshViewer_SOURCES}
)
target_link_libraries(Meteorology CellFilterIn CellFilterOut)

add_oiv_executable_notest(MeteorologyRegul
  MeteorologyRegul.cxx
  ${MeshViewer_SOURCES}
)
target_link_libraries(MeteorologyRegul CellFilterIn CellFilterOut)

add_oiv_executable(ParalGrid2D
  ParalGrid2D.cxx
  ${MeshViewer_SOURCES}
)
target_link_libraries(ParalGrid2D CellFilterIn CellFilterOut)

add_oiv_executable(PolarGrid2D
  PolarGrid2D.cxx
  ${MeshViewer_SOURCES}
)
target_link_libraries(PolarGrid2D CellFilterIn CellFilterOut)

add_oiv_executable(RegularGrid2D
  RegularGrid2D.cxx
  ${MeshViewer_SOURCES}
)
target_link_libraries(RegularGrid2D CellFilterIn CellFilterOut)

add_oiv_executable(RegularGrid3D
  RegularGrid3D.cxx
  ${MeshViewer_SOURCES}
)
target_link_libraries(RegularGrid3D CellFilterIn CellFilterOut)

add_oiv_executable(TetrahedronMesh3D
  TetrahedronMesh3D.cxx
  ${MeshViewer_SOURCES}
)
target_link_libraries(TetrahedronMesh3D CellFilterIn CellFilterOut)

add_oiv_executable(TriangleMesh2D
  TriangleMesh2D.cxx
  ${MeshViewer_SOURCES}
)
target_link_libraries(TriangleMesh2D CellFilterIn CellFilterOut)

add_oiv_executable(UndefValMesh2D
  UndefValMesh2D.cxx
  ${MeshViewer_SOURCES}
)
target_link_libraries(UndefValMesh2D CellFilterIn CellFilterOut)

if(NOT APPLE)
  set(Samples3Ddata_2D_SOURCES
    Vec2DViewer.cxx
  )

  set(Samples3Ddata_3D_SOURCES
    Vec3DViewer.cxx
  )

  add_oiv_executable(CartesianGrid2DVec
    CartesianGrid2DVec.cxx
    ${Samples3Ddata_2D_SOURCES}
  )

  add_oiv_executable(IndexedMesh2DVec
    IndexedMesh2DVec.cxx
    ${Samples3Ddata_2D_SOURCES}
  )

  add_oiv_executable(ParalCartesianGrid2DVec
    ParalCartesianGrid2DVec.cxx
    ${Samples3Ddata_2D_SOURCES}
  )

  add_oiv_executable(PolarGrid2DVec
    PolarGrid2DVec.cxx
    ${Samples3Ddata_2D_SOURCES}
  )

  add_oiv_executable(QuadrangleMesh2DVec
    QuadrangleMesh2DVec.cxx
    ${Samples3Ddata_2D_SOURCES}
  )

  add_oiv_executable(TriangleMesh2DVec
    TriangleMesh2DVec.cxx
    ${Samples3Ddata_2D_SOURCES}
  )

endif()

add_oiv_executable(MeshLimit
  MeshLimit.cxx
  ${Samples3Ddata_2D_SOURCES}
)
add_oiv_executable(MeshFilled
  MeshFilled.cxx
  ${Samples3Ddata_2D_SOURCES}
)
add_oiv_executable(MeshSides
  MeshSides.cxx
  ${Samples3Ddata_2D_SOURCES}
)
add_oiv_executable(MeshLines
  MeshLines.cxx
  ${Samples3Ddata_2D_SOURCES}
)

if(NOT APPLE)
  add_oiv_executable(MeshContouring
    MeshContouring.cxx
    ${Samples3Ddata_2D_SOURCES}
  )


  add_oiv_executable(CartesianGrid3DVec
    CartesianGrid3DVec.cxx
    ${Samples3Ddata_3D_SOURCES}
  )

  add_oiv_executable(HexahedronMesh3DVec
    HexahedronMesh3DVec.cxx
    ${Samples3Ddata_3D_SOURCES}
  )

  add_oiv_executable(IndexedMesh3DVec
    IndexedMesh3DVec.cxx
    ${Samples3Ddata_3D_SOURCES}
  )

  add_oiv_executable(ParalCartesianGrid3DVec
    ParalCartesianGrid3DVec.cxx
    ${Samples3Ddata_3D_SOURCES}
  )

  add_oiv_executable(TetrahedronMesh3DVec
    TetrahedronMesh3DVec.cxx
    ${Samples3Ddata_3D_SOURCES}
  )

endif()

add_oiv_executable(MeshLevelSurf
  MeshLevelSurf.cxx
  ${Samples3Ddata_3D_SOURCES}
)
add_oiv_executable(MeshSkeleton
  MeshSkeleton.cxx
  ${Samples3Ddata_3D_SOURCES}
)
add_oiv_executable(MeshCrossSection
  MeshCrossSection.cxx
  ${Samples3Ddata_3D_SOURCES}
)
add_oiv_executable(MeshCrossContour
  MeshCrossContour.cxx
  ${Samples3Ddata_3D_SOURCES}
)
add_oiv_executable(MeshSkinBw
  MeshSkinBw.cxx
  ${Samples3Ddata_3D_SOURCES}
)
add_oiv_executable(MeshSkin
  MeshSkin.cxx
  ${Samples3Ddata_3D_SOURCES}
)
