############################################################################
# CMakeLists.txt file for building ROOT graf3d/eve package
############################################################################

set(EVE_HEADERS1
  TEveBrowser.h
  TEveChunkManager.h
  TEveCompound.h
  TEveElementEditor.h
  TEveElement.h
  TEveEventManager.h
  TEveGedEditor.h
  TEveGValuators.h
  TEveMacro.h
  TEveManager.h
  TEvePad.h
  TEveParamList.h
  TEvePathMark.h
  TEveProjectionAxes.h
  TEveProjectionAxesEditor.h
  TEveProjectionAxesGL.h
  TEveProjectionBases.h
  TEveProjectionManager.h
  TEveProjectionManagerEditor.h
  TEveProjections.h
  TEveScene.h
  TEveSceneInfo.h
  TEveSecondarySelectable.h
  TEveSelection.h
  TEveTrans.h
  TEveTransEditor.h
  TEveTreeTools.h
  TEveUtil.h
  TEveViewer.h
  TEveViewerListEditor.h
  TEveVSD.h
  TEveWindow.h
  TEveWindowEditor.h
  TEveWindowManager.h
)

set(EVE_HEADERS2
  TEveArrowEditor.h
  TEveArrowGL.h
  TEveArrow.h
  TEveBoxGL.h
  TEveBox.h
  TEveBoxSetGL.h
  TEveBoxSet.h
  TEveCalo2DGL.h
  TEveCalo3DGL.h
  TEveCaloData.h
  TEveCalo.h
  TEveCaloLegoEditor.h
  TEveCaloLegoGL.h
  TEveCaloLegoOverlay.h
  TEveCaloVizEditor.h
  TEveDigitSetEditor.h
  TEveDigitSetGL.h
  TEveDigitSet.h
  TEveFrameBoxGL.h
  TEveFrameBox.h
  TEveGeoNodeEditor.h
  TEveGeoNode.h
  TEveGeoPolyShape.h
  TEveGeoShapeExtract.h
  TEveGeoShape.h
  TEveGridStepperEditor.h
  TEveGridStepper.h
  TEveJetCone.h
  TEveJetConeEditor.h
  TEveJetConeGL.h
  TEveLegoEventHandler.h
  TEveLineEditor.h
  TEveLineGL.h
  TEveLine.h
  TEvePlot3D.h
  TEvePlot3DGL.h
  TEvePointSetArrayEditor.h
  TEvePointSet.h
  TEvePolygonSetProjected.h
  TEvePolygonSetProjectedGL.h
  TEveQuadSet.h
  TEveQuadSetGL.h
  TEveRGBAPalette.h
  TEveRGBAPaletteEditor.h
  TEveRGBAPaletteOverlay.h
  TEveScalableStraightLineSet.h
  TEveShape.h
  TEveShapeEditor.h
  TEveStraightLineSet.h
  TEveStraightLineSetEditor.h
  TEveStraightLineSetGL.h
  TEveText.h
  TEveTextEditor.h
  TEveTextGL.h
  TEveTrack.h
  TEveTrackEditor.h
  TEveTrackGL.h
  TEveTrackProjected.h
  TEveTrackProjectedGL.h
  TEveTrackPropagator.h
  TEveTrackPropagatorEditor.h
  TEveTriangleSet.h
  TEveTriangleSetEditor.h
  TEveTriangleSetGL.h
)

