SubDir TOP apps tools viewmesh ;

if $(CEGUI.AVAILABLE) = "yes"
{
  VIEWMESH.SOURCES = [ Filter [ Wildcard *.cpp *.h ] : cal3dasset.cpp ] ;
  if $(CAL3D.AVAILABLE) = yes
  {
    VIEWMESH.SOURCES += cal3dasset.cpp ;
  }
  
  Description viewmesh : "mesh viewing utility" ;
  Application viewmesh : $(VIEWMESH.SOURCES) ;
  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 : $(VIEWMESH.SOURCES) : 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
    bindoc
    bruteblock
    bugplug
    cameramanager
    csbmpimg
    cscegui
    csddsimg
    csfont
    csgifimg
    csopcode
    csparser
    cssaver
    cssynldr
    dsplex
    emit
    emitldr
    engine
    fontplex
    frustvis
    genmesh
    gmeshanim
    gmeshanimpdl
    gmeshldr
    gmeshskelanim2
    haze
    hazeldr
    imgplex
    nullmesh
    particles
    particlesldr
    protomesh
    protomeshldr
    ptpdlight
    rendloop_loader
    rendstep_std
    rendstep_stencil
    reporter
    rm_rlcompat
    rm_unshadowed
    rm_shadow_pssm
    sequence
    shadermgr
    shaderweaver
    simpleformer
    simpleformerldr
    skeleton
    skeleton2
    skeleton2ldr
    skelldr
    sndmanager
    sndsysnull
    spr2d
    spr2dldr
    spr3d
    spr3dldr
    stdpt
    stdrep
    terrainldr
    texthud
    vproc_std
    xmlread
    xmlshader
    ;

  if $(ZLIB.AVAILABLE) = "yes"
  {
    VIEWMESH.PLUGINLIST += vfs ;
  }
  if $(JPEG.AVAILABLE) = "yes"
  {
    VIEWMESH.PLUGINLIST += csjpgimg ;
  }
  if $(MNG.AVAILABLE) = "yes" && $(JPEG.AVAILABLE) = "yes" && $(ZLIB.AVAILABLE) = "yes"
  {
    VIEWMESH.PLUGINLIST += csjngimg ;
  }
  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 ;
    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 ; }
  }

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