# -*- python -*-

import os
import glob
import sys

Import('env libraries')

gtkmm = env.Copy()
gtkmm.Merge ([ libraries['sigc'], libraries['gtk'] ])

#
# let it find its own headers
#

gtkmm.Append (CPPPATH = [ '#libs/gtkmm', '#libs/gtkmm/gdk--', '#libs/gtkmm/src'])

gtkmm_files = Split("""
gdk--/gdk--/bitmap.cc
gdk--/gdk--/color.cc
gdk--/gdk--/colormap.cc
gdk--/gdk--/cursor.cc
gdk--/gdk--/drawable.cc
gdk--/gdk--/font.cc
gdk--/gdk--/gc.cc
gdk--/gdk--/image.cc
gdk--/gdk--/main.cc
gdk--/gdk--/pixmap.cc
gdk--/gdk--/types.cc
gdk--/gdk--/visual.cc
gdk--/gdk--/window.cc
src/gtk--/accelgroup.cc
src/gtk--/accellabel.cc
src/gtk--/adjustment.cc
src/gtk--/alignment.cc
src/gtk--/arrow.cc
src/gtk--/aspectframe.cc
src/gtk--/base.cc
src/gtk--/bin.cc
src/gtk--/box.cc
src/gtk--/button.cc
src/gtk--/buttonbox.cc
src/gtk--/calendar.cc
src/gtk--/checkbutton.cc
src/gtk--/checkmenuitem.cc
src/gtk--/clist.cc
src/gtk--/colorselection.cc
src/gtk--/combo.cc
src/gtk--/container.cc
src/gtk--/ctree.cc
src/gtk--/curve.cc
src/gtk--/data.cc
src/gtk--/dialog.cc
src/gtk--/drawingarea.cc
src/gtk--/editable.cc
src/gtk--/entry.cc
src/gtk--/eventbox.cc
src/gtk--/fileselection.cc
src/gtk--/fixed.cc
src/gtk--/fontselection.cc
src/gtk--/frame.cc
src/gtk--/gtk--.cc
src/gtk--/handlebox.cc
src/gtk--/image.cc
src/gtk--/inputdialog.cc
src/gtk--/invisible.cc
src/gtk--/item.cc
src/gtk--/label.cc
src/gtk--/layout.cc
src/gtk--/list.cc
src/gtk--/listitem.cc
src/gtk--/main.cc
src/gtk--/marshal.cc
src/gtk--/menu.cc
src/gtk--/menubar.cc
src/gtk--/menuitem.cc
src/gtk--/menushell.cc
src/gtk--/misc.cc
src/gtk--/notebook.cc
src/gtk--/object.cc
src/gtk--/optionmenu.cc
src/gtk--/packer.cc
src/gtk--/paned.cc
src/gtk--/pixmap.cc
src/gtk--/plug.cc
src/gtk--/preview.cc
src/gtk--/progress.cc
src/gtk--/progressbar.cc
src/gtk--/proxy.cc
src/gtk--/radiobutton.cc
src/gtk--/radiomenuitem.cc
src/gtk--/range.cc
src/gtk--/ruler.cc
src/gtk--/scale.cc
src/gtk--/scrollbar.cc
src/gtk--/scrolledwindow.cc
src/gtk--/separator.cc
src/gtk--/socket.cc
src/gtk--/spinbutton.cc
src/gtk--/statusbar.cc
src/gtk--/style.cc
src/gtk--/table.cc
src/gtk--/tearoffmenuitem.cc
src/gtk--/text.cc
src/gtk--/tipsquery.cc
src/gtk--/togglebutton.cc
src/gtk--/toolbar.cc
src/gtk--/tooltips.cc
src/gtk--/tree.cc
src/gtk--/treeitem.cc
src/gtk--/viewport.cc
src/gtk--/widget.cc
src/gtk--/window.cc
src/gtk--/wrap.cc
""")

gtkmm.Append(CXXFLAGS='-DHAVE_CONFIG_H')
gtkmm.Append(CXXFLAGS='-DGTKMM_IMPLEMENTATION')
gtkmm.Append(CXXFLAGS='-DG_LOG_DOMAIN=\\\"Gtk--\\\"')


def canExecute(name):
    sys.stdout.write('Checking for executable ' + name + ' ...')
    if not os.environ.has_key ('PATH'):
        sys.stdout.write ("no PATH variable. What's going on?\n");
        return False
    path = os.environ['PATH']
    for f in [ os.path.join (dir, name) for dir in path.split (':') ]:
        if os.access(f, os.X_OK):
            sys.stdout.write ("yes\n");
            return True
    sys.stdout.write ("no\n");
    return False

if canExecute ('gtk-config') != True:
    print """
    Cannot find the "gtk-config" command. This normally means that you either
    have not installed Gtk+ 1.2, or that you have installed in a place not
    mentioned in your PATH setting
    """
    sys.exit ()

config_h_in = gtkmm.Command('config.h.in', 'SConscript', 'cd libs/gtkmm && sh ./autogen.sh', ENV = os.environ)
config_h = gtkmm.Command([ 'config.h', 'gdk--config.h', 'gtk--config.h' ],
                         [ 'config.h.in', 'gdk--config.h.in', 'gtk--config.h.in'],
                         'cd libs/gtkmm && ./configure', ENV = os.environ)

libgtkmm = gtkmm.StaticLibrary('gtkmm', gtkmm_files)
Default([config_h_in, config_h, libgtkmm])

env.Alias('tarball', env.Distribute (env['DISTTREE'],
                                     [ 'SConscript', 
                                       'gdk--config.h.in',
                                       'gtk--config.h.in',
                                       'NEWS', 'README', 'AUTHORS', 'ChangeLog',
                                       'configure.ac', 'autogen.sh',
                                       'Makefile.am',
                                       'src/gtk--/private/Makefile.am',
                                       'src/gtk--/Makefile.am',
                                       'src/Makefile.am',
                                       'gdk--/Makefile.am',
                                       'gdk--/gdk--/Makefile.am',
                                       'src/gtk--/private',
                                       'gdk--/gdk--.h',
                                       'src/gtk--.h'
                                       ] +
                                     glob.glob('gdk--/gdk--/*.h') +
                                     glob.glob('src/gtk--/*.h') +
                                     gtkmm_files))