set(EVE_SOURCES
  src/TEveArrow.cxx
  src/TEveArrowEditor.cxx
  src/TEveArrowGL.cxx
  src/TEveBox.cxx
  src/TEveBoxGL.cxx
  src/TEveBoxSet.cxx
  src/TEveBoxSetGL.cxx
  src/TEveBrowser.cxx
  src/TEveCalo2DGL.cxx
  src/TEveCalo3DGL.cxx
  src/TEveCalo.cxx
  src/TEveCaloData.cxx
  src/TEveCaloLegoEditor.cxx
  src/TEveCaloLegoGL.cxx
  src/TEveCaloLegoOverlay.cxx
  src/TEveCaloVizEditor.cxx
  src/TEveChunkManager.cxx
  src/TEveCompound.cxx
  src/TEveDigitSet.cxx
  src/TEveDigitSetEditor.cxx
  src/TEveDigitSetGL.cxx
  src/TEveElement.cxx
  src/TEveElementEditor.cxx
  src/TEveEventManager.cxx
  src/TEveFrameBox.cxx
  src/TEveFrameBoxGL.cxx
  src/TEveGedEditor.cxx
  src/TEveGeoNode.cxx
  src/TEveGeoNodeEditor.cxx
  src/TEveGeoPolyShape.cxx
  src/TEveGeoShape.cxx
  src/TEveGeoShapeExtract.cxx
  src/TEveGridStepper.cxx
  src/TEveGridStepperEditor.cxx
  src/TEveGValuators.cxx
  src/TEveJetCone.cxx
  src/TEveJetConeEditor.cxx
  src/TEveJetConeGL.cxx
  src/TEveLegoEventHandler.cxx
  src/TEveLine.cxx
  src/TEveLineEditor.cxx
  src/TEveLineGL.cxx
  src/TEveMacro.cxx
  src/TEveManager.cxx
  src/TEvePad.cxx
  src/TEveParamList.cxx
  src/TEvePathMark.cxx
  src/TEvePlot3D.cxx
  src/TEvePlot3DGL.cxx
  src/TEvePointSetArrayEditor.cxx
  src/TEvePointSet.cxx
  src/TEvePolygonSetProjected.cxx
  src/TEvePolygonSetProjectedGL.cxx
  src/TEveProjectionAxes.cxx
  src/TEveProjectionAxesEditor.cxx
  src/TEveProjectionAxesGL.cxx
  src/TEveProjectionBases.cxx
  src/TEveProjectionManager.cxx
  src/TEveProjectionManagerEditor.cxx
  src/TEveProjections.cxx
  src/TEveQuadSet.cxx
  src/TEveQuadSetGL.cxx
  src/TEveRGBAPalette.cxx
  src/TEveRGBAPaletteEditor.cxx
  src/TEveRGBAPaletteOverlay.cxx
  src/TEveScalableStraightLineSet.cxx
  src/TEveScene.cxx
  src/TEveSceneInfo.cxx
  src/TEveSecondarySelectable.cxx
  src/TEveSelection.cxx
  src/TEveShape.cxx
  src/TEveShapeEditor.cxx
  src/TEveStraightLineSet.cxx
  src/TEveStraightLineSetEditor.cxx
  src/TEveStraightLineSetGL.cxx
  src/TEveText.cxx
  src/TEveTextEditor.cxx
  src/TEveTextGL.cxx
  src/TEveTrack.cxx
  src/TEveTrackEditor.cxx
  src/TEveTrackGL.cxx
  src/TEveTrackProjected.cxx
  src/TEveTrackProjectedGL.cxx
  src/TEveTrackPropagator.cxx
  src/TEveTrackPropagatorEditor.cxx
  src/TEveTrans.cxx
  src/TEveTransEditor.cxx
  src/TEveTreeTools.cxx
  src/TEveTriangleSet.cxx
  src/TEveTriangleSetEditor.cxx
  src/TEveTriangleSetGL.cxx
  src/TEveUtil.cxx
  src/TEveVector.cxx
  src/TEveViewer.cxx
  src/TEveViewerListEditor.cxx
  src/TEveVSD.cxx
  src/TEveVSDStructs.cxx
  src/TEveWindow.cxx
  src/TEveWindowEditor.cxx
  src/TEveWindowManager.cxx
)

if(MSVC)
  include_directories(BEFORE "inc")

  ROOT_GENERATE_DICTIONARY(G__Eve1
    ${EVE_HEADERS1}
    LINKDEF
      LinkDef1.h
  )
  ROOT_GENERATE_DICTIONARY(G__Eve2
    ${EVE_HEADERS2}
    LINKDEF
      LinkDef2.h
  )

  ROOT_GENERATE_ROOTMAP(Eve
    LINKDEF
      LinkDef.h
    DEPENDENCIES
      EG
      Ged
      Geom
      GeomPainter
      Graf
      Graf3d
      Gpad
      Gui
      Hist
      MathCore
      Physics
      RGL
      RIO
      Rint
      Tree
      TreePlayer
  )

  ROOT_LINKER_LIBRARY(Eve
    ${EVE_SOURCES}
    G__Eve1.cxx
    G__Eve2.cxx
    LIBRARIES
      OpenGL::GL
      OpenGL::GLU
      ${FTGL_LIBRARIES}
      ${GLEW_LIBRARIES}
    DEPENDENCIES
      Core
      EG
      Ged
      Geom
      RGL
      Physics
  )

  ROOT_INSTALL_HEADERS()
else()
  if(MACOSX_GLU_DEPRECATED)
    add_definitions(-Wno-deprecated-declarations)
  endif()

  ROOT_STANDARD_LIBRARY_PACKAGE(Eve
    HEADERS
      ${EVE_HEADERS1}
      ${EVE_HEADERS2}
    SOURCES
      ${EVE_SOURCES}
    LIBRARIES
      OpenGL::GL
      OpenGL::GLU
      ${FTGL_LIBRARIES}
      ${GLEW_LIBRARIES}
    DEPENDENCIES
      Core
      EG
      Ged
      Geom
      RGL
      Physics
  )

  target_include_directories(Eve PRIVATE
    ${FTGL_INCLUDE_DIRS} ${GLEW_INCLUDE_DIRS})
endif()
