#!/usr/bin/env python from waflib.extras import autowaf as autowaf import os import sys # Version of this package (even if built as a child) MAJOR = '2' MINOR = '24' MICRO = '23' LIBYDK_VERSION = "%s.%s.%s" % (MAJOR, MINOR, MICRO) I18N_PACKAGE = 'libytk' libytk_sources = [ 'fnmatch.c', 'gtkaboutdialog.c', 'gtkaccelgroup.c', 'gtkaccellabel.c', 'gtkaccelmap.c', 'gtkaccessible.c', 'gtkaction.c', 'gtkactiongroup.c', 'gtkactivatable.c', 'gtkadjustment.c', 'gtkaliasdef.c', 'gtkalignment.c', 'gtkarrow.c', 'gtkaspectframe.c', 'gtkassistant.c', 'gtkbbox.c', 'gtkbin.c', 'gtkbindings.c', 'gtkbox.c', 'gtkbuildable.c', 'gtkbuilder.c', 'gtkbuilderparser.c', 'gtkbutton.c', 'gtkcelleditable.c', 'gtkcelllayout.c', 'gtkcellrenderer.c', 'gtkcellrendereraccel.c', 'gtkcellrenderercombo.c', 'gtkcellrendererpixbuf.c', 'gtkcellrendererprogress.c', 'gtkcellrendererspin.c', 'gtkcellrendererspinner.c', 'gtkcellrenderertext.c', 'gtkcellrenderertoggle.c', 'gtkcellview.c', 'gtkcheckbutton.c', 'gtkcheckmenuitem.c', 'gtkcolorbutton.c', 'gtkcolorsel.c', 'gtkcolorseldialog.c', 'gtkcombobox.c', 'gtkcomboboxentry.c', 'gtkcomboboxtext.c', 'gtkcontainer.c', 'gtkdialog.c', 'gtkdrawingarea.c', 'gtkeditable.c', 'gtkentry.c', 'gtkentrybuffer.c', 'gtkentrycompletion.c', 'gtkeventbox.c', 'gtkexpander.c', 'gtkfilechooser.c', 'gtkfilechooserbutton.c', 'gtkfilechooserdefault.c', 'gtkfilechooserdialog.c', 'gtkfilechooserembed.c', 'gtkfilechooserentry.c', 'gtkfilechoosersettings.c', 'gtkfilechooserutils.c', 'gtkfilechooserwidget.c', 'gtkfilefilter.c', 'gtkfilesystem.c', 'gtkfilesystemmodel.c', 'gtkfixed.c', 'gtkfontbutton.c', 'gtkfontsel.c', 'gtkframe.c', 'gtkgc.c', 'gtkhandlebox.c', 'gtkhbbox.c', 'gtkhbox.c', 'gtkhpaned.c', 'gtkhruler.c', 'gtkhscale.c', 'gtkhscrollbar.c', 'gtkhseparator.c', 'gtkhsv.c', 'gtkiconcache.c', 'gtkiconcachevalidator.c', 'gtkiconfactory.c', 'gtkicontheme.c', 'gtkiconview.c', 'gtkimage.c', 'gtkimagemenuitem.c', 'gtkimcontext.c', 'gtkimcontextsimple.c', 'gtkimmodule.c', 'gtkimmulticontext.c', 'gtkinfobar.c', 'gtkinvisible.c', 'gtkitem.c', 'gtkkeyhash.c', 'gtklabel.c', 'gtklayout.c', 'gtklinkbutton.c', 'gtkliststore.c', 'gtkmain.c', 'gtkmarshal.c', 'gtkmarshalers.c', 'gtkmenu.c', 'gtkmenubar.c', 'gtkmenuitem.c', 'gtkmenushell.c', 'gtkmenutoolbutton.c', 'gtkmessagedialog.c', 'gtkmisc.c', 'gtkmnemonichash.c', 'gtkmodules.c', 'gtkmountoperation.c', 'gtknotebook.c', 'gtkobject.c', 'gtkoffscreenwindow.c', 'gtkoptionmenu.c', 'gtkorientable.c', 'gtkpaned.c', 'gtkpango.c', 'gtkpathbar.c', 'gtkplug.c', 'gtkprogress.c', 'gtkprogressbar.c', 'gtkquery.c', 'gtkradioaction.c', 'gtkradiobutton.c', 'gtkradiomenuitem.c', 'gtkradiotoolbutton.c', 'gtkrange.c', 'gtkrbtree.c', 'gtkrc.c', 'gtkrecentaction.c', 'gtkrecentchooser.c', 'gtkrecentchooserdefault.c', 'gtkrecentchooserdialog.c', 'gtkrecentchoosermenu.c', 'gtkrecentchooserutils.c', 'gtkrecentchooserwidget.c', 'gtkrecentfilter.c', 'gtkrecentmanager.c', 'gtkruler.c', 'gtkscale.c', 'gtkscalebutton.c', 'gtkscrollbar.c', 'gtkscrolledwindow.c', 'gtksearchengine.c', 'gtksearchenginesimple.c', 'gtkselection.c', 'gtkseparator.c', 'gtkseparatormenuitem.c', 'gtkseparatortoolitem.c', 'gtksettings.c', 'gtkshow.c', 'gtksizegroup.c', 'gtksocket.c', 'gtkspinbutton.c', 'gtkspinner.c', 'gtkstatusbar.c', 'gtkstock.c', 'gtkstyle.c', 'gtktable.c', 'gtktearoffmenuitem.c', 'gtktextbtree.c', 'gtktextbuffer.c', 'gtktextbufferrichtext.c', 'gtktextbufferserialize.c', 'gtktextchild.c', 'gtktextdisplay.c', 'gtktextiter.c', 'gtktextlayout.c', 'gtktextmark.c', 'gtktextsegment.c', 'gtktexttag.c', 'gtktexttagtable.c', 'gtktexttypes.c', 'gtktextutil.c', 'gtktextview.c', 'gtkthemes.c', 'gtktoggleaction.c', 'gtktogglebutton.c', 'gtktoggletoolbutton.c', 'gtktoolbar.c', 'gtktoolbutton.c', 'gtktoolitem.c', 'gtktoolitemgroup.c', 'gtktoolpalette.c', 'gtktoolshell.c', 'gtktooltip.c', 'gtktooltips.c', 'gtktreedatalist.c', 'gtktreednd.c', 'gtktreemodel.c', 'gtktreemodelfilter.c', 'gtktreemodelsort.c', 'gtktreeselection.c', 'gtktreesortable.c', 'gtktreestore.c', 'gtktreeview.c', 'gtktreeviewcolumn.c', 'gtktypebuiltins.c', 'gtktypeutils.c', 'gtkuimanager.c', 'gtkvbbox.c', 'gtkvbox.c', 'gtkviewport.c', 'gtkvpaned.c', 'gtkvruler.c', 'gtkvscale.c', 'gtkvscrollbar.c', 'gtkvseparator.c', 'gtkwidget.c', 'gtkwindow-decorate.c', 'gtkwindow.c', ] libytk_x11_sources = [ 'gtkclipboard.c', 'gtkdnd.c', 'gtkmountoperation-x11.c', 'gtkplug-x11.c', 'gtkrelocation.c', 'gtksocket-x11.c', 'gtkxembed.c', ] libytk_quartz_sources = [ 'gtkclipboard-quartz.c', 'gtkdnd-quartz.c', 'gtkmountoperation-stub.c', 'gtkplug-stub.c', 'gtkquartz.c', 'gtkrelocation.c', 'gtksearchenginequartz.c', 'gtksocket-stub.c', ] libytk_win32_sources = [ 'gtkclipboard.c', 'gtkdnd.c', 'gtkplug-win32.c', 'gtksocket-win32.c', 'gtkwin32embed.c', 'gtkwin32embedwidget.c', 'gtkmountoperation-stub.c', ] def options(opt): pass def configure(conf): if conf.is_defined('YTK'): autowaf.check_pkg(conf, 'glib-2.0', uselib_store='GLIB', atleast_version='2.28', mandatory=True) autowaf.check_pkg(conf, 'pango', uselib_store='PANGO', atleast_version='1.20', mandatory=True) autowaf.check_pkg(conf, 'cairo', uselib_store='CAIRO', atleast_version='1.12', mandatory=True) autowaf.check_pkg(conf, 'pangocairo', uselib_store='PANGOCAIRO', mandatory=True) autowaf.check_pkg(conf, 'gmodule-2.0', uselib_store='GMODULE', mandatory=True) if conf.env['build_target'] != 'mingw' and sys.platform != 'darwin': # Linux autowaf.check_pkg(conf, 'x11', uselib_store='X11', system=True, mandatory=True) autowaf.check_pkg(conf, 'xext', uselib_store='XEXT', system=True, mandatory=True) def build(bld): if not bld.is_defined('YTK'): return obj = bld.shlib(features = 'c cshlib') obj.cflags = [ bld.env['compiler_flags_dict']['pic'], '-w' ] obj.export_includes = ['ytk'] obj.includes = ['.', '..', 'ytk', 'ytk/gtk'] obj.name = 'libytk' obj.target = 'ytk' obj.use = [ 'libztk', 'libydk-pixbuf', 'libydk' ] obj.uselib = 'GLIB GIO PANGO CAIRO PANGOCAIRO GMODULE' obj.defines = [ 'HAVE_CONFIG_H', '_LARGEFILE64_SOURCE', '_REENTRANT', 'G_LOG_DOMAIN="Gtk"', 'GTK_COMPILATION', '_FILE_OFFSET_BITS=64', 'GTK_DISABLE_DEPRECATED', 'G_DISABLE_CAST_CHECKS', 'G_DISABLE_SINGLE_INCLUDES', 'DATK_DISABLE_SINGLE_INCLUDES', 'GDK_PIXBUF_DISABLE_SINGLE_INCLUDES', 'GTK_DISABLE_SINGLE_INCLUDES', 'GDK_PIXBUF_DISABLE_DEPRECATED', 'GTK_PRINT_BACKENDS="file,lpr"', 'GTK_PRINT_BACKEND_ENABLE_UNSUPPORTED', 'GTK_PRINT_PREVIEW_COMMAND=""', 'GTK_VERSION="2.24.23"', 'GTK_BINARY_VERSION="2.10.0"', 'GTK_HOST="ardour"', 'PACKAGE="' + I18N_PACKAGE + '"', 'GETTEXT_PACKAGE="' + I18N_PACKAGE + '"', 'GTK_DATA_PREFIX="' + bld.env['PREFIX'] + '"', 'GTK_SYSCONFDIR="' + bld.env['SYSCONFDIR'] + '"', 'GTK_DATA_DIR="' + bld.env['DATADIR'] + '"', 'GTK_LIBDIR="' + bld.env['LIBDIR'] + '"', ] obj.vnum = LIBYDK_VERSION obj.install_path = bld.env['LIBDIR'] if sys.platform == 'darwin': obj.source = libytk_sources + libytk_quartz_sources obj.cflags += ['-xobjective-c'] obj.uselib += ' OSX' # -framework Cocoa -framework CoreFoundation -framework ApplicationServices elif bld.env['build_target'] == 'mingw': obj.source = libytk_sources + libytk_win32_sources obj.defines += [ 'INSIDE_GTK_WIN32', 'DLL_EXPORT', 'PIC' ] obj.ldflags = '-limm32 -lole32 -lgdi32 -lcomdlg32 -lwinspool -lcomctl32 -luuid' obj.linkflags = ['-Wl,--export-all-symbols'] else: obj.source = libytk_sources + libytk_x11_sources obj.uselib += ' X11 XEXT' # i18n if bld.is_defined('ENABLE_NLS'): mo_files = bld.path.ant_glob('po/*.mo') for mo in mo_files: lang = os.path.basename(mo.srcpath()).replace('.mo', '') bld.install_as(os.path.join(bld.env['LOCALEDIR'], lang, 'LC_MESSAGES', I18N_PACKAGE + bld.env['MAJOR'] + '.mo'), mo) def i18n(bld): autowaf.build_i18n(bld, '.', 'libs/tk/ytk', I18N_PACKAGE + bld.env['MAJOR'], libytk_sources) def i18n_pot(bld): autowaf.build_i18n(bld, '.', 'libs/tk/ytk', I18N_PACKAGE + bld.env['MAJOR'], libytk_sources) def i18n_po(bld): autowaf.build_i18n_po(bld, '.', 'libs/tk/ytk', I18N_PACKAGE + bld.env['MAJOR'], libytk_sources) def i18n_mo(bld): autowaf.build_i18n_mo(bld, '.', 'libs/tk/ytk', I18N_PACKAGE + bld.env['MAJOR'], libytk_sources)