SubDir TOP apps tools viewmesh ;

if $(CEGUI.AVAILABLE) = "yes"
{
  Description viewmesh : "mesh viewing utility" ;
  Application viewmesh : [ Wildcard *.cpp *.h ] ;
  LinkWith viewmesh : crystalspace ;
  CFlags viewmesh : $(COMPILER.C++FLAGS.EXCEPTIONS.ENABLE) ;
  MsvcCFlags viewmesh : "/D CS_HAVE_CAL3D" ;
  ExternalLibs viewmesh : CEGUI ;
  if $(CAL3D.AVAILABLE) = yes
  {
    CFlags viewmesh : [ FDefines CS_HAVE_CAL3D ] ;
    ExternalLibs viewmesh : CAL3D ;
  }
  FileListEntryApplications viewmesh : app-tool ;


  SubVariant static ;
  Description viewmesh_static : "mesh viewing utility (static build)" ;
  Application viewmesh_static : [ Wildcard *.cpp *.h ] : nohelp independent noinstall ;
  CFlags viewmesh_static : [ FDefines CS_STATIC_LINKED ] $(COMPILER.C++FLAGS.EXCEPTIONS.ENABLE) ;
  MsvcCFlags viewmesh_static : "/D CS_HAVE_CAL3D" ;
  LinkWith viewmesh_static : crystalspace ;
  ExternalLibs viewmesh_static : CEGUI ;
  FileListEntryApplications viewmesh_static : app-tool-static ;

  VIEWMESH.PLUGINLIST =
    animesh
    animeshldr
    bezier
    bezierldr
    bruteblock
    bugplug
    csbmpimg
    cscegui
    csddsimg
    csgifimg
    csopcode
    csparser
    cssaver
    cssynldr
    dsplex
    emit
    emitldr
    engine
    frustvis
    genmesh
    gmeshanim
    gmeshldr
    gmeshskelanim2
    haze
    hazeldr
    imgplex
    nullmesh
    particles
    particlesldr
    protomesh
    protomeshldr
    ptpdlight
    rendloop_loader
    rendstep_std
    rendstep_stencil
    reporter
    sequence
    shadermgr
    shaderweaver
    simpleformer
    simpleformerldr
    skeleton
    skeleton2
    skeleton2ldr
    skelldr
    sndmanager
    sndsysnull
    spr2d
    spr2dldr
    spr3d
    spr3dldr
    stdpt
    stdrep
    terrainldr
    thing
    thingldr
    vproc_std
    xmlread
    xmlshader
    ;

  if $(ZLIB.AVAILABLE) = "yes"
  {
    VIEWMESH.PLUGINLIST += vfs ;
  }
  if $(JPEG.AVAILABLE) = "yes"
  {
    VIEWMESH.PLUGINLIST += csjpgimg ;
  }
  if $(PNG.AVAILABLE) = "yes"
  {
    VIEWMESH.PLUGINLIST += cspngimg ;
  }
  if $(CAL3D.AVAILABLE) = "yes"
  {
    VIEWMESH.PLUGINLIST += sprcal3d sprcal3dldr ;
    CFlags viewmesh_static : [ FDefines CS_HAVE_CAL3D ] ;
    ExternalLibs viewmesh_static : CAL3D ;
  }

  # Plugins needed by renderers
  if $(X11.AVAILABLE) = "yes"
  {
    VIEWMESH.PLUGINLIST += xwin xextshm ;
    if $(XFREE86VM.AVAILABLE) = "yes" { VIEWMESH.PLUGINLIST += xext86vm ; }
  }
  if $(GL.AVAILABLE) = "yes"
  {
    VIEWMESH.PLUGINLIST += gl3d glshader_arb glshader_fixed ;
    # GL canvases
    if $(GLX.AVAILABLE) = "yes" { VIEWMESH.PLUGINLIST += glx2d ; }
    if $(TARGET.OS) = "WIN32" { VIEWMESH.PLUGINLIST += glwin32 ; }
    if $(TARGET.OS) = "MACOS_X" { VIEWMESH.PLUGINLIST += glosx2d ; }

    if $(CG.AVAILABLE) = "yes" { VIEWMESH.PLUGINLIST += glshader_cg ; }
  }
  else
  {
    VIEWMESH.PLUGINLIST += soft3d softshader ;

    # Software canvases.
    if $(X11.AVAILABLE) = "yes" { VIEWMESH.PLUGINLIST += x2d ; }
    if $(DIRECTX.AVAILABLE) = "yes" { VIEWMESH.PLUGINLIST += ddraw2d ; }
    if $(TARGET.OS) = "MACOS_X" { VIEWMESH.PLUGINLIST += cgdriver2d ; }
    #if $(LIBCACA.AVAILABLE) = "yes" { VIEWMESH.PLUGINLIST += cacacanvas ; }
  }

  LinkStaticPlugins viewmesh_static : $(VIEWMESH.PLUGINLIST) ;
  SubVariant ;
}

