# -*- python -*-
##
## SConscript  -  SCons buildscript for the Lumiera Application.
##                Definitions how to build the main tree
##

from Buildhelper import srcSubtree
from Buildhelper import scanSubtree

Import('env icons config')

# define the source file/dirs comprising each artifact to be built.

lLib   = env.SharedLibrary('lumierasupport', srcSubtree('lib'),                             install=True)
lApp   = env.SharedLibrary('lumieracommon',  srcSubtree('common'), addLibs=lLib,            install=True)
lVault = env.SharedLibrary('lumieravault',   srcSubtree('vault'),  addLibs=lLib+lApp,       install=True)
lSteam = env.SharedLibrary('lumierasteam',   srcSubtree('steam'),  addLibs=lLib+lApp+lVault,install=True)

            # in reverse dependency order
core        = lSteam+lVault+lApp+lLib    # used to build the core application
app_lib     = lApp+lLib                  # use to link against the platform
core_lib    = core                       # use to link against the core application
vault_lib   = lVault+app_lib             # use to link against the low-level backend
support_lib = lLib                       # use to link against the support lib only

lumiera = ( env.Program('lumiera', ['lumiera/main.cpp'] + core, install=True)
          + config
          )

# Install the lumiera application:
# symlink the executable into the bin dir
env.SymLink('#$DESTDIR/bin/lumiera',env.path.installExe+'lumiera','../lib/lumiera/lumiera')


# building Lumiera Plugins
plugins = [] # currently none 


# the Lumiera GTK GUI
envGtk = env.Clone()
envGtk.mergeConf(['gtkmm-3.0','sigc++-2.0','gthread-2.0','cairomm-1.0','gdl','xv','x11','xext','sm'])

guimodule = envGtk.LumieraPlugin('gtk_gui', srcSubtree('stage') + core, install=True)
resources = ( [env.GuiResource(f) for f in scanSubtree('stage', ['*.css'])]         # note: collected into one target dir
            )
gui       = ( guimodule
            + resources
            + icons
            )


Export('lumiera core core_lib app_lib vault_lib support_lib plugins envGtk guimodule gui')
