pygtk-2.24.0/0000755000175000017500000000000011545327531007744 500000000000000pygtk-2.24.0/config.h.in0000644000175000017500000000516711545325676011730 00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if you have the `bind_textdomain_codeset' function. */ #undef HAVE_BIND_TEXTDOMAIN_CODESET /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* If Gtk 2.10 was found */ #undef HAVE_GTK_2_10 /* If Gtk 2.12 was found */ #undef HAVE_GTK_2_12 /* If Gtk 2.14 was found */ #undef HAVE_GTK_2_14 /* If Gtk 2.16 was found */ #undef HAVE_GTK_2_16 /* If Gtk 2.18 was found */ #undef HAVE_GTK_2_18 /* If Gtk 2.20 was found */ #undef HAVE_GTK_2_20 /* If Gtk 2.22 was found */ #undef HAVE_GTK_2_22 /* If Gtk 2.24 was found */ #undef HAVE_GTK_2_24 /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* whether to include numeric python support */ #undef HAVE_NUMPY /* Define to 1 if pycairo is available */ #undef HAVE_PYCAIRO /* Define to 1 if PySignal_SetWakeupFd is available */ #undef HAVE_PYSIGNAL_SETWAKEUPFD /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* pycairo major version */ #undef PYCAIRO_MAJOR_VERSION /* pycairo micro version */ #undef PYCAIRO_MICRO_VERSION /* pycairo minor version */ #undef PYCAIRO_MINOR_VERSION /* PyGtk major version */ #undef PYGTK_MAJOR_VERSION /* PyGtk micro version */ #undef PYGTK_MICRO_VERSION /* PyGtk minor version */ #undef PYGTK_MINOR_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION pygtk-2.24.0/examples/0000755000175000017500000000000011545327521011561 500000000000000pygtk-2.24.0/examples/Makefile.in0000644000175000017500000005200011545325677013555 00000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = examples DIST_COMMON = $(demo_PYTHON) $(pygtklib_PYTHON) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(demodir)" \ "$(DESTDIR)$(pygtklibdir)" "$(DESTDIR)$(demoimgdir)" SCRIPTS = $(bin_SCRIPTS) SOURCES = DIST_SOURCES = py_compile = $(top_srcdir)/py-compile DATA = $(demoimg_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ ATK_CFLAGS = @ATK_CFLAGS@ ATK_LIBS = @ATK_LIBS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODEGENDIR = @CODEGENDIR@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GTK210_CFLAGS = @GTK210_CFLAGS@ GTK210_LIBS = @GTK210_LIBS@ GTK212_CFLAGS = @GTK212_CFLAGS@ GTK212_LIBS = @GTK212_LIBS@ GTK214_CFLAGS = @GTK214_CFLAGS@ GTK214_LIBS = @GTK214_LIBS@ GTK216_CFLAGS = @GTK216_CFLAGS@ GTK216_LIBS = @GTK216_LIBS@ GTK218_CFLAGS = @GTK218_CFLAGS@ GTK218_LIBS = @GTK218_LIBS@ GTK220_CFLAGS = @GTK220_CFLAGS@ GTK220_LIBS = @GTK220_LIBS@ GTK222_CFLAGS = @GTK222_CFLAGS@ GTK222_LIBS = @GTK222_LIBS@ GTK224_CFLAGS = @GTK224_CFLAGS@ GTK224_LIBS = @GTK224_LIBS@ GTKUNIXPRINT_CFLAGS = @GTKUNIXPRINT_CFLAGS@ GTKUNIXPRINT_LIBS = @GTKUNIXPRINT_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ HAVE_GTK_2_10 = @HAVE_GTK_2_10@ HAVE_GTK_2_12 = @HAVE_GTK_2_12@ HAVE_GTK_2_14 = @HAVE_GTK_2_14@ HAVE_GTK_2_16 = @HAVE_GTK_2_16@ HAVE_GTK_2_18 = @HAVE_GTK_2_18@ HAVE_GTK_2_20 = @HAVE_GTK_2_20@ HAVE_GTK_2_22 = @HAVE_GTK_2_22@ HAVE_GTK_2_24 = @HAVE_GTK_2_24@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBGLADE_CFLAGS = @LIBGLADE_CFLAGS@ LIBGLADE_LIBS = @LIBGLADE_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOCAIRO_CFLAGS = @PANGOCAIRO_CFLAGS@ PANGOCAIRO_LIBS = @PANGOCAIRO_LIBS@ PANGO_CFLAGS = @PANGO_CFLAGS@ PANGO_LIBS = @PANGO_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PYCAIRO_CFLAGS = @PYCAIRO_CFLAGS@ PYCAIRO_LIBS = @PYCAIRO_LIBS@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_DATADIR = @PYGOBJECT_DATADIR@ PYGOBJECT_DEFSDIR = @PYGOBJECT_DEFSDIR@ PYGOBJECT_FIXXREF = @PYGOBJECT_FIXXREF@ PYGOBJECT_INCLUDEDIR = @PYGOBJECT_INCLUDEDIR@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYGOBJECT_PYGDOCS = @PYGOBJECT_PYGDOCS@ PYGTK_CODEGEN_DEFINES = @PYGTK_CODEGEN_DEFINES@ PYGTK_MAJOR_VERSION = @PYGTK_MAJOR_VERSION@ PYGTK_MICRO_VERSION = @PYGTK_MICRO_VERSION@ PYGTK_MINOR_VERSION = @PYGTK_MINOR_VERSION@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADING_CFLAGS = @THREADING_CFLAGS@ VERSION = @VERSION@ XSLTPROC = @XSLTPROC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ pygtklibdir = $(libdir)/pygtk/2.0 pygtklib_PYTHON = pygtk-demo/pygtk-demo.py demodir = $(pygtklibdir)/demos demoimgdir = $(demodir)/images bin_SCRIPTS = pygtk-demo/pygtk-demo CLEANFILES = pygtk-demo/pygtk-demo EXTRA_DIST = pygtk-demo/pygtk-demo.in atk/atk-demo.py \ gobject/editable-interface.py gobject/properties.py \ gobject/signal.py gtk/application.py gtk/bin.py \ gtk/customtreemodel.py gtk/filechooser.py gtk/scrollable.py \ gtk/sizegroup.py gtk/uimanager.py gtk/widget.py \ gtk/testprint.py glade/README glade/test.glade \ glade/autoconnect.py glade/test2.glade glade/glade-demo.py \ ide/README ide/break.xpm ide/browse.py ide/continue.xpm \ ide/edit.py ide/edit.xpm ide/gtkcons.py ide/gtkdb.py \ ide/gtkprof.py ide/minibreak.xpm ide/next.xpm ide/pyide.py \ ide/quit.xpm ide/return.xpm ide/run.xpm ide/step.xpm \ ide/dialogs.py pango/utf8-demo.py pango/pangocairo-simple.py \ pango/extentdemo.py simple/README simple/dnd.py \ simple/dndpixmap.py simple/hello.py simple/scribble.py \ simple/simple.py simple/tooltip.py $(demoimg_DATA) demo_PYTHON = \ pygtk-demo/demos/__init__.py \ pygtk-demo/demos/appwindow.py \ pygtk-demo/demos/buttonbox.py \ pygtk-demo/demos/changedisplay.py \ pygtk-demo/demos/colorsel.py \ pygtk-demo/demos/dialogs.py \ pygtk-demo/demos/dnd.py \ pygtk-demo/demos/dndpixmap.py \ pygtk-demo/demos/editable_cells.py \ pygtk-demo/demos/entry_completion.py \ pygtk-demo/demos/expander.py \ pygtk-demo/demos/hypertext.py \ pygtk-demo/demos/images.py \ pygtk-demo/demos/list_store.py \ pygtk-demo/demos/menu.py \ pygtk-demo/demos/panes.py \ pygtk-demo/demos/pixbufs.py \ pygtk-demo/demos/print_editor.py \ pygtk-demo/demos/sizegroup.py \ pygtk-demo/demos/stock_browser.py \ pygtk-demo/demos/textscroll.py \ pygtk-demo/demos/textview.py \ pygtk-demo/demos/tooltip.py \ pygtk-demo/demos/tree_store.py \ pygtk-demo/demos/treemodel.py \ pygtk-demo/demos/statusicon.py \ pygtk-demo/demos/ui_manager.py \ pygtk-demo/demos/infobar.py demoimg_DATA = \ pygtk-demo/demos/images/alphatest.png \ pygtk-demo/demos/images/apple-red.png \ pygtk-demo/demos/images/background.jpg \ pygtk-demo/demos/images/floppybuddy.gif \ pygtk-demo/demos/images/gnome-applets.png \ pygtk-demo/demos/images/gnome-calendar.png \ pygtk-demo/demos/images/gnome-foot.png \ pygtk-demo/demos/images/gnome-gimp.png \ pygtk-demo/demos/images/gnome-gmush.png \ pygtk-demo/demos/images/gnome-gsame.png \ pygtk-demo/demos/images/gnu-keys.png \ pygtk-demo/demos/images/gtk-logo-rgb.gif all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu examples/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-demoPYTHON: $(demo_PYTHON) @$(NORMAL_INSTALL) test -z "$(demodir)" || $(MKDIR_P) "$(DESTDIR)$(demodir)" @list='$(demo_PYTHON)'; dlist=; list2=; test -n "$(demodir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \ if test -f $$b$$p; then \ $(am__strip_dir) \ dlist="$$dlist $$f"; \ list2="$$list2 $$b$$p"; \ else :; fi; \ done; \ for file in $$list2; do echo $$file; done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(demodir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(demodir)" || exit $$?; \ done || exit $$?; \ if test -n "$$dlist"; then \ if test -z "$(DESTDIR)"; then \ PYTHON=$(PYTHON) $(py_compile) --basedir "$(demodir)" $$dlist; \ else \ PYTHON=$(PYTHON) $(py_compile) --destdir "$(DESTDIR)" --basedir "$(demodir)" $$dlist; \ fi; \ else :; fi uninstall-demoPYTHON: @$(NORMAL_UNINSTALL) @list='$(demo_PYTHON)'; test -n "$(demodir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ filesc=`echo "$$files" | sed 's|$$|c|'`; \ fileso=`echo "$$files" | sed 's|$$|o|'`; \ echo " ( cd '$(DESTDIR)$(demodir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(demodir)" && rm -f $$files || exit $$?; \ echo " ( cd '$(DESTDIR)$(demodir)' && rm -f" $$filesc ")"; \ cd "$(DESTDIR)$(demodir)" && rm -f $$filesc || exit $$?; \ echo " ( cd '$(DESTDIR)$(demodir)' && rm -f" $$fileso ")"; \ cd "$(DESTDIR)$(demodir)" && rm -f $$fileso install-pygtklibPYTHON: $(pygtklib_PYTHON) @$(NORMAL_INSTALL) test -z "$(pygtklibdir)" || $(MKDIR_P) "$(DESTDIR)$(pygtklibdir)" @list='$(pygtklib_PYTHON)'; dlist=; list2=; test -n "$(pygtklibdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \ if test -f $$b$$p; then \ $(am__strip_dir) \ dlist="$$dlist $$f"; \ list2="$$list2 $$b$$p"; \ else :; fi; \ done; \ for file in $$list2; do echo $$file; done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pygtklibdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pygtklibdir)" || exit $$?; \ done || exit $$?; \ if test -n "$$dlist"; then \ if test -z "$(DESTDIR)"; then \ PYTHON=$(PYTHON) $(py_compile) --basedir "$(pygtklibdir)" $$dlist; \ else \ PYTHON=$(PYTHON) $(py_compile) --destdir "$(DESTDIR)" --basedir "$(pygtklibdir)" $$dlist; \ fi; \ else :; fi uninstall-pygtklibPYTHON: @$(NORMAL_UNINSTALL) @list='$(pygtklib_PYTHON)'; test -n "$(pygtklibdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ filesc=`echo "$$files" | sed 's|$$|c|'`; \ fileso=`echo "$$files" | sed 's|$$|o|'`; \ echo " ( cd '$(DESTDIR)$(pygtklibdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pygtklibdir)" && rm -f $$files || exit $$?; \ echo " ( cd '$(DESTDIR)$(pygtklibdir)' && rm -f" $$filesc ")"; \ cd "$(DESTDIR)$(pygtklibdir)" && rm -f $$filesc || exit $$?; \ echo " ( cd '$(DESTDIR)$(pygtklibdir)' && rm -f" $$fileso ")"; \ cd "$(DESTDIR)$(pygtklibdir)" && rm -f $$fileso install-demoimgDATA: $(demoimg_DATA) @$(NORMAL_INSTALL) test -z "$(demoimgdir)" || $(MKDIR_P) "$(DESTDIR)$(demoimgdir)" @list='$(demoimg_DATA)'; test -n "$(demoimgdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(demoimgdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(demoimgdir)" || exit $$?; \ done uninstall-demoimgDATA: @$(NORMAL_UNINSTALL) @list='$(demoimg_DATA)'; test -n "$(demoimgdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(demoimgdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(demoimgdir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(demodir)" "$(DESTDIR)$(pygtklibdir)" "$(DESTDIR)$(demoimgdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-demoPYTHON install-demoimgDATA \ install-pygtklibPYTHON install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binSCRIPTS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binSCRIPTS uninstall-demoPYTHON \ uninstall-demoimgDATA uninstall-pygtklibPYTHON .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-binSCRIPTS install-data install-data-am \ install-demoPYTHON install-demoimgDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-pygtklibPYTHON install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-binSCRIPTS uninstall-demoPYTHON \ uninstall-demoimgDATA uninstall-pygtklibPYTHON pygtk-demo/pygtk-demo: pygtk-demo/pygtk-demo.in @mkdir -p pygtk-demo @sed -e s!\@PYTHON\@!@PYTHON@! \ -e s!\@libdir\@!@libdir@! \ < $< > $@ @chmod a+x $@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: pygtk-2.24.0/examples/gobject/0000755000175000017500000000000011545327521013176 500000000000000pygtk-2.24.0/examples/gobject/editable-interface.py0000644000175000017500000000143111545325345017200 00000000000000import pygtk pygtk.require('2.0') import gtk import gobject class EditableLabel(gtk.Entry, gtk.Editable): def __init__(self, text): gtk.Entry.__init__(self, 100) self.set_text(text) def do_do_delete_text(self, start_pos, end_pos): print "do_do_delete_text", start_pos, end_pos gtk.Entry.do_do_delete_text(self, start_pos, end_pos) gobject.type_register(EditableLabel) if __name__ == '__main__': w = gtk.Window() vbox = gtk.VBox() w.add(vbox) label = EditableLabel("Foo Bar Zbr") vbox.add(label) bt = gtk.Button("delete word") def delete_word(bt): label.delete_text(4, 7) bt.connect("clicked", delete_word) vbox.add(bt) w.connect("destroy", lambda w: gtk.main_quit()) w.show_all() gtk.main() pygtk-2.24.0/examples/gobject/properties.py0000644000175000017500000000263011545325345015667 00000000000000import pygtk pygtk.require('2.0') import gobject class MyObject(gobject.GObject): __gproperties__ = { 'foo': (gobject.TYPE_STRING, 'foo property', 'the foo of the object', 'bar', gobject.PARAM_READWRITE), 'boolprop': (gobject.TYPE_BOOLEAN, 'bool prop', 'a test boolean prop', 0, gobject.PARAM_READABLE), } def __init__(self): self.__gobject_init__() self.foo = 'bar' def do_set_property(self, pspec, value): print ' do_set_property called for %s=%r' % (pspec.name, value) if pspec.name == 'foo': self.foo = value else: raise AttributeError, 'unknown property %s' % pspec.name def do_get_property(self, pspec): print ' do_get_property called for %s' % pspec.name if pspec.name == 'foo': return self.foo elif pspec.name == 'boolprop': return 1 else: raise AttributeError, 'unknown property %s' % pspec.name gobject.type_register(MyObject) print "MyObject properties: ", gobject.list_properties(MyObject) obj = MyObject() val = obj.get_property('foo') print "obj.get_property('foo') == ", val obj.set_property('foo', 'spam') print "obj.set_property('foo', 'spam')" val = obj.get_property('foo') print "obj.get_property('foo') == ", val val = obj.get_property('boolprop') print "obj.get_property('boolprop') == ", val pygtk-2.24.0/examples/gobject/signal.py0000644000175000017500000000152411545325345014751 00000000000000import pygtk pygtk.require("2.0") import gobject class C(gobject.GObject): __gsignals__ = { 'my_signal': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_INT,)) } def __init__(self): self.__gobject_init__() # default constructor using our new GType def do_my_signal(self, arg): print "C: class closure for `my_signal' called with argument", arg class D(C): def do_my_signal(self, arg): print "D: class closure for `my_signal' called. Chaining up to C" C.do_my_signal(self, arg) def my_signal_handler(object, arg, *extra): print "handler for `my_signal' called with argument", arg, \ "and extra args", extra inst = C() inst2 = D() inst.connect("my_signal", my_signal_handler, 1, 2, 3) inst.emit("my_signal", 42) inst2.emit("my_signal", 42) pygtk-2.24.0/examples/pygtk-demo/0000755000175000017500000000000011545327521013641 500000000000000pygtk-2.24.0/examples/pygtk-demo/pygtk-demo.in0000644000175000017500000000026311545325345016174 00000000000000#! @PYTHON@ import sys import os.path pygtklibdir = os.path.join("@libdir@", "pygtk", "2.0") sys.path.insert(0, pygtklibdir) execfile(os.path.join(pygtklibdir, "pygtk-demo.py")) pygtk-2.24.0/examples/pygtk-demo/pygtk-demo.py0000644000175000017500000002572711545325345016232 00000000000000#!/usr/bin/env python ''' $Id$ pygtk-demo.py 2004-07-18: Some enhancements for building the demolist like in gtk-demos of the gtk+ distribution. 2004-07-22: Simple syntaxhighlighting implemented, based on the tokenizer-module. ''' import string import re import pygtk pygtk.require('2.0') import gobject import gtk import pango # use for simple syntax highlighting ;-) import tokenize import keyword import demos D_TEMPL = '%sDemo' # Some programmatic definition for the testgtk_demos list. This avoids extra # maintenance if the demo list grows up. The current definition requires # a class or function with a swapped case name+'Demo' like in the doc string. # Swapped case is build from the __doc__-string programatically. child_demos = {} testgtk_demos = [] for descr, mod in demos.demo_list: # Find some categorized demos try: main, child = descr.split('/') except ValueError: # No, only one application demo_class = D_TEMPL % re.sub('(\S+) *', lambda m:(m.group(1)[0].isupper() and m.group(1) or m.group(1).capitalize()), descr) testgtk_demos.append((descr, mod, demo_class)) else: # Ok. Some more testing demo_class = D_TEMPL % re.sub('(\S+) *', lambda m:(m.group(1)[0].isupper() and m.group(1) or m.group(1).capitalize()), child) try: # Applicationgroup already defined? child_demos[main.upper()].append((child, mod, demo_class)) except KeyError: # No. Start a new category child_demos.setdefault(main.upper(), []).append((child, mod, demo_class)) testgtk_demos.append((main, None, None, child_demos[main.upper()])) ( TITLE_COLUMN, MODULE_COLUMN, FUNC_COLUMN, ITALIC_COLUMN ) = range(4) CHILDREN_COLUMN = 3 class InputStream(object): ''' Simple Wrapper for File-like objects. [c]StringIO doesn't provide a readline function for use with generate_tokens. Using a iterator-like interface doesn't succeed, because the readline function isn't used in such a context. (see /tokenize.py) ''' def __init__(self, data): self.__data = [ '%s\n' % x for x in data.splitlines() ] self.__lcount = 0 def readline(self): try: line = self.__data[self.__lcount] self.__lcount += 1 except IndexError: line = '' self.__lcount = 0 return line class PyGtkDemo(gtk.Window): info_buffer = None source_buffer = None module_cache = {} def __init__(self): gtk.Window.__init__(self) self.set_title("PyGTK Code Demos") self.connect('destroy', lambda w: gtk.main_quit()) self.set_default_size(800, 400) hbox = gtk.HBox(False, 3) self.add(hbox) treeview = self.__create_treeview() hbox.pack_start(treeview, False, False) self.notebook = gtk.Notebook() hbox.pack_start(self.notebook, expand=True) scrolled_window, self.info_buffer = self.__create_text(False) self._new_notebook_page(scrolled_window, '_Info') tag = self.info_buffer.create_tag('title') tag.set_property('font', 'Sans 18') scrolled_window, self.source_buffer = self.__create_text(True) self._new_notebook_page(scrolled_window, '_Source') tag = self.source_buffer.create_tag('source') tag.set_property('font', 'monospace') tag.set_property('pixels_above_lines', 0) tag.set_property('pixels_below_lines', 0) tag = self.source_buffer.create_tag('keyword', foreground='#00007F', weight=pango.WEIGHT_BOLD) tag = self.source_buffer.create_tag('string', foreground='#7F007F') tag = self.source_buffer.create_tag('comment', foreground='#007F00', style=pango.STYLE_ITALIC) self.show_all() def run(self): gtk.main() def _new_notebook_page(self, widget, label): l = gtk.Label('') l.set_text_with_mnemonic(label) self.notebook.append_page(widget, l) def __create_treeview(self): model = gtk.TreeStore( gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_BOOLEAN ) treeview = gtk.TreeView(model) selection = treeview.get_selection() selection.set_mode(gtk.SELECTION_BROWSE) treeview.set_size_request(200, -1) for module in testgtk_demos: iter = model.append(None) model.set(iter, TITLE_COLUMN, module[TITLE_COLUMN], MODULE_COLUMN, module[MODULE_COLUMN], FUNC_COLUMN, module[FUNC_COLUMN], ITALIC_COLUMN, False ) try: children = module[CHILDREN_COLUMN] for child_module in children: child_iter = model.append(iter) model.set(child_iter, TITLE_COLUMN, child_module[TITLE_COLUMN], MODULE_COLUMN, child_module[MODULE_COLUMN], FUNC_COLUMN, child_module[FUNC_COLUMN], ITALIC_COLUMN, False ) except IndexError: pass cell = gtk.CellRendererText() cell.set_property('style', pango.STYLE_ITALIC) column = gtk.TreeViewColumn("Widget (double click for demo)", cell, text=TITLE_COLUMN, style_set=ITALIC_COLUMN) treeview.append_column(column) selection.connect('changed', self.selection_changed_cb) treeview.connect('row-activated', self.row_activated_cb) treeview.expand_all() return treeview def __create_text(self, is_source=False): scrolled_window = gtk.ScrolledWindow() scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) scrolled_window.set_shadow_type(gtk.SHADOW_IN) text_view = gtk.TextView() scrolled_window.add(text_view) buffer = gtk.TextBuffer(None) text_view.set_buffer(buffer) text_view.set_editable(False) text_view.set_cursor_visible(False) text_view.set_wrap_mode(not is_source) return scrolled_window, buffer def row_activated_cb(self, treeview, path, column): model = treeview.get_model() iter = model.get_iter(path) module_name = model.get_value(iter, MODULE_COLUMN) func_name = model.get_value(iter, FUNC_COLUMN) italic_value = model.get_value(iter, ITALIC_COLUMN) if module_name is None: # a "category" row is activated return True try: self.module_cache[module_name].present() except KeyError: module = getattr(demos, module_name) model.set(iter, ITALIC_COLUMN, not italic_value) cmd = 'demos.%s.%s' % (module_name, func_name) #print cmd window = eval(cmd)(self) if window: window.connect('destroy', self.window_closed_cb, model, path) self.module_cache[module_name] = window def selection_changed_cb(self, selection): model, iter = selection.get_selected() if not iter: return False name = model.get_value(iter, MODULE_COLUMN) if name is not None: self.load_module(name) def window_closed_cb (self, window, model, path): iter = model.get_iter(path) module_name = model.get_value(iter, MODULE_COLUMN) del self.module_cache[module_name] italic_value = model.get_value(iter, ITALIC_COLUMN) if italic_value: model.set(iter, ITALIC_COLUMN, not italic_value) def read_module(self, module): filename = module.__file__ if filename[-4:] == '.pyc': filename = filename[:-1] fd = open(filename) return fd.read() def insert_documentation(self, module): buffer = self.info_buffer iter = buffer.get_iter_at_offset(0) lines = string.split(module.__doc__ or '', '\n') buffer.insert(iter, lines[0]) start = buffer.get_iter_at_offset(0) buffer.apply_tag_by_name('title', start, iter) buffer.insert(iter, '\n') for line in lines[1:]: buffer.insert(iter, line) buffer.insert(iter, '\n') def clear_buffers(self): start, end = self.info_buffer.get_bounds() self.info_buffer.delete(start, end) start, end = self.source_buffer.get_bounds() self.source_buffer.delete(start, end) def insert_source(self, data): source_buffer = self.source_buffer iter = source_buffer.get_iter_at_offset(0) last_erow, last_ecol = 0, 0 was_newline = False # multiline statement detection for x in tokenize.generate_tokens(InputStream(data).readline): # x has 5-tuples tok_type, tok_str = x[0], x[1] srow, scol = x[2] erow, ecol = x[3] # The tokenizer 'eats' the whitespaces, so we have to insert this again # if needed. if srow == last_erow: # Same line, spaces between statements if scol != last_ecol: source_buffer.insert_with_tags_by_name(iter, ' '*(scol-last_ecol), 'source') else: # New line. # First: Detect multiline statements. There is no special in the tokenizer stream. if was_newline is False and last_erow != 0: source_buffer.insert_with_tags_by_name(iter, ' \\\n', 'source') # new line check if it starts with col 0 if scol != 0: source_buffer.insert_with_tags_by_name(iter, ' '*scol, 'source') last_erow = erow last_ecol = ecol if tok_type == tokenize.COMMENT: was_newline = True # newline is in tok_str included. source_buffer.insert_with_tags_by_name(iter, tok_str, 'source', 'comment') continue elif tok_type == tokenize.NAME: if tok_str in keyword.kwlist: source_buffer.insert_with_tags_by_name(iter, tok_str, 'source', 'keyword') continue elif tok_type == tokenize.STRING: source_buffer.insert_with_tags_by_name(iter, tok_str, 'source', 'string') continue # No special format for use. Check for newline. was_newline = tok_type in (tokenize.NEWLINE, tokenize.NL) source_buffer.insert_with_tags_by_name(iter, tok_str, 'source') def load_module(self, name): self.clear_buffers() module = getattr(demos, name) if module.__doc__: self.insert_documentation(module) source = self.read_module(module) self.insert_source(source) if __name__ == '__main__': print "PyGTK Demo", print "(gtk: v%d.%d.%d, " % gtk.gtk_version, print "pygtk: v%d.%d.%d)" % gtk.pygtk_version PyGtkDemo().run() pygtk-2.24.0/examples/pygtk-demo/demos/0000755000175000017500000000000011545327521014750 500000000000000pygtk-2.24.0/examples/pygtk-demo/demos/print_editor.py0000644000175000017500000003320211545325345017746 00000000000000"""Print Editor A small demo editor with printing support""" import sys import pygtk pygtk.require('2.0') import gobject import pango import gtk main_window = None filename = None page_setup = None settings = None file_changed = False buffer = None statusbar = None active_prints = [] def update_title(): if filename is None: basename = "Untitled" else: basename = os.path.basename(filename) main_window.set_title("Simple Editor with printing - %s" % basename) def update_statusbar(): statusbar.pop(0) iter = buffer.get_iter_at_mark(buffer.get_insert()) row = iter.get_line() col = iter.get_line_offset() print_str = ""; if active_prints: op = active_prints[0] print_str = op.get_status_string() msg = "%d, %d%s %s" % (row, col, (file_changed and " - Modified" or ""), print_str) statusbar.push(0, msg) def update_ui(): update_title() update_statusbar() def get_text(): start, end = buffer.get_bounds() return buffer.get_text(start, end, False) def set_text(text): buffer.set_text(text) global file_changed file_changed = False update_ui() def do_new(action): global filename filename = None set_text("") def load_file(open_filename): error_dialog = None try: contents = file(open_filename).read() except IOError, ex: error_dialog = gtk.MessageDialog(main_window, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE, "Error loading file %s:\n%s" % (open_filename, str(ex))) else: try: contents = contents.decode("utf-8") except UnicodeDecodeError: error_dialog = gtk.MessageDialog(main_window, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE, "Error loading file %s:\n%s" % (open_filename, "Not valid utf8")) else: set_text(contents) if error_dialog is not None: error_dialog.connect("response", lambda w,resp: w.destroy()) error_dialog.show() def do_open(action): dialog = gtk.FileChooserDialog("Select file", main_window, gtk.FILE_CHOOSER_ACTION_OPEN, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK)) dialog.set_default_response(gtk.RESPONSE_OK) response = dialog.run() if response == gtk.RESPONSE_OK: open_filename = dialog.get_filename() load_file(open_filename) dialog.destroy() def save_file(save_filename): global filename text = get_text() error_dialog = None try: file(save_filename, "w").write(text) except IOError, ex: error_dialog = gtk.MessageDialog(main_window, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE, "Error saving to file %s:\n%s" % (open_filename, str(ex))) error_dialog.connect("response", lambda w,resp: w.destroy()) error_dialog.show() else: if save_filename != filename: filename = save_filename file_changed = False update_ui() def do_save_as(action): dialog = gtk.FileChooserDialog("Select file", main_window, gtk.FILE_CHOOSER_ACTION_SAVE, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_SAVE, gtk.RESPONSE_OK)) dialog.set_default_response(gtk.RESPONSE_OK) response = dialog.run() if response == gtk.RESPONSE_OK: save_filename = dialog.get_filename() save_file(save_filename) dialog.destroy() def do_save(action): if filename is None: do_save_as(action) else: save_file(filename) class PrintData: text = None layout = None page_breaks = None def begin_print(operation, context, print_data): width = context.get_width() height = context.get_height() print_data.layout = context.create_pango_layout() print_data.layout.set_font_description(pango.FontDescription("Sans 12")) print_data.layout.set_width(int(width*pango.SCALE)) print_data.layout.set_text(print_data.text) num_lines = print_data.layout.get_line_count() page_breaks = [] page_height = 0 for line in xrange(num_lines): layout_line = print_data.layout.get_line(line) ink_rect, logical_rect = layout_line.get_extents() lx, ly, lwidth, lheight = logical_rect line_height = lheight / 1024.0 if page_height + line_height > height: page_breaks.append(line) page_height = 0 page_height += line_height operation.set_n_pages(len(page_breaks) + 1) print_data.page_breaks = page_breaks def draw_page(operation, context, page_nr, print_data): assert isinstance(print_data.page_breaks, list) if page_nr == 0: start = 0 else: start = print_data.page_breaks[page_nr - 1] try: end = print_data.page_breaks[page_nr] except IndexError: end = print_data.layout.get_line_count() cr = context.get_cairo_context() cr.set_source_rgb(0, 0, 0) i = 0 start_pos = 0 iter = print_data.layout.get_iter() while 1: if i >= start: line = iter.get_line() _, logical_rect = iter.get_line_extents() lx, ly, lwidth, lheight = logical_rect baseline = iter.get_baseline() if i == start: start_pos = ly / 1024.0; cr.move_to(lx / 1024.0, baseline / 1024.0 - start_pos) cr.show_layout_line(line) i += 1 if not (i < end and iter.next_line()): break def do_page_setup(action): global settings, page_setup if settings is None: settings = gtk.PrintSettings() page_setup = gtk.print_run_page_setup_dialog(main_window, page_setup, settings) def status_changed_cb(op): if op.is_finished(): active_prints.remove(op) update_statusbar() def do_print(action): global settings, page_setup print_data = PrintData() print_data.text = get_text() print_ = gtk.PrintOperation() if settings is not None: print_.set_print_settings(settings) if page_setup is not None: print_.set_default_page_setup(page_setup) print_.connect("begin_print", begin_print, print_data) print_.connect("draw_page", draw_page, print_data) try: res = print_.run(gtk.PRINT_OPERATION_ACTION_PRINT_DIALOG, main_window) except gobject.GError, ex: error_dialog = gtk.MessageDialog(main_window, gtk.DIALOG_DESTROY_WITH_PARENT, gtk._MESSAGE_ERROR, gtk.BUTTONS_CLOSE, ("Error printing file:\n%s" % str(ex))) error_dialog.connect("response", lambda w,resp: w.destroy()) error_dialog.show() else: if res == gtk.PRINT_OPERATION_RESULT_APPLY: settings = print_.get_print_settings() if not print_.is_finished(): active_prints.remove(print_) update_statusbar() print_.connect("status_changed", status_changed_cb) def do_about(action): authors = [ "Alexander Larsson (C version)", "Gustavo Carneiro (Python translation)", ] about = gobject.new(gtk.AboutDialog, name="print test editor", version="0.1", copyright="(C) Red Hat, Inc", comments="Program to demonstrate GTK+ printing.", authors=authors) about.set_transient_for(main_window) about.show() def do_quit(action): if __name__ == '__main__': gtk.main_quit() entries = [ ( "FileMenu", None, "_File" ), # name, stock id, label ( "HelpMenu", None, "_Help" ), # name, stock id, label ( "New", gtk.STOCK_NEW, # name, stock id "_New", "N", # label, accelerator "Create a new file", # tooltip do_new ), ( "Open", gtk.STOCK_OPEN, # name, stock id "_Open","O", # label, accelerator "Open a file", # tooltip do_open ), ( "Save", gtk.STOCK_SAVE, # name, stock id "_Save","S", # label, accelerator "Save current file", # tooltip do_save ), ( "SaveAs", gtk.STOCK_SAVE, # name, stock id "Save _As...", None, # label, accelerator "Save to a file", # tooltip do_save_as ), ( "Quit", gtk.STOCK_QUIT, # name, stock id "_Quit", "Q", # label, accelerator "Quit", # tooltip do_quit ), ( "About", None, # name, stock id "_About", "A", # label, accelerator "About", # tooltip do_about ), ( "PageSetup", None, # name, stock id "Page _Setup", None, # label, accelerator "Set up the page", # tooltip do_page_setup ), ( "Print", gtk.STOCK_PRINT, # name, stock id None, None, # label, accelerator "Print the document", # tooltip do_print ), ] ui_info =""" """ def buffer_changed_callback(buffer): global file_changed file_changed = True update_statusbar() def mark_set_callback(buffer, new_location, mark): update_statusbar() def update_resize_grip(widget, event, statusbar): if event.changed_mask & (gtk.gdk.WINDOW_STATE_MAXIMIZED | gtk.gdk.WINDOW_STATE_FULLSCREEN): maximized = event.new_window_state & (gtk.gdk.WINDOW_STATE_MAXIMIZED | gtk.gdk.WINDOW_STATE_FULLSCREEN) statusbar.set_has_resize_grip(not maximized) def create_window(): global main_window, statusbar, buffer main_window = gtk.Window() main_window.set_default_size(400, 600) if __name__ == '__main__': main_window.connect("delete-event", gtk.main_quit) actions = gtk.ActionGroup("Actions") actions.add_actions(entries) ui = gtk.UIManager() ui.insert_action_group(actions, 0) main_window.add_accel_group(ui.get_accel_group()) main_window.set_border_width(0) ui.add_ui_from_string(ui_info) table = gtk.Table(1, 3, False) main_window.add(table) bar = ui.get_widget("/MenuBar") bar.show() table.attach(bar, # /* X direction */ /* Y direction */ 0, 1, 0, 1, gtk.EXPAND | gtk.FILL, 0, 0, 0) ## Create document sw = gtk.ScrolledWindow() sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) sw.set_shadow_type(gtk.SHADOW_IN) table.attach(sw, # /* X direction */ /* Y direction */ 0, 1, 1, 2, gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL, 0, 0) contents = gtk.TextView() contents.grab_focus() sw.add(contents) ## Create statusbar statusbar = gtk.Statusbar() table.attach(statusbar, #/* X direction */ /* Y direction */ 0, 1, 2, 3, gtk.EXPAND | gtk.FILL, 0, 0, 0); ## Show text widget info in the statusbar */ buffer = contents.get_buffer() buffer.connect_object("changed", buffer_changed_callback, None) buffer.connect_object("mark_set", # cursor moved mark_set_callback, None) main_window.connect_object("window_state_event", update_resize_grip, statusbar, 0) update_ui() main_window.show_all() def main(argv): create_window() try: fname = argv[1] except IndexError: pass else: load_file(fname) gtk.main() def PrintEditorDemo(win): create_window() main_window.set_transient_for(win) return main_window if __name__ == '__main__': sys.exit(main(sys.argv)) pygtk-2.24.0/examples/pygtk-demo/demos/entry_completion.py0000644000175000017500000000410011545325345020631 00000000000000#!/usr/bin/env python '''Entry Completion GtkEntryCompletion provides a mechanism for adding support for completion in GtkEntry. ''' # pygtk version: Maik Hertha import pygtk pygtk.require('2.0') import gtk class EntryCompletionDemo(gtk.Dialog): def __init__(self, parent=None): gtk.Dialog.__init__(self, self.__class__.__name__, parent, 0, (gtk.STOCK_CLOSE, gtk.RESPONSE_NONE)) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.connect("response", lambda d, r: d.destroy()) self.set_resizable(False) vbox = gtk.VBox(False, 5) self.vbox.pack_start(vbox, True, True, 0) vbox.set_border_width(5) label = gtk.Label() label.set_markup("Completion demo, try writing total " "or gnome for example.") vbox.pack_start(label, False, False, 0) # Create our entry entry = gtk.Entry() vbox.pack_start(entry, False, False, 0) # Create the completion object completion = gtk.EntryCompletion() # Assign the completion to the entry entry.set_completion(completion) # Create a tree model and use it as the completion model completion_model = self.__create_completion_model() completion.set_model(completion_model) # Use model column 0 as the text column completion.set_text_column(0) self.show_all() def __create_completion_model(self): ''' Creates a tree model containing the completions. ''' store = gtk.ListStore(str) # Append one word iter = store.append() store.set(iter, 0, "GNOME") # Append another word iter = store.append() store.set(iter, 0, "total") # And another word iter = store.append() store.set(iter, 0, "totally") return store def main(): EntryCompletionDemo() gtk.main() if __name__ == '__main__': main() pygtk-2.24.0/examples/pygtk-demo/demos/stock_browser.py0000644000175000017500000002075011545325345020136 00000000000000#!/usr/bin/env python '''Stock Item and Icon Browser This source code for this demo doesn't demonstrate anything particularly useful in applications. The purpose of the "demo" is just to provide a handy place to browse the available stock icons and stock items. ''' # pygtk version: Maik Hertha import pygtk pygtk.require('2.0') import gobject import gtk import re def id_to_macro(stock_id): if stock_id == '': return '' if stock_id.startswith('gtk'): # gtk-foo-bar -> gtk.STOCK_FOO_BAR macro = 'gtk.STOCK' + \ re.sub('-([^-]+)', lambda m:('_' + m.group(1).upper()), stock_id[3:]) else: # demo-gtk-logo -> DEMO_GTK_LOGO as with custom icon-factories macro = re.sub('([^-]+)-?', lambda m:('_' + m.group(1).upper()), stock_id) macro = macro[1:] # there is a leading '_' always return macro class StockItemInfo(object): def __init__(self, stock_id=''): self.stock_id = stock_id self.stock_item = None self.small_icon = None self.macro = id_to_macro(stock_id) self.accel_str = '' class StockItemDisplay(object): def __init__(self): self.type_label = None self.macro_label = None self.id_label = None self.label_accel_label = None self.icon_image = None def get_largest_size(stockid): ''' Finds the largest size at which the given image stock id is available. This would not be useful for a normal application. ''' set = gtk.icon_factory_lookup_default(stockid) best_size = gtk.ICON_SIZE_INVALID best_pixels = 0 sizes = set.get_sizes() n_sizes = len(sizes) i = 0 while(i < n_sizes): width, height = gtk.icon_size_lookup(sizes[i]) if(width * height > best_pixels): best_size = sizes[i] best_pixels = width * height i += 1 return best_size def macro_set_func_text(tree_column, cell, model, iter): info = model.get_value(iter, 0) cell.set_property("text", info.macro) def id_set_func(tree_column, cell, model, iter): info = model.get_value(iter, 0) cell.set_property("text", info.stock_id) def accel_set_func(tree_column, cell, model, iter): info = model.get_value(iter, 0) cell.set_property("text", info.accel_str) def label_set_func(tree_column, cell, model, iter): info = model.get_value(iter, 0) cell.set_property("text", info.stock_item[1]) class StockItemAndIconBrowserDemo(gtk.Window): def __init__(self, parent=None): gtk.Window.__init__(self) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.set_title(self.__class__.__name__) self.set_default_size(-1, 500) self.set_border_width(8) hbox = gtk.HBox(False, 8) self.add(hbox) sw = gtk.ScrolledWindow() sw.set_shadow_type(gtk.SHADOW_ETCHED_IN) sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) hbox.pack_start(sw, False, False, 0) model = self.__create_model() treeview = gtk.TreeView(model) sw.add(treeview) column = gtk.TreeViewColumn() column.set_title("Macro") cell_renderer = gtk.CellRendererPixbuf() column.pack_start(cell_renderer, False) column.set_attributes(cell_renderer, stock_id=1) cell_renderer = gtk.CellRendererText() column.pack_start(cell_renderer, True) column.set_cell_data_func(cell_renderer, macro_set_func_text) treeview.append_column(column) cell_renderer = gtk.CellRendererText() treeview.insert_column_with_data_func(-1, "Label", cell_renderer, label_set_func) cell_renderer = gtk.CellRendererText() treeview.insert_column_with_data_func(-1, "Accel", cell_renderer, accel_set_func) cell_renderer = gtk.CellRendererText() treeview.insert_column_with_data_func(-1, "ID", cell_renderer, id_set_func) align = gtk.Alignment(0.5, 0.0, 0.0, 0.0) hbox.pack_end(align, False, False, 0) frame = gtk.Frame("Selected Item") align.add(frame) vbox = gtk.VBox(False, 8) vbox.set_border_width(4) frame.add(vbox) display = StockItemDisplay() treeview.set_data("stock-display", display) display.type_label = gtk.Label() display.macro_label = gtk.Label() display.id_label = gtk.Label() display.label_accel_label = gtk.Label() display.icon_image = gtk.Image(); # empty image vbox.pack_start(display.type_label, False, False, 0) vbox.pack_start(display.icon_image, False, False, 0) vbox.pack_start(display.label_accel_label, False, False, 0) vbox.pack_start(display.macro_label, False, False, 0) vbox.pack_start(display.id_label, False, False, 0) selection = treeview.get_selection() selection.set_mode(gtk.SELECTION_SINGLE) selection.connect("changed", self.on_selection_changed) self.show_all() def __create_model(self): store = gtk.ListStore( gobject.TYPE_PYOBJECT, gobject.TYPE_STRING) ids = gtk.stock_list_ids() ids.sort() for data in ids: info = StockItemInfo(stock_id=data) stock_item = gtk.stock_lookup(data) if stock_item: info.stock_item = stock_item else: # stock_id, label, modifier, keyval, translation_domain info.stock_item =('', '', 0, 0, '') # only show icons for stock IDs that have default icons icon_set = gtk.icon_factory_lookup_default(info.stock_id) if icon_set is None: info.small_icon = None else: # See what sizes this stock icon really exists at sizes = icon_set.get_sizes() n_sizes = len(sizes) # Use menu size if it exists, otherwise first size found size = sizes[0]; i = 0; while(i < n_sizes): if(sizes[i] == gtk.ICON_SIZE_MENU): size = gtk.ICON_SIZE_MENU break i += 1 info.small_icon = self.render_icon(info.stock_id, size) if(size != gtk.ICON_SIZE_MENU): # Make the result the proper size for our thumbnail w, h = gtk.icon_size_lookup(gtk.ICON_SIZE_MENU) scaled = info.small_icon.scale_simple(w, h, 'bilinear') info.small_icon = scaled if info.stock_item[3] == 0: info.accel_str = "" else: info.accel_str = \ gtk.accelerator_name(info.stock_item[3], info.stock_item[2]) iter = store.append() store.set(iter, 0, info, 1, info.stock_id) return store def on_selection_changed(self, selection): treeview = selection.get_tree_view() display = treeview.get_data("stock-display") model, iter = selection.get_selected() if iter: info = model.get_value(iter, 0) if(info.small_icon and info.stock_item[1]): display.type_label.set_text("Icon and Item") elif(info.small_icon): display.type_label.set_text("Icon Only") elif(info.stock_item[1]): display.type_label.set_text("Item Only") else: display.type_label.set_text("???????") display.macro_label.set_text(info.macro) display.id_label.set_text(info.stock_id) if(info.stock_item[1]): s = "%s %s" % (info.stock_item[1], info.accel_str) display.label_accel_label.set_text_with_mnemonic(s) else: display.label_accel_label.set_text("") if(info.small_icon): display.icon_image.set_from_stock(info.stock_id, get_largest_size(info.stock_id)) else: display.icon_image.set_from_pixbuf(None) else: display.type_label.set_text("No selected item") display.macro_label.set_text("") display.id_label.set_text("") display.label_accel_label.set_text("") display.icon_image.set_from_pixbuf(None) def main(): StockItemAndIconBrowserDemo() gtk.main() if __name__ == '__main__': main() pygtk-2.24.0/examples/pygtk-demo/demos/menu.py0000644000175000017500000000450711545325345016216 00000000000000#!/usr/bin/env python '''Menu This example demonstrates the use of various menu types in gtk. It demonstrates the new submenu navigation and scrolling menu features of gtk 2.0.''' import pygtk pygtk.require('2.0') import gtk def create_menu(depth, length=5): if depth < 1: return None menu = gtk.Menu() group= None for i in range(length): menuitem = gtk.RadioMenuItem(group, 'item %2d - %d' % (depth, i)) group = menuitem menu.add(menuitem) menuitem.show() if depth > 1: submenu = create_menu(depth - 1) menuitem.set_submenu(submenu) return menu class MenuDemo(gtk.Window): def __init__(self, parent=None): # Create the toplevel window gtk.Window.__init__(self) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.set_title(self.__class__.__name__) vbox = gtk.VBox() self.add(vbox) menubar = gtk.MenuBar() vbox.pack_start(menubar, expand=False) menuitem = gtk.MenuItem('test\nline2') menuitem.set_submenu(create_menu(2, 50)) menubar.add(menuitem) menuitem = gtk.MenuItem('foo') menuitem.set_submenu(create_menu(2)) menubar.add(menuitem) menuitem = gtk.MenuItem('bar') menuitem.set_submenu(create_menu(2)) menuitem.set_right_justified(True) menubar.add(menuitem) vbox2 = gtk.VBox(spacing=10) vbox2.set_border_width(10) vbox.pack_start(vbox2) combo_box = gtk.combo_box_new_text() combo_box.set_wrap_width(2) for i in range(50): combo_box.append_text('item - %d' % i) combo_box.set_active(0) vbox2.pack_start(combo_box) separator = gtk.HSeparator() vbox.pack_start(separator, expand=False) vbox2 = gtk.VBox(spacing=10) vbox2.set_border_width(10) vbox.pack_start(vbox2, expand=False) button = gtk.Button('close') button.connect('clicked', lambda button, w=self: w.destroy()) vbox2.pack_start(button) button.set_flags(gtk.CAN_DEFAULT) button.grab_default() self.show_all() def main(): MenuDemo() gtk.main() if __name__ == '__main__': main() pygtk-2.24.0/examples/pygtk-demo/demos/pixbufs.py0000644000175000017500000001445511545325345016735 00000000000000#!/usr/bin/env python '''Pixbufs A GdkPixbuf represents an image, normally in RGB or RGBA format. Pixbufs are normally used to load files from disk and perform image scaling. This demo is not all that educational, but looks cool. It was written by Extreme Pixbuf Hacker Federico Mena Quintero. It also shows off how to use GtkDrawingArea to do a simple animation. Look at the Image demo for additional pixbuf usage examples.''' # pygtk version: Maik Hertha import os import math import pygtk pygtk.require('2.0') import gobject import gtk FRAME_DELAY = 50 CYCLE_LEN = 60 IMAGE_DIR = os.path.join(os.path.dirname(__file__), 'images') BACKGROUND_NAME = "background.jpg" image_names = [ "apple-red.png", "gnome-applets.png", "gnome-calendar.png", "gnome-foot.png", "gnome-gmush.png", "gnome-gimp.png", "gnome-gsame.png", "gnu-keys.png" ] class PixbufsDemo(gtk.Window): frame = None # frame of the background image background = None # background-pixbuf images = [] # list of pixbufs back_width = 0 # width of background image back_height = 0 # height of background image timeout_id = 0 # timeout id frame_num = 0 # number of the current frame timeout_id = None def __init__(self, parent=None): gtk.Window.__init__(self) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect("destroy", lambda *w: gtk.main_quit()) self.connect("destroy", self.cleanup_callback) self.set_title(self.__class__.__name__) self.set_resizable(False) if not self.load_pixbufs(): dialog = gtk.MessageDialog(self, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE, "Failed to load an image") dialog.connect("response", lambda d, r: d.destroy()) dialog.show() else: self.set_size_request(self.back_width, self.back_height) self.frame = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, self.back_width, self.back_height) da = gtk.DrawingArea() da.connect("expose_event", self.expose_cb) self.add(da) self.timeout_id = gobject.timeout_add(FRAME_DELAY, self.timeout) self.show_all() def load_pixbufs(self): ''' Loads the images for the demo and returns whether the operation succeeded. ''' if self.background is not None: return True # already loaded earlier # look in the the current directory where the file is installed try: self.background = gtk.gdk.pixbuf_new_from_file( os.path.join(IMAGE_DIR, BACKGROUND_NAME)) except gobject.GError, error: return False self.back_width = self.background.get_width() self.back_height = self.background.get_height() for filename in image_names: try: self.images.append(gtk.gdk.pixbuf_new_from_file( os.path.join(IMAGE_DIR, filename))) except gobject.GError, error: return False return True def expose_cb(self, draw_area, event): ''' Expose callback for the drawing area. ''' rowstride = self.frame.get_rowstride() # FIXME: what should be the result, string guchar an integer result? #pixels = frame.get_pixels() + rowstride * event.area.y + event.area.x * 3 #pixels = frame.get_pixels()[len(frame.get_pixels()) + rowstride * event.area.y + event.area.x * 3] pixels = self.frame.get_pixels() draw_area.window.draw_rgb_image( draw_area.style.black_gc, event.area.x, event.area.y, event.area.width, event.area.height, 'normal', pixels, rowstride, event.area.x, event.area.y) return True def cleanup_callback(self, win): if self.timeout_id is not None: gobject.source_remove(self.timeout_id) self.timeout_id = None def timeout(self): ''' Timeout handler to regenerate the frame. ''' self.background.copy_area(0, 0, self.back_width, self.back_height, self.frame, 0, 0) f = float(self.frame_num % CYCLE_LEN) / float(CYCLE_LEN) xmid = self.back_width / 2.0 ymid = self.back_height / 2.0 radius = min(xmid, ymid) / 2.0 N_IMAGES = len(image_names) for i_name in image_names: i = image_names.index(i_name) ang = 2.0 * math.pi * i / N_IMAGES - f * 2.0 * math.pi iw = self.images[i].get_width() ih = self.images[i].get_height() r = radius +(radius / 3.0) * math.sin(f * 2.0 * math.pi) xpos = math.floor(xmid + r * math.cos(ang) - iw / 2.0 + 0.5) ypos = math.floor(ymid + r * math.sin(ang) - ih / 2.0 + 0.5) if i % 2 == 0: k = math.cos(f * 2.0 * math.pi) else: k = math.sin(f * 2.0 * math.pi) k = 2.0 * k * k k = max(0.25, k) # satisfy the c-source r1 = gtk.gdk.Rectangle() r1.x = int(xpos) r1.y = int(ypos) r1.width = iw * k r1.height = ih * k r2 = gtk.gdk.Rectangle() r2.x = 0 r2.y = 0 r2.width = self.back_width r2.height = self.back_height dest = r1.intersect(r2) if dest is not None: if i % 2 == 0: alpha = int( max(127, math.fabs(255 * math.cos(f * 2.0 * math.pi)))) else: alpha = int( max(127, math.fabs(255 * math.sin(f * 2.0 * math.pi)))) self.images[i].composite( self.frame, dest.x, dest.y, dest.width, dest.height, xpos, ypos, k, k, gtk.gdk.INTERP_NEAREST, alpha) if self is not None: self.queue_draw() self.frame_num += 1 return True def main(): PixbufsDemo() gtk.main() if __name__ == '__main__': main() pygtk-2.24.0/examples/pygtk-demo/demos/treemodel.py0000644000175000017500000001042211545325345017223 00000000000000#!/usr/bin/env python '''Tree View/Generic Tree Model This test is designed to demonstrate creating a new type of tree model in python for use with the new tree widget in gtk 2.0.''' import pygtk pygtk.require('2.0') import gtk import gobject # to create a new GtkTreeModel from python, you must derive from # TreeModel. class MyTreeModel(gtk.GenericTreeModel): '''This class represents the model of a tree. The iterators used to represent positions are converted to python objects when passed to the on_* methods. This means you can use any python object to represent a node in the tree. The None object represents a NULL iterator. In this tree, we use simple tuples to represent nodes, which also happen to be the tree paths for those nodes. This model is a tree of depth 3 with 5 nodes at each level of the tree. The values in the tree are just the string representations of the nodes.''' TREE_DEPTH = 4 TREE_SIBLINGS = 5 def __init__(self): '''constructor for the model. Make sure you call PyTreeModel.__init__''' gtk.GenericTreeModel.__init__(self) # the implementations for TreeModel methods are prefixed with on_ def on_get_flags(self): '''returns the GtkTreeModelFlags for this particular type of model''' return 0 def on_get_n_columns(self): '''returns the number of columns in the model''' return 1 def on_get_column_type(self, index): '''returns the type of a column in the model''' return gobject.TYPE_STRING def on_get_path(self, node): '''returns the tree path(a tuple of indices at the various levels) for a particular node.''' return node def on_get_iter(self, path): '''returns the node corresponding to the given path. In our case, the node is the path''' return path def on_get_value(self, node, column): '''returns the value stored in a particular column for the node''' assert column == 0 return `node` def on_iter_next(self, node): '''returns the next node at this level of the tree''' if node != None: if node[-1] == self.TREE_SIBLINGS - 1: # last node at level return None return node[:-1] +(node[-1]+1,) def on_iter_children(self, node): '''returns the first child of this node''' if node == None: # top of tree return(0,) if len(node) >= self.TREE_DEPTH: # no more levels return None return node +(0,) def on_iter_has_child(self, node): '''returns true if this node has children''' return node == None or len(node) < self.TREE_DEPTH def on_iter_n_children(self, node): '''returns the number of children of this node''' if node == None or len(node) < self.TREE_DEPTH: return self.TREE_SIBLINGS else: return 0 def on_iter_nth_child(self, node, n): '''returns the nth child of this node''' if node == None: return(n,) if len(node) < self.TREE_DEPTH and n < self.TREE_SIBLINGS: return node +(n,) else: return None def on_iter_parent(self, node): '''returns the parent of this node''' assert node != None if len(node) == 0: return None else: return node[:-1] class GenericTreeModelDemo(gtk.Window): def __init__(self, parent=None): gtk.Window.__init__(self) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.set_title(self.__class__.__name__) scrolled_window = gtk.ScrolledWindow() scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.add(scrolled_window) model = MyTreeModel() model = model.filter_new() tree_view = gtk.TreeView(model) cell = gtk.CellRendererText() # the text in the column comes from column 0 column = gtk.TreeViewColumn("tuples", cell, text=0) tree_view.append_column(column) scrolled_window.add(tree_view) self.show_all() def main(): GenericTreeModelDemo() gtk.main() if __name__ == '__main__': main() pygtk-2.24.0/examples/pygtk-demo/demos/panes.py0000644000175000017500000000744311545325345016362 00000000000000#!/usr/bin/env python """Paned Widgets The GtkHPaned and GtkVPaned Widgets divide their content area into two panes with a divider in between that the user can adjust. A separate child is placed into each pane. There are a number of options that can be set for each pane. This test contains both a horizontal(HPaned) and a vertical(VPaned) widget, and allows you to adjust the options for each side of each widget.""" import pygtk pygtk.require('2.0') import gtk class PanedWidgetsDemo(gtk.Window): def __init__(self, parent=None): # Create the toplevel window gtk.Window.__init__(self) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.set_title(self.__class__.__name__) self.set_border_width(0) vbox = gtk.VBox(False, 0) self.add(vbox) vpaned = gtk.VPaned() vbox.pack_start(vpaned, True, True) vpaned.set_border_width(5) hpaned = gtk.HPaned() vpaned.add1(hpaned) frame = gtk.Frame() frame.set_shadow_type(gtk.SHADOW_IN) frame.set_size_request(60, 60) hpaned.add1(frame) button = gtk.Button("_Hi there") frame.add(button) frame = gtk.Frame() frame.set_shadow_type(gtk.SHADOW_IN) frame.set_size_request(80, 60) hpaned.add2(frame) frame = gtk.Frame() frame.set_shadow_type(gtk.SHADOW_IN) frame.set_size_request(60, 80) vpaned.add2(frame) # Now create toggle buttons to control sizing vbox.pack_start( self.__create_pane_options(hpaned, "Horizontal", "Left", "Right"), False, False, 0) vbox.pack_start( self.__create_pane_options(vpaned, "Vertical", "Top", "Bottom"), False, False, 0) self.show_all() def on_resize_toggled(self, tbutton, child): paned = child.parent if child == paned.get_children()[0]: paned.remove(child) paned.pack1(child, tbutton.get_active(), 0) else: paned.remove(child) paned.pack2(child, tbutton.get_active(), 0) def on_shrink_toggled(self, tbutton, child): paned = child.parent if child == paned.get_children()[0]: paned.remove(child) paned.pack1(child, 0, tbutton.get_active()) else: paned.remove(child) paned.pack2(child, 0, tbutton.get_active()) def __create_pane_options(self, paned, frame_label, label1, label2): frame = gtk.Frame(frame_label) frame.set_border_width(4) table = gtk.Table(3, 2, True) frame.add(table) label = gtk.Label(label1) table.attach(label, 0, 1, 0, 1) check_button = gtk.CheckButton("_Resize") check_button.connect('toggled', self.on_resize_toggled, paned.get_children()[0]) table.attach(check_button, 0, 1, 1, 2) check_button = gtk.CheckButton("_Shrink") check_button.set_active(True) check_button.connect('toggled', self.on_shrink_toggled, paned.get_children()[0]) table.attach(check_button, 0, 1, 2, 3) label = gtk.Label(label2) table.attach(label, 1, 2, 0, 1) check_button = gtk.CheckButton("_Resize") check_button.set_active(True) check_button.connect('toggled', self.on_resize_toggled, paned.get_children()[1]) table.attach(check_button, 1, 2, 1, 2) check_button = gtk.CheckButton("_Shrink") check_button.set_active(True) check_button.connect('toggled', self.on_shrink_toggled, paned.get_children()[1]) table.attach(check_button, 1, 2, 2, 3) return frame def main(): PanedWidgetsDemo() gtk.main() if __name__ == '__main__': main() pygtk-2.24.0/examples/pygtk-demo/demos/dialogs.py0000644000175000017500000001000611545325345016663 00000000000000#!/usr/bin/env python """Dialog and Message Boxes Dialog widgets are used to pop up a transient window for user feedback.""" import pygtk pygtk.require('2.0') import gtk class DialogAndMessageBoxesDemo(gtk.Window): counter = 1 def __init__(self, parent=None): # Create the toplevel window gtk.Window.__init__(self) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.set_title(self.__class__.__name__) self.set_border_width(8) frame = gtk.Frame("Dialogs") self.add(frame) vbox = gtk.VBox(False, 8) vbox.set_border_width(8) frame.add(vbox) # Standard message dialog hbox = gtk.HBox(False, 8) vbox.pack_start(hbox) button = gtk.Button("_Message Dialog") button.connect('clicked', self.on_message_dialog_clicked) hbox.pack_start(button, False, False, 0) vbox.pack_start(gtk.HSeparator(), False, False, 0) # Interactive dialog hbox = gtk.HBox(False, 8) vbox.pack_start(hbox, False, False, 0) vbox2 = gtk.VBox() button = gtk.Button("_Interactive Dialog") button.connect('clicked', self.on_interactive_dialog_clicked) hbox.pack_start(vbox2, False, False, 0) vbox2.pack_start(button, False, False, 0) table = gtk.Table(2, 2) table.set_row_spacings(4) table.set_col_spacings(4) hbox.pack_start(table, False, False, 0) label = gtk.Label("Entry _1") label.set_use_underline(True) table.attach(label, 0, 1, 0, 1) self.entry1 = gtk.Entry() table.attach(self.entry1, 1, 2, 0, 1) label.set_mnemonic_widget(self.entry1) label = gtk.Label("Entry _2") label.set_use_underline(True) table.attach(label, 0, 1, 1, 2) self.entry2 = gtk.Entry() table.attach(self.entry2, 1, 2, 1, 2) label.set_mnemonic_widget(self.entry2) self.show_all() def on_message_dialog_clicked(self, button): dialog = gtk.MessageDialog(self, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, "This message box has been popped up %d time%s." % (self.counter, self.counter > 1 and 's' or '')) dialog.run() dialog.destroy() self.counter += 1 def on_interactive_dialog_clicked(self, button): dialog = gtk.Dialog("Interactive Dialog", self, 0, (gtk.STOCK_OK, gtk.RESPONSE_OK, "_Non-stock button", gtk.RESPONSE_CANCEL)) hbox = gtk.HBox(False, 8) hbox.set_border_width(8) dialog.vbox.pack_start(hbox, False, False, 0) stock = gtk.image_new_from_stock( gtk.STOCK_DIALOG_QUESTION, gtk.ICON_SIZE_DIALOG) hbox.pack_start(stock, False, False, 0) table = gtk.Table(2, 2) table.set_row_spacings(4) table.set_col_spacings(4) hbox.pack_start(table, True, True, 0) label = gtk.Label("Entry _1") label.set_use_underline(True) table.attach(label, 0, 1, 0, 1) local_entry1 = gtk.Entry() local_entry1.set_text(self.entry1.get_text()) table.attach(local_entry1, 1, 2, 0, 1) label.set_mnemonic_widget(local_entry1) label = gtk.Label("Entry _2") label.set_use_underline(True) table.attach(label, 0, 1, 1, 2) local_entry2 = gtk.Entry() local_entry2.set_text(self.entry2.get_text()) table.attach(local_entry2, 1, 2, 1, 2) label.set_mnemonic_widget(local_entry2) dialog.show_all() response = dialog.run() if response == gtk.RESPONSE_OK: self.entry1.set_text(local_entry1.get_text()) self.entry2.set_text(local_entry2.get_text()) dialog.destroy() def main(): DialogAndMessageBoxesDemo() gtk.main() if __name__ == '__main__': main() pygtk-2.24.0/examples/pygtk-demo/demos/buttonbox.py0000644000175000017500000000475211545325345017300 00000000000000#!/usr/bin/env python '''Button Box This demo shows various button box configurations available. It also uses stock buttons, and use of mnemonics for navigation.''' import pygtk pygtk.require('2.0') import gtk def create_bbox(horizontal=True, title=None, spacing=0, layout=gtk.BUTTONBOX_SPREAD): frame = gtk.Frame(title) if horizontal: bbox = gtk.HButtonBox() else: bbox = gtk.VButtonBox() bbox.set_border_width(5) bbox.set_layout(layout) bbox.set_spacing(spacing) frame.add(bbox) button = gtk.Button(stock='gtk-ok') bbox.add(button) button = gtk.Button(stock='gtk-cancel') bbox.add(button) button = gtk.Button(stock='gtk-help') bbox.add(button) return frame class ButtonBoxDemo(gtk.Window): def __init__(self, parent=None): # Create the toplevel window gtk.Window.__init__(self) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.set_title(self.__class__.__name__) self.set_border_width(10) main_vbox = gtk.VBox() self.add(main_vbox) frame_horiz = gtk.Frame("Horizontal Button Boxes") main_vbox.pack_start(frame_horiz, padding=10) vbox = gtk.VBox() vbox.set_border_width(10) frame_horiz.add(vbox) vbox.pack_start(create_bbox(True, "Spread", 40, gtk.BUTTONBOX_SPREAD), padding=0) vbox.pack_start(create_bbox(True, "Edge", 40, gtk.BUTTONBOX_EDGE), padding=5) vbox.pack_start(create_bbox(True, "Start", 40, gtk.BUTTONBOX_START), padding=5) vbox.pack_start(create_bbox(True, "End", 40, gtk.BUTTONBOX_END), padding=5) frame_vert = gtk.Frame("Vertical Button Boxes") main_vbox.pack_start(frame_vert, padding=10) hbox = gtk.HBox() hbox.set_border_width(10) frame_vert.add(hbox) hbox.pack_start(create_bbox(False, "Spread", 40, gtk.BUTTONBOX_SPREAD), padding=0) hbox.pack_start(create_bbox(False, "Edge", 40, gtk.BUTTONBOX_EDGE), padding=5) hbox.pack_start(create_bbox(False, "Start", 40, gtk.BUTTONBOX_START), padding=5) hbox.pack_start(create_bbox(False, "End", 40, gtk.BUTTONBOX_END), padding=5) self.show_all() def main(): ButtonBoxDemo() gtk.main() if __name__ == '__main__': main() pygtk-2.24.0/examples/pygtk-demo/demos/dndpixmap.py0000644000175000017500000003267611545325345017246 00000000000000drag_icon_xpm = [ "36 48 9 1", " c None", ". c #020204", "+ c #8F8F90", "@ c #D3D3D2", "# c #AEAEAC", "$ c #ECECEC", "% c #A2A2A4", "& c #FEFEFC", "* c #BEBEBC", " .....................", " ..&&&&&&&&&&&&&&&&&&&.", " ...&&&&&&&&&&&&&&&&&&&.", " ..&.&&&&&&&&&&&&&&&&&&&.", " ..&&.&&&&&&&&&&&&&&&&&&&.", " ..&&&.&&&&&&&&&&&&&&&&&&&.", " ..&&&&.&&&&&&&&&&&&&&&&&&&.", " ..&&&&&.&&&@&&&&&&&&&&&&&&&.", " ..&&&&&&.*$%$+$&&&&&&&&&&&&&.", " ..&&&&&&&.%$%$+&&&&&&&&&&&&&&.", " ..&&&&&&&&.#&#@$&&&&&&&&&&&&&&.", " ..&&&&&&&&&.#$**#$&&&&&&&&&&&&&.", " ..&&&&&&&&&&.&@%&%$&&&&&&&&&&&&&.", " ..&&&&&&&&&&&.&&&&&&&&&&&&&&&&&&&.", " ..&&&&&&&&&&&&.&&&&&&&&&&&&&&&&&&&.", "................&$@&&&@&&&&&&&&&&&&.", ".&&&&&&&+&&#@%#+@#@*$%$+$&&&&&&&&&&.", ".&&&&&&&+&&#@#@&&@*%$%$+&&&&&&&&&&&.", ".&&&&&&&+&$%&#@&#@@#&#@$&&&&&&&&&&&.", ".&&&&&&@#@@$&*@&@#@#$**#$&&&&&&&&&&.", ".&&&&&&&&&&&&&&&&&&&@%&%$&&&&&&&&&&.", ".&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&.", ".&&&&&&&&$#@@$&&&&&&&&&&&&&&&&&&&&&.", ".&&&&&&&&&+&$+&$&@&$@&&$@&&&&&&&&&&.", ".&&&&&&&&&+&&#@%#+@#@*$%&+$&&&&&&&&.", ".&&&&&&&&&+&&#@#@&&@*%$%$+&&&&&&&&&.", ".&&&&&&&&&+&$%&#@&#@@#&#@$&&&&&&&&&.", ".&&&&&&&&@#@@$&*@&@#@#$#*#$&&&&&&&&.", ".&&&&&&&&&&&&&&&&&&&&&$%&%$&&&&&&&&.", ".&&&&&&&&&&$#@@$&&&&&&&&&&&&&&&&&&&.", ".&&&&&&&&&&&+&$%&$$@&$@&&$@&&&&&&&&.", ".&&&&&&&&&&&+&&#@%#+@#@*$%$+$&&&&&&.", ".&&&&&&&&&&&+&&#@#@&&@*#$%$+&&&&&&&.", ".&&&&&&&&&&&+&$+&*@&#@@#&#@$&&&&&&&.", ".&&&&&&&&&&$%@@&&*@&@#@#$#*#&&&&&&&.", ".&&&&&&&&&&&&&&&&&&&&&&&$%&%$&&&&&&.", ".&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&.", ".&&&&&&&&&&&&&&$#@@$&&&&&&&&&&&&&&&.", ".&&&&&&&&&&&&&&&+&$%&$$@&$@&&$@&&&&.", ".&&&&&&&&&&&&&&&+&&#@%#+@#@*$%$+$&&.", ".&&&&&&&&&&&&&&&+&&#@#@&&@*#$%$+&&&.", ".&&&&&&&&&&&&&&&+&$+&*@&#@@#&#@$&&&.", ".&&&&&&&&&&&&&&$%@@&&*@&@#@#$#*#&&&.", ".&&&&&&&&&&&&&&&&&&&&&&&&&&&$%&%$&&.", ".&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&.", ".&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&.", ".&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&.", "...................................."] trashcan_closed_xpm = [ "64 80 17 1", " c None", ". c #030304", "+ c #5A5A5C", "@ c #323231", "# c #888888", "$ c #1E1E1F", "% c #767677", "& c #494949", "* c #9E9E9C", "= c #111111", "- c #3C3C3D", "; c #6B6B6B", "> c #949494", ", c #282828", "' c #808080", ") c #545454", "! c #AEAEAC", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ==......=$$...=== ", " ..$------)+++++++++++++@$$... ", " ..=@@-------&+++++++++++++++++++-.... ", " =.$$@@@-&&)++++)-,$$$$=@@&+++++++++++++,..$ ", " .$$$$@@&+++++++&$$$@@@@-&,$,-++++++++++;;;&.. ", " $$$$,@--&++++++&$$)++++++++-,$&++++++;%%'%%;;$@ ", " .-@@-@-&++++++++-@++++++++++++,-++++++;''%;;;%*-$ ", " +------++++++++++++++++++++++++++++++;;%%%;;##*!. ", " =+----+++++++++++++++++++++++;;;;;;;;;;;;%'>>). ", " .=)&+++++++++++++++++;;;;;;;;;;;;;;%''>>#>#@. ", " =..=&++++++++++++;;;;;;;;;;;;;%###>>###+%== ", " .&....=-+++++%;;####''''''''''##'%%%)..#. ", " .+-++@....=,+%#####'%%%%%%%%%;@$-@-@*++!. ", " .+-++-+++-&-@$$=$=......$,,,@;&)+!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " =+-++-+++-+++++++++!++++!++++!+++!++!+++= ", " $.++-+++-+++++++++!++++!++++!+++!++!+.$ ", " =.++++++++++++++!++++!++++!+++!++.= ", " $..+++++++++++++++!++++++...$ ", " $$=.............=$$ ", " ", " ", " ", " ", " ", " ", " ", " ", " "] trashcan_open_xpm = [ "64 80 17 1", " c None", ". c #030304", "+ c #5A5A5C", "@ c #323231", "# c #888888", "$ c #1E1E1F", "% c #767677", "& c #494949", "* c #9E9E9C", "= c #111111", "- c #3C3C3D", "; c #6B6B6B", "> c #949494", ", c #282828", "' c #808080", ") c #545454", "! c #AEAEAC", " ", " ", " ", " ", " ", " ", " .=.==.,@ ", " ==.,@-&&&)-= ", " .$@,&++;;;%>*- ", " $,-+)+++%%;;'#+. ", " =---+++++;%%%;%##@. ", " @)++++++++;%%%%'#%$ ", " $&++++++++++;%%;%##@= ", " ,-++++)+++++++;;;'#%) ", " @+++&&--&)++++;;%'#'-. ", " ,&++-@@,,,,-)++;;;'>'+, ", " =-++&@$@&&&&-&+;;;%##%+@ ", " =,)+)-,@@&+++++;;;;%##%&@ ", " @--&&,,@&)++++++;;;;'#)@ ", " ---&)-,@)+++++++;;;%''+, ", " $--&)+&$-+++++++;;;%%'';- ", " .,-&+++-$&++++++;;;%''%&= ", " $,-&)++)-@++++++;;%''%), ", " =,@&)++++&&+++++;%'''+$@&++++++ ", " .$@-++++++++++++;'#';,........=$@&++++ ", " =$@@&)+++++++++++'##-.................=&++ ", " .$$@-&)+++++++++;%#+$.....................=)+ ", " $$,@-)+++++++++;%;@=........................,+ ", " .$$@@-++++++++)-)@=............................ ", " $,@---)++++&)@===............................,. ", " $-@---&)))-$$=..............................=)!. ", " --&-&&,,$=,==...........................=&+++!. ", " =,=$..=$+)+++++&@$=.............=$@&+++++!++!. ", " .)-++-+++++++++++++++++++++++++++!++!++!. ", " .+-++-+++++++++++++++++++++++!+++!++!++!. ", " .+-++-+++-+++++++++!+++!!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " =+-++-+++-+++++++++!++++!++++!+++!++!+++= ", " $.++-+++-+++++++++!++++!++++!+++!++!+.$ ", " =.++++++++++++++!++++!++++!+++!++.= ", " $..+++++++++++++++!++++++...$ ", " $$==...........==$$ ", " ", " ", " ", " ", " ", " ", " ", " ", " "] pygtk-2.24.0/examples/pygtk-demo/demos/changedisplay.py0000644000175000017500000003315411545325345020065 00000000000000#!/usr/bin/env python '''Change Display Demonstrates migrating a window between different displays and screens. A display is a mouse and keyboard with some number of associated monitors. A screen is a set of monitors grouped into a single physical work area. The neat thing about having multiple displays is that they can be on a completely separate computers, as long as there is a network connection to the computer where the application is running. Only some of the windowing systems where GTK+ runs have the concept of multiple displays and screens. (The X Window System is the main example.) Other windowing systems can only handle one keyboard and mouse, and combine all monitors into a single screen. This is a moderately complex example, and demonstrates: - Tracking the currently open displays and screens - Changing the screen for a window - Letting the user choose a window by clicking on it - Using GtkListStore and GtkTreeView - Using GtkDialog ''' import pygtk pygtk.require('2.0') import gtk import gobject # These enumerations provide symbolic names for the columns # in the two GtkListStore models. # ( DISPLAY_COLUMN_NAME, DISPLAY_COLUMN_DISPLAY, DISPLAY_NUM_COLUMNS ) = range(3) ( SCREEN_COLUMN_NUMBER, SCREEN_COLUMN_SCREEN, SCREEN_NUM_COLUMNS ) = range(3) def find_toplevel_at_pointer(display): ''' Finds the toplevel window under the mouse pointer, if any. ''' pointer_window = display.get_window_at_pointer()[0] # The user data field of a GdkWindow is used to store a pointer # to the widget that created it. # if pointer_window: widget = pointer_window.get_user_data() return widget and widget.get_toplevel() or None class QueryForToplevel(gtk.Window): ''' Asks the user to click on a window, then waits for them click the mouse. When the mouse is released, returns the toplevel window under the pointer, or NULL, if there is none. ''' def __init__(self, screen, prompt): gtk.Window.__init__(self, gtk.WINDOW_POPUP) self.set_screen(screen) self.set_modal(True) self.set_position(gtk.WIN_POS_CENTER) frame = gtk.Frame() frame.set_shadow_type(gtk.SHADOW_OUT) self.add(frame) label = gtk.Label(prompt) label.set_padding(10, 10) frame.add(label) self.show_all() def run(self): display = self.get_screen().get_display() cursor = gtk.gdk.Cursor(display, gtk.gdk.CROSSHAIR) main_context = gobject.main_context_default() if (gtk.gdk.pointer_grab(self.window, False, gtk.gdk.BUTTON_RELEASE_MASK, None, cursor) == gtk.gdk.GRAB_SUCCESS): self.query_clicked = False self.connect("button-release-event", self.button_release_event_cb) # Process events until clicked is set by button_release_event_cb. # We pass in may_block=True since we want to wait if there # are no events currently. # while self.query_clicked is False: main_context.iteration(True) toplevel = find_toplevel_at_pointer(display) if (toplevel == self): toplevel = None; self.destroy() gtk.gdk.flush() # Really release the grab return toplevel def button_release_event_cb(self, winref, event): self.query_clicked = True return True class LeftAlignButton(gtk.Button): ''' If we have a stack of buttons, it often looks better if their contents are left-aligned, rather than centered. This class creates a button and left-aligns it contents. ''' def __init__(self, label): gtk.Button.__init__(self, label) child = self.get_children()[0] child.set_alignment(0., 0.5) # Main entry point. If the dialog for this demo doesn't yet exist, creates # it. # class ChangeDisplayDemo(gtk.Dialog): size_group = None display_model = None screen_model = None screen_selection = None current_display = None current_screen = None def __init__(self, parent=None): gtk.Dialog.__init__(self, "Change Screen or display", parent, gtk.DIALOG_NO_SEPARATOR, (gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE, "Change", gtk.RESPONSE_OK)) self.set_default_size(300, 400) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.connect("response", self.response_cb) self.connect("destroy", self.destroy_cb) vbox = gtk.VBox(False, 5) vbox.set_border_width(8) self.vbox.pack_start(vbox, True, True, 0) frame = self.__create_display_frame() vbox.pack_start(frame, True, True, 0) frame = self.__create_screen_frame() vbox.pack_start(frame, True, True, 0) self.__initialize_displays() self.show_all() def __initialize_displays(self): ''' Adds all currently open displays to our list of displays, and set up a signal connection so that we'll be notified when displays are opened in the future as well. ''' manager = gtk.gdk.display_manager_get() displays = manager.list_displays() for item in displays: self.add_display(item) id = manager.connect("display_opened", self.display_opened_cb) manager.set_data('user-callback', id) def __create_frame(self, title): ''' This function is used both for creating the "Display" and "Screen" frames, since they have a similar structure. The caller hooks up the right context for the value returned in tree_view, and packs any relevant buttons into button_vbox. ''' frame = gtk.Frame(title) hbox = gtk.HBox(False, 8) hbox.set_border_width(8) frame.add(hbox) scrollwin = gtk.ScrolledWindow(); scrollwin.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) scrollwin.set_shadow_type (gtk.SHADOW_IN) hbox.pack_start(scrollwin, True, True, 0) tree_view = gtk.TreeView() tree_view.set_headers_visible(False) scrollwin.add(tree_view) selection = tree_view.get_selection() selection.set_mode(gtk.SELECTION_BROWSE) button_vbox = gtk.VBox(False, 5) hbox.pack_start(button_vbox, False, False, 0) if self.size_group is None: self.size_group = gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL) self.size_group.add_widget(button_vbox) return (frame, tree_view, button_vbox) def __create_display_frame(self): ''' Creates the "Display" frame in the main window. ''' frame, tree_view, button_vbox = self.__create_frame("Display") button = LeftAlignButton("_Open...") button.connect("clicked", self.open_display_cb) button_vbox.pack_start(button, False, False, 0) button = LeftAlignButton("_Close") button.connect ("clicked", self.close_display_cb) button_vbox.pack_start(button, False, False, 0) self.display_model = gtk.ListStore(str, object); tree_view.set_model(self.display_model) column = gtk.TreeViewColumn("Name", gtk.CellRendererText(), text=DISPLAY_COLUMN_NAME) tree_view.append_column(column) selection = tree_view.get_selection() selection.connect("changed", self.display_changed_cb) return frame def __create_screen_frame(self): ''' Creates the "Screen" frame in the main window. ''' frame, tree_view, button_vbox = self.__create_frame("Screen") self.screen_model = gtk.ListStore(int, object); tree_view.set_model(self.screen_model) column = gtk.TreeViewColumn("Number", gtk.CellRendererText(), text=SCREEN_COLUMN_NUMBER) tree_view.append_column(column) self.screen_selection = tree_view.get_selection() self.screen_selection.connect("changed", self.screen_changed_cb) return frame def query_change_display(self): ''' Prompts the user for a toplevel window to move, and then moves that window to the currently selected display ''' screen = self.window.get_screen() toplevel = QueryForToplevel(screen, "Please select the toplevel\nto move to the new screen").run() if toplevel is not None: toplevel.set_screen(self.current_screen) else: screen.get_display().beep() def response_cb(self, dialog, response_id): ''' Called when the user clicks on a button in our dialog or closes the dialog through the window manager. Unless the "Change" button was clicked, we destroy the dialog. ''' if response_id == gtk.RESPONSE_OK: self.query_change_display() else: dialog.destroy() def open_display_cb(self, button): ''' Called when the user clicks on "Open..." in the display frame. Prompts for a new display, and then opens a connection to that display. ''' dialog = gtk.Dialog("Open Display", self, gtk.DIALOG_MODAL, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OK, gtk.RESPONSE_OK)) dialog.set_default_response(gtk.RESPONSE_OK) display_entry = gtk.Entry() display_entry.set_activates_default(True) dialog_label = gtk.Label("Please enter the name of\nthe new display\n") dialog.vbox.add(dialog_label) dialog.vbox.add(display_entry) display_entry.grab_focus() dialog.show_all() result = None while result is None: response_id = dialog.run() if response_id != gtk.RESPONSE_OK: break; new_screen_name = display_entry.get_chars(0, -1) print new_screen_name if new_screen_name != "": result = gtk.gdk.Display(new_screen_name) if result is None: error_msg = ( "Can't open display :\n\t%s\nplease try another one\n" % (new_screen_name,)) dialog_label.set_text(error_msg) dialog.destroy() def close_display_cb(self, button): ''' Called when the user clicks on the "Close" button in the "Display" frame. Closes the selected display. ''' if self.current_display: self.current_display.close() def display_changed_cb(self, selection): ''' Called when the selected row in the display list changes. Updates info.current_display, then refills the list of screens. ''' model, iter = selection.get_selected() if iter is not None: self.current_display = model.get_value(iter, DISPLAY_COLUMN_DISPLAY) else: self.current_display = None self.fill_screens() def screen_changed_cb(self, selection): ''' Called when the selected row in the sceen list changes. Updates info->current_screen. ''' model, iter = selection.get_selected() if iter: self.current_screen = model.get(iter, SCREEN_COLUMN_SCREEN)[0] else: self.current_screen = None; def destroy_cb(self, parent): self.destroy_info() if parent is None: gtk.main_quit() def fill_screens(self): ''' Fills in the screen list based on the current display ''' self.screen_model.clear() if self.current_display is not None: n_screens = self.current_display.get_n_screens() for i in range(n_screens): screen = self.current_display.get_screen(i); iter = self.screen_model.append() self.screen_model.set(iter, SCREEN_COLUMN_NUMBER, i, SCREEN_COLUMN_SCREEN, screen) if (i == 0): self.screen_selection.select_iter(iter) def display_closed_cb(self, display, is_error, info): ''' Called when one of the currently open displays is closed. Remove it from our list of displays. ''' iter = self.display_model.get_iter_first() while iter: tmp_display = self.display_model.get_value(iter, DISPLAY_COLUMN_DISPLAY) if (tmp_display == display): info.display_model.remove(iter) break; iter = info.display_model.iter_next() def add_display(self, display): ''' Adds a new display to our list of displays, and connects to the "closed" signal so that we can remove it from the list of displays again. ''' name = display.get_name() iter = self.display_model.append() self.display_model.set(iter, DISPLAY_COLUMN_NAME, name, DISPLAY_COLUMN_DISPLAY, display) id = display.connect("closed", self.display_closed_cb) display.set_data('user-callback', id) def display_opened_cb(self, manager, display): ''' Called when a new display is opened ''' self.add_display(display) def destroy_info(self): ''' Cleans up when the toplevel is destroyed; we remove the connections we use to track currently open displays. ''' manager = gtk.gdk.display_manager_get() displays = manager.list_displays() id = manager.get_data('user-callback') manager.disconnect(id) for tmp_list in displays: id = tmp_list.get_data('user-callback') tmp_list.disconnect(id) def main(): ChangeDisplayDemo() gtk.main() if __name__ == '__main__': main() pygtk-2.24.0/examples/pygtk-demo/demos/tooltip.py0000644000175000017500000002226211545325345016742 00000000000000#!/usr/bin/env python '''Tooltip This is a test of the new gtk tooltip system. It is a fairly straight forward port of the example distributed with gtk. ''' import pygtk pygtk.require('2.0') import gtk import cairo import gobject import pango rects = [ {"x":10, "y":10, "r":0.0, "g":0.0, "b":0.9, "tooltip":"Blue box!"}, {"x":200, "y":170, "r":1.0, "g":0.0, "b":0.0, "tooltip":"Red thing"}, {"x":100, "y":50, "r":0.8, "g":0.8, "b":0.0, "tooltip":"Yellow thing"} ] class TooltipDemo(gtk.Window): def __init__(self, parent=None): gtk.Window.__init__(self) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.set_title(self.__class__.__name__) self.set_border_width(10) box = gtk.VBox(False, 3) self.add(box) # A check button using the tooltip-markup property button = gtk.CheckButton("This one uses the tooltip-markup property") button.set_tooltip_text("Hello, I am a static tooltip.") box.pack_start(button, False, False, 0) # A check button using the query-tooltip signal button = gtk.CheckButton("I use the query-tooltip signal") button.props.has_tooltip = True button.connect("query-tooltip", self.query_tooltip_cb) box.pack_start(button, False, False, 0) # A label label = gtk.Label("I am just a label") label.set_selectable(False) label.set_tooltip_text("Label & and tooltip") box.pack_start(label, False, False, 0) # A selectable label label = gtk.Label("I am a selectable label") label.set_selectable(True) label.set_tooltip_markup("Another Label tooltip") box.pack_start(label, False, False, 0) # Another one, with a custom tooltip window button = gtk.CheckButton("This one has a custom tooltip window!") box.pack_start(button, False, False, 0) tooltip_window = gtk.Window(gtk.WINDOW_POPUP) tooltip_button = gtk.Label("blaat!") tooltip_window.add(tooltip_button) tooltip_button.show() button.set_tooltip_window(tooltip_window) button.connect("query-tooltip", self.query_tooltip_custom_cb) button.props.has_tooltip = True # An insensitive button button = gtk.Button("This one is insensitive") button.set_sensitive(False) button.props.tooltip_text = "Insensitive!" box.pack_start(button, False, False, 0) # Testcases from Kris without a tree view don't exist tree_view = gtk.TreeView(self.create_model()) tree_view.set_size_request(200, 240) tree_view.insert_column_with_attributes(0, "Test", gtk.CellRendererText(), text = 0) tree_view.props.has_tooltip = True tree_view.connect("query-tooltip", self.query_tooltip_tree_view_cb) tree_view.get_selection().connect("changed", self.selection_changed_cb, tree_view) # We cannot get the button on the treeview column directly # so we have to use a ugly hack to get it. column = tree_view.get_column(0) column.set_clickable(True) label = gtk.Label("Test") column.set_widget(label) label.show() button = label.get_parent() button.props.tooltip_text = "Header" box.pack_start(tree_view, False, False, 2) # Add an IconView for some more testing iconview = gtk.IconView() iconview.props.has_tooltip = True iconview.connect("query-tooltip", self.query_tooltip_icon_view_cb) model = gtk.ListStore(str, gtk.gdk.Pixbuf) iconview.set_model(model) iconview.set_text_column(0) iconview.set_pixbuf_column(1) pixbuf1 = iconview.render_icon(gtk.STOCK_APPLY,gtk.ICON_SIZE_BUTTON) model.append(['Apply', pixbuf1]) pixbuf2 = iconview.render_icon(gtk.STOCK_CANCEL,gtk.ICON_SIZE_BUTTON) model.append(['Cancel', pixbuf2]) box.pack_start(iconview, False, False, 2) # And a text view for Matthias buffer = gtk.TextBuffer() iter = buffer.get_end_iter() buffer.insert(iter, "Hello, the text ", -1) tag = buffer.create_tag("bold") tag.props.weight = pango.WEIGHT_BOLD iter = buffer.get_end_iter() buffer.insert_with_tags(iter, "in bold", tag) iter = buffer.get_end_iter() buffer.insert(iter, " has a tooltip!", -1) text_view = gtk.TextView(buffer) text_view.set_size_request(200, 50) text_view.props.has_tooltip = True text_view.connect("query-tooltip", self.query_tooltip_text_view_cb, tag) box.pack_start(text_view, False, False, 2) # Drawing area drawing_area = gtk.DrawingArea() drawing_area.set_size_request(320, 240) drawing_area.props.has_tooltip = True drawing_area.connect("expose_event", self.drawing_area_expose) drawing_area.connect("query-tooltip", self.query_tooltip_drawing_area_cb) box.pack_start(drawing_area, False, False, 2) # Done! self.show_all() def query_tooltip_cb(self, widget, x, y, keyboard_tip, tooltip): tooltip.set_markup(widget.get_label()) tooltip.set_icon_from_stock(gtk.STOCK_DELETE, gtk.ICON_SIZE_MENU) return True def query_tooltip_custom_cb(self, widget, x, y, keyboard_tip, tooltip): color = gtk.gdk.Color(0, 65535, 0) window = widget.get_tooltip_window() window.modify_bg(gtk.STATE_NORMAL, color) return True def query_tooltip_text_view_cb(self, widget, x, y, keyboard_tip, tooltip, data): if keyboard_tip: offset= widget.props.buffer.cursor_position iter = widget.props.buffer.get_iter_at_offset(offset) else: coords = widget.window_to_buffer_coords(gtk.TEXT_WINDOW_TEXT, x, y) ret =widget.get_iter_at_position(coords[0], coords[1]) if ret[0].has_tag(data): tooltip.set_text("Tooltip on text tag") else: return False return True def query_tooltip_tree_view_cb(self, widget, x, y, keyboard_tip, tooltip): if not widget.get_tooltip_context(x, y, keyboard_tip): return False else: model, path, iter = widget.get_tooltip_context(x, y, keyboard_tip) value = model.get(iter, 0) tooltip.set_markup("Path %s: %s" %(path[0], value[0])) widget.set_tooltip_row(tooltip, path) return True def query_tooltip_icon_view_cb(self, widget, x, y, keyboard_tip, tooltip): if not widget.get_tooltip_context(x, y, keyboard_tip): return False else: model, path, iter = widget.get_tooltip_context(x, y, keyboard_tip) value = model.get(iter, 0) tooltip.set_markup("Path %s: %s" %(path[0], value[0])) widget.set_tooltip_item(tooltip, path) return True def query_tooltip_drawing_area_cb(self, widget, x, y, keyboard_tip, tooltip, data=None): if keyboard_tip: return False for i in range(len(rects)): if(rects[i]["x"] < x and x < rects[i]["x"] + 50 \ and rects[i]["y"] < y and y < rects[i]["y"] + 50): tooltip.set_markup(rects[i]["tooltip"]) return True; return False def selection_changed_cb(self, selection, tree_view): tree_view.trigger_tooltip_query() def create_model(self): store = gtk.TreeStore(gobject.TYPE_STRING); # A tree store with some random words ... store.append(None, ("File Manager",)) store.append(None, ("Gossip",)) store.append(None, ("System Settings",)) store.append(None, ("The GIMP",)) store.append(None, ("Terminal",)) store.append(None, ("Word Processor",)) return(store) def drawing_area_expose(self, drawing_area, event, data=None): cr = drawing_area.window.cairo_create() cr.rectangle(0, 0, drawing_area.allocation.width, drawing_area.allocation.height) cr.set_source_rgb(1.0, 1.0, 1.0) cr.fill() for i in range(len(rects)): cr.rectangle(rects[i]["x"], rects[i]["y"], 50, 50) cr.set_source_rgb(rects[i]["r"], rects[i]["g"], rects[i]["b"]) cr.stroke() cr.rectangle(rects[i]["x"], rects[i]["y"], 50, 50) cr.set_source_rgba(rects[i]["r"], rects[i]["g"], rects[i]["b"], 0.5) cr.fill() return False def main(): TooltipDemo() gtk.main() if __name__ == '__main__': main()pygtk-2.24.0/examples/pygtk-demo/demos/textscroll.py0000644000175000017500000001071411545325345017452 00000000000000#!/usr/bin/env python """Text Widget/Automatic scrolling This example demonstrates how to use the gravity of GtkTextMarks to keep a text view scrolled to the bottom while appending text.""" import pygtk pygtk.require('2.0') import gobject import gtk class AutomaticScrollingDemo(gtk.Window): def __init__(self, parent=None): # Create the toplevel window gtk.Window.__init__(self) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.set_title(self.__class__.__name__) self.set_default_size(600, 400) self.set_border_width(0) hbox = gtk.HBox(True, 6) self.add(hbox) self.create_text_view(hbox, True) self.create_text_view(hbox, False) self.count_sb = 0 self.count_se = 0 self.show_all() def create_text_view(self, hbox, scroll_to_end): swindow = gtk.ScrolledWindow() hbox.pack_start(swindow) textview = gtk.TextView() swindow.add(textview) timeout = self.setup_scroll(textview, scroll_to_end) # Remove the timeout in destroy handler, so we don't try to # scroll destroyed widget. textview.connect("destroy", lambda widget: gobject.source_remove(timeout)) def setup_scroll(self, textview, scroll_to_end): buf = textview.get_buffer() itr = buf.get_end_iter() if scroll_to_end: # If we want to scroll to the end, including horizontal scrolling, # then we just create a mark with right gravity at the end of the # buffer. It will stay at the end unless explicitely moved with # gtk_text_buffer_move_mark. buf.create_mark("end", itr, False) # Add scrolling timeout. return gobject.timeout_add(50, self.scroll_to_end, textview) else: # If we want to scroll to the bottom, but not scroll horizontally, # then an end mark won't do the job. Just create a mark so we can # use it with gtk_text_view_scroll_mark_onscreen, we'll position it # explicitely when needed. Use left gravity so the mark stays where # we put it after inserting new text. buf.create_mark("scroll", itr, True) # Add scrolling timeout. return gobject.timeout_add(100, self.scroll_to_bottom, textview) """ Scroll to the end of the buffer. """ def scroll_to_end(self, textview): buf = textview.get_buffer() # Get the "end" mark. It's located at the end of buffer because # of right gravity mark = buf.get_mark("end") itr = buf.get_iter_at_mark(mark) # and insert some text at its position, the iter will be # revalidated after insertion to point to the end of inserted text buf.insert(itr, "\n") buf.insert(itr, " " * self.count_se) buf.insert(itr, "Scroll to end scroll to end scroll to end scroll to end ") # Now scroll the end mark onscreen. textview.scroll_mark_onscreen(mark) # Emulate typewriter behavior, shift to the left if we # are far enough to the right. self.count_se += 1 if self.count_se > 150: self.count_se = 0 return True """ Scroll to the bottom of the buffer. """ def scroll_to_bottom(self, textview): buf = textview.get_buffer() # Get the end iterator itr = buf.get_end_iter() # and insert some text at it, the iter will be revalidated # after insertion to point to the end of inserted text buf.insert(itr, "\n") buf.insert(itr, " " * self.count_sb) buf.insert(itr, "Scroll to bottom scroll to bottom scroll to bottom scroll to bottom") # Move the iterator to the beginning of line, so we don't scroll # in horizontal direction itr.set_line_offset(0) # and place the mark at iter. the mark will stay there after we # insert some text at the end because it has right gravity. mark = buf.get_mark("scroll") buf.move_mark(mark, itr) # Scroll the mark onscreen. textview.scroll_mark_onscreen(mark) # Shift text back if we got enough to the right. self.count_sb += 1 if self.count_sb > 40: self.count_sb = 0 return True def main(): AutomaticScrollingDemo() gtk.main() if __name__ == '__main__': main() pygtk-2.24.0/examples/pygtk-demo/demos/editable_cells.py0000644000175000017500000001115411545325345020201 00000000000000#!/usr/bin/env python '''Tree View/Editable Cells This demo demonstrates the use of editable cells in a GtkTreeView. If you're new to the GtkTreeView widgets and associates, look into the GtkListStore example first.''' # pygtk version: Maik Hertha import pygtk pygtk.require('2.0') import gobject import gtk # columns ( COLUMN_NUMBER, COLUMN_PRODUCT, COLUMN_EDITABLE ) = range(3) # data articles = [ [ 3, "bottles of coke", True ], [ 5, "packages of noodles", True ], [ 2, "packages of chocolate chip cookies", True ], [ 1, "can vanilla ice cream", True ], [ 6, "eggs", True ] ] class EditableCellsDemo(gtk.Window): def __init__(self, parent=None): gtk.Window.__init__(self) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.set_title(self.__class__.__name__) self.set_border_width(5) self.set_default_size(320, 200) vbox = gtk.VBox(False, 5) self.add(vbox) label = gtk.Label("Shopping list (you can edit the cells!)") vbox.pack_start(label, False, False) sw = gtk.ScrolledWindow() sw.set_shadow_type(gtk.SHADOW_ETCHED_IN) sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) vbox.pack_start(sw) # create model model = self.__create_model() # create tree view treeview = gtk.TreeView(model) treeview.set_rules_hint(True) treeview.get_selection().set_mode(gtk.SELECTION_SINGLE) self.__add_columns(treeview) sw.add(treeview) # some buttons hbox = gtk.HBox(True, 4) vbox.pack_start(hbox, False, False) button = gtk.Button(stock=gtk.STOCK_ADD) button.connect("clicked", self.on_add_item_clicked, model) hbox.pack_start(button) button = gtk.Button(stock=gtk.STOCK_REMOVE) button.connect("clicked", self.on_remove_item_clicked, treeview) hbox.pack_start(button) self.show_all() def __create_model(self): # create list store model = gtk.ListStore( gobject.TYPE_INT, gobject.TYPE_STRING, gobject.TYPE_BOOLEAN ) # add items for item in articles: iter = model.append() model.set (iter, COLUMN_NUMBER, item[COLUMN_NUMBER], COLUMN_PRODUCT, item[COLUMN_PRODUCT], COLUMN_EDITABLE, item[COLUMN_EDITABLE] ) return model def __add_columns(self, treeview): model = treeview.get_model() # number column renderer = gtk.CellRendererText() renderer.connect("edited", self.on_cell_edited, model) renderer.set_data("column", COLUMN_NUMBER) column = gtk.TreeViewColumn("Number", renderer, text=COLUMN_NUMBER, editable=COLUMN_EDITABLE) treeview.append_column(column) # product column renderer = gtk.CellRendererText() renderer.connect("edited", self.on_cell_edited, model) renderer.set_data("column", COLUMN_PRODUCT) column = gtk.TreeViewColumn("Product", renderer, text=COLUMN_PRODUCT, editable=COLUMN_EDITABLE) treeview.append_column(column) def on_add_item_clicked(self, button, model): new_item = [0, "Description here", True] articles.append(new_item) iter = model.append() model.set (iter, COLUMN_NUMBER, new_item[COLUMN_NUMBER], COLUMN_PRODUCT, new_item[COLUMN_PRODUCT], COLUMN_EDITABLE, new_item[COLUMN_EDITABLE] ) def on_remove_item_clicked(self, button, treeview): selection = treeview.get_selection() model, iter = selection.get_selected() if iter: path = model.get_path(iter)[0] model.remove(iter) del articles[ path ] def on_cell_edited(self, cell, path_string, new_text, model): iter = model.get_iter_from_string(path_string) path = model.get_path(iter)[0] column = cell.get_data("column") if column == COLUMN_NUMBER: articles[path][COLUMN_NUMBER] = int(new_text) model.set(iter, column, articles[path][COLUMN_NUMBER]) elif column == COLUMN_PRODUCT: old_text = model.get_value(iter, column) articles[path][COLUMN_PRODUCT] = new_text model.set(iter, column, articles[path][COLUMN_PRODUCT]) def main(): EditableCellsDemo() gtk.main() if __name__ == '__main__': main() pygtk-2.24.0/examples/pygtk-demo/demos/list_store.py0000644000175000017500000001126711545325345017442 00000000000000#!/usr/bin/env python '''Tree View/List Store The GtkListStore is used to store data in list form, to be used later on by a GtkTreeView to display it. This demo builds a simple GtkListStore and displays it. See the Stock Browser demo for a more advanced example.''' import pygtk pygtk.require('2.0') import gobject import gtk ( COLUMN_FIXED, COLUMN_NUMBER, COLUMN_SEVERITY, COLUMN_DESCRIPTION ) = range(4) data = \ ((False, 60482, 'Normal', 'scrollable notebooks and hidden tabs'), (False, 60620, 'Critical', 'gdk_window_clear_area(gdkwindow-win32.c) is not thread-safe'), (False, 50214, 'Major', 'Xft support does not clean up correctly'), (True, 52877, 'Major', 'GtkFileSelection needs a refresh method. '), (False, 56070, 'Normal', "Can't click button after setting in sensitive"), (True, 56355, 'Normal', 'GtkLabel - Not all changes propagate correctly'), (False, 50055, 'Normal', 'Rework width/height computations for TreeView'), (False, 58278, 'Normal', "gtk_dialog_set_response_sensitive() doesn't work"), (False, 55767, 'Normal', 'Getters for all setters'), (False, 56925, 'Normal', 'Gtkcalender size'), (False, 56221, 'Normal', 'Selectable label needs right-click copy menu'), (True, 50939, 'Normal', 'Add shift clicking to GtkTextView'), (False, 6112, 'Enhancement', 'netscape-like collapsable toolbars'), (False, 1, 'Normal', 'First bug :=)')) class ListStoreDemo(gtk.Window): def __init__(self, parent=None): # create window, etc gtk.Window.__init__(self) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.set_title(self.__class__.__name__) self.set_border_width(8) self.set_default_size(300, 250) vbox = gtk.VBox(False, 8) self.add(vbox) label = gtk.Label('This is the bug list (note: not based on real data, ' 'it would be nice to have a nice ODBC interface to bugzilla or so, though).') vbox.pack_start(label, False, False) sw = gtk.ScrolledWindow() sw.set_shadow_type(gtk.SHADOW_ETCHED_IN) sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) vbox.pack_start(sw) # create tree model model = self.__create_model() # create tree view treeview = gtk.TreeView(model) treeview.set_rules_hint(True) treeview.set_search_column(COLUMN_DESCRIPTION) sw.add(treeview) # add columns to the tree view self.__add_columns(treeview) self.show_all() def __create_model(self): lstore = gtk.ListStore( gobject.TYPE_BOOLEAN, gobject.TYPE_UINT, gobject.TYPE_STRING, gobject.TYPE_STRING) for item in data: iter = lstore.append() lstore.set(iter, COLUMN_FIXED, item[COLUMN_FIXED], COLUMN_NUMBER, item[COLUMN_NUMBER], COLUMN_SEVERITY, item[COLUMN_SEVERITY], COLUMN_DESCRIPTION, item[COLUMN_DESCRIPTION]) return lstore def fixed_toggled(self, cell, path, model): # get toggled iter iter = model.get_iter((int(path),)) fixed = model.get_value(iter, COLUMN_FIXED) # do something with the value fixed = not fixed # set new value model.set(iter, COLUMN_FIXED, fixed) def __add_columns(self, treeview): model = treeview.get_model() # column for fixed toggles renderer = gtk.CellRendererToggle() renderer.connect('toggled', self.fixed_toggled, model) column = gtk.TreeViewColumn('Fixed', renderer, active=COLUMN_FIXED) # set this column to a fixed sizing(of 50 pixels) column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) column.set_fixed_width(50) treeview.append_column(column) # column for bug numbers column = gtk.TreeViewColumn('Bug Number', gtk.CellRendererText(), text=COLUMN_NUMBER) column.set_sort_column_id(COLUMN_NUMBER) treeview.append_column(column) # columns for severities column = gtk.TreeViewColumn('Severity', gtk.CellRendererText(), text=COLUMN_SEVERITY) column.set_sort_column_id(COLUMN_SEVERITY) treeview.append_column(column) # column for description column = gtk.TreeViewColumn('Description', gtk.CellRendererText(), text=COLUMN_DESCRIPTION) column.set_sort_column_id(COLUMN_DESCRIPTION) treeview.append_column(column) def main(): ListStoreDemo() gtk.main() if __name__ == '__main__': main() pygtk-2.24.0/examples/pygtk-demo/demos/appwindow.py0000644000175000017500000002652211545325345017263 00000000000000#!/usr/bin/env python '''Application main window Demonstrates a typical application window, with menubar, toolbar, statusbar.''' # pygtk version: Maik Hertha import pygtk pygtk.require('2.0') import gobject import gtk ( COLOR_RED, COLOR_GREEN, COLOR_BLUE ) = range(3) ( SHAPE_SQUARE, SHAPE_RECTANGLE, SHAPE_OVAL, ) = range(3) ui_info = \ ''' ''' # It's totally optional to do this, you could just manually insert icons # and have them not be themeable, especially if you never expect people # to theme your app. def register_stock_icons(): ''' This function registers our custom toolbar icons, so they can be themed. ''' items = [('demo-gtk-logo', '_GTK!', 0, 0, '')] # Register our stock items gtk.stock_add(items) # Add our custom icon factory to the list of defaults factory = gtk.IconFactory() factory.add_default() import os img_dir = os.path.join(os.path.dirname(__file__), 'images') img_path = os.path.join(img_dir, 'gtk-logo-rgb.gif') try: pixbuf = gtk.gdk.pixbuf_new_from_file(img_path) # Register icon to accompany stock item # The gtk-logo-rgb icon has a white background, make it transparent # the call is wrapped to (gboolean, guchar, guchar, guchar) transparent = pixbuf.add_alpha(True, chr(255), chr(255),chr(255)) icon_set = gtk.IconSet(transparent) factory.add('demo-gtk-logo', icon_set) except gobject.GError, error: print 'failed to load GTK logo for toolbar' class ApplicationMainWindowDemo(gtk.Window): def __init__(self, parent=None): register_stock_icons() # Create the toplevel window gtk.Window.__init__(self) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.set_title(self.__class__.__name__) self.set_default_size(200, 200) merge = gtk.UIManager() self.set_data("ui-manager", merge) merge.insert_action_group(self.__create_action_group(), 0) self.add_accel_group(merge.get_accel_group()) try: mergeid = merge.add_ui_from_string(ui_info) except gobject.GError, msg: print "building menus failed: %s" % msg bar = merge.get_widget("/MenuBar") bar.show() table = gtk.Table(1, 4, False) self.add(table) table.attach(bar, # X direction # # Y direction 0, 1, 0, 1, gtk.EXPAND | gtk.FILL, 0, 0, 0); bar = merge.get_widget("/ToolBar") bar.set_tooltips(True) bar.show() table.attach(bar, # X direction # # Y direction 0, 1, 1, 2, gtk.EXPAND | gtk.FILL, 0, 0, 0) # Create document sw = gtk.ScrolledWindow() sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) sw.set_shadow_type(gtk.SHADOW_IN) table.attach(sw, # X direction Y direction 0, 1, 2, 3, gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL, 0, 0) contents = gtk.TextView() contents.grab_focus() sw.add (contents) # Create statusbar self.statusbar = gtk.Statusbar() table.attach(self.statusbar, # X direction Y direction 0, 1, 3, 4, gtk.EXPAND | gtk.FILL, 0, 0, 0) # Show text widget info in the statusbar buffer = contents.get_buffer() buffer.connect("changed", self.update_statusbar) mark_set_callback = (lambda buffer, new_location, mark: self.update_statusbar(buffer)) # cursor moved buffer.connect("mark_set", mark_set_callback) self.connect("window_state_event", self.update_resize_grip) self.update_statusbar(buffer) self.show_all() def __create_action_group(self): # GtkActionEntry entries = ( ( "FileMenu", None, "_File" ), # name, stock id, label ( "PreferencesMenu", None, "_Preferences" ), # name, stock id, label ( "ColorMenu", None, "_Color" ), # name, stock id, label ( "ShapeMenu", None, "_Shape" ), # name, stock id, label ( "HelpMenu", None, "_Help" ), # name, stock id, label ( "New", gtk.STOCK_NEW, # name, stock id "_New", "N", # label, accelerator "Create a new file", # tooltip self.activate_action ), ( "Open", gtk.STOCK_OPEN, # name, stock id "_Open","O", # label, accelerator "Open a file", # tooltip self.activate_action ), ( "Save", gtk.STOCK_SAVE, # name, stock id "_Save","S", # label, accelerator "Save current file", # tooltip self.activate_action ), ( "SaveAs", gtk.STOCK_SAVE, # name, stock id "Save _As...", None, # label, accelerator "Save to a file", # tooltip self.activate_action ), ( "Quit", gtk.STOCK_QUIT, # name, stock id "_Quit", "Q", # label, accelerator "Quit", # tooltip self.activate_action ), ( "About", None, # name, stock id "_About", "A", # label, accelerator "About", # tooltip self.activate_about ), ( "Logo", "demo-gtk-logo", # name, stock id None, None, # label, accelerator "GTK+", # tooltip self.activate_action ), ); # GtkToggleActionEntry toggle_entries = ( ( "Bold", gtk.STOCK_BOLD, # name, stock id "_Bold", "B", # label, accelerator "Bold", # tooltip self.activate_action, True ), # is_active ) # GtkRadioActionEntry color_entries = ( ( "Red", None, # name, stock id "_Red", "R", # label, accelerator "Blood", COLOR_RED ), # tooltip, value ( "Green", None, # name, stock id "_Green", "G", # label, accelerator "Grass", COLOR_GREEN ), # tooltip, value ( "Blue", None, # name, stock id "_Blue", "B", # label, accelerator "Sky", COLOR_BLUE ), # tooltip, value ) # GtkRadioActionEntry shape_entries = ( ( "Square", None, # name, stock id "_Square", "S", # label, accelerator "Square", SHAPE_SQUARE ), # tooltip, value ( "Rectangle", None, # name, stock id "_Rectangle", "R", # label, accelerator "Rectangle", SHAPE_RECTANGLE ), # tooltip, value ( "Oval", None, # name, stock id "_Oval", "O", # label, accelerator "Egg", SHAPE_OVAL ), # tooltip, value ) # Create the menubar and toolbar action_group = gtk.ActionGroup("AppWindowActions") action_group.add_actions(entries) action_group.add_toggle_actions(toggle_entries) action_group.add_radio_actions(color_entries, COLOR_RED, self.activate_radio_action) action_group.add_radio_actions(shape_entries, SHAPE_OVAL, self.activate_radio_action) return action_group def activate_about(self, action): dialog = gtk.AboutDialog() dialog.set_name("PyGTK Demo") dialog.set_copyright("\302\251 Copyright 200x the PyGTK Team") dialog.set_website("http://www.pygtk.org./") ## Close dialog on user response dialog.connect ("response", lambda d, r: d.destroy()) dialog.show() def activate_action(self, action): dialog = gtk.MessageDialog(self, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_INFO, gtk.BUTTONS_CLOSE, 'You activated action: "%s" of type "%s"' % (action.get_name(), type(action))) # Close dialog on user response dialog.connect ("response", lambda d, r: d.destroy()) dialog.show() def activate_radio_action(self, action, current): active = current.get_active() value = current.get_current_value() if active: dialog = gtk.MessageDialog(self, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_INFO, gtk.BUTTONS_CLOSE, "You activated radio action: \"%s\" of type \"%s\".\nCurrent value: %d" % (current.get_name(), type(current), value)) # Close dialog on user response dialog.connect("response", lambda d, r: d.destroy()) dialog.show() def update_statusbar(self, buffer): # clear any previous message, underflow is allowed self.statusbar.pop(0) count = buffer.get_char_count() iter = buffer.get_iter_at_mark(buffer.get_insert()) row = iter.get_line() col = iter.get_line_offset() self.statusbar.push(0, 'Cursor at row %d column %d - %d chars in document' % (row, col, count)) def update_resize_grip(self, widget, event): mask = gtk.gdk.WINDOW_STATE_MAXIMIZED | gtk.gdk.WINDOW_STATE_FULLSCREEN if (event.changed_mask & mask): self.statusbar.set_has_resize_grip(not (event.new_window_state & mask)) def main(): ApplicationMainWindowDemo() gtk.main() if __name__ == '__main__': main() pygtk-2.24.0/examples/pygtk-demo/demos/tree_store.py0000644000175000017500000002547611545325345017435 00000000000000#!/usr/bin/env python '''Tree View/Tree Store The GtkTreeStore is used to store data in tree form, to be used later on by a GtkTreeView to display it. This demo builds a simple GtkTreeStore and displays it. If you're new to the GtkTreeView widgets and associates, look into the GtkListStore example first.''' # pygtk version: Maik Hertha import pygtk pygtk.require('2.0') import gobject import gtk # columns ( HOLIDAY_NAME_COLUMN, ALEX_COLUMN, HAVOC_COLUMN, TIM_COLUMN, OWEN_COLUMN, DAVE_COLUMN, VISIBLE_COLUMN, WORLD_COLUMN, NUM_COLUMNS ) = range(9) # tree data january = \ [ ["New Years Day", True, True, True, True, False, True ], ["Presidential Inauguration", False, True, False, True, False, False ], ["Martin Luther King Jr. day", False, True, False, True, False, False ] ] february = \ [ [ "Presidents' Day", False, True, False, True, False, False ], [ "Groundhog Day", False, False, False, False, False, False ], [ "Valentine's Day", False, False, False, False, True, True ] ] march = \ [ [ "National Tree Planting Day", False, False, False, False, False, False ], [ "St Patrick's Day", False, False, False, False, False, True ] ] april = \ [ [ "April Fools' Day", False, False, False, False, False, True ], [ "Army Day", False, False, False, False, False, False ], [ "Earth Day", False, False, False, False, False, True ], [ "Administrative Professionals' Day", False, False, False, False, False, False ] ] may = \ [ [ "Nurses' Day", False, False, False, False, False, False ], [ "National Day of Prayer", False, False, False, False, False, False ], [ "Mothers' Day", False, False, False, False, False, True ], [ "Armed Forces Day", False, False, False, False, False, False ], [ "Memorial Day", True, True, True, True, False, True ] ] june = \ [ [ "June Fathers' Day", False, False, False, False, False, True ], [ "Juneteenth(Liberation of Slaves)", False, False, False, False, False, False ], [ "Flag Day", False, True, False, True, False, False ] ] july = \ [ [ "Parents' Day", False, False, False, False, False, True ], [ "Independence Day", False, True, False, True, False, False ] ] august = \ [ [ "Air Force Day", False, False, False, False, False, False ], [ "Coast Guard Day", False, False, False, False, False, False ], [ "Friendship Day", False, False, False, False, False, False ] ] september = \ [ [ "Grandparents' Day", False, False, False, False, False, True ], [ "Citizenship Day or Constitution Day", False, False, False, False, False, False ], [ "Labor Day", True, True, True, True, False, True ] ] october = \ [ [ "National Children's Day", False, False, False, False, False, False ], [ "Bosses' Day", False, False, False, False, False, False ], [ "Sweetest Day", False, False, False, False, False, False ], [ "Mother-in-Law's Day", False, False, False, False, False, False ], [ "Navy Day", False, False, False, False, False, False ], [ "Columbus Day", False, True, False, True, False, False ], [ "Halloween", False, False, False, False, False, True ] ] november = \ [ [ "Marine Corps Day", False, False, False, False, False, False ], [ "Veterans' Day", True, True, True, True, False, True ], [ "Thanksgiving", False, True, False, True, False, False ] ] december = \ [ [ "Pearl Harbor Remembrance Day", False, False, False, False, False, False ], [ "Christmas", True, True, True, True, False, True ], [ "Kwanzaa", False, False, False, False, False, False ] ] toplevel = \ [ ["January", False, False, False, False, False, False, january], ["February", False, False, False, False, False, False, february], ["March", False, False, False, False, False, False, march], ["April", False, False, False, False, False, False, april], ["May", False, False, False, False, False, False, may], ["June", False, False, False, False, False, False, june], ["July", False, False, False, False, False, False, july], ["August", False, False, False, False, False, False, august], ["September", False, False, False, False, False, False, september], ["October", False, False, False, False, False, False, october], ["November", False, False, False, False, False, False, november], ["December", False, False, False, False, False, False, december] ] class TreeStoreDemo(gtk.Window): def __init__(self, parent=None): gtk.Window.__init__(self) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.set_title(self.__class__.__name__) self.set_default_size(650, 400) self.set_border_width(8) vbox = gtk.VBox(False, 8) self.add(vbox) label = gtk.Label("Jonathan's Holiday Card Planning Sheet") vbox.pack_start(label, False, False) sw = gtk.ScrolledWindow() sw.set_shadow_type(gtk.SHADOW_ETCHED_IN) sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) vbox.pack_start(sw) # create model model = self.__create_model() # create treeview treeview = gtk.TreeView(model) treeview.set_rules_hint(True) self.__add_columns(treeview) sw.add(treeview) # expand all rows after the treeview widget has been realized treeview.connect('realize', lambda tv: tv.expand_all()) self.show_all() def __create_model(self): # create tree store model = gtk.TreeStore( gobject.TYPE_STRING, gobject.TYPE_BOOLEAN, gobject.TYPE_BOOLEAN, gobject.TYPE_BOOLEAN, gobject.TYPE_BOOLEAN, gobject.TYPE_BOOLEAN, gobject.TYPE_BOOLEAN, gobject.TYPE_BOOLEAN) # add data to the tree store for month in toplevel: iter = model.append(None) model.set(iter, HOLIDAY_NAME_COLUMN, month[HOLIDAY_NAME_COLUMN], ALEX_COLUMN, False, HAVOC_COLUMN, False, TIM_COLUMN, False, OWEN_COLUMN, False, DAVE_COLUMN, False, VISIBLE_COLUMN, False, WORLD_COLUMN, False ) # add children for holiday in month[-1]: child_iter = model.append(iter); model.set(child_iter, HOLIDAY_NAME_COLUMN, holiday[HOLIDAY_NAME_COLUMN], ALEX_COLUMN, holiday[ALEX_COLUMN], HAVOC_COLUMN, holiday[HAVOC_COLUMN], TIM_COLUMN, holiday[TIM_COLUMN], OWEN_COLUMN, holiday[OWEN_COLUMN], DAVE_COLUMN, holiday[DAVE_COLUMN], VISIBLE_COLUMN, True, WORLD_COLUMN, holiday[WORLD_COLUMN-1] ) return model def on_item_toggled(self, cell, path_str, model): # get selected column column = cell.get_data('column') # get toggled iter iter = model.get_iter_from_string(path_str) toggle_item = model.get_value(iter, column) # do something with the value toggle_item = not toggle_item # set new value model.set(iter, column, toggle_item) def __add_columns(self, treeview): model = treeview.get_model() # column for holiday names renderer = gtk.CellRendererText() renderer.set_property("xalign", 0.0) #col_offset = gtk.TreeViewColumn("Holiday", renderer, text=HOLIDAY_NAME_COLUMN) column = gtk.TreeViewColumn("Holiday", renderer, text=HOLIDAY_NAME_COLUMN) #column = gtk_tree_view_get_column(GTK_TREE_VIEW(treeview), col_offset - 1); column.set_clickable(True) treeview.append_column(column) # alex column */ renderer = gtk.CellRendererToggle() renderer.set_property("xalign", 0.0) renderer.set_data("column", ALEX_COLUMN) renderer.connect("toggled", self.on_item_toggled, model) column = gtk.TreeViewColumn("Alex", renderer, active=ALEX_COLUMN, visible=VISIBLE_COLUMN, activatable=WORLD_COLUMN) # set this column to a fixed sizing(of 50 pixels) #column = gtk_tree_view_get_column(GTK_TREE_VIEW(treeview), col_offset - 1); column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) column.set_fixed_width(50) column.set_clickable(True) treeview.append_column(column) # havoc column renderer = gtk.CellRendererToggle(); renderer.set_property("xalign", 0.0) renderer.set_data("column", HAVOC_COLUMN) renderer.connect("toggled", self.on_item_toggled, model) column = gtk.TreeViewColumn("Havoc", renderer, active=HAVOC_COLUMN, visible=VISIBLE_COLUMN) #column = treeview.get_column(col_offset - 1) column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) column.set_fixed_width(50) column.set_clickable(True) treeview.append_column(column) # tim column renderer = gtk.CellRendererToggle(); renderer.set_property("xalign", 0.0) renderer.set_data("column", TIM_COLUMN) renderer.connect("toggled", self.on_item_toggled, model) column = gtk.TreeViewColumn("Tim", renderer, active=TIM_COLUMN, visible=VISIBLE_COLUMN, activatable=WORLD_COLUMN) #column = treeview.get_column(col_offset - 1) column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) column.set_fixed_width(50) column.set_clickable(True) treeview.append_column(column) # owen column renderer = gtk.CellRendererToggle(); renderer.set_property("xalign", 0.0) renderer.set_data("column", OWEN_COLUMN) renderer.connect("toggled", self.on_item_toggled, model) column = gtk.TreeViewColumn("Owen", renderer, active=OWEN_COLUMN, visible=VISIBLE_COLUMN) #column = treeview.get_column(col_offset - 1) column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) column.set_fixed_width(50) column.set_clickable(True) treeview.append_column(column) # dave column renderer = gtk.CellRendererToggle(); renderer.set_property("xalign", 0.0) renderer.set_data("column", DAVE_COLUMN) renderer.connect("toggled", self.on_item_toggled, model) column = gtk.TreeViewColumn("Dave", renderer, active=DAVE_COLUMN, visible=VISIBLE_COLUMN) #column = treeview.get_column(col_offset - 1) column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) column.set_fixed_width(50) column.set_clickable(True) treeview.append_column(column) def main(): TreeStoreDemo() gtk.main() if __name__ == '__main__': main() pygtk-2.24.0/examples/pygtk-demo/demos/sizegroup.py0000644000175000017500000000734511545325345017304 00000000000000#!/usr/bin/env python """Size Group GtkSizeGroup provides a mechanism for grouping a number of widgets together so they all request the same amount of space. This is typically useful when you want a column of widgets to have the same size, but you can't use a GtkTable widget. Note that size groups only affect the amount of space requested, not the size that the widgets finally receive. If you want the widgets in a GtkSizeGroup to actually be the same size, you need to pack them in such a way that they get the size they request and not more. For example, if you are packing your widgets into a table, you would not include the GTK_FILL flag.""" import pygtk pygtk.require('2.0') import gtk class SizeGroupDemo(gtk.Dialog): def __init__(self, parent=None): gtk.Dialog.__init__(self, "Size Groups", parent, 0, (gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.connect('response', lambda d, r: d.destroy()) self.set_resizable(False) vbox = gtk.VBox(False, 5) self.vbox.pack_start(vbox, True, True, 0) vbox.set_border_width(5) self.size_group = gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL) # Create one frame holding color options frame = gtk.Frame("Color options") vbox.pack_start(frame, True, True, 0) table = gtk.Table(2, 2, False) table.set_border_width(5) table.set_row_spacings(5) table.set_col_spacings(10) frame.add(table) color_options = ("Red", "Green", "Blue") self.__add_row(table, 0, "_Foreground", color_options) self.__add_row(table, 1, "_Background", color_options) # And another frame holding line style options frame = gtk.Frame("Line options") vbox.pack_start(frame, False, False, 0) table = gtk.Table(2, 2, False) table.set_border_width(5) table.set_row_spacings(5) table.set_col_spacings(10) frame.add(table) dash_options = ("Solid", "Dashed", "Dotted") end_options = ("Square", "Round", "Arrow") self.__add_row(table, 0, "_Dashing", dash_options) self.__add_row(table, 1, "_Line ends", end_options) # And a check button to turn grouping on and off check_button = gtk.CheckButton("_Enable grouping") vbox.pack_start(check_button, False, False, 0) check_button.set_active(True) check_button.connect('toggled', self.on_toggle_grouping) self.show_all() def __create_option_menu(self, options): option_menu = gtk.combo_box_new_text() for opt in options: option_menu.append_text(opt) option_menu.set_active(0) return option_menu def __add_row(self, table, row, label_text, options): label = gtk.Label(label_text) label.set_use_underline(True) label.set_alignment(0, 1) table.attach(label, 0, 1, row, row + 1, gtk.EXPAND | gtk.FILL, 0, 0, 0) option_menu = self.__create_option_menu(options) label.set_mnemonic_widget(option_menu) self.size_group.add_widget(option_menu) table.attach(option_menu, 1, 2, row, row + 1, 0, 0, 0, 0) def on_toggle_grouping(self, check_button): # gtk.SIZE_GROUP_NONE is not generally useful, but is useful # here to show the effect of gtk.SIZE_GROUP_HORIZONTAL by # contrast. if check_button.get_active(): self.size_group.set_mode(gtk.SIZE_GROUP_HORIZONTAL) else: self.size_group.set_mode(gtk.SIZE_GROUP_NONE) def main(): SizeGroupDemo() gtk.main() if __name__ == '__main__': main() pygtk-2.24.0/examples/pygtk-demo/demos/statusicon.py0000644000175000017500000000145611545325345017446 00000000000000#!/usr/bin/env python '''Status Icon This is a simple example that shows how to create a status icon that will appear in the "notification area" in GNOME/KDE, or "system tray" in Windows. ''' ## Author: Nikos Kouremenos import pygtk pygtk.require('2.0') import gtk def make_menu(event_button, event_time, icon): menu = gtk.Menu() item = gtk.MenuItem('hi') item.show() menu.append(item) menu.popup(None, None, gtk.status_icon_position_menu, event_button, event_time, icon) def on_right_click(icon, event_button, event_time): make_menu(event_button, event_time, icon) def StatusIconDemo(parent=None): icon = gtk.status_icon_new_from_stock(gtk.STOCK_QUIT) icon.connect('popup-menu', on_right_click) if __name__ == '__main__': StatusIconDemo() gtk.main() pygtk-2.24.0/examples/pygtk-demo/demos/textview.py0000644000175000017500000005062011545325345017126 00000000000000#!/usr/bin/env python """Text Widget/TextView The GtkTextView widget displays a GtkTextBuffer. One GtkTextBuffer can be displayed by multiple GtkTextViews. This demo has two views displaying a single buffer, and shows off the widget's text formatting features.""" # pygtk version: Maik Hertha import os import sys import pygtk pygtk.require('2.0') import gobject import gtk gray50_width = 2 gray50_height = 2 gray50_bits = '\x02\x01' GTKLOGO_IMAGE = os.path.join(os.path.dirname(__file__), 'images', 'gtk-logo-rgb.gif') FLOPPYBUDDY_IMAGE = os.path.join(os.path.dirname(__file__), 'images', 'floppybuddy.gif') class TextViewDemo(gtk.Window): def __init__(self, parent=None): # Create the toplevel window gtk.Window.__init__(self) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.set_title(self.__class__.__name__) self.set_default_size(450, 450) self.set_border_width(0) vpaned = gtk.VPaned() vpaned.set_border_width(5) self.add(vpaned) # For convenience, we just use the autocreated buffer from # the first text view; you could also create the buffer # by itself with gtk.text_buffer_new(), then later create # a view widget. view1 = gtk.TextView(); buffer_1 = view1.get_buffer() view2 = gtk.TextView(buffer_1) sw = gtk.ScrolledWindow() sw.set_shadow_type(gtk.SHADOW_ETCHED_IN) sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) vpaned.add1(sw) sw.add(view1) sw = gtk.ScrolledWindow() sw.set_shadow_type(gtk.SHADOW_ETCHED_IN) sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) vpaned.add2(sw) sw.add(view2) self.create_tags(buffer_1) self.insert_text(buffer_1) self.attach_widgets(view1) self.attach_widgets(view2) self.win = None self.show_all() def create_tags(self, text_buffer): ''' Create a bunch of tags. Note that it's also possible to create tags with gtk.text_tag_new() then add them to the tag table for the buffer, text_buffer.create_tag() is just a convenience function. Also note that you don't have to give tags a name; pass None for the name to create an anonymous tag. In any real app, another useful optimization would be to create a GtkTextTagTable in advance, and reuse the same tag table for all the buffers with the same tag set, instead of creating new copies of the same tags for every buffer. Tags are assigned default priorities in order of addition to the tag table. That is, tags created later that affect the same text property affected by an earlier tag will override the earlier tag. You can modify tag priorities with gtk.text_tag_set_priority(). ''' import pango text_buffer.create_tag("heading", weight=pango.WEIGHT_BOLD, size=15 * pango.SCALE) text_buffer.create_tag("italic", style=pango.STYLE_ITALIC) text_buffer.create_tag("bold", weight=pango.WEIGHT_BOLD) # points times the pango.SCALE factor text_buffer.create_tag("big", size=20 * pango.SCALE) text_buffer.create_tag("xx-small", scale=pango.SCALE_XX_SMALL) text_buffer.create_tag("x-large", scale=pango.SCALE_X_LARGE) text_buffer.create_tag("monospace", family="monospace") text_buffer.create_tag("blue_foreground", foreground="blue") text_buffer.create_tag("red_background", background="red") stipple = gtk.gdk.bitmap_create_from_data(None, gray50_bits, gray50_width, gray50_height) text_buffer.create_tag("background_stipple", background_stipple=stipple) text_buffer.create_tag("foreground_stipple", foreground_stipple=stipple) text_buffer.create_tag("big_gap_before_line", pixels_above_lines=30) text_buffer.create_tag("big_gap_after_line", pixels_below_lines=30) text_buffer.create_tag("double_spaced_line", pixels_inside_wrap=10) text_buffer.create_tag("not_editable", editable=False) text_buffer.create_tag("word_wrap", wrap_mode=gtk.WRAP_WORD) text_buffer.create_tag("char_wrap", wrap_mode=gtk.WRAP_CHAR) text_buffer.create_tag("no_wrap", wrap_mode=gtk.WRAP_NONE) text_buffer.create_tag("center", justification=gtk.JUSTIFY_CENTER) text_buffer.create_tag("right_justify", justification=gtk.JUSTIFY_RIGHT) text_buffer.create_tag("wide_margins", left_margin=50, right_margin=50) text_buffer.create_tag("strikethrough", strikethrough=True) text_buffer.create_tag("underline", underline=pango.UNDERLINE_SINGLE) text_buffer.create_tag("double_underline", underline=pango.UNDERLINE_DOUBLE) text_buffer.create_tag("superscript", rise=10 * pango.SCALE, # 10 pixels size=8 * pango.SCALE) # 8 points text_buffer.create_tag("subscript", rise=-10 * pango.SCALE, # 10 pixels size=8 * pango.SCALE) # 8 points text_buffer.create_tag("rtl_quote", wrap_mode=gtk.WRAP_WORD, direction=gtk.TEXT_DIR_RTL, indent=30, left_margin=20, right_margin=20) def insert_text(self, text_buffer): # use the current directory for the file try: pixbuf = gtk.gdk.pixbuf_new_from_file(GTKLOGO_IMAGE) except gobject.GError, error: sys.exit("Failed to load image file gtk-logo-rgb.gif\n") scaled = pixbuf.scale_simple(32, 32, 'bilinear') pixbuf = scaled # get start of buffer; each insertion will revalidate the # iterator to point to just after the inserted text. iter = text_buffer.get_iter_at_offset(0) text_buffer.insert(iter, "The text widget can display text with " "all kinds of nifty attributes. It also supports multiple views " "of the same buffer; this demo is showing the same buffer in " "two places.\n\n") text_buffer.insert_with_tags_by_name(iter, "Font styles. ", "heading") text_buffer.insert(iter, "For example, you can have ") text_buffer.insert_with_tags_by_name(iter, "italic", "italic") text_buffer.insert(iter, ", "); text_buffer.insert_with_tags_by_name(iter, "bold", "bold") text_buffer.insert(iter, ", or ", -1) text_buffer.insert_with_tags_by_name(iter, "monospace(typewriter)", "monospace") text_buffer.insert(iter, ", or ") text_buffer.insert_with_tags_by_name(iter, "big", "big") text_buffer.insert(iter, " text. ") text_buffer.insert(iter, "It's best not to hardcode specific text " "sizes; you can use relative sizes as with CSS, such as ") text_buffer.insert_with_tags_by_name(iter, "xx-small", "xx-small") text_buffer.insert(iter, " or ") text_buffer.insert_with_tags_by_name(iter, "x-large", "x-large") text_buffer.insert(iter, " to ensure that your program properly " "adapts if the user changes the default font size.\n\n") text_buffer.insert_with_tags_by_name(iter, "Colors. ", "heading") text_buffer.insert(iter, "Colors such as "); text_buffer.insert_with_tags_by_name(iter, "a blue foreground", "blue_foreground") text_buffer.insert(iter, " or "); text_buffer.insert_with_tags_by_name(iter, "a red background", "red_background") text_buffer.insert(iter, " or even ", -1); text_buffer.insert_with_tags_by_name(iter, "a stippled red background", "red_background", "background_stipple") text_buffer.insert(iter, " or ", -1); text_buffer.insert_with_tags_by_name(iter, "a stippled blue foreground on solid red background", "blue_foreground", "red_background", "foreground_stipple") text_buffer.insert(iter, "(select that to read it) can be used.\n\n", -1); text_buffer.insert_with_tags_by_name(iter, "Underline, strikethrough, and rise. ", "heading") text_buffer.insert_with_tags_by_name(iter, "Strikethrough", "strikethrough") text_buffer.insert(iter, ", ", -1) text_buffer.insert_with_tags_by_name(iter, "underline", "underline") text_buffer.insert(iter, ", ", -1) text_buffer.insert_with_tags_by_name(iter, "double underline", "double_underline") text_buffer.insert(iter, ", ", -1) text_buffer.insert_with_tags_by_name(iter, "superscript", "superscript") text_buffer.insert(iter, ", and ", -1) text_buffer.insert_with_tags_by_name(iter, "subscript", "subscript") text_buffer.insert(iter, " are all supported.\n\n", -1) text_buffer.insert_with_tags_by_name(iter, "Images. ", "heading") text_buffer.insert(iter, "The buffer can have images in it: ", -1) text_buffer.insert_pixbuf(iter, pixbuf) text_buffer.insert_pixbuf(iter, pixbuf) text_buffer.insert_pixbuf(iter, pixbuf) text_buffer.insert(iter, " for example.\n\n", -1) text_buffer.insert_with_tags_by_name(iter, "Spacing. ", "heading") text_buffer.insert(iter, "You can adjust the amount of space before each line.\n", -1) text_buffer.insert_with_tags_by_name(iter, "This line has a whole lot of space before it.\n", "big_gap_before_line", "wide_margins") text_buffer.insert_with_tags_by_name(iter, "You can also adjust the amount of space after each line; " "this line has a whole lot of space after it.\n", "big_gap_after_line", "wide_margins") text_buffer.insert_with_tags_by_name(iter, "You can also adjust the amount of space between wrapped " "lines; this line has extra space between each wrapped line " "in the same paragraph. To show off wrapping, some filler " "text: the quick brown fox jumped over the lazy dog. Blah " "blah blah blah blah blah blah blah blah.\n", "double_spaced_line", "wide_margins") text_buffer.insert(iter, "Also note that those lines have " "extra-wide margins.\n\n", -1) text_buffer.insert_with_tags_by_name(iter, "Editability. ", "heading") text_buffer.insert_with_tags_by_name(iter, "This line is 'locked down' and can't be edited by the " "user - just try it! You can't delete this line.\n\n", "not_editable") text_buffer.insert_with_tags_by_name(iter, "Wrapping. ", "heading") text_buffer.insert(iter, "This line(and most of the others in this buffer) is " "word-wrapped, using the proper Unicode algorithm. Word " "wrap should work in all scripts and languages that GTK+ " "supports. Let's make this a long paragraph to demonstrate: " "blah blah blah blah blah blah blah blah blah blah blah " "blah blah blah blah blah blah blah blah\n\n", -1); text_buffer.insert_with_tags_by_name(iter, "This line has character-based wrapping, and can wrap " "between any two character glyphs. Let's make this a long " "paragraph to demonstrate: blah blah blah blah blah blah " "blah blah blah blah blah blah blah blah blah blah blah " "blah blah\n\n", "char_wrap") text_buffer.insert_with_tags_by_name(iter, "This line has all wrapping turned off, so it makes the " "horizontal scrollbar appear.\n\n\n", "no_wrap") text_buffer.insert_with_tags_by_name(iter, "Justification. ", "heading"); text_buffer.insert_with_tags_by_name(iter, "\nThis line has center justification.\n", "center") text_buffer.insert_with_tags_by_name(iter, "This line has right justification.\n", "right_justify") text_buffer.insert_with_tags_by_name(iter, "\nThis line has big wide margins. Text text text text " "text text text text text text text text text text text " "text text text text text text text text text text text " "text text text text text text text text text text.\n", "wide_margins"); text_buffer.insert_with_tags_by_name(iter, "Internationalization. ", "heading") text_buffer.insert(iter, "You can put all sorts of Unicode text in the buffer.\n\n" "German(Deutsch S\303\274d) Gr\303\274\303\237 Gott\nGreek" "(\316\225\316\273\316\273\316\267\316\275\316\271\316\272" "\316\254) \316\223\316\265\316\271\316\254 \317\203\316\261" "\317\202\nHebrew \327\251\327\234\327\225\327\235\n" "Japanese(\346\227\245\346\234\254\350\252\236)\n\nThe " "widget properly handles bidirectional text, word wrapping, " "DOS/UNIX/Unicode paragraph separators, grapheme boundaries, " "and so on using the Pango internationalization framework.\n", -1) text_buffer.insert(iter, "Here's a word-wrapped quote in a " "right-to-left language:\n", -1) text_buffer.insert_with_tags_by_name(iter, "\331\210\331\202\330\257 \330\250\330\257\330\243 " "\330\253\331\204\330\247\330\253 \331\205\331\206 " "\330\243\331\203\330\253\330\261 \330\247\331\204\331" "\205\330\244\330\263\330\263\330\247\330\252 \330\252" "\331\202\330\257\331\205\330\247 \331\201\331\212 \330" "\264\330\250\331\203\330\251 \330\247\331\203\330\263" "\331\212\331\210\331\206 \330\250\330\261\330\247\331" "\205\330\254\331\207\330\247 \331\203\331\205\331\206" "\330\270\331\205\330\247\330\252 \331\204\330\247 \330" "\252\330\263\330\271\331\211 \331\204\331\204\330\261" "\330\250\330\255\330\214 \330\253\331\205 \330\252\330" "\255\331\210\331\204\330\252 \331\201\331\212 \330\247" "\331\204\330\263\331\206\331\210\330\247\330\252 \330" "\247\331\204\330\256\331\205\330\263 \330\247\331\204" "\331\205\330\247\330\266\331\212\330\251 \330\245\331" "\204\331\211 \331\205\330\244\330\263\330\263\330\247" "\330\252 \331\205\330\247\331\204\331\212\330\251 \331" "\205\331\206\330\270\331\205\330\251\330\214 \331\210" "\330\250\330\247\330\252\330\252 \330\254\330\262\330\241" "\330\247 \331\205\331\206 \330\247\331\204\331\206\330\270" "\330\247\331\205 \330\247\331\204\331\205\330\247\331\204" "\331\212 \331\201\331\212 \330\250\331\204\330\257\330\247" "\331\206\331\207\330\247\330\214 \331\210\331\204\331\203" "\331\206\331\207\330\247 \330\252\330\252\330\256\330\265" "\330\265 \331\201\331\212 \330\256\330\257\331\205\330\251 " "\331\202\330\267\330\247\330\271 \330\247\331\204\331\205\330" "\264\330\261\331\210\330\271\330\247\330\252 \330\247\331\204" "\330\265\330\272\331\212\330\261\330\251. \331\210\330\243" "\330\255\330\257 \330\243\331\203\330\253\330\261 \331\207" "\330\260\331\207 \330\247\331\204\331\205\330\244\330\263" "\330\263\330\247\330\252 \331\206\330\254\330\247\330\255" "\330\247 \331\207\331\210 \302\273\330\250\330\247\331\206" "\331\203\331\210\330\263\331\210\331\204\302\253 \331\201" "\331\212 \330\250\331\210\331\204\331\212\331\201\331\212" "\330\247.\n\n", "rtl_quote") text_buffer.insert(iter, "You can put widgets in the buffer: " "Here's a button: ", -1) anchor = text_buffer.create_child_anchor(iter) text_buffer.insert(iter, " and a menu: ", -1) anchor = text_buffer.create_child_anchor(iter) text_buffer.insert(iter, " and a scale: ", -1) anchor = text_buffer.create_child_anchor(iter) text_buffer.insert(iter, " and an animation: ", -1) anchor = text_buffer.create_child_anchor(iter) text_buffer.insert(iter, " finally a text entry: ", -1) anchor = text_buffer.create_child_anchor(iter) text_buffer.insert(iter, ".\n", -1) text_buffer.insert(iter, "\n\nThis demo doesn't demonstrate all " "the GtkTextBuffer features; it leaves out, for example: " "invisible/hidden text(doesn't work in GTK 2, but planned), " "tab stops, application-drawn areas on the sides of the " "widget for displaying breakpoints and such...", -1) # Apply word_wrap tag to whole buffer */ start, end = text_buffer.get_bounds() text_buffer.apply_tag_by_name("word_wrap", start, end) def attach_widgets(self, text_view): buffer = text_view.get_buffer() iter = buffer.get_start_iter() i = 0 while self.find_anchor(iter): anchor = iter.get_child_anchor() if i == 0: widget = gtk.Button("Click Me") widget.connect("clicked", self.easter_egg_callback) elif i == 1: widget = gtk.combo_box_new_text() widget.append_text("Option 1") widget.append_text("Option 2") widget.append_text("Option 3") elif i == 2: widget = gtk.HScale() widget.set_range(0, 100) widget.set_size_request(70, -1) elif i == 3: widget = gtk.Image() widget.set_from_file(FLOPPYBUDDY_IMAGE) elif i == 4: widget = gtk.Entry() else: raise ValueError text_view.add_child_at_anchor(widget, anchor) widget.show_all() i += 1 return def find_anchor(self, iter): while iter.forward_char(): if iter.get_child_anchor(): return True return False def easter_egg_callback(self, button): if self.win: self.win.present() return buffer = gtk.TextBuffer() iter = buffer.get_start_iter() buffer.insert(iter, "This buffer is shared by a set of nested text views.\n Nested view:\n") anchor = buffer.create_child_anchor(iter) buffer.insert(iter, "\nDon't do this in real applications, please.\n") view = gtk.TextView(buffer) self.recursive_attach_view(0, view, anchor) self.win = gtk.Window() sw = gtk.ScrolledWindow() sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.win.add(sw) sw.add(view) self.win.set_default_size(300, 400) self.win.show_all() return def recursive_attach_view(self, depth, view, anchor): if depth > 4: return child_view = gtk.TextView(view.get_buffer()) # Event box is needed to add a black border around each child view event_box = gtk.EventBox() color = gtk.gdk.color_parse("black") event_box.modify_bg(gtk.STATE_NORMAL, color) align = gtk.Alignment(0.5, 0.5, 1.0, 1.0) align.set_border_width(1) event_box.add(align) align.add(child_view) view.add_child_at_anchor(event_box, anchor) self.recursive_attach_view(depth + 1, child_view, anchor) return def main(): TextViewDemo() gtk.main() if __name__ == '__main__': main() pygtk-2.24.0/examples/pygtk-demo/demos/dnd.py0000644000175000017500000001616211545325345016017 00000000000000#!/usr/bin/env python '''Drag and Drop This is a test of the drag and drop capabilities of gtk. It is a fairly straight forward port of the example distributed with gtk. ''' import pygtk pygtk.require('2.0') import gtk import gobject from dndpixmap import drag_icon_xpm, trashcan_open_xpm, trashcan_closed_xpm TARGET_STRING = 0 TARGET_ROOTWIN = 1 target = [ ('STRING', 0, TARGET_STRING), ('text/plain', 0, TARGET_STRING), ('application/x-rootwin-drop', 0, TARGET_ROOTWIN) ] def create_pixmap(widget, xpm_data): return \ gtk.gdk.pixmap_colormap_create_from_xpm_d( None, widget.get_colormap(), None, xpm_data) class DragAndDropDemo(gtk.Window): trashcan_open = None trashcan_open_mask = None trashcan_closed = None trashcan_closed_mask = None drag_icon = None drag_mask = None have_drag = False popped_up = False in_popup = False popup_timer = 0 popdown_timer = 0 popup_win = None def __init__(self, parent=None): gtk.Window.__init__(self) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.set_title(self.__class__.__name__) table = gtk.Table(2,2) self.add(table) self.drag_icon, self.drag_mask = \ create_pixmap(self, drag_icon_xpm) self.trashcan_open, self.trashcan_open_mask = \ create_pixmap(self, trashcan_open_xpm) self.trashcan_closed, self.trashcan_closed_mask = \ create_pixmap(self, trashcan_closed_xpm) label = gtk.Label('Drop to Trashcan!\n') label.drag_dest_set(gtk.DEST_DEFAULT_ALL, target[:-1], gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE) label.connect('drag_data_received', self.label_drag_data_received) table.attach(label, 0, 1, 0, 1) label = gtk.Label('Popup\n') label.drag_dest_set(gtk.DEST_DEFAULT_ALL, target[:-1], gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE) table.attach(label, 1, 2, 1, 2) label.connect('drag_motion', self.popsite_motion) label.connect('drag_leave', self.popsite_leave) image = gtk.Image() image.set_from_pixmap(self.trashcan_closed, self.trashcan_closed_mask) image.drag_dest_set(0, [], 0) table.attach(image, 1, 2, 0, 1) image.connect('drag_leave', self.target_drag_leave) image.connect('drag_motion', self.target_drag_motion) image.connect('drag_drop', self.target_drag_drop) image.connect('drag_data_received', self.target_drag_data_received) b = gtk.Button('Drag from Here\n') b.drag_source_set(gtk.gdk.BUTTON1_MASK | gtk.gdk.BUTTON3_MASK, target, gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE) b.drag_source_set_icon(self.get_colormap(), self.drag_icon, self.drag_mask) table.attach(b, 0, 1, 1, 2) b.connect('drag_data_get', self.source_drag_data_get) b.connect('drag_data_delete', self.source_drag_data_delete) self.show_all() def label_drag_data_received(self, w, context, x, y, data, info, time): if data and data.format == 8: print 'Received "%s" in label' % data.data context.finish(True, False, time) else: context.finish(False, False, time) def popsite_motion(self, w, context, x, y, time): if not self.popup_timer: self.popup_timer = gobject.timeout_add(500, self.popup_cb) return True def popsite_leave(self, w, context, time): if self.popup_timer: gobject.source_remove(self.popup_timer) self.popup_timer = 0 def popup_motion(self, w, context, x, y, time): print 'popup_motion' if not self.in_popup: self.in_popup = True if self.popdown_timer: print 'removed popdown' gobject.source_remove(self.popdown_timer) self.popdown_timer = 0 return True def popup_leave(self, w, context, time): print 'popup_leave' if self.in_popup: self.in_popup = False if not self.popdown_timer: print 'added popdown' self.popdown_timer = gobject.timeout_add(500, self.popdown_cb) def popup_cb(self): if not self.popped_up: if self.popup_win is None: self.popup_win = gtk.Window(gtk.WINDOW_POPUP) self.popup_win.set_position(gtk.WIN_POS_MOUSE) table = gtk.Table(3, 3) for k in range(9): i, j = divmod(k, 3) b = gtk.Button("%d,%d" % (i,j)) b.drag_dest_set(gtk.DEST_DEFAULT_ALL, target[:-1], gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE) b.connect('drag_motion', self.popup_motion) b.connect('drag_leave', self.popup_leave) table.attach(b, i, i+1, j, j+1) table.show_all() self.popup_win.add(table) self.popup_win.present() self.popped_up = True self.popdown_timer = gobject.timeout_add(500, self.popdown_cb) print 'added popdown' self.popup_timer = 0 return False def popdown_cb(self): print 'popdown' #if self.in_popup: # return True self.popdown_timer = 0 self.popup_win.hide() self.popped_up = False return False def target_drag_leave(self, img, context, time): print 'leave' self.have_drag = False img.set_from_pixmap(self.trashcan_closed, self.trashcan_closed_mask) def target_drag_motion(self, img, context, x, y, time): if self.have_drag is False: self.have_drag = True img.set_from_pixmap(self.trashcan_open, self.trashcan_open_mask) source_widget = context.get_source_widget() print 'motion, source ', if source_widget: print source_widget.__class__.__name__ else: print 'unknown' context.drag_status(context.suggested_action, time) return True def target_drag_drop(self, img, context, x, y, time): print 'drop' self.have_drag = False img.set_from_pixmap(self.trashcan_closed, self.trashcan_closed_mask) if context.targets: img.drag_get_data(context, context.targets[0], time) return True return False def target_drag_data_received(self, img, context, x, y, data, info, time): if data.format == 8: print 'Received "%s" in trashcan' % data.data context.finish(True, False, time) else: context.finish(False, False, time) def source_drag_data_get(self, btn, context, selection_data, info, time): if info == TARGET_ROOTWIN: print 'I was dropped on the rootwin' else: selection_data.set(selection_data.target, 8, "I'm Data!") def source_drag_data_delete(self, btn, context, data): print 'Delete the data!' def main(): DragAndDropDemo() gtk.main() if __name__ == '__main__': main() pygtk-2.24.0/examples/pygtk-demo/demos/images.py0000644000175000017500000002347211545325345016521 00000000000000#!/usr/bin/env python '''Images GtkImage is used to display an image; the image can be in a number of formats. Typically, you load an image into a GdkPixbuf, then display the pixbuf. This demo code shows some of the more obscure cases, in the simple case a call to gtk_image_new_from_file() is all you need. If you want to put image data in your program as a C variable, use the make-inline-pixbuf program that comes with GTK+. This way you won't need to depend on loading external files, your application binary can be self-contained.''' # pygtk version: Maik Hertha import os import pygtk pygtk.require('2.0') import gobject import gtk IMAGEDIR = os.path.join(os.path.dirname(__file__), 'images') ALPHA_IMAGE = os.path.join(IMAGEDIR, 'alphatest.png') GTKLOGO_IMAGE = os.path.join(IMAGEDIR, 'gtk-logo-rgb.gif') BUDDY_IMAGE = os.path.join(IMAGEDIR, 'floppybuddy.gif') def progressive_prepared_callback(loader, image): pixbuf = loader.get_pixbuf() # Avoid displaying random memory contents, since the pixbuf # isn't filled in yet. #images.c -> gdk_pixbuf_fill(pixbuf, 0xaaaaaaff) pixbuf.fill(0) image.set_from_pixbuf(pixbuf) def progressive_updated_callback(loader, x, y, width, height, image): ''' We know the pixbuf inside the GtkImage has changed, but the image itself doesn't know this; so queue a redraw. If we wanted to be really efficient, we could use a drawing area or something instead of a GtkImage, so we could control the exact position of the pixbuf on the display, then we could queue a draw for only the updated area of the image. ''' image.queue_draw() class ImagesDemo(gtk.Window): pixbuf_loader = None load_timeout = None image_stream = None def __init__(self, parent=None): gtk.Window.__init__(self) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.connect("destroy", self.cleanup_callback) self.set_title(self.__class__.__name__) self.set_border_width(8) vbox = gtk.VBox(False, 8) vbox.set_border_width(8) self.add(vbox) label = gtk.Label(); label.set_markup("Image loaded from a file") vbox.pack_start(label, False, False, 0) frame = gtk.Frame() frame.set_shadow_type(gtk.SHADOW_IN) # The alignment keeps the frame from growing when users resize # the window align = gtk.Alignment(0.5, 0.5, 0, 0) align.add(frame) vbox.pack_start(align, False, False, 0) image = gtk.Image() # use the current directory for the file try: pixbuf = gtk.gdk.pixbuf_new_from_file(GTKLOGO_IMAGE) image.set_from_pixbuf(pixbuf) except gobject.GError, error: # This code shows off error handling. You can just use # gtk_image_new_from_file() instead if you don't want to report # errors to the user. If the file doesn't load when using # gtk_image_new_from_file(), a "missing image" icon will # be displayed instead. dialog = gtk.MessageDialog(self, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE, "Unable to open image file 'gtk-logo-rgb.gif': \n%s" % error) dialog.connect("response", lambda dlg, resp: dlg.destroy()) dialog.show() frame.add(image) # Animation label = gtk.Label() label.set_markup("Animation loaded from a file") vbox.pack_start(label, False, False, 0) frame = gtk.Frame() frame.set_shadow_type(gtk.SHADOW_IN) # The alignment keeps the frame from growing when users resize # the window align = gtk.Alignment(0.5, 0.5, 0, 0) align.add(frame) vbox.pack_start(align, False, False, 0) image = gtk.Image() image.set_from_file(BUDDY_IMAGE); frame.add(image) # Progressive label = gtk.Label() label.set_markup("Progressive image loading") vbox.pack_start(label, False, False, 0) frame = gtk.Frame() frame.set_shadow_type(gtk.SHADOW_IN) # The alignment keeps the frame from growing when users resize # the window align = gtk.Alignment(0.5, 0.5, 0, 0) align.add(frame) vbox.pack_start(align, False, False, 0) # Create an empty image for now; the progressive loader # will create the pixbuf and fill it in. image = gtk.Image() image.set_from_pixbuf(None) frame.add(image) self.start_progressive_loading(image) # Sensitivity control button = gtk.ToggleButton("_Insensitive"); vbox.pack_start(button, False, False, 0) button.connect("toggled", self.on_sensitivity_toggled, vbox) self.show_all() def cleanup_callback(self, win): if self.load_timeout != 0: gtk.timeout_remove(self.load_timeout) self.load_timeout = 0 if self.pixbuf_loader is not None: self.pixbuf_loader.close() self.pixbuf_loader = None if self.image_stream is not None: self.image_stream.close() self.image_stream = None def on_sensitivity_toggled(self, togglebutton, container): children = container.get_children() for child in children: # don't disable our toggle if type(child) != type(togglebutton): child.set_sensitive(not togglebutton.get_active()) def start_progressive_loading(self, image): ''' This is obviously totally contrived(we slow down loading on purpose to show how incremental loading works). The real purpose of incremental loading is the case where you are reading data from a slow source such as the network. The timeout simply simulates a slow data source by inserting pauses in the reading process. ''' self.load_timeout = gtk.timeout_add(150, self.progressive_timeout, image) def progressive_timeout(self, image): # This shows off fully-paranoid error handling, so looks scary. # You could factor out the error handling code into a nice separate # function to make things nicer. if self.image_stream is not None: # file is already opened try: buf = self.image_stream.read(256) bytes_read = len(buf) except IOError, error: dialog = gtk.MessageDialog(self, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE, "Failure reading image file 'alphatest.png': %s" % error) dialog.connect("response", lambda d, r: d.destroy()) self.image_stream.close() self.image_stream = None dialog.show() self.load_timeout = 0 return False; # uninstall the timeout if not self.pixbuf_loader.write(buf, bytes_read): dialog = gtk.MessageDialog(self, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE, "Failed to load image") dialog.connect("response", lambda d, r: d.destroy()) self.image_stream.close() self.image_stream = None dialog.show() self.load_timeout = 0 return False # uninstall the timeout #if(feof(image_stream)): if bytes_read == 0: self.image_stream.close() self.image_stream = None # Errors can happen on close, e.g. if the image # file was truncated we'll know on close that # it was incomplete. if not self.pixbuf_loader.close(): dialog = gtk.MessageDialog(self, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE, "Failed to load image") dialog.connect("response", lambda d, r: d.destroy()) dialog.show() self.pixbuf_loader = None self.load_timeout = 0 return False # uninstall the timeout # if feof(image_stream) self.pixbuf_loader = None else: # if(image_stream) ... try: self.image_stream = open(ALPHA_IMAGE, "rb") except IOError, error: error_message = "Unable to open image file 'alphatest.png' : %s" dialog = gtk.MessageDialog(self, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE, error_message % error) dialog.connect("response", lambda d, r: d.destroy()) dialog.show() self.load_timeout = 0 return False # uninstall the timeout if self.pixbuf_loader is not None: self.pixbuf_loader.close() self.pixbuf_loader = None self.pixbuf_loader = gtk.gdk.PixbufLoader() self.pixbuf_loader.connect("area_prepared", progressive_prepared_callback, image) self.pixbuf_loader.connect("area_updated", progressive_updated_callback, image) # leave timeout installed return True; def main(): ImagesDemo() gtk.main() if __name__ == '__main__': main() pygtk-2.24.0/examples/pygtk-demo/demos/infobar.py0000644000175000017500000000570511545325345016673 00000000000000#!/usr/bin/env python '''Info Bar is a widget that can be used to show messages to the user without showing a dialog. It is often temporarily shown at the top or bottom of a document. ''' # pygtk version: John Stowers import pygtk pygtk.require('2.0') import gtk class InfoBarDemo(gtk.Window): def __init__(self, parent=None): gtk.Window.__init__(self) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.set_title(self.__class__.__name__) self.set_border_width(8) vb = gtk.VBox() self.add(vb) bar = gtk.InfoBar() vb.pack_start(bar, False, False) bar.set_message_type(gtk.MESSAGE_INFO) bar.get_content_area().pack_start( gtk.Label("This is an info bar with message type GTK_MESSAGE_INFO"), False, False) bar = gtk.InfoBar() vb.pack_start(bar, False, False) bar.set_message_type(gtk.MESSAGE_WARNING) bar.get_content_area().pack_start( gtk.Label("This is an info bar with message type GTK_MESSAGE_WARNING"), False, False) bar = gtk.InfoBar() bar.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK) bar.connect("response", self._on_bar_response) vb.pack_start(bar, False, False) bar.set_message_type(gtk.MESSAGE_QUESTION) bar.get_content_area().pack_start( gtk.Label("This is an info bar with message type GTK_MESSAGE_QUESTION"), False, False) bar = gtk.InfoBar() vb.pack_start(bar, False, False) bar.set_message_type(gtk.MESSAGE_ERROR) bar.get_content_area().pack_start( gtk.Label("This is an info bar with message type GTK_MESSAGE_ERROR"), False, False) bar = gtk.InfoBar() vb.pack_start(bar, False, False) bar.set_message_type(gtk.MESSAGE_OTHER) bar.get_content_area().pack_start( gtk.Label("This is an info bar with message type GTK_MESSAGE_OTHER"), False, False) frame = gtk.Frame("Info bars") vb.pack_start(frame, False, False, 8) vb2 = gtk.VBox(spacing=8) vb2.set_border_width(8) frame.add(vb2) vb2.pack_start(gtk.Label("An example of different info bars"), False, False) self.show_all() def _on_bar_response(self, button, response_id): dialog = gtk.MessageDialog( self, gtk.DIALOG_MODAL|gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, "You clicked a button on an info bar") dialog.format_secondary_text("Your response has id %d" % response_id) dialog.run() dialog.destroy() def main(): InfoBarDemo() gtk.main() if __name__ == '__main__': main() pygtk-2.24.0/examples/pygtk-demo/demos/expander.py0000644000175000017500000000250311545325345017052 00000000000000#!/usr/bin/env python '''Expander GtkExpander allows to provide additional content that is initially hidden. This is also known as "disclosure triangle". ''' # pygtk version: Maik Hertha import pygtk pygtk.require('2.0') import gtk class ExpanderDemo(gtk.Dialog): def __init__(self, parent=None): gtk.Dialog.__init__(self, self.__class__.__name__, parent, 0, (gtk.STOCK_CLOSE, gtk.RESPONSE_NONE)) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.connect("response", lambda d, r: d.destroy()) self.set_resizable(False) vbox = gtk.VBox(False, 5) self.vbox.pack_start(vbox, True, True, 0) vbox.set_border_width(5) label = gtk.Label() label.set_markup("Expander demo. Click on the triangle for details.") vbox.pack_start(label, False, False, 0) # Create the expander expander = gtk.Expander("Details") vbox.pack_start(expander, False, False, 0) # The Label for the expander label = gtk.Label("Details can be shown or hidden.") expander.add(label) self.show_all() def main(): ExpanderDemo() gtk.main() if __name__ == '__main__': main() pygtk-2.24.0/examples/pygtk-demo/demos/ui_manager.py0000644000175000017500000001477311545325345017367 00000000000000#!/usr/bin/env python '''UI Manager The GtkUIManager object allows the easy creation of menus from an array of actions and a description of the menu hierarchy. ''' # pygtk version: Maik Hertha import pygtk pygtk.require('2.0') import gobject import gtk def activate_action(action): print 'Action "%s" activated' % action.get_name() def activate_radio_action(action, current): print 'Radio action "%s" selected'% current.get_name() entries = ( ( "FileMenu", None, "_File" ), # name, stock id, label ( "PreferencesMenu", None, "_Preferences" ), # name, stock id, label ( "ColorMenu", None, "_Color" ), # name, stock id, label ( "ShapeMenu", None, "_Shape" ), # name, stock id, label ( "HelpMenu", None, "_Help" ), # name, stock id, label ( "New", gtk.STOCK_NEW, # name, stock id "_New", "N", # label, accelerator "Create a new file", # tooltip activate_action ), ( "Open", gtk.STOCK_OPEN, # name, stock id "_Open","O", # label, accelerator "Open a file", # tooltip activate_action ), ( "Save", gtk.STOCK_SAVE, # name, stock id "_Save","S", # label, accelerator "Save current file", # tooltip activate_action ), ( "SaveAs", gtk.STOCK_SAVE, # name, stock id "Save _As...", None, # label, accelerator "Save to a file", # tooltip activate_action ), ( "Quit", gtk.STOCK_QUIT, # name, stock id "_Quit", "Q", # label, accelerator "Quit", # tooltip activate_action ), ( "About", None, # name, stock id "_About", "A", # label, accelerator "About", # tooltip activate_action ), ( "Logo", "demo-gtk-logo", # name, stock id None, None, # label, accelerator "GTK+", # tooltip activate_action ), ) toggle_entries = ( ( "Bold", gtk.STOCK_BOLD, # name, stock id "_Bold", "B", # label, accelerator "Bold", # tooltip activate_action, True ), # is_active ) ( COLOR_RED, COLOR_GREEN, COLOR_BLUE ) = range(3) color_entries = ( ( "Red", None, # name, stock id "_Red", "R", # label, accelerator "Blood", COLOR_RED ), # tooltip, value ( "Green", None, # name, stock id "_Green", "G", # label, accelerator "Grass", COLOR_GREEN ), # tooltip, value ( "Blue", None, # name, stock id "_Blue", "B", # label, accelerator "Sky", COLOR_BLUE ), # tooltip, value ) ( SHAPE_SQUARE, SHAPE_RECTANGLE, SHAPE_OVAL, ) = range(3) # GtkRadioActionEntry shape_entries = ( ( "Square", None, # name, stock id "_Square", "S", # label, accelerator "Square", SHAPE_SQUARE ), # tooltip, value ( "Rectangle", None, # name, stock id "_Rectangle", "R", # label, accelerator "Rectangle", SHAPE_RECTANGLE ), # tooltip, value ( "Oval", None, # name, stock id "_Oval", "O", # label, accelerator "Egg", SHAPE_OVAL ), # tooltip, value ) ui_info = \ ''' ''' class UIManagerDemo(gtk.Window): def __init__(self, parent=None): gtk.Window.__init__(self) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.set_title(self.__class__.__name__) self.set_border_width(0) actions = gtk.ActionGroup("Actions") actions.add_actions(entries) actions.add_toggle_actions(toggle_entries) actions.add_radio_actions(color_entries, COLOR_RED, activate_radio_action) actions.add_radio_actions(shape_entries, SHAPE_OVAL, activate_radio_action) ui = gtk.UIManager() ui.insert_action_group(actions, 0) self.add_accel_group(ui.get_accel_group()) try: mergeid = ui.add_ui_from_string(ui_info) except gobject.GError, msg: print "building menus failed: %s" % msg box1 = gtk.VBox(False, 0) self.add(box1) box1.pack_start(ui.get_widget("/MenuBar"), False, False, 0) label = gtk.Label("Type\n\nto start") label.set_size_request(200, 200) label.set_alignment(0.5, 0.5) box1.pack_start(label, True, True, 0) separator = gtk.HSeparator() box1.pack_start(separator, False, True, 0) box2 = gtk.VBox(False, 10) box2.set_border_width(10) box1.pack_start(box2, False, True, 0) button = gtk.Button("close") button.connect("clicked", lambda b, w=self: w.destroy()) box2.pack_start(button, True, True, 0) button.set_flags(gtk.CAN_DEFAULT) button.grab_default() self.show_all() def main(): UIManagerDemo() gtk.main() if __name__ == '__main__': main() pygtk-2.24.0/examples/pygtk-demo/demos/hypertext.py0000644000175000017500000001543511545325345017310 00000000000000#!/usr/bin/env python '''Text Widget/Hypertext Usually, tags modify the appearance of text in the view, e.g. making it bold or colored or underlined. But tags are not restricted to appearance. They can also affect the behavior of mouse and key presses, as this demo shows.''' # pygtk version: Maik Hertha import pygtk pygtk.require('2.0') import gtk import pango class HypertextDemo(gtk.Window): hovering_over_link = False hand_cursor = gtk.gdk.Cursor(gtk.gdk.HAND2) regular_cursor = gtk.gdk.Cursor(gtk.gdk.XTERM) def __init__(self, parent=None): gtk.Window.__init__(self) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.set_title(self.__class__.__name__) self.set_default_size(450, 450) self.set_border_width(0) view = gtk.TextView() view.set_wrap_mode(gtk.WRAP_WORD) view.connect("key-press-event", self.key_press_event) view.connect("event-after", self.event_after) view.connect("motion-notify-event", self.motion_notify_event) view.connect("visibility-notify-event", self.visibility_notify_event) buffer = view.get_buffer() sw = gtk.ScrolledWindow() sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.add(sw) sw.add(view) self.show_page(buffer, 1) self.show_all() # Links can be activated by pressing Enter. def key_press_event(self, text_view, event): if (event.keyval == gtk.keysyms.Return or event.keyval == gtk.keysyms.KP_Enter): buffer = text_view.get_buffer() iter = buffer.get_iter_at_mark(buffer.get_insert()) self.follow_if_link(text_view, iter) return False # Links can also be activated by clicking. def event_after(self, text_view, event): if event.type != gtk.gdk.BUTTON_RELEASE: return False if event.button != 1: return False buffer = text_view.get_buffer() # we shouldn't follow a link if the user has selected something try: start, end = buffer.get_selection_bounds() except ValueError: # If there is nothing selected, None is return pass else: if start.get_offset() != end.get_offset(): return False x, y = text_view.window_to_buffer_coords(gtk.TEXT_WINDOW_WIDGET, int(event.x), int(event.y)) iter = text_view.get_iter_at_location(x, y) self.follow_if_link(text_view, iter) return False # Looks at all tags covering the position (x, y) in the text view, # and if one of them is a link, change the cursor to the "hands" cursor # typically used by web browsers. def set_cursor_if_appropriate(self, text_view, x, y): hovering = False buffer = text_view.get_buffer() iter = text_view.get_iter_at_location(x, y) tags = iter.get_tags() for tag in tags: page = tag.get_data("page") if page != 0: hovering = True break if hovering != self.hovering_over_link: self.hovering_over_link = hovering if self.hovering_over_link: text_view.get_window(gtk.TEXT_WINDOW_TEXT).set_cursor(self.hand_cursor) else: text_view.get_window(gtk.TEXT_WINDOW_TEXT).set_cursor(self.regular_cursor) # Update the cursor image if the pointer moved. def motion_notify_event(self, text_view, event): x, y = text_view.window_to_buffer_coords(gtk.TEXT_WINDOW_WIDGET, int(event.x), int(event.y)) self.set_cursor_if_appropriate(text_view, x, y) text_view.window.get_pointer() return False # Also update the cursor image if the window becomes visible # (e.g. when a window covering it got iconified). def visibility_notify_event(self, text_view, event): wx, wy, mod = text_view.window.get_pointer() bx, by = text_view.window_to_buffer_coords(gtk.TEXT_WINDOW_WIDGET, wx, wy) self.set_cursor_if_appropriate (text_view, bx, by) return False def insert_link(self, buffer, iter, text, page): ''' Inserts a piece of text into the buffer, giving it the usual appearance of a hyperlink in a web browser: blue and underlined. Additionally, attaches some data on the tag, to make it recognizable as a link. ''' tag = buffer.create_tag(None, foreground="blue", underline=pango.UNDERLINE_SINGLE) tag.set_data("page", page) buffer.insert_with_tags(iter, text, tag) def show_page(self, buffer, page): ''' Fills the buffer with text and interspersed links. In any real hypertext app, this method would parse a file to identify the links. ''' buffer.set_text("", 0) iter = buffer.get_iter_at_offset(0) if page == 1: buffer.insert(iter, "Some text to show that simple ") self.insert_link(buffer, iter, "hypertext", 3) buffer.insert(iter, " can easily be realized with ") self.insert_link(buffer, iter, "tags", 2) buffer.insert(iter, ".") elif page == 2: buffer.insert(iter, "A tag is an attribute that can be applied to some range of text. " "For example, a tag might be called \"bold\" and make the text inside " "the tag bold. However, the tag concept is more general than that " "tags don't have to affect appearance. They can instead affect the " "behavior of mouse and key presses, \"lock\" a range of text so the " "user can't edit it, or countless other things.\n", -1) self.insert_link(buffer, iter, "Go back", 1) elif page == 3: tag = buffer.create_tag(None, weight=pango.WEIGHT_BOLD) buffer.insert_with_tags(iter, "hypertext:\n", tag) buffer.insert(iter, "machine-readable text that is not sequential but is organized " "so that related items of information are connected.\n") self.insert_link(buffer, iter, "Go back", 1) def follow_if_link(self, text_view, iter): ''' Looks at all tags covering the position of iter in the text view, and if one of them is a link, follow it by showing the page identified by the data attached to it. ''' tags = iter.get_tags() for tag in tags: page = tag.get_data("page") if page != 0: self.show_page(text_view.get_buffer(), page) break def main(): HypertextDemo() gtk.main() if __name__ == '__main__': main() pygtk-2.24.0/examples/pygtk-demo/demos/images/0000755000175000017500000000000011545327522016216 500000000000000pygtk-2.24.0/examples/pygtk-demo/demos/images/alphatest.png0000644000175000017500000006364111545325345020644 00000000000000‰PNG  IHDR|B‡}>gAMA±Ž|ûQ“ cHRMo?r‡ô$„Ïm_èj<‹W§–mªg,IDATxœbüÿÿ?Ã(£`Œ‚áˆi 0 FÁ(£€> €F üQ0 FÁ(! €F üQ0 FÁ(! €F üQ0 FÁ(! €F üQ0 FÁ(! €F üQ0 FÁ(! €F üQ0 9]:= ¨h´À£`ƒÿþ3Œ–÷£€Z €G[£`Œ‚Q02@¶ðGÁ(£`„€-ðGÁ(£`„€-ðGÁ(£`„€-ðGÁ(£`„€-ðGÁ(£`„€-ðGÁ(£`„€-ðGÁ(£`„€-ðGÁ(£`„€-ðGÁ(£`„€-ðGÁ(£`„€-ðGÁ(£`„€-ðGÁ(£`„€-ðGÁ(£`„€-ðGÁ(£`„€-ðGÁ(£`„€-ðGÁ(£`„€-ðGÁ(£`„€-ðGÁ(£`„€-ðGÁ(£`„€-ðGÁ(£`„€-ðGÁ(äàÿ£€R@,í€Q0 F~ÀÈ8Ð.ÃÐh Œ‚Q0 F ÑŒ‚Q0 F ÑŒ‚Q0 F ÑŒ‚Q0 F ÑŒ‚Q0 F ÑŒ‚Q0 F ÑŒ‚Q0 F ÑŒ‚Q0 F ÑŒ‚Q0 F ÑŒ‚Q0 F ÑŒ‚Q0 F ÑŒ‚Q0 F ÑŒ‚Q0 F ÑŒ‚Q0 F ÑŒ‚Q0 F ÑŒ‚Q0 F ÑŒ‚Q0 F ÑŒ‚Q0 F ÑŒ‚Q0 F ÑŒ‚Q0 F ÑŒ‚Q0 F ÑŒ‚Q0 F ÑŒ‚Q0 F ÑŒ‚Q0 F ÑŒ‚Q0 F ÑŒ‚Q0 F ÑŒ‚Q0 F ÑŒ‚Q0 F –vÀ(C D–,óRî ŒŒÚ@Z›È``dø"€èµŠñÿö¥áŸÚ­£` €büÿÿ?Ý,SLWRÜdhæ$†—7×Ï|4C—Hõÿ¡4Àì UÁˆPvÈãfdd”€Ã3 Ìgm0ø$‡ÄúriUÿR=7 †ˆ(YªŒä^`ÜëÓ8õ ¥FXrøÏð¨¦pIgØñtò(( €èÝÂObm(›Fèò5@ü ˆ›qèE7B+:`ÆeD(·ÒÊ œNˆÂÿ°< $ÿƒuþG©"þ³=X!ÔÜ‹@\ŒÃ?£`àÂ|kûˆn û Õ©èÿÿc€$Fpúÿšª@Í'FF¦ÿ ”Á \S¾ºxIgè*ZùcŒR@Ñ{ ÿƒ È¿Hührÿ‘Ø ú°ujÆ45ÿ°°ÿca£©cüÇ¢ÿ1#ÿ¹‡áúÚi—€UÁQ4}E;D-”T2¨¬ï?È,H΃Îç–Í‹‰U^²$˜&ºþÃÓ,#,Îÿƒ ÿÿÐt¢a|Hÿ”þwÇT¬¶¤™gFÁ( ½ |X!ú—³0F.ÑÅW"™­’øË€¨@þ¢‰c˜)œ‘äÿƒ!L¨±6 ˜aAîFF¨JË™{ÁýIÝe`ëþ*’¸zØÌý .œ½opÆfØÿˆŒ ×ÖN{ äìe\ˆÜ0þVy02BZxŒˆÞh ƒ ‚y¼ÿÿ/Æš:$-À8ÎÆ*¤‚÷òþ‚ óÿÐtñÿ?¬¢‡÷ S<aâÀô![±&„†^£€(@9¤ƒk(½u¿‡¸0º9è½ °¨u)¨ÿ#*F”{h¸†nhR9@+Ѐí_¤–Ü?D•1 ,˜§ŒË5ŒÿÕái…0øÏNà!#\´âø?:¤3APþ\u`¡<A’ÿ¡®ÿ!…5^V²D¨ˆi¸¬&jã024ë‰M ˆþÈj-ðуà]ÛÈö'ˆ`³€½U`a¿”&ž£€D@]à£Ý¶î“`¶ñzlC<ÈG9@ÖIÿG¬¡ÿè’ã,ò¯®™ü˜Ñýg@ÚxkEÂímáðÏ¥¤ú¥9'$W`‡VþÃçZ Ã9¤l’[ÙóˆA‡öõñ§ÿð4ňÎúŒˆ¹H¥3sIghõ}< Fy €rH Ê,[I0¹ Ç×êÇŠaÝpX‹÷X·‡|¦Î?Fä%x£ëðéürgºã­ð\³¾ÁKeaC-ÿa󌈉Wp¯ŒˆI[t°¢'z%P_ Ù4í&Ê!|Hïš dø-í ›E]ߎ‚Q@ Üx…¾Qê$°uÿ–H3`z`‹ßð-Ë„±ajÿ1ÀöÝ@EÀ‹+1ÍÀW€­|мu@ft=>ÔÈ’m"Övê`aï ÷è[”tõzÞ5#R,CS‚ϸdüÏ@z+º£¿0@óèYºÂÉÞ[K»Â¿Pâ§Q0 h h ×á#ï¬ÝN¤È•˜¶XvÛB®}vÿ¾íòQK³A‡ª10ºi.ÈJè=G-–£-|:ßÜnÀh+aüÏôé $p¼CwÃ"n¸ÊýGì‹Å¶—,°¼;âÖùØŠ Øú{ø>ãºWVOþ¤v3ÀV|ÀVû€ON´¥ðË™á ,³‹ áý>.[=Æ6Ì™¬…·#–7 FÁ4PC:È-{ØI‚°3t`×p¶Ö?Rw|”ÎâZõ¨¨ctC[’›±H˜4Ž,ÇnÔ'Ô,ÇZ7ÎÈxýÌÒŽNdufÑ•@ñJh?âMƒèë'7¿!Ùñ$ÇäQ ]ÚÀ°RÒ¢@·,Ø7»ìµsj7踂l Ÿ±ÿ˜Ñ¥·¯!ÃíL1Àä`ƒ+`ÅL Þ¾mÓr‰Ú˜ä—3Ýhn!dîbÚØá5Ðq›ÿÿNŸiOð!¾Âù=§Á¯,ƒ9õîªÞ8ÐÆ-Ðå'@¸ÿ‡;æˆ>Ⱦ]ÁÈÀ¹‹ÙŸŒ°ÅóÅ¡X{±ñ•ëò€f©¡t<À &¤]¼hA9Ͷ]âÆ­³š<· ›^¿Ã(éÃøîèŒpßÞê½ 93µÎù1q@MPÚy ˜ù€NÑrynX÷¹«Ì¤ Y]eÏy üÿjDÈ"4ªá#v8ò4²`sK‘.ú¡Œ#Ð@ éÀ |X|†„Ö=º0€­gÀ"×Òð€ù‰Ø«.¯žôM74T@ùÀLjÿÃÅ Œ"K€£ PµÐnX9 ™Wd„´LÑ#t Š<&¡$Ôy×d¡ElíY v_ÔŒíÌ!Š€Cr;èþVO ­¦pW02,ö ù½³K¿ ýU@75Å‘ï)f‚¬A‡•ê°«$¡ÁÄ[eOð)ÓŒ—‰q“oÎtg ž|FÈYóHe#Rf‡l¸øÿQügD¤ˆ3tUB!R<â@ÁX¸]ÐÝ0w .Äd€Z+ü¡i tý%®aKÐ*#}H‹Q®ƒúLÐzUŽî?HÉsöYL£%Ž5Bò##ríL– ›!@Fd7í» T±XðoÆáNª€’Ž xt2]A X”0Âv ]м ´ˆrꂃ³ØK|ä2‚J^r €z v“hlý4¾–<2@WÎ댈$= Ö$0þªæÔ‰Ô.Ã9L`Yâ ´Â ˜¤¹¡Nø‡p”…µ‡®þ1@/Jeüu,¤ÝldYÆÕ*\v|QÓ7â=€ {Pç ½¿z0ÃþÙ(«¨€…þ—Ôž ³Žtù;lòô?tfÑþEtªÀœÿïÂd+Z`aT›‡4ÿ‚<@ÿ:mÎs2Ø*Dó! Hص 7@F8ÿ#ÍAlù+µ!U2ãx óÙ!ÿU ¬Ô†ž¬óÿ±< ÿÐÂRŽCV¡TbP ð^ ¬ÀþÏ€-ýþ‡êSoB€3tñ¼ÂP²ë€*P¤qJ­– „вÃ6`è퟼Æç…RBFB6Ÿ½Vy;lÊ?¡ ~CªµÎ4Yõ9v² ˆ*J1Q.QðŽ!Âçɦ˜;v2XXðŽàŸ²AÑ¥gNô+Y” éº:”©,Cü [JÔ[ýu/ôÿã~~q÷ß! –¡QRP2áI§˜jƒvo·MgÒD9 N'•yg¯dˆI0-z7ù’lBò,˜z|!}i¦˜8i©¹|¿Ò ['D!s§öfÿ}n{ÐúS´A×ÀÜ7­¯q0‘R-æl ‚Þi°ý!=Ç™¦z"uŠb‰ e52,FËséE݃ŸÉêÚp?;÷­bv+”ˆ ‡úÇ$|oÿç'6é<ȳšñׄÿ€¼+Öi †¡và/˜ØYA0ÁwTêÐ ‰ é$`de@]øª*Hü ;+ƉßKr¢J DjÓëÇιî³ïî/ªtXe³þ¶«³î{öÖŸ¡X;(;èo»æ>ñÙéN4Uì4²ùмpÎ;‰Z©‰(Í€m[#Ò†3–/m’”bç¤ÈwSD|<n^Ÿ†­0ýÓÙí¡³8B•-E¶µÁãÓDìÜþÞjqµèù,/_Îæ÷ió‚ [ÜXkBŽ\‰K\!;nîìSDøæ.a€z¨¿}ï¦Â«&qG\ެÂö&ô•¼@£×"p³uœõ{•D…ÿ&Æb„þs‘F­êšð¹XfËd?8%ÁùĪ|/¥‰Ö.Ë€Öá…gßFÆù¢"nÿãÿS Ô¤í`ëþ™fÀ2,c êÈ?’Šü.øz°$'„K«'~× +¶nÜa‰J?¼(HI2€/º†ÙËI¬ð‹W`Ù© „tÕ±¹üür FD9«$ ³‡ˆ5i@QPWýxìà?c8dÈà?R ^fˆâˆé`VΩ]ÿ÷Î.›‹n°Ð?ìš:r†!l êü8´û÷Ù¸'PÀÖ©Ù BcéœoÎôÿÿ!—’À¦4aSxÐÉ\ئgFjdf6‘ ZÓŸp…`Ø@ ‘¿HóÏŒ°yZ&Øô0¢ü„ÿ¶Tk ŒøŽÎfÏ»þƒE-ÌœÿðZ“á|Á't‰"õÃÖ-eÂRPÂ4QM;p{aY"‚ÔÓñ` ²Àöª@ÍSÀG‰ÃRP«ÿCBÚ)ÿᣨЋi`é Ã-/ 3™“äðÅYÿáXÉ÷>*Iz‹n˜€ä=Â0 …#p$F3,Hœ‰V&ÄÈ à(,&ÄX=Ò$Ïq˯`` [DÚÚ yŸ‹ý †_.äó—sXI[O±lûdžâó±?½›]Ê“e{4oú~_[G܈ •¤.¡§ðÝ”©)Ûæ“.%°Ë%‰hCålD=áþÓ‚ôƫ֫ ÷§ûŽ_m ©òÏ(³uä ¡Âdd~ÓN7“{sî·‹“¿Q…3¨->sÚ ám¥7S³  XVñQ‰+ÂÆ`²˜‚XÊŽ}SÚóWD´èI!±P"1I®` ãhîžlžÝ#¬]éÙOùì„F¶…A…ÂXÂÍåà,ǘL\Šœ Û@‘0UèÏÖ‡n}îm‰ðŸ’4Ÿ#ò²±‰ßÁÄ´„~BVmIdô³~Ô.6`n?ƒdûýþe» @Þµã ÃÐø,ììÌlÜ$vĘXX¹G`D¹ ,åÑøƒRQÁÀ@†ªªÒ4uêgËÏÃ?wÞýíË1¢‚ÅÅ­Åñï=פ-!*ÕGírØ]»ÛO̽QÊÛ.XN}ˆ1*éç D¾›=¿ ´L„dïjÀP²+ÚÏÉcÍHs¬Cç•ðø°¹ ¢´H“ér;¯ {ܯ› úéUñr5(Vtv$[ÄÁÂ&‹ý;ÉäŸË<¥2•Æ%„÷ðøu¬M;¤YÅ*1|ɲ|Ð ž]"I³žÉSžø„¾f}Ú´Ð5Pp–²¯‹’µ0þ§nTdNåÛóõPAþ:w‡®G"3ÞIjµiÜ¿K*»ÉNx°ËÛH o"—¡ê=à£TXŸgHÑö:| ö¹= ïÚq†ah½3p`ggç\€…ÛpŽǪ&yþ´i+$$†ªjIâ†Ç³ýjÿðßIÎo{{6l}t4¥Óçþ•1ÛI»/æõÐàZÏ[/Û)-,±ÊF}~mÒ5êä K)8Á“ 1«9P@{eù›ÅYKw¨$I0…«E @"+T¸]‹÷q<]o—©¯VÐê=÷dzeÝìCL¾p67ÝúTã™IJÊŽŸ2ðôxgbÓŸŒÇ Gß…ŒÓâí}ì!3…É5£t‡Ëg—ÆónköÇo¶òÄ0¢ÆõLÅ}oRÄ™1,qŒšµJë'Ùá^¥mh')!¦ $"»%;)دôš³íû¢,sé$™9(N€•5¡üÔ¤ÑÃ.bC uYýemª×bë‘ìµ´`oxð× ÿ%ygo„0 Ca«#° 4lÀ =;P2 ‹0+q+zO „ðwGƒ«¾sâXÒ'ùÅùµÃ?}I÷µ EîüR‡#½âÈÜŽ!Ü*åK^|A¡žUÃðY6ñ°$êêÕ£[ñÙœI¡B‡úi¦¸ö ñ/Õ$ÃÓÙ£{ž®¶Íµ÷(½Ñ¥B¦h*&á¹ïi·Ó´NæëݲoŒã~SþáÆ˜©Ò7 _Q&` ýv.o•à]ª…S}‘ðÚkfãåHSùC-@º£÷ï;J*W0 ŒCÅ6p%A2¥—ö„–ðp¥-öï@Cú…:J­Õ +yÞøž|³Ú®ÇO&jqíÚ@•’^ѼV|Mž;}/J•ÕÝs`2JêlO‹Ð¦Aý´ƒà2ðým»@ÞÛ ÄÀ÷tôÔHÔ,À”´´0=s°ƒ°9üg;É' „hˆ„D}'¾;_,ýO¿ûÛ–)xü_ÿ„J­)`Émÿç¿ØìgõZ“¸QöS}ÀÒ=IŒSèí;xæðõ‹*!1½k@'-žüIŒ`õ|(æú¤Fýç´hÄíŠ2N,®& ¸3X-W»ã¶tËép­;'}ððe ÀǘÅ'Ð<–)•[T´Ó¨–ƒöæž¶9°À»Ð]€ã¬jûaöÉÐU EÇ2ÌĬ4hWÓU²Bí-.$sϬŸ3„9!±Ù}å±Óéx¢°'—vžÔâ¡@¹;iƒãÄìÈ´£(O4Ñ ãJ$Zðþ{{eK+G­ÿy< ïìq†a(loˆ‰ƒ +ç`cæ œ ‰[!Sšçç±Ð©?Rš¤ýúÅN­ð¿±Ý{ìÞqvê?”r Ø߃¥€Ý‚_ÐQ Z»¢ã¨ÜBÕ™f«m"¸œu6±x-°™{¾Éz{˜gÊÁJ’FUéL<~qŠ"dáþ%…û)öm±ÙåFPúg¹-:§dÄ>°ßfø2F´¸¡oy¹'T;U°osEn@_/|e?ش٠m<>2¸Ëù1V$Pܳû)T°iÝ¥]…vÓ± Ëc»›¬Û¤ôâ ÛqŽFw êÎ2Ëæ$ø¬Wýýñ´Êšh9¿{4$Î)þ:¦pøVµYÓ|„ØÄ3õ1ëý¢u—þ—þßnWÈ»–#bª±Ç«kñj%žíÁ lÀ®wù<Ø,fFoŽ÷ Ùax< üªÁ¯}Fû½7_­ï¦^Èïþ„î熧 'Ú‚04›<„Öä†_Ò?û®’Ã*‰ÈpC8,èZ«´K‘МÈ-ùW«)|F½ÈeB%wf EV³•„m!AØÕ¹3Q¦í4zhKþÛþv<àæÚ†ah4+0ð @ËT4,A†i¨©Œ°#½çÏù’K i’Üq‰PdéYzÒ/:ürõœ|X¸&Rz¡3^É/DÚ‰µäƒ‡íò™A*ézÒ X¬Z¤hºÆh(N”Ꜻp¾9ªÁ'™6=©ÇÛùñRèÆXaÀ& dær“õ‘Ñ£*—¥ûCtúûÞ{×Ó=žž¾}2ëÃ;„„ {Bì¡`2ùèŒâúUäÄWR I{m)€¦ëlG¹¨®K¨R‰¬ù\Á¨EÀ7luî†lw­Â̱*ä Ð@ÚÎûQ&ý”éBÒ‰uÔ•ÿxS1wëÀæC[2î=kTêºáÿDTSapÆZi>Á”þÉY¤dÅÒ§Ø]{#oõ]šû™ÀõÿÇWòÎåa¢Þ&.F”CtD=Ž[ZI&8a¸1á”É!1!Ò>},þÑáïQüž ÄKà½ðN?. §u{iDF›+A’ö;=¯’lË£{Á4þ­«_Còœš^ P1Sƒkdxž/½<Ã9†÷¡³LÏ.ºIª0=eyyŒ«Ÿ»Nþýö¢¤¿¹)éý£[3« ÔÉÀk ¶¡'½PÌY„óâ_¾‚eˆm#|P\‹ Ò¢£~ÞÓÂôÆVDáƒð‡™¢P0ÏÎáiIð½pýñ+:£Cþž,äZ{/4T£sæ1áavýÅ)fó” PÑIï@ªap#¢Ù–R0ÇN>Œä*E1‰Ó]#Üe :<å¿ ç n†a`úbÄL€XŒÂ“ ˜ø0Jîì‹ä´ðDäW©u¢&9Ÿ/v~ð?‘sæÒ2ï*‰H}¯á¯6‡‘=/ ˜%íɦ"ÛÃ3ÓÔ¨ÛGêf BuD¼ÙóÍLk;. s‡ãŒÔ|'ج ·ÈÃ×È0ÀÎÃpóB"l`èÇZ+)xe»ÞÓ¢Ëi~}ví±ÇÞˆÁz)Ù@2«,Ø”œ02qÇ;0kg¾;ƒ—Z ¯õfÞG3'SQŒ¹ìTLþ{e®&vIøþвõLäEcˆr8^”›a?²GÏ6zX„‹T¾&ÎBI¯SÌg=›’Ë“‰0Ø B‡¹0%&­L›É9 öc{ @Þ!AÒ„ ²Ÿö`–`þ­Ã¿U@ÄÜîÞ†¯#3¼“;2,›»½ã¿fî½N òëÓ‹W:úvsâËR·Hbldi‹H¤ÞáVµÑ4ê{(Ž •@Xa¢\ùjÅYd}jGÛ<ž÷ë{ü ’¼%=> eMògë•“Åþ ©«m×]E29Ÿ.·ckþGýaׯìaX±NfÅ©Ûf)9àríS]ß1Ÿ+ZA¤©ÁØ,tôÎí ÈGˆ&# k‰ÿ(ÅL f©v˜l…ß+Ÿ²ûLÛ)·Ä\ÓPG‚Ûùa 6ç=Q•Tð‰ådᎋÅp‹õ $¬·6LŒòÛvy¨WP>¨~ïë¹ÿô?w7Ã0ÐoÆaø° /FéF¬À™VöÙ—6*UˆN’È2û¡@gá*NNLw¹ _蔇í•Áå¢ÂH½9TAëÿKeŸxa4%ša}÷ߘrH™)”$ID"àØ½ŒŸZD_Î×û¡7ýð¸=7¯·u²ÐcвIü>T¢ÄE"Å÷á+G’,õ²˜7ºI³GÌ+{à÷$¼o"Á×;åÁýûÚ?ŒÓ›Ã"1‚ÿÏ §\1¿ž^)S›ô$Ã>N•Ô´ÀG^b—¨© F+ÖÕ7¦]!kÎ6(Y2.1¹¹>ÿoÇGr®ea†5$øH>áÃRÛé*í†Øi¦e[b×vµáûð;znW4®CN´@JyêE¨oô¥»Ä+ Ÿ-2&Mi™lÙÇ£ MOW§:}[¢Ó{ âóQQþÑô±OLÀ0N ”ÚDXB %h<š¾™žK4áúz¯Mÿz¦Î,Fˆ¶ÙVë.‹"—!Lƒ A¢Õ>+ûë…JüÊîª@ÊY—é–&8tynoùå@ $l >‰½Á«îb5d8´>®þÚ}ÔŠà‘'2N@ÂuO²Íÿ’#¸q‰Ë9بù˜jõ’µUÃS6ÐS)ÅñÝ:ÂOíF§@Ú¼âÖ y¼ ï r†aXóÄ ù&_àE#LIì¸LÀ ÑË4­šÖ¬MœÌî~Õá#²käÞû¦Ïî܉< úb"ø Ï,¤ÚH™‰Ò õ˜)Êž„OS«Mc´eaYCéŠDktL‡muú·õp »à[D—):‡*7¯'ûƒB'ª%ióBEõ<¯íò¹Åƒµ^Eƒ%€ g)ïØ„jJ;€9òֻ¢Fd; EƒhŸ}’4zTÒÉù%1+f ÕCÊESwîG„o,»;gFL=/é’±Õ<ñW/ìÕc]&Þۧ|j¢Zµ­´^Eé( ΢¶Ùm^àëÅ[¯`Sê€3­ûÈ„þ¶= a •hÙ‚(銊è驨žމXÁéÿm‘ Gƒ‹pbÉÒËgËFúu<üoAzsÞëÓRý-Õ•ô;<šøÃŠZy¿ê~QÒ‰€ˆÈÆ™&\-m´qIÜ‘R Õxm¾×AÁýúhèÒúe­‡µ÷Æ 8rN›ò¶œ÷ëÓt±=žŸ…w]-}—œ» ¼&ê€|½“ œ§¨}<[nçÇÝêðW½Ñä¨7 fu×WÃRWØÛÅ– ®Ô.[}(R³iS|šê´ðÄ<µD]È=óІ\}àØ©B.U®ˆø ªGšpRùÐPÛ$åqøHãHÞ`íÉè¢\„¸áÁ:‹4T7¥°G©Ú` Î_ڷפ‰4)‹øù±:i„Ù")ñŽ"Jíþí ÿ.yW„0 ¡¯ð¾Ò—ø/Þ¼øÇˆµ, trÐzrì¥3M É0Ý_üÑG[C  ÚtÕN¨‚û|Q‡;ŒX´`8ÁJ„/"û4Å™¯¸ËÂI3(´ëz<ÜçÛe£^[&rÒ×STvz g#̱ÑŒ½Ì"ºÀ¬ÄÛ¥'Æðø¶ŸAÿ6ƒþùsýxÌ$ÐÆwé¤ý Ê.!Xœ¦ÐÉ’Ýé yÊ2F ÏTW §h E}¸"VI=ª?ª@wŸh„×Ô3Ù½hâìÛ­›Ì³gE©§?3 ÞÆ÷q¬²à¤¼±½–>Ê*®z(±¶®£ò6¥FÁ¥4â•.*+«& !ŠÁÎÿ"Ñ£áª1þ9à @ÞÜ ±d3ž¬Â ŒÁŸ“°âgªÔ¾øªDÀ ¡FªTõÑ&×´ÊÙ>ç_!”®Ž¤à©Qq¨±ôÕþ °{ËF,¹`‹_ ‹Oö¹L©¿ð¸_ÏÏ¥·¥_”n;tfU™Õ  Æ!ô¸KFJ¹Ž§Ë§›jl›”Cî¸H·2íw&¢¦~yÛøJŸ!ø.‡W¯îÌJ—F¤¶JØ9éYLùcs¤WôrfjÓ—6gÐÇ ¬ºöL¥X´â4͹Z´)äcœ”‡¤«Ä»Cn9ê¼`”Ä@ÜEòxbÝDxÑs át Ûht†š¾gZZFÄ蟀õ™Ó8í¢½àîJŽ„a Ô]RJÚI )„.ÒI&PI»"#fÂ#üa†>°W°ÚµÏø\lû²Ìf æ‹ÁyÒÃežÔï|>øòºQUYd"UÃ]8|ØÄ¡—a}ÑÇ</ªÉ©·f«Šˆp?*ûÍþ'¯º‚Üåz»ï›Âú²áÔÃxÅà£È)ï¥7Àü¶Ž>k+ç²y‚V(àýrrªKû¹z¦ßÉ’=2ǃ1Ÿ“u½jññ Tn›:Šá¬´såÏó€R'€p*—Tê/KæYT´×ÿÂŒíg½BÎß”Û"xÿ Mn—*ÞÝ$ÕT‚O°Ûø p=”»9kù@ÞÜ Ã@ûÇl,ÀlÀ¼ƒ?ë ±J ñ/QKûÑG[©UmµîÙNìË/þ\5ÎXvUä|¼—Àƒ†àüƒ+[±‡>r\@Ý] $úR¦Å/ñc»]N÷×áj ÐQÚEºp`¼fYAú'˜üèj…Óa<ï6+ÖÆ®»oë©c±±Æ­âÙÔ U½çæ¿î„, K( &h•:#ÀÈ(wU–%"â>³*ÆrÛKÚy˜†è°lIõ!«µ÷–Åi·ÈØ–’ŽÉ¸ßò\ô‡Ýó_s4£…LNåx‘ìÉÀάÎh[&¨3þû:üIò®ía* °0›ðÁü³[ðϬÀ ­ µï|•Ò¨ýABDÊO+õ‘ºgŸ{vð;Qûâl9 ‹Ä²ƒSã͆`ŸŸàÒuhJÂ’Õ†ªbøê8ž¯û:­}ÛåYW倞do†ulá—Ard¤Wb³5îwW·žV_pVW XdÒ‘R?úLm€)Ÿ§CZìÄ—âÄyg$ºtux½ÊÞ)OAçåšr:‘dV^Èá g(ÐóXRÒ°-R'T4‰„цì\iÚÇŸïX§xï%6µ“±Æÿ‚y!ê·di´Ÿ¢Ï°1Í8G›±çøsV3ºŸ³Ô?oÈ»‚„a(/Á:¼@b žìÁŒÅ—1`…š´¾³(•¢}äÕÖ²’sbû®¿ø=0o§ZE{Û|VÍy0…3çX9‘Õj_)s’y~Évi’Bøöe¶ï·Çs÷G)ôoe¸ «=¢s¡s±¢ÒA#TI !sÀ¶Õ2n§Ën…Ñ9¨±IyÓ^]Zd•À=]ï¬z$ÈŠ}3¤+2ŸÛˆ]"­¿Æ“+¤²… k@žÎ ¢Â`*Î:%£[{ÅNËýÃ#¬{8á)„ÆÈ[€rç„Ò³³®Gþ*Ïß™vø‚°E¦54—*=¦Ì†•ð[´[N* ¡ûö¦W?k¡4o0¦™SVÕÈ -¹¥12JE#jèù ¯µ£‹ÁXg,Tû€ÂºŒ<3GH‘ÓÖ.Œ3WTš´î¸½©ÿ‰zatM.[Źï0ÙlYK0xžö$¬ ;]ÃâH.@ýk´Ì‡Ô]Û Â0 t`>‘‚˜„­˜‡$†@Gkû÷‘¨?è/¨ÄIkÎgûü µg‡žÌ>ˈ~ÞåÚë]Ep„oˆñðƒƒ›‹WìbpÄdÓA‡óu×ÿ†®i,Ñ=/M§lzJ¥S ‘t‹©EAßd="ã"2 å19Ëakö› *!û`Dí:lf,>TÑ1§G‚F‚„c±¶6¨Ò :— 7ñ0ÑéöÔÆ#+ZD8Íû‹Ôd-èhMO?xñ¨ö2çšï!¬þŒfãYè ëê{BÖÕ¿µ°ÑLgÔZþÝP|áz |UÁuî#ÑÍD¿Ù£”RýÒ*õm”W'¾»Jr™Ø\’ð–ü<Ù7®·ä]±Â0 ´ ŽQ( 蘀ž)‚-˜ˆ2%Cä„cé%ë…»t.’ÆDZ-)/éõ‹ÉA;³6Ël¡³žr¿±Ñ€g¯5Á'™'Æ]^ÜQ$³D ¬gcnj§ë}*oxH;ˆÅ«<,¼«×K&ôk‡g}ÿ·Â7cóçdÍ1{ß~,Á–Æ_‚eO(îÎÇãùöدNÈØ;-’E¹Z$c”ÝYÅžaÚGË|ÁÔÀm IÅ&dJƒ…Ô1dRÁjó!¨.øÒr‡&î‘$±|/s§|sz†R.ÀîØ„C=ž¶ˆ–µ0Ke6ƒ™âPhÆ ¼®”'‡ý!wÔ_ð5Ê8о›øS$':ËE1s¥³tæ¡þ²}àa ÜÀÔ B•;† ¥c V`†h)býKq’Ë]:p‘"qìÈŽßÒ[–ðãÏYvj©ÝYfþ´Ì³$=…¾áü¾k…„X)ÐMÞ¬šHû,¬4íçu[~%srñЈ®þU{ÝWÇ˦Ìö¸žÞíºµ¥½0Iš+$,º+züyí{#%w¯{|ë÷í¬`¾[3ÆiÔâÚ%À+òínx"2é i:hÕMÞ ‡@éVJž¸uÁ÷ÃGÁX`%iŠ“/„ú3÷H‰4ÙP…ò!üÿ’a¦º ¼>5á–ZòûSÜårñš”…èÈ{4´tÅA1¬}5I·i,_K’"–’µ;O•ÉìA4ÿŸ>PwÅ8Ã0Ð L¼ˆ…G±ð‰>€03ó&žÀÂÆ2&¶ÏNQ êDBU!MªâÚÎårùG‡ßrö}ÇÞÂõÝ1eYaýŒ\‚wØvq§d°6Ìž¸‘9ä›OäàãYØW{D‘¾æÒê¬5Ö×J/ºq©åf¦òÝRœþK¶½ß¬nRo'W])8ð*œ‚YŒš*Ñ8Nª†.(—q9on–]ʳ6 kW¡dÔ¥PÙ5U˜<£õQƧO1ÃnX*Q 3éÙ82|<›7pðó€€8ìˆÊ\‡«T5m¡_! 4š¦*@(A!±©\G‡ d¦Á˜#1²¡n½8Ëá¨%&©óæ0¦»„ߺ71Çc;¨aaVÿ ®5¢«%{€ý¡Ÿì0 þrÄ”‡Ê>òŒ>¶]Mê  »zÀ$tï?R&…obDO|Œ(™’yÿ#vêR XÇ׃–Zª@&åø 6‰èZƒ°0°pösHîÀ,ôg—¿fÎu@¿|g@«/郚…TèC†þ#Z˜¨“™(•/80z®ýï†Nâ!ÙÛœƒ4© ­LaöÂâèW Êé.Ä$?ôZIøÒOè\Èág°uåЂO@w¶þ‡M¤Â[ì° åð1¤ÞÄÿ`»q sâèn(<¼‚˜[V*ÿ¡sŒ°a)áõ;T?ÂLئFDƒs/#Ü-ȇõaÚ…˜†ÇùȆ5èÊè²O´Epÿ#³ÉØQ?\@ò®Ýa†Êô Á t À TÌ@KËìAÇÔܱ=ÂŽ¬÷D.Îq ‡›¤‰?±-?}žüË¿5©c¨Ÿï4+ÐiûAÉ(ÿ–…Í]°i@ÀaÛH?lvÍŠ®4¤tý òXnöó¼C†Ö;$×,Êp@þ7KŸUlá³ÜÇõj{˜ö¿;w…pv¢4iR¿h;•ŽqË ´/Õœ·I'£ƒ3âÕkÝŒô¡zß -Dƒ@ó@&Ê·æ»ÊÐG5(Bjyh©›•ÁΜÆNÊ¢öÒœaÝ@½îtr~° Y­h§EŽJn6 ¤$#EU­Jî™?8JÞæHÉ(ÿš^¿ˆ}Ö?5k– +8¢‡u•Я²Î’k%ýùƒ ZÙß"ü§ä]ÁÂ0 sF`–àØ…-x³ c°óp&¹X²Ò#m'øÑG>I›DqËþÀÇDnq÷‹ö ¥33å¿¶º+Ÿ9ŽÂéXtAÐÓé’ÿ¥ f-to¯.·cíó ºª¤w=7rð4-j‚›Õõ9ýk‹NzÀ+ôæH‡ÔÉG÷ùC´I÷˜ÒxŽž$=Hrë•qEõ¥­oÂîxI=üEŒÔŠKZ‚Âu Ji…F(…ªÔ~þ§Hið‚ˆ(j_âr:´Sá•EZñ°© ‚óVáƱðÂw|¬»µB:z·@€·‡:ŽJ[G*ÒI^Cÿ>!‚{õ.©Š«{Ó’¶OrÔÚFª‚ÓÎr³›§®‚njºóÜ1‹p‚P³ãsÞœ³ô\´¾OBÿ‰Ðè‚wõqSÔK^ÀQ°œBøóœÅ >ðs½,L½¹÷8ëhŒFf+ Tgòw':‚™/÷r‚a³úÁ»¨×©ß{ÜM¡òÄ$‡ ª ,í`àêUIø ï°öœ¶Ö5!P.æ)¹ë©Z§ˆµèºüÀ*Þo×·ôÞ1ÈËÂ'ï5Q€ìˆ`ÊÝ”4>V\?Å­6o mnA2k·ÎŸ–‡ä]1Â0 4 /aeGB0ð6žÀ„ÄÎÆÎ x;?`gbd¦&Â>û@-T0!*U’(Nj_ì³ó« ŸðKGéM„×ÒÚÿRáúsÀää$M~sÒ2äëâCô1˜.»EÙ˘}(øM=^šÚzucªÑ¶K vGÉÚ›ÌV£º>v›ù±|öáÊ 9M¦.OÆ øxç׳íÀ_míÌ7Ÿ§*Ë‚ªHö÷:-,dŸvkíôpBò—Q>Y&â7´M§–ˆ34"Ìî²54.¿Jú§Á0K×—O¨,©\¨•jæØ1ˆ u¸Z j§¾¼Ö‹á©4Ûzÿ<Ÿ«³PUõ1Öbüï>‰{ÊeJ{5–›Ï A-8¬þWÝ‹Ü ïÚmb¨o:X‚"53P1¢§É ”°% ˆIs‰ý|9¢ Ñ ¨ ‚(ÎÏ~Ï~ùŀ߽y$ÄíLæ²ej/û-ç|(ÿú‹?&vY%¸gpµÈô >þ+NëqÜ÷<¾¹ãª¾w›û»ß$d‚2e}r&³å¶Èí§ úñûWYŒTaAT;x®¯d–z-ü6ÂGÿ³FaT1„~l±v¼3ihaSŸÉçeP¾X͇$¦±¯ä€ÐŠ«’-˜Ö¨ CŸHÌžæR‘TzeAÿ9@ïG 4PfÛ³´‘eìä:¼ö"`bÀ^CH:Œ÷ W¹*NñBï™ì9Éjûàl¥dàcâz\š“HšIEð™«dwî€=Ÿþ5‡ÿ@C±ÀǿܒpE€PElU§Îr-`¡˜¨ž“%ãÿÿH­>ØnÂÐeŒ‘ŒÂ>v‰˜ÇÖ([öî@]& e”ÿë”á-ö;G4ÇkÐð$è_èzkèšmHë :, +ør=%`¡oͨݳJí¿‰âOèò;˜» ã¸ÐzæûØ>†OÛ¦å¾!àuþÂç`”02Àþ‚‡/¤wÛ ]eƒ:D0—ZþGI;ÐÖø´‚å/¢`…o*ƒ 7à‰[èxùXEi”À—b2 sèä+t²¾Ê >y‹Õä9è’L´óäÿÃZ@TÈ›ºð ³àý•Ög€vÍ2Ÿ0ÀZøùѳýÛ«€Ø¿€ @þvv|XˆÕä5ù£cø@@C±ÀG/ıµèÑ+\•´… ß!K5L¶çæÂÆóa¥Õ Ëè°3ÈŽÅ$ºç:tó˜jQóØj}‹ØO 9 cø~€·– …ÓÿãG6œ$èPðâçÿðSa¬‹ü¶"„~ï(¨SrNíÒÄfÜî™ÅG€Ô-Ä89ìhÄP¬ÕË€Ôõ†vÑv/˜@Ĭ¥ [Ø\òø3ìþSø†&HK’¨Ø†*Bž—@:Ú—Q0þ‡¥EØå"ˆ^¢‡ƒÓSÐÊqÞ të¼ðEZñòÒ€ô”¡n@ZŠáè+DˆzA|h„‘çŽ ôUY=ë«´š4oÐÄï`À†ßàË,‘—G3üEº Óˆ‰éˆÍ[ð zhú…¯½GêEY®9b[ø4T¯8„öðÀ‘ÇÈ€˜m…E$#j¤2¢‰C¯Œ0>#Ô@ª%`+ÿ·AxÑ1 ‰ú@k$`%ÌåðÑ#äË8ÿói+ÓèJ{¾]÷r…¨Ï½ü v¤G»<æ‡ÿ_^;stQ#±p€-Ñ;Œ0w1 …9ý?ÒvÆÀBÿ×ÞÙeÃE»gqMëcj—ƒºð»F‘ÂÁ†t-mŸžó°s!…5Ä-`Ç1BîVd„vV@A„ÿ{$ÁFXã9ðøÐ ü*@P‘»‡8Œ 0yèÄ…e°Ëñµð C9ÿ!÷½Â® þ6ÈùL°ä¿ñ:ò=ã{ú…ކ’Ô!Ã\`ÇCæÌa×þg„Ì“@̇,2€'²@o¥åÞâŽãGf€V…a¦Ãâq;2,£ˆ*X:…Ä5ø¢øµ¢pÏ"¹Ýጠ”xd€Š>¬öG.ä°G.’Š8t ,ãÿGÕBpaeßo uÆ0¼Xh´ èÂH1*Ça™º~Ù6ô¼/F ›ÉQpC®ÇeBì †ÝIÍÀpH]?¶¨ñ7ÑŽ„T};Ia×´B,…Þz-ía¢ˆ¢¤ÄÜ%µûÿžÙ¥÷Ðj~ûŸIV3A+®ÿÐâj"ìNÖÿï€üÃć,¸e ±2$Ä)j™ ÆÁ [x™º†ú€'²j‡µð™ Ë« E;ŠnÈUªr˜Z%£7&ðoªƒ Çü‡"ÁªZXÁc3@ëúÿ0—ÀëRFœ ÈJ"D¥ -]`u4,@¶2AMb€ÕiÈÕ4E™£·Â´új/—tœ­4˜/þs Vb„œËrˇÿ áP _0À–ØBÝ‹fXámÃÁ†ælÀÛ ¡\àƒ#ýM4y#_,ý’ÁhtÞù•½÷ #J^™ aqD+f'Ä-Ð w4¢˜…¥s¨û¡ û?¼1Úùz娢¦¤º Ú®ú÷Ñ "ãC‹·°›¸`¥>ü®m3—Ô†=³KP }HA>` Úƒ´ÆaZÿÃ9 ùŽKÛ§åý"ÎÅŒ°1{xÝÇ€ì.hÈý‡99£3B­%¾jg„Í‹ÀúH^€+:…a,´n€vA`aˆ@†q ‘­Ä&3À’ØDh¯ÌfD\ 1kÏ®„VŠŒpwAkD‡‘ÀpOþÇYPz*,ž)&<„‡ì‘ÿð9%DhCãZöÿCÔ{ðü#ºe4\ |\lä–?ZKÞèd€gN¢Û}¤ƒó+z¾©s†¥B@k¥€–É0Âg°r º}ÚÆBjT!õbPF…É{Ç5}"×]¼Z¯ü‡Yü‡7O!N€6ø`-Kˆ”iê’Öý~ϬÒ÷HFËÿ‡Œ£ÃŠ'$§3¼g=ÄÀpsûô¼¯¤¹ø?lh ÞO€¶ç‘‹~”b)ë3B—ª’Ñÿ!³ï°ž¤èa‚µøá/¬)ö*¡-Q¼cà°¹(Ö¤†µÈ!þf„ú°ž!ÐHσ Vb/ð!×2B»8¯l‚˜k,cô þab BK¨¸ý¸Ðp  %ðáM Å?€ÎºßSnö‚#þC÷ @Ý 59ôa‰¥qÄ€=b@ Åÿ1_â’ƒ´à #x³šà¦JÁùÝï€Ô;£ÈÒ@ëAG S¯8¼Ö¶‡¡_Ü.5~ÞYï€øåÉÅÍÄÝàÿÿš{!€lPZÖ¾ªý½cFÁ+ŠÜËÈðhèy¤ÁXïˆ>ubdÞ‘c€÷d°¯YÇ †ÿŸ6œF*a7ÐÆ´¤‡¼ð11XƒÔ x*eÆk@eOàÝ>x'áJø;¼²g@ ºÀš¹LO°þÜ”a„7‡¡E<,œ`Îe„WÇPÅt$¡°ÂŠÚɵÚ5+ ͺ@[9 §´óÔ ü®r³ ¸Ìø’!³oÿáE=@‡ëàþ{¤âšÏFì@‘uo÷( >0‰*ç&FÐx&ïX®—%Œ Ý‹ÀÞãçSKZ)/àGÁ( (j;æL»æÈ£”dès!ͺËM7b3«¢ûœPm"r÷Ÿ Þ/e€MÐ@¬Aïí#·è9-EºóN#ÐPláKpfY'h7,SÖ£``aï ,Zõ KNá]h?Z@C‡¾á]5ݲ®3ÿºÊL6c3º! 1ˆ^ïÀ™‚LùB»2Ƚc4,:r[ø4×á‚Q0 1(l;j ,‰AÇsC×ïÿ‡ì{øÝäÝˆÈøq¨d]=HZ¯¼ëŒc!“Ï H{B GS£ì­a„Q¤ºöþ? î†+ ÑŒ‚Q@5,ìùe«%#|3b“täŒ)І5ÆÿH;pQŽFÀ<¾ÒN‡o¢D*¼á;#|ƒÆ™ø¨›¡sM#Ðh? FÁ( &0O‹CŽo€]tÈdVðBïGÀ(œY­|]SáG)#ìß# ï9À|ûßýŒÚÚo)Òý@Ÿ | €F üQ0 FÕ°ŒUb@:Š‚éˆ Äý°–?âP;ø×ð#$d1 GŒ¹"vm(d¸ù2t˜™XŽRa¸O‡`´ €F'mGÁ(T­GØy gÝ@7ÃWùB7s£l/„¯@ý¶…̪‚{èW]þ‡ ÝuÀÝl…¼Šô?|÷æ2Rÿõ}>t@ø£`ŒêFØf»ÿˆÕîðeñŒÈœÿð…óð£p ÇA‹lŒ܇ï&`€E“CT#(kí‘¶Û@À%jzy¨€-ðGÁ(TÐ3yþÁO8‚´é¡Å9ü ¤P Ðcø™à»äà§&`Ü4b€ï:†«àv"¯ÃGY“ÿ¸¥H—äãG† ÑŒ‚Q@ð1n™žù?´iÜ*;=±{<ÆyÜb•B)üàR´ƒ°ƒ»ŽÐÀÛC Ðh? FÁ( x½ qôØ%øÉŒÈ[ba­xÐÚè¸ûØñv ¨á z Ð?`ÚÁ@EnÌcÙiûÿZK‘ú±,#Ðè*Q0 FUÀ„j›_À‚tføHøMaŒÐûœáà0@oì_὎Οފ>ôÂÆ€|CÖØæ*ˆ™ÿ‘×ÞÃWúÀð Ø~:Å 4Zà‚Q0 ¨þ3>e@¹) roñøê È÷Ï¢^. AªÑ—OJB–b2@6o1¢ßó ½Qí?|Í=ìÞjÐ)µ›[ŠtÒ// ÑŒ‚Q@5l™ßþ¿r|#ìÚDøšyX ÒZ‡ÜÕËÞy‹8‘‘ýp3uÄ1Òðݶÿ¡w3Âv×2"] ,ìrk€…=‘·¿ @£þ(£€j`B•õs`áûºØùð&,Fø l·,ürqpkrçí¥ÎRcø…8ÝçÔ€úX w/@6UÁÔÃ7WÁ þÿHÃ8 ë…ý†Q4Zà‚Q0 ¨  Þïÿ‘‡\ ýø!f»”açÛü‡ ó€†òAsga•weªµ@ž éü‡ ýg„W*ТTi€ÎÕ_5ZØc€=Œ‚Q@uPØvLX˜Û q^øŽ(ÈŽ,Äñøhgã©÷@Æá®rÓw0s*ºÎÕ 1Àç l¯Ÿ†¸+†ñÿ¦«­Eº˜wâŽ0 ÑŒ‚Q@PÔ~ Ø:gÐÆêÀB™VVƒRÂï5—Þ_€r÷ºËMá7^•uŸeʘ1þgP/ñD\ªÌ)îÁoø6ñ°µXÿ ]=8@ø£`Œš‚¢öãlÀ¢YÈ–öÜЋt |ÐÕ†/»+Ì_¢ë)ë:Ã,Ïy`Ë둚õ¿ÚK ß¡«Ä€-ðGÁ(£`„€´£`Œ‚h´À£`Œ‚h´À£`Œ‚h´À£`Œ‚h´À£`Œ‚h´À£`Œ‚h´À£`Œ‚h´À£`Œ‚pwm·Ä Øë&u¤‡H©ñºbÖ10 ‘"å7'ù¼Àðð~ígþ¬xõù|9»uÐå~Ç>}¾ßÝ~$ùéRØÛ¥Â±Å]Ê'åc<…ëÝNÊ7ÛOœÓ0ÝTÑù 5MÖÎ߱qÜk´¸$ŸëÈ¢mË ¹òš=o;m ›=3OdÎ!§ú ú,È5cN\œã,ǹP·ãÐc.çÂ,ë.ÏϽvÎì•ñ. ÇófŒô*Àƒ RÉQã9ß ˆS„ÂIuê(p!¢J¶¡öRÆ«Ÿô~¿ÕG9`làxÛ_²öùˆjg¡üÓ™Ñm~li‘Êôów>k¬¸xª£‡–øy–YkÌÇZ½z®6€2ï– 6 CÍüYåÚ±öß#öd?ðà^fLŸe®œ8\®ÄFÞ`Ẇ³Ä[öÕØÝyê_‰díåA ÿ…}Ûì÷7ùo¿/Ø»‚€A¦ÿ´Ûa…%©xÙe‚Èl›¶i…ô‹?üçɱ#;\y4¸»> ¯®Ye™Â©ÜPo’lÁ·òÇy%(c»E3É—Î'ã!îçäâO£ãp‘n—Ç6*VWKÔSÜr\¨ëêŸú¾ãùô¬8¼d§buÜ«¨=¬¿êß9Þ=‚~'ÿ•÷¸ · v€`ÿÿÓN’¥ißHÄ…‹Ó*Ê+çï‡6Æmv¨±îr^25øÄ±38Âvu墜Næ×94–Æ;,§¯jå4"¼d0éÁ½¡ižÖ­ù´®“Þá·Š»C'})FýÄQ?CjÊ[ãºGε铖r¿,SòË €„ÿÿµWBÚ¡rðâ› U4e|øi íÔœFÓ}s¹n‡7ÕMH_éª&…‹ë¯#²é#Us}VõÍ+Ьú´_´äW÷Ñuç5ÿ ݼÔÔú’¡Øý¶0Ö½Óþ}üGnÌÿÿµkCਓ‰]µŠ©öUKgFku¸ynŒÚ$ôåOÎÕá¥\%#u¾DŠî\í±'œIë%ÂJ‚pëX'†³w9Ž´7õu÷oswk¤¨xÝš‰Œ[½è÷Õê¥û%| {GÖ‰DUƒjuk8¾#9V‚úÿ«;µ9†@uèG3Ór ½úÒY:Õ1û”П[s ÉâPdœÍD ÓÝNK(ÎÚ¡NR÷Ö©0‚Ã&óEÒU“CÛ)‰U¿]]±’úݦ5Žnm žOZ»¨WÓZº·Þ©›h¾þ)€bHY [«åJL¡L(Ñ[ñàêv£«!”q™‹«õ‡«åƒÞ3@6‹P!F¨òDWOí./¡4±W8!ÛM_<áK;Ĥ\[!ãã‹/|-yrÜ€-ì±¥%R¾Ê››ð¹ŸpžÀ¥™F¯Øq¹‹Úi{È€ÜšÛ Cÿÿ¯{•áæ¡‚ ^¢©Û¢Wÿð«ÃQæ—‚(90q$'£m“ÔOû¹dE’‘Ø»…Ĥ:{ðÕºÓ½:¦NXawªbšãI‚ÜoZ›?!ÙâX¶®ˆM"¤í€ÞõŸÝe À}¹£Â0Tïi'¡”$MtÄ¿‰y/ Ÿ]n…`ޱ"››žTÝÁõݦDtŠîÝì¤'çãB}˜p• •¡#óÌÔÃÖè€H“·Á#©ÂBî_oµ6eì¨T4Ç>@¥E´Ÿ9ð\q‡”:„ÆÉÑÙ÷e @Žä‚ õÿOwjc;tÉSkÖJÁ—=|&¿˜Õ‡€ŒÚÉa…ÆØÅT±\Ë$ÁÁDyÃ<_¥ˆÜžÝÇ&2\ÞcRØ[O>x’Ô«oZ ]rÇu윮óq¦ â±qªÖ0ÆIYb¾bªyEJœúüšáoÈ1ƒ †þÿ_»JÓ·u¸$fÖvóê¿ö$3I²Ïì)a©}“Ò7µEç» u ®**s"ÊD>7@Ú„ÔùGíÕ;hOâì|G™â$ŽÈ÷®:qkG´ÖïöÓ½*¨HßµŠŒO‰Ø½³úQ÷êø»¶`ÇÊqA˜þÿÓN&¤iK™\dóBD)ÅWø €¹Ç3aHn¿IɘŒc%·²! "ÇÆŸ)= Í \]à+€îª36u×¶bÖ.ALî‘% ¦C+ñ}Êvß‹ûØjb‹K$ ¨§ºpÍä¾XŒÕ±ÛÿY=È€œ3ÖB¨ÿÿÕ®†ðàÚÅAÆ+¹+Â-½ùó´–t§®kª ˜œ?ñ8÷Ó¹N)Å+'=?í$(ªa3?J¶nÏZ^Hºž’¨ãئˆ”$µöSc!¸KhrQRÿ\_'“Ü_|áÓŒ•Þ×ôª¥Ï­#-][r­` ýÿ_?:<™ÎíÒ¡ÝŠ’ 37ºõß¾ „„ˆ‰ÂÏëPshu޶º0ŽÜV}(~ Ó¹uW2`œ¿=q‹j¯›Œmâ4Ýø ±6%÷ø¤Èî­: 1É{ÒƒïÇ@=†Ø01-4bZØ2/)ÝWr3 L/:ŸPKT@Nw™Ð©ŸŸB…)µÂ&†¯Uˆ^yâj\`s¾Š WEGŠß LR[ìøäµæñ\~ÇØMèzÐÜP^*60"[÷ €ûrIèýO]ÛA}F4«Ð"ó“΋Ÿ$™KÝ7)$ÊtÂÉîÊÐ5(2Õ;õM¤Á¹b;AU씲Çó]C&÷«>ÆpyÇÈÔ·“¼uˆqËôÔq]1¼îSu6vë˜Ne¯ÊN†µïÖ`õ ¶äœ1 ÿÿk'AÂ%Á.: ÚVl‰ƒ/ËL2ðfŽ6 •”·Iw êæjümÓäobH tÚó†Ú¸´=QLc/]d •Ñ6ðU)ùKj“€ãÌ£[íUª¡VÓ‰l¸u4»ïêgªÚÔ_«:_“‹lB¾jKrÌ€ùÿ«ÓZ# l·RRû ‡Áξt©±‹R]my±›Ê×*»ˆsrñL?E"÷?}ÒèKlôs´‘E*&uqC“ËÙ4bÞLi CCÜNÜ“ºw°åo…{ÆSd«r_ŸöiŠøúöœH¤õ,é_¸9ƒ€a¶ÿÿtO°8³-=ê-Âj0A'—|ñ—ÎnÙ´–o­Ÿ’Q=+SoeþÜó†Jñiÿ¤±g¤g„Ùè´ æ–{ŠkMŒêx^×=‡ã‡¨Ú^ 4ÈSoµ¡œt6¹nù3.ÑÔ¨óޤ.ý ¤™â™5X| ¿µKòË`„ÿÿu×7C—2F‘@Á1Ç—†Ÿ $} cK#o褙ö›€LÈóžQŸQa;ðÈ’A܈¿í mÖ'ª1QÜ4h2sªÅò§þ$ð œôþ3ÎÚ[À8ßc†Œõ—†àfÊvfšMÃóÖ|[Ü6¥ßÅ#9掃ÐûßÚµix€“ƒlm´?Á×_:TL­¼S Õ2Êd¿Á.\*b‰sœX¾ƒRt·~ïi5/Õ<É-ÓMjÍå ©°iß5‡ô8»$ÅÕæÑ¶¥|îÛØš G¡QjŽò')!£Â÷Žb¡“=èdÏ(£`Œ €²…? FÁ(£€Ž €F üQ0 FÁ(! €F üQ0 FÁ(! €F üQ0 FÁ(! €F üQ0 FÁ(! €F üQ0 FÁ(! €F üQ0 FÁ(! €F üQ0 FÁ(! ùV0ÂØÿìÁ,Ë$i’âa—íâ¬X ê±_¯†½.·¹æ™Ã.bˆã>ŒÍði»k1ËËrâú³ïNE«Âo¶ç©´F'o·—˜ÃGµ~ƒVgÔÂâOx”^W÷åôŒªduuu2]>†±>«˜ÏÙÙª3-Óy›Œ›ib<¾6ìgß-wgŒ@Aÿÿj¹BËÎ&6°0ÆMP´s|ùÅá×”RÇWðß>ý'ê;S@”«Aû„‡ |ZSzÒNœš)Ž@u•ECuÖi é .ñWÍŽ ã.TÒtþ).#íQÇÌQ[›°‘(.á*j ±‚μ„¾ µ¤³ê8B‰‰¤wB‡ápÖŸýb&~i[òÎ €„¡÷¿µ-“IÂs‹mLå þù‰y ¬¬ê}±EÐ’e#@7wº[S«ôx¶¢˜|r¤}Û¿§õŽ™ûí,-*C;ÙÑsh|hÁnkM–õŒÍ—Vȧ•i9¤ºdúÛ|™ ÷Q>qãgqàæŒq Azÿ[ÿÕ4¥¯ãð ¡eá5Ã'Fn,F¢äÓâ,òÙDÃjØ€‡»¯BS #¦3õ­¶ ôS3N ¡S[bðÉ·#,NwŠC}®y¤ÆGSÝÔÜô?8‘nbþ;’Þqš¬ Ų'qþF>È9c€b†ÞÿÖ•g‚K‡ïV•Z“¸ôÅø›ªKM¦†ÎAt1`´wÖTSkÔ.Gz T{£*/$|QI­ÿFäi;Q_×W€f»twv“ìüunbé»ù"bÛ„B³ͼÃÕž„^KJø¿´Or­e„Õÿÿt§@Öt³K‡¼b5Êע׿tÞ;tœ]> \E»;A¥p1<ÝávsœÉqdÁä$µ8Gu—ÑV·Ò³D­ºçŽtŠUÕ *_`kÝ<%T :Ú¸Ì Y +.Œ ~åÛÛõnÑ@Ìq¬öͰ3|ßÊ€»+FAÿÿu«Ç ‚Ý5äœ0ضôú”d`µq†âf¸·"žˆB’.”x£QN‰H±$Tù’$çžc[˜ÂM×·”¡2®éÕ>çé¡ÃpKη›ë&3ƒ@^äRwÕ™½2·n“Ûðu ïÜqAzÿ[»â{E™ Aù´|õ‰yšÊö¦ìà¦A)Ið)—$O L†÷{ØÀ–±ðSàëqÉOàeïIÊðv!§ó¤vÕgÊÓêD9t£…¹«¡I­ëN [Š91"4©Ç¦³hdò;[[.)€ ½ÿ­[C̯‚6¹ *Tßøøj@]“™<Ùš ÏmZx6[ȩᦙÀœ °ŒÍâ5ì@¡UÎñ¶Æ 0­p(ß\ 8]ÿÛ»Õçü§Ä’å,‰r“k³µ·±wkó… È/ƒa†ýÿ×\«ÊaH\ÈmЉie^ò5ðí€ÒsƒŠ¹DAƒœ4­Ç\ÏœKñ´4½# MS»KTOÉôÝÙKi={ïÚÄbµ©¯)¡4›ýsÙìÿ˜Æ-”mv}rÖ6Þ¦âÔ˜<íÓ/t @~¤Â ÿÿº«ˆ:A‡vªÜ(}áðo`lcuÂHDl’Š’~š›BÍPwç”Ýžxnœ sÛÓ;'‘c<ÆPâÜš…ÛŠ“*'˜)¹¨Ýgú£ö“رp&.óÜÄcçØ1¥aÏU2nÿ{›ù_Ô€{+H„Aÿÿu§`ˆ:½tÈKV´¶å‚^~¼š-" ~Ç¿ýè8î¡Q¸ Ji·É„¤Û§ v6n^HJ#—õß¹›½)…˜Ø+¹p6ŠvM*†is'¶êÆÙ¯MPîÑG’jIE¾SÏiì¨uYâŸ|çӗ8oî8à ½ÿ©Û©Re=°d‰—Hù¢±ròãÕ×R¹–ó, -»d¤5´Göu¶y*Rª°U#SELgw$Sу1EÞ³U.ÿš {s#“ºÝøÕîjR¤}t¾åÜSÌß"!d¿‘ ü]ùÊâ(×]…WîÍ †¡÷¿µ“ Á×$ù`Áj#hÓtðWNíyRdm›éph­Ž”À“™ºâ6‰MÖ"M×ö»Byž%UòÓYbŸ”ZÔ¶ÏÝ)Ýë-Ž#sŤ¸)!ëžÔˆP]ñÕšÎJqO µ^S`ž´%€jãz†"&S R¡î).µØZkø* tsI-¼‰ú@£$ÃÁÌBojÅ“Rx’ÒÛÂð…1²Ð+\qF(Ýáj(à’#§!¦"D–ÃUáJ7¤Æ©€˜|I(âJØÌ!µÇ¬ŸF zo¼B¦alB5=¾V5.>63ˆmáÒœèÐ |]ktw[°j½ÁôRƒl.uÈþ!'ƒàËŒØh\ò0@¨‰.¯EGL/ gx›81ñˆl>® …X?cãS!QC ±½úÑGç/nÁÉN(×9ó&P*/ÿ»üüÄñíÞ=r¿a–0Œº®£ëŠª **²,!!‘IR–B–¡ªò§†û_쯹³ +baGRR¶/dS*ÿ·?ø«{ïýÄ·+}5Õ,•)•ʦ‰n¨ª†ªj]ðR7² Ò4%Mb’$%NRUS¥/ì®Ì.¬¾ÙCâ–È¥£ç³ÿwóò÷ÆÆö}£Tî£T*S®”)•K覉a訪Š,É¿$’4!‰câ8!Šc’8¤‡ëåÅ•Í;%¡l3ûj>û?øþwÿäÀ»ÿ¼\©R*•)U*”ÊeÌRÃ4Q5EQd².ø$é‚•ð}Ÿ(މã˜8ŽˆÂˆLÊ•Kzk}³}¦^o˜„| ÚÓÇž¿{ß_꺎¦i¦iš˜å åJõŠ™å ¦ib˜š¦Ñ¯‚”¡êЬ )2²¬¢¨ ²,S)›ß®Ò°t+üNö9vôñoišnÊ²Š¢¨hš†¦F Ã,Q*WɃYӻ໱Ð/Ë Š,Q®T”î½$uM–es°¿ï;B¦ê6x®›@±Lкdp°ÿÅî edYñ)Ë2ªªc–úPUýÊwH2ùxI’d Y’»™ª\'Nº*‘$©û2Yz±RÖïr½a/ÈÛ¥Ï'}x"K3²,#ËR²,ƒ,íf–4%ŽC|Ï&ŽÃ+ß!Æåã³4#ÍR$Ecy­I(Wøpz«ã`Ù®RíÓ¿*2Ý {AÞ¦XS«ÕÊ#išt2‰ºEDa@x¾‡çv| ðˆÂ€(êŽKÓ˜$‰IÓ„4MI’Çqyá…xüèqÖ7/Ó±]TM£R.?ôÝŒämô¯jŠüÉ8ê®°QÔøÝ•Öw\§sÅ|×Á÷}¿K" C¢(&ŽºÙÈj5Ñ4z—^z‰;Flj☡¡a\Ï¿è/xAÚ‰®H“dO…A@„¾‹ï{xŽƒëØ¸¶…ݱpm ×±ñß÷|·;>£( ˜››g}}3gÞ£^ïgâ¹ç¨Vð\›,Í€ r£IÝ®úŒ¢Ðô=ïÊ +Ë]¾išE!ªª‘×B¹¼ßÅs=<ÏízÊó‚ÇõHâÿxí ‡wqäÈþú‡/£ëŠ¢*À° X¢àK®g]Ø.`$ÏóƒÀï‚Y_ßä¿Nüš8ΰ;mÛ¢cµéXÝOǶÄ÷Žcã:.žçŠø高øžËüü¿9u’0 ˜xî9ÒTUM€A &d¤]o0÷z ¸äâÜRóàø¾Û$I¢i9œýà<©¤òÈáдnž¿V5êx>—–™_fßþýì“eNœøtާŽ=Í/~þSJ†‰¨ uDµ*]Ë ÊUÖ(ùìCǧ/ÌÜÖ±]‚žxž³gÏ"e]ï¦iJŠ rñ|×qXZ\âÌÔ4—æ?È“?J…LNž& <×feeOßÿ‹ óÆek h 9b3tM]Í)Üq×þÿð…?:ôãþfæù³ïaee…ŸýçëŒÞ¹—O#IRV×6(—L.·ÚX–EÛ² ‚ñxæÙϳ²4χS°´¼€m;ŒŽÞN¬,^âÈçá×_KóŠW”í†À]kû©l³SSSkjæýÙ‰çYZ^å GŸâ¶½{ù‡ü'—ÛL›Æó|6M66[ôUk<ðÀƒ<úØcÿÒãÝSorñâǬo¬awl‚0$cöìÆ45ÖÖ79vü™ìäÉ“«À²ðBGr|-[y ßGËíÍÏOÿ¼Ùl›úxÅÅÆÇ0>>Îî]CܵŒGŽf×®aÂÀ'Í2,Ëbò·y·cÑhlà!žïá{>A!I…ƒÃÃ8V‹™ù¥ö=÷=X6Mó“¾ï¿½Å{Û8Ø*f9 xÿüÅWJ%ýI×q´Öåˬ­®ò¹‡?ÿþäÒ4¦ÝXãö=à I,ÌÏ’¥)aF1AAÅ1iS2M¢8¥¿V#ô¼ìÜôìlËþ÷êÄÄľW_}õN`¦ÐénvC“×C†ï‡Š¥¾ŠyŸë‡È²ÂÚê çΟ'=š–ÕÂî´ñ=? ñÿʪì!q#Ë2%䯯J¥ÆÐàozw}yus©Ùl^[[[«†aø« äëÙR–›­N§Z1ïlµÛ{² &'ß%ŠBÈRü Ä45â$&ŠÅ¬ûq% ’$¡© }• õZZµŠ¦›\º4c>{þ`˲fFFF5‹ÀA (lvnzSo}Í–mÉÄw¾szrÀ¶;¨ªBÿAà¡k*ª"“$ i’"+2Šª ©*¦aP¯Õì¯Ó_¯£éKË«ö/ßšœÎÁ–ã8‹Õju¤Õj'F!³›%{¡T;¶çÊ%IÒUU¦Z­aª*ÓW)£ë:•rÓ0é«”©×ê R«V©Öjhºž½õö鿩ɩ1Ã9ÐnµZoO¿>.´^n(ˆ‹íÁHôpZÀ°FÉFûòm»‡²f£Q¾{l CM쯡j*º¦#ÉJwK©t72ïœy?üÍäÔ\ÇvÛâ™¶ ‘›'´ÿ ðmàõë©…¶# öÐVå,ˆ¦gç C3TEÙsï½uM×ÕáÁ!YQU)#ËÚm+_Üˆææ—Üóæ?%! ¯@ ÓCÀ^>üðãkõ¤ëÈR†(u÷cÀ3À—óâ¥e‘·Õž¼]lðÊÀA¡í¬“ë_x¸)nˆ¢î/€o+Ûuï”›hîZÀQ`Q¼,ï<¸ùlúiŒO®ôŸ›U c‹g“7y³A|52ð”7]èB‡Ð9p¯ ™@xqª ›bç–ÇÆo?ÞÏÞÞÝÚ§Eý~ªp·Ò{ ¸ÂÖ‚tc Řð€5à.àaàÍ[A€‚¾ëÀ}À/ eÇÕäfç bà\„ŠæŠßGÀYàëÀÏÄDí˜@®Å6ð$ðÓ-<ÐE/´E,¼·Eäà=ñ¬<VDâ8q³Å//™¥¯.Ù‹!¾â¦<+d£M`·ÈPV˜³ø<}þðCÑv±wêbÉ}H¤¾ÙB&*za+9Bÿ{€zÀçõ4zó³µQàâ­$Pr8ÓC 7zeÔ^š)|çÀoÕ©ž à²{Ãê‹üü Èy Õ·XÔ~o£$š¹Qá·aáðïjmöÓ¢õÒØ "˜E‘êÜÂB¦b xvœõÄÂP‹ZÔsž|µEkSØŽ%”_‰XòóüÝ{.^å˜52* @ñNÁwBhŸÈJiOýÓ{È]´Xd¡ìZåò­8'ÞîZ† ®O º—¶YG2AdÇÝ;õ@ÔîÑzo—o«þøÿëÿÄõßÄÖAýkåIEND®B`‚pygtk-2.24.0/examples/pygtk-demo/demos/images/apple-red.png0000644000175000017500000000673111545325345020525 00000000000000‰PNG  IHDR00Wù‡gAMA± üa IDATxœí™[Œ]WyÇk­½Ï9sóŒí8Á NìÜ)J„Ú„¶¢áÚ¨·Bª>p‰©E¤–¢ •¶‰WÉK« ÒR@è­«@›¤@Bq—‚S+¶ã8vÛ3ã™sÎÞk}—>œ3Á1¾Ä^ª|ÒÖž9ëöÿ¯ïûÖúïµàe{Ù^¶—ítvþy³—_æá¥Tz߇ß} „„¯ŸrçãÞ½ížc§ksëïÞð§M“?pï¿<üp+ÐÿE>ÑâÙ*ܾõÖ§ºúúÜêî W]³ví†Ëfgº½ôvwßûÖÛ>yºv!„›¿·ã'+³_ýŸdéL…·o½m]aûÄD•Ö­ŸÎóG»€¹‹7®îL¯ª«ù#ͯ¾êµ¿Òìü¯>tb»÷þÞW-,.ßñØã{>üä—Eà,ð§&§+Ö¬›hæ â /—–¤Ú³{^Ž>ß„Õçõzàñþ;Þû‰“ÞñàÃ?êÿüû/ ;p·o}ïƒU¦.¹tµ÷—KGŇ«f»Ë6¯)oš]ºäÒÙáE¯Z¼ä²91|î}~÷ö•¶ó ËW--7CàÏÏ4øÎíŸ ;·ö%åáéì”oßzÛ!òí g|a¾•é™NgnMoñàþåé˜,çVºK‹U!†ˆ@0“G¾|ç×¶¼nËæÚ±k5pÍJŸo»éºg&;Wˆ5B8tpaßoùû;[6:à×½ùOü\ œ2¹R wÍ®ér|¡•óΟ¨=Ó÷ÉéZ–—›ÜEBˆâ®|[ŒñaÕ²ÆÝþ,Æê­¿ÿ¡w~÷±û¿xà“½ù¶ VÕmäB)†F§h¡¬šá›ÿñcŽÝ·ó±ù¦üàÏüõÎíŸ}ê\IüŒþàn}G§Sef¶c"º´vÝÔªg÷ï/-þ3Æj"„ø`áówo»gprÛÛ>øŽAØúõ»¿qoÛäwÝò;7¬ª¹¥ŠO ̄ᰠ& ¬AÄXªA۰ضì8pìSî9pßÏMàßâªÙNwnmïØáƒƒja~¨n,‡v„?s÷¶{v}ôú7¼ñò¹ÙO„ÞÛêP ÷€v4!tñõ¯˜™ÜÒéTÔUMŒO¤Éh[(ê ‹0 š:²Ð4ôuÈ¢(­”íí;ú‘'Ÿyn÷9Øú©Û?SÕéc©bùèáጙõ!|'„øé/ýÍßÿø¦Í›7½çÒ+ÿ©Wu_Õ«œN¬H)‚£•‰DÄ^'ªj´FĪBÄ,h.è°%49³ Ãä ­0o…¥fH_ ô¹CóÍû¿ùøSÿv&/Ên¯zÏÂüàhÉ–ÜùtJÕ?ܽížç^¿qãÆÛ6]ñÝ^·»~ºÓ£î&º5³¤‰)†‹G©¨ˆÄ1¢¢!@©Š2Ä ¦ÄºÆÛ–z¢f² ¨rª©\饊6šìœ?7¹ý=¯¿òÃ_ùÞ“wžÕï¿ãÖ·§Š/”¬ùå;¿úw'WüÛ7ßüìyÓÓë'¦ºÌ^°ž¹›˜½æjò±c …ã»wÓz–€CDqbO1£H¡ä!Þ´ÈÀÐa f´î´æ›–c•±P26,dÁh¨RäЀ«¶ïصëŒ0Óh™O~ùίÞ{r¥/¾õ¦»VOM¬ŸìVlØòæ^}½Ù5ä…#„ey_\¤3Ѹ*1‚D7‰­*J­x§*4+DÐÆ¨ªÈ$‘¦Ä"½,õXä’Ùú^àêSxAJüpÇvýpÇž8¹ÂG®Ý×®Y½mº×eÝÆM¬Þ²…zr\ÉÇŽ1œ?LÞÿ ž êN£Éˆqû© X4L IŽzÁ‹!u$Dw¬¨á!P¢!¦X(3J€””⺫~ýÊÅÇw>ýðÉøÎ*æ®;oõç;Ý f®ØLթѦO{è ±ÛAž?ŒMt˜zåèU„:áÁñz47"ƒ’qsHÁÐNDSÀªˆ‡@Ý8Éœn5A7¢‚¡5eÐÏ<¾3øÐ®¿aª—¶têHš`â ÀÜ_ v:,î~‚ J¯;I±–’‡`†U"”* †af˜#æPpÄ wÇD0¬UÕÁSÀ«š˜"Vkaêð`ó9¸zõìÇT‘º5³—^W/…8–žÝOgn‰l‚?ŽÇÆÈ¦P2â ¥àÑQsÌÇå8ž‰;‘–Aܦ TÑÀ"â‚J9%Æ3êô^]ývÝ« )àÓ”¥%°@Û_¢®júBŒxɘ9w'ˆŽfÔTð(ê„0 ªˆº¡-/lp˜aðèˆAìAi¡#äaE¬N­0NKàm7]·©êE’;¡ªétzØ`@~ï$Zɘ`x°¡D‘Ê^1CQŠÌƱoNÉÝ„@Ápu,‚†@¨z¼%º¡j÷S‹ÖÓ¸6ÍÝÔÑ:ઔ¶EÍkñ¾â®àŠÕ©)¨e¢  š"ÇÜа` ®h ¨ š"ä–íT ÍžñFP¡v,GbrJ>5ÎÓèZÀS TP'4QuÜï÷Gñl†«b*-¨+1€8˜ʨ>L UÇ£",*¹±V1,EŠƒ,ä ˆ*Æà‚U;Ή@é&D„ ©"ËÇÑ™š&}a5\ )²"Jò‚F0U°Œ3 s°h Б‡BÄ+¬isaØ©ãè’§+ îœù Ãþ‹ªJ)-M™:&ÚàXɸ‚ "ÁÁŒày4âãd-£ÝÖTr‘•ðD@µ¢#§È°(Þq†ƒ@ªàþ­Sá<ãçܶw½Å§«ŠéÙULÍÌЛYE*J.™D ‰BŒ#À%Cdb¦`# jŠ™0#ÁqZUT)†h¦¡¯…¥¥}7kCPK ÿüý§VŸ“fÿZaoI¹Š@ÓPB iAŠ€ Ö©Á#Á”Ñ  ÁF‚Î Q£¨¢>JdŽPÌ1I‰áPÉ"XTlXæ‘E"iªûµÓa<ãF¶oyð…F §Ð¶}ƒã ó¾´˜g$ª‘ŒHF­àAQW\‚‘%SPpCU ¡ ªä±bQÚ2¤Í-ÍPXj %D OXÁpm÷®Óa<ë‰ÀÞý[‡¦{ êºK/E꺦rÃB¤[9FEŠ©¢2Ág¤ñÕT(>"ÕZ@<£hsaÐŽÂgyÙhC¡ÑL_)Ž ±ŠLMt¿ùîºùtøÎzbö|Ö[{ùvÌÆ0FÔ•*A"E" 'U(ÁG3.¨ƒE–‘lPSZsD %;Ù¡µB¿1¬rch•Ð&3Ô„%$çàDõ9F‘b§ÂwÆ“9€ï<±gϯ¾ìµ¸^aÅPuç€áØX£dœ¢ &dW²Y5CÇIšK!k _œR2m$*¦F ‘,B«…¶iI) 1=zßýO~ è2ÒÇD^Ðg%pÑk.þþª6¼3¤0-È”¡‘Q¡ ¢BGQr0úº‘-­*c…ZAÛ*mCiZ¡´ó€³‡vÙ;ä`˜dòÎH=é ³æÁÎÇö»øúK¾1³TÞ•ºiÚMG ±â¢d7Ä MiQ-´Ái‡™¶("…Á Ý€Ì’9Z”"­&•Ì À°1({ž[ûž]ؼ¸ è+‚¢Ë+º+lÎHâѽ‹›/»ð‰nˆoR·©Ò m„6R bN«ÎòÀö[Z)ô‡™Ö•A¥%¯¬< " 13´€ 2¸ptPرëЉQ2\1þûyFGõÏ­NŽ]r¦±tw<ùÌÂÞ#‹ÏoZ»ê7S7¤vüQ"RȪ´­ÐäB.™Ö„ÖœR mŒL©æŠV¦F6§˜Ñ´‚hFUYÌÂýí?yü0ÆØgt`|8°B 7.6®ÿ3‹ÍÏ{;ydb v˜“XsØ<´2N8á·ö0ÃqY?óŒfza\ï´!þºÞ9¡züTŒr¥;þ¿ðÓÍÒO9ÖÞèø7ƒŒc‚2~Ÿieü…8]¿‘Ÿ†Ñ‰blEËœ ç|µôÿÆþ\އÂÁ—IEND®B`‚pygtk-2.24.0/examples/pygtk-demo/demos/images/gnome-gimp.png0000644000175000017500000000652211545325345020711 00000000000000‰PNG  IHDR00Wù‡gAMA† 1è–_ IDATxÚíYkŒ]ÕuþÖ>¯{ï9wÞ¶gllÏcÌ#¿ ŸÏǯô _Q¬Ü¹ŸuÔ7­êu„p,+çÒ ô÷ˆk,ðËô !Ä]›×?¶ûáíw ˆ ˆ@ôÑïÒu Ü´ryñ™¿ýÓý=>ÙÙ‘/$~IDhxùÀÐm›Æ~¿G‰È±Óþü=fR.êÛùwóÍ'{Ë¡C"_"ÿ#aŸ¢×Ûýð¶¯cv*­KDäv€ €Ü‚ÎõVK’6»žWztçÖïlÚ0úá[Þ;à Á.ô 9ñÿ<ckGn¿çÎß°l¾R;yêì介~¿ &€ð/ûÞxóÔ™ ±µÃÿøí§~w¯ç:¾Â$\"ò:ÖAnçÿ(©EðëFWŽ~ùñž#AcR)Ä­ä4Ÿˆ\‚¥OKs{&¥–Rÿ@*=tÓªåÏüÁWŸ|B$ÈBøDäàp-‹xgp 7züK÷~Ûô”RH©¦™ àÑ¢rW\OBy¤ÑñŸŸžÛóÈöÇ“4+þîå+ÝŸŸüè®ë‰÷~úßxëWQ,øÐZ`ïo·l¼ÅR„Zõ2Þø‰Çß-»Žv´ hÉÐJC ­µžƒg@ 0`Àæì¹éÎOÌ\!°8 3˜™Áv3ûX ëºëÃ0üzE_s]÷^fv™yÚó\ñoÿú£·„<øöÛïЦM›°zÍü „óçÎà¾ñç^¹Ú0´ÖðƒÖo¸–-[‰Ç~ c8—…ÔȤD–IdR!ËÒ,­”êáj­9ûÞÑic´Äêœ_[6#)fÑžçݼaÆïmÞ¼ù!!Dqbb‚§¦¦¾Çñ?=þȶKõF|çþýûñâ‹/b``{öìÁ·Þ5kÇJýûöáðáÃÇ–-[ µÆªÕëP*¡V™µR1ÐZ[ðJçz3ˆWp’d•ŸþÙû™T©M€d† ˜óldS*wx===¿¾mÛ¶GÆÇǽf³Io¾ù&Åq<†¥?öƒÀ­Õªxå•Wh~~ív›™iš ·^{m?â8¦àرcüꫯBJ‰V«Ï©¶“¡•‚R R*(£Á h®Ö’ƱŸ='¥’20I.gN;–ïH¨C ìyÞýQy…Bív»ãr'šœ©Ñ'ó³Ïþ=·Z víÚ…F£3'`õØF´Ûm<óÌ3˜™™Áž={ešÍ&’$A;IÐI¹J(­ò{»Ëf0$©’GŸ¹¤”V (mb 0V:Ÿð@”rhrr‡B£ÑÀìì,„þ_ÄÑ£GP,Å¡ÿ…‰s¿@«>‡áÕq߃aëÖ­\«ÕðÔSO¡Ñh Ýn£R¹Œf}ÚæuÕ™ÚÀ0ÀlÎ#óôÙ©T*­µ-ðuM0·8O*Ü…””²=== fF–ehµZ(•Jˆ¢ˆ¢(9çÏÂÌô9¸Žá€€‰3'0¶nž~úi(¥RJT« 8{ê}°Î ”^ô‚Ö Ã &òØàV’fX &  fg“se×’Ð3Ÿ­×ë|߇ïûâ(B…p ÑhÆPÚ‡çûðáoìÿÊ}+àex~€´ÝÂÔ…SH“Jk´Zm´³ ÆÆÛÔI¶Úš¯ÔUšÉ@BÓfœU€̈¯_éLk½ßqœßaæ¢çyÃða!mU'mhÙ€=Ž`6`f,Ì¥? V¥lÆÉ$æj ApY)å›rðÔ‡s1€„rÍ×í¬è€oÛ}©c}ÓÉž‹i4˲wÇùaE{{zz¢0 Q.GÃ¥bóÏCÉZIÈT¡PÈày>èÚ=µ­erðJkLL]„TŒþ¾¤I¼¸‰q¾3ñôÌ|–´³€fnqTòÉuþxðÊ+ÁŒ€ÖºZ©Tž £(ð…Ja I\C³¾Y”V AAƒ™lI§Hcëš¶Ìp¹Ò‘‡ÁÁ2z˦š Íy5@Œ4“<5}©nÁב˦p•õ®Mëªà?q ‰ãx®^¯Š¢R{dyÿÝZ§…¹™IÌΜG&SH©rk@+©²üÄ„ÔnNõF ³s—qnb–î¹}3ÆV£¸íÕZZk”RæÄÉóÕv;[P!`„iÓfÌ[µºÎü¿`fŠã¸9;;{xýèÐHàêÛÛIS¤iFJ*è¼â Ci©²T¡ÕJ0;WÁôÌ<.^Z@’dèé-“ç»(øBˆå½ú£¡/ÐSt‰zÍÈ@ ´n/ë5̘jgò<€9ëŽþ•ÿ‰Ó]ë` ÀÛ¼qôÑLéß |ï¾,ËHÏ6Œ¸Õ†ì”B T,¢T* ·7BO¡¿¿Ê=ŠÅ"šÍSg±r0äÑ}ÜßS®K0H3‰…z‚jSÖÏUÝÚÁƒÿ¬^¯ŸôuWuú™~NLWņ̃ñëóñ©Žÿ÷0iÿORÑIEND®B`‚pygtk-2.24.0/examples/pygtk-demo/demos/images/gnome-calendar.png0000644000175000017500000000530311545325345021522 00000000000000‰PNG  IHDR00Wù‡gAMA† 1è–_ zIDATxÚí™]lWÇwvvwÖñÆÞÆNvc7ޓ֤¡}ˆB‘òÐ"TDA¨ VT­è‡¢Ò¨¼ òQ Ayªh¥‚à)•BB ŠRˆª>Ñ Tb'µó¹‰¿¿âÙ]Û;wwfîåaïìŽ7N²*ªD®u5³ã™;çÎÿœû¿wàN»Óî´;íNûnân“þ¤·0¨;ôÿ€èÀx½É}â†ë°?&ÃEÚÌx± …ôÍ@tàwßù¦RJ£µ"T!õ@QW …@ a „H Í_(®yJÀ6'C"™"aÛ$ì ËBûuüZ ß÷ ”BiM*ü ¤*=ܪD©;ÀÏweúBB­ E*öãˆÈes8ÝN£Û2H)A6žûÁË/éOïèãù×^Žã˜ÁZãJ)[?J%èíà•#/h´ÆÊl°34ç*Àê€ÒøaH†(­ÄÐω|>Ïêê*¡c76º $2äïÙ'\O6.8y}ìàB‘¹·ßÆ1€¾úÜaá…ŠÕÔ‘Êmãs‡u™'¬X¿ aH B|r÷ן£P(J¥(^)R¯Ô‘R¶¼´€ÔÕòúšD–J”NžDΗ^ä݈¢aîýòc_ÛûõkG-VVW6l ·í¶|êé#bhǶm†!nÅe~y¾e 9Fhfªòƒ¡ÛA^GÎÏ#‹ã”ÆÆ7Ð)rÀpðø¾$^<|˜þîñ]À ÙÞQøJ¡”"“Ìpyò2•• îªK­V£^­oð¸ $ŽíÄʈ†œà C÷;QØ{üI¤ÓÈ¥nÏc‹ë2}ü8ŸÙÚ­ôÎ;¿r€–k€ß ᇠLÙd´Gíàui²ëëÈ ãà8ƃ@ ñ"Z!§Š&7Ú—Ö½@^x¾Oÿì,kÕ*Ëóóœ)-l À]€o[¹€fMöƒ¥Cz8@oäܸ ¯K‰;7ÇÄ™ vïÛÝ(d6LJããxà½h-€œ©`µ¿¿Oèû¬•ËŒ—]í5êMØdU`ÎPHw@…„ª1’c; â9¦âD5#Mœ™@.}@îþ²7¾Övg«)â:Åç?€çyäóyF+CüëÜ ?ùí l÷ÖõSÏKôl ð=ŸÉË“¤R)¶/¢¶fY˜˜àZ©Ä)ßÇJgÈõäDeYZXbbGëFÐíç@oÐ84©ÓÛÛËÞ½¬­­á¤ÓX5ŸååeÖì!Jå:­ÉÌO“àêûïS)—¹¸¶N)‘ ¯¿‘‘òù<‰DËBˆÍ KsIjßb­£3­ukò±ÁénH‚Lƒ£-êÀ¶mÛ¨«:=çÏS­×¹zõ*ÊRìܽ“|`áž=Ët*Eya¹•ÎÙî,ÃCà  è!Z£ ‰˜×o™í‹pݘ´hoT£ã8­óxïvØ}ÏnºººH%möÝ¿ƒŸ=ÈÈÐõ‹çyøÕW©{K®ËDbmé&¿#ÏÀÀéTù]‹8¬X[7Ë뢠…Fk´c;¢¡ã$N·Ó(jAã7@.›kF)“Ì`Û6IÛfïÐ^r¹ 'þJßð0Çßxƒ]<ÂGî 3W®ÒßÛËž={ÈårXV˧ Ñô§h¡o6ëödÖZ£ôƆHŒI)7H Ä”W­5™L†ÕÙz³YæGG™>wŽ3cc¯ûd³Y†v 180Hº+Mm½Ö¢‚@ÄìQ›íNt¥µR|ï™'õÈCÜî^’øé_áéC‘ïïgzt”%×eTk–ì Z«25;…5¿‘ÑIX£ƒÂØ®h¡&û”B¯ûŠrÝçÄ»ÇtÛ[ˆjE“ºZj…c'¸«Ëak*Í®áa1yêK®ËTu]Tõ🰺Æ%o©ñ³€nl(r ñ ò~ض½rCÇ4 „¸Éd'„Æ„:o!:zûçGîc¥XdòÂ&«ëzÂI“ô} !Ò©¤¶–h+ß´Ö-úGº7 ÝI4À[ïÏ=À`зšÅµ $M©³ceΪ_Ü¿ûž'F¾ýÑ{ï1>7wù—ccïÛ€^óž²kž1.Z°\–ÌÒ10ãŨNVdÚÜëfÀº9v)c|tŒ¶=‘Ž<úè 3ccLÎÌ”Ž‹¿1ãE94yÚµ0nzÅ“æz=Duøœ•‡:°3<êQ$" ÖSÞWŸ›¾4;»òûññ×Öjfyš1*À¤Qš‘XócÝ3ï“4‹vËøÛ‰@Ôj1/E†Æ£`Ç€X_9\)—ùÛ•+¯—J3Æø.3æªÑø3ÀŠ3¢†£Mݼ7ê·M!Ñ$h§b/³ã}½R™›™ùÃ_&'OÛͺÖ2ž]®Æt¾jKÒvqúè–NëlË|Ã"ßôDL£Ø±ódlû/º¾Øe¶G2&Ÿ&MÖŒ1A[¹Œz‹NР“m½É¹Ž½È2ƒFjm«+–´«¦ÌÏWqí3m<²íçú¶·×Ûô‡Š½°ý£„µIÔt¬¢”Ly\0×T[ŽÅ›ÚdK]ý·_ht[^´ oð•ÆQaÅPHÝäÓÓÍŽû7²ö1­Xy L2ê[|ôÓ|šh[ÏÞêÃ^Çí? Äž®™ðÄöIEND®B`‚pygtk-2.24.0/examples/pygtk-demo/demos/images/background.jpg0000644000175000017500000005331311545325345020765 00000000000000ÿØÿàJFIFHHÿþCreated with The GIMPÿÛC    $.' ",#(7),01444'9=82<.342ÿÛC  2!!22222222222222222222222222222222222222222222222222ÿÀ"ÿÄÿÄ8!1AQ"a2q#B‘R¡3±ÁrÑáðb¢ñ‚C²ÿÄÿÄ1ÿÚ ?ùØT[C ŽGzFÈÜh ÊŽè¤^¶‚¨hÐð|Ó lŒ‹F¤T€{¢æ(Äv×4 ùTQúž|Q •¡KH§Âylém¸Uw$‰¨¦"G¿4©îd€vEL¹ C1ÔÿH¦€‹€2;‘ÞY $É=«¶â3Yø4Àçp€£»V”M•´'UDýkYR#‰¢ŠB@X±ã˜§®X"A™8¦$ërBÁ¨©“ K„ö¥Ð¸dŒˆÖ©Þ1`Nˆ¢ÙpË›ŽMTDL‹î~)‚©oÏŠ%²%ýFQ"™-¢Ã³³ß<šŠÐP Ä\ˆŽ(žÃ@E/¦z––g[}ãST´¨€ùËÀª€ª-¡ˆÉŒ–¥ïpª¸Dìš* ¨„‡$÷¢EÁ‘V¶$~ê7U ›`Ð {ÐU-yZàTê»§ÔkŠ :ÔƒD!7@`5²{~(1`v¿ØÖ²0±™úݤ}«Næ[®åͰP‹b"7"¢Œ¾1—Ð ˆ²rfV ®ÀÁ$O€œîo~ÕP¨e½5'€HÝîq§ñTf÷ËÚ †õþ±’ÈXE–g˜ ¨U27è?½‚)÷7ö¦fôWõ]Û‰?ù¬«mos9ùŸÅ ‹hb$ÈïCÙYQÝ‹ÖÐG‰ –-3€]îÉ:ŠsRH;Õ½ìX¨f$€}ôY­Ú¶B[P£æ‘ºr$žGª NïÍ,ŸT4hx>iƒ…¶FE£R*@=Ñsb;kš|‹*(ýO>(„ÊáP¥€ˆ$S„ ‚a<¶t„6‚Ü*»’DÔS £ßšT÷²@;"¦\!˜ê¤S@EÀÈï@ˆG¬’džÕÛq¬ü`s¸@@ÑÝ«J&ÊÚƪ¢~µ¬ƒ)ÄÑE! ,XñÌS‚×, ̉Su¹!`ÔTÉ…%‡B{Rè\2FDkTï°'DQ ‰l¸eÍÇ&ª ¢&EŽw?ŒÁT·çÅÙþ£(L–ÑaÙÙ‚ïžME!G*@u&cŠe·mT,HÉæ€~(EÅ9#Q@ fëlŸµ=ËÊ! …Ȭ¶ò-î#(š2¨!Ió@¶Ý ÂV0 Áý­n` 9ÆÀÉÐ ™ºÑ¢ [—{KHâ¨ýBÎôOŠKކâ[µp+³Ì[`WEë-›ŽY- H’[ïÞªb¡‚ÌDI;&¤Q˜ÀEQäŠ(Äté’º“î9ôàqãɨ C*•WsÄÒª"c7™,DÁ Ì¶Üì@ù¦Æ@rÅLh ¦@] LQ‘X‚÷îdP’É,<ÿȱP ÐøB&æ Z õP& ˜<ÓûÜcÅ1#Sßâ¤?SÙ$ÀÞµTlf4cÍ'Ð…TnH rŦ8ì)D ÔsF%x"GsºðèqàÀì©Â— žcš¦Á5Í*¶³0#tåÄr?Šbà3*¸ÍJÒÿ˜k÷ ð©n€Ú'æŸÐ{BÒÝ%²Þ*œ}ê FGÀâœ6"ñ €Hó½Ö¡,@-ò8¨¦FÈãïN<šŠ2©UpX÷—Kê”&õïv^*¡¬†ôÝ=„F´­se‹{ˆûÒ]éìtß­îeµ-胯üWeç·ÓÚqÎMû@šæ¿~Ût—{‚ ŠÑÔu-«ÑÒ³µÍqmÛàAä×jõXÚÀ&O„5È@W Úy ÂÕÁp*ʾ;šhrI =èC!ÉýÇ9•æg(Çš ÒÞÐ3X:4™Ÿš6P ³cŠÒË h46ÕPº1:Á¦Hd{ ED†nÇÁ¢H˜ù¨¬å‚Ù:óX¸E‘; P®n-Ç “Oƒ‘îÖZxª…úB¨2Õ‘1·#°ÿµ>H’¨ÒÝÏ1HÓýŽê(3b]î0…H¤é:TêɽԶ(L­¿#É¥¼¢ëZéÆÃ¹ÈÏaÍ{im-ZKP›m?¶«.uèºc­€ʯïRK¾‡T-[¶nÜpX3 éký-¶9\xñ ½C¿SnèDÁS³Ú£Nr—Q¦ê(ù~(`K ¸š·UuQv¯Ü)©aseTžIæƒ2)e§ø+éþaº{$•W>à§;U ••Âߎi€+ðPÊý꣰t=´ :{p8öƒULÚÖ²Z*kÕ$MÅyð Nç_qÕÒÊâ&^MF—¿y:Nšå¶½“±¦¼äŘ0P£ˆÇtUBuÎH=šY’wÏzˆÌˆ%‹)•PzÌpX×!\\'jt9æƒ WÀ\«*øîi¡É$€ ÷¡ ‡'÷ä W™œ Ohl/K{@Í`èÒd~h`Ù@2ÌyŽ)ÿK,- ÐÛUBèÄè˜} ‘ì)»‰ c梳–gdëÍbáDHì)B¹¸·‚@M>G»Yh âª-剃<ÖÂæ^ëe{ŒZgñMmË-ÇHUŸ'¼Pfh ÔPÐÄÚõ#Œ´9õg¶ª; Ù'G½H€’ÀÆØŠ¨Ïe]Š»–V½.’_¥¶%Dk…¹ŸT°ó¨ o€bÇúvh:úÛ`² º¯cûMs\`Ph99ù¤ ~á•°@=ØÇö A[%ÛǸ:ž*)½÷>cE© lFÜÉâ™ÉÍH2æ'À4æ§l—£<¹:+^%m9Æ·LätöU@÷üš”QI™ ŒJ)Ðù »Û ƒÁÚr?Š»=ÛÖú{.© ’Þ?[ ô–ÔÞpÀ˜9©-Æ7’ÏMmn:ÉbÜ]·.Û»ÕYÚ!‚wUã¶ ÉËƒÍ <˜åÿÇÅ]ÑÜzçFÚ¤î*€2'B¢²«2cnÒö˜¬RÞ‹9b7£ýâ…²}Ïí÷HŸ™=ósxðsó@m*-ëW[;“æ½1 ú¬à~ªòðp¡Äò *ûΉòhã¼îX悳¸75,÷4‹$‰âx5FЊˆ¶¤“ÃËPg11ø4 ±ˆ1Þ‹LSöª€ˆ.ÀÉ:í ™> Pˤvu9"t4OdÛ|Ä‹iíÙí®õ†,èHçâŠ"˜Ù=Ϫ1K¶Ö2R{οŠXuö2OôäÄž>k)!8‚wÄTPd yb`Ï5°¹—ºÙ^ã™üS[rËqÒggÉïšÈ4[CkÔŽ2ÐçÔvžÚ¨ì+dLõ FKb*£=•v*îYXD ôºI~–Ú@•A®æ}RÃ΢¼V‹éÙ ëëm‚È‚èb½í5Íq€U@} äçæ5û†VÁ÷cÚl—lKàêx¨¦÷Üú@U¦@-±r7'Šg$h?5 ˘ŸÐSš²\zŒòäèx­x•´äsÝ3‘ÓÙUÜòhQDe&vf‚1(H§Cæ‚ïl6SiÈ@8þ("ì÷o[é캤‚KxüUnƒÒ[SyÃ`椷ÞK=5µ¸ë%‹pvÜh»nïUd h„B ÝTsŒZØ+'.40Lòc—ÿwGqëœj“¸¨È Š,énØ·°[©«—æ>ÂªŠŠ¹bÞuAžà¶¡@‰&;P"©ô˜1P@ˆð*‰"I<®¢—Ó,CL~ŸšGéÿÌuInããk¡ÜÕF·ƒ Ž-±ÁªS)wü §êzfé¬ÚµÓZv ?Wæ¤Èöî0¸XÜb¢š}ØhäI¥KVñ¬ÁГ³6> dOšƒlË@#šKu Ëh€?{öHDH #šÀŸE@*K 11A…»s¶ ÄêˆÀËæY  v, V‡m–ÁPó ÉÇäö®fêl(—Û]»*“?o£\[}:é PÌ;ë-€ª¶­°KK¨A Ô?á‡;—®eFŒIÖ€¯ImäRAPǽrÝ«CñI~àéÖÊçý5p«Y³eíàK‚}Ìg½@ v Ó•BÊ$åªwöª!| ¬¤eÇÔ r1ã½ óŽÜS¤¢›…1v³3ª(* ‰ #±=èåÁb'KSIrÎNɱ‚K¸yø T—nÞŒÖfU"u:¬~(¢ ½[HÒ/šRI2I3â²17)’ÚŠÀb§Oo­Œ`L±ç½{€(µi3¸tk J‡+ä;!Ò´áÑqžýÍ*!yÙ€LÕBÉ+…cÇÚŸ#&Êc*& РÀ±¸ÅGQ@ÚBÀ‚û'¸¬Qša¤0ˆ=«I6t&¶d‘ ÆäЍ,énØ·°[©«—æ>ÂªŠŠ¹bÞuAžà¶¡@‰&;TR*ŸIƒ¨’$“Êê)}2Ä1dÇáyù¤~ŸüÇT–î>6±:ÍTkx0¸âÐ`¨õ2—|; ~§¦nšÍ«]5§`Óõp>jLnã …À&*)§ÝˆöŽDšTµošÌ 0+0#cêDù H6Ì´9 ·P̶ˆ÷¿aT„@D€ ’9¬ ôT x°Ó[·;bÜN¨Œ ¾e˜÷ñJbÊ`vÐlU2 œ~Ojæn¦Áb‰qµÛ²©3ñ1Fú5Å·Ó®• ðñ^²Ø «jÛ´º„ÍAÃþs¹zàFThÄh ô–ÞE$ {Ñ -Ú´?—î`®q?ÓQ§ µ›6^Þ¸'ÜÆ{Ôb ÐÙÝ9T, òNZ§qoj¢ÀªÊX»éÖ¹–Ý`·mæå­É×< v!m®+;ÔzŒmÙw$·üÔUX’˜È˜ÜR[{ª iµ¶.9“Z:‹ªnž‘aŒ‰p¦+§¡±q÷¹Ü#KûG‰ªŠdëxº^=EИTñ\îÖÞ×®¯qîð̇šõz{NÁ˜ÀÅxaÿÚ¼ÁuÖze6Ŷ’qÖ¦¢¥é ÇrO›À*Ûq͹“le5Å\ÙÇÕ(UQƒuÜë|QƒÞµÄK\r} óAƒ(8éî°½¾ô3,˜Êg[ª;„¶GÞ‘WäÓ‘Ž8º €=È=ªÖ:¯M$ “ÆÏGPÁî)vÜ(â›@sÜÍŸ¬ºW °SûGšæ$“=·C1ëÔ$÷Ûfi_—ñUŠM²àmާŠV¦DÿÓºgp-¬dDkÒ5Ì' Aíê(=чý±TqéY$Ö·mî÷ÕØ3ê å Ï ÄóU ‰ŠfvÀ"”qðS¯ÜÞ*`›ìBŽÝ?…‡»ÔOy­ZP=¨cŸ&‚ªg3ˆîh¹« æLE ¶ÅŽ­,•»s‘1âkYó æN¾(6*<˜¬ 7±X sOšÚÛ>É“É'“A-’œ ’EIv oæ+ DóLÌbkâ7S 3¦LA“QL°WÚitÏ„äØö¦! >aI˜ƒÚƒ*ÙéÊ›–=ÍT5¨[ ¡?÷ K’“ð(Œ[ÙÃf{ŠP™)9·ÜÏ?jŠ»éÖ¹–Ý`·mæå­É×< v!m®+;ÔzŒmÙw$·üÐU‰)Œ‰Å%°÷º –˜Û[`ã™5£¨º¦ééÈ— bºz_{‘Â4¿´xš¨¦N·‹¥ãÔ] €õOÎímízê÷ï Àhy¯W§´ìŒ W†ý«Ì]g¦Sl[i'jj*^ Üw$ðì)°|­°GÐk™0ÆPc\P…Íœ}Q€…Uðh0']ηÅØ=ë\@TµÇ GÒ42ƒŽžá; ÛïAÃ2ÉŒ¦uº£±HKaTxéqM9àP‹ È܃ڭcªôÒJ )íà¶A ÃÉmîƒ>¶™þõP f ú{Ñ(¸É^ò>ôÃPHÊ>)L´â<ø¨¥À9Õ²XžAYíÛE_VåÂIúTóT̘ÅŽbiQQ=Øï·z¨æ|,î¨ò2P¤Š*¨P\dR[ÊöûÑy$Nñ⢂(Y$“q»v•ˆE-?Þ¶6Ën\8šÆÒ}^³¦wºoômÉc“ ŒÑ´ŠÜ{y1<·ŠM;’¤°_Š¡KŽL¬5½P¯qÐâ`ö¥°5_Ô?¸™¤[=KtÉt2æäâ„D ¬¡Eç²H/ÉHïUIpI9æh,úsÚháí€ÐO$ Fd´Œå‚¨å›‘iBÁKez›½C„)l/´’'~)S©|¥Ó^aÌâ?ä×_Afå»n€¬î^'.õåæQqÚ%—\Tî„Ôÿ2nÜ{8ûWu¬¯2B†|Wut"ÊÛS÷w¨©1ITªD F§æ³bÙ'˜S†Ú c1.fƒx&w1@'´–O`)‹Æ‚’#°¢$dý¢ªijOon襋EŒ‚ùÙ¥´F;$’IŸÍ1_vY“<ÍE8d™ÀGoµ#31>Õ¸ãuŽ=þO4¶ðíÞ¡Ô¨{Jè81ç{®„'…Ùþk*CNF š¨ô‚‹¬Î¾Ûc‚Üš£„A$•FÔ÷5À½Uà°ªF‡Š•ë¯pÎXž7ÅHµÓÔõÃf׶ߟÝ\6Ðvã‚Kq>)íà¶A ÃÉmîƒ>¶™þõP f ú{Ñ(¸É^ò>ôÃPHÊ>)L´â<ø¨¥À9Õ²XžAYíÛE_VåÂIúTóT̘ÅŽbiQQ=Øï·z¨æ|,î¨ò2P¤Š*¨P\dR[ÊöûÑy$Nñ⢂(Y$“q»v•ˆE-?Þ¶6Ën\8šÆÒ}^³¦wºoômÉc“ ŒÑ´ŠÜ{y1<·ŠM;’¤°_Š¡KŽL¬5½P¯qÐâ`ö¥°5_Ô?¸™¤[=KtÉt2æäâ„D ¬¡Eç²H/ÉHïUP…Ü÷¥w-¨“P!QCƒºÊ¢²µÌf3Tÿ“@ÊŽë‘!WÿwH#d+]c¡@|Õ\¡ !Gj[èâ‡SÀïA’Ù©'#ãµDÙ~ÜP/€(¼ óÉ¥ôÜúŒH;ÐPÈAŽFÍ`Z vyjpél€ž|Ð’Nê)I¹væ6öcm:Z`B«±&Zy¬€¸t/µì?wæ‹Yic &cUq?¨µ< )mÛ‹¢ã6À «ªå1Qd%N4gL)À–c‘h¥u gžP¸:~³©2xdñF×A{¨Qwª|Wœ$Àÿ½5‹g¨ÿE3éôè ž í^ª#»F•&Y›ÅZGôVí'é]¸4:ì *õØnžÕ’×Ã7s&»’ý•Ì-ÀÄ+›§{Vo]{¿¨÷"cŠƒ z‡ÜtjFÚ¿UÒÛ>à\öÿEtõoníÑsÓE§Z©‚ìÏé®*?UGªÈálb¿õRºª.w :Ë÷W%¾²ôD&‡1Q{—z‹Ì ã÷MHµÑw¨wµn8^Z¹æè lóâ)ñ–$ûˆÔÏ5‚¢œˆ“þÔ âZ|S¯?ÿ4€!-+ÉíªV¤Ä( \Ãĉæ„1Y% wâi•-ú›A€‘³LU]¶ax XÒ-¡ãã½+–r}6UOêj£º äöR Viº¾a*¢JÂݲ×OrP%Å Yై‰5@팪b;H@2\" ö e(PHÏzWp"Ú‰1ÅÕt8; ,ª++\Æc5Où4 ¨î¹÷t‚6BµÖ:4ÍUÊrv¥·þŽ(qU<ô- ’r>;Q„M‘'íÅø‹Àß<š_IÝϨÁ‰½õ ”älÖ §g–§–Ì(‰çÍ $›—ncof6Ó¥¦„*»e§šÈ ‡BøÛ^Ã÷~h¹‘P:f5Qqú‰×ûSÀÁØ–ݸº.3l º®QBTásFtœ f9ŠWP–yàEkƒ§é :“'€&Omtº…z§ÅyÂLûÓX¶zñS>ŸN€™àžÕê¢;´iRe™¼U¤q/EnÒ~•Ûƒ@ƒ¡®ÀÒ¯Q†éíY-qL3q÷2k¹/Ù\ÂÜ A⹺wµfõ×»úqò&8¨9¤3,HÏâ²”ÁRäÑgÌ,4ÁUWP\÷ P@B2b`˜¬¨KF_oÿimŸP³/кüÕ†#góA°USX÷<ÐEs9'lR3’Ø) ?{xÈ€ªmƧE¨6#7XZ.ñÿV«Ç÷@ø€©`'#¿jn€£jiäÅ:&µÈ,Ü/Š’@~àшPÄ-»däO4°öžü4Éh#z—}ÍûAàRÜcé ÜÔVP™$±¬@Ä’GŽiÒÜ ˆXüŸµMšÐ0VGe‰ §Gí¼íŽî€gä+Òu bãÜ00öÍy–ДËÒkpu'cñE܈n³ ˆ=¦‚v‘ͼdmÏ'íM‚Ì–2<Ó\!-„š_NB+¹ ïâª&–’àä/e¬ä'`+’&5°Êf"¢” *TòÝé€[i‚‚;±=éCûHTãs©7qbX[>æË€<8fŲI“&g·j ¸¬GÚŽ0YV  ±üÐ U€´P{¨ª2aæ±¶ 2y ÿ5T[]?‚ÞL LÝì†3Åõ$Åæîrú¨ ã; j95PñÐPX2ìÁÖÿš¢ZœÜ3qÈÐ'ŠPÒ°ÛiÔR/¾{{@Ы@HЀ9¡l*— ³@©¢Tæ€ÈfX ŸÅ!e)‚¤É¢2ϘXþi‚ª® ¹ï@ €„*dÄÁ1YP–Œ0,¾ßþÒÛ>¡f_¡uùª$# FÏæƒ`ª¦ ±îy ŠærN>ؤg%°R~öð)‘U 2ÛN‹PlG n°´2,]ãþ­V!îð)RÀ.NG~Ô ÝG:ÕÓÉŠtLkY¸_$€ýÁ£*¡ˆ[vÉÈ$žh aí=ùi’ÐFõ.û›öƒÀ¥¸ÇÓ @'¹¨¬ 02IcX‰$Ó¥¸@ ±ù?j›5 `¬ŽËANÛyÛÝÏÈW¤êÅǸ`aíšó-¡)—¤ÖàêNÇ⋹!Ýf{Mí#›xÈÛžOÚ› ™,dy¦¸B[9?4¾œ„WrAÞ#ÅT#çýé™ñ´Ÿ[÷ð<ÑI,ØÉ ÌÖ²î&ãk]……@Úÿ¥oÇî56b`lÏzir‚AT¾«" Wm šŠ)eTÞ{ ¢î]·’àP. DöŠÓ ±ßµŒY`ix§ ŠˆkBh‚HHÝÚ¹ aìHù¤BC.91<)À" M*ã™n@ì)Š§Ò¤ªù¥:IàŠ×ÜÁvsð)•àP'F¡bÅΦí˾¢€†Dîº.8±Ô½›„¤hD½T)õŽÉOïHKA”“ÿƽ‰ýL|QÌ·=¢€*i¸0 ÚvMf†¸[‡‘ªÁ™î4ÈÑæƒÈ" óÅEb‘qT,À–,x™Àb!Œx§[aÜ<‘D2'Ý(#›%§3Ìê©eZÝ«aS'DÐÌ™÷4fú–}ǹ?ö %ýÝÉæuqö©ÙS\È‚ÿ4ÞÕö)‰÷j˜ S”ƒö©JäB‘äÓ$ð~ kL=b#@’HàÐ9";…$½m®”7ƒ±w+Ø"µÇ¨ÿ“Ú©aíÞéâÛ<¶ò{UC2~iY³.OÕíô­Ô/­m–݆~þ+”•õ• y˜ p…QqNñž)’Ù¶ÅÜU¿ú0S Wžäö£%܄ɀÑ'QXHùÿzGf|m'Öýü4RK62Bó5¬†E{…I¸Ú×aU[kþ•¿¸ÔÙˆe³=é¥Ê Pú¬ˆ%]´€@j(¥”ESxIì‚‹¹vÞJ@¸|Ú+L6Ç~Ô 1e¥âœ6( ­ ¢ " owh<懰I#æ‘ ¸äÄò@§ˆ,@ñ=è°Yh'™Š¨Ìù4¨ Že¹°¦*ŸJ’«æ”é$€j+_sÙÏÀ¦Tt{@…‹:›·.úŠQºè¸âÇRönn‘¡>õP§Ö;%?½!-ROÿvö'õ1ñG0ÜöЍY¦àÀ/iÙ5šànF«g¸Ó#Gš _ ˆ@'Ïå zk¡ñþôª2V·ù¬6ëò;Љ_“@×a”,kÄš/Ì·Qwö7¸&‹…Zá– FFPAÌÜÇÄÏÍbÁ-åŒjÍ4@æb;šê^¨fŒØ1Vœjjã©lŒ^^æ ~£ÅsõÝEGÓ´÷0òßÕRê:‡½qò:èWÆæ†äïñL¬…€¹2 íX7ëfAã·jı8Àv©ººbààn‚¦ŽÔ…”!ð5×3Œ»Ð¶ªí‘"ð<šRT´— èUmo6cŒìÚµ§Å7ošV`·¸|мdÇf"‰Ç†MÑJ9 ûUb9“³=¨-rÖ¡¼)¬`)0&55—‚<5‹É“@]ÔD˜=kp—äl?© -rZ‚ñD†¸RPpuUMÕ#£ú`ÌlÿÅs¢ÂÄkÅ mô‡²Í7¦ʆk’½¼ÔV@5½HΪ 1€<Ö£Ûž$P"Ú–LGv (¬Iv©Í,”<˜¢ 2+9lˆÚŠ>ÂpÇÇ÷ @WC)"ŽKh©›À¦wÁUÐàIk,¶¤1‘ÙÕs¼Ée[P; šÝK×ì±Kމ;dÑì 5„Ußó7¥ÑL[NAù¯^Ò.L)ˆâ­Gš©i•½ÿ2í$p/­Ë ¶ÙA¸ŠëêUÑEë(ªåÂñ :2.ÿ™kÎìÓvûR«•¬Ýf‡¸ª½ÀïL¨6µï&°’IçŠX8ÂÀ¨0$¹Ê‘W×¹EµÛ·üQvy[iõ¾ ½Q“Ó²-[>3?5Q4´—:ëvÙ&Ú&A|šôÂǦ‚Oí¯«5´y"°B×0[Ä즔Eâµ·gk‡Pª€‹é³a‰1Ë+{ÆÈü °dìÖÉs °×iÿŠŠÊp]ýGTÐyß>h[L¦ãižþ(›~øY'ãT qõ€Û588*ª˜4H>¦K—mq@æI¯3?PI¥º“i¶8Qd¾¢ÄyíDÎS"*+³¸N"`ÒÜÂÚ€$ì®ôÂYÄ’q$qYRì´‹käwª†°ˆnƒx ëNLDOsA*\‘î'‰â)ÔBv™QJ¤™}(åh”B/;$Ñ@Ø–h¶ªl@Ñ$·a@@UB˜<‘²híT@ŸÌÓ@ÜÐP(>Aø “–k-솟«’"¸cÀ(­arFºû¬×B¶ýÌ{&rV:ÜQHRˆnæ(ª2²N‚óÍ5±é£»!Mh@ì’qóA¤ÈÀ’DÍ1}ož` þõƒ¸ê£ˆ€4$RìÞ]N¨­¶d¸n>*_ó‘=ò¥´'“³@J;´gm7Ç53iñkÎÇ“ª¶ÔÂÆûòiDYLŒfO}TSçnÂB! NäÔкÛ÷!bL’;U’wpóK‰iÌPášÀ“¨ÝhŸ·j`c‘àhT´A ìrÑïA>™&Ic j¯‚}GCš@¯#µ¶Ð7sN•æ s²ŽÑ^òbmÛì#gtÀ1…âO4ÅËí‰ûT‹aÊ$UCúVä˜ànРð(9:Æ8ÙñQº.ÿ•oLÃs‘íö °!ÜAr#u€%d¿öÝV×øwOg¥7©’¬µÉÙ®{6îÜ›LîY¦()€.ZN¸ÿß4ºÊ&´À‰™>*a²¶² ‘À梪„ãäO4 +¶Õ@Y?šÎ]ä#Hƒµb˜&!'ûÕF°ˆnƒx ëNLDOsA*\‘î'‰â)ÔBv™QJ¤™}(åh”B/;$Ñ@Ø–h¶ªl@Ñ$·a@@UB˜<‘²híT@ŸÌÓ@ÜÐP(>Aø “–k-솟«’"¸cÀ(­arFºû¬×B¶ýÌ{&rV:ÜQHRˆnæ(ª2²N‚óÍ5±é£»!Mh@ì’qóA¤ÈÀ’DÍ1}ož` þõƒ¸ê£ˆ€4$RìÞ]N¨­¶d¸n>*_ó‘=ò¥´'“³@J;´gm7Ç53iñkÎÇ“ª¶ÔÂÆûòiDYLŒfO}TSçnÂB! NäÔкÛ÷!bL’;U’wpóK‰iÌPúÀPKr@£Š¸ Àñ:¬Êp¶Åf}Ü“MŠªª)àwóA;Œmâ¡ò-À#tm#(w{xp o\ºÒÞŸ´Õ™—fw'@ð*¡S6‚Š[„…ÖÉÐÞ™½úøæ™Y\‘­ÅE(¶UàÃTJ£2ûDòiƒŒ¤Œˆ46Ò ¾{UF ŽˆÌV ®Å‰“æf˜*:I“HM¶1ˆgGu×5l"“‘ïFB¨äî¦0Ŷ8Ñ&ÃGbüPJj&fh† ’vbŒp5Å!*ºÐ1¶êù\ƒÚ“CÑR}G$’tfi‚   d™Ù4„Ûc€ftwQMsVÂ)9ôd*ˆþNêc [c€M2l4v Å4¦¢ffH`É'f)ØÇ\R«©Ýn¯•È0= y4='ÔrI'CÅ+ÜcŽjqµ'zÕ'f6'ø¬>")[;öšËi[eN†¨ "-ëy1bF÷ÁŠÊT¡TŸ3DA&hýè°}¶×CB(µaR5õ–ëÁ™ãÅkŒVÑ`Ô§„~ $À$p?4PY˜ÌƒÇÛÿf˜ÈPƒTÌÇ!ˆäÆ©`" >hYsm4IÑOdžIïX’ ýõ?zP$   Í(ÆÕ²@˜˜?ì+*’Ç™žÔQ2Äi~4V.C\=»D*# @1£X¶™;k"’2mРF̬ï@S}‘–§SNÅ·1æ²Ê Pù"a@€;Áaˆ˜‰¦¸ø.õ޳΢•ÈM‚ *¡‰…bÍÞ?µZÕ¯FÑ%}íÍdìíãɬßTO ÌöšÌÊöÐH*ˆš, !Çj¨À¬¢¶'S·¨LÊâ>ÔÁ‚#Ç“Am»ì±EøïQZiîK*¬O>ß!mL ïDœl(ˆüÐSü:×§Òª²êûÉ®ä·vâŸMr?ÿÍyëuìÿ¤åOž&ŠuC†7±aÀíA×zòtÀ-xŸ©¸Âì÷ådž¸Ñšåî±2-§÷4 MÉøˆ %3yk„VÆÑ}¦DZˆÔIf ƒ9KjGjqÄp¤ž8¦xJ)ÜLÎéAuv¢"~‚Ìyn(õ¼˜±#{àÅe*P„*O™¢ “4~ôX¾Ûk¡¡ „Z°©úËõ`ÌñâµÆ+h°jS‹B?P`8š ¨,ÌfAãíÿ³Ld(AªfcÄrcT°H‹4,¹¶š $Æè§²O$÷¬IþúŸ½(’Ðf”cjÙ ÌLö•IcÌÏj(™b4¿Hš«!®Ý€¢† Ѭ[L‰‡5‘I6„hP#fVw )¾ÈËS©§bÛˆ˜óYeP(|ˆ° @à°ÄLDÓ\|zïYçQJä&ÁPƒD±fïÚ­j×£h’¾öæ²HvvqäÖoª'ŠŠQm D‚9èa#q +*;¢‘zÚñ4Ŧp ½Â9'B椑!w«{رPÌIûè³[µl„¶¡GÍ"!täI<ŽT$ßšY>¨hÐð|Ó lŒ‹F¤T€{¢æ(Äv×4 ùTQúž|Q •¡KH§Âylém¸Uw$‰¨¦"G¿4©îd€vEL¹ C1ÔÿH¦€‹€2;‘ÞY $É=«¶â3Yø4Àçp€£»V”M•´'UDýkYR#‰¢ŠB@X±ã˜§®X"A™8¦$ërBÁ¨©“ K„ö¥Ð¸dŒˆÖ©Þ1`Nˆ¢ÙpË›ŽMTDL‹î~)‚©oÏŠ%²%ýFQ"™-¢Ã³³ß<šŠÐP Ä\ˆŽ(žÃ@E/¦z––g[}ãST´¨€ùËÀª€ª-¡ˆÉŒ–¥ïpª¸Dìš* ¨„‡$÷¢EÁ‘V¶$~ê7U ›`Ð {ÐU-yZàTê»§ÔkŠ :ÔƒD!7@`5²{~(1`v¿ØÖ²0±™úݤ}«Næ[®åͰP‹b"7"¢Œ¾1—Ð ˆ²rfV ®ÀÁ$O€œîo~ÕP¨e½5'€HÝîq§ñTf÷ËÚ †õþ±’ÈXE–g˜ ¨U27è?½‚)÷7ö¦fôWõ]Û‰?ù¬«mos9ùŸÅ ‹hb$ÈïCÙYQÝ‹ÖÐG‰ –-3€]îÉ:ŠsRH;Õ½ìX¨f$€}ôY­Ú¶B[P£æ‘ºr$žGª NïÍ,ŸT4hx>iƒ…¶FE£R*@=Ñsb;kš|‹*(ýO>(„ÊáP¥€ˆ$S„ ‚a<¶t„6‚Ü*»’DÔS £ßšT÷²@;"¦\!˜ê¤S@EÀÈï@ˆG¬’džÕÛq¬ü`s¸@@ÑÝ«J&ÊÚƪ¢~µ¬ƒ)ÄÑE! ,XñÌS‚×, ̉Su¹!`ÔTÉ…%‡B{Rè\2FDkTï°'DQ ‰l¸eÍÇ&ª ¢&EŽw?ŒÁT·çÅÙþ£(L–ÑaÙÙ‚ïžME!G*@u&cŠe·mT,HÉæ€~(EÅ9#Q@ fëlŸµ=ËÊ! …Ȭ¶ò-î#(š2¨!Ió@¶Ý ÂV0 Áý­n` 9ÆÀÉÐ ™ºÑ¢ [—{KHâ¨ýBÎôOŠKކâ[µp+³Ì[`WEë-›ŽY- H’[ïÞªb¡‚ÌDI;&¤Q˜ÀEQäŠ(Äté’º“î9ôàqãɨ C*•WsÄÒª"c7™,DÁ Ì¶Üì@ù¦Æ@rÅLh ¦@] LQ‘X‚÷îdP’É,<ÿȱP ÐøB&æ Z õP& ˜<ÓûÜcÅ1#Sßâ¤?SÙ$ÀÞµTlf4cÍ'Ð…TnH rŦ8ì)D ÔsF%x"GsºðèqàÀì©Â— žcš¦Á5Í*¶³0#tåÄr?Šbà3*¸ÍJÒÿ˜k÷ ð©n€Ú'æŸÐ{BÒÝ%²Þ*œ}ê FGÀâœ6"ñ €Hó½Ö¡,@-ò8¨¦FÈãïN<šŠ2©UpX÷—Kê”&õïv^*¡¬†ôÝ=„F´­se‹{ˆûÒ]éìtß­îeµ-胯üWeç·ÓÚqÎMû@šæ¿~Ût—{‚ ŠÑÔu-«ÑÒ³µÍqmÛàAä×jõXÚÀ&O„5È@W Úy ÂÕÁp*ʾ;šhrI =èC!ÉýÇ9•æg(Çš ÒÞÐ3X:4™Ÿš6P ³cŠÒË h46ÕPº1:Á¦Hd{ ED†nÇÁ¢H˜ù¨¬å‚Ù:óX¸E‘; P®n-Ç “Oƒ‘îÖZxª…úB¨2Õ‘1·#°ÿµ>H’¨ÒÝÏ1HÓýŽê(3b]î0…H¤é:TêɽԶ(L­¿#É¥¼¢ëZéÆÃ¹ÈÏaÍ{im-ZKP›m?¶«.uèºc­€ʯïRK¾‡T-[¶nÜpX3 éký-¶9\xñ ½C¿SnèDÁS³Ú£Nr—Q¦ê(ù~(`K ¸š·UuQv¯Ü)©aseTžIæƒ2)e§ø+éþaº{$•W>à§;U ••Âߎi€+ðPÊý꣰t=´ :{p8öƒULÚÖ²Z*kÕ$MÅyð Nç_qÕÒÊâ&^MF—¿y:Nšå¶½“±¦¼äŘ0P£ˆÇtUBuÎH=šY’wÏzˆÌˆ%‹)•PzÌpX×!\\'jt9æƒ WÀ\«*øîi¡É$€ ÷¡ ‡'÷ä W™œ Ohl/K{@Í`èÒd~h`Ù@2ÌyŽ)ÿK,- ÐÛUBèÄè˜} ‘ì)»‰ c梳–gdëÍbáDHì)B¹¸·‚@M>G»Yh âª-剃<ÖÂæ^ëe{ŒZgñMmË-ÇHUŸ'¼Pfh ÔPÐÄÚõ#Œ´9õg¶ª; Ù'G½H€’ÀÆØŠ¨Ïe]Š»–V½.’_¥¶%Dk…¹ŸT°ó¨ o€bÇúvh:úÛ`² º¯cûMs\`Ph99ù¤ ~á•°@=ØÇö A[%ÛǸ:ž*)½÷>cE© lFÜÉâ™ÉÍH2æ'À4æ§l—£<¹:+^%m9Æ·LätöU@÷üš”QI™ ŒJ)Ðù »Û ƒÁÚr?Š»=ÛÖú{.© ’Þ?[ ô–ÔÞpÀ˜9©-Æ7’ÏMmn:ÉbÜ]·.Û»ÕYÚ!‚wUã¶ ÉËƒÍ <˜åÿÇÅ]ÑÜzçFÚ¤î*€2'B¢²«2cnÒö˜¬RÞ‹9b7£ýâ…²}Ïí÷HŸ™=ósxðsó@m*-ëW[;“æ½1 ú¬à~ªòðp¡Äò *ûΉòhã¼îX悳¸75,÷4‹$‰âx5FЊˆ¶¤“ÃËPg11ø4 ±ˆ1Þ‹LSöª€ˆ.ÀÉ:í ™> Pˤvu9"t4OdÛ|Ä‹iíÙí®õ†,èHçâŠ"˜Ù=Ϫ1K¶Ö2R{οŠXuö2OôäÄž>k)!8‚wÄTPd yb`Ï5°¹—ºÙ^ã™üS[rËqÒggÉïšÈ4[CkÔŽ2ÐçÔvžÚ¨ì+dLõ FKb*£=•v*îYXD ôºI~–Ú@•A®æ}RÃ΢¼V‹éÙ ëëm‚È‚èb½í5Íq€U@} äçæ5û†VÁ÷cÚl—lKàêx¨¦÷Üú@U¦@-±r7'Šg$h?5 ˘ŸÐSš²\zŒòäèx­x•´äsÝ3‘ÓÙUÜòhQDe&vf‚1(H§Cæ‚ïl6SiÈ@8þ("ì÷o[é캤‚KxüUnƒÒ[SyÃ`椷ÞK=5µ¸ë%‹pvÜh»nïUd h„B ÝTsŒZØ+'.40Lòc—ÿwGqëœj“¸¨È Š,énØ·°[©«—æ>ÂªŠŠ¹bÞuAžà¶¡@‰&;P"©ô˜1P@ˆð*‰"I<®¢—Ó,CL~ŸšGéÿÌuInããk¡ÜÕF·ƒ Ž-±ÁªS)wü §êzfé¬ÚµÓZv ?Wæ¤Èöî0¸XÜb¢š}ØhäI¥KVñ¬ÁГ³6> dOšƒlË@#šKu Ëh€?{öHDH #šÀŸE@*K 11A…»s¶ ÄêˆÀËæY  v, V‡m–ÁPó ÉÇäö®fêl(—Û]»*“?o£\[}:é PÌ;ë-€ª¶­°KK¨A Ô?á‡;—®eFŒIÖ€¯ImäRAPǽrÝ«CñI~àéÖÊçý5p«Y³eíàK‚}Ìg½@ v Ó•BÊ$åªwöª!| ¬¤eÇÔ r1ã½ óŽÜS¤¢›…1v³3ª(* ‰ #±=èåÁb'KSIrÎNɱ‚K¸yø T—nÞŒÖfU"u:¬~(¢ ½[HÒ/šRI2I3â²17)’ÚŠÀb§Oo­Œ`L±ç½{€(µi3¸tk J‡+ä;!Ò´áÑqžýÍ*!yÙ€LÕBÉ+…cÇÚŸ#&Êc*& РÀ±¸ÅGQ@ÚBÀ‚û'¸¬Qša¤0ˆ=«I6t&¶d‘ ÆäЍ,énØ·°[©«—æ>ÂªŠŠ¹bÞuAžà¶¡@‰&;TR*ŸIƒ¨’$“Êê)}2Ä1dÇáyù¤~ŸüÇT–î>6±:ÍTkx0¸âÐ`¨õ2—|; ~§¦nšÍ«]5§`Óõp>jLnã …À&*)§ÝˆöŽDšTµošÌ 0+0#cêDù H6Ì´9 ·P̶ˆ÷¿aT„@D€ ’9¬ ôT x°Ó[·;bÜN¨Œ ¾e˜÷ñJbÊ`vÐlU2 œ~Ojæn¦Áb‰qµÛ²©3ñ1Fú5Å·Ó®• ðñ^²Ø «jÛ´º„ÍAÃþs¹zàFThÄh ô–ÞE$ {Ñ -Ú´?—î`®q?ÓQ§ µ›6^Þ¸'ÜÆ{Ôb ÐÙÝ9T, òNZ§qoj¢ÀªÊX»éÖ¹–Ý`·mæå­É×< v!m®+;ÔzŒmÙw$·üÔUX’˜È˜ÜR[{ª iµ¶.9“Z:‹ªnž‘aŒ‰p¦+§¡±q÷¹Ü#KûG‰ªŠdëxº^=EИTñ\îÖÞ×®¯qîð̇šõz{NÁ˜ÀÅxaÿÚ¼ÁuÖze6Ŷ’qÖ¦¢¥é ÇrO›À*Ûq͹“le5Å\ÙÇÕ(UQƒuÜë|QƒÞµÄK\r} óAƒ(8éî°½¾ô3,˜Êg[ª;„¶GÞ‘WäÓ‘Ž8º €=È=ªÖ:¯M$ “ÆÏGPÁî)vÜ(â›@sÜÍŸ¬ºW °SûGšæ$“=·C1ëÔ$÷Ûfi_—ñUŠM²àmާŠV¦DÿÓºgp-¬dDkÒ5Ì' Aíê(=чý±TqéY$Ö·mî÷ÕØ3ê å Ï ÄóU ‰ŠfvÀ"”qðS¯ÜÞ*`›ìBŽÝ?…‡»ÔOy­ZP=¨cŸ&‚ªg3ˆîh¹« æLE ¶ÅŽ­,•»s‘1âkYó æN¾(6*<˜¬ 7±X sOšÚÛ>É“É'“A-’œ ’EIv oæ+ DóLÌbkâ7S 3¦LA“QL°WÚitÏ„äØö¦! >aI˜ƒÚƒ*ÙéÊ›–=ÍT5¨[ ¡?÷ K’“ð(Œ[ÙÃf{ŠP™)9·ÜÏ?jŠ»éÖ¹–Ý`·mæå­É×< v!m®+;ÔzŒmÙw$·üÐU‰)Œ‰Å%°÷º –˜Û[`ã™5£¨º¦ééÈ— bºz_{‘Â4¿´xš¨¦N·‹¥ãÔ] €õOÎímízê÷ï Àhy¯W§´ìŒ W†ý«Ì]g¦Sl[i'jj*^ Üw$ðì)°|­°GÐk™0ÆPc\P…Íœ}Q€…Uðh0']ηÅØ=ë\@TµÇ GÒ42ƒŽžá; ÛïAÃ2ÉŒ¦uº£±HKaTxéqM9àP‹ È܃ڭcªôÒJ )íà¶A ÃÉmîƒ>¶™þõP f ú{Ñ(¸É^ò>ôÃPHÊ>)L´â<ø¨¥À9Õ²XžAYíÛE_VåÂIúTóT̘ÅŽbiQQ=Øï·z¨æ|,î¨ò2P¤Š*¨P\dR[ÊöûÑy$Nñ⢂(Y$“q»v•ˆE-?Þ¶6Ën\8šÆÒ}^³¦wºoômÉc“ ŒÑ´ŠÜ{y1<·ŠM;’¤°_Š¡KŽL¬5½P¯qÐâ`ö¥°5_Ô?¸™¤[=KtÉt2æäâ„D ¬¡Eç²H/ÉHïUIpI9æh,úsÚháí€ÐO$ Fd´Œå‚¨å›‘iBÁKez›½C„)l/´’'~)S©|¥Ó^aÌâ?ä×_Afå»n€¬î^'.õåæQqÚ%—\Tî„Ôÿ2nÜ{8ûWu¬¯2B†|Wut"ÊÛS÷w¨©1ITªD F§æ³bÙ'˜S†Ú c1.fƒx&w1@'´–O`)‹Æ‚’#°¢$dý¢ªijOon襋EŒ‚ùÙ¥´F;$’IŸÍ1_vY“<ÍE8d™ÀGoµ#31>Õ¸ãuŽ=þO4¶ðíÞ¡Ô¨{Jè81ç{®„'…Ùþk*CNF š¨ô‚‹¬Î¾Ûc‚Üš£„A$•FÔ÷5À½Uà°ªF‡Š•ë¯pÎXž7ÅHµÓÔõÃf׶ߟÝ\6Ðvã‚Kq>)íà¶A ÃÉmîƒ>¶™þõP f ú{Ñ(¸É^ò>ôÃPHÊ>)L´â<ø¨¥À9Õ²XžAYíÛE_VåÂIúTóT̘ÅŽbiQQ=Øï·z¨æ|,î¨ò2P¤Š*¨P\dR[ÊöûÑy$Nñ⢂(Y$“q»v•ˆE-?Þ¶6Ën\8šÆÒ}^³¦wºoômÉc“ ŒÑ´ŠÜ{y1<·ŠM;’¤°_Š¡KŽL¬5½P¯qÐâ`ö¥°5_Ô?¸™¤[=KtÉt2æäâ„D ¬¡Eç²H/ÉHïUP…Ü÷¥w-¨“P!QCƒºÊ¢²µÌf3Tÿ“@ÊŽë‘!WÿwH#d+]c¡@|Õ\¡ !Gj[èâ‡SÀïA’Ù©'#ãµDÙ~ÜP/€(¼ óÉ¥ôÜúŒH;ÐPÈAŽFÍ`Z vyjpél€ž|Ð’Nê)I¹væ6öcm:Z`B«±&Zy¬€¸t/µì?wæ‹Yic &cUq?¨µ< )mÛ‹¢ã6À «ªå1Qd%N4gL)À–c‘h¥u gžP¸:~³©2xdñF×A{¨Qwª|Wœ$Àÿ½5‹g¨ÿE3éôè ž í^ª#»F•&Y›ÅZGôVí'é]¸4:ì *õØnžÕ’×Ã7s&»’ý•Ì-ÀÄ+›§{Vo]{¿¨÷"cŠƒ z‡ÜtjFÚ¿UÒÛ>à\öÿEtõoníÑsÓE§Z©‚ìÏé®*?UGªÈálb¿õRºª.w :Ë÷W%¾²ôD&‡1Q{—z‹Ì ã÷MHµÑw¨wµn8^Z¹æè lóâ)ñ–$ûˆÔÏ5‚¢œˆ“þÔ âZ|S¯?ÿ4€!-+ÉíªV¤Ä( \Ãĉæ„1Y% wâi•-ú›A€‘³LU]¶ax XÒ-¡ãã½+–r}6UOêj£º äöR Viº¾a*¢JÂݲ×OrP%Å Yై‰5@팪b;H@2\" ö e(PHÏzWp"Ú‰1ÅÕt8; ,ª++\Æc5Où4 ¨î¹÷t‚6BµÖ:4ÍUÊrv¥·þŽ(qU<ô- ’r>;Q„M‘'íÅø‹Àß<š_IÝϨÁ‰½õ ”älÖ §g–§–Ì(‰çÍ $›—ncof6Ó¥¦„*»e§šÈ ‡BøÛ^Ã÷~h¹‘P:f5Qqú‰×ûSÀÁØ–ݸº.3l º®QBTásFtœ f9ŠWP–yàEkƒ§é :“'€&Omtº…z§ÅyÂLûÓX¶zñS>ŸN€™àžÕê¢;´iRe™¼U¤q/EnÒ~•Ûƒ@ƒ¡®ÀÒ¯Q†éíY-qL3q÷2k¹/Ù\ÂÜ A⹺wµfõ×»úqò&8¨9¤3,HÏâ²”ÁRäÑgÌ,4ÁUWP\÷ P@B2b`˜¬¨KF_oÿimŸP³/кüÕ†#góA°USX÷<ÐEs9'lR3’Ø) ?{xÈ€ªmƧE¨6#7XZ.ñÿV«Ç÷@ø€©`'#¿jn€£jiäÅ:&µÈ,Ü/Š’@~àшPÄ-»däO4°öžü4Éh#z—}ÍûAàRÜcé ÜÔVP™$±¬@Ä’GŽiÒÜ ˆXüŸµMšÐ0VGe‰ §Gí¼íŽî€gä+Òu bãÜ00öÍy–ДËÒkpu'cñE܈n³ ˆ=¦‚v‘ͼdmÏ'íM‚Ì–2<Ó\!-„š_NB+¹ ïâª&–’àä/e¬ä'`+’&5°Êf"¢” *TòÝé€[i‚‚;±=éCûHTãs©7qbX[>æË€<8fŲI“&g·j ¸¬GÚŽ0YV  ±üÐ U€´P{¨ª2aæ±¶ 2y ÿ5T[]?‚ÞL LÝì†3Åõ$Åæîrú¨ ã; j95PñÐPX2ìÁÖÿš¢ZœÜ3qÈÐ'ŠPÒ°ÛiÔR/¾{{@Ы@HЀ9¡l*— ³@©¢Tæ€ÈfX ŸÅ!e)‚¤É¢2ϘXþi‚ª® ¹ï@ €„*dÄÁ1YP–Œ0,¾ßþÒÛ>¡f_¡uùª$# FÏæƒ`ª¦ ±îy ŠærN>ؤg%°R~öð)‘U 2ÛN‹PlG n°´2,]ãþ­V!îð)RÀ.NG~Ô ÝG:ÕÓÉŠtLkY¸_$€ýÁ£*¡ˆ[vÉÈ$žh aí=ùi’ÐFõ.û›öƒÀ¥¸ÇÓ @'¹¨¬ 02IcX‰$Ó¥¸@ ±ù?j›5 `¬ŽËANÛyÛÝÏÈW¤êÅǸ`aíšó-¡)—¤ÖàêNÇ⋹!Ýf{Mí#›xÈÛžOÚ› ™,dy¦¸B[9?4¾œ„WrAÞ#ÅTÿÙpygtk-2.24.0/examples/pygtk-demo/demos/images/gnome-gmush.png0000644000175000017500000000625411545325345021102 00000000000000‰PNG  IHDR00Wù‡gAMA† 1è–_ cIDATxÚí˜[Œ$×YǧNUß{î{õŽ×qŒlb³K¸¯"„1RŒ2QL B âÍ‘xˆKHŒŠà„<8h­„`@‰ÀÂö‚/+lÇ»k{–ÝÙÞ¹ôLwOwuuÕ9U禪U Þ Á ¹¥£ª­©­úÿ¿ïÿ}ßÿ|ðûà÷ÁïÿõO¼/}àáO Ä­Ñh(.]X}îò[W;ÿ§ <öç_^qƜȄX‰ÂÑò02#Lš¡cÅ•+kÿzñìkŸÚèô®\ï³ýïèGÿäw}Ïñ?’³Ç“åp2Á&´N1iFÍ÷¹uùvœµÄñä¾è®Iuvr§;\{ß |å鯭4ëÍÓ‰ŠQ©ÆXƒµ¦dÖK½Rg¶5‹ÖŠV½–£íC‹¿¾ÓþÊûFàϾñ—'Ïø‚C¬L’˜ÌXpŽz½ïWðœGŽÉ¬a0걺&ð=ŸîÎÖY*íÆççš_ô£Kÿ+ý‹ÇŽ¼ç¾“ó­™cì‰Ì˜åI‘(…µ‹c¶9Ë\{k-ã¹)vGCâ$áÍÞÛh­Ù ‡8Ö8Kó_ô£_þ®xåÍWWgæW„'t–-§©"Ñ <çyDKf-&K1YF"ÆŒµøRø{¯BÙŒXÅ€ÂÚƒÿãzãò…æ–¾à oE› c-išbL†6ƒCzRJÖY `¬a4M Œ'!›;Û8OJZÍ6Õ Æh<&Mõ¡¥#s÷ïlì~û¦ œ»üæ±cŽ>.„XÉL†³vïÎb¬Ù+Ng0Æ¢2E–eh‚³8kq´I‰z]T–2Gd6Åó%"È@ÒnµY>| ‰`§ßãóoÌF¿ÀÍXë^=vxþÀóÆšek-Σ·½Ej @f22k±ÖâU|Æaóƒ™s¤Ö <‡Ò÷ñ«5d¢ñ$´Z-ª~@µRcŽFáÏÞ´„Ž,:½¹¹¾üû¿÷Û¼üâ|ßGzÂóðr¹T‚€f³IµZ!|: ç8pð ¹9Æã1·Üùa°¤ž@Jüß—x•+6]æ[³ =Ó¦Ñj>püÀOn_Þþ§÷" ßíb¬’c¾”ö3?Ï›Îíukñ¤O!¨ÂDQ„ÔkuffZlnl±´¸Àîλ½> ÕRiΟy‰¥ Êb« ÒŒÔ¦h“2 GlûŒÂ½Ñ.Ãh„­x÷†Wûü^¼wM‹”Ç„Œ†‚ ¤ï£µ" C¢(Bk š&;;=¶º]œu4š ÖÖ®T*¤:Å“q“fKss´dWºw>?vÛÜ}t™Z­Æ$‰ÙnÓ°RàÕ*?xð£·ýá {!kíÚoþƯ-?ÿܳ{ò‘r¯ËàH…NSßGú’v³I¥Ra8 ŸÌ ~ø¾“ôû#&qL’$øR²¸0ÃÖÆeŽÝr”Üs7Æ¢hÂ$NXö¹°»Å¥Íu”V$J¡µ&Ý®ÿêúWrX._ïMÀ9·ÒÝÚ<ýÙÏ|ß—~€çK)ž‡5–8I˜Lb²,¥Z­Òn·¸ç#ʼn¥iš’$ J©éò}É÷ÝyœÞ`€1†jµÂìÌ ó sÔ*úqÈ·Îýom¬¡RÖ)v{ôÃsÝö‘p°×/øoHœþöß?½ò[~qÊÖX‡µ!RJjÕ*‰RÄqÂOúiA)Åd2A)E’$ÄyŠcµZÁs çÀ9GµZáà%æçX\œgqaŽšðåoþëý.ÎºŽ½<øøøò “·Åñ=í´sît·»µòØ—åâÅ·ñ¥Dú>Rz{ã„D)>tû|üÔŒÇc´ÖDQDE$IB†ŒÇã) ¥Öjl–rôÈ!.-Òh68rè ³³mæææh6ê„:æOŸùþáõ³¸Ì|=|öß?—ƒŸ®kÚ8çV€ÓßøÛ¯óôÓGŽkY–‘$ ¿øK¿Šs‚$I¦ ƒiš2 DQD†(¥Ÿ­ÎAµ0;3ÃÑ#‡8~|™ã·Þ²Gfn–±ŽùüýÝÑ€tµww|±ßLNÀ\“•B<éœ[þÄÏüÜã?~ê+Ïýó?òâ Ïqþ;¯Ñh6xàÁO²¼|| \)…”ß÷‰¢ˆ,ËÇT*¤”cPJ!„G«UG @ÀöNŸI†!Î:”Ò>rC ‹tÃ]¼ƒ­q±ÿÕBÍ€»f3'„蟎G'~à‡~äñï½÷ûOîôº¬wÖ¸cùêõúôÞJ¥B–eH)B0™Lð}ÏóBàœCks‚ápÄÒâFƒ…ùY¸uùfÚmêÏ_ø¯]^!°“t¨ºÇu»ÑÙÖÌàG/®¯­4š­Gî¸ëî“K9”RT*¬µ8çBÐn·§×…!¦·Ö²´´H·»E0Dx<RzD™â¯Ÿ}ž¯½ô,BxX~+~uãË2¬µ¥cò}ƒ™ê˜õœÀ¯U°Â/°dÂôîäÕxkøRº1º˜ë½‘ƒV@µD¿)iš>’eÙd!0 i·Ûh­QJM H)ó°WI§FfëIo§ZGÉnÔÉ&js€µ\*•x-'áçFôÆk ÛížHÓôdš¦$Švéû>išRÎŽ1fZE'2ÆzkôÜ ×Ó9Ph-'PX“ϸ,þíÝàÇ0Okýéb–IL&“½è&É;ˆÙ|7Wœ‹½Ý 9ØÂÔrÉÔóUË£_Ïåm€w#àÏó©$I S Zkâ8ž- Öú$œsÓVëûþ‘ü™2[/HÒ)d$J8®ë«Ä<àgY¶ìyÃáF£A–eÄqŒÖ)åt¹>Œ1SÅ— çÜ<Ð.Ùd›iZ’OZ’_rÑ™#àÏœ9³R´È 9çHÓ”4Mñ}cÌÔJGQôŽVÉ[l4K`MI&|^”êB»¢ˆÀx<ö‹èJ)§¦M›|Puš¦Óm©sn:äòá¦öi¾ú. Ý»ì],`½ë_è4Ã0(¢]¯×ÙÜÜDkM†Xk™L&ÄqÌp8¤ÓéLk¢N^J©/]º•4îçEêçïû:Q±Šì¸É€|衇¾Yg¥R¡×ëÑï÷§rŠã˜ÑhÄÅ‹i·ÛÓùPH¨°qoïÓvP~Oa™óÐùÑäç×ìFž€¿»»ûª”ò^¥Íf“ííí©ßBÐétò=4h­±ÖNmv~ßî[o½µYÚÚ}Eœ•fÃþ•]oþ‘W^yå‰bÒV*¶··I’„(Šèv»¬­­Q¯×ÑZ¿£zžÇ`0¸töìÙs9˜8_ •Î‹ë ˜ä×t©C “׼Т_$•gžyfýþûï¿KJy[–e¬®®N-ÃÕ«WqÎÑh4ÞÑN{½^çõ×_£Óélç ’‰$çD&ÀØÍ­Å(?Nò¥-¯·…–ЬòÔSO™ŸŸïµZ­CµZmáüùó„aH–e4 ºÝîúÕ«W¯¼üò˯¯®®n(¥Æ¥ £\”ƒåÇaiKà‹ÿ›ŠkÌ€WD¾4-›À 0 ,³§NúX†Uç\õÅ_\Ëﯔ²XL¶¤e]’GqŒJ„ÂÒå׈kÌ@ÑŠq^x“VNb.?oæ«^j²”Å2h“Ÿg¥ÂTù=q~-*Iª,«$¿÷š&qÑ!Dþoߥ†Ê^-/£ây*–˺¨-e@åçª$¹"òE¯yOìö “´Ê–¢8É£”\£·¯Mš}ÒÙŸ³Ï²JJà³!PHÿ B*zg@–<++|~’_/À‹Ò+öÝŸ–†—¹î[ïRв4=½}5â—À{eßRÒº.]7¥³ßâ›R´m)Źû $Ý’vÚIEND®B`‚pygtk-2.24.0/examples/pygtk-demo/demos/images/gnome-foot.png0000644000175000017500000000554411545325345020727 00000000000000‰PNG  IHDR/0§#âgAMA† 1è–_ IDATxÚíYkl×y=wfvvf¹»Ü—ø¶)Q¢‡®Ūl#H¬¨qd×mT i›4N A †´(Šnì šþ‹]Ë l´µì<ä§â8vÜ*–#%RDY$MJæŠÏå>¸»Ü÷Ìì¼·?2T ·€,‹T\À0»³çžïÜs¿ ¼_ï×e»/ýׇ Ýóµ»oß>Ð:qj¼Àýþ…^Ú·o߉¡¡m÷Xíæ—pöd åWMËjoô1Wð[â?kll,°cûСT*5â:6ÑM‹•$eW2þobï ð¿xù¥ÑÉ3§ò“Ç}ò3ºÿÆõü›¯}õ–xgô¥­PUÕÑjI´3&–cïò¸ß+øûÆwM&â rÕ¿%vì£{vÝ€ïéîú”$+Œ¥µQ)à˜:ÚšN•¶Æ˜–ýU¿OðdçΑ/ËR³7ODzHKR"ÉxôûÉDb›ªëƒ–!ÍzKéÏAHˆiY0  ïíR»’ºÜedLU©ó(fàyêQŠ–¤ôïûàݵr‘]] Cj6ѪU!É”¶J-Ë€€a³å>—­Áå奂‹JŠ‚zµ‚|q “ççˆEï0Ÿyúçæm{©¦µA=åJ™|¶ã¬7xx#™¿l«ÔuSÛ6Ð}Wz6˜™#gÞ˜%r[%-¹M²«¥ƒ–i|¢Zov,e ˜|óŸçQÀpÀ"zÕÀ}åÃ_¼ëówÔª•âñ_Ÿ¬hšÚU®ÔvycŠª­­ àѦ¬¤Y†|´)ÉB&_‚ã¸Ä; àqÕ«¶ßtÓMb¹\^”¥–÷ÄcÏŽŒØ& ÁGÔ}F+îå8nÿu;·ÿhdhp6ÒZbæew7Û%5¿ÿ“· 3 3Ôjµ`*Íá-ñ賎û¤n˜xÊw€-8pàÀéh$Rwmcg.›#««…\½Ùšm´d몂g ¬•Kdjê,ÍJ(”*Û}–ïðk_zúâÏ~º'žHýíµ×^sk¤£#¥È-¦­Èdzü7vq5_ÏVONžKçÄøÔÌF8Î%5¯*²¸­'ö¹QcŽþêÎ]X„iÙÞõõëÞ÷Ío„<øýëGG¿ïŒÞÐV”Ë4PŠ¥…y°ŒäÃz[¾®Öl}¶Ñ”Nj†™¿Òƽ$ó¯O¾‘?õÛñ)ž#»³…"Ñ ::Bâͪ¦Ï?ôàƒ±OìûøK× îiTËðAªDZõ*ÄpÍz0 m[”6–V 1YQ¿ àO|¹mªÏKO½ø_·gìƒÿ^ªÔ†|Ÿ6“ƒiÙŸðÄ¥âûoå²¹‰ë¯Ù#vDP0Ƕ‰`Y®ëooÌÃÏ<—WšÕ'oûØ-_n˱LƒºA±œYA¦P„iÙòì͘˜¹óK˯êºF M%‘αM,Ë¢§+…Á¾"ƒýä¸å—~yâŸ^=ùú3,ÇÑžAÒOV³×u±V­_\Ùwâ>ïzVY©TÕ?øÀŽ/ÏlË$ŽãÀ²,DÂ!ùM%c¡î-‰”¤¨¯™–ýV0íù¥ÌÌŸÿåçìélV+T‘%drLÌ\€ãº0ày?m¸lÐ’•Úøë'ÇFGîL%“4D2IEMÀ £ÔëM‰F>ûéOÝy3Šõ¨·°ã׳ݽý}±X|wo_oÿÊü,µl ¶ãbi¥ãúåuSÜÆ/#[(=948ðÇ `zz{a[aY᎞GPIg,¾íÚí#ð úúûHu¡^-CmËช¥]XÉ_äÀÄ;ñú+™{¿˜>¾¶V™WU ¶mƒåX0, Ï£4ÚC<‘ЪW©®©`Yº¦"³Fni¥|¹•e̤Pk´Ößû ï$>\é|Þr=×NÆ"·«í6  CJY¦Ç’b!ǶÈZ±@MC#Å\†VË«¤V)cöÂ=vjªn¬çüïøÌ»› Þ[«5ò‚ ìòÜVI’a[xŽƒØÑA¢qD¢1†×¶‰ ŠXYZ¥ Éd2ôÔÙÌgrç[óçAWåfD/Wk3Çý‘G½„iZ„eâyxž'ˆe™„BD1D8–%kkeL›%ÇOOÂõ<øáí²æ^-ðÔõ¼FµÞœ$ 1-;Ñ”dhªF$©EmS'–eQ]Ó‰m0Mƒ,g2xýó8vê,Õ~7ð|Æ/çjf£Š0Ö½%ñÏÑŽÐ^Â0l8$Òî-I° ƒ(J=j;.–²«XÈäˆaZëÞÊbMoÖåÛ;M©C| ð-Q®8΂<‚< ‰‚üÁÛã7x–,­ígë„~SüÝwžoïéߟkÄ0×ÜØ3×éÖ«6Yžš,ñb×MWrâ?ñ[÷?ð®;Þï—¸j¯ÁÉ1ñª´œS¬|ÛúÕüÙzþüð¯oY®|ì³·S;s%æÔË>sjÈ\3àÒ–Ï\+Aˆ ÃðáÝËø‹{?ù»+%y‰¨2ñ•‚ð P/=Sç .>ÓâÙ˜cƘ2­j;ñ_ùÆã 'VFÿò;ïkä wN;û–÷‹›÷ÏÒnjúY›o9¼£Ê-‡¦ÉdG-ÎʽÍÓ¿¹ï†w?úÓŸ=‰ÂB()¥°ÖÚÒ9  4€&0L“Å÷Ð.~¯•$%KL(KùÕ~âŒ|ð± _ýèѹÏ|þβÕh#B³4§xÛKÜx`©F¼i‘猆¾çíF¨©?òÜIkm«!…ÆqcŒQ%®7 B§Y`ªô¹£xÞ)ÞuJRcñ–Ò|ã'g8Òù½wìò¤Õë :Å{S@Ž‚é‰6Ïs:ë.ª&é­Rœ0 îûÄ=yò;ßýþÀzRJ„üßÜÿ¡[Þ²t_«¥îØ}&Ì[iØ‹.»Y÷ø™­•o<òâó/^ÜØ*¸œà[@è{¥wò«\Ú ?Ýjµ§Ž]`Ì*ósÓÌLÍ1Ñô6GU0!u¸¸òÎ['¸<_çk?vÙ=“·§gÚŸTJ=$„õ¿ùÓ{ï¼ëƒ·}yzjòˆª(´ª¢½@$iŒI‡éååewùÎ÷ÝòÞgÏv7øÖ#O?wn}½ Ð/$3QHm«Ð¯d æ*ÂæÂòȹŽ­M0Qó¹aÏIŒJ˜DpS[1í(”Ðí¾ù=<¶Î³ç3†n$&ñ¥Ôq!„ûÏõù/Ý~Çmïo´[(¥‘J|„SG™”Äi¡j +-êÀ»ë•ù—î¹ûÁÿøù™¯?ü̉B•¦Jv1V%Sr·ú*äéA£5q*éæ‚8™7d*#Ö†õÌ’:5™óÖ%Á·žöyòlVàFŠ(—ÓJ©å¯|é÷îÜ1³Ïë®Xì.ŒQµMp4ƒ`³hL`â˜<Œh©ŒÜ~膉jeòo¿ýÄ3…Ô ÂEAtTH(äUF¼të=éTj i-Ö¤˜<åèNGîh–K§ôÝ?ŒøÑ³ß}jDàG“’ÐZØÛv9s7.ÍîR¢"hÔ µºÂ©+œªÁiÍéhªõ:N»‰”!ëT¤Â˜+jìh;Mdµqêâ†[?¦3/¹Úȯ0ÿ¶~Ñ‘j›cóaÞy¨#öN’$`&Ø4ä›?ùÑ ®"òINfcnžÊ'2k@VDÍÇ‘(åÐìÔ©7« 2!T«jHcäèj$Ø0Æ’¢-쟞\Ûòâµ-7. ×±alà ]¥Bi>Kç°ÕU!Ejg;šÝÓ¶*ðsÍfœ¡ý„ó[)y’@‚ÍEØ ÇÈ^˜“ˆ‹G³Ù ÕL™^˜B6v@£$Ãæ9J@ª¦ÐYJ£¢@¾cŽÖp@hís×;í}òôj·P¥ `¦°ö8V\ÀI‚‡b+~ÛfÕªR9›™¦ïÖ˜®ç¤Æ0r#ž?chŠ„½­˜—ü°EòbÙ5USÁб2wd›Ð™BÌD¶—EœFá(´Õ -•4ƶæÉu†Œ Ýr™œìa·"nR­ÃÎÍœ>¿²Y1U¿ @É2€»Þqà{¡78æ‡aÒsC^,yœræ\Ä£'\ækWÜ!œWbJCäv¸¹Fœd„IJšj²D£SÎ2ÈB Çê¥#lž’‹µòÇè\ƒ­¢S‡8ÍÐIÂM‡–æJ‘¼VŠÔ@]eýðß³ß8ú®3£‘ÿñlu2mu¢°©6¡ŠÅZ‘YÿvWÏë…™‰št”h6jLL´Xœ›{wN±gy–¥=;˜ÛwæŽd»#lm'Yæ,ÕÅ}T [“„¾ Í6Ns‚D:b¤jø¹•Ç^ºt¡äûG…¶®)€“ÇŸž{ìàMoùó™‡îö³Ú{µ¬.[œF–xšt+‘ñ(MÝ ë†AE¡l–ØZE‰ºÕT³'12ÈnFÖ’Þ/"QlÈÒœ02ˆJ+%A³¹¢mÎ ¯D)C~l‰"“oK¥m! õªdn[yǹOõyñÔ£À%!Ä)å‚RjV)5©”jK)kRJØ8ÉL]"† Æi昭ŒnÔil M3"§ÊÒáÝ„±"OZVéöc6F.[ƒ«#7Œ·ÕãïúU¹P‰xSD»qà‹[kSkmbŒ©Œst!Dî@<ߪ´•„Åv¥©:;fª4§êÔêÕZ£G(9 ´åìÏΑ)‡ /Ã#ü$'ÔeZˆ¬bk®Ax>.v^ @^îÖÞ¶Ö¶¬µMkmÍZ+1Ba1™BºIÂT­ÓnÕ+ÌÖ$“:µvg²…jTˆ3p¦$õ(c˜'ähõ‹Ãê3MrÓ&&4à HP¡™iz—6û%ºt ¯Næ®Ä;¥jÈZkó‚èT‘!ª€Xí½…™Úp©55Ýafv†ÙɪVÁhCœE˜4ƒÍMbé"¥ÕŒé‡7N±:!«ÕèÅhk3¬\é JúŸ”r¡øµ$PF;*å µ6|kí˜1ÆL5!D0?9uY>´û…@§1ÃnR”ìIài²Ä’Š:½î6Ü/ʉ㔠Ɉ2Ö¶hQ8¼ôòê¥r®\ÐáÄg¯*h^£Í1b!D`­ÖÚE`Ñ3U” @=vìüÚáÍ÷Þ´øV»0M†Ø "•’¡Ÿ‘IÇ ƒ$ ¢”¨2ÉÔì.f[‚ `uu{¸ý­‹W[Bk­g¡^ ,Ààü’®ÅØhk­B$ÖÚØZ;²ÖŽ„¯$WÖÚà|íáŸ?Ô¬¿§º7æpGj†¹Àè”zôè}“““³½þ ûØ£ÿýàO<ù­,ËümFŸWuòÌ¥ÇO]{lÿ®Å#3íæ-ªR=И˜^Z˜ßéäIÊå+ë~`6tõ– Ôkurã>­Îd³Z«Ö’8ÉŠ3T©Ì¬\3*_;w.6ï¿ï¾ï¿ÿ¾?:p`ïÞf³9—çzïDgân©Ä®µKkß)Ô†€±ÎfBˆXJ©Ý ZÝzÏt‡îïx÷{nÞ¿wï¼5g1IšàT+dy&²,#I‚0À |ò$›[7 ƒn©[ðH^ÀÑ·ßú‡ºóÎ÷Nœ8ÍêÊ%ý>ZqðàÁÏî^Þsw‰ë~)Ñê !z…®v¡b(„pçæd:HÁÌìá(‡4I±yFµRE IµZ¥Q«’=û.T¶Zp¾ZÄ%^+•xå:ò–›¿!I‘f)I’àù>žï3ò\šÍöGŸÝh)cTÖZ)„§cG ýQÐëõÛõz@»Õ¦ÕêÐï­2rG¸¾Kžk¤kHuNž…IAp¥Ôn×Ë…^¹¤R7a@§Ý¡ßâ¹.Q¢uŽ”’ÎôÔ½À¿Ž];vuÝÒZ«„!T¯Û}j¥QûÐÒâN¤RT+U¦f¦°XüÐC›œ Î0&' B?LKÞRns­Ùu¬^\yJ yÇââív‹~¿ÏІ1qáFCà¦bðpq1à !B@K)m!)¥”W.|Ïòž;}?°QS«Ö¼€Í Ò4Ú°–,JÐVŒ†~© o·åk×w£NÅÑÓ33÷^€ëzb8’¤)qœ„±]Y¹x2‚aÑ%¨b Ÿí !¥TV©TRÇqr)eá±ÎÔÄg´ÑÓiš’§9#o$Ò4EaÓ,QØ<ׄQ¬\|ùœÖÆ+eƽ®z@¨®†ÍÉ$‰öGIòÖáÈÃÑßóLæÊú•“ëëë/cÆ&Já~TäNÉÜÜ\^­Vm¥R1Žãh!eê/4šÍO…Qä ]$‰q]_x^Dèh¢µ1'Ž{&ËóÜo f¯@à&Ëò‡ÜÑ`%‰“Ù4ËjÃáàôË.üèòúú)!D§äF“¹…÷ 4Ón·)½4ÍιýÞãJÚ»ã0nú^@–eB'q’Æaú§_|á9?ºRªš5Æ-ö„oL ÅëŒÀªJìökgÑ£©ÄËÀËÀ…â°4­`aaAôû}Õl6fçæÿx¢Ó¾£V«íÜóƒ­n¯ßï_LŽãLçy¾^ì8 œ+Îê½Þ)¥,"à°ì ÕÂ}€MàR±ù ]gÞU/ºmóCöCŽ™Ò€Ãºß/˜² \KÁylAˆ[åÅýø»_ˆ×/MƒÆÞË-u¡Ç½ŸvÉóÄ%õJ©y#òÒ„D‡v @¶tpP¨Ôë™ûŽK×Qq?6Ô6Ð*y¶¨Ä ¯|ÆtKÕRRUÝVe¥ˆœn·×òØÅ~ÍbÕŠ5.e³mmõqA£•I}y`=ëNéù¸«‘m+À_ϾNi Jg”3Þ¤´÷›òW± ¥ùî¯ô÷’´e)q+·|ÌÿÅ%Ķê;Éû^sÏÿÖ1ÐÁaæIEND®B`‚pygtk-2.24.0/examples/pygtk-demo/demos/images/gnu-keys.png0000644000175000017500000000741411545325345020415 00000000000000‰PNG  IHDR00Wù‡gAMA± üaÃIDATxœí˜kt]e™Ç゙[rré-MÒ&iÚ4Io´Å¦ ´ÒŽÈÀ¨C;D™gPQ†¼T•²Æê×Tg´ule€‚´¢Pš^Ò¦—¤-msk’æ~9IÎmŸ}y÷|ˆ¸)¢ÂÌ—þÖ:Ÿö~÷yþûyþû}Ÿ.q‰K\âê»ü¬2 àC^‰ÅFíd"弋ÏK´¿t᪵ËUËrL+éÍ·RéuÕóæä-©YVV^ºzÍÚU+W­ —”•(=ݽœoí `˜L-(`Fy9&NÀ•šªaYVü왳Év½°mÛ·íª:ÿ/LÖ/zßeŸ½fÍÕ¯ºúÊB01o2µjyñù_³è²Å8®ÃPÿçšÏ±î¶uÜpà H)B0Äãqm_µòý[úûû¿ È¿VÀ;ñ@V(\{Ãß^¿îº¿¹fr(6¤  IG{ÏîÜÅæÿøÉx‚3¯céKàÕ½¯¢( ª*H$â|ñžÏ)ñT¼4h×?å]È‚òî¹üëeýÇn»eŽ®†©‡š¢Y9œkj¢xú4J¦—bè¶þd+W^y%ÕÕÕ¬ÿ‡õhBÃÐ š›š¸ûîÏÐÔÖL  ’™[³|aåÛýéœù³ßIl2F~~þ‡®¿îƒ+÷¨Õ&OÊGÓ Œ@UÓ©®ªâø‘|àA<×ÃÇç _øŽã 8n†S§Oòõ¯n$I1½¤UÂfV^~î<`wn~®ˆ ÅtÓ4'8ŽÉÉÍž-„Z¦éêXYyñÙÞÞÎTÂ’€÷æßÖª¢ÖÜ{ß½Û¿ô¯_šŽq¸®ŽãÇŽR\RȬŠJŠ I§lÚ[Û8yú%e¥¬^½UQÑ5•M›cÏî_‘•“EVvÏ•xŽK"‘ ¯§ï•y‹«n ƒ•/ï®»ñæßø’ò’iK–,ö55ä4kØ÷ê>+cY­Ï=û\mOwÏ0ð ÐÎxçmÿ×O~ú“/œ¿P „¨Be``}û÷ràÀ!ÊÊŠ)-Á¬Ù 3bÃÃlýÑÙ[»—i%…hšF*™$•Lc†u¬T††c§ÁPðÀôâ’Š;>u{áäÂ)j0Àµ%yyB’Ê` èp㉸õ퇿]WWWwôBç…ÇQ`ô¢òróJnþðÍ'¿ñÐ7†j€B4EÃ4L¤ï³oß«4Ÿk¦§¿‹p$ÂâË/§¿w]»þ‡ÁÁ¦•MÅP5úb$“q¤ëÓÖ|žtÚbáå—±öúkœÒ²r=šeltŒ_=ÿ"GeÓæÇÈÍÍG7t¤¯MÓ0MÓ÷¤×ûäö'ýÃü°þøñãß½¨€ÂÂÂÍ;~¹ãîòòrt]G"ñéIÏAÓ4¡0º®‹ÅhhlàÈázFÆFÈÉ 3:Ã÷$ccc$IFãcœ8zšÊ9ÜzÛG ‡B„B&äMæØ±c<óô.ª««¸é¦›)/+ÇW|Õ¢|f9ápEQP… <ÿÂ.·¾þøÐÓ¿xºúb&ÎÎ8™ÒŠÙøîøîo¨R‘¸ž‹°inm&77JÕÜj–-_Ƽyó9sö4gÎ"•Š“JY8R"}Ÿá¡·ßùqÊʦaè&šj`A4Måà¾ÃlذkÖ\ƒ¦k  ³óéÔ¾ZËÆolDUUt]§¥¥‰_û}ƒ}RL7^L@éG>ú‘2EUPuðéïëãøñÔ××ãù.+®ZJñ´Bz{zùþ¿of$6JEE% Š;î.ß' ÐßÝ˪Õïg΂ùHÏC× ²"Y˜z€@0H__/C±AŽ=Æ¡C‡Ø¹s'K–,aÓc›ض͑#uüÛ}÷ct¦L%O²xɼåÍ@QQQov(»ª­£Gþ&]]]Ì]PÅe‹1µ¨€ìHªªSPXÀ+¯À0LÚšÛhhlॗv“HÅ©¨˜‰c»H–.»ÓÐiiiÆq,²ª*QUáÃí·‚×ΞáÕ½ûÈÍËå¡GbÖÌYƒAžx|;wî$;7‹p(„¦*˜ƒ–æ–ª‹y øÁŒòïËËÏxãÍdá¢ùÍ0 §xþ…Ý öö³ó™_bÛfù»/›ª¨H_ÒÙy_î|І'˜<©‡¾ù¹9¹¨BcÇŽ§8yº¬ìå3Ë™;g¡P×s ˜&¾ªÁpl˜Ç}Œ£G3½´„RKÌ Òv¶5öVý€>3½tZ͆O~¼ìƒ7^/fÌ(£«³—¯=¸‘žž>.\ÄàÀwÜùI à­­áÁa&Mš„/}TM#;+ÏÑ#Çøä§?EQQ¢*ÌŸ;ŸË—ãz’ÎŽN¶oŠd*Iii¾2~nìçË÷}™îÞ.**g‰d‹‘ÉØhšŠ¦+HOjo.¡ˆaè‹ïüÇ 7\±rY…¢¨"޲õ¿ŸàÜÙ&6>¼‘¥55<óì.<×¥­¥•-?Üž÷pÓÍ7QZVŠi˜ öóo=BÝá:’©=Ý=¬X¶Çu°,‹¤›K–ÔpõÊUܱAR{`?ßûîwÉÎÉE 'OP6£ן‚"#±QtM! 12Cúž”Ê›K¨âcëo}ðÖõÿwcñ˜¡)ùùˆ ŽR0u ùù‡#<ú­ïp¾½ƒ“'©YZÃ]ÿt††ùâçîå|{EÓ èëígé’+xtÓ&©8¾ëc;6®çŽÑ„@Ó5BÁ0éLšî®nNŸ:…í¤¸ÐÓAr,M"1F*™&™Jáú.©x ¡Hñ´û† L™2eõº[o½ÉJY†›ñ‘Š ŠŠ§¢é:ŠP‘,²³³ÙýÒnÂá0ªªâã³ûÅ_ñ£-[H¦’L)žŒišDó¢?QÏðÈ3€‡‡çz(BAø8¶Ã`jES˜R0™¡¡!z{»HéáI#`ɤQ…FBz(¾B$’Õý‡Ìše5wÏš5+0!wÃ#Ãlßþs×aÑâ…0ƒø Ÿ[Ö}”P8‚P¶m£h ;žÚÁÖ­?&šeJáD‚x"®©ô ÷ÒÚÒJUUŽ;~Ðó¸¾;nð%Ž'Ñ4 UÅ?‚ø>D"YÃyù¹ßÿêƒ_¹å?·ð³í? —Ï,kšf:Žƒ”oÌ„m[¸ž+¤ç¢k&±¡¹¿öàñöópm÷ØïTTT,›]=[(Šòûº”Þx3޾¯SEŒ_Ï8R©Žë’É88®‡çI‚¦ª*šŽ"@Õâñ³+Ë_ŒF£¿êîêþâÕW\ýÜ=Ÿ½§©¹©ù|v4Û ƒ¨ªŠÀ²,\W MÓÑ ƒó-í郵ugóósîrm÷ù7d m¥½Ý½íšªùB<ÏÃr-¤/ñ<!žôpÜ7¦]Ótð\|O¢j vÆÁóÁ“>¾P@(hB;uáÂ…Ï5?=Èx'uÔ÷ýyjûS_ºöškO¬YµæpÝ¡:+>—š6¾MéËÞî>÷™»Úî«Û¾dù‚;O5ž;üæ’{}#»6//oÃ<°xÝmëòMÓŒ¦’)||×ÁõÜ?ªUUUéì¸Àkgèho#ã8Ø™ –e“N¥q‹3§ZÚ\/ó‰“ g_~K·‚ ÌÖTÏ©¾º²²ryAÁT[QeüÀþƒÁ¶ó­Ï&¶e,û7\dª÷ºÈ>“ÍYðäŽ''UTTT™3šL'ßÒlªªÒ××K}ýA¿³«CøRJ%A ’é”êÄk£Bãöžþg[šÛÿÔŒT²€èïâ˜4«Šhõ¤Ÿz»…o>JhÀBàÎÕkVÏÝúøÖjUSÙLÏóÞ DUUº»;©?vÐëììT¡aYvÆáÈ¡c=gN7==ö'ÿ«yóiT]ÀËm-mÝÛßV 3ÓK¦«ÑìháËqª¢Ò×ßCow·’L&0 ƒŽŽ Ní¾C½‰DüŸûzû·ò.LÞþ\¯“Τ’©Ã/íyÉÚûÛ½ÅݺÝeË—…r²sMÑÐ5ž¾.bÃÃ$ ¿áDcêx}ãk+V.þNg{ÏÏcC#4Ãy/x'³QÈV·¬]»¶êÊ«®œYZZêŒ Y{öìQ~û›WR‰ä¶ínaƒÿž¿ù×ùsÇë âw¿¨®ŽkwD"áß&Éöw?¼K\â—¸Ä{Ìÿê;Ô$Í誂IEND®B`‚pygtk-2.24.0/examples/pygtk-demo/demos/images/floppybuddy.gif0000644000175000017500000001214011545325345021165 00000000000000GIF89aPF÷€  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~ãã‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦ÿ¨¨¨ÿÿ=v{ÿ«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿¸ÂÙÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ÿ NETSCAPE2.0è!ù €,L>ü H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²dA(Sª\Ér¥É…NjI“æÌ— cÊ JÏž@ƒöü©ó¦H ‹þŠ2hJ§2rD)@*0£.µšª©O®[µvDÙ•@ª³Xsjjõé×¶lÅ6$æÙ«wÓÒ5¨”mW¯)»ÆÝ9- ½Í¢Í{ø,ÒEgúu8ìÎÇ Ó5|’®b¼‹Œ¼ô­S¯C£J%ˆx3è«|C¿f ™´ÐÛ¸Ic¨¹qhº»q}vmÛB—N­•êÀÏÐóþ-½8çª(U/g»ysêûÖ_þ9¼qáÙµã^?¸9yó³ßï‹>²döëí§¾|pÞó§_Mª6Ó~ÏÁ‡ÖÏ•‡vé(á„Þ„`‚.ä}õ W!*IøØ…¾õçІ£9gßNÀ´èâ‹ÀðÇúAÈškhq¨áƒ®8SŒ)ÁãŒ5ÚHg¡f>$JBÊH£L:×àƒmÜh:‰QIeŠô!I‘–6 $˜0JY$dH¢X‘™'u¹¦“mŠ©Ah긑š*…9åž|j’šB¾è昉aéÑ€x&Úbˆ„âÄåe1aJ„Yzi… véiŠš–J¢§¦¦:*©”©¸êA*=äÒ«°žª­´ç®¹ê𔕽ò,B¼k$±ÃKªO9Ūl}<ëWL%‹*QÉMËÖi¯.WÚ~H¡†šS•;R¸Âáçìvç‘®»Õ¶;îm_2xn~)Á.÷ïµÉåkn¼2zk0Áõê À.9,oÄ[.ºÏf¬ñÆwìñÇ#!ù €,L>ü H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²dA(Sª\Ér¥É…NjI“æÌ— cÊ JÏž@ƒöü©ó&΃EE4eS™Fž„ª@ªTL}ZÅ 4©TƒI»bÍš’ëPª vèX¢(ÍúDËÀÕµj7)Ö©V«U©¨{×nªµ÷*ýÛ4ëYºóR{÷êáœ5Á*ʹ³âÁ ãµ,šh‚q ¶|PJ¨|…’]üx'ÊФsW¾Z÷êË_Sí¬•øÞ™­'[Ö}˜uä«[[Eì%ìØÄ_Où|9s¬ûÏ¥.PøðìÚasÇí½¹sƒ†ÛSW¹½¦ýú¼Æo8yèý’•gÞuhà`ë ´ŸwÔ%¤V€"h röY·]„ìÉ—Öƒ¨ñvÜNÀ„(âˆÀðÇÇ–àd”‘Ö`]&øáL%¦Db‰'¦\~ rуx™vڌԈÒ&¢x!†ÿAjµFd("™ã’6èãDP¾8%JU’˜¤Ž¨q¤E[¢V`‘`)æ•êÁ×eH_Úø¦’qÊy&[kÞx'™¥éQŠGú)"}y~åš`1Uh!…;)ZÞ„”NèNŽfê’¤šv*i„Ú÷éI+¤Ҩšñhꥄ¨–Š«¨Vk‡³Žêjª±*t뎵¶Ê¬›æ*+Od!UÜ_½’D–lÆvÕ§²5†`u]Ñ6”kØŽ4­µ²¡è-·M¡œ²Ôf—Ò·Žyfb²«’¸¢˜nWâJ5ï¹Ó¢æвµù•cøÂ$¯Kì~͵n›­° 7ìðÃG,±T!þ’This GIF file was assembled by CDavis with GIF Construction Set from: Alchemy Mindworks Inc. P.O. Box 500 Beeton, Ontario L0G 1A0 CANADA. !ù €,L>ü H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²dA(Sª\Ér¥É…NjI“æÌ— cÊ JÏž@ƒöü©ó¦H ‹þŠ2hJ§2rD)@*0£.µšª©O®[µvDÙ•@ª³Xsjjõé×¶lÅ6$æÙ«wÓÒ5¨”mW¯)»ÆÝ9- ½Í¢Í{ø,ÒEgúu8ìÎÇ Ó5|’®b¼‹Œ¼ô­S¯C£J%ˆx3è«|C¿f ™´ÐÛ¸Ic¨¹qhº»q}vmÛB—N­•êÀÏÐóþ-½8çª(U/g»ysêûÖ_þ9¼qáÙµã^?¸9yó³ßï‹>²döëí§¾|pÞó§_Mª6Ó~ÏÁ‡ÖÏ•‡vé(á„Þ„`‚.ä}õ W!*IøØ…¾õçІ£9gßNÀ´èâ‹ÀðÇúAÈškhq¨áƒ®8SŒ)ÁãŒ5ÚHg¡f>$JBÊH£L:×àƒmÜh:‰QIeŠô!I‘–6 $˜0JY$dH¢X‘™'u¹¦“mŠ©Ah긑š*…9åž|j’šB¾è昉aéÑ€x&Úbˆ„âÄåe1aJ„Yzi… véiŠš–J¢§¦¦:*©”©¸êA*=äÒ«°žª­´ç®¹ê𔕽ò,B¼k$±ÃKªO9Ūl}<ëWL%‹*QÉMËÖi¯.WÚ~H¡†šS•;R¸Âáçìvç‘®»Õ¶;îm_2xn~)Á.÷ïµÉåkn¼2zk0Áõê À.9,oÄ[.ºÏf¬ñÆwìñÇ#!ù €,L>ü H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²dA(Sª\Ér¥É…NjI“æÌ— cÊ JÏž@ƒöü©ó&΃EE4eS™Fž„ª@ªTL}ZÅ 4©TƒI»bÍš’ëPª vèX¢(ÍúDËÀÕµj7)Ö©V«U©¨{×nªµ÷*ýÛ4ëYºóR{÷êáœ5Á*ʹ³âÁ ãµ,šh‚q ¶|PJ¨|…’]üx'ÊФsW¾Z÷êË_Sí¬•øÞ™­'[Ö}˜uä«[[Eì%ìØÄ_Où|9s¬ûÏ¥.PøðìÚasÇí½¹sƒ†ÛSW¹½¦ýú¼Æo8yèý’•gÞuhà`ë ´ŸwÔ%¤V€"h röY·]„ìÉ—Öƒ¨ñvÜNÀ„(âˆÀðÇÇ–àd”‘Ö`]&øáL%¦Db‰'¦\~ rуx™vڌԈÒ&¢x!†ÿAjµFd("™ã’6èãDP¾8%JU’˜¤Ž¨q¤E[¢V`‘`)æ•êÁ×eH_Úø¦’qÊy&[kÞx'™¥éQŠGú)"}y~åš`1Uh!…;)ZÞ„”NèNŽfê’¤šv*i„Ú÷éI+¤Ҩšñhꥄ¨–Š«¨Vk‡³Žêjª±*t뎵¶Ê¬›æ*+Od!UÜ_½’D–lÆvÕ§²5†`u]Ñ6”kØŽ4­µ²¡è-·M¡œ²Ôf—Ò·Žyfb²«’¸¢˜nWâJ5ï¹Ó¢æвµù•cøÂ$¯Kì~͵n›­° 7ìðÃG,±T!þThis space for rent...!ù €,L>ü H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²dA(Sª\Ér¥É…NjI“æÌ— cÊ JÏž@ƒöü©ó¦H ‹þŠ2hJ§2rD)@*0£.µšª©O®[µvDÙ•@ª³Xsjjõé×¶lÅ6$æÙ«wÓÒ5¨”mW¯)»ÆÝ9- ½Í¢Í{ø,ÒEgúu8ìÎÇ Ó5|’®b¼‹Œ¼ô­S¯C£J%ˆx3è«|C¿f ™´ÐÛ¸Ic¨¹qhº»q}vmÛB—N­•êÀÏÐóþ-½8çª(U/g»ysêûÖ_þ9¼qáÙµã^?¸9yó³ßï‹>²döëí§¾|pÞó§_Mª6Ó~ÏÁ‡ÖÏ•‡vé(á„Þ„`‚.ä}õ W!*IøØ…¾õçІ£9gßNÀ´èâ‹ÀðÇúAÈškhq¨áƒ®8SŒ)ÁãŒ5ÚHg¡f>$JBÊH£L:×àƒmÜh:‰QIeŠô!I‘–6 $˜0JY$dH¢X‘™'u¹¦“mŠ©Ah긑š*…9åž|j’šB¾è昉aéÑ€x&Úbˆ„âÄåe1aJ„Yzi… véiŠš–J¢§¦¦:*©”©¸êA*=äÒ«°žª­´ç®¹ê𔕽ò,B¼k$±ÃKªO9Ūl}<ëWL%‹*QÉMËÖi¯.WÚ~H¡†šS•;R¸Âáçìvç‘®»Õ¶;îm_2xn~)Á.÷ïµÉåkn¼2zk0Áõê À.9,oÄ[.ºÏf¬ñÆwìñÇ#!ù €,L>ü H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²dA(Sª\Ér¥É…NjI“æÌ— cÊ JÏž@ƒöü©ó&΃EE4eS™Fž„ª@ªTL}ZÅ 4©TƒI»bÍš’ëPª vèX¢(ÍúDËÀÕµj7)Ö©V«U©¨{×nªµ÷*ýÛ4ëYºóR{÷êáœ5Á*ʹ³âÁ ãµ,šh‚q ¶|PJ¨|…’]üx'ÊФsW¾Z÷êË_Sí¬•øÞ™­'[Ö}˜uä«[[Eì%ìØÄ_Où|9s¬ûÏ¥.PøðìÚasÇí½¹sƒ†ÛSW¹½¦ýú¼Æo8yèý’•gÞuhà`ë ´ŸwÔ%¤V€"h röY·]„ìÉ—Öƒ¨ñvÜNÀ„(âˆÀðÇÇ–àd”‘Ö`]&øáL%¦Db‰'¦\~ rуx™vڌԈÒ&¢x!†ÿAjµFd("™ã’6èãDP¾8%JU’˜¤Ž¨q¤E[¢V`‘`)æ•êÁ×eH_Úø¦’qÊy&[kÞx'™¥éQŠGú)"}y~åš`1Uh!…;)ZÞ„”NèNŽfê’¤šv*i„Ú÷éI+¤Ҩšñhꥄ¨–Š«¨Vk‡³Žêjª±*t뎵¶Ê¬›æ*+Od!UÜ_½’D–lÆvÕ§²5†`u]Ñ6”kØŽ4­µ²¡è-·M¡œ²Ôf—Ò·Žyfb²«’¸¢˜nWâJ5ï¹Ó¢æвµù•cøÂ$¯Kì~͵n›­° 7ìðÃG,±T!þïThis GIF file was assembled with GIF Construction Set from: Alchemy Mindworks Inc. P.O. Box 500 Beeton, Ontario L0G 1A0 CANADA. This comment block will not appear in files created with a registered version of GIF Construction Set;pygtk-2.24.0/examples/pygtk-demo/demos/images/gtk-logo-rgb.gif0000644000175000017500000001443311545325345021126 00000000000000GIF89akŒçÿÿÿïûõïô󪫹ÔÄèÔÜÔ˜¸­Æ¹ÅÄ/L”\lÀu’x 4# "7èÕï„x¤:Z¬5d Y$]'+4 ."dª¢Ü»Ò¼-E76Z7nNdlG7]9$7L 5(4…=`Ûëà-LE*48  ; &M–=rá2fÆpˆz$L-M¸>vâ!C‚ÌåÚ %<’/e®o{,D´9MG 'Þõç=WW +T›,[Ÿ’ª¬43\Ç,  7gÓOkw1U» Ã¸DVr¦” ‚¤Œ=!2kFZûîú&Rl #4Td\ھس˜JmÍ ,š~¬ÕÌâ($;DL&p,X%I 5'iU!¤):ÉFA9GDjÓÔÖÕe²)<9 H ØFE‚,)7 ëIKj)%6#&¨89;4P 4E&¶@4˜âÞ•pA àYhPJ,A‡~(Ût,0ñC&Η"ŠCÎwÅa¥…†Œ9ñŽˆÝ Û” @¡ƒƒ¼5¤ÚqGZp¤X@QHñ"\Ö6eS´d–¦Xä–:¼b¥˜R\T¥Ž 2AdvP0CMà  àp%‘õ ‰ƒ„¥ÝpÊRBY±D‡ÞMwÙlBL‘å h6¥l5„¢zP §þÜ10abK%qE‹9JY‚@+ÀªõÂ,Ø6儳æGÁ‚[j7°•¢2YЀët»Vaâ-œ:®ù…›#š,4!*}Ù51‚¬¥a° ü™ë¡šÈ"¶ùmÆB¥Nh[¿•V0…vCú0A ¸†TIZ´p&š:º *ƒLˆ(®¸³"›,¸h: ­‰¼1ÑBùÅ’[àŠ˜?8„[û;B: ¬ÃLÖ­;n|ÃpΗƒ¢$#F*`EÉÂuY ‚>¨C·ãF9âÀB«èCÝJÕ7Ô ôƒC#‰æ(ª¨–áÞ0BB¸ºÂGÉ@­fÍàþœCd6t·uCÞsù®yNDWAš†[ÖÍzv'»%Ô ­ŠÍÖ7\]¼ð凇‰€îœsSѹQTýaÜ[É`hRš"€Œ.ÙYúðÅe-d¦,Ù Ë÷BÓ¡¬âJAÂçqA´v`0@i,ÂUAì½<¶ñ@¿™Ø\b‰â'×^ÊcDÆQÖP†«pò6"˜Áù †ù›zkÖ|¸U)<ŠKô)\ *ÅŠõaI ÀO¿6S³Ø¹ê~EÌJšEêM˜ÃNþU»e-RrÊÁïJÓŠ…(!'€AÐT6 ¬{ZÚŽun7®”è„þ*ªÙ£æÄ›{ÉæC.H`ÐR¸%­Ì¯èŠ@œ0ƒ<1RÀ€ ä¶DMM-NCS| '·4áY?`ÂØ„ðUˆ&Ü[‘ìW4¸ÀBèŠf ƒ#\àjà€âÖ½ïõîY`€Ø‡(@¸½¡h°MØ\0„ïOwK$]œb!‹Ö•`!Ã,† °¡ nxCà ¼qP€_íz'‰Ìn#ãXHG ‰7´€B,j±† Ø!Vàc Ô9ÌlÈbtðAAn Tdî FFüÆjì© ÷¸HF&îm :¸.fÄ |ÈBìðÁ”wþÀCÌt€@ ,\Ц€|u°š½¹Ÿø@׃’±xDœ#o¨°† HF»èD x ìá4àCü€<üpá¢Æ»¬1!Œp] ‹4©ªmljôC別ˆÆ‚ hÀÒP2ôÂ6¸À/:º…#Ðà€DIñ 3¹èÓ4Ÿ§p;Žý€GºØ"Õòƒ–q>è¤ÅL ¤áÀ†\…A‚ #(yÌ B ˆ©â!„‚‹.PƒB”¯§>0\ ƒ&™ön`CøÁ¦bv™`òƒ½ó->`Èà k0ˆA aÜ@ Å@H‘†#ð!ª~Åþ"øY>¨ ôÓRWÛ‚&ÍQ>ÞT™ÝzGÂéJWXÁ†(c´¤%-%JP âÐäxjb[R? áE|@¬$@:·‹\c÷ô‡± @A—åÕÃVpOXÄ€n~I{Œ°i€"NÐ Œ”»xðÃ"PúÇ#`€ X«oü6Á(ÁnKÀ ®¤I¹êVG¸ÁÝç7н@2ˆðA¤REp ñÇI! .X£‰˜ ·`+c,øAC‡Æ?qQàr¯”O~€‹ÖÀ% ÆØotõ«ŒDªAyiÄBÚ‡Ë ^æN ½úŒ@’®ëØþˆ$®$à°¿ÔÁ"ó¥,C¿¤….t™ŸR$$Š Š`¿ dƒÔÀ‡4”á€(Š‚tš&ÖvÒæë Œ°„ Ôµk‰ñ]f¬vÄ^Ć©>¢Ðx ÃS£ùâ#À¡Uõ Í<Ô1±Þ`"7{“N#È SÎ5±‰ñ쌷\pˆÞA•Ð ‡{ÝH$Ћ$ÐKGZáPPÖ I$Ó‡qàyÝå¬8hùáw±um– ÜàW‚Ї~èÐCà ÇP‹K° ·§ƒËVZo!A @ŽæHW¦l˜{À!q` [s –Àâr|ðÜE¸ŒÝµ ‹F·”à øÑ‹K@o2¨}ѵrˆpqö #—<Ƹ÷´ t@~EAM)^ˆÁo`un "ems þ H†œ`а Ýpޤ¥ y|–ŽpÊðqÊЀ~¦0°ø’Û[ßà’€$x_—Hˆ~4à¤7Uƒ` 6Ðr¥ “¨ƒÁ  Ù`6P”r—_#W àtúÕ < ‘3@2›€É7UtPcA”}‚x° !¥„0Uß6Œ¸``†`à §gáW `Ž¥æÇdŒO@2Ü@}YR‘Pc€t&¢ˆj 16„°`|pxð ‹`Oƒž¹ ½È)• l9já 2$ mIZað°0°o± ß@|~… ¬Øš•öG~þ· „p àP×ø ƒ@A€‘æÈ $0oë°“£¶{ê Ëà™ÑUœpñlJ/À nÀ†  X•.²Lmà~ð€à߇¸QrÙ`Yðä™ ÂrÄ  ìUQ™qŽ.Òƒ‘ú)ÎøŸ±õ8˜ÙiJâ@Rt âÙ‹A€™¶G Ý`6P¡%Îð; ]Ê€‚áR ¹ˆbô lÏRÜ  j0ÕmÀ—o€ùväð~â飊@jÊ`‡H¦`à †€ %F‘ùAÈ _hbU†wÉФå› ¥{Xm„ kjt¦Ôr’Pþtʦ ÚAY`žÄ l†b)Z!7¦pqeŒq¬ã"›° µY|‚ ¥ýÈù4Un``pˆ`p¨j™Ž6à fðÌ` ÌÀ ÂU–•ÊC¡`r ¡'ä/ùyH [èW5 O w̉·óh*¤Ê°<„$°ù¨oq‹À«Qð"}PUTJ¬(•F÷”S% `¡ŽZŸdZ¦%œ0޵.Apg2 ÃÍ®OðG›–`›.§ ¢Zl°m÷Ø®K€6¯¤e¿Ù!7° °Î`‘ú£»ð“GWÎÖ¤N:Щ–pþ®.7Á^üX‹v{ZRnpl¦&f²ˆAËp Yà Šͺ­(†ô€²dò",+Å÷ á¢åš®®Ù•Œù®fÙ_Ú!ÎÀ cˆ+äÉ›¹Ø“`ЭõÀI°œŠ° [m3$Š+~@séz]êW‘ðÞ—£¶™BëP™!KàžÉ ¿yÚ€²€&Xäð‹·°VJ ^PkmöW[ìZi ÚZbG‰+4`>š2ð\ô©lëà!GP (+`µEp[hXWR·¥7+[€ÀŠ"y›’f™o 2 !‹¡…g] ¡€²Q þDÛ`Ÿ–|€µ G^Éf7à}Ê ¢ˆ1™Ë›¾ÃÙ–£u¾>š” !•0h}ðj`¹¹km»ËšÉZ|tp­% ¸ù•o¢žŸœ‚&¾Ð…ÑU¤„j a½æu›[m~ /˾Õö ,§ (V$P¦©{`wºº% Á Q 7``ç€ k°»¥qšÌC6pgxv“•¦7Ù‹©[f0²Ê¶ f2%`)Á‚ŇŸ7òb`Å÷Wt A$0Ÿ£f¤â¢·c¦ YYà“&æ `H7p‰ !`&PܲŸçä w…æ êÉŽÂùþØP­ ù›#\)Ç`Æ¤å ¨¢ °vƒÆç ÇêçWTL·3[ûkU˜Pþ lbzˆ•Ðˋ؈÷êT7œ £M…Ð’o å!¾ ÁΜM¡Ç° DMÝrI 7¸¥îà× £ Âç¹Z^h‚%ì “‰× êÀ;º\Xæ;°î°L3íãÙ¬ -ÒËë¡^m¾ k6)ÅÆ!F@ ï GçéíãEè4ÞÇt 3 and x[-3:] == '.py'] demo_list = [] for _mod in _file_list: # Leave underscored Modulnames. if _mod.startswith('_'): continue _mod = _mod[:-3] try: _doc = '' exec 'import ' + _mod + '\n' + \ '_doc = ' + _mod + '.__doc__' _description = _doc.splitlines()[0] demo_list.append((_description, _mod)) except (ImportError, AttributeError), msg: # ImportError or AttributeError (if _doc is None) #print 'failed: ', _mod pass demo_list.sort() pygtk-2.24.0/examples/pygtk-demo/demos/colorsel.py0000644000175000017500000000401311545325345017064 00000000000000#!/usr/bin/env python """Color Selector GtkColorSelection lets the user choose a color. GtkColorSelectionDialog is a prebuilt dialog containing a GtkColorSelection.""" import pygtk pygtk.require('2.0') import gtk class ColorSelectorDemo(gtk.Window): color = gtk.gdk.color_parse("blue") def __init__(self, parent=None): # Create the toplevel window gtk.Window.__init__(self) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.set_title(self.__class__.__name__) self.set_border_width(8) vbox = gtk.VBox() vbox.set_border_width(8) self.add(vbox) # Create the color swatch area frame = gtk.Frame() frame.set_shadow_type(gtk.SHADOW_IN) vbox.pack_start(frame, True, True, 8) self.d_area = gtk.DrawingArea() self.d_area.set_size_request(200, 200) self.d_area.modify_bg(gtk.STATE_NORMAL, self.color) frame.add(self.d_area) alignment = gtk.Alignment(1.0, 0.5, 0.0, 0.0) button = gtk.Button("_Change the above color") alignment.add(button) vbox.pack_start(alignment, True, True) button.connect('clicked', self.on_change_color_clicked) button.set_flags(gtk.CAN_DEFAULT) button.grab_default() self.show_all() def on_change_color_clicked(self, button): dialog = gtk.ColorSelectionDialog("Changing color") dialog.set_transient_for(self) colorsel = dialog.colorsel colorsel.set_previous_color(self.color) colorsel.set_current_color(self.color) colorsel.set_has_palette(True) response = dialog.run() if response == gtk.RESPONSE_OK: self.color = colorsel.get_current_color() self.d_area.modify_bg(gtk.STATE_NORMAL, self.color) dialog.destroy() return True def main(): ColorSelectorDemo() gtk.main() if __name__ == '__main__': main() pygtk-2.24.0/examples/glade/0000755000175000017500000000000011545327522012636 500000000000000pygtk-2.24.0/examples/glade/autoconnect.py0000644000175000017500000000056611545325345015462 00000000000000#!/usr/bin/env python # # Small test to demonstrate glade.XML.signal_autoconnect on an instance # import pygtk pygtk.require('2.0') import gtk, gtk.glade class SimpleTest: def __init__(self): xml = gtk.glade.XML('test2.glade') xml.signal_autoconnect(self) def on_button1_clicked(self, button): print 'foo!' test = SimpleTest() gtk.main() pygtk-2.24.0/examples/glade/test2.glade0000644000175000017500000000204511545325345014617 00000000000000 True window1 GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False True False True True button1 True GTK_RELIEF_NORMAL pygtk-2.24.0/examples/glade/test.glade0000644000175000017500000001122111545325345014531 00000000000000 Testing 10 yes Test Frame This is the first of two test windows. 5 yes A label yes A label no I am a tooltip yes Push Me Button This button wants to be pushed. _Push me yes yes Testing2 10 yes Testing 2 This is the second of two test windows, a test dialog box. Click the button below yes yes yes Cancel Another button that does the same as the first one... _Cancel yes yes pygtk-2.24.0/examples/glade/glade-demo.py0000644000175000017500000000050011545325345015122 00000000000000#!/usr/bin/env python import sys import pygtk pygtk.require('2.0') import gtk import gtk.glade if len(sys.argv) > 1: fname = sys.argv[1] else: fname = 'test.glade' # create widget tree ... xml = gtk.glade.XML(fname) def gtk_main_quit(*args): gtk.main_quit() xml.signal_autoconnect(locals()) gtk.main() pygtk-2.24.0/examples/glade/README0000644000175000017500000000102111545325345013431 00000000000000This directory contains examples of the use of the pyglade module, which can be used for creating user interfaces from the .glade files created by the GLADE UI builder. Just put a glade file in this directory and run: ./glade-demo.py filename.glade The pyglade module should make it even easier to prototype interfaces in python, since you can get it to look right, and act correctly when signals get emitted, then generate a C skeleton for the UI. You can find GLADE at http://www.comp.lancs.ac.uk/~damon/builder/index.htmlpygtk-2.24.0/examples/ide/0000755000175000017500000000000011545327522012323 500000000000000pygtk-2.24.0/examples/ide/return.xpm0000644000175000017500000000135511545325345014315 00000000000000/* XPM */ static char *return[] = { /* width height num_colors chars_per_pixel */ " 20 22 5 1", /* colors */ ". c None", "# c #999999", "a c #666666", "b c #333333", "c c #000000", /* pixels */ "....................", "..............c.....", "..............cc....", ".........#bcccccc...", ".....#bccccccccccc..", "..#bccccccccccccccc.", ".acccccccccccccccccc", "#cccccccccccccccccc.", "bccccccccccccccccc..", "ccccccccccccccccc...", "cccccccccb#...cc....", "ccccccb#......c.....", "cccb#..b............", "cc..bbbbbb..........", "c.bbbbbbbb.a........", "bbbbbbbbbbb#........", ".bbbbbbbbb.a........", "..bbbbbbbbb#........", "...bbbbbbb.a........", ".....bbbbbb#........", "........bb.a........", "...................." }; pygtk-2.24.0/examples/ide/edit.xpm0000644000175000017500000000143011545325345013715 00000000000000/* XPM */ static char *edit[] = { /* width height num_colors chars_per_pixel */ " 20 22 8 1", /* colors */ ". c #ffffff", "# c None", "a c #9999ff", "b c #999999", "c c #6666cc", "d c #663399", "e c #333333", "f c #000000", /* pixels */ "eeeeeeeeeeeee#######", "e..........e.e######", "e..........e..eeffff", "e..........e.effadf#", "e..........effacdf##", "e.........ffaccdff##", "e........facccdfbf##", "e.......faccddfbbf##", "e......faccddf..bf##", "e.....faccddf...bf##", "e....faccddf....bf##", "e...eaccddf.....bf##", "e...facddf......bf##", "e..eacddf.......bf##", "e..faeff........bf##", "e.eaeb..........bf##", "e.feb...........bf##", "e.fb............bf##", "e.f.............bf##", "e...............bf##", "eebbbbbbbbbbbbbbef##", "##ffffffffffffffff##" }; pygtk-2.24.0/examples/ide/edit.py0000644000175000017500000002473611545325345013557 00000000000000#!/usr/bin/env python # This is a sample implementation of an editor. import os import pygtk pygtk.require('2.0') import gtk import dialogs BLOCK_SIZE = 2048 RESPONSE_FORWARD = 1 class EditWindow(gtk.Window): def __init__(self, quit_cb=None): gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL) self.set_size_request(470, 300) self.connect("delete_event", self.file_exit) self.quit_cb = quit_cb self.vbox = gtk.VBox() self.add(self.vbox) self.vbox.show() hdlbox = gtk.HandleBox() self.vbox.pack_start(hdlbox, expand=False) hdlbox.show() self.menubar, self.toolbar = self.create_menu() hdlbox.add(self.menubar) self.menubar.show() self.vbox.pack_start(self.toolbar, expand=False) self.scrolledwin = gtk.ScrolledWindow() self.scrolledwin.show() self.vbox.pack_start(self.scrolledwin) self.text = gtk.TextView() self.text.set_editable(True) self.scrolledwin.add(self.text) self.text.show() self.buffer = self.text.get_buffer() self.dirty = 0 self.file_new() self.text.grab_focus() self.clipboard = gtk.Clipboard(selection='CLIPBOARD') self.dirname = None self.search_string = None self.last_search_iter = None return def load_file(self, fname): try: fd = open(fname) self.buffer.set_text('') buf = fd.read(BLOCK_SIZE) while buf != '': self.buffer.insert_at_cursor(buf) buf = fd.read(BLOCK_SIZE) self.text.queue_draw() self.set_title(os.path.basename(fname)) self.fname = fname self.dirname = os.path.dirname(self.fname) self.buffer.set_modified(False) self.new = 0 except: dlg = gtk.MessageDialog(self, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, "Can't open " + fname) resp = dlg.run() dlg.hide() return def create_menu(self): ui_string = """ """ actions = [ ('FileMenu', None, '_File'), ('FileNew', gtk.STOCK_NEW, None, None, None, self.file_new), ('FileOpen', gtk.STOCK_OPEN, None, None, None, self.file_open), ('FileSave', gtk.STOCK_SAVE, None, None, None, self.file_save), ('FileSaveAs', gtk.STOCK_SAVE_AS, None, None, None, self.file_saveas), ('FileExit', gtk.STOCK_QUIT, None, None, None, self.file_exit), ('EditMenu', None, '_Edit'), ('EditCut', gtk.STOCK_CUT, None, None, None, self.edit_cut), ('EditCopy', gtk.STOCK_COPY, None, None, None, self.edit_copy), ('EditPaste', gtk.STOCK_PASTE, None, None, None, self.edit_paste), ('EditClear', gtk.STOCK_REMOVE, 'C_lear', None, None, self.edit_clear), ('EditFind', gtk.STOCK_FIND, None, None, None, self.edit_find), ('EditFindNext', None, 'Find _Next', "F3", None, self.edit_find_next), ('HelpMenu', gtk.STOCK_HELP), ('HelpAbout', None, 'A_bout', None, None, self.help_about), ] self.ag = gtk.ActionGroup('edit') self.ag.add_actions(actions) self.ui = gtk.UIManager() self.ui.insert_action_group(self.ag, 0) self.ui.add_ui_from_string(ui_string) self.add_accel_group(self.ui.get_accel_group()) return (self.ui.get_widget('/menubar'), self.ui.get_widget('/toolbar')) def chk_save(self): if self.buffer.get_modified(): dlg = gtk.Dialog('Unsaved File', self, gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_YES, gtk.RESPONSE_YES, gtk.STOCK_NO, gtk.RESPONSE_NO, gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)) lbl = gtk.Label((self.fname or "Untitled")+ " has not been saved\n" + "Do you want to save it?") lbl.show() dlg.vbox.pack_start(lbl) ret = dlg.run() dlg.hide() if ret == gtk.RESPONSE_NO: return 0 if ret == gtk.RESPONSE_YES: if self.file_save(): return 0 return 1 return 0 def file_new(self, mi=None): if self.chk_save(): return self.buffer.set_text('') self.buffer.set_modified(False) self.fname = None self.set_title("Untitled") self.new = 1 return def file_open(self, mi=None): if self.chk_save(): return fname = dialogs.OpenFile('Open File', self, self.dirname, self.fname) if not fname: return self.load_file(fname) return def file_save(self, mi=None): if self.new: return self.file_saveas() ret = False try: start, end = self.buffer.get_bounds() blockend = start.copy() fd = open(self.fname, "w") while blockend.forward_chars(BLOCK_SIZE): buf = self.buffer.get_text(start, blockend) fd.write(buf) start = blockend.copy() buf = self.buffer.get_text(start, blockend) fd.write(buf) fd.close() self.buffer.set_modified(False) ret = True except: dlg = gtk.MessageDialog(self, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, "Error saving file " + self.fname) resp = dlg.run() dlg.hide() return ret def file_saveas(self, mi=None): fname = dialogs.SaveFile('Save File As', self, self.dirname, self.fname) if not fname: return False self.fname = fname self.dirname = os.path.dirname(self.fname) self.set_title(os.path.basename(fname)) self.new = 0 return self.file_save() def file_exit(self, mi=None, event=None): if self.chk_save(): return True self.hide() self.destroy() if self.quit_cb: self.quit_cb(self) return False def edit_cut(self, mi): self.buffer.cut_clipboard(self.clipboard, True) return def edit_copy(self, mi): self.buffer.copy_clipboard(self.clipboard) return def edit_paste(self, mi): self.buffer.paste_clipboard(self.clipboard, None, True) return def edit_clear(self, mi): self.buffer.delete_selection(True, True) return def _search(self, search_string, iter = None): if iter is None: start = self.buffer.get_start_iter() else: start = iter i = 0 if search_string: self.search_string = search_string res = start.forward_search(search_string, gtk.TEXT_SEARCH_TEXT_ONLY) if res: match_start, match_end = res self.buffer.place_cursor(match_start) self.buffer.select_range(match_start, match_end) self.text.scroll_to_iter(match_start, 0.0) self.last_search_iter = match_end else: self.search_string = None self.last_search_iter = None def edit_find(self, mi): def dialog_response_callback(dialog, response_id): if response_id == gtk.RESPONSE_CLOSE: dialog.destroy() return self._search(search_text.get_text(), self.last_search_iter) search_text = gtk.Entry() s = self.buffer.get_selection_bounds() if len(s) > 0: search_text.set_text(self.buffer.get_slice(s[0], s[1])) dialog = gtk.Dialog("Search", self, gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_FIND, RESPONSE_FORWARD, gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)) dialog.vbox.pack_end(search_text, True, True, 0) dialog.connect("response", dialog_response_callback) search_text.show() search_text.grab_focus() dialog.show_all() response_id = dialog.run() def edit_find_next(self, mi): self._search(self.search_string, self.last_search_iter) def help_about(self, mi): dlg = gtk.MessageDialog(self, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, "Copyright (C)\n" "1998 James Henstridge\n" "2004 John Finlay\n" "This program is covered by the GPL>=2") dlg.run() dlg.hide() return def edit(fname, mainwin=False): if mainwin: quit_cb = lambda w: gtk.main_quit() else: quit_cb = None w = EditWindow(quit_cb=quit_cb) w.load_file(fname) w.show() w.set_size_request(0,0) if mainwin: gtk.main() return if __name__ == '__main__': import sys edit(sys.argv[-1], mainwin=True) pygtk-2.24.0/examples/ide/gtkprof.py0000755000175000017500000000751211545325345014302 00000000000000#!/usr/bin/env python import profile, pstats, fpformat import pygtk pygtk.require('2.0') import gtk class PStatWindow(gtk.Window): def __init__(self, stats): gtk.Window.__init__(self) self.connect("destroy", self.quit) self.connect("delete_event", self.quit) self.set_title("Profile Statistics") self.stats = stats box1 = gtk.VBox() self.add(box1) box1.show() text = `stats.total_calls` + " function calls " if stats.total_calls != stats.prim_calls: text = text + "( " + `stats.prim_calls` + " primitive calls) " text = text + "in " + fpformat.fix(stats.total_tt, 3) + " CPU seconds" label = gtk.Label(text) label.set_padding(2, 2) box1.pack_start(label, expand=False) label.show() swin = gtk.ScrolledWindow() swin.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) box1.pack_start(swin) swin.show() titles = [('ncalls', 40), ('tottime', 50), ('percall', 50), ('cumtime', 50), ('percall', 50), ('filename:lineno(function)', 10)] ls = gtk.ListStore(*((str,)*len(titles))) list = gtk.TreeView(ls) for n in range(len(titles)): cell = gtk.CellRendererText() cell.set_property('xalign', 1.0) tvc = gtk.TreeViewColumn(titles[n][0], cell, text=n) tvc.set_min_width(titles[n][1]) list.append_column(tvc) list.set_size_request(500, 200) self.list = list list.set_border_width(10) swin.add(list) list.show() self.insert_stats() separator = gtk.HSeparator() box1.pack_start(separator, expand=False) separator.show() box2 = gtk.VBox(spacing=10) box2.set_border_width(10) box1.pack_start(box2, expand=False) box2.show() button = gtk.Button("close") button.connect("clicked", self.quit) self.close_button = button box2.pack_start(button) button.set_flags(gtk.CAN_DEFAULT) button.grab_default() button.show() def quit(self, *args): self.hide() self.destroy() gtk.main_quit() def get_stats_list(self): if self.stats.fcn_list: return self.stats.fcn_list[:] else: return self.stats.stats.keys() def insert_stats(self): list = self.get_stats_list() if list: row = [None] * 6 model = self.list.get_model() for func in list: cc,nc,tt,ct,callers = self.stats.stats[func] row[0] = `nc` if nc != cc: row[0] = row[0] + '/' + `cc` row[1] = fpformat.fix(tt, 3) if nc == 0: row[2] = '' else: row[2] = fpformat.fix(tt/nc, 3) row[3] = fpformat.fix(ct, 3) if cc == 0: row[4] = '' else: row[4] = fpformat.fix(ct/cc, 3) file,line,name = func row[5] = file + ":" + `line` + "(" + name + \ ")" self.list.get_model().append(row) return def run(cmd): prof = profile.Profile() try: stats = pstats.Stats(prof.run(cmd)) except SystemExit: pass stats.strip_dirs().sort_stats("time", "module", "name") win = PStatWindow(stats) win.show() gtk.main() def run_file(file): return run('execfile("' + file + '")') if __name__ == '__main__': import sys, os if not sys.argv[1:]: print "usage: gtkprof.py scriptfile [args ...]" sys.exit(2) filename = sys.argv[1] del sys.argv[0] sys.path.insert(0, os.path.dirname(filename)) run_file(filename) pygtk-2.24.0/examples/ide/step.xpm0000644000175000017500000000135611545325345013752 00000000000000/* XPM */ static char *forward[] = { /* width height num_colors chars_per_pixel */ " 20 22 5 1", /* colors */ ". c None", "# c #999999", "a c #666666", "b c #333333", "c c #000000", /* pixels */ "....................", "........bb.a........", ".....bbbbbb#........", "...bbbbbbb.a........", "..bbbbbbbbb#........", ".bbbbbbbbb.a........", "bbbbbbbbbbb#........", "c.bbbbbbbb.a........", "cc..bbbbbb..........", "cccb#..b............", "ccccccb#......c.....", "cccccccccb#...cc....", "ccccccccccccccccc...", "bccccccccccccccccc..", "#cccccccccccccccccc.", ".acccccccccccccccccc", "..#bccccccccccccccc.", ".....#bccccccccccc..", ".........#bcccccc...", "..............cc....", "..............c.....", "...................." }; pygtk-2.24.0/examples/ide/continue.xpm0000644000175000017500000000114411545325345014616 00000000000000/* XPM */ static char * continue_xpm[] = { "20 22 2 1", " c None", ". c #000000", " ", " ", " . . ", " .. .. ", " ... ... ", " .... .... ", " ..... ..... ", " ...... ...... ", " ....... ....... ", " ........ ........ ", " .................. ", " .................. ", " ........ ........ ", " ....... ....... ", " ...... ...... ", " ..... ..... ", " .... .... ", " ... ... ", " .. .. ", " . . ", " ", " "}; pygtk-2.24.0/examples/ide/quit.xpm0000644000175000017500000000137211545325345013757 00000000000000/* XPM */ static char *quit[] = { /* width height num_colors chars_per_pixel */ " 20 22 6 1", /* colors */ ". c #ffcc33", "# c None", "a c #996600", "b c #666666", "c c #333333", "d c #000000", /* pixels */ "####################", "####################", "####################", "########d####d######", "#######dad##dd###dd#", "#######d.addaad#dad#", "######da......dda.d#", "#dddddd..........ad#", "da...............dc#", "cda..............dc#", "#cd..............ad#", "##d...............ad", "#da.............addc", "#d.............ddcc#", "da.............dc###", "dddd...........ad###", "#ccd........adaad###", "###d..da....dcddd###", "###dbdcda...c#ccc###", "###cdc#ccdadc#######", "####c###ccdc########", "##########c#########" }; pygtk-2.24.0/examples/ide/dialogs.py0000644000175000017500000000346011545325345014243 00000000000000import pygtk pygtk.require('2.0') import gtk import os def InputBox(title, label, parent, text=''): dlg = gtk.Dialog(title, parent, gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_OK, gtk.RESPONSE_OK, gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)) lbl = gtk.Label(label) lbl.show() dlg.vbox.pack_start(lbl) entry = gtk.Entry() if text: entry.set_text(text) entry.show() dlg.vbox.pack_start(entry, False) resp = dlg.run() text = entry.get_text() dlg.hide() if resp == gtk.RESPONSE_CANCEL: return None return text def OpenFile(title, parent=None, dirname=None, fname=None): dlg = gtk.FileChooserDialog(title, parent, buttons=(gtk.STOCK_OK, gtk.RESPONSE_OK, gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)) if fname: dlg.set_current_folder(os.path.dirname(fname)) elif dirname: dlg.set_current_folder(dirname) dlg.set_local_only(True) resp = dlg.run() fname = dlg.get_filename() dlg.hide() if resp == gtk.RESPONSE_CANCEL: return None return fname def SaveFile(title, parent=None, dirname=None, fname=None): dlg = gtk.FileChooserDialog(title, parent, gtk.FILE_CHOOSER_ACTION_SAVE, buttons=(gtk.STOCK_OK, gtk.RESPONSE_OK, gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)) if fname: dlg.set_filename(fname) elif dirname: dlg.set_current_folder(dirname) dlg.set_local_only(True) resp = dlg.run() fname = dlg.get_filename() dlg.hide() if resp == gtk.RESPONSE_CANCEL: return None return fname pygtk-2.24.0/examples/ide/gtkdb.py0000755000175000017500000003553011545325345013722 00000000000000#!/usr/bin/env python import sys import bdb import repr import string import linecache # for linecache.getlines(filename) import pygtk pygtk.require('2.0') import gtk import dialogs class PyGTKDb(gtk.Window, bdb.Bdb): ui_string = """ """ def __init__(self): gtk.Window.__init__(self) bdb.Bdb.__init__(self) self.realize() self.set_title("PyGTKDb") self.connect("destroy", self.do_quit) self.connect("delete_event", self.do_quit) self.box = gtk.VBox() self.add(self.box) self.box.show() self.add_stock_ids() actions = [ ('Next', 'pyide-next', None, None, "Next statement", self.do_next), ('Step', 'pyide-step', None, None, "Step into function", self.do_step), ('Return', 'pyide-return', None, None, "Continue execution to end of function", self.do_return), ('Continue', 'pyide-continue', None, None, "Continue execution to next break point", self.do_continue), ('Break', 'pyide-break', None, None, "Toggle break point at selected line", self.do_break), ('Edit', 'pyide-edit', None, None, "Edit the value of the selected variable", self.do_edit), ('Run', 'pyide-run', None, None, "Execute some code in the current stack context", self.do_run), ('Quit', 'pyide-quit', None, None, "Quit the debugger", self.do_quit), ] self.ag = gtk.ActionGroup('PyIDE Actions') self.ag.add_actions(actions) self.ui = gtk.UIManager() self.ui.insert_action_group(self.ag, 0) self.ui.add_ui_from_string(self.ui_string) self.add_accel_group(self.ui.get_accel_group()) self.box.pack_start(self.ui.get_widget('/Toolbar'), expand=False) sep = gtk.HSeparator() self.box.pack_start(sep, expand=False) sep.show() vpane = gtk.VPaned() self.box.pack_start(vpane) vpane.show() hpane = gtk.HPaned() vpane.add1(hpane) hpane.show() swin = gtk.ScrolledWindow() swin.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) hpane.add1(swin) swin.show() ls = gtk.ListStore(str) self.stackdisp = gtk.TreeView(ls) tvc = gtk.TreeViewColumn('Stack Frame', gtk.CellRendererText(), text=0) self.stackdisp.append_column(tvc) self.stackdisp.set_size_request(280, 125) selection = self.stackdisp.get_selection() selection.set_mode(gtk.SELECTION_BROWSE) selection.connect("changed", self.update_curstack) self.stackdisp.set_border_width(2) swin.add(self.stackdisp) self.stackdisp.show() swin = gtk.ScrolledWindow() swin.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) hpane.add2(swin) swin.show() ls = gtk.ListStore(str, str, str) self.vardisp = gtk.TreeView(ls) titles = ['local var', 'type', 'value'] for n in range(len(titles)): tvc = gtk.TreeViewColumn(titles[n], gtk.CellRendererText(), text=n) self.vardisp.append_column(tvc) selection = self.vardisp.get_selection() selection.set_mode(gtk.SELECTION_BROWSE) selection.connect("changed", self.update_selectedvar) self.vardisp.set_border_width(2) self.vardisp.set_border_width(2) swin.add(self.vardisp) self.vardisp.show() self.vardisp.selected = 0 self.vardisp.varnames = [] swin = gtk.ScrolledWindow() swin.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) vpane.add2(swin) swin.show() self.minibreak = gtk.Image() self.minibreak.set_from_file("minibreak.xpm") self.minibreak.show() ls = gtk.ListStore(gtk.gdk.Pixbuf, str, str) self.filedisp = gtk.TreeView(ls) titles = ['break', 'lineno', 'line'] cell = gtk.CellRendererPixbuf() tvc = gtk.TreeViewColumn(None, cell, pixbuf=0) tvc.set_min_width(14) tvc.set_widget(self.minibreak) self.filedisp.append_column(tvc) cell = gtk.CellRendererText() cell.set_property('xalign', 1.0) tvc = gtk.TreeViewColumn(titles[1], cell, text=1) self.filedisp.append_column(tvc) cell = gtk.CellRendererText() tvc = gtk.TreeViewColumn(titles[2], cell, text=2) self.filedisp.append_column(tvc) self.minibreak = self.minibreak.get_pixbuf() selection = self.filedisp.get_selection() selection.set_mode(gtk.SELECTION_BROWSE) selection.connect("changed", self.update_selection) self.filedisp.connect('row-activated', lambda t,p,c: self.do_break()) self.filedisp.set_border_width(2) self.filedisp.set_size_request(600, 200) swin.add(self.filedisp) self.filedisp.show() separator = gtk.HSeparator() self.box.pack_start(separator, expand=False) separator.show() align = gtk.Alignment(0.0, 0.5, 0.0, 0.0) self.box.pack_start(align, expand=False) align.show() self.status = gtk.Label() self.status.set_padding(4, 1) align.add(self.status) self.status.show() self.filename = None self.selected = 0 self.blockupdate = 0 return def add_stock_ids(self): ids = [ ('pyide-next', '_Next', gtk.gdk.CONTROL_MASK, gtk.keysyms.N, 'pyide'), ('pyide-step', '_Step', gtk.gdk.CONTROL_MASK, gtk.keysyms.S, 'pyide'), ('pyide-return', '_Return', gtk.gdk.CONTROL_MASK, gtk.keysyms.R, 'pyide'), ('pyide-continue', '_Continue', gtk.gdk.CONTROL_MASK, gtk.keysyms.C, 'pyide'), ('pyide-break', '_Break', gtk.gdk.CONTROL_MASK, gtk.keysyms.B, 'pyide'), ('pyide-edit', '_Edit', gtk.gdk.CONTROL_MASK, gtk.keysyms.E, 'pyide'), ('pyide-run', 'R_un', gtk.gdk.CONTROL_MASK, gtk.keysyms.U, 'pyide'), ('pyide-quit', '_Quit', gtk.gdk.CONTROL_MASK, gtk.keysyms.Q, 'pyide'), ] gtk.stock_add(ids) names = ['next', 'step', 'return', 'continue', 'break', 'edit', 'run', 'quit'] self.iconfactory = gtk.IconFactory() for name in names: iconset = gtk.IconSet(gtk.gdk.pixbuf_new_from_file(name+'.xpm')) self.iconfactory.add('pyide-'+name, iconset) self.iconfactory.add_default() return def set_status(self, str): self.status.set_text(str) return def update_selection(self, sel): if self.blockupdate: return model, iter = sel.get_selected() r = model.get_path(iter)[0] self.selected = r + 1 return def update_curstack(self, sel): if self.blockupdate: return model, iter = sel.get_selected() r = model.get_path(iter)[0] self.curindex = r self.curframe = self.stack[self.curindex][0] self.lineno = None self.update_code_listing() self.update_var_listing() return def update_selectedvar(self, sel): model, iter = sel.get_selected() if iter: r = model.get_path(iter)[0] self.vardisp.selected = r return def set_quit(self): self.hide() self.destroy() bdb.Bdb.set_quit(self) def reset(self): bdb.Bdb.reset(self) self.forget() def forget(self): self.lineno = None self.stack = [] self.curindex = 0 self.curframe = None def setup(self, f, t): self.forget() self.stack, self.curindex = self.get_stack(f, t) self.curframe = self.stack[self.curindex][0] return # interaction functions -- overriden from bdb def user_line(self, frame): # called when we stop or break at this line self.interaction(frame, None) def user_return(self, frame, return_value): # called when a return trap is set here frame.f_locals['__return__'] = return_value if frame.f_code.co_name: func = frame.f_code.co_name else: func = "" self.set_status(func + " returned " + repr.repr(return_value)) self.interaction(frame, None) def user_exception(self, frame, (exc_type, exc_value, exc_traceback)): frame.f_locals['__exception__'] = exc_type, exc_value if type(exc_type) == type(''): exc_type_name = exc_type else: exc_type_name = exc_type.__name__ self.set_status(exc_type_name + ':' + repr.repr(exc_value)) self.interaction(frame, exc_traceback) def interaction(self, frame, traceback): self.setup(frame, traceback) self.update_stack_listing(self.curindex) gtk.main() self.forget() def update_stack_listing(self, curindex): self.blockupdate = 1 model = self.stackdisp.get_model() model.clear() for i in range(len(self.stack)): frame_lineno = self.stack[i] row = self.format_stack_entry(frame_lineno, "##!##") row = string.split(row, "##!##")[0] model.append([row]) self.blockupdate = 0 self.stackdisp.scroll_to_cell(curindex, None, True, 1.0, 0.0) self.stackdisp.get_selection().select_path(curindex) return def update_var_listing(self): model = self.vardisp.get_model() model.clear() locals = self.curframe.f_locals self.vardisp.varnames = locals.keys() self.vardisp.varnames.sort() for var in self.vardisp.varnames: row = [var, type(locals[var]).__name__, repr.repr(locals[var])] model.append(row) self.vardisp.get_selection().select_path(0) return def update_code_listing(self): frame = self.curframe newfile = frame.f_code.co_filename if newfile != self.filename: lines = linecache.getlines(newfile) self.filename = newfile self.blockupdate = 1 model = self.filedisp.get_model() model.clear() breaks = self.get_file_breaks(newfile) for line in range(len(lines)): if line+1 in breaks: model.append([self.minibreak, line+1, lines[line].rstrip()]) else: model.append([None, line+1, lines[line].rstrip()]) self.blockupdate = 0 self.selected = frame.f_lineno lineno = self.selected if newfile != '': self.filedisp.scroll_to_cell(lineno - 1, None, True, 1.0, 0.0) self.filedisp.get_selection().select_path(lineno - 1) return def do_next(self, _b=None): self.set_next(self.curframe) gtk.main_quit() def do_step(self, _b=None): self.set_step() gtk.main_quit() def do_return(self, _b=None): self.set_return(self.curframe) gtk.main_quit() def do_continue(self, _b=None): self.set_continue() gtk.main_quit() def do_quit(self, _b=None, _e=None): self.set_quit() gtk.main_quit() def do_break(self, _b=None): breaks = self.get_file_breaks(self.filename) if self.selected in breaks: err = self.clear_break(self.filename, self.selected) if err: self.set_status(err) return self.filedisp.get_model()[self.selected-1][0] = None else: err = self.set_break(self.filename, self.selected) if err: self.set_status(err) return self.filedisp.get_model()[self.selected-1][0] = self.minibreak return def do_run(self, _b=None): line = dialogs.InputBox("Execute Code", "Enter code to execute:", self) if line == None: return locals = self.curframe.f_locals globals = self.curframe.f_globals globals['__privileged__'] = 1 try: code = compile(line + '\n', '', 'single') exec code in globals, locals except: if type(sys.exc_type) == type(''): exc_type_name = sys.exc_type else: exc_type_name = sys.exc_type.__name__ self.set_status('*** ' + exc_type_name + ': ' + str(sys.exc_value)) return self.update_var_listing() return def do_edit(self, _b=None): locals = self.curframe.f_locals varname = self.vardisp.varnames[self.vardisp.selected] val = repr.repr(locals[varname]) value = dialogs.InputBox("Edit Variable", "Enter new value for " + varname + ":", self, val) if value == None: return globals = self.curframe.f_globals globals['__privileged__'] = 1 try: val = eval(value, globals, locals) self.curframe.f_locals[varname] = val except: if type(sys.exc_type) == type(''): exc_type_name = sys.exc_type else: exc_type_name = sys.exc_type.__name__ self.set_status('*** ' + exc_type_name + ': ' + str(sys.exc_value)) return row = self.vardisp.selected model = self.vardisp.get_model() model[row][1] = type(val).__name__ model[row][2] = repr.repr(val) # this makes up the interface that is compatible with pdb. def run(statement, globals=None, locals=None): win = PyGTKDb() win.show() win.run(statement, globals, locals) def runeval(expression, globals=None, locals=None): win = PyGTKDb() win.show() return win.runeval(expression, globals, locals) def runcall(*args): win = PyGTKDb() win.show() return apply(win.runcall, args) def set_trace(): win = PyGTKDb() win.show() win.set_trace() def post_mortem(traceback): win = PyGTKDb() win.show() win.reset() win.interaction(None, traceback) def pm(): post_mortem(sys.last_traceback) if __name__ == '__main__': import os if not sys.argv[1:]: print "usage: gtkdb.py scriptfile [args ...]" sys.exit(2) filename = sys.argv[1] del sys.argv[0] # delete gtkdb.py sys.path.insert(0, os.path.dirname(filename)) run('execfile("' + filename + '")', {'__name__': '__main__'}) pygtk-2.24.0/examples/ide/next.xpm0000644000175000017500000000127611545325345013756 00000000000000/* XPM */ static char *next[] = { /* width height num_colors chars_per_pixel */ " 20 22 2 1", /* colors */ ". c None", "# c #000000", /* pixels */ "....................", "....................", "......#.............", "......##............", "......###...........", "......####..........", "......#####.........", "......######........", "......#######.......", "......########......", "......#########.....", "......#########.....", "......########......", "......#######.......", "......######........", "......#####.........", "......####..........", "......###...........", "......##............", "......#.............", "....................", "...................." }; pygtk-2.24.0/examples/ide/pyide.py0000755000175000017500000002225311545325345013737 00000000000000#!/usr/bin/env python import pygtk pygtk.require('2.0') import gtk import gtkcons, gtkdb, gtkprof, edit, dialogs import os, sys, string # select a good VT emulator for vt in 'Eterm', 'nxterm', 'xterm-color', 'xterm', 'rxvt': for dirname in string.split(os.environ['PATH'], os.pathsep): fullname = os.path.join(dirname, vt) if os.path.exists(fullname): VT_CMD = fullname + ' -geometry 80x6 -e ' break else: continue break else: VT_CMD='' # this is not ideal ui_string = """ """ pythonmenu_uistring = """ """ class Application(gtk.Window): def __init__(self): gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL) self.connect("destroy", self.quit) self.connect("delete_event", self.quit) self.set_title("Python") self.set_size_request(475, 325) self.main_box = gtk.VBox() self.add(self.main_box) self.main_box.show() hdlbox = gtk.HandleBox() self.main_box.pack_start(hdlbox, expand=False) hdlbox.show() actions = [ ('FileMenu', None, '_File'), ('FileNew', gtk.STOCK_NEW, None, None, None, self.file_new), ('FileOpen', gtk.STOCK_OPEN, None, None, None, self.file_open), ('FileExit', gtk.STOCK_QUIT, None, None, None, self.file_exit), ('EditMenu', None, '_Edit'), ('EditCopy', gtk.STOCK_COPY, None, None, None, self.edit_copy), ('EditPaste', gtk.STOCK_PASTE, None, None, None, self.edit_paste), ('EditClear', gtk.STOCK_REMOVE, 'C_lear', None, None, self.edit_clear), ('HelpMenu', gtk.STOCK_HELP), ('HelpAbout', None, 'A_bout', None, None, self.help_about), ] python_actions = [ ('PythonMenu', None, '_Python'), ('PythonReload', None, '_Reload Module...', None, None, self.python_reload), ('PythonRun', None, 'R_un...', None, None, self.python_run), ('PythonDebug', None, '_Debug...', None, None, self.python_debug), ('PythonProfile', None, 'Pro_file...', None, None, self.python_prof), ] self.ag = gtk.ActionGroup('ide') self.ag.add_actions(actions) self.ag.add_actions(python_actions) self.ui = gtk.UIManager() self.ui.insert_action_group(self.ag, 0) self.ui.add_ui_from_string(ui_string) self.ui.add_ui_from_string(pythonmenu_uistring) self.add_accel_group(self.ui.get_accel_group()) hdlbox.add(self.ui.get_widget('/menubar')) #self.ui.get_widget('/menubar').show() self.interp = gtkcons.Console( namespace={'__builtins__': __builtins__, '__name__': '__main__', '__doc__': None}, quit_cb=self.quit) self.main_box.pack_start(self.interp) self.interp.show() self.interp.init() self.editwins = [] return def quit(self, *args): for win in self.editwins: if win.chk_save(): return win.hide() win.destroy() gtk.main_quit() return def reload_file(self, fname): if not os.path.isfile(fname): gtk.MessageDialog(self, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, fname + " was not found.") return dir = os.path.dirname(fname) base = os.path.basename(fname) if dir not in sys.path: sys.path.insert(0, dir) if string.lower(base[-3:]) == '.py': base = base[:-3] elif string.lower(base[-4:]) == '.pyc': base = base[:-4] if not sys.modules.has_key(base): self.interp.run('import ' + base) else: self.interp.run('import ' + base) self.interp.run('reload(' + base + ')') return # execute a python script normally or with the debugger or profiler def run_script(self, fname): if not fname or not os.path.exists(fname): dlg = gtk.MessageDialog(self, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, "Invalid filename "+fname) dlg.run() return args = dialogs.InputBox("Arguments", "Enter any command line arguments", self) if args == None: return os.system(VT_CMD+'python "'+fname+'" ' + args + ' &') return def debug_script(self, fname): if not fname or not os.path.exists(fname): dlg = gtk.MessageDialog(self, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, "Invalid filename "+fname) dlg.run() return args = dialogs.InputBox("Arguments", "Enter any command line arguments", self) if args == None: return os.system(VT_CMD+'python '+gtkdb.__file__+' "'+fname+'" ' + args + ' &') return def profile_script(self, fname): if not fname or not os.path.exists(fname): dlg = gtk.MessageDialog(self, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, "Invalid filename "+fname) dlg.run() return args = dialogs.InputBox("Arguments", "Enter any command line arguments", self) if args == None: return os.system(VT_CMD+'python '+gtkprof.__file__+' "'+fname+'" ' + args + ' &') return def add_py_menu(self, ew): python_actions = [ ('PythonMenu', None, '_Python'), ('PythonReload', None, '_Reload Module'), ('PythonRun', None, 'R_un...', None, None, lambda w, ew=ew: self.run_script(ew.fname)), ('PythonDebug', None, '_Debug...', None, None, lambda w, ew=ew: self.debug_script(ew.fname)), ('PythonProfile', None, 'Pro_file...', None, None, lambda w, ew=ew: self.profile_script(ew.fname)), ] ew.ag.add_actions(python_actions) ew.ui.add_ui_from_string(pythonmenu_uistring) return def file_new(self, mi=None): ew = edit.EditWindow(quit_cb=self.rem_editwin) self.editwins.append(ew) self.add_py_menu(ew) ew.show() ew.set_size_request(0,0) return def file_open(self, mi=None): fname = dialogs.OpenFile('Open', self) if fname: ew = edit.EditWindow(quit_cb=self.rem_editwin) ew.load_file(fname) self.editwins.append(ew) self.add_py_menu(ew) ew.show() ew.set_size_request(0,0) return def rem_editwin(self, win=None, event=None): for i in range(len(self.editwins)): if self.editwins[i] == win: del self.editwins[i] break return def file_exit(self, mi=None): self.quit() return def edit_copy(self, mi=None): self.interp.text.copy_clipboard(0) return def edit_paste(self, mi=None): self.interp.line.paste_clipboard(0) return def edit_clear(self, mi=None): self.interp.line.delete_selection() return def python_reload(self, mi=None): print "python_reload" return def python_run(self, mi=None): fname = dialogs.OpenFile("Run", self) if fname: self.run_script(fname) return def python_debug(self, mi=None): fname = dialogs.OpenFile("Debug", self) if fname: self.debug_script(fname) return def python_prof(self, mi=None): fname = dialogs.OpenFile("Profile", self) if fname: self.profile_script(fname) return def help_about(self, mi=None): dlg = gtk.MessageDialog(self, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, "Copyright (C)\n" \ "1998 James Henstridge\n" \ "2004 John Finlay\n" \ "This program is covered by the GPL>=2") dlg.run() dlg.hide() return if __name__ == '__main__': app = Application() app.show() app.set_size_request(0,0) gtk.main() pygtk-2.24.0/examples/ide/README0000644000175000017500000000045711545325345013132 00000000000000This directory contains some tools that can be used to help develop python applications. There is a graphical front end to the profiler and debugger, and a graphical python console, and a 'module browser'. I will probably link these together with an editor (just use emacs, or write one in python?). pygtk-2.24.0/examples/ide/gtkcons.py0000755000175000017500000002723511545325345014302 00000000000000#!/usr/bin/env python # Interactive Python-GTK Console # Copyright (C), # 1998 James Henstridge # 2004 John Finlay # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # This module implements an interactive python session in a GTK window. To # start the session, use the gtk_console command. Its specification is: # gtk_console(namespace, title, copyright) # where namespace is a dictionary representing the namespace of the session, # title is the title on the window and # copyright is any additional copyright info to print. # # As well as the starting attributes in namespace, the session will also # have access to the list __history__, which is the command history. import sys, string, traceback import pygtk pygtk.require('2.0') import gobject import gtk stdout = sys.stdout if not hasattr(sys, 'ps1'): sys.ps1 = '>>> ' if not hasattr(sys, 'ps2'): sys.ps2 = '... ' # some functions to help recognise breaks between commands def remQuotStr(s): '''Returns s with any quoted strings removed (leaving quote marks)''' r = '' inq = 0 qt = '' prev = '_' while len(s): s0, s = s[0], s[1:] if inq and (s0 != qt or prev == '\\'): prev = s0 continue prev = s0 if s0 in '\'"': if inq: inq = 0 else: inq = 1 qt = s0 r = r + s0 return r def bracketsBalanced(s): '''Returns true iff the brackets in s are balanced''' s = filter(lambda x: x in '()[]{}', s) stack = [] brackets = {'(':')', '[':']', '{':'}'} while len(s) != 0: if s[0] in ")]}": if len(stack) != 0 and brackets[stack[-1]] == s[0]: del stack[-1] else: return 0 else: stack.append(s[0]) s = s[1:] return len(stack) == 0 class gtkoutfile: '''A fake output file object. It sends output to a GTK TextView widget, and if asked for a file number, returns one set on instance creation''' def __init__(self, w, fn, font): self.__fn = fn self.__w = w self.__b = w.get_buffer() self.__ins = self.__b.get_mark('insert') self.__font = font def close(self): pass flush = close def fileno(self): return self.__fn def isatty(self): return 0 def read(self, a): return '' def readline(self): return '' def readlines(self): return [] def write(self, s): #stdout.write(str(self.__w.get_point()) + '\n') iter = self.__b.get_iter_at_mark(self.__ins) self.__b.insert_with_tags(iter, s, self.__font) self.__w.scroll_to_mark(self.__ins, 0.0) self.__w.queue_draw() def writelines(self, l): iter = self.__b.get_iter_at_mark(self.__ins) for s in l: self.__b.insert_with_tags(iter, s, self.__font) self.__w.scroll_to_mark(self.__ins, 0.0) self.__w.queue_draw() def seek(self, a): raise IOError, (29, 'Illegal seek') def tell(self): raise IOError, (29, 'Illegal seek') truncate = tell class Console(gtk.VBox): def __init__(self, namespace={}, copyright='', quit_cb=None): gtk.VBox.__init__(self, spacing=2) self.set_border_width(2) self.copyright = copyright #self.set_size_request(475, 300) self.quit_cb = quit_cb self.inp = gtk.HBox() self.pack_start(self.inp) self.inp.show() self.scrolledwin = gtk.ScrolledWindow() self.scrolledwin.show() self.inp.pack_start(self.scrolledwin, padding=1) self.text = gtk.TextView() self.text.set_editable(False) self.text.set_wrap_mode(gtk.WRAP_WORD) self.text.set_size_request(500, 400) self.scrolledwin.add(self.text) self.text.show() self.buffer = self.text.get_buffer() #create the tags we will use self.normal = self.buffer.create_tag('Normal', font='Helvetica 10', foreground='black') self.title = self.buffer.create_tag('Title', font='Helvetica Bold 10', foreground='darkgreen') self.error = self.buffer.create_tag('Error', font='Helvetica 12', foreground='red') self.command = self.buffer.create_tag('Command', font='Helvetica Bold 10', foreground='blue') self.inputbox = gtk.HBox(spacing=2) self.pack_end(self.inputbox, expand=False) self.inputbox.show() self.prompt = gtk.Label(sys.ps1) self.prompt.set_padding(xpad=2, ypad=0) self.prompt.set_size_request(26, -1) self.inputbox.pack_start(self.prompt, fill=False, expand=False) self.prompt.show() self.closer = gtk.Button(stock=gtk.STOCK_CLOSE) self.closer.connect("clicked", self.quit) self.inputbox.pack_end(self.closer, fill=False, expand=False) self.closer.show() self.line = gtk.Entry() self.line.set_size_request(400,-1) self.line.connect("key_press_event", self.key_function) self.inputbox.pack_start(self.line, padding=2) self.line.show() # now let the text box be resized self.text.set_size_request(0, 0) self.line.set_size_request(0, -1) self.namespace = namespace self.cmd = '' self.cmd2 = '' # set up hooks for standard output. self.stdout = gtkoutfile(self.text, sys.stdout.fileno(), self.normal) self.stderr = gtkoutfile(self.text, sys.stderr.fileno(), self.error) # set up command history self.history = [''] self.histpos = 0 self.namespace['__history__'] = self.history def init(self): self.text.realize() self.insert = self.buffer.get_mark('insert') iter = self.buffer.get_iter_at_mark(self.insert) self.buffer.insert_with_tags(iter, 'Python %s\n%s\n\n' % (sys.version, sys.copyright) + 'Interactive Python-GTK Console - \n' + 'Copyright (C)\n' \ '1998 James Henstridge\n' \ '2004 John Finlay\n\n' + self.copyright + '\n', self.title) self.text.scroll_to_mark(self.insert, 0.0) self.line.grab_focus() def quit(self, *args): self.hide() self.destroy() if self.quit_cb: self.quit_cb() def key_function(self, entry, event): if event.keyval == gtk.keysyms.Return: self.line.emit_stop_by_name("key_press_event") self.eval() if event.keyval == gtk.keysyms.Tab: self.line.emit_stop_by_name("key_press_event") self.line.append_text('\t') gobject.idle_add(self.focus_text) elif event.keyval in (gtk.keysyms.KP_Up, gtk.keysyms.Up): self.line.emit_stop_by_name("key_press_event") self.historyUp() gobject.idle_add(self.focus_text) elif event.keyval in (gtk.keysyms.KP_Down, gtk.keysyms.Down): self.line.emit_stop_by_name("key_press_event") self.historyDown() gobject.idle_add(self.focus_text) elif event.keyval in (gtk.keysyms.D, gtk.keysyms.d) and \ event.state & gtk.gdk.CONTROL_MASK: self.line.emit_stop_by_name("key_press_event") self.ctrld() def focus_text(self): self.line.grab_focus() return False # don't requeue this handler def ctrld(self): self.quit() def historyUp(self): if self.histpos > 0: l = self.line.get_text() if len(l) > 0 and l[0] == '\n': l = l[1:] if len(l) > 0 and l[-1] == '\n': l = l[:-1] self.history[self.histpos] = l self.histpos = self.histpos - 1 self.line.set_text(self.history[self.histpos]) def historyDown(self): if self.histpos < len(self.history) - 1: l = self.line.get_text() if len(l) > 0 and l[0] == '\n': l = l[1:] if len(l) > 0 and l[-1] == '\n': l = l[:-1] self.history[self.histpos] = l self.histpos = self.histpos + 1 self.line.set_text(self.history[self.histpos]) def eval(self): l = self.line.get_text() + '\n' if len(l) > 1 and l[0] == '\n': l = l[1:] self.histpos = len(self.history) - 1 if len(l) > 0 and l[-1] == '\n': self.history[self.histpos] = l[:-1] else: self.history[self.histpos] = l self.line.set_text('') iter = self.buffer.get_iter_at_mark(self.insert) self.buffer.insert_with_tags(iter, self.prompt.get() + l, self.command) self.text.scroll_to_mark(self.insert, 0.0) if l == '\n': self.run(self.cmd) self.cmd = '' self.cmd2 = '' return self.histpos = self.histpos + 1 self.history.append('') self.cmd = self.cmd + l self.cmd2 = self.cmd2 + remQuotStr(l) l = string.rstrip(l) if not bracketsBalanced(self.cmd2) or l[-1] == ':' or \ l[-1] == '\\' or l[0] in ' \11': self.prompt.set_text(sys.ps2) self.prompt.queue_draw() return self.run(self.cmd) self.cmd = '' self.cmd2 = '' def run(self, cmd): sys.stdout, self.stdout = self.stdout, sys.stdout sys.stderr, self.stderr = self.stderr, sys.stderr try: try: r = eval(cmd, self.namespace, self.namespace) if r is not None: print `r` except SyntaxError: exec cmd in self.namespace except: if hasattr(sys, 'last_type') and \ sys.last_type == SystemExit: self.quit() else: traceback.print_exc() self.prompt.set_text(sys.ps1) self.prompt.queue_draw() sys.stdout, self.stdout = self.stdout, sys.stdout sys.stderr, self.stderr = self.stderr, sys.stderr def gtk_console(ns, title='Python', copyright='', menu=None): win = gtk.Window() win.set_size_request(475, 300) win.connect("destroy", lambda w: gtk.main_quit()) win.connect("delete_event", lambda w,e: gtk.main_quit()) win.set_title(title) cons = Console(namespace=ns, copyright=copyright, quit_cb=lambda w: gtk.main_quit()) if menu: box = gtk.VBox() win.add(box) box.show() box.pack_start(menu, expand=False) menu.show() box.pack_start(cons) else: win.add(cons) cons.show() win.show() win.set_size_request(0,0) cons.init() gtk.main() if __name__ == '__main__': gtk_console({'__builtins__': __builtins__, '__name__': '__main__', '__doc__': None}) pygtk-2.24.0/examples/ide/browse.py0000755000175000017500000000771411545325345014133 00000000000000#!/usr/bin/env python # This is an example of using dynamic trees (trees where nodes are only # calculated as they are needed) with pygtk. This particular example # allows for the browsing of the variables in a module, allowing the # descent into classes and modules and other objects with a __dict__ # attribute. # If this file is run straight, it will let you browse the gtk module. import pygtk pygtk.require('2.0') import gtk class BrowseVariables(gtk.VBox): def __init__(self, name, obj): gtk.VBox.__init__(self) self.set_spacing(2) # self.sw = gtk.ScrolledWindow() self.sw.set_size_request(300, 200) self.sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.pack_start(self.sw) self.sw.show() # self.disp = gtk.Entry() self.disp.set_editable(False) self.pack_start(self.disp, expand=False) self.disp.show() # self.treestore = gtk.TreeStore(str, object) self.tree = gtk.TreeView(self.treestore) treeviewcolumn = gtk.TreeViewColumn('Variable', gtk.CellRendererText(), text=0) self.tree.append_column(treeviewcolumn) self.sw.add(self.tree) self.tree.show() # riter = self.treestore.append(None, [name, obj]) self.treestore.append(riter, ['', None]) self.tree.connect('test-expand-row', self.expand_row_cb) self.tree.connect('test-collapse-row', self.collapse_row_cb) self.treeselection = self.tree.get_selection() self.treeselection.connect('changed', self.change_selection_cb) return def change_selection_cb(self, treeselection): model, iter = treeselection.get_selected() if not iter or not self.disp: return key = model[iter][0] if key == '__builtins__': value = key else: value = model[iter][1] self.disp.set_text(str(value)) return def expand_row_cb(self, treeview, riter, path): model = treeview.get_model() dict = vars(model[riter][1]) if not dict: return True citer = model.iter_children(riter) model.remove(citer) keylist = dict.keys() keylist.sort() for key in keylist: obj = dict[key] i = model.append(riter, [key, obj]) try: d = vars(obj) if d: model.append(i, ['', d]) except TypeError: pass return False def collapse_row_cb(self, treeview, riter, path): model = treeview.get_model() citer = model.iter_children(riter) if citer: while model.remove(citer): pass model.append(riter, ['', None]) return True class BrowseWindow(gtk.Window): def __init__(self, name, dict): gtk.Window.__init__(self) self.set_title("Browse Window") box = gtk.VBox() self.add(box) box.show() browse = BrowseVariables(name, dict) browse.set_border_width(10) box.pack_start(browse) browse.show() separator = gtk.HSeparator() box.pack_start(separator, expand=False) separator.show() box2 = gtk.VBox(spacing=10) box2.set_border_width(10) box.pack_start(box2, expand=False) box2.show() button = gtk.Button(stock=gtk.STOCK_CLOSE) box2.pack_start(button) button.set_flags(gtk.CAN_DEFAULT) button.grab_default() button.show() self.close_button = button return if __name__ == '__main__': win = BrowseWindow('gtk', gtk) win.set_title("Browse gtk") win.connect("destroy", lambda w: gtk.main_quit()) win.connect("delete_event", lambda w,e: gtk.main_quit()) win.close_button.connect("clicked", lambda w: gtk.main_quit()) win.show() gtk.main() pygtk-2.24.0/examples/ide/minibreak.xpm0000644000175000017500000000046311545325345014736 00000000000000/* XPM */ static char * minibreak_xpm[] = { "12 12 4 1", " c None", ". c #000000", "X c #FF0000", "o c #FFFFFF", " ...... ", " .oooooo. ", " .ooXXXXoo. ", ".ooXXXXXXoo.", ".oXXXXXXXXo.", ".oXXXXXXXXo.", ".oXXXXXXXXo.", ".oXXXXXXXXo.", ".ooXXXXXXoo.", " .ooXXXXoo. ", " .oooooo. ", " ...... "}; pygtk-2.24.0/examples/ide/break.xpm0000644000175000017500000000122511545325345014056 00000000000000/* XPM */ static char * break_xpm[] = { "21 22 4 1", " c None", ". c #000000", "X c #FFFFFF", "o c #FF0000", " ......... ", " .XXXXXXXXX. ", " .XXoooooooXX. ", " .XXoooooooooXX. ", " .XXoooooooooooXX. ", " .XXoooooooooooooXX. ", ".XXoooooooooooooooXX.", ".XoooooooooooooooooX.", ".XooXXoXXXoXXooXXooX.", ".XoXooXoXoXooXoXoXoX.", ".XoXooooXoXooXoXoXoX.", ".XooXXooXoXooXoXXooX.", ".XooooXoXoXooXoXoooX.", ".XoXooXoXoXooXoXoooX.", ".XooXXooXooXXooXoooX.", ".XXoooooooooooooooXX.", " .XXoooooooooooooXX. ", " .XXoooooooooooXX. ", " .XXoooooooooXX. ", " .XXoooooooXX. ", " .XXXXXXXXX. ", " ......... "}; pygtk-2.24.0/examples/ide/run.xpm0000644000175000017500000000115611545325345013601 00000000000000/* XPM */ static char * run_xpm[] = { "20 22 3 1", " c None", ". c #000000", "X c #C00080", " ", " ", " .... ", " .XXXX. ", " .XXXX. ", " .XXXX. ", " .XXXX. ", " .XX. ", " .XX. ", " .XX. ", " .XX. ", " .. ", " .. ", " .. ", " .. ", " ", " .. ", " .XX. ", " .XX. ", " .. ", " ", " "}; pygtk-2.24.0/examples/pango/0000755000175000017500000000000011545327522012666 500000000000000pygtk-2.24.0/examples/pango/utf8-demo.py0000755000175000017500000000441211545325345014775 00000000000000#! /usr/bin/env python # -*- coding: utf-8 -*- # # order is important here (for now) import pygtk pygtk.require('2.0') import gtk # string taken from pango examples directory and converted from utf8 # to python unicode string escapes hellos = '''This is Pango (Παν語) This is a list of ways to say hello in various languages. Its purpose is to illustrate a number of scripts. --------------------------------------------------------- Arabic السَّلام عليكÙÙ… Bengali (বাঙà§à¦²à¦¾) ষাগতোম Burmese မ္ရန္မာ Cherokee (á£áŽ³áŽ©) Ꭳáá² Czech (Äesky) Dobrý den Danish (Dansk) Hej, Goddag English Hello Esperanto Saluton Estonian Tere, Tervist FORTRAN PROGRAM Finnish (Suomi) Hei French (Français) Bonjour, Salut German (Deutsch Nord) Guten Tag German (Deutsch Süd) Grüß Gott Georgian (ქáƒáƒ áƒ—ველი) გáƒáƒ›áƒáƒ áƒ¯áƒáƒ‘რGujarati ગà«àªœàª°àª¾àª¤àª¿ Greek (Ελληνικά) Γειά σας Hebrew ×©×œ×•× Hindi नमसà¥à¤¤à¥‡, नमसà¥à¤•ार। Italiano Ciao, Buon giorno IPA English (ɪŋglɪʃ) hÉ›ləʊ Lao ສບາàºàº” Maltese ÄŠaw, Saħħa Nederlands, Vlaams Hallo, Dag Norwegian (Norsk) Hei, God dag Punjabi ਪà©à¨‚ਜਾਬਿ Polish DzieÅ„ dobry, Hej Russian (РуÑÑкий) ЗдравÑтвуйте! Sinhala (සිංහල) ආයුබà·à·€à¶±à·Š Slovak Dobrý deň Spanish (Español) ¡Hola! Swedish (Svenska) Hej, Goddag Thai (ภาษาไทย) สวัสดีครับ, สวัสดีค่ะ Tamil (தமிழà¯) வணகà¯à®•ம௠Turkish (Türkçe) Merhaba Vietnamese (Tiếng Việt) Xin Chào Yiddish (ײַדישע)‎ ד×ָס הײַזעלע Japanese (日本語) ã“ã‚“ã«ã¡ã¯, コï¾ï¾†ï¾ï¾Š Chinese (中文,普通è¯,汉语) 你好 Cantonese (粵語,廣æ±è©±) 早晨, 你好 Korean (한글) 안녕하세요, 안녕하십니까 Difference among chinese characters in GB, JIS, KSC, BIG5: GB -- 元气 å¼€å‘ JIS -- 元気 開発 KSC -- 元氣 開發 BIG5 -- 元氣 開發 ''' win = gtk.Window() win.connect('destroy', gtk.main_quit) win.set_default_size(600, 400) swin = gtk.ScrolledWindow() swin.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) win.add(swin) swin.show() l = gtk.Label(hellos) swin.add_with_viewport(l) l.show() win.show() gtk.main() pygtk-2.24.0/examples/pango/extentdemo.py0000755000175000017500000001341611545325345015345 00000000000000#! /usr/bin/env python # -*- coding: utf-8 -*- # # I, Adam Olsen, am the original author of this work. I hereby # donate it into the public domain, and relinquish any rights I # may have in it. # # I, Behdad Esfahbod, hereby disclaim any rights for my contributions # to this code. from __future__ import division import sys import cairo import pygtk pygtk.require('2.0') import gtk import gtk.gdk import pango import gobject def generate_modes(): for align_desc, align in [('left', pango.ALIGN_LEFT), ('center', pango.ALIGN_CENTER), ('right', pango.ALIGN_RIGHT)]: for extent_desc, extentindex in [('logical', 1), ('ink', 0)]: for name in ['line', 'run', 'cluster', 'char']: if name == 'char' and extent_desc == 'ink': continue desc = '%s %s %s' % (align_desc, extent_desc, name) yield extentindex, name, align, desc class ExtentDemo(gtk.Widget): def __init__(self, text="""Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor.\n\tسلامی Ú†Ùˆ بوی خوش٠آشنایی... بر آن ملّت٠دیرام‌دام دیرام..."""): gtk.Widget.__init__(self) self.text = "foo" self.text = text self.all_modes = list(generate_modes()) self.mode_num = 0; self.x_margin = 5 self.y_margin = 5 self.x_offset = 0 self.y_offset = 25 self.font_size = 36 def do_realize(self): self.set_flags(self.flags() | gtk.REALIZED) self.window = gtk.gdk.Window( self.get_parent_window(), width=self.allocation.width, height=self.allocation.height, window_type=gtk.gdk.WINDOW_CHILD, wclass=gtk.gdk.INPUT_OUTPUT, event_mask=self.get_events() | gtk.gdk.EXPOSURE_MASK) self.window.set_user_data(self) self.style.attach(self.window) self.style.set_background(self.window, gtk.STATE_NORMAL) self.window.move_resize(*self.allocation) def do_unrealize(self): self.window.destroy() def do_size_request(self, requisition): width = 800 layout = self.get_layout(self.get_pango_context()) layout.set_width (pango.SCALE * (width - (self.x_offset + 2 * self.x_margin))) height = layout.get_pixel_extents ()[1][3] + (self.y_offset + 2 * self.y_margin) requisition.width = width requisition.height = height def do_expose_event(self, event): context = self.window.cairo_create() context.rectangle(event.area.x, event.area.y, event.area.width, event.area.height) context.clip() pangocontext = self.get_pango_context() self.draw(context, pangocontext) return False def get_layout (self, pangocontext): font = pango.FontDescription() font.set_family("sans") font.set_size(self.font_size * pango.SCALE) layout = pango.Layout(pangocontext) layout.set_font_description(font) layout.set_text(self.text) return layout def draw(self, context, pangocontext): context.set_source_rgb (1, 1, 1) context.paint() context.set_source_rgb (0, 0, 0) context.translate (self.x_margin, self.y_margin) extentindex, name, align, desc = self.all_modes[self.mode_num] labellayout = pango.Layout(pangocontext) labellayout.set_text('%i: %s' % (self.mode_num + 1, desc)) context.move_to(0, 0) context.show_layout(labellayout) context.translate (self.x_offset, self.y_offset) layout = self.get_layout (pangocontext) width = self.allocation.width - (self.x_offset + 2 * self.x_margin) layout.set_width(width * pango.SCALE) layout.set_alignment(align) context.move_to(0, 0) #context.layout_path(layout) #context.fill() context.show_layout(layout) context.set_source_rgba(1, 0, 0, 0.5) context.set_line_width (2) x, y, width, height = layout.get_pixel_extents()[extentindex] context.rectangle(x-1, y-1, width+2, height+2) context.stroke() context.set_source_rgba(0, 1, 0, 0.7) context.set_line_width (1) li = layout.get_iter() while True: extents = getattr(li, 'get_%s_extents' % name)() if name != 'char': extents = extents[extentindex] x, y, width, height = self._descale(extents) context.rectangle(x+.5, y+.5, width-1, height-1) context.stroke() if not getattr(li, 'next_%s' % name)(): break def cycle_mode_forward(self): self.mode_num += 1 if self.mode_num >= len(self.all_modes): self.mode_num = 0 self.queue_draw() def cycle_mode_backward(self): self.mode_num -= 1 if self.mode_num < 0: self.mode_num = len(self.all_modes) - 1 self.queue_draw() def key_press_event(self, widget, event): if event.string == ' ' or event.keyval == gtk.keysyms.Right: self.cycle_mode_forward() elif event.keyval == gtk.keysyms.BackSpace or event.keyval == gtk.keysyms.Left: self.cycle_mode_backward() elif event.string == 'q': gtk.main_quit() def _descale(self, rect): return (i / pango.SCALE for i in rect) def run(self): window = gtk.Window() window.add(self) window.connect("destroy", gtk.main_quit) window.connect("key-press-event", self.key_press_event) window.show_all() gtk.main() gobject.type_register(ExtentDemo) def main(): if len (sys.argv) > 2: ed = ExtentDemo(sys.argv[2]) else: ed = ExtentDemo() if len (sys.argv) > 1: mode = int(sys.argv[1]) while mode > 1: mode -= 1 ed.cycle_mode() ed.run() if __name__ == "__main__": main() pygtk-2.24.0/examples/pango/pangocairo-simple.py0000755000175000017500000000337311545325345016603 00000000000000#! /usr/bin/env python import sys import math import cairo import pygtk pygtk.require('2.0') import pango import pangocairo RADIUS = 150 def draw_text(cr): N_WORDS = 10 FONT = "Sans Bold 27" # Center coordinates on the middle of the region we are drawing cr.translate(RADIUS, RADIUS); # Create a PangoLayout, set the font and text */ layout = cr.create_layout() layout.set_text("Text") layout.set_font_description(pango.FontDescription(FONT)) # Draw the layout N_WORDS times in a circle for i in range(N_WORDS): angle = (360 * i) / N_WORDS; cr.save() # Gradient from red at angle == 60 to blue at angle == 300 red = (1 + math.cos((angle - 60)*math.pi/180))/2 cr.set_source_rgb(red, 0, 1 - red) cr.rotate(angle*math.pi/180) # Inform Pango to re-layout the text with the new transformation */ cr.update_layout(layout) width, height = layout.get_size() cr.move_to(-width/pango.SCALE/2, -RADIUS) cr.show_layout(layout) cr.restore() def main(argv): if len(argv) != 2: print >> sys.stderr, "Usage: cairosimple OUTPUT_BASENAME\n" return 1 filename = argv[1] surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 2*RADIUS, 2*RADIUS) cr = pangocairo.CairoContext(cairo.Context(surface)) cr.set_source_rgb(1.0, 1.0, 1.0) cr.rectangle(0, 0, 2*RADIUS, 2*RADIUS) cr.fill() draw_text(cr) surface.write_to_png(filename + ".png") ## output also a PDF file surface = cairo.PDFSurface(filename + ".pdf", 2*RADIUS, 2*RADIUS) cr = pangocairo.CairoContext(cairo.Context(surface)) draw_text(cr) cr.show_page() surface.finish() if __name__ == '__main__': sys.exit(main(sys.argv)) pygtk-2.24.0/examples/Makefile.am0000644000175000017500000000544711545325345013551 00000000000000pygtklibdir = $(libdir)/pygtk/2.0 pygtklib_PYTHON = pygtk-demo/pygtk-demo.py demodir = $(pygtklibdir)/demos demoimgdir = $(demodir)/images bin_SCRIPTS = pygtk-demo/pygtk-demo pygtk-demo/pygtk-demo: pygtk-demo/pygtk-demo.in @mkdir -p pygtk-demo @sed -e s!\@PYTHON\@!@PYTHON@! \ -e s!\@libdir\@!@libdir@! \ < $< > $@ @chmod a+x $@ CLEANFILES = pygtk-demo/pygtk-demo EXTRA_DIST = \ pygtk-demo/pygtk-demo.in\ atk/atk-demo.py \ gobject/editable-interface.py \ gobject/properties.py \ gobject/signal.py \ gtk/application.py \ gtk/bin.py \ gtk/customtreemodel.py \ gtk/filechooser.py \ gtk/scrollable.py \ gtk/sizegroup.py \ gtk/uimanager.py \ gtk/widget.py \ gtk/testprint.py \ glade/README \ glade/test.glade \ glade/autoconnect.py \ glade/test2.glade \ glade/glade-demo.py \ ide/README \ ide/break.xpm \ ide/browse.py \ ide/continue.xpm \ ide/edit.py \ ide/edit.xpm \ ide/gtkcons.py \ ide/gtkdb.py \ ide/gtkprof.py \ ide/minibreak.xpm \ ide/next.xpm \ ide/pyide.py \ ide/quit.xpm \ ide/return.xpm \ ide/run.xpm \ ide/step.xpm \ ide/dialogs.py \ pango/utf8-demo.py \ pango/pangocairo-simple.py \ pango/extentdemo.py \ simple/README \ simple/dnd.py \ simple/dndpixmap.py \ simple/hello.py \ simple/scribble.py \ simple/simple.py \ simple/tooltip.py demo_PYTHON = \ pygtk-demo/demos/__init__.py \ pygtk-demo/demos/appwindow.py \ pygtk-demo/demos/buttonbox.py \ pygtk-demo/demos/changedisplay.py \ pygtk-demo/demos/colorsel.py \ pygtk-demo/demos/dialogs.py \ pygtk-demo/demos/dnd.py \ pygtk-demo/demos/dndpixmap.py \ pygtk-demo/demos/editable_cells.py \ pygtk-demo/demos/entry_completion.py \ pygtk-demo/demos/expander.py \ pygtk-demo/demos/hypertext.py \ pygtk-demo/demos/images.py \ pygtk-demo/demos/list_store.py \ pygtk-demo/demos/menu.py \ pygtk-demo/demos/panes.py \ pygtk-demo/demos/pixbufs.py \ pygtk-demo/demos/print_editor.py \ pygtk-demo/demos/sizegroup.py \ pygtk-demo/demos/stock_browser.py \ pygtk-demo/demos/textscroll.py \ pygtk-demo/demos/textview.py \ pygtk-demo/demos/tooltip.py \ pygtk-demo/demos/tree_store.py \ pygtk-demo/demos/treemodel.py \ pygtk-demo/demos/statusicon.py \ pygtk-demo/demos/ui_manager.py \ pygtk-demo/demos/infobar.py demoimg_DATA = \ pygtk-demo/demos/images/alphatest.png \ pygtk-demo/demos/images/apple-red.png \ pygtk-demo/demos/images/background.jpg \ pygtk-demo/demos/images/floppybuddy.gif \ pygtk-demo/demos/images/gnome-applets.png \ pygtk-demo/demos/images/gnome-calendar.png \ pygtk-demo/demos/images/gnome-foot.png \ pygtk-demo/demos/images/gnome-gimp.png \ pygtk-demo/demos/images/gnome-gmush.png \ pygtk-demo/demos/images/gnome-gsame.png \ pygtk-demo/demos/images/gnu-keys.png \ pygtk-demo/demos/images/gtk-logo-rgb.gif EXTRA_DIST += $(demoimg_DATA) pygtk-2.24.0/examples/simple/0000755000175000017500000000000011545327522013053 500000000000000pygtk-2.24.0/examples/simple/hello.py0000755000175000017500000000156311545325345014461 00000000000000#!/usr/bin/env python """ Simple Hello World example similar to the GTK+ Tutorials one """ import pygtk pygtk.require('2.0') import gtk def hello(*args): """ Callback function that is attached to the button """ print "Hello World" window.destroy() def destroy(*args): """ Callback function that is activated when the program is destoyed """ window.hide() gtk.main_quit() # this block creates our main application window window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.connect("destroy", destroy) window.set_border_width(10) # this block creates our button and places it within the window button = gtk.Button("Hello World") # connects the 'hello' function to the clicked signal from the button button.connect("clicked", hello) window.add(button) button.show() # as the button is within the window this also shows the window window.show_all() gtk.main() pygtk-2.24.0/examples/simple/scribble.py0000755000175000017500000000457111545325345015145 00000000000000#!/usr/bin/env python #this is a simple translation of the scribble example that comes with GTK+ import pygtk pygtk.require('2.0') import gtk pixmap = None def configure_event(widget, event): global pixmap win = widget.window width, height = win.get_size() pixmap = gtk.gdk.Pixmap(win, width, height) pixmap.draw_rectangle(widget.get_style().white_gc, True, 0, 0, width, height) return True def expose_event(widget, event): x, y, width, height = event.area gc = widget.get_style().fg_gc[gtk.STATE_NORMAL] widget.window.draw_drawable(gc, pixmap, x, y, x, y, width, height) return False def draw_brush(widget, x, y): x, y = int(x), int(y) pixmap.draw_rectangle(widget.get_style().black_gc, True, x-5, y-5, 10, 10) widget.queue_draw() def button_press_event(widget, event): if event.button == 1 and pixmap != None: draw_brush(widget, event.x, event.y) return True def motion_notify_event(widget, event): if event.is_hint: x, y, state = event.window.get_pointer() else: x = event.x; y = event.y state = event.state if state & gtk.gdk.BUTTON1_MASK and pixmap != None: draw_brush(widget, x, y) return True def main(): win = gtk.Window() win.set_name("Test Input") win.connect("destroy", lambda w: gtk.main_quit()) win.set_border_width(5) vbox = gtk.VBox(spacing=3) win.add(vbox) vbox.show() drawing_area = gtk.DrawingArea() drawing_area.set_size_request(200, 200) vbox.pack_start(drawing_area) drawing_area.show() drawing_area.connect("expose_event", expose_event) drawing_area.connect("configure_event", configure_event) drawing_area.connect("motion_notify_event", motion_notify_event) drawing_area.connect("button_press_event", button_press_event) drawing_area.set_events(gtk.gdk.EXPOSURE_MASK | gtk.gdk.LEAVE_NOTIFY_MASK | gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.POINTER_MOTION_MASK | gtk.gdk.POINTER_MOTION_HINT_MASK) button = gtk.Button(stock=gtk.STOCK_QUIT) vbox.pack_start(button, expand=False, fill=False) button.connect("clicked", lambda widget, win=win: win.destroy()) button.show() win.show() gtk.main() if __name__ == '__main__': main() pygtk-2.24.0/examples/simple/dndpixmap.py0000644000175000017500000003267611545325345015350 00000000000000drag_icon_xpm = [ "36 48 9 1", " c None", ". c #020204", "+ c #8F8F90", "@ c #D3D3D2", "# c #AEAEAC", "$ c #ECECEC", "% c #A2A2A4", "& c #FEFEFC", "* c #BEBEBC", " .....................", " ..&&&&&&&&&&&&&&&&&&&.", " ...&&&&&&&&&&&&&&&&&&&.", " ..&.&&&&&&&&&&&&&&&&&&&.", " ..&&.&&&&&&&&&&&&&&&&&&&.", " ..&&&.&&&&&&&&&&&&&&&&&&&.", " ..&&&&.&&&&&&&&&&&&&&&&&&&.", " ..&&&&&.&&&@&&&&&&&&&&&&&&&.", " ..&&&&&&.*$%$+$&&&&&&&&&&&&&.", " ..&&&&&&&.%$%$+&&&&&&&&&&&&&&.", " ..&&&&&&&&.#&#@$&&&&&&&&&&&&&&.", " ..&&&&&&&&&.#$**#$&&&&&&&&&&&&&.", " ..&&&&&&&&&&.&@%&%$&&&&&&&&&&&&&.", " ..&&&&&&&&&&&.&&&&&&&&&&&&&&&&&&&.", " ..&&&&&&&&&&&&.&&&&&&&&&&&&&&&&&&&.", "................&$@&&&@&&&&&&&&&&&&.", ".&&&&&&&+&&#@%#+@#@*$%$+$&&&&&&&&&&.", ".&&&&&&&+&&#@#@&&@*%$%$+&&&&&&&&&&&.", ".&&&&&&&+&$%&#@&#@@#&#@$&&&&&&&&&&&.", ".&&&&&&@#@@$&*@&@#@#$**#$&&&&&&&&&&.", ".&&&&&&&&&&&&&&&&&&&@%&%$&&&&&&&&&&.", ".&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&.", ".&&&&&&&&$#@@$&&&&&&&&&&&&&&&&&&&&&.", ".&&&&&&&&&+&$+&$&@&$@&&$@&&&&&&&&&&.", ".&&&&&&&&&+&&#@%#+@#@*$%&+$&&&&&&&&.", ".&&&&&&&&&+&&#@#@&&@*%$%$+&&&&&&&&&.", ".&&&&&&&&&+&$%&#@&#@@#&#@$&&&&&&&&&.", ".&&&&&&&&@#@@$&*@&@#@#$#*#$&&&&&&&&.", ".&&&&&&&&&&&&&&&&&&&&&$%&%$&&&&&&&&.", ".&&&&&&&&&&$#@@$&&&&&&&&&&&&&&&&&&&.", ".&&&&&&&&&&&+&$%&$$@&$@&&$@&&&&&&&&.", ".&&&&&&&&&&&+&&#@%#+@#@*$%$+$&&&&&&.", ".&&&&&&&&&&&+&&#@#@&&@*#$%$+&&&&&&&.", ".&&&&&&&&&&&+&$+&*@&#@@#&#@$&&&&&&&.", ".&&&&&&&&&&$%@@&&*@&@#@#$#*#&&&&&&&.", ".&&&&&&&&&&&&&&&&&&&&&&&$%&%$&&&&&&.", ".&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&.", ".&&&&&&&&&&&&&&$#@@$&&&&&&&&&&&&&&&.", ".&&&&&&&&&&&&&&&+&$%&$$@&$@&&$@&&&&.", ".&&&&&&&&&&&&&&&+&&#@%#+@#@*$%$+$&&.", ".&&&&&&&&&&&&&&&+&&#@#@&&@*#$%$+&&&.", ".&&&&&&&&&&&&&&&+&$+&*@&#@@#&#@$&&&.", ".&&&&&&&&&&&&&&$%@@&&*@&@#@#$#*#&&&.", ".&&&&&&&&&&&&&&&&&&&&&&&&&&&$%&%$&&.", ".&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&.", ".&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&.", ".&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&.", "...................................."] trashcan_closed_xpm = [ "64 80 17 1", " c None", ". c #030304", "+ c #5A5A5C", "@ c #323231", "# c #888888", "$ c #1E1E1F", "% c #767677", "& c #494949", "* c #9E9E9C", "= c #111111", "- c #3C3C3D", "; c #6B6B6B", "> c #949494", ", c #282828", "' c #808080", ") c #545454", "! c #AEAEAC", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ==......=$$...=== ", " ..$------)+++++++++++++@$$... ", " ..=@@-------&+++++++++++++++++++-.... ", " =.$$@@@-&&)++++)-,$$$$=@@&+++++++++++++,..$ ", " .$$$$@@&+++++++&$$$@@@@-&,$,-++++++++++;;;&.. ", " $$$$,@--&++++++&$$)++++++++-,$&++++++;%%'%%;;$@ ", " .-@@-@-&++++++++-@++++++++++++,-++++++;''%;;;%*-$ ", " +------++++++++++++++++++++++++++++++;;%%%;;##*!. ", " =+----+++++++++++++++++++++++;;;;;;;;;;;;%'>>). ", " .=)&+++++++++++++++++;;;;;;;;;;;;;;%''>>#>#@. ", " =..=&++++++++++++;;;;;;;;;;;;;%###>>###+%== ", " .&....=-+++++%;;####''''''''''##'%%%)..#. ", " .+-++@....=,+%#####'%%%%%%%%%;@$-@-@*++!. ", " .+-++-+++-&-@$$=$=......$,,,@;&)+!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " =+-++-+++-+++++++++!++++!++++!+++!++!+++= ", " $.++-+++-+++++++++!++++!++++!+++!++!+.$ ", " =.++++++++++++++!++++!++++!+++!++.= ", " $..+++++++++++++++!++++++...$ ", " $$=.............=$$ ", " ", " ", " ", " ", " ", " ", " ", " ", " "] trashcan_open_xpm = [ "64 80 17 1", " c None", ". c #030304", "+ c #5A5A5C", "@ c #323231", "# c #888888", "$ c #1E1E1F", "% c #767677", "& c #494949", "* c #9E9E9C", "= c #111111", "- c #3C3C3D", "; c #6B6B6B", "> c #949494", ", c #282828", "' c #808080", ") c #545454", "! c #AEAEAC", " ", " ", " ", " ", " ", " ", " .=.==.,@ ", " ==.,@-&&&)-= ", " .$@,&++;;;%>*- ", " $,-+)+++%%;;'#+. ", " =---+++++;%%%;%##@. ", " @)++++++++;%%%%'#%$ ", " $&++++++++++;%%;%##@= ", " ,-++++)+++++++;;;'#%) ", " @+++&&--&)++++;;%'#'-. ", " ,&++-@@,,,,-)++;;;'>'+, ", " =-++&@$@&&&&-&+;;;%##%+@ ", " =,)+)-,@@&+++++;;;;%##%&@ ", " @--&&,,@&)++++++;;;;'#)@ ", " ---&)-,@)+++++++;;;%''+, ", " $--&)+&$-+++++++;;;%%'';- ", " .,-&+++-$&++++++;;;%''%&= ", " $,-&)++)-@++++++;;%''%), ", " =,@&)++++&&+++++;%'''+$@&++++++ ", " .$@-++++++++++++;'#';,........=$@&++++ ", " =$@@&)+++++++++++'##-.................=&++ ", " .$$@-&)+++++++++;%#+$.....................=)+ ", " $$,@-)+++++++++;%;@=........................,+ ", " .$$@@-++++++++)-)@=............................ ", " $,@---)++++&)@===............................,. ", " $-@---&)))-$$=..............................=)!. ", " --&-&&,,$=,==...........................=&+++!. ", " =,=$..=$+)+++++&@$=.............=$@&+++++!++!. ", " .)-++-+++++++++++++++++++++++++++!++!++!. ", " .+-++-+++++++++++++++++++++++!+++!++!++!. ", " .+-++-+++-+++++++++!+++!!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " .+-++-+++-+++++++++!++++!++++!+++!++!++!. ", " =+-++-+++-+++++++++!++++!++++!+++!++!+++= ", " $.++-+++-+++++++++!++++!++++!+++!++!+.$ ", " =.++++++++++++++!++++!++++!+++!++.= ", " $..+++++++++++++++!++++++...$ ", " $$==...........==$$ ", " ", " ", " ", " ", " ", " ", " ", " ", " "] pygtk-2.24.0/examples/simple/tooltip.py0000755000175000017500000000237411545325345015051 00000000000000#!/usr/bin/env python """ Simple example of creating a basic window and button. Also adds a tooltip. """ import pygtk pygtk.require('2.0') import gtk def hello_cb(widget, main_window): """ Callback function that prints a message and destroys the window """ print "Hello World" main_window.destroy() def destroy_cb(widget, main_window): """ Callback function to hide the main window and then terminate. """ main_window.hide() gtk.main_quit() def main(): """ Sets up the application Forms the widgets and connects callback functions to the signals """ window = gtk.Window( type=gtk.WINDOW_TOPLEVEL ) window.set_title("Hello World") window.set_default_size(200, 200) window.set_border_width(10) window.connect("destroy", destroy_cb, window) button = gtk.Button(label="Hello World") window.add(button) button.connect("clicked", hello_cb, window) # setup tooltips and associate them with the button tt = gtk.Tooltips() tt.set_tip(button, 'Prints "Hello World"', None) tt.enable() # shows the window and any child objects (button in this example) window.show_all() gtk.main() # if we're being run normally then call the main function if __name__ == '__main__': main() pygtk-2.24.0/examples/simple/dnd.py0000644000175000017500000001347711545325345014127 00000000000000#! /usr/bin/env python import pygtk pygtk.require('2.0') import gobject import gtk from dndpixmap import drag_icon_xpm, trashcan_open_xpm, trashcan_closed_xpm trashcan_open = None trashcan_closed = None have_drag = False; popped_up = False in_popup = False popup_timer = 0 popdown_timer = 0 popup_win = None TARGET_STRING = 0 TARGET_ROOTWIN = 1 target = [ ('STRING', 0, TARGET_STRING), ('text/plain', 0, TARGET_STRING), ('application/x-rootwin-drop', 0, TARGET_ROOTWIN) ] def target_drag_leave(w, context, time): global trashcan_closed global have_drag print 'leave' have_drag = False w.set_from_pixbuf(trashcan_closed) def target_drag_motion(w, context, x, y, time): global trashcan_open global have_drag if not have_drag: have_drag = True w.set_from_pixbuf(trashcan_open) source_widget = context.get_source_widget() print 'motion, source ', if source_widget: print source_widget.__class__.__name__ else: print 'unknown' context.drag_status(context.suggested_action, time) return True def target_drag_drop(w, context, x, y, time): global trashcan_closed global have_drag print 'drop' have_drag = False w.set_from_pixbuf(trashcan_closed) if context.targets: w.drag_get_data(context, context.targets[0], time) return True return False def target_drag_data_received(w, context, x, y, data, info, time): if data.format == 8: print 'Received "%s" in trashcan' % data.data context.finish(True, False, time) else: context.finish(False, False, time) def label_drag_data_received(w, context, x, y, data, info, time): if data and data.format == 8: print 'Received "%s" in label' % data.data context.finish(True, False, time) else: context.finish(False, False, time) def source_drag_data_get(w, context, selection_data, info, time): if info == TARGET_ROOTWIN: print 'I was dropped on the rootwin' else: selection_data.set(selection_data.target, 8, "I'm Data!") def popdown_cb(): global popdown_timer, popped_up global popup_win popdown_timer = 0 popup_win.hide() popped_up = False return False def popup_motion(w, context, x, y, time): global in_popup, popdown_timer if not in_popup: in_popup = True if popdown_timer: print 'removed popdown' gobject.source_remove(popdown_timer) popdown_timer = 0 return True def popup_leave(w, context, time): global in_popup, popdown_timer print 'popup_leave' if in_popup: in_popup = False if not popdown_timer: print 'added popdown' popdown_timer = gobject.timeout_add(500, popdown_cb) def popup_cb(): global popped_up, popup_win global popup_timer, popdown_timer if not popped_up: if not popup_win: popup_win = gtk.Window(gtk.WINDOW_POPUP) popup_win.set_position(gtk.WIN_POS_MOUSE) table = gtk.Table(3,3,False) for k in range(9): i, j = divmod(k, 3) b = gtk.Button("%d,%d" % (i,j)) table.attach(b, i,i+1,j,j+1) b.drag_dest_set(gtk.DEST_DEFAULT_ALL, target, gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE) b.connect('drag_motion', popup_motion) b.connect('drag_leave', popup_leave) table.show_all() popup_win.add(table) popup_win.show() popped_up = True popdown_timer = gobject.timeout_add(500, popdown_cb) print 'added popdown' popup_timer = 0 return False def popsite_motion(w, context, x, y, time): global popup_timer if not popup_timer: popup_timer = gobject.timeout_add(500, popup_cb) return True def popsite_leave(w, context, time): global popup_timer if popup_timer: gobject.source_remove(popup_timer) popup_timer = 0 def source_drag_data_delete(w, context, data): print 'Delete the data!' def create_pixmap(w, xpm): return gtk.gdk.pixmap_create_from_xpm_d(w.window, None, xpm) def main(): global trashcan_open global trashcan_closed global drag_icon win = gtk.Window() win.realize() win.connect('destroy', lambda w: gtk.main_quit()) table = gtk.Table(2,2) win.add(table) drag_icon = gtk.gdk.pixbuf_new_from_xpm_data(drag_icon_xpm) trashcan_open = gtk.gdk.pixbuf_new_from_xpm_data(trashcan_open_xpm) trashcan_closed = gtk.gdk.pixbuf_new_from_xpm_data(trashcan_closed_xpm) label = gtk.Label('Drop on Trashcan!\n') label.drag_dest_set(gtk.DEST_DEFAULT_ALL, target[:-1], gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE) label.connect('drag_data_received', label_drag_data_received) table.attach(label, 0, 1, 0, 1) label = gtk.Label('Popup\n') label.drag_dest_set(gtk.DEST_DEFAULT_ALL, target[:-1], gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE) table.attach(label, 1, 2, 1, 2) label.connect('drag_motion', popsite_motion) label.connect('drag_leave', popsite_leave) image = gtk.Image() image.set_from_pixbuf(trashcan_closed) image.drag_dest_set(0, [], 0) table.attach(image, 1, 2, 0, 1) image.connect('drag_leave', target_drag_leave) image.connect('drag_motion', target_drag_motion) image.connect('drag_drop', target_drag_drop) image.connect('drag_data_received', target_drag_data_received) b = gtk.Button('Drag from Here\n') b.drag_source_set(gtk.gdk.BUTTON1_MASK|gtk.gdk.BUTTON3_MASK, target, gtk.gdk.ACTION_COPY|gtk.gdk.ACTION_MOVE) b.drag_source_set_icon_pixbuf(drag_icon) table.attach(b, 0, 1, 1, 2) b.connect('drag_data_get', source_drag_data_get) b.connect('drag_data_delete', source_drag_data_delete) win.show_all() main() gtk.main() pygtk-2.24.0/examples/simple/README0000644000175000017500000000036211545325345013655 00000000000000These are some of the simplest examples you can do. They are only intended to help you see how to use pygtk. The examples ending in 1.py use the low level C-like interface, while the ones ending in 2.py are translations that use Gtkinter. pygtk-2.24.0/examples/simple/simple.py0000755000175000017500000000142111545325345014640 00000000000000#!/usr/bin/env python # translation of the simple.c test in the gtk+ distribution, using the # new() function from gobject (this is an example of creating objects # with the properties interface). import pygtk pygtk.require('2.0') import gobject, gtk def hello(*args): print "Hello World" window.destroy() def destroy(*args): window.hide() gtk.main_quit() window = gobject.new(gtk.Window, type=gtk.WINDOW_TOPLEVEL, title='Hello World', allow_grow=False, allow_shrink=False, border_width=10) window.connect("destroy", destroy) button = gobject.new(gtk.Button, label="Hello World", parent=window) button.connect("clicked", hello) window.show_all() gtk.main() pygtk-2.24.0/examples/atk/0000755000175000017500000000000011545327521012340 500000000000000pygtk-2.24.0/examples/atk/atk-demo.py0000644000175000017500000000134511545325345014340 00000000000000#!/usr/bin/env python import pygtk pygtk.require('2.0') import gtk import atk win = gtk.Window() win.connect('destroy', lambda win: gtk.main_quit()) button = gtk.Button(stock=gtk.STOCK_QUIT) button.connect('pressed', lambda button: gtk.main_quit()) atk_button = button.get_accessible() atk_button.set_description('Be careful, clicking this button will exit') label = gtk.Label('This label describes a button') atk_label = label.get_accessible() atk_label.set_description('This is a useless label') relation_set = atk_label.ref_relation_set() relation = atk.Relation((atk_button,), atk.RELATION_LABEL_FOR) relation_set.add(relation) box = gtk.HBox() box.pack_start(label) box.pack_start(button) win.add(box) win.show_all() gtk.main() pygtk-2.24.0/examples/gtk/0000755000175000017500000000000011545327521012346 500000000000000pygtk-2.24.0/examples/gtk/customtreemodel.py0000644000175000017500000001142111545325345016054 00000000000000#! /usr/bin/env python import sys import weakref import pygtk pygtk.require('2.0') import pango import gtk class SimpleListTreeModel(gtk.GenericTreeModel): def on_get_flags(self): return gtk.TREE_MODEL_LIST_ONLY def __init__(self, *values): gtk.GenericTreeModel.__init__(self) self.__values = list(values) self.props.leak_references = False # This is only needed to make the model gc-safe, since # leak_references is False. self.__iters = range(0, len(values)) def on_get_n_columns(self): return 0 def on_get_column_type(self, index): raise NotImplementedError def on_get_value(self, row, column): raise NotImplementedError def on_get_iter(self, path): return self.__iters[path[0]] def on_get_path(self, row): return(row,) def on_iter_parent(self, row): return None def on_iter_next(self, row): if row + 1 < len(self.__values): return self.__iters[row + 1] else: return None def on_iter_has_child(self, row): return False def on_iter_children(self, row): if row is None: return self.__iters[0] else: return None def on_iter_n_children(self, row): if row is None: return len(self.__values) else: return 0 def on_iter_nth_child(self, parent, n): if parent: return None else: return self.__iters[n] def __len__ (self): return len(self.__values) def __getitem__ (self, key): return self.__values[self.get_user_data(key)] def __iter__ (self): return iter(self.__values) def __contains__ (self, value): return value in self.__values def insert(self, index_or_iter, new_value): if isinstance(index_or_iter, gtk.TreeIter): index_or_iter = self.get_user_data(index_or_iter) self.__values.insert(index_or_iter, new_value) self.__iters.append(len(self.__iters)) titer = self.create_tree_iter(self.__iters[index_or_iter]) self.row_inserted(self.get_path(titer), titer) class Food(object): def __init__(self, name, description=None): self.name = name self.description = description def set_to_text_renderer(column, cell, model, iter): value = model[iter] cell.props.text = value.name if value.description is None: cell.props.weight = pango.WEIGHT_BOLD else: cell.props.weight = pango.WEIGHT_NORMAL set_to_text_renderer = staticmethod(set_to_text_renderer) def generate_values(): yield Food('Fruits') yield Food('Apple', 'Round and red. Or green. Or yellow.') yield Food('Orange', 'Juicy') yield Food('Vegetables') yield Food('Tomato', 'Red and juicy.') yield Food('Cucumber', 'Long and hard.') def insert_item(*ignored): model, titer = tree_view.get_selection().get_selected() if titer is None or model[titer].description is None: dialog = gtk.MessageDialog(type=gtk.MESSAGE_ERROR, buttons=gtk.BUTTONS_OK, message_format='Please select something. And not a header!') dialog.run() dialog.destroy() else: model.insert(titer, Food('Random name', 'Some random, but useful description.')) def show_description(*ignored): model, titer = tree_view.get_selection().get_selected() if titer is None or model[titer].description is None: dialog = gtk.MessageDialog(type=gtk.MESSAGE_ERROR, buttons=gtk.BUTTONS_OK, message_format='Please select something. And not a header!') else: dialog = gtk.MessageDialog(buttons=gtk.BUTTONS_OK, message_format=model[titer].description) dialog.run() dialog.destroy() window = gtk.Window() tree_model = SimpleListTreeModel(*generate_values()) tree_view = gtk.TreeView(tree_model) scrolled_window = gtk.ScrolledWindow() vertical_box = gtk.VBox(False, 6) button_box = gtk.HButtonBox() insert = gtk.Button('Insert') description = gtk.Button('Show Description') scrolled_window.add(tree_view) vertical_box.pack_start(scrolled_window) vertical_box.pack_start(button_box, False, False) button_box.pack_start(insert) button_box.pack_start(description) window.add(vertical_box) tree_view.set_headers_visible(False) text_renderer = gtk.CellRendererText() column = gtk.TreeViewColumn(None, text_renderer) column.set_cell_data_func(text_renderer, Food.set_to_text_renderer) tree_view.append_column(column) insert.connect('clicked', insert_item) description.connect('clicked', show_description) window.connect('destroy', lambda window: gtk.main_quit()) window.resize(400, 500) window.show_all() gtk.main() pygtk-2.24.0/examples/gtk/testprint.py0000644000175000017500000000331611545325345014701 00000000000000## Derived from tests/testprint.c from gtk+ sources import sys import math import pygtk pygtk.require('2.0') import cairo import pango import gtk def request_page_setup(operation, context, page_nr, page_setup): ## Make the second page landscape mode a5 if page_nr == 1: page_setup.set_orientation(gtk.PAGE_ORIENTATION_LANDSCAPE) page_setup.set_paper_size(gtk.PaperSize("iso_a5")) def draw_page (operation, context, page_nr): cr = context.get_cairo() ## Draw a red rectangle, as wide as the paper (inside the margins) cr.set_source_rgb(1.0, 0, 0) cr.rectangle(0, 0, context.get_width(), 50) cr.fill() ## Draw some lines cr.move_to(20, 10) cr.line_to(40, 20) cr.arc(60, 60, 20, 0, math.pi) cr.line_to(80, 20) cr.set_source_rgb(0, 0, 0) cr.set_line_width(5) cr.set_line_cap(cairo.LINE_CAP_ROUND) cr.set_line_join(cairo.LINE_JOIN_ROUND) cr.stroke() ## Draw some text layout = context.create_layout() layout.set_text("Hello World! Printing is easy") layout.set_font_description(pango.FontDescription("sans 28")) cr.move_to(30, 20) cr.layout_path(layout) ## Font Outline cr.set_source_rgb(0.93, 1.0, 0.47) cr.set_line_width(0.5) cr.stroke_preserve() ## Font Fill cr.set_source_rgb(0, 0.0, 1.0) cr.fill() def main(argv): ## Test some random drawing, with per-page paper settings print_ = gtk.PrintOperation() print_.set_nr_of_pages(2) print_.set_unit(gtk.UNIT_MM) print_.set_pdf_target("test.pdf") print_.connect("draw_page", draw_page) print_.connect("request_page_setup", request_page_setup) res = print_.run() return 0 if __name__ == '__main__': sys.exit(main(sys.argv)) pygtk-2.24.0/examples/gtk/bin.py0000644000175000017500000000137011545325345013413 00000000000000# A simple gtk.Conatiner subclassing example reimplementing gtk.Bin in python import pygtk pygtk.require('2.0') import gtk class Bin(gtk.Container): __gtype_name__ = 'PyGtkBin' def __init__(self): gtk.Container.__init__(self) self.child = None def do_add(self, child): child.set_parent(self) self.child = child def do_remove(self, child): widget_was_visible = child.flags() & gtk.VISIBLE child.unparent() self.child = None if widget_was_visible: self.queue_resize() def do_forall(self, internal, callback, data): if self.child: callback(self.child, data) label = gtk.Label() c = Bin() c.add(label) print c.get_children() c.remove(label) pygtk-2.24.0/examples/gtk/sizegroup.py0000644000175000017500000000211611545325345014671 00000000000000# # Small example of GtkSizeGroup # # Johan Dahlin , 2005 # """Simple example that demonstrates how to use a GtkSizeGroup. In this case we'll have two labels and two entries. The labels have different width, but we'd like to have the entries aligned vertically. We can accomplish this by adding a horizontal sizegroup to the labels. """ import pygtk pygtk.require('2.0') import gtk def create_label(text): hbox = gtk.HBox(spacing=6) label = gtk.Label(text) hbox.pack_start(label) entry = gtk.Entry() hbox.pack_start(entry) return hbox, label def main(): win = gtk.Window() win.connect('delete-event', gtk.main_quit) win.set_border_width(6) win.set_title('GtkSizeGroup example') vbox = gtk.VBox(spacing=6) win.add(vbox) sg = gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL) hbox, label = create_label('Name:') sg.add_widget(label) vbox.pack_start(hbox) hbox, label = create_label('Address:') sg.add_widget(label) vbox.pack_start(hbox) win.show_all() gtk.main() if __name__ == '__main__': main() pygtk-2.24.0/examples/gtk/uimanager.py0000644000175000017500000000743511545325345014623 00000000000000# # Small example of the new GtkUIManager # # Johan Dahlin , 2004 # import pygtk pygtk.require('2.0') import gtk ui_string = """ """ class Window(gtk.Window): def __init__(self): gtk.Window.__init__(self) self.set_position(gtk.WIN_POS_CENTER) self.set_title('GtkUIManager test app') self.connect('delete-event', self.delete_event_cb) self.set_size_request(400, 200) vbox = gtk.VBox() self.add(vbox) self.create_ui() vbox.pack_start(self.ui.get_widget('/Menubar'), expand=False) vbox.pack_start(self.ui.get_widget('/Toolbar'), expand=False) sw = gtk.ScrolledWindow() sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) vbox.pack_start(sw) textview = gtk.TextView() self.buffer = textview.get_buffer() sw.add(textview) status = gtk.Statusbar() vbox.pack_end(status, expand=False) def create_ui(self): ag = gtk.ActionGroup('WindowActions') actions = [ ('FileMenu', None, '_File'), ('New', gtk.STOCK_NEW, '_New', 'N', 'Create a new file', self.file_new_cb), ('Open', gtk.STOCK_OPEN, '_Open', 'O', 'Open a file', self.file_open_cb), ('Close', gtk.STOCK_CLOSE, '_Close', 'W', 'Close the current window', self.file_close_cb), ('Quit', gtk.STOCK_QUIT, '_Quit', 'Q', 'Quit application', self.file_quit_cb), ('HelpMenu', None, '_Help'), ('About', None, '_About', None, 'About application', self.help_about_cb), ] ag.add_actions(actions) self.ui = gtk.UIManager() self.ui.insert_action_group(ag, 0) self.ui.add_ui_from_string(ui_string) self.add_accel_group(self.ui.get_accel_group()) def file_new_cb(self, action): w = Window() w.show_all() gtk.main() def file_open_cb(self, action): dialog = gtk.FileChooserDialog("Open..", self, gtk.FILE_CHOOSER_ACTION_OPEN, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK)) dialog.set_default_response(gtk.RESPONSE_OK) filter = gtk.FileFilter() filter.set_name("All files") filter.add_pattern("*") dialog.add_filter(filter) dialog.hide() if dialog.run() == gtk.RESPONSE_OK: filename = dialog.get_filename() self.buffer.set_text(file(filename).read()) dialog.destroy() def file_close_cb(self, action): self.hide() gtk.main_quit() def file_quit_cb(self, action): raise SystemExit def help_about_cb(self, action): dialog = gtk.MessageDialog(self, (gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT), gtk.MESSAGE_INFO, gtk.BUTTONS_OK, "Small example of the new GtkUIManger") dialog.run() dialog.destroy() def delete_event_cb(self, window, event): gtk.main_quit() if __name__ == '__main__': w = Window() w.show_all() gtk.main() pygtk-2.24.0/examples/gtk/application.py0000644000175000017500000001216111545325345015146 00000000000000# By Jarek Zgoda and Johan Dahlin import pygtk pygtk.require('2.0') import gtk ui_string = """ """ class Application(gtk.Window): def __init__(self, title=''): gtk.Window.__init__(self) self.connect('delete-event', self._on_delete_event) self.set_position(gtk.WIN_POS_CENTER) self.set_size_request(400, 200) self.set_title(title) main_vbox = gtk.VBox() self.add(main_vbox) main_vbox.show() uimgr = self._create_ui() uimgr.connect('connect-proxy', self._on_uimanager__connect_proxy) uimgr.connect('disconnect-proxy', self._on_uimanager__disconnect_proxy) menubar = uimgr.get_widget('/Menubar') main_vbox.pack_start(menubar, expand=False) menubar.show() toolbar = uimgr.get_widget('/Toolbar') main_vbox.pack_start(toolbar, expand=False) toolbar.realize() toolbar.show() status = gtk.Statusbar() main_vbox.pack_end(status, expand=False) status.show() self.statusbar = status self._menu_cix = -1 def _create_ui(self): ag = gtk.ActionGroup('AppActions') actions = [ ('FileMenu', None, '_File'), ('New', gtk.STOCK_NEW, '_New', 'N', 'Create a new file', self._on_action_new), ('Open', gtk.STOCK_OPEN, '_Open', 'O', 'Open a file', self._on_action_open), ('Save', gtk.STOCK_SAVE, '_Save', 'S', 'Save a file', self._on_action_save), ('Close', gtk.STOCK_CLOSE, '_Close', 'W', 'Close the current window', self._on_action_close), ('Quit', gtk.STOCK_QUIT, '_Quit', 'Q', 'Quit application', self._on_action_quit), ('HelpMenu', None, '_Help'), ('About', None, '_About', None, 'About application', self._on_action_about), ] ag.add_actions(actions) ui = gtk.UIManager() ui.insert_action_group(ag, 0) ui.add_ui_from_string(ui_string) self.add_accel_group(ui.get_accel_group()) return ui def _on_uimanager__connect_proxy(self, uimgr, action, widget): tooltip = action.get_property('tooltip') if not tooltip: return if isinstance(widget, gtk.MenuItem): cid = widget.connect('select', self._on_menu_item__select, tooltip) cid2 = widget.connect('deselect', self._on_menu_item__deselect) widget.set_data('pygtk-app::proxy-signal-ids', (cid, cid2)) elif isinstance(widget, gtk.ToolButton): cid = widget.child.connect('enter', self._on_tool_button__enter, tooltip) cid2 = widget.child.connect('leave', self._on_tool_button__leave) widget.set_data('pygtk-app::proxy-signal-ids', (cid, cid2)) def _on_uimanager__disconnect_proxy(self, uimgr, action, widget): cids = widget.get_data('pygtk-app::proxy-signal-ids') if not cids: return if isinstance(widget, gtk.ToolButton): widget = widget.child for name, cid in cids: widget.disconnect(cid) def _on_menu_item__select(self, menuitem, tooltip): self.statusbar.push(self._menu_cix, tooltip) def _on_menu_item__deselect(self, menuitem): self.statusbar.pop(self._menu_cix) def _on_tool_button__enter(self, toolbutton, tooltip): self.statusbar.push(self._menu_cix, tooltip) def _on_tool_button__leave(self, toolbutton): self.statusbar.pop(self._menu_cix) def _on_action_new(self, action): self.new() def _on_action_open(self, action): self.open() def _on_action_save(self, action): self.save() def _on_action_close(self, action): self.close() def _on_action_quit(self, action): self.quit() def _on_action_about(self, action): self.about() def _on_delete_event(self, window, event): self.quit() # Override in subclass def new(self): raise NotImplementedError("Open") def open(self): raise NotImplementedError("Open") def save(self): raise NotImplementedError("Save") def close(self): raise NotImplementedError("Close") def about(self): raise NotImplementedError("About") def run(self): self.show() gtk.main() def quit(self): gtk.main_quit() if __name__ == '__main__': a = Application(title="TestApp") a.run() pygtk-2.24.0/examples/gtk/widget.py0000644000175000017500000001101211545325345014120 00000000000000import sys import pygtk pygtk.require('2.0') import gobject import pango import gtk from gtk import gdk if gtk.pygtk_version < (2, 8): print "PyGtk 2.8 or later required for this example" raise SystemExit try: import cairo except ImportError: raise SystemExit("cairo required for this example") TEXT = 'A GtkWidget implemented in PyGTK' BORDER_WIDTH = 10 # A quite simple gtk.Widget subclass which demonstrates how to subclass # and do realizing, sizing and drawing. class PyGtkWidget(gtk.Widget): def __init__(self, text): gtk.Widget.__init__(self) self._layout = self.create_pango_layout(text) self._layout.set_font_description(pango.FontDescription("Sans Serif 16")) # GtkWidget def do_realize(self): # The do_realize method is responsible for creating GDK (windowing system) # resources. In this example we will create a new gdk.Window which we # then draw on # First set an internal flag telling that we're realized self.set_flags(gtk.REALIZED) # Create a new gdk.Window which we can draw on. # Also say that we want to receive exposure events by setting # the event_mask self.window = gdk.Window( self.get_parent_window(), width=self.allocation.width, height=self.allocation.height, window_type=gdk.WINDOW_CHILD, wclass=gdk.INPUT_OUTPUT, event_mask=self.get_events() | gdk.EXPOSURE_MASK) # Associate the gdk.Window with ourselves, Gtk+ needs a reference # between the widget and the gdk window self.window.set_user_data(self) # Attach the style to the gdk.Window, a style contains colors and # GC contextes used for drawing self.style.attach(self.window) # The default color of the background should be what # the style (theme engine) tells us. self.style.set_background(self.window, gtk.STATE_NORMAL) self.window.move_resize(*self.allocation) def do_unrealize(self): # The do_unrealized method is responsible for freeing the GDK resources # De-associate the window we created in do_realize with ourselves self.window.set_user_data(None) def do_size_request(self, requisition): # The do_size_request method Gtk+ is calling on a widget to ask # it the widget how large it wishes to be. It's not guaranteed # that gtk+ will actually give this size to the widget # In this case, we say that we want to be as big as the # text is, plus a little border around it. width, height = self._layout.get_size() requisition.width = width // pango.SCALE + BORDER_WIDTH*4 requisition.height = height // pango.SCALE + BORDER_WIDTH*4 def do_size_allocate(self, allocation): # The do_size_allocate is called by when the actual size is known # and the widget is told how much space could actually be allocated # Save the allocated space self.allocation = allocation # If we're realized, move and resize the window to the # requested coordinates/positions if self.flags() & gtk.REALIZED: self.window.move_resize(*allocation) def do_expose_event(self, event): # The do_expose_event is called when the widget is asked to draw itself # Remember that this will be called a lot of times, so it's usually # a good idea to write this code as optimized as it can be, don't # Create any resources in here. # In this example, draw a rectangle in the foreground color x, y, w, h = self.allocation cr = self.window.cairo_create() cr.set_source_color(self.style.fg[self.state]) cr.rectangle(BORDER_WIDTH, BORDER_WIDTH, w - 2*BORDER_WIDTH, h - 2*BORDER_WIDTH) cr.set_line_width(5.0) cr.set_line_join(cairo.LINE_JOIN_ROUND) cr.stroke() # And draw the text in the middle of the allocated space fontw, fonth = self._layout.get_pixel_size() cr.move_to((w - fontw)/2, (h - fonth)/2) cr.update_layout(self._layout) cr.show_layout(self._layout) gobject.type_register(PyGtkWidget) def main(args): win = gtk.Window() win.set_border_width(5) win.set_title('Widget test') win.connect('delete-event', gtk.main_quit) frame = gtk.Frame("Example frame") win.add(frame) w = PyGtkWidget(TEXT) frame.add(w) win.show_all() gtk.main() if __name__ == '__main__': sys.exit(main(sys.argv)) pygtk-2.24.0/examples/gtk/scrollable.py0000644000175000017500000002043311545325345014766 00000000000000# # Reimplementation of gtk.Layout in python # Example on how to implement a scrollable container in python # # Johan Dahlin , 2006 # # Requires PyGTK 2.8.0 or later import pygtk pygtk.require('2.0') import gobject import gtk from gtk import gdk class Child: widget = None x = 0 y = 0 def set_adjustment_upper(adj, upper, always_emit): changed = False value_changed = False min = max(0.0, upper - adj.page_size) if upper != adj.upper: adj.upper = upper changed = True if adj.value > min: adj.value = min value_changed = True if changed or always_emit: adj.changed() if value_changed: adj.value_changed() def new_adj(): return gtk.Adjustment(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) class Layout(gtk.Container): __gsignals__ = dict(set_scroll_adjustments= (gobject.SIGNAL_RUN_LAST, None, (gtk.Adjustment, gtk.Adjustment))) def __init__(self): self._children = [] self._width = 100 self._height = 100 self._hadj = None self._vadj = None self._bin_window = None self._hadj_changed_id = -1 self._vadj_changed_id = -1 gtk.Container.__init__(self) if not self._hadj or not self._vadj: self._set_adjustments(self._vadj or new_adj(), self._hadj or new_adj()) # Public API def put(self, widget, x=0, y=0): child = Child() child.widget = widget child.x = x child.y = y self._children.append(child) if self.flags() & gtk.REALIZED: widget.set_parent_window(self._bin_window) widget.set_parent(self) def set_size(self, width, height): if self._width != width: self._width = width if self._height != height: self._height = height if self._hadj: set_adjustment_upper(self._hadj, self._width, False) if self._vadj: set_adjustment_upper(self._vadj, self._height, False) if self.flags() & gtk.REALIZED: self._bin_window.resize(max(width, self.allocation.width), max(height, self.allocation.height)) # GtkWidget def do_realize(self): self.set_flags(gtk.REALIZED) self.window = gdk.Window( self.get_parent_window(), window_type=gdk.WINDOW_CHILD, x=self.allocation.x, y=self.allocation.y, width=self.allocation.width, height=self.allocation.height, wclass=gdk.INPUT_OUTPUT, colormap=self.get_colormap(), event_mask=gdk.VISIBILITY_NOTIFY_MASK) self.window.set_user_data(self) self._bin_window = gdk.Window( self.window, window_type=gdk.WINDOW_CHILD, x=int(-self._hadj.value), y=int(-self._vadj.value), width=max(self._width, self.allocation.width), height=max(self._height, self.allocation.height), colormap=self.get_colormap(), wclass=gdk.INPUT_OUTPUT, event_mask=(self.get_events() | gdk.EXPOSURE_MASK | gdk.SCROLL_MASK)) self._bin_window.set_user_data(self) self.set_style(self.style.attach(self.window)) self.style.set_background(self.window, gtk.STATE_NORMAL) self.style.set_background(self._bin_window, gtk.STATE_NORMAL) for child in self._children: child.widget.set_parent_window(self._bin_window) self.queue_resize() def do_unrealize(self): self._bin_window.set_user_data(None) self._bin_window.destroy() self._bin_window = None gtk.Container.do_unrealize(self) def _do_style_set(self, style): gtk.Widget.do_style_set(self, style) if self.flags() & gtk.REALIZED: self.style.set_background(self._bin_window, gtk.STATE_NORMAL) def do_expose_event(self, event): if event.window != self._bin_window: return False gtk.Container.do_expose_event(self, event) return False def do_map(self): self.set_flags(gtk.MAPPED) for child in self._children: flags = child.widget.flags() if flags & gtk.VISIBLE: if not (flags & gtk.MAPPED): child.widget.map() self._bin_window.show() self.window.show() def do_size_request(self, req): req.width = 0 req.height = 0 for child in self._children: child.widget.size_request() def do_size_allocate(self, allocation): self.allocation = allocation for child in self._children: self._allocate_child(child) if self.flags() & gtk.REALIZED: self.window.move_resize(*allocation) self._bin_window.resize(max(self._width, allocation.width), max(self._height, allocation.height)) self._hadj.page_size = allocation.width self._hadj.page_increment = allocation.width * 0.9 self._hadj.lower = 0 set_adjustment_upper(self._hadj, max(allocation.width, self._width), True) self._vadj.page_size = allocation.height self._vadj.page_increment = allocation.height * 0.9 self._vadj.lower = 0 self._vadj.upper = max(allocation.height, self._height) set_adjustment_upper(self._vadj, max(allocation.height, self._height), True) def do_set_scroll_adjustments(self, hadj, vadj): self._set_adjustments(hadj, vadj) # GtkContainer def do_forall(self, include_internals, callback, data): for child in self._children: callback(child.widget, data) def do_add(self, widget): self.put(widget) def do_remove(self, widget): child = self._get_child_from_widget(widget) self._children.remove(child) widget.unparent() # Private def _set_adjustments(self, hadj, vadj): if not hadj and self._hadj: hadj = new_adj() if not vadj and self._vadj: vadj = new_adj() if self._hadj and self._hadj != hadj: self._hadj.disconnect(self._hadj_changed_id) if self._vadj and self._vadj != vadj: self._vadj.disconnect(self._vadj_changed_id) need_adjust = False if self._hadj != hadj: self._hadj = hadj set_adjustment_upper(hadj, self._width, False) self._hadj_changed_id = hadj.connect( "value-changed", self._adjustment_changed) need_adjust = True if self._vadj != vadj: self._vadj = vadj set_adjustment_upper(vadj, self._height, False) self._vadj_changed_id = vadj.connect( "value-changed", self._adjustment_changed) need_adjust = True if need_adjust and vadj and hadj: self._adjustment_changed() def _adjustment_changed(self, adj=None): if self.flags() & gtk.REALIZED: self._bin_window.move(int(-self._hadj.value), int(-self._vadj.value)) self._bin_window.process_updates(True) def _get_child_from_widget(self, widget): for child in self._children: if child.widget == widget: return child else: raise AssertionError def _allocate_child(self, child): allocation = gdk.Rectangle() allocation.x = child.x allocation.y = child.y req = child.widget.get_child_requisition() allocation.width = req[0] allocation.height = req[1] child.widget.size_allocate(allocation) Layout.set_set_scroll_adjustments_signal('set-scroll-adjustments') def main(): window = gtk.Window() window.set_size_request(300, 300) window.connect('delete-event', gtk.main_quit) sw = gtk.ScrolledWindow() sw.set_policy(gtk.POLICY_ALWAYS, gtk.POLICY_ALWAYS) window.add(sw) layout = Layout() layout.set_size(1000, 1000) sw.add(layout) b = gtk.Button('foobar') layout.put(b, 100, 100) window.show_all() gtk.main() if __name__ == '__main__': main() pygtk-2.24.0/examples/gtk/filechooser.py0000644000175000017500000000173611545325345015153 00000000000000import pygtk pygtk.require('2.0') import gtk dialog = gtk.FileChooserDialog("Open..", None, gtk.FILE_CHOOSER_ACTION_OPEN, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK)) dialog.set_default_response(gtk.RESPONSE_OK) filter = gtk.FileFilter() filter.set_name("All files") filter.add_pattern("*") dialog.add_filter(filter) filter = gtk.FileFilter() filter.set_name("Images") filter.add_mime_type("image/png") filter.add_mime_type("image/jpeg") filter.add_mime_type("image/gif") filter.add_pattern("*.png") filter.add_pattern("*.jpg") filter.add_pattern("*.gif") filter.add_pattern("*.tif") filter.add_pattern("*.xpm") dialog.add_filter(filter) response = dialog.run() if response == gtk.RESPONSE_OK: print dialog.get_filename(), 'selected' elif response == gtk.RESPONSE_CANCEL: print 'Closed, no files selected' dialog.destroy() pygtk-2.24.0/Makefile.in0000644000175000017500000013332711545325700011736 00000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @PLATFORM_WIN32_TRUE@am__append_1 = -no-undefined @BUILD_ATK_TRUE@am__append_2 = atk.la @BUILD_ATK_TRUE@am__append_3 = $(ATK_DEFS) @BUILD_PANGO_TRUE@am__append_4 = pango.la @BUILD_PANGO_TRUE@am__append_5 = $(PANGO_DEFS) @BUILD_PANGOCAIRO_TRUE@am__append_6 = pangocairo.la @BUILD_PANGOCAIRO_TRUE@am__append_7 = $(PANGOCAIRO_DEFS) subdir = . DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/PKG-INFO.in \ $(srcdir)/config.h.in $(srcdir)/pygtk-2.0.pc.in \ $(srcdir)/pygtk-codegen-2.0.in $(srcdir)/pygtk.spec.in \ $(top_srcdir)/configure \ $(top_srcdir)/docs/reference/entities.docbook.in AUTHORS \ COPYING ChangeLog INSTALL NEWS TODO config.guess config.sub \ depcomp install-sh ltmain.sh missing py-compile ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = pygtk-2.0.pc pygtk-codegen-2.0 \ docs/reference/entities.docbook pygtk.spec PKG-INFO CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgpyexecdir)" "$(DESTDIR)$(bindir)" \ "$(DESTDIR)$(defsdir)" "$(DESTDIR)$(pkgconfigdir)" LTLIBRARIES = $(pkgpyexec_LTLIBRARIES) am__DEPENDENCIES_1 = atk_la_DEPENDENCIES = $(am__DEPENDENCIES_1) am_atk_la_OBJECTS = atk_la-atkmodule.lo nodist_atk_la_OBJECTS = atk_la-atk.lo atk_la_OBJECTS = $(am_atk_la_OBJECTS) $(nodist_atk_la_OBJECTS) atk_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(atk_la_CFLAGS) $(CFLAGS) \ $(atk_la_LDFLAGS) $(LDFLAGS) -o $@ @BUILD_ATK_TRUE@am_atk_la_rpath = -rpath $(pkgpyexecdir) pango_la_DEPENDENCIES = $(am__DEPENDENCIES_1) am_pango_la_OBJECTS = pango_la-pangomodule.lo nodist_pango_la_OBJECTS = pango_la-pango.lo pango_la_OBJECTS = $(am_pango_la_OBJECTS) $(nodist_pango_la_OBJECTS) pango_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(pango_la_CFLAGS) $(CFLAGS) \ $(pango_la_LDFLAGS) $(LDFLAGS) -o $@ @BUILD_PANGO_TRUE@am_pango_la_rpath = -rpath $(pkgpyexecdir) pangocairo_la_DEPENDENCIES = $(am__DEPENDENCIES_1) am_pangocairo_la_OBJECTS = pangocairo_la-pangocairomodule.lo nodist_pangocairo_la_OBJECTS = pangocairo_la-pangocairo.lo pangocairo_la_OBJECTS = $(am_pangocairo_la_OBJECTS) \ $(nodist_pangocairo_la_OBJECTS) pangocairo_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(pangocairo_la_CFLAGS) \ $(CFLAGS) $(pangocairo_la_LDFLAGS) $(LDFLAGS) -o $@ @BUILD_PANGOCAIRO_TRUE@am_pangocairo_la_rpath = -rpath $(pkgpyexecdir) SCRIPTS = $(bin_SCRIPTS) DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(atk_la_SOURCES) $(nodist_atk_la_SOURCES) \ $(pango_la_SOURCES) $(nodist_pango_la_SOURCES) \ $(pangocairo_la_SOURCES) $(nodist_pangocairo_la_SOURCES) DIST_SOURCES = $(atk_la_SOURCES) $(pango_la_SOURCES) \ $(pangocairo_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive DATA = $(defs_DATA) $(pkgconfig_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir dist dist-all distcheck ETAGS = etags CTAGS = ctags DIST_SUBDIRS = . gtk examples tests docs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ { test ! -d "$(distdir)" \ || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -fr "$(distdir)"; }; } am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ ATK_CFLAGS = @ATK_CFLAGS@ ATK_LIBS = @ATK_LIBS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODEGENDIR = @CODEGENDIR@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GTK210_CFLAGS = @GTK210_CFLAGS@ GTK210_LIBS = @GTK210_LIBS@ GTK212_CFLAGS = @GTK212_CFLAGS@ GTK212_LIBS = @GTK212_LIBS@ GTK214_CFLAGS = @GTK214_CFLAGS@ GTK214_LIBS = @GTK214_LIBS@ GTK216_CFLAGS = @GTK216_CFLAGS@ GTK216_LIBS = @GTK216_LIBS@ GTK218_CFLAGS = @GTK218_CFLAGS@ GTK218_LIBS = @GTK218_LIBS@ GTK220_CFLAGS = @GTK220_CFLAGS@ GTK220_LIBS = @GTK220_LIBS@ GTK222_CFLAGS = @GTK222_CFLAGS@ GTK222_LIBS = @GTK222_LIBS@ GTK224_CFLAGS = @GTK224_CFLAGS@ GTK224_LIBS = @GTK224_LIBS@ GTKUNIXPRINT_CFLAGS = @GTKUNIXPRINT_CFLAGS@ GTKUNIXPRINT_LIBS = @GTKUNIXPRINT_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ HAVE_GTK_2_10 = @HAVE_GTK_2_10@ HAVE_GTK_2_12 = @HAVE_GTK_2_12@ HAVE_GTK_2_14 = @HAVE_GTK_2_14@ HAVE_GTK_2_16 = @HAVE_GTK_2_16@ HAVE_GTK_2_18 = @HAVE_GTK_2_18@ HAVE_GTK_2_20 = @HAVE_GTK_2_20@ HAVE_GTK_2_22 = @HAVE_GTK_2_22@ HAVE_GTK_2_24 = @HAVE_GTK_2_24@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBGLADE_CFLAGS = @LIBGLADE_CFLAGS@ LIBGLADE_LIBS = @LIBGLADE_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOCAIRO_CFLAGS = @PANGOCAIRO_CFLAGS@ PANGOCAIRO_LIBS = @PANGOCAIRO_LIBS@ PANGO_CFLAGS = @PANGO_CFLAGS@ PANGO_LIBS = @PANGO_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PYCAIRO_CFLAGS = @PYCAIRO_CFLAGS@ PYCAIRO_LIBS = @PYCAIRO_LIBS@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_DATADIR = @PYGOBJECT_DATADIR@ PYGOBJECT_DEFSDIR = @PYGOBJECT_DEFSDIR@ PYGOBJECT_FIXXREF = @PYGOBJECT_FIXXREF@ PYGOBJECT_INCLUDEDIR = @PYGOBJECT_INCLUDEDIR@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYGOBJECT_PYGDOCS = @PYGOBJECT_PYGDOCS@ PYGTK_CODEGEN_DEFINES = @PYGTK_CODEGEN_DEFINES@ PYGTK_MAJOR_VERSION = @PYGTK_MAJOR_VERSION@ PYGTK_MICRO_VERSION = @PYGTK_MICRO_VERSION@ PYGTK_MINOR_VERSION = @PYGTK_MINOR_VERSION@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADING_CFLAGS = @THREADING_CFLAGS@ VERSION = @VERSION@ XSLTPROC = @XSLTPROC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ # pygtk extension modules pkgpyexecdir = $(pyexecdir)/gtk-2.0 # pygtk scripts pkgpythondir = $(pyexecdir)/gtk-2.0 prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = 1.7 @BUILD_GTK_TRUE@GTK_SUBDIR = gtk SUBDIRS = . $(GTK_SUBDIR) examples tests docs PLATFORM_VERSION = 2.0 bin_SCRIPTS = pygtk-codegen-$(PLATFORM_VERSION) CLEANFILES = atk.c pango.c pangocairo.c EXTRA_DIST = ChangeLog.pre-2-0 ChangeLog.pre-2-6 ChangeLog.pre-2-16 \ config.h.win32 MANIFEST.in MAPPING pygtk.spec pygtk.spec.in \ pygtk-$(PLATFORM_VERSION).pc.in \ pygtk-codegen-$(PLATFORM_VERSION).in pygtk_postinstall.py \ PKG-INFO PKG-INFO.in setup.py THREADS README.win32 \ m4/jhflags.m4 m4/python.m4 $(ATK_DEFS) $(ATK_OVERRIDES) \ $(PANGO_DEFS) pango.override $(PANGOCAIRO_DEFS) \ pangocairo.override BUILT_EXTRA_DIST = \ ChangeLog INCLUDES = \ $(PYTHON_INCLUDES) \ $(PYGOBJECT_CFLAGS) \ $(GLIB_CFLAGS) \ -I$(srcdir)/gtk # pkg-config files pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = pygtk-$(PLATFORM_VERSION).pc # defs files defsdir = $(pkgdatadir)/$(PLATFORM_VERSION)/defs defs_DATA = $(am__append_3) $(am__append_5) $(am__append_7) pkgpyexec_LTLIBRARIES = $(am__append_2) $(am__append_4) \ $(am__append_6) # linker flags common_ldflags = -module -avoid-version $(am__append_1) # atk module ATK_DEFS = atk.defs atk-types.defs ATK_OVERRIDES = atk.override atkrectangle.override atk_la_CFLAGS = $(ATK_CFLAGS) atk_la_LIBADD = $(ATK_LIBS) atk_la_LDFLAGS = $(common_ldflags) -export-symbols-regex initatk atk_la_SOURCES = atkmodule.c nodist_atk_la_SOURCES = atk.c # pango module PANGO_DEFS = pango.defs pango-types.defs pango_la_CFLAGS = $(PANGO_CFLAGS) pango_la_LIBADD = $(PANGO_LIBS) pango_la_LDFLAGS = $(common_ldflags) -export-symbols-regex initpango pango_la_SOURCES = pangomodule.c nodist_pango_la_SOURCES = pango.c # pangocairo module PANGOCAIRO_DEFS = pangocairo.defs pangocairo.override pangocairo_la_CFLAGS = $(PYCAIRO_CFLAGS) $(PANGOCAIRO_CFLAGS) pangocairo_la_LDFLAGS = $(common_ldflags) -export-symbols-regex initpangocairo pangocairo_la_LIBADD = $(PANGOCAIRO_LIBS) pangocairo_la_SOURCES = pangocairomodule.c nodist_pangocairo_la_SOURCES = pangocairo.c all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: .SUFFIXES: .c .defs .la .lo .o .obj .so am--refresh: @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @if test ! -f $@; then \ rm -f stamp-h1; \ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 pygtk-2.0.pc: $(top_builddir)/config.status $(srcdir)/pygtk-2.0.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ pygtk-codegen-2.0: $(top_builddir)/config.status $(srcdir)/pygtk-codegen-2.0.in cd $(top_builddir) && $(SHELL) ./config.status $@ docs/reference/entities.docbook: $(top_builddir)/config.status $(top_srcdir)/docs/reference/entities.docbook.in cd $(top_builddir) && $(SHELL) ./config.status $@ pygtk.spec: $(top_builddir)/config.status $(srcdir)/pygtk.spec.in cd $(top_builddir) && $(SHELL) ./config.status $@ PKG-INFO: $(top_builddir)/config.status $(srcdir)/PKG-INFO.in cd $(top_builddir) && $(SHELL) ./config.status $@ install-pkgpyexecLTLIBRARIES: $(pkgpyexec_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(pkgpyexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgpyexecdir)" @list='$(pkgpyexec_LTLIBRARIES)'; test -n "$(pkgpyexecdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkgpyexecdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkgpyexecdir)"; \ } uninstall-pkgpyexecLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkgpyexec_LTLIBRARIES)'; test -n "$(pkgpyexecdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkgpyexecdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkgpyexecdir)/$$f"; \ done clean-pkgpyexecLTLIBRARIES: -test -z "$(pkgpyexec_LTLIBRARIES)" || rm -f $(pkgpyexec_LTLIBRARIES) @list='$(pkgpyexec_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done atk.la: $(atk_la_OBJECTS) $(atk_la_DEPENDENCIES) $(atk_la_LINK) $(am_atk_la_rpath) $(atk_la_OBJECTS) $(atk_la_LIBADD) $(LIBS) pango.la: $(pango_la_OBJECTS) $(pango_la_DEPENDENCIES) $(pango_la_LINK) $(am_pango_la_rpath) $(pango_la_OBJECTS) $(pango_la_LIBADD) $(LIBS) pangocairo.la: $(pangocairo_la_OBJECTS) $(pangocairo_la_DEPENDENCIES) $(pangocairo_la_LINK) $(am_pangocairo_la_rpath) $(pangocairo_la_OBJECTS) $(pangocairo_la_LIBADD) $(LIBS) install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atk_la-atk.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atk_la-atkmodule.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pango_la-pango.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pango_la-pangomodule.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pangocairo_la-pangocairo.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pangocairo_la-pangocairomodule.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< atk_la-atkmodule.lo: atkmodule.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atk_la_CFLAGS) $(CFLAGS) -MT atk_la-atkmodule.lo -MD -MP -MF $(DEPDIR)/atk_la-atkmodule.Tpo -c -o atk_la-atkmodule.lo `test -f 'atkmodule.c' || echo '$(srcdir)/'`atkmodule.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/atk_la-atkmodule.Tpo $(DEPDIR)/atk_la-atkmodule.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='atkmodule.c' object='atk_la-atkmodule.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atk_la_CFLAGS) $(CFLAGS) -c -o atk_la-atkmodule.lo `test -f 'atkmodule.c' || echo '$(srcdir)/'`atkmodule.c atk_la-atk.lo: atk.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atk_la_CFLAGS) $(CFLAGS) -MT atk_la-atk.lo -MD -MP -MF $(DEPDIR)/atk_la-atk.Tpo -c -o atk_la-atk.lo `test -f 'atk.c' || echo '$(srcdir)/'`atk.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/atk_la-atk.Tpo $(DEPDIR)/atk_la-atk.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='atk.c' object='atk_la-atk.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atk_la_CFLAGS) $(CFLAGS) -c -o atk_la-atk.lo `test -f 'atk.c' || echo '$(srcdir)/'`atk.c pango_la-pangomodule.lo: pangomodule.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pango_la_CFLAGS) $(CFLAGS) -MT pango_la-pangomodule.lo -MD -MP -MF $(DEPDIR)/pango_la-pangomodule.Tpo -c -o pango_la-pangomodule.lo `test -f 'pangomodule.c' || echo '$(srcdir)/'`pangomodule.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pango_la-pangomodule.Tpo $(DEPDIR)/pango_la-pangomodule.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pangomodule.c' object='pango_la-pangomodule.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pango_la_CFLAGS) $(CFLAGS) -c -o pango_la-pangomodule.lo `test -f 'pangomodule.c' || echo '$(srcdir)/'`pangomodule.c pango_la-pango.lo: pango.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pango_la_CFLAGS) $(CFLAGS) -MT pango_la-pango.lo -MD -MP -MF $(DEPDIR)/pango_la-pango.Tpo -c -o pango_la-pango.lo `test -f 'pango.c' || echo '$(srcdir)/'`pango.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pango_la-pango.Tpo $(DEPDIR)/pango_la-pango.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pango.c' object='pango_la-pango.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pango_la_CFLAGS) $(CFLAGS) -c -o pango_la-pango.lo `test -f 'pango.c' || echo '$(srcdir)/'`pango.c pangocairo_la-pangocairomodule.lo: pangocairomodule.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pangocairo_la_CFLAGS) $(CFLAGS) -MT pangocairo_la-pangocairomodule.lo -MD -MP -MF $(DEPDIR)/pangocairo_la-pangocairomodule.Tpo -c -o pangocairo_la-pangocairomodule.lo `test -f 'pangocairomodule.c' || echo '$(srcdir)/'`pangocairomodule.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pangocairo_la-pangocairomodule.Tpo $(DEPDIR)/pangocairo_la-pangocairomodule.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pangocairomodule.c' object='pangocairo_la-pangocairomodule.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pangocairo_la_CFLAGS) $(CFLAGS) -c -o pangocairo_la-pangocairomodule.lo `test -f 'pangocairomodule.c' || echo '$(srcdir)/'`pangocairomodule.c pangocairo_la-pangocairo.lo: pangocairo.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pangocairo_la_CFLAGS) $(CFLAGS) -MT pangocairo_la-pangocairo.lo -MD -MP -MF $(DEPDIR)/pangocairo_la-pangocairo.Tpo -c -o pangocairo_la-pangocairo.lo `test -f 'pangocairo.c' || echo '$(srcdir)/'`pangocairo.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pangocairo_la-pangocairo.Tpo $(DEPDIR)/pangocairo_la-pangocairo.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pangocairo.c' object='pangocairo_la-pangocairo.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pangocairo_la_CFLAGS) $(CFLAGS) -c -o pangocairo_la-pangocairo.lo `test -f 'pangocairo.c' || echo '$(srcdir)/'`pangocairo.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt install-defsDATA: $(defs_DATA) @$(NORMAL_INSTALL) test -z "$(defsdir)" || $(MKDIR_P) "$(DESTDIR)$(defsdir)" @list='$(defs_DATA)'; test -n "$(defsdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(defsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(defsdir)" || exit $$?; \ done uninstall-defsDATA: @$(NORMAL_UNINSTALL) @list='$(defs_DATA)'; test -n "$(defsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(defsdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(defsdir)" && rm -f $$files install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @$(am__cd) '$(distuninstallcheck_dir)' \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(LTLIBRARIES) $(SCRIPTS) $(DATA) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkgpyexecdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(defsdir)" "$(DESTDIR)$(pkgconfigdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool clean-local \ clean-pkgpyexecLTLIBRARIES mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-libtool distclean-local distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-defsDATA install-pkgconfigDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-binSCRIPTS install-pkgpyexecLTLIBRARIES install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-binSCRIPTS uninstall-defsDATA \ uninstall-pkgconfigDATA uninstall-pkgpyexecLTLIBRARIES .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ ctags-recursive install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-generic \ clean-libtool clean-local clean-pkgpyexecLTLIBRARIES ctags \ ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-hook \ dist-lzma dist-shar dist-tarZ dist-xz dist-zip distcheck \ distclean distclean-compile distclean-generic distclean-hdr \ distclean-libtool distclean-local distclean-tags \ distcleancheck distdir distuninstallcheck dvi dvi-am html \ html-am info info-am install install-am install-binSCRIPTS \ install-data install-data-am install-defsDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgconfigDATA \ install-pkgpyexecLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am uninstall-binSCRIPTS uninstall-defsDATA \ uninstall-pkgconfigDATA uninstall-pkgpyexecLTLIBRARIES atk.c: $(ATK_DEFS) $(ATK_OVERRIDES) pango.c: $(PANGO_DEFS) pango.override pangocairo.c: $(PANGOCAIRO_DEFS) pangocairo.override # code generator .defs.c: (cd $(srcdir)\ && $(PYTHON) $(CODEGENDIR)/codegen.py \ --py_ssize_t-clean \ --register pango-types.defs \ --register atk-types.defs \ --register gtk/gtk-base-types.defs \ --override $*.override \ --prefix py$(*F) $*.defs) > $(*D)/gen-$(*F).c \ && cp $(*D)/gen-$(*F).c $(*D)/$(*F).c \ && rm -f $(*D)/gen-$(*F).c snap: $(MAKE) dist distdir=$(PACKAGE)-SNAP-`date +"%Y%m%d"` release-tag: @ROOT=`svn info --xml|egrep ^""|cut -d\> -f2|cut -d\< -f1`; \ SVNVERSION=`echo $(VERSION)|sed s/\\\./_/g`;\ echo "* Tagging $(VERSION)"; \ svn cp -m "Tag $(VERSION)" \ $$ROOT \ svn+ssh://svn.gnome.org/svn/pygtk/tags/PYGTK_$$SVNVERSION doc-dist: mkdir -p pygtk/icons pygtk/cursors cp -r docs/html/*.html pygtk cp -r docs/html/*.sgml pygtk cp -r docs/html/*.devhelp pygtk cp -r $(PYGOBJECT_PYGDOCS)/style.css pygtk cp -r docs/icons/* pygtk/icons cp -r docs/cursors/* pygtk/cursors tar cfz $(PACKAGE)-docs.tar.gz pygtk rm -fr pygtk distclean-local: if test $(srcdir) = .; then :; else \ rm -f $(BUILT_EXTRA_DIST); \ fi dist-hook: $(BUILT_EXTRA_DIST) files='$(BUILT_EXTRA_DIST)'; \ for f in $$files; do \ if test -f $$f; then d=.; else d=$(srcdir); fi; \ rm -f $(distdir)/$$f && cp $$d/$$f $(distdir) || exit 1; done .PHONY: ChangeLog ChangeLog: @echo Creating $@ @if test -d "$(srcdir)/.git"; then \ (GIT_DIR=$(top_srcdir)/.git ./missing --run git log PYGTK_2_15_0^^.. --stat) | fmt --split-only > $@.tmp \ && mv -f $@.tmp $@ \ || ($(RM) $@.tmp; \ echo Failed to generate ChangeLog, your ChangeLog may be outdated >&2; \ (test -f $@ || echo git-log is required to generate this file >> $@)); \ else \ test -f $@ || \ (echo A git checkout and git-log is required to generate ChangeLog >&2 && \ echo A git checkout and git-log is required to generate this file >> $@); \ fi all: $(pkgpyexec_LTLIBRARIES:.la=.so) clean-local: rm -f $(pkgpyexec_LTLIBRARIES:.la=.so) .la.so: $(LN_S) .libs/$@ $@ || true # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: pygtk-2.24.0/pango.override0000644000175000017500000016615711545325345012552 00000000000000/* -*- Mode: C; c-basic-offset: 4 -*- * pygtk- Python bindings for the GTK toolkit. * Copyright (C) 1998-2003 James Henstridge * * pango.override: overrides for the Pango library * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ %% headers #define NO_IMPORT_PYGOBJECT #define PANGO_ENABLE_BACKEND #define PANGO_ENABLE_ENGINE #include #include typedef struct { PyObject *func, *data; } PyGtkCustomNotify; #ifndef PANGO_TYPE_LAYOUT_LINE # define PANGO_TYPE_LAYOUT_LINE pypango_layout_line_get_type() static PangoLayoutLine * _layout_line_boxed_copy(PangoLayoutLine *line) { pango_layout_line_ref(line); return line; } static GType pypango_layout_line_get_type(void) { static GType our_type = 0; if (our_type == 0) our_type = g_boxed_type_register_static("PangoLayoutLine", (GBoxedCopyFunc)_layout_line_boxed_copy, (GBoxedFreeFunc)pango_layout_line_unref); return our_type; } #endif /* #ifndef PANGO_TYPE_LAYOUT_LINE */ #ifndef PANGO_TYPE_ITEM # define PANGO_TYPE_ITEM (pypango_item_get_type ()) static GType pypango_item_get_type (void) { static GType our_type = 0; if (our_type == 0) our_type = g_boxed_type_register_static ("PangoItem", (GBoxedCopyFunc) pango_item_copy, (GBoxedFreeFunc) pango_item_free); return our_type; } #endif /* #ifndef PANGO_TYPE_ITEM */ /* ------------- PangoAttribute ------------- */ typedef struct { PyObject_HEAD PangoAttribute *attr; } PyPangoAttribute; staticforward PyTypeObject PyPangoAttribute_Type; static PyObject * pypango_attr_new(PangoAttribute *attr, guint start, guint end) { PyPangoAttribute *self; self = (PyPangoAttribute *)PyObject_NEW(PyPangoAttribute, &PyPangoAttribute_Type); if (self == NULL) return NULL; self->attr = attr; attr->start_index = start; attr->end_index = end; return (PyObject *)self; } static void pypango_attr_dealloc(PyPangoAttribute *self) { pango_attribute_destroy(self->attr); PyObject_DEL(self); } static int pypango_attr_compare(PyPangoAttribute *self, PyPangoAttribute *v) { if (pango_attribute_equal(self->attr, v->attr)) return 0; if (self->attr > v->attr) return -1; return 1; } static long pypango_attr_hash(PyPangoAttribute *self) { return (long)self->attr; } static PyObject * pypango_attr_copy(PyPangoAttribute *self) { return pypango_attr_new(pango_attribute_copy(self->attr), self->attr->start_index, self->attr->end_index); } static PyMethodDef pypango_attr_methods[] = { { "copy", (PyCFunction)pypango_attr_copy, METH_NOARGS }, { NULL, NULL, 0 } }; static PyObject * pypango_attr_get_index(PyPangoAttribute *self, void *closure) { gboolean is_end = GPOINTER_TO_INT(closure) != 0; if (is_end) return PyInt_FromLong(self->attr->end_index); else return PyInt_FromLong(self->attr->start_index); } static int pypango_attr_set_index(PyPangoAttribute *self, PyObject *value, void *closure) { gboolean is_end = GPOINTER_TO_INT(closure) != 0; gint val; val = PyInt_AsLong(value); if (PyErr_Occurred()) { PyErr_Clear(); PyErr_SetString(PyExc_TypeError, "index must be an integer"); return -1; } if (is_end) self->attr->end_index = val; else self->attr->start_index = val; return 0; } static PyObject * pypango_attr_get_type(PyPangoAttribute *self, void *closure) { return PyInt_FromLong(self->attr->klass->type); } static PyGetSetDef pypango_attr_getsets[] = { { "start_index", (getter)pypango_attr_get_index, (setter)pypango_attr_set_index, NULL, GINT_TO_POINTER(0) }, { "end_index", (getter)pypango_attr_get_index, (setter)pypango_attr_set_index, NULL, GINT_TO_POINTER(1) }, { "type", (getter)pypango_attr_get_type, (setter)0, NULL, NULL }, { NULL, (getter)0, (setter)0, NULL, NULL } }; static PyObject * pypango_attr_tp_getattr(PyPangoAttribute *self, char *attr) { PangoAttribute *attribute = self->attr; PyObject *name, *ret; switch (attribute->klass->type) { case PANGO_ATTR_LANGUAGE: if (!strcmp(attr, "__members__")) return Py_BuildValue("[s]", "value"); if (!strcmp(attr, "value")) return pyg_boxed_new(PANGO_TYPE_LANGUAGE, ((PangoAttrLanguage *)attribute)->value, TRUE, TRUE); break; case PANGO_ATTR_FAMILY: if (!strcmp(attr, "__members__")) return Py_BuildValue("[s]", "value"); if (!strcmp(attr, "value")) return PyString_FromString(((PangoAttrString *)attribute)->value); break; case PANGO_ATTR_STYLE: case PANGO_ATTR_WEIGHT: case PANGO_ATTR_VARIANT: case PANGO_ATTR_STRETCH: case PANGO_ATTR_SIZE: case PANGO_ATTR_UNDERLINE: case PANGO_ATTR_STRIKETHROUGH: case PANGO_ATTR_RISE: case PANGO_ATTR_FALLBACK: case PANGO_ATTR_LETTER_SPACING: case PANGO_ATTR_ABSOLUTE_SIZE: if (!strcmp(attr, "__members__")) return Py_BuildValue("[s]", "value"); if (!strcmp(attr, "value")) return PyInt_FromLong(((PangoAttrInt *)attribute)->value); break; case PANGO_ATTR_FONT_DESC: if (!strcmp(attr, "__members__")) return Py_BuildValue("[s]", "desc"); if (!strcmp(attr, "desc")) return pyg_boxed_new(PANGO_TYPE_FONT_DESCRIPTION, ((PangoAttrFontDesc *)attribute)->desc, TRUE, TRUE); break; case PANGO_ATTR_FOREGROUND: case PANGO_ATTR_BACKGROUND: case PANGO_ATTR_UNDERLINE_COLOR: case PANGO_ATTR_STRIKETHROUGH_COLOR: if (!strcmp(attr, "__members__")) return Py_BuildValue("[s]", "color"); if (!strcmp(attr, "color")) return pyg_boxed_new(PANGO_TYPE_COLOR, &((PangoAttrColor *)attribute)->color, TRUE, TRUE); break; case PANGO_ATTR_SHAPE: if (!strcmp(attr, "__members__")) return Py_BuildValue("[ss]", "ink_rect", "logical_rect"); if (!strcmp(attr, "ink_rect")) { PangoRectangle rect = ((PangoAttrShape *)attribute)->ink_rect; return Py_BuildValue("iiii", rect.x, rect.y, rect.width, rect.height); } if (!strcmp(attr, "logical_rect")) { PangoRectangle rect = ((PangoAttrShape *)attribute)->logical_rect; return Py_BuildValue("iiii", rect.x, rect.y, rect.width, rect.height); } break; case PANGO_ATTR_SCALE: if (!strcmp(attr, "__members__")) return Py_BuildValue("[s]", "value"); if (!strcmp(attr, "value")) return PyFloat_FromDouble(((PangoAttrFloat *)attribute)->value); break; default: break; } name = PyString_FromString(attr); ret = PyObject_GenericGetAttr((PyObject *)self, name); Py_DECREF(name); return ret; } static PyTypeObject PyPangoAttribute_Type = { PyObject_HEAD_INIT(NULL) 0, /* ob_size */ "pango.Attribute", /* tp_name */ sizeof(PyPangoAttribute), /* tp_basicsize */ 0, /* tp_itemsize */ /* methods */ (destructor)pypango_attr_dealloc, /* tp_dealloc */ (printfunc)0, /* tp_print */ (getattrfunc)pypango_attr_tp_getattr, /* tp_getattr */ (setattrfunc)0, /* tp_setattr */ (cmpfunc)pypango_attr_compare, /* tp_compare */ (reprfunc)0, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ 0, /* tp_as_mapping */ (hashfunc)pypango_attr_hash, /* tp_hash */ (ternaryfunc)0, /* tp_call */ (reprfunc)0, /* tp_str */ (getattrofunc)0, /* tp_getattro */ (setattrofunc)0, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT, /* tp_flags */ NULL, /* Documentation string */ (traverseproc)0, /* tp_traverse */ (inquiry)0, /* tp_clear */ (richcmpfunc)0, /* tp_richcompare */ 0, /* tp_weaklistoffset */ (getiterfunc)0, /* tp_iter */ (iternextfunc)0, /* tp_iternext */ pypango_attr_methods, /* tp_methods */ 0, /* tp_members */ pypango_attr_getsets, /* tp_getset */ (PyTypeObject *)0, /* tp_base */ (PyObject *)0, /* tp_dict */ 0, /* tp_descr_get */ 0, /* tp_descr_set */ 0, /* tp_dictoffset */ (initproc)0, /* tp_init */ (allocfunc)0, /* tp_alloc */ (newfunc)0, /* tp_new */ 0, /* tp_free */ (inquiry)0, /* tp_is_gc */ (PyObject *)0, /* tp_bases */ }; /* ------------- PangoAttrIterator ------------- */ typedef struct { PyObject_HEAD PangoAttrIterator *iter; } PyPangoAttrIterator; staticforward PyTypeObject PyPangoAttrIterator_Type; static PyObject * pypango_attr_iterator_new(PangoAttrIterator *iter) { PyPangoAttrIterator *self; self = (PyPangoAttrIterator *)PyObject_NEW(PyPangoAttrIterator, &PyPangoAttrIterator_Type); if (self == NULL) return NULL; self->iter = iter; return (PyObject *)self; } static void pypango_attr_iterator_dealloc(PyPangoAttrIterator *self) { pango_attr_iterator_destroy(self->iter); PyObject_DEL(self); } static int pypango_attr_iterator_compare(PyPangoAttrIterator *self, PyPangoAttrIterator *v) { if (self->iter == v->iter) return 0; if (self->iter > v->iter) return -1; return 1; } static long pypango_attr_iterator_hash(PyPangoAttrIterator *self) { return (long)self->iter; } static PyObject * pypango_attr_iterator_copy(PyPangoAttrIterator *self) { return pypango_attr_iterator_new(pango_attr_iterator_copy(self->iter)); } static PyObject * pypango_attr_iterator_range(PyPangoAttrIterator *self) { gint start, end; pango_attr_iterator_range(self->iter, &start, &end); return Py_BuildValue("ii", start, end); } static PyObject * pypango_attr_iterator_next(PyPangoAttrIterator *self) { return PyBool_FromLong(pango_attr_iterator_next(self->iter)); } static PyObject * pypango_attr_iterator_get(PyPangoAttrIterator *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "type", NULL }; PyObject *py_type; PangoAttrType type; PangoAttribute *attr; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:pango.AttrIterator.get", kwlist, &py_type)) return NULL; if (pyg_enum_get_value(PANGO_TYPE_ATTR_TYPE, py_type, (gint*)&type)) return NULL; if (!(attr = pango_attr_iterator_get(self->iter, type))) { Py_INCREF(Py_None); return Py_None; } return pypango_attr_new(attr, attr->start_index, attr->end_index); } static PyObject * pypango_attr_iterator_get_font(PyPangoAttrIterator *self) { PangoFontDescription *desc; PangoLanguage *language; GSList *extra_attrs, *tmp; PyObject *py_desc, *py_language, *py_extra_attrs; if (!(desc = pango_font_description_new())) { PyErr_SetString(PyExc_RuntimeError, "can't get font info"); return NULL; } pango_attr_iterator_get_font(self->iter, desc, &language, &extra_attrs); py_desc = pyg_boxed_new(PANGO_TYPE_FONT_DESCRIPTION, desc, TRUE, TRUE); py_language = pyg_boxed_new(PANGO_TYPE_LANGUAGE, language, TRUE, TRUE); py_extra_attrs = PyList_New(0); for (tmp = extra_attrs; tmp != NULL; tmp = tmp->next) { PangoAttribute *attr = (PangoAttribute *)tmp->data; PyObject *py_attr = pypango_attr_new(attr, attr->start_index, attr->end_index); PyList_Append(py_extra_attrs, py_attr); Py_DECREF(py_attr); } g_slist_free(extra_attrs); return Py_BuildValue("NNN", py_desc, py_language, py_extra_attrs); } static PyObject * pypango_attr_iterator_get_attrs(PyPangoAttrIterator *self) { GSList *alist; PyObject *py_list; guint i, len; alist = pango_attr_iterator_get_attrs(self->iter); len = g_slist_length(alist); py_list = PyTuple_New(len); for (i = 0; i < len; i++) { PangoAttribute *attr = (PangoAttribute *)g_slist_nth_data(alist, i); PyTuple_SetItem(py_list, i, pypango_attr_new(attr, attr->start_index, attr->end_index)); } /* don't have to destroy attributes since we use them */ g_slist_free(alist); return py_list; } static PyMethodDef pypango_attr_iterator_methods[] = { { "copy", (PyCFunction)pypango_attr_iterator_copy, METH_NOARGS }, { "range", (PyCFunction)pypango_attr_iterator_range, METH_NOARGS }, { "next", (PyCFunction)pypango_attr_iterator_next, METH_NOARGS }, { "get", (PyCFunction)pypango_attr_iterator_get, METH_VARARGS|METH_KEYWORDS }, { "get_font", (PyCFunction)pypango_attr_iterator_get_font, METH_NOARGS }, { "get_attrs", (PyCFunction)pypango_attr_iterator_get_attrs, METH_NOARGS }, { NULL, NULL, 0 } }; static PyTypeObject PyPangoAttrIterator_Type = { PyObject_HEAD_INIT(NULL) 0, /* ob_size */ "pango.AttrIterator", /* tp_name */ sizeof(PyPangoAttrIterator), /* tp_basicsize */ 0, /* tp_itemsize */ /* methods */ (destructor)pypango_attr_iterator_dealloc, /* tp_dealloc */ (printfunc)0, /* tp_print */ (getattrfunc)0, /* tp_getattr */ (setattrfunc)0, /* tp_setattr */ (cmpfunc)pypango_attr_iterator_compare, /* tp_compare */ (reprfunc)0, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ 0, /* tp_as_mapping */ (hashfunc)pypango_attr_iterator_hash, /* tp_hash */ (ternaryfunc)0, /* tp_call */ (reprfunc)0, /* tp_str */ (getattrofunc)0, /* tp_getattro */ (setattrofunc)0, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT, /* tp_flags */ NULL, /* Documentation string */ (traverseproc)0, /* tp_traverse */ (inquiry)0, /* tp_clear */ (richcmpfunc)0, /* tp_richcompare */ 0, /* tp_weaklistoffset */ (getiterfunc)0, /* tp_iter */ (iternextfunc)0, /* tp_iternext */ pypango_attr_iterator_methods, /* tp_methods */ 0, /* tp_members */ 0, /* tp_getset */ (PyTypeObject *)0, /* tp_base */ (PyObject *)0, /* tp_dict */ 0, /* tp_descr_get */ 0, /* tp_descr_set */ 0, /* tp_dictoffset */ (initproc)0, /* tp_init */ (allocfunc)0, /* tp_alloc */ (newfunc)0, /* tp_new */ 0, /* tp_free */ (inquiry)0, /* tp_is_gc */ (PyObject *)0, /* tp_bases */ }; %% init PyPangoAttribute_Type.tp_alloc = PyType_GenericAlloc; PyPangoAttribute_Type.tp_new = PyType_GenericNew; if (PyType_Ready(&PyPangoAttribute_Type) < 0) return; PyPangoAttrIterator_Type.tp_alloc = PyType_GenericAlloc; PyPangoAttrIterator_Type.tp_new = PyType_GenericNew; if (PyType_Ready(&PyPangoAttrIterator_Type) < 0) return; %% modulename pango %% import gobject.GObject as PyGObject_Type %% ignore-glob *_get_type *_ref *_unref *_free %% ignore pango_color_copy pango_attribute_copy pango_attribute_destroy pango_attribute_equal pango_font_description_equal pango_font_map_free_families pango_font_get_coverage pango_font_find_shaper pango_layout_get_log_attrs %% ignore pango_glyph_string_index_to_x pango_glyph_string_x_to_index pango_break pango_default_break pango_shape %% override pango_attr_language_new kwargs static PyObject * _wrap_pango_attr_language_new(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "language", "start_index", "end_index", NULL }; char *slanguage; PangoLanguage *language; guint start = 0, end = 1; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|ii:PangoAttrLanguage", kwlist, &slanguage, &start, &end)) return NULL; language = pango_language_from_string(slanguage); return pypango_attr_new(pango_attr_language_new(language), start, end); } %% override pango_attr_family_new kwargs static PyObject * _wrap_pango_attr_family_new(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "family", "start_index", "end_index", NULL }; char *family; guint start = 0, end = 1; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|ii:PangoAttrFamily", kwlist, &family, &start, &end)) return NULL; return pypango_attr_new(pango_attr_family_new(family), start, end); } %% override pango_attr_foreground_new kwargs static PyObject * _wrap_pango_attr_foreground_new(PyObject *self,PyObject *args,PyObject *kwargs) { static char *kwlist[] = { "red", "green", "blue", "start_index", "end_index", NULL }; guint16 red, green, blue; guint start = 0, end = 1; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "HHH|ii:PangoAttrForeground", kwlist, &red, &green, &blue, &start, &end)) return NULL; return pypango_attr_new(pango_attr_foreground_new(red, green, blue), start, end); } %% override pango_attr_background_new kwargs static PyObject * _wrap_pango_attr_background_new(PyObject *self,PyObject *args,PyObject *kwargs) { static char *kwlist[] = { "red", "green", "blue", "start_index", "end_index", NULL }; guint16 red, green, blue; guint start = 0, end = 1; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "HHH|ii:PangoAttrBackground", kwlist, &red, &green, &blue, &start, &end)) return NULL; return pypango_attr_new(pango_attr_background_new(red, green, blue), start, end); } %% override pango_attr_size_new kwargs static PyObject * _wrap_pango_attr_size_new(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "size", "start_index", "end_index", NULL }; int size; guint start = 0, end = 1; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i|ii:PangoAttrSize", kwlist, &size, &start, &end)) return NULL; return pypango_attr_new(pango_attr_size_new(size), start, end); } %% override pango_attr_style_new kwargs static PyObject * _wrap_pango_attr_style_new(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "style", "start_index", "end_index", NULL }; PyObject *py_style; PangoStyle style; guint start = 0, end = 1; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|ii:PangoAttrStyle", kwlist, &py_style, &start, &end)) return NULL; if (pyg_enum_get_value(PANGO_TYPE_STYLE, py_style, (gint *)&style)) return NULL; return pypango_attr_new(pango_attr_style_new(style), start, end); } %% override pango_attr_weight_new kwargs static PyObject * _wrap_pango_attr_weight_new(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "weight", "start_index", "end_index", NULL }; PyObject *py_weight; PangoWeight weight; guint start = 0, end = 1; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|ii:PangoAttrWeight", kwlist, &py_weight, &start, &end)) return NULL; if (pyg_enum_get_value(PANGO_TYPE_WEIGHT, py_weight, (gint *)&weight)) return NULL; return pypango_attr_new(pango_attr_weight_new(weight), start, end); } %% override pango_attr_variant_new kwargs static PyObject * _wrap_pango_attr_variant_new(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "variant", "start_index", "end_index", NULL }; PyObject *py_variant; PangoVariant variant; guint start = 0, end = 1; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|ii:PangoAttrVariant", kwlist, &py_variant, &start, &end)) return NULL; if (pyg_enum_get_value(PANGO_TYPE_VARIANT, py_variant, (gint *)&variant)) return NULL; return pypango_attr_new(pango_attr_variant_new(variant), start, end); } %% override pango_attr_stretch_new kwargs static PyObject * _wrap_pango_attr_stretch_new(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "stretch", "start_index", "end_index", NULL }; PyObject *py_stretch; PangoStretch stretch; guint start = 0, end = 1; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|ii:PangoAttrStretch", kwlist, &py_stretch, &start, &end)) return NULL; if (pyg_enum_get_value(PANGO_TYPE_STRETCH, py_stretch, (gint *)&stretch)) return NULL; return pypango_attr_new(pango_attr_stretch_new(stretch), start, end); } %% override pango_attr_font_desc_new kwargs static PyObject * _wrap_pango_attr_font_desc_new(PyObject *self, PyObject *args,PyObject *kwargs) { static char *kwlist[] = { "desc", "start_index", "end_index", NULL }; PyObject *font_desc; PangoFontDescription *desc; guint start = 0, end = 1; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|ii:PangoAttrFontDesc", kwlist, &font_desc, &start, &end)) return NULL; if (!pyg_boxed_check(font_desc, PANGO_TYPE_FONT_DESCRIPTION)) { PyErr_SetString(PyExc_TypeError,"desc must be a PangoFontDescription"); return NULL; } desc = pyg_boxed_get(font_desc, PangoFontDescription); return pypango_attr_new(pango_attr_font_desc_new(desc), start, end); } %% override pango_attr_underline_new kwargs static PyObject * _wrap_pango_attr_underline_new(PyObject *self, PyObject *args,PyObject *kwargs) { static char *kwlist[] = { "underline", "start_index", "end_index", NULL }; PyObject *py_underline; PangoUnderline underline; guint start = 0, end = 1; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|ii:PangoAttrUnderline", kwlist, &py_underline, &start, &end)) return NULL; if (pyg_enum_get_value(PANGO_TYPE_UNDERLINE, py_underline, (gint *)&underline)) return NULL; return pypango_attr_new(pango_attr_underline_new(underline), start, end); } %% override pango_attr_strikethrough_new kwargs static PyObject * _wrap_pango_attr_strikethrough_new(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "strikethrough", "start_index", "end_index", NULL }; gboolean strikethrough; guint start = 0, end = 1; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i|ii:PangoAttrStrikethrough", kwlist, &strikethrough, &start, &end)) return NULL; return pypango_attr_new(pango_attr_strikethrough_new(strikethrough), start, end); } %% override pango_attr_rise_new kwargs static PyObject * _wrap_pango_attr_rise_new(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "rise", "start_index", "end_index", NULL }; gint rise; guint start = 0, end = 1; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i|ii:PangoAttrRise", kwlist, &rise, &start, &end)) return NULL; return pypango_attr_new(pango_attr_rise_new(rise), start, end); } %% override pango_attr_shape_new kwargs static PyObject * _wrap_pango_attr_shape_new(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "ink_rect", "logical_rect", "start_index", "end_index", NULL }; PangoRectangle ink_rect, logical_rect; PyObject *py_ink_rect, *py_logical_rect; guint start = 0, end = 1; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO|ii:PangoAttrShape", kwlist, &py_ink_rect, &py_logical_rect, &start, &end)) return NULL; if (!PyTuple_Check(py_ink_rect) || !PyArg_ParseTuple(py_ink_rect, "iiii", &ink_rect.x, &ink_rect.y, &ink_rect.width, &ink_rect.height)) { PyErr_Clear(); PyErr_SetString(PyExc_TypeError, "ink_rect must be a 4-tuple of integers"); return NULL; } if (!PyTuple_Check(py_logical_rect) || !PyArg_ParseTuple(py_logical_rect, "iiii", &logical_rect.x, &logical_rect.y, &logical_rect.width,&logical_rect.height)) { PyErr_Clear(); PyErr_SetString(PyExc_TypeError, "logical_rect must be a 4-tuple of integers"); return NULL; } return pypango_attr_new(pango_attr_shape_new(&ink_rect, &logical_rect), start, end); } %% override pango_attr_scale_new kwargs static PyObject * _wrap_pango_attr_scale_new(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "scale", "start_index", "end_index", NULL }; double scale; guint start = 0, end = 1; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "d|ii:PangoAttrScale", kwlist, &scale, &start, &end)) return NULL; return pypango_attr_new(pango_attr_scale_new(scale), start, end); } %% override pango_attr_list_insert kwargs static PyObject * _wrap_pango_attr_list_insert(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "attr", NULL }; PyPangoAttribute *py_attr; PangoAttribute *attr; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!:PangoAttrList.insert", kwlist, &PyPangoAttribute_Type, &py_attr)) return NULL; attr = pango_attribute_copy(py_attr->attr); pango_attr_list_insert(pyg_boxed_get(self, PangoAttrList), attr); Py_INCREF(Py_None); return Py_None; } %% override pango_attr_list_insert_before kwargs static PyObject * _wrap_pango_attr_list_insert_before(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "attr", NULL }; PyPangoAttribute *py_attr; PangoAttribute *attr; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!:PangoAttrList.insert_before", kwlist, &PyPangoAttribute_Type, &py_attr)) return NULL; attr = pango_attribute_copy(py_attr->attr); pango_attr_list_insert_before(pyg_boxed_get(self, PangoAttrList), attr); Py_INCREF(Py_None); return Py_None; } %% override pango_attr_list_change kwargs static PyObject * _wrap_pango_attr_list_change(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "attr", NULL }; PyPangoAttribute *py_attr; PangoAttribute *attr; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!:PangoAttrList.change", kwlist, &PyPangoAttribute_Type, &py_attr)) return NULL; attr = pango_attribute_copy(py_attr->attr); pango_attr_list_change(pyg_boxed_get(self, PangoAttrList), attr); Py_INCREF(Py_None); return Py_None; } %% ignore pango_font_description_from_string %% override pango_font_description_new kwargs static int _wrap_pango_font_description_new(PyGBoxed *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "str", NULL }; char *str = NULL; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|z:PangoFontDescription.__init__", kwlist, &str)) return -1; self->gtype = PANGO_TYPE_FONT_DESCRIPTION; self->free_on_dealloc = FALSE; if (str) self->boxed = pango_font_description_from_string(str); else self->boxed = pango_font_description_new(); if (!self->boxed) { PyErr_SetString(PyExc_RuntimeError, "could not create PangoFontDescription object"); return -1; } self->free_on_dealloc = TRUE; return 0; } %% override-slot PangoFontDescription.tp_compare static int _wrap_pango_font_description_tp_compare(PyGBoxed *self, PyGBoxed *other) { if (self->boxed == other->boxed || pango_font_description_equal(pyg_boxed_get(self, PangoFontDescription), pyg_boxed_get(other, PangoFontDescription))) return 0; if (self->boxed > other->boxed) return -1; return 1; } %% override-slot PangoFontDescription.tp_hash static long _wrap_pango_font_description_tp_hash(PyGBoxed *self) { return (long)pango_font_description_hash( pyg_boxed_get(self, PangoFontDescription)); } %% override pango_font_description_copy noargs static PyObject * _wrap_pango_font_description_copy(PyObject *self) { return pyg_boxed_new(PANGO_TYPE_FONT_DESCRIPTION, pyg_boxed_get(self, PangoFontDescription), TRUE, TRUE); } %% override pango_context_list_families noargs static PyObject * _wrap_pango_context_list_families(PyGObject *self) { PangoFontFamily **families; gint n_families, i; PyObject *ret; pango_context_list_families(PANGO_CONTEXT(self->obj), &families, &n_families); ret = PyTuple_New(n_families); for (i = 0; i < n_families; i++) { PyObject *family; family = pygobject_new((GObject *)families[i]); PyTuple_SetItem(ret, i, family); } g_free(families); return ret; } %% override pango_font_get_glyph_extents kwargs static PyObject * _wrap_pango_font_get_glyph_extents(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "glyph", NULL }; gint glyph; PangoRectangle ink_rect, logical_rect; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i:PangoFont.get_glyph_extents", kwlist, &glyph)) return NULL; pango_font_get_glyph_extents(PANGO_FONT(self->obj), (PangoGlyph)glyph, &ink_rect, &logical_rect); return Py_BuildValue("((iiii)(iiii))", ink_rect.x, ink_rect.y, ink_rect.width, ink_rect.height, logical_rect.x, logical_rect.y, logical_rect.width, logical_rect.height); } %% override pango_font_family_list_faces noargs static PyObject * _wrap_pango_font_family_list_faces(PyGObject *self) { PangoFontFace **faces; gint n_faces, i; PyObject *ret; pango_font_family_list_faces(PANGO_FONT_FAMILY(self->obj), &faces, &n_faces); ret = PyTuple_New(n_faces); for (i = 0; i < n_faces; i++) { PyObject *face; face = pygobject_new((GObject *)faces[i]); PyTuple_SetItem(ret, i, face); } g_free(faces); return ret; } %% override pango_font_map_list_families noargs static PyObject * _wrap_pango_font_map_list_families(PyGObject *self) { PangoFontFamily **families; gint n_families, i; PyObject *ret; pango_font_map_list_families(PANGO_FONT_MAP(self->obj), &families, &n_families); ret = PyTuple_New(n_families); for (i = 0; i < n_families; i++) { PyObject *family; family = pygobject_new((GObject *)families[i]); PyTuple_SetItem(ret, i, family); } g_free(families); return ret; } %% override pango_glyph_string_extents kwargs static PyObject * _wrap_pango_glyph_string_extents(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "font", NULL }; PyObject *font; PangoRectangle ink_rect, logical_rect; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:PangoGlyphString.extents", kwlist, &font)) return NULL; if (!pygobject_check(font, &PyPangoFont_Type)) { PyErr_SetString(PyExc_TypeError, "font must be a PangoFont"); return NULL; } pango_glyph_string_extents(pyg_boxed_get(self, PangoGlyphString), PANGO_FONT(pygobject_get(font)), &ink_rect, &logical_rect); return Py_BuildValue("((iiii)(iiii))", ink_rect.x, ink_rect.y, ink_rect.width, ink_rect.height, logical_rect.x, logical_rect.y, logical_rect.width, logical_rect.height); } %% override pango_glyph_string_extents_range kwargs static PyObject * _wrap_pango_glyph_string_extents_range(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "start", "end", "font", NULL }; gint start, end; PyObject *font; PangoRectangle ink_rect, logical_rect; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "iiO:PangoGlyphString.extents_range", kwlist, &start, &end, &font)) return NULL; if (!pygobject_check(font, &PyPangoFont_Type)) { PyErr_SetString(PyExc_TypeError, "font must be a PangoFont"); return NULL; } pango_glyph_string_extents_range(pyg_boxed_get(self, PangoGlyphString), start, end, PANGO_FONT(pygobject_get(font)), &ink_rect, &logical_rect); return Py_BuildValue("((iiii)(iiii))", ink_rect.x, ink_rect.y, ink_rect.width, ink_rect.height, logical_rect.x, logical_rect.y, logical_rect.width, logical_rect.height); } %% override pango_glyph_string_get_logical_widths kwargs static PyObject * _wrap_pango_glyph_string_get_logical_widths(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "text", "embedding_level", NULL }; const char *text; gint length, embedding_level, *logical_widths; Py_ssize_t i, slen; PyObject *ret; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#i:PangoGlyphString.get_logical_widths", kwlist, &text, &length, &embedding_level)) return NULL; slen = g_utf8_strlen(text, length); logical_widths = g_new(int, slen); pango_glyph_string_get_logical_widths(pyg_boxed_get(self,PangoGlyphString), text, length, embedding_level, logical_widths); ret = PyTuple_New(slen); for (i = 0; i < slen; i++) { PyObject *item = PyInt_FromLong(logical_widths[i]); PyTuple_SetItem(ret, i, item); } g_free(logical_widths); return ret; } %% override pango_layout_set_markup kwargs static PyObject * _wrap_pango_layout_set_markup(PyGObject *self, PyObject *args,PyObject *kwargs) { static char *kwlist[] = { "markup", NULL }; char *markup; Py_ssize_t length; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#:PangoLayout.set_markup", kwlist, &markup, &length)) return NULL; pango_layout_set_markup(PANGO_LAYOUT(self->obj), markup, length); Py_INCREF(Py_None); return Py_None; } %% override pango_layout_set_markup_with_accel kwargs static PyObject * _wrap_pango_layout_set_markup_with_accel(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "markup", "accel_marker", NULL }; char *markup; Py_ssize_t length, accel_length; Py_UNICODE *accel_marker, pychr; gunichar accel_char; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#u#:PangoLayout.set_markup_with_accel", kwlist, &markup, &length, &accel_marker, &accel_length)) return NULL; if (accel_length != 1) { PyErr_SetString(PyExc_TypeError, "accel_marker must be a unicode string of length 1"); return NULL; } pango_layout_set_markup_with_accel(PANGO_LAYOUT(self->obj), markup, length, (gunichar)accel_marker[0], &accel_char); #if !defined(Py_UNICODE_SIZE) || Py_UNICODE_SIZE == 2 if (accel_char >= 0xffff) { PyErr_SetString(PyExc_ValueError, "unicode character is too big to fit in a 16-bit unicode character"); return NULL; } #endif pychr = (Py_UNICODE)accel_char; return PyUnicode_FromUnicode(&pychr, 1); } %% override pango_layout_index_to_pos kwargs static PyObject * _wrap_pango_layout_index_to_pos(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "index", NULL }; gint index; PangoRectangle pos; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i:PangoLayout.index_to_pos", kwlist, &index)) return NULL; pango_layout_index_to_pos(PANGO_LAYOUT(self->obj), index, &pos); return Py_BuildValue("(iiii)", pos.x, pos.y, pos.width, pos.height); } %% override pango_layout_get_cursor_pos kwargs static PyObject * _wrap_pango_layout_get_cursor_pos(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "index", NULL }; gint index; PangoRectangle strong_pos, weak_pos; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i:PangoLayout.get_cursor_pos", kwlist, &index)) return NULL; pango_layout_get_cursor_pos(PANGO_LAYOUT(self->obj), index, &strong_pos, &weak_pos); return Py_BuildValue("((iiii)(iiii))", strong_pos.x, strong_pos.y, strong_pos.width, strong_pos.height, weak_pos.x, weak_pos.y, weak_pos.width, weak_pos.height); } %% override pango_layout_move_cursor_visually kwargs static PyObject * _wrap_pango_layout_move_cursor_visually(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "strong", "old_index", "old_trailing", "direction", NULL }; gboolean strong; gint old_index, old_trailing, direction, new_index = 0, new_trailing = 0; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "iiii:PangoLayout.move_cursor_visually", kwlist, &strong, &old_index, &old_trailing, &direction)) return NULL; pango_layout_move_cursor_visually(PANGO_LAYOUT(self->obj), strong, old_index, old_trailing, direction, &new_index, &new_trailing); return Py_BuildValue("(ii)", new_index, new_trailing); } %% override pango_layout_xy_to_index kwargs static PyObject * _wrap_pango_layout_xy_to_index(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "x", "y", NULL }; gint x, y, index, trailing; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ii:PangoLayout.xy_to_index", kwlist, &x, &y)) return NULL; pango_layout_xy_to_index(PANGO_LAYOUT(self->obj), x, y, &index, &trailing); return Py_BuildValue("(ii)", index, trailing); } %% override pango_layout_get_extents noargs static PyObject * _wrap_pango_layout_get_extents(PyGObject *self) { PangoRectangle ink_rect, logical_rect; pango_layout_get_extents(PANGO_LAYOUT(self->obj), &ink_rect, &logical_rect); return Py_BuildValue("((iiii)(iiii))", ink_rect.x, ink_rect.y, ink_rect.width, ink_rect.height, logical_rect.x, logical_rect.y, logical_rect.width, logical_rect.height); } %% override pango_layout_get_pixel_extents noargs static PyObject * _wrap_pango_layout_get_pixel_extents(PyGObject *self) { PangoRectangle ink_rect, logical_rect; pango_layout_get_pixel_extents(PANGO_LAYOUT(self->obj), &ink_rect, &logical_rect); return Py_BuildValue("((iiii)(iiii))", ink_rect.x, ink_rect.y, ink_rect.width, ink_rect.height, logical_rect.x, logical_rect.y, logical_rect.width, logical_rect.height); } %% override pango_layout_get_size noargs static PyObject * _wrap_pango_layout_get_size(PyGObject *self) { gint width, height; pango_layout_get_size(PANGO_LAYOUT(self->obj), &width, &height); return Py_BuildValue("(ii)", width, height); } %% override pango_layout_get_pixel_size noargs static PyObject * _wrap_pango_layout_get_pixel_size(PyGObject *self) { gint width, height; pango_layout_get_pixel_size(PANGO_LAYOUT(self->obj), &width, &height); return Py_BuildValue("(ii)", width, height); } %% override pango_parse_markup kwargs static PyObject * _wrap_pango_parse_markup(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "markup_text", "accel_marker", NULL }; char *markup_text, *text = NULL; Py_ssize_t length; Py_UNICODE *py_accel_marker = NULL, py_accel_char; Py_ssize_t py_accel_marker_len; gunichar accel_marker, accel_char = 0; PangoAttrList *attr_list = NULL; GError *error = NULL; gboolean ret; PyObject *py_ret; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|u#:pango.parse_markup", kwlist, &markup_text, &length, &py_accel_marker, &py_accel_marker_len)) return NULL; if (py_accel_marker != NULL) { if (py_accel_marker_len != 1) { PyErr_SetString(PyExc_TypeError, "accel_mark must be one character"); return NULL; } accel_marker = py_accel_marker[0]; } else accel_marker = 0; ret = pango_parse_markup(markup_text, length, accel_marker, &attr_list, &text, &accel_char, &error); if (pyg_error_check(&error)) return NULL; #if !defined(Py_UNICODE_SIZE) || Py_UNICODE_SIZE == 2 if (accel_char >= 0xffff) { PyErr_SetString(PyExc_ValueError, "unicode character is too big to fit in a 16-bit unicode character"); return NULL; } #endif py_accel_char = (Py_UNICODE)accel_char; py_ret = Py_BuildValue("(Nsu#)", pyg_boxed_new(PANGO_TYPE_ATTR_LIST, attr_list, FALSE, TRUE), text, &py_accel_char, (Py_ssize_t) 1); g_free(text); return py_ret; } %% override pango_tab_array_get_tab kwargs static PyObject * _wrap_pango_tab_array_get_tab(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "tab_index", NULL }; gint tab_index, location; PangoTabAlign alignment; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i:PangoTabArray.get_tab", kwlist, &tab_index)) return NULL; pango_tab_array_get_tab(pyg_boxed_get(self, PangoTabArray), tab_index, &alignment, &location); return Py_BuildValue("(ii)", (int)alignment, location); } %% override pango_tab_array_get_tabs noargs static PyObject * _wrap_pango_tab_array_get_tabs(PyObject *self) { PangoTabAlign *alignments; gint *locations, length, i; PyObject *ret; length = pango_tab_array_get_size(pyg_boxed_get(self, PangoTabArray)); pango_tab_array_get_tabs(pyg_boxed_get(self, PangoTabArray), &alignments, &locations); ret = PyTuple_New(length); for (i = 0; i < length; i++) { PyObject *item; item = Py_BuildValue("(ii)", (int)alignments[i], locations[i]); PyTuple_SetItem(ret, i, item); } g_free(alignments); g_free(locations); return ret; } %% override pango_layout_set_text kwargs static PyObject * _wrap_pango_layout_set_text(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "text", NULL }; char *text; Py_ssize_t length; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#:PangoLayout.set_text", kwlist, &text, &length)) return NULL; pango_layout_set_text(PANGO_LAYOUT(self->obj), text, length); Py_INCREF(Py_None); return Py_None; } %% override pango_color_parse kwargs static int _wrap_pango_color_parse(PyGBoxed *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "spec", NULL }; char *spec; PangoColor color; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s:PangoColor.__init__", kwlist, &spec)) return -1; self->gtype = PANGO_TYPE_COLOR; self->free_on_dealloc = FALSE; if (pango_color_parse(&color, spec) != TRUE || !(self->boxed = pango_color_copy(&color))) { PyErr_SetString(PyExc_RuntimeError, "could not create PangoColor object"); return -1; } self->free_on_dealloc = TRUE; return 0; } %% override pango_attr_list_get_iterator noargs static PyObject * _wrap_pango_attr_list_get_iterator(PyGBoxed *self) { PangoAttrList *list = pyg_boxed_get(self, PangoAttrList); PangoAttrIterator *iter = pango_attr_list_get_iterator(list); return pypango_attr_iterator_new(iter); } %% override PANGO_ASCENT kwargs static PyObject * _wrap_PANGO_ASCENT(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "rect", NULL }; int ret; PangoRectangle rect; PyObject *py_rect; if (PyArg_ParseTupleAndKeywords(args, kwargs, "O!:ASCENT", kwlist, &PyTuple_Type, &py_rect) && PyArg_ParseTuple(py_rect, "iiii:ASCENT", &rect.x, &rect.y, &rect.width, &rect.height)) { ret = PANGO_ASCENT(rect); return PyInt_FromLong(ret); } PyErr_Clear(); PyErr_SetString(PyExc_ValueError, "rect must be a 4-tuple of integers"); return NULL; } %% override PANGO_DESCENT kwargs static PyObject * _wrap_PANGO_DESCENT(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "rect", NULL }; int ret; PangoRectangle rect; PyObject *py_rect; if (PyArg_ParseTupleAndKeywords(args, kwargs, "O!:DESCENT", kwlist, &PyTuple_Type, &py_rect) && PyArg_ParseTuple(py_rect, "iiii:DESCENT", &rect.x, &rect.y, &rect.width, &rect.height)) { ret = PANGO_DESCENT(rect); return PyInt_FromLong(ret); } PyErr_Clear(); PyErr_SetString(PyExc_ValueError, "rect must be a 4-tuple of integers"); return NULL; } %% override PANGO_LBEARING kwargs static PyObject * _wrap_PANGO_LBEARING(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "rect", NULL }; int ret; PangoRectangle rect; PyObject *py_rect; if (PyArg_ParseTupleAndKeywords(args, kwargs, "O!:LBEARING", kwlist, &PyTuple_Type, &py_rect) && PyArg_ParseTuple(py_rect, "iiii:LBEARING", &rect.x, &rect.y, &rect.width, &rect.height)) { ret = PANGO_LBEARING(rect); return PyInt_FromLong(ret); } PyErr_Clear(); PyErr_SetString(PyExc_ValueError, "rect must be a 4-tuple of integers"); return NULL; } %% override PANGO_RBEARING kwargs static PyObject * _wrap_PANGO_RBEARING(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "rect", NULL }; int ret; PangoRectangle rect; PyObject *py_rect; if (PyArg_ParseTupleAndKeywords(args, kwargs, "O!:RBEARING", kwlist, &PyTuple_Type, &py_rect) && PyArg_ParseTuple(py_rect, "iiii:RBEARING", &rect.x, &rect.y, &rect.width, &rect.height)) { ret = PANGO_RBEARING(rect); return PyInt_FromLong(ret); } PyErr_Clear(); PyErr_SetString(PyExc_ValueError, "rect must be a 4-tuple of integers"); return NULL; } %% override pango_attr_fallback_new kwargs static PyObject * _wrap_pango_attr_fallback_new(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "fallback", "start_index", "end_index", NULL }; gboolean fallback; guint start = 0, end = 1; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i|ii:PangoAttrFallback", kwlist, &fallback, &start, &end)) return NULL; return pypango_attr_new(pango_attr_fallback_new(fallback), start, end); } %% override pango_attr_list_filter kwargs static gboolean pypango_attr_list_filter_cb(PangoAttribute *attr, gpointer data) { PyGILState_STATE state; PyGtkCustomNotify *cunote = data; PyObject *retobj, *py_attr; gboolean ret = FALSE; state = pyg_gil_state_ensure(); py_attr = pypango_attr_new(pango_attribute_copy(attr), attr->start_index, attr->end_index); if (cunote->data) retobj = PyObject_CallFunction(cunote->func, "NO", py_attr, cunote->data); else retobj = PyObject_CallFunction(cunote->func, "N", py_attr); if (retobj != NULL) { ret = PyObject_IsTrue(retobj); Py_DECREF(retobj); } else { PyErr_Print(); } pyg_gil_state_release(state); return ret; } static PyObject * _wrap_pango_attr_list_filter(PyGBoxed *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "func", "data", NULL }; PyObject *py_func, *py_data = NULL; PangoAttrList *attr_list, *filtered_list; PyGtkCustomNotify cunote; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|O:pango.AttrList.filter", kwlist, &py_func, &py_data)) return NULL; if (!PyCallable_Check(py_func)) { PyErr_SetString(PyExc_TypeError, "func must be callable"); return NULL; } cunote.func = py_func; cunote.data = py_data; Py_INCREF(cunote.func); Py_XINCREF(cunote.data); attr_list = (PangoAttrList *)pyg_boxed_get(self, PangoAttrList); filtered_list = pango_attr_list_filter(attr_list, pypango_attr_list_filter_cb, (gpointer)&cunote); Py_DECREF(cunote.func); Py_XDECREF(cunote.data); if (filtered_list) return pyg_boxed_new(PANGO_TYPE_ATTR_LIST, filtered_list, FALSE, TRUE); Py_INCREF(Py_None); return Py_None; } %% override pango_font_face_list_sizes noargs static PyObject * _wrap_pango_font_face_list_sizes(PyGObject *self) { PyObject *py_sizes; int *sizes, n_sizes, i; pango_font_face_list_sizes(PANGO_FONT_FACE(self->obj), &sizes, &n_sizes); if (!sizes) { Py_INCREF(Py_None); return Py_None; } py_sizes = PyTuple_New(n_sizes); for (i = 0; i < n_sizes; i++) PyTuple_SetItem(py_sizes, i, PyInt_FromLong(sizes[i])); g_free(sizes); return py_sizes; } %% override pango_fontset_foreach kwargs static gboolean pypango_fontset_foreach_cb(PangoFontset *fontset, PangoFont *font, gpointer data) { PyGILState_STATE state; PyGtkCustomNotify *cunote = data; PyObject *retobj, *py_font, *py_fontset; gboolean ret = FALSE; state = pyg_gil_state_ensure(); py_fontset = pygobject_new((GObject *)fontset); py_font = pygobject_new((GObject *)font); if (cunote->data) retobj = PyObject_CallFunction(cunote->func, "NNO", py_fontset, py_font, cunote->data); else retobj = PyObject_CallFunction(cunote->func, "NN", py_fontset, py_font); if (retobj != NULL) { ret = PyObject_IsTrue(retobj); Py_DECREF(retobj); } else { PyErr_Print(); } pyg_gil_state_release(state); return ret; } static PyObject * _wrap_pango_fontset_foreach(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "func", "data", NULL }; PyObject *py_func, *py_data = NULL; PyGtkCustomNotify cunote; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|O:pango.Fontset.fforeach", kwlist, &py_func, &py_data)) return NULL; if (!PyCallable_Check(py_func)) { PyErr_SetString(PyExc_TypeError, "func must be callable"); return NULL; } cunote.func = py_func; cunote.data = py_data; Py_INCREF(cunote.func); Py_XINCREF(cunote.data); pango_fontset_foreach(PANGO_FONTSET(self->obj), pypango_fontset_foreach_cb, (gpointer)&cunote); Py_DECREF(cunote.func); Py_XDECREF(cunote.data); Py_INCREF(Py_None); return Py_None; } %% override pango_language_from_string1 kwargs static PyObject * _wrap_pango_language_from_string1(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "language", NULL }; char *language; PangoLanguage *ret; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s:pango_language_from_string", kwlist, &language)) return NULL; if (PyErr_Warn(PyExc_DeprecationWarning, "use pango.Language instead") < 0) return NULL; ret = pango_language_from_string(language); /* pyg_boxed_new handles NULL checking */ return pyg_boxed_new(PANGO_TYPE_LANGUAGE, ret, TRUE, TRUE); } %% override pango_language_matches1 kwargs static PyObject * _wrap_pango_language_matches1(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "language", "range_list", NULL }; PyObject *py_language = Py_None; char *range_list; PangoLanguage *language = NULL; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "Os:pango_language_matches", kwlist, &py_language, &range_list)) return NULL; if (PyErr_Warn(PyExc_DeprecationWarning, "use pango.Language.matches instead") < 0) return NULL; if (pyg_boxed_check(py_language, PANGO_TYPE_LANGUAGE)) language = pyg_boxed_get(py_language, PangoLanguage); else if (py_language != Py_None) { PyErr_SetString(PyExc_TypeError, "language should be a PangoLanguage or None"); return NULL; } return PyBool_FromLong(pango_language_matches(language, range_list)); } %% override pango_layout_iter_get_char_extents noargs static PyObject * _wrap_pango_layout_iter_get_char_extents(PyGObject *self) { PangoRectangle logical_rect; pango_layout_iter_get_char_extents(pyg_boxed_get(self, PangoLayoutIter), &logical_rect); return Py_BuildValue("(iiii)", logical_rect.x, logical_rect.y, logical_rect.width, logical_rect.height); } %% override pango_layout_iter_get_cluster_extents noargs static PyObject * _wrap_pango_layout_iter_get_cluster_extents(PyGObject *self) { PangoRectangle ink_rect, logical_rect; pango_layout_iter_get_cluster_extents(pyg_boxed_get(self, PangoLayoutIter), &ink_rect, &logical_rect); return Py_BuildValue("((iiii)(iiii))", ink_rect.x, ink_rect.y, ink_rect.width, ink_rect.height, logical_rect.x, logical_rect.y, logical_rect.width, logical_rect.height); } %% override pango_layout_iter_get_line_extents noargs static PyObject * _wrap_pango_layout_iter_get_line_extents(PyGObject *self) { PangoRectangle ink_rect, logical_rect; pango_layout_iter_get_line_extents(pyg_boxed_get(self, PangoLayoutIter), &ink_rect, &logical_rect); return Py_BuildValue("((iiii)(iiii))", ink_rect.x, ink_rect.y, ink_rect.width, ink_rect.height, logical_rect.x, logical_rect.y, logical_rect.width, logical_rect.height); } %% override pango_layout_iter_get_run_extents noargs static PyObject * _wrap_pango_layout_iter_get_run_extents(PyGObject *self) { PangoRectangle ink_rect, logical_rect; pango_layout_iter_get_run_extents(pyg_boxed_get(self, PangoLayoutIter), &ink_rect, &logical_rect); return Py_BuildValue("((iiii)(iiii))", ink_rect.x, ink_rect.y, ink_rect.width, ink_rect.height, logical_rect.x, logical_rect.y, logical_rect.width, logical_rect.height); } %% override pango_layout_iter_get_layout_extents noargs static PyObject * _wrap_pango_layout_iter_get_layout_extents(PyGObject *self) { PangoRectangle ink_rect, logical_rect; pango_layout_iter_get_layout_extents(pyg_boxed_get(self, PangoLayoutIter), &ink_rect, &logical_rect); return Py_BuildValue("((iiii)(iiii))", ink_rect.x, ink_rect.y, ink_rect.width, ink_rect.height, logical_rect.x, logical_rect.y, logical_rect.width, logical_rect.height); } %% override pango_layout_iter_get_line_yrange noargs static PyObject * _wrap_pango_layout_iter_get_line_yrange(PyGObject *self) { int start, end; pango_layout_iter_get_line_yrange(pyg_boxed_get(self, PangoLayoutIter), &start, &end); return Py_BuildValue("(ii)", start, end); } %% override pango_layout_line_x_to_index kwargs static PyObject * _wrap_pango_layout_line_x_to_index(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "x_pos", NULL }; gboolean inside; int x_pos, index, trailing; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i:PangoLayoutLine.x_to_index", kwlist, &x_pos)) return NULL; inside = pango_layout_line_x_to_index(pyg_boxed_get(self, PangoLayoutLine), x_pos, &index, &trailing); return Py_BuildValue("Nii", PyBool_FromLong(inside), index, trailing); } %% override pango_layout_line_index_to_x kwargs static PyObject * _wrap_pango_layout_line_index_to_x(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "index", "trailing", NULL }; int x_pos, index; PyObject *trailing; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "iO:PangoLayoutLine.index_to_x", kwlist, &index, &trailing)) return NULL; pango_layout_line_index_to_x(pyg_boxed_get(self, PangoLayoutLine), index, PyObject_IsTrue(trailing), &x_pos); return PyInt_FromLong(x_pos); } %% override pango_layout_line_get_extents noargs static PyObject * _wrap_pango_layout_line_get_extents(PyGObject *self) { PangoRectangle ink_rect, logical_rect; pango_layout_line_get_extents(pyg_boxed_get(self, PangoLayoutLine), &ink_rect, &logical_rect); return Py_BuildValue("((iiii)(iiii))", ink_rect.x, ink_rect.y, ink_rect.width, ink_rect.height, logical_rect.x, logical_rect.y, logical_rect.width, logical_rect.height); } %% override pango_layout_line_get_pixel_extents noargs static PyObject * _wrap_pango_layout_line_get_pixel_extents(PyGObject *self) { PangoRectangle ink_rect, logical_rect; pango_layout_line_get_pixel_extents(pyg_boxed_get(self, PangoLayoutLine), &ink_rect, &logical_rect); return Py_BuildValue("((iiii)(iiii))", ink_rect.x, ink_rect.y, ink_rect.width, ink_rect.height, logical_rect.x, logical_rect.y, logical_rect.width, logical_rect.height); } %% override-attr PangoLayoutLine.runs static inline PyObject * pypango_glyph_item_new(PangoGlyphItem *gitem) { return Py_BuildValue("NN", pyg_boxed_new(PANGO_TYPE_ITEM, gitem->item, TRUE, TRUE), pyg_boxed_new(PANGO_TYPE_GLYPH_STRING, gitem->glyphs, TRUE, TRUE)); } static PyObject * _wrap_pango_layout_line__get_runs(PyGObject *self, void *closure) { PangoLayoutLine *line = pyg_boxed_get(self, PangoLayoutLine); PyObject *list, *item; GSList *l; list = PyList_New(0); for (l = line->runs; l; l = l->next) { item = pypango_glyph_item_new((PangoGlyphItem *) l->data); PyList_Append(list, item); Py_DECREF(item); } return list; } %% override pango_attr_underline_color_new kwargs static PyObject * _wrap_pango_attr_underline_color_new(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "red", "green", "blue", "start_index", "end_index", NULL }; guint16 red, green, blue; guint start = 0, end = 1; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "HHH|ii:PangoAttrUnderlineColor", kwlist, &red, &green, &blue, &start, &end)) return NULL; return pypango_attr_new(pango_attr_underline_color_new(red, green, blue), start, end); } %% override pango_attr_strikethrough_color_new kwargs static PyObject * _wrap_pango_attr_strikethrough_color_new(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "red", "green", "blue", "start_index", "end_index", NULL }; guint16 red, green, blue; guint start = 0, end = 1; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "HHH|ii:PangoAttrStrikethroughColor", kwlist, &red, &green, &blue, &start, &end)) return NULL; return pypango_attr_new(pango_attr_strikethrough_color_new(red, green, blue), start, end); } %% override pango_attr_size_new_absolute kwargs static PyObject * _wrap_pango_attr_size_new_absolute(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "size", "start_index", "end_index", NULL }; int size; guint start = 0, end = 1; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i|ii:PangoAttrSizeAbsolute", kwlist, &size, &start, &end)) return NULL; return pypango_attr_new(pango_attr_size_new_absolute(size), start, end); } %% override pango_attr_letter_spacing_new kwargs static PyObject * _wrap_pango_attr_letter_spacing_new(PyObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "letter_spacing", "start_index", "end_index", NULL }; int spacing; guint start = 0, end = 1; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i|ii:PangoAttrLetterSpacing", kwlist, &spacing, &start, &end)) return NULL; return pypango_attr_new(pango_attr_letter_spacing_new(spacing), start, end); } %% override-slot PangoColor.tp_str static PyObject * _wrap_pango_color_tp_str(PyObject *self) { return _wrap_pango_color_to_string(self); } %% override-slot PangoFontDescription.tp_str static PyObject * _wrap_pango_font_description_tp_str(PyObject *self) { return _wrap_pango_font_description_to_string(self); } %% override-slot PangoFontDescription.tp_hash static int _wrap_pango_font_description_tp_hash(PyObject *self) { return pango_font_description_hash(pyg_boxed_get(self, PangoFontDescription)); } %% override-slot PangoFontDescription.tp_compare static int _wrap_pango_font_description_tp_compare(PyObject *self, PyObject *other) { PangoFontDescription *font1, *font2; if (!pyg_boxed_check(other, PANGO_TYPE_FONT_DESCRIPTION)) return -1; font1 = pyg_boxed_get(self, PangoFontDescription); font2 = pyg_boxed_get(other, PangoFontDescription); if (pango_font_description_equal(font1, font2)) return 0; return -1; } %% override-slot PangoLanguage.tp_str static PyObject * _wrap_pango_language_tp_str(PyObject *self) { return _wrap_pango_language_to_string(self); } pygtk-2.24.0/missing0000755000175000017500000002623311545325677011302 00000000000000#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2009-04-28.21; # UTC # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, # 2008, 2009 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case $1 in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' autom4te touch the output file, or create a stub one automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and \`g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # normalize program name to check for. program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). This is about non-GNU programs, so use $1 not # $program. case $1 in lex*|yacc*) # Not GNU programs, they don't have --version. ;; tar*) if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then exit 1 fi ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case $program in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case $f in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te*) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison*|yacc*) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi if test ! -f y.tab.h; then echo >y.tab.h fi if test ! -f y.tab.c; then echo 'main() { return 0; }' >y.tab.c fi ;; lex*|flex*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit $? fi ;; makeinfo*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n ' /^@setfilename/{ s/.* \([^ ]*\) *$/\1/ p q }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; tar*) shift # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error # messages. if (gnutar --version > /dev/null 2>&1); then gnutar "$@" && exit 0 fi if (gtar --version > /dev/null 2>&1); then gtar "$@" && exit 0 fi firstarg="$1" if shift; then case $firstarg in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac case $firstarg in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: pygtk-2.24.0/py-compile0000755000175000017500000001013511545325700011664 00000000000000#!/bin/sh # py-compile - Compile a Python program scriptversion=2009-04-28.21; # UTC # Copyright (C) 2000, 2001, 2003, 2004, 2005, 2008, 2009 Free Software # Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . if [ -z "$PYTHON" ]; then PYTHON=python fi basedir= destdir= files= while test $# -ne 0; do case "$1" in --basedir) basedir=$2 if test -z "$basedir"; then echo "$0: Missing argument to --basedir." 1>&2 exit 1 fi shift ;; --destdir) destdir=$2 if test -z "$destdir"; then echo "$0: Missing argument to --destdir." 1>&2 exit 1 fi shift ;; -h|--h*) cat <<\EOF Usage: py-compile [--help] [--version] [--basedir DIR] [--destdir DIR] FILES..." Byte compile some python scripts FILES. Use --destdir to specify any leading directory path to the FILES that you don't want to include in the byte compiled file. Specify --basedir for any additional path information you do want to be shown in the byte compiled file. Example: py-compile --destdir /tmp/pkg-root --basedir /usr/share/test test.py test2.py Report bugs to . EOF exit $? ;; -v|--v*) echo "py-compile $scriptversion" exit $? ;; *) files="$files $1" ;; esac shift done if test -z "$files"; then echo "$0: No files given. Try \`$0 --help' for more information." 1>&2 exit 1 fi # if basedir was given, then it should be prepended to filenames before # byte compilation. if [ -z "$basedir" ]; then pathtrans="path = file" else pathtrans="path = os.path.join('$basedir', file)" fi # if destdir was given, then it needs to be prepended to the filename to # byte compile but not go into the compiled file. if [ -z "$destdir" ]; then filetrans="filepath = path" else filetrans="filepath = os.path.normpath('$destdir' + os.sep + path)" fi $PYTHON -c " import sys, os, py_compile files = '''$files''' sys.stdout.write('Byte-compiling python modules...\n') for file in files.split(): $pathtrans $filetrans if not os.path.exists(filepath) or not (len(filepath) >= 3 and filepath[-3:] == '.py'): continue sys.stdout.write(file) sys.stdout.flush() py_compile.compile(filepath, filepath + 'c', path) sys.stdout.write('\n')" || exit $? # this will fail for python < 1.5, but that doesn't matter ... $PYTHON -O -c " import sys, os, py_compile files = '''$files''' sys.stdout.write('Byte-compiling python modules (optimized versions) ...\n') for file in files.split(): $pathtrans $filetrans if not os.path.exists(filepath) or not (len(filepath) >= 3 and filepath[-3:] == '.py'): continue sys.stdout.write(file) sys.stdout.flush() py_compile.compile(filepath, filepath + 'o', path) sys.stdout.write('\n')" 2>/dev/null || : # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: pygtk-2.24.0/atkmodule.c0000644000175000017500000000277511545325344012030 00000000000000/* -*- Mode: C; c-basic-offset: 4 -*- * pygtk- Python bindings for the GTK toolkit. * Copyright (C) 1998-2003 James Henstridge * * atkmodule.c: module wrapping the ATK library. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifdef HAVE_CONFIG_H #include "config.h" #endif /* include this first, before NO_IMPORT_PYGOBJECT is defined */ #include void pyatk_register_classes (PyObject *d); void pyatk_add_constants(PyObject *module, const gchar *strip_prefix); void _pyatk_register_boxed_types(void); extern PyMethodDef pyatk_functions[]; DL_EXPORT(void) initatk(void) { PyObject *m, *d; init_pygobject (); m = Py_InitModule ("atk", pyatk_functions); d = PyModule_GetDict (m); _pyatk_register_boxed_types(); pyatk_register_classes (d); pyatk_add_constants(m, "ATK_"); } pygtk-2.24.0/THREADS0000644000175000017500000001241511545325344010704 00000000000000-*- mode: text; mode: auto-fill -*- Requirements to get threading to work with pygtk2 ================================================= Python side ----------- * Python has a global interpreter lock, so no two threads can execute code at the same time. * In order to execute python code, you need to hold the interpreter lock, and have the correct PyThreadState object set (PyThreadState_Swap is used for this). As a convenience, the following functions can be used: void PyEval_AcquireThread(PyThreadState *tstate); void PyEval_ReleaseThread(PyThreadState *tstate); * When C functions are called from python, the global interpreter lock is held. If the function blocks, then no python code can execute in other threads during this time. Python provides two macros to allow threads to run while the function executes: Py_BEGIN_ALLOW_THREADS Py_END_ALLOW_THREADS between these two macro calls, the global interpreter lock is released, and the current thread state is set to NULL. This means that in order to execute python code, AcquireThread must be called. GLib side --------- * The glib main loop function blocks, so we need to allow threads so that other threads don't hang while in the event loop. * Destroy notifies and signal handlers may be called in response to some function call (such as GObject.set_data or GtkButton.clicked), or while the main loop is running. In the first case, the global interpreter lock will be held, and a thread state will be acquired. In the second case, the global interpreter lock will not be held by us and there will be a NULL thread state. Example: ---- Cut Here ---- import gtk ... b = gtk.GtkButton("Click me") def f(button): ... some python code ... b.connect("clicked", f) b.clicked() # the signal handler f is called with the interpreter # lock held ... gtk.main() # if the button is clicked while in the main loop, the # interpreter lock may be held by someone else ---- Cut Here ---- * We need to have a valid thread state before executing one of these callbacks, or bad things happen. * Ideally, the solution chosen should work at the GObject level, rather than GTK/GDK level. * In gtk 1.2 based PyGTK, we used a bit of code from Paul Fisher to handle this problem. It relied on the global GDK lock to serialise requests to unblock threading. As the GObject functions do not rely on a global lock being held, we can't use this. Here is the existing code: ---- Cut Here ---- /* The threading code has been enhanced to be a little better with multiple * threads accessing GTK+. Here are some notes on the changes by * Paul Fisher: * * If threading is enabled, we create a recursive version of Python's * global interpreter mutex using TSD. This scheme makes it possible, * although rather hackish, for any thread to make a call into PyGTK, * as long as the GDK lock is held (that is, Python code is wrapped * around a threads_{enter,leave} pair). * * A viable alternative would be to wrap each and every GTK call, at * the Python/C level, with Py_{BEGIN,END}_ALLOW_THREADS. However, * given the nature of Python threading, this option is not * particularly appealing. */ static GStaticPrivate pythreadstate_key = G_STATIC_PRIVATE_INIT; static GStaticPrivate counter_key = G_STATIC_PRIVATE_INIT; /* The global Python lock will be grabbed by Python when entering a * Python/C function; thus, the initial lock count will always be one. */ # define INITIAL_LOCK_COUNT 1 # define PyGTK_BLOCK_THREADS \ { \ gint counter = GPOINTER_TO_INT(g_static_private_get(&counter_key)); \ if (counter == -INITIAL_LOCK_COUNT) { \ PyThreadState *_save; \ _save = g_static_private_get(&pythreadstate_key); \ Py_BLOCK_THREADS; \ } \ counter++; \ g_static_private_set(&counter_key, GINT_TO_POINTER(counter), NULL); \ } # define PyGTK_UNBLOCK_THREADS \ { \ gint counter = GPOINTER_TO_INT(g_static_private_get(&counter_key)); \ counter--; \ if (counter == -INITIAL_LOCK_COUNT) { \ PyThreadState *_save; \ Py_UNBLOCK_THREADS; \ g_static_private_set(&pythreadstate_key, _save, NULL); \ } \ g_static_private_set(&counter_key, GINT_TO_POINTER(counter), NULL); \ } ---- Cut Here ---- * One possible solution is to wrap every single pygtk call in Py_BEGIN_ALLOW_THREADS/Py_END_ALLOW_THREADS calls. This would probably be quite slow. * Can Paul Fisher's code be modified to work without needing the GDK lock for serialisation? pygtk-2.24.0/pangomodule.c0000644000175000017500000000623111545325345012345 00000000000000/* -*- Mode: C; c-basic-offset: 4 -*- * pygtk- Python bindings for the GTK toolkit. * Copyright (C) 1998-2003 James Henstridge * * pangomodule.c: module wrapping the Pango library * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifdef HAVE_CONFIG_H # include "config.h" #endif #include #include #include /* include any extra headers needed here */ void pypango_register_classes(PyObject *d); void pypango_add_constants(PyObject *module, const gchar *strip_prefix); extern PyMethodDef pypango_functions[]; #ifndef pyg_add_warning_redirection static void _log_func(const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer user_data) { PyGILState_STATE state; PyObject* warning = user_data; state = pyg_gil_state_ensure(); PyErr_Warn(warning, (char *) message); pyg_gil_state_release(state); } #endif DL_EXPORT(void) initpango(void) { PyObject *m, *d; PyObject *warning; /* perform any initialisation required by the library here */ m = Py_InitModule("pango", pypango_functions); d = PyModule_GetDict(m); init_pygobject_check(2, 11, 1); /* set the default python encoding to utf-8 */ PyUnicode_SetDefaultEncoding("utf-8"); pypango_register_classes(d); pypango_add_constants(m, "PANGO_"); PyModule_AddObject(m, "SCALE_XX_SMALL", PyFloat_FromDouble(PANGO_SCALE_XX_SMALL)); PyModule_AddObject(m, "SCALE_X_SMALL", PyFloat_FromDouble(PANGO_SCALE_X_SMALL)); PyModule_AddObject(m, "SCALE_SMALL", PyFloat_FromDouble(PANGO_SCALE_SMALL)); PyModule_AddObject(m, "SCALE_MEDIUM", PyFloat_FromDouble(PANGO_SCALE_MEDIUM)); PyModule_AddObject(m, "SCALE_LARGE", PyFloat_FromDouble(PANGO_SCALE_LARGE)); PyModule_AddObject(m, "SCALE_X_LARGE", PyFloat_FromDouble(PANGO_SCALE_X_LARGE)); PyModule_AddObject(m, "SCALE_XX_LARGE", PyFloat_FromDouble(PANGO_SCALE_XX_LARGE)); PyModule_AddObject(m, "SCALE", PyInt_FromLong(PANGO_SCALE)); /* add anything else to the module dictionary (such as constants) */ warning = PyErr_NewException("pango.PangoWarning", PyExc_Warning, NULL); PyDict_SetItemString(d, "Warning", warning); #ifdef pyg_add_warning_redirection pyg_add_warning_redirection("Pango", warning); #else g_log_set_handler("Pango", G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING, _log_func, warning); #endif } pygtk-2.24.0/INSTALL0000644000175000017500000003633211545325700010720 00000000000000Installation Instructions ************************* Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell commands `./configure; make; make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for instructions specific to this package. Some packages provide this `INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. Running `configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type `make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the `make install' phase executed with root privileges. 5. Optionally, type `make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior `make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type `make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide `make distcheck', which can by used by developers to test that all other targets like `make install' and `make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. This is known as a "VPATH" build. With a non-GNU `make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple `-arch' options to the compiler but only a single `-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the `lipo' tool if you have problems. Installation Names ================== By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option `--exec-prefix=PREFIX' to `configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of `${prefix}', so that specifying just `--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to `configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the `make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, `make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of `${prefix}'. Any directories that were specified during `configure', but not in terms of `${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the `DESTDIR' variable. For example, `make install DESTDIR=/alternate/directory' will prepend `/alternate/directory' before all installation names. The approach of `DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of `${prefix}' at `configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the execution of `make' will be. For these packages, running `./configure --enable-silent-rules' sets the default to minimal output, which can be overridden with `make V=1'; while running `./configure --disable-silent-rules' sets the default to verbose, which can be overridden with `make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its `' header file. The option `-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put `/usr/ucb' early in your `PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in `/usr/bin'. So, if you need `/usr/ucb' in your `PATH', put it _after_ `/usr/bin'. On Haiku, software installed for all users goes in `/boot/common', not `/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option `--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified `gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for `CONFIG_SHELL' due to an Autoconf bug. Until the bug is fixed you can use this workaround: CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of all of the options to `configure', and exit. `--help=short' `--help=recursive' Print a summary of the options unique to this package's `configure', and exit. The `short' variant lists options used only in the top level, while the `recursive' variant lists options also present in any nested packages. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. `--no-create' `-n' Run the configure checks, but stop before creating any output files. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. pygtk-2.24.0/pygtk_postinstall.py0000644000175000017500000000023411545325345014030 00000000000000# -*- coding: utf-8 -*- import sys if len(sys.argv) == 2: if sys.argv[1] == "-install": print ('pygtk is now installed on your machine.\n') pygtk-2.24.0/configure.ac0000644000175000017500000003561711545325370012165 00000000000000-*- mode: m4 -*- AC_PREREQ(2.52) dnl the pygtk version number m4_define(pygtk_major_version, 2) m4_define(pygtk_minor_version, 24) m4_define(pygtk_micro_version, 0) m4_define(pygtk_version, pygtk_major_version.pygtk_minor_version.pygtk_micro_version) dnl versions of packages we require ... m4_define(glib_required_version, 2.8.0) m4_define(pango_required_version, 1.16.0) m4_define(atk_required_version, 1.12.0) m4_define(gtk_required_version, 2.8.0) m4_define(libglade_required_version, 2.5.0) m4_define(gtkunixprint_required_version, 2.9.0) m4_define(pycairo_required_version, 1.0.2) dnl or 1.1.7 m4_define(pygobject_required_version, 2.21.3) AC_INIT(pygtk, pygtk_version, [http://bugzilla.gnome.org/enter_bug.cgi?product=pygtk]) AC_SUBST(ACLOCAL_AMFLAGS, "-I m4 -I .") AC_DEFINE(PYGTK_MAJOR_VERSION, pygtk_major_version, [PyGtk major version]) AC_SUBST(PYGTK_MAJOR_VERSION, pygtk_major_version) AC_DEFINE(PYGTK_MINOR_VERSION, pygtk_minor_version, [PyGtk minor version]) AC_SUBST(PYGTK_MINOR_VERSION, pygtk_minor_version) AC_DEFINE(PYGTK_MICRO_VERSION, pygtk_micro_version, [PyGtk micro version]) AC_SUBST(PYGTK_MICRO_VERSION, pygtk_micro_version) AC_CONFIG_SRCDIR([gtk/gtkmodule.c]) AM_CONFIG_HEADER(config.h) AM_INIT_AUTOMAKE AC_CHECK_FUNCS(bind_textdomain_codeset) dnl put the ACLOCAL flags in the makefile ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS" AC_CANONICAL_BUILD AC_CANONICAL_HOST AC_MSG_CHECKING([for some Win32 platform]) case "$host" in *-*-mingw*|*-*-cygwin*) platform_win32=yes ;; *) platform_win32=no ;; esac AC_MSG_RESULT([$platform_win32]) AM_CONDITIONAL(PLATFORM_WIN32, test "$platform_win32" = "yes") AC_MSG_CHECKING([for native Win32]) case "$host" in *-*-mingw*) os_win32=yes ;; *) os_win32=no ;; esac AC_MSG_RESULT([$os_win32]) AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes") AC_DISABLE_STATIC dnl XXXX hack to kill off all the libtool tags ... dnl it isn't like we are using C++ or Fortran. dnl (copied from libglade/configure.in) m4_define([_LT_AC_TAGCONFIG],[]) AC_LIBTOOL_WIN32_DLL AC_PROG_LIBTOOL dnl when using libtool 2.x create libtool early, because it's used in configure m4_ifdef([LT_OUTPUT], [LT_OUTPUT]) AM_PATH_PYTHON(2.3.5) AM_CHECK_PYTHON_HEADERS(,[AC_MSG_ERROR(could not find Python headers)]) AC_MSG_CHECKING([for PySignal_SetWakeupFd in Python.h]) py_prefix=`$PYTHON -c "import sys; print sys.prefix"` old_CPPFLAGS=$CPPFLAGS CPPFLAGS="-Wall -Werror $PYTHON_INCLUDES" AC_TRY_COMPILE([#include ], [PySignal_SetWakeupFd(0);], setwakeupfd_ok=yes, setwakeupfd_ok=no) AC_MSG_RESULT($setwakeupfd_ok) if test "x$setwakeupfd_ok" != xno; then AC_DEFINE(HAVE_PYSIGNAL_SETWAKEUPFD, 1, [Define to 1 if PySignal_SetWakeupFd is available]) fi CPPFLAGS=$old_CPPFLAGS AC_ARG_ENABLE(thread, AC_HELP_STRING([--disable-thread], [Disable pygtk threading support]),, enable_thread=yes) AM_CHECK_PYMOD(thread,,,enable_thread=no) dnl Building documentation AC_ARG_ENABLE(docs, AC_HELP_STRING([--enable-docs], [Enable documentation building]),enable_docs=$enableval, enable_docs=no) if test "${enable_docs}" != no; then dnl Check for xsltproc AC_PATH_PROG([XSLTPROC], [xsltproc]) if test -z "$XSLTPROC"; then enable_docs=no fi fi AM_CONDITIONAL(ENABLE_DOCS, test x$enable_docs != xno) AC_MSG_CHECKING(whether to enable threading in pygtk) if test "x$enable_thread" != xno; then extra_mods=gthread THREADING_CFLAGS= AC_MSG_RESULT(yes) else extra_mods= THREADING_CFLAGS="-DDISABLE_THREADING" AC_MSG_RESULT(no) fi AC_SUBST(THREADING_CFLAGS) CPPFLAGS="${CPPFLAGS} $THREADING_CFLAGS" dnl get rid of the -export-dynamic stuff from the configure flags ... export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh` dnl glib AM_PATH_GLIB_2_0(glib_required_version,,[AC_MSG_ERROR(gobject is required to build pygtk?)],gobject $extra_mods) if test -n "$export_dynamic"; then GLIB_LIBS=`echo $GLIB_LIBS | sed -e "s/$export_dynamic//"` fi PKG_CHECK_MODULES(PYGOBJECT, [pygobject-2.0 >= pygobject_required_version]) PYGOBJECT_INCLUDEDIR=`$PKG_CONFIG --variable=pygtkincludedir pygobject-2.0` AC_SUBST(PYGOBJECT_INCLUDEDIR) PYGOBJECT_DATADIR=`$PKG_CONFIG --variable=datadir pygobject-2.0` AC_SUBST(PYGOBJECT_DATADIR) dnl PyGObject defs AC_SUBST(PYGOBJECT_DEFSDIR) PYGOBJECT_DEFSDIR=`$PKG_CONFIG --variable defsdir pygobject-2.0` AC_MSG_CHECKING([for gio-types.defs]) if test -n "$PYGOBJECT_DEFSDIR" && test -e "$PYGOBJECT_DEFSDIR/gio-types.defs"; then AM_CONDITIONAL(HAVE_GIO_TYPES_DEFS, true) AC_MSG_RESULT($PYGOBJECT_DEFSDIR/gio-types.defs) else AM_CONDITIONAL(HAVE_GIO_TYPES_DEFS, false) AC_MSG_RESULT(no) fi dnl Documentation PYGOBJECT_FIXXREF="$PYTHON `$PKG_CONFIG --variable=fixxref pygobject-2.0`" AC_SUBST(PYGOBJECT_FIXXREF) PYGOBJECT_PYGDOCS="`$PKG_CONFIG --variable=pygdocs pygobject-2.0`" AC_SUBST(PYGOBJECT_PYGDOCS) dnl atk PKG_CHECK_MODULES(ATK, atk >= atk_required_version, have_atk=true, have_atk=false) AC_SUBST(ATK_CFLAGS) AC_SUBST(ATK_LIBS) AM_CONDITIONAL(BUILD_ATK, $have_atk) if test -n "$export_dynamic"; then ATK_LIBS=`echo $ATK_LIBS | sed -e "s/$export_dynamic//"` fi dnl pango PKG_CHECK_MODULES(PANGO, pango >= pango_required_version, have_pango=true, have_pango=false) AC_SUBST(PANGO_CFLAGS) AC_SUBST(PANGO_LIBS) AM_CONDITIONAL(BUILD_PANGO, $have_pango) if test -n "$export_dynamic"; then PANGO_LIBS=`echo $PANGO_LIBS | sed -e "s/$export_dynamic//"` fi dnl codegen from PyGObject AC_SUBST([CODEGENDIR]) AC_MSG_CHECKING([for codegen]) CODEGENDIR=`$PKG_CONFIG --variable codegendir pygobject-2.0` if test -z $CODEGENDIR; then AC_MSG_ERROR([unable to find PyGObject codegen]) else AC_MSG_RESULT($CODEGENDIR) fi dnl pycairo PYGTK_CODEGEN_DEFINES="" AC_SUBST([PYGTK_CODEGEN_DEFINES]) gtk_version="" PKG_CHECK_MODULES(PYCAIRO, [pycairo >= pycairo_required_version], have_pycairo=true, have_pycairo=false) AC_SUBST(PYCAIRO_CFLAGS) AC_SUBST(PYCAIRO_LIBS) if test "x$have_pycairo" = "xtrue"; then PYGTK_CODEGEN_DEFINES="-DHAVE_PYCAIRO $PYGTK_CODEGEN_DEFINES"; AC_DEFINE([HAVE_PYCAIRO], [1], [Define to 1 if pycairo is available]) AC_DEFINE_UNQUOTED(PYCAIRO_MAJOR_VERSION, [`pkg-config --modversion pycairo | cut -d '.' -f 1`], dnl [pycairo major version]) AC_DEFINE_UNQUOTED(PYCAIRO_MINOR_VERSION, [`pkg-config --modversion pycairo | cut -d '.' -f 2`], dnl [pycairo minor version]) AC_DEFINE_UNQUOTED(PYCAIRO_MICRO_VERSION, [`pkg-config --modversion pycairo | cut -d '.' -f 3`], dnl [pycairo micro version]) dnl pangocairo PKG_CHECK_MODULES(PANGOCAIRO, [pangocairo >= pango_required_version, pycairo >= pycairo_required_version], have_pangocairo=true, have_pangocairo=false) if test ! $have_pangocairo then AC_MSG_RESULT(no) fi AC_SUBST(PANGOCAIRO_CFLAGS) AC_SUBST(PANGOCAIRO_LIBS) AM_CONDITIONAL(BUILD_PANGOCAIRO, $have_pangocairo) if test -n "$export_dynamic"; then PANGOCAIRO_LIBS=`echo $PANGOCAIRO_LIBS | sed -e "s/$export_dynamic//"` fi dnl gtk+ PKG_CHECK_MODULES(GTK, gtk+-2.0 >= gtk_required_version, HAVE_GTK="yes", HAVE_GTK="no") if test "x$HAVE_GTK" = "xyes"; then have_gtk=true else have_gtk=false AC_MSG_RESULT(no) fi AM_CONDITIONAL(BUILD_GTK, $have_gtk) AC_SUBST(GTK_CFLAGS) AC_SUBST(GTK_LIBS) if test -n "$export_dynamic"; then GTK_LIBS=`echo $GTK_LIBS | sed -e "s/$export_dynamic//"` fi PKG_CHECK_MODULES(GTK210, gtk+-2.0 >= 2.10.0, HAVE_GTK_210="yes", HAVE_GTK_210="no") if test "x$HAVE_GTK_210" = "xyes"; then gtk_version="2.10" have_gtk_210=true else AC_MSG_RESULT(no) gtk_version="2.8" have_gtk_210=false fi AM_CONDITIONAL(HAVE_GTK_2_10, $have_gtk_210) AC_SUBST(HAVE_GTK_2_10) AC_DEFINE([HAVE_GTK_2_10], [$have_gtk_210], [If Gtk 2.10 was found]) dnl check for gtk 2.12 PKG_CHECK_MODULES(GTK212, gtk+-2.0 >= 2.11.6, HAVE_GTK_212="yes", HAVE_GTK_212="no") if test "x$HAVE_GTK_212" = "xyes"; then gtk_version="2.12" have_gtk_212=true PYGTK_CODEGEN_DEFINES="$PYGTK_CODEGEN_DEFINES -DHAVE_GTK_2_12" else AC_MSG_RESULT(no) have_gtk_212=false fi AM_CONDITIONAL(HAVE_GTK_2_12, $have_gtk_212) AC_SUBST(HAVE_GTK_2_12) AC_DEFINE([HAVE_GTK_2_12], [$have_gtk_212], [If Gtk 2.12 was found]) dnl check for gtk 2.14 PKG_CHECK_MODULES(GTK214, gtk+-2.0 >= 2.13.8, HAVE_GTK_214="yes", HAVE_GTK_214="no") if test "x$HAVE_GTK_214" = "xyes"; then gtk_version="2.14" have_gtk_214=true PYGTK_CODEGEN_DEFINES="$PYGTK_CODEGEN_DEFINES -DHAVE_GTK_2_14" else AC_MSG_RESULT(no) have_gtk_214=false fi AM_CONDITIONAL(HAVE_GTK_2_14, $have_gtk_214) AC_SUBST(HAVE_GTK_2_14) AC_DEFINE([HAVE_GTK_2_14], [$have_gtk_214], [If Gtk 2.14 was found]) dnl check for gtk 2.16 PKG_CHECK_MODULES(GTK216, gtk+-2.0 >= 2.16.0, HAVE_GTK_216="yes", HAVE_GTK_216="no") if test "x$HAVE_GTK_216" = "xyes"; then gtk_version="2.16" have_gtk_216=true PYGTK_CODEGEN_DEFINES="$PYGTK_CODEGEN_DEFINES -DHAVE_GTK_2_16" else AC_MSG_RESULT(no) have_gtk_216=false fi AM_CONDITIONAL(HAVE_GTK_2_16, $have_gtk_216) AC_SUBST(HAVE_GTK_2_16) AC_DEFINE([HAVE_GTK_2_16], [$have_gtk_216], [If Gtk 2.16 was found]) dnl check for gtk 2.18 PKG_CHECK_MODULES(GTK218, gtk+-2.0 >= 2.18.0, HAVE_GTK_218="yes", HAVE_GTK_218="no") if test "x$HAVE_GTK_218" = "xyes"; then gtk_version="2.18" have_gtk_218=true PYGTK_CODEGEN_DEFINES="$PYGTK_CODEGEN_DEFINES -DHAVE_GTK_2_18" else AC_MSG_RESULT(no) have_gtk_218=false fi AM_CONDITIONAL(HAVE_GTK_2_18, $have_gtk_218) AC_SUBST(HAVE_GTK_2_18) AC_DEFINE([HAVE_GTK_2_18], [$have_gtk_218], [If Gtk 2.18 was found]) dnl check for gtk 2.20 PKG_CHECK_MODULES(GTK220, gtk+-2.0 >= 2.20.0, HAVE_GTK_220="yes", HAVE_GTK_220="no") if test "x$HAVE_GTK_220" = "xyes"; then gtk_version="2.20" have_gtk_220=true PYGTK_CODEGEN_DEFINES="$PYGTK_CODEGEN_DEFINES -DHAVE_GTK_2_20" else AC_MSG_RESULT(no) have_gtk_220=false fi AM_CONDITIONAL(HAVE_GTK_2_20, $have_gtk_220) AC_SUBST(HAVE_GTK_2_20) AC_DEFINE([HAVE_GTK_2_20], [$have_gtk_220], [If Gtk 2.20 was found]) dnl check for gtk 2.22 PKG_CHECK_MODULES(GTK222, gtk+-2.0 >= 2.22.0, HAVE_GTK_222="yes", HAVE_GTK_222="no") if test "x$HAVE_GTK_222" = "xyes"; then gtk_version="2.22" have_gtk_222=true PYGTK_CODEGEN_DEFINES="$PYGTK_CODEGEN_DEFINES -DHAVE_GTK_2_22" else AC_MSG_RESULT(no) have_gtk_222=false fi AM_CONDITIONAL(HAVE_GTK_2_22, $have_gtk_222) AC_SUBST(HAVE_GTK_2_22) AC_DEFINE([HAVE_GTK_2_22], [$have_gtk_222], [If Gtk 2.22 was found]) dnl check for gtk 2.24 PKG_CHECK_MODULES(GTK224, gtk+-2.0 >= 2.24.0, HAVE_GTK_224="yes", HAVE_GTK_224="no") if test "x$HAVE_GTK_224" = "xyes"; then gtk_version="2.24" have_gtk_224=true PYGTK_CODEGEN_DEFINES="$PYGTK_CODEGEN_DEFINES -DHAVE_GTK_2_24" else AC_MSG_RESULT(no) have_gtk_224=false fi AM_CONDITIONAL(HAVE_GTK_2_24, $have_gtk_224) AC_SUBST(HAVE_GTK_2_24) AC_DEFINE([HAVE_GTK_2_24], [$have_gtk_224], [If Gtk 2.24 was found]) dnl libglade have_libglade=false AC_ARG_WITH([glade], AS_HELP_STRING([--without-glade], [Build without glade library (default: test)])) if test "x$with_glade" != "xno"; then PKG_CHECK_MODULES(LIBGLADE, [libglade-2.0 >= libglade_required_version], have_libglade=true, have_libglade=false) fi AC_SUBST(LIBGLADE_CFLAGS) AC_SUBST(LIBGLADE_LIBS) AM_CONDITIONAL(BUILD_LIBGLADE, $have_libglade) if test -n "$export_dynamic"; then LIBGLADE_LIBS=`echo $LIBGLADE_LIBS | sed -e "s/$export_dynamic//"` fi dnl gtkunixprint PKG_CHECK_MODULES(GTKUNIXPRINT, [gtk+-unix-print-2.0 >= gtkunixprint_required_version], have_gtkunixprint=true, have_gtkunixprint=false) AC_SUBST(GTKUNIXPRINT_CFLAGS) AC_SUBST(GTKUNIXPRINT_LIBS) AM_CONDITIONAL(BUILD_GTKUNIXPRINT, $have_gtkunixprint) if test -n "$export_dynamic"; then GTKUNIXPRINT_LIBS=`echo $GTKUNIXPRINT_LIBS | sed -e "s/$export_dynamic//"` fi else AC_MSG_RESULT(no) AC_MSG_RESULT(not checking for gtk due to missing pycairo) AM_CONDITIONAL(BUILD_PANGOCAIRO, false) AM_CONDITIONAL(BUILD_GTK, false) AM_CONDITIONAL(HAVE_GTK_2_10, false) AM_CONDITIONAL(HAVE_GTK_2_12, false) AM_CONDITIONAL(HAVE_GTK_2_14, false) AM_CONDITIONAL(HAVE_GTK_2_16, false) AM_CONDITIONAL(HAVE_GTK_2_18, false) AM_CONDITIONAL(HAVE_GTK_2_20, false) AM_CONDITIONAL(HAVE_GTK_2_22, false) AM_CONDITIONAL(HAVE_GTK_2_24, false) AM_CONDITIONAL(BUILD_LIBGLADE, false) AM_CONDITIONAL(BUILD_GTKUNIXPRINT, false) have_pangocairo=false have_gtk=false have_libglade=false have_gtkunixprint=false fi dnl Check for GDK target AC_MSG_CHECKING([for GDK target]) gdk_target=`$PKG_CONFIG --variable target gdk-2.0` if test -z $gdk_target; then AC_MSG_RESULT((unknown)) AC_MSG_WARN([unable to determine the GDK target system; some functions may not be available]) else AC_MSG_RESULT($gdk_target) fi case $gdk_target in x11) PYGTK_CODEGEN_DEFINES="$PYGTK_CODEGEN_DEFINES -DGDK_TARGET_X11" ;; esac dnl checks to see if numpy is installed. AC_ARG_ENABLE(numpy, AC_HELP_STRING([--disable-numpy], [Disable numeric python features]),, enable_numpy=yes) if test "x$enable_numpy" != xno; then save_CPPFLAGS="$CPPFLAGS" numpy_INCLUDES=`$PYTHON -c "import numpy; print numpy.get_include()" 2> /dev/null` if test "x$numpy_INCLUDES" = "x"; then AC_MSG_WARN([Could not find a valid numpy installation, disabling.]) enable_numpy=no else CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES -I$numpy_INCLUDES" AC_CHECK_HEADER([numpy/arrayobject.h], [AC_DEFINE(HAVE_NUMPY,,[whether to include numeric python support])], [enable_numpy=no], [#include ]) if test "x$enable_numpy" != "xno"; then CPPFLAGS="$save_CPPFLAGS -I$numpy_INCLUDES" fi fi fi dnl add required cflags ... if test "x$GCC" = "xyes"; then JH_ADD_CFLAG([-Wall]) JH_ADD_CFLAG([-fno-strict-aliasing]) case $host_os in solaris*) ;; *) JH_ADD_CFLAG([-std=c9x]) ;; esac fi AC_CONFIG_FILES( Makefile pygtk-2.0.pc pygtk-codegen-2.0 gtk/Makefile docs/Makefile docs/reference/entities.docbook examples/Makefile tests/Makefile pygtk.spec PKG-INFO) AC_OUTPUT echo echo "The following modules will be built:" echo $have_atk && echo atk $have_pango && echo pango $have_pangocairo && echo pangocairo $have_gtk && echo gtk with $gtk_version API $have_libglade && echo gtk.glade $have_gtkunixprint && echo gtk.unixprint if test ! $have_atk || ! $have_pango || \ ! $have_gtk || ! $have_libglade || \ ! $have_pangocairo || ! $have_gtkunixprint; then echo echo "The following modules will NOT be built:" echo $have_atk || echo atk $have_pango || echo pango $have_pangocairo || echo pangocairo $have_gtk || echo gtk $have_libglade || echo gtk.glade $have_gtkunixprint || echo gtk.unixprint fi echo echo "Numpy support: $enable_numpy" echo pygtk-2.24.0/setup.py0000755000175000017500000003422011545325345011403 00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- # # setup.py - distutils configuration for pygtk '''Python Bindings for the GTK+ Widget Set. PyGTK is a set of bindings for the GTK+ widget set. It provides an object oriented interface that is slightly higher level than the C one. It automatically does all the type casting and reference counting that you would have to do normally with the C API. You can find out more on the official homepage, http://www.pygtk.org/''' import os import sys import glob from distutils.command.build import build from distutils.core import setup # Check for windows platform if sys.platform != 'win32': msg = '*' * 68 + '\n' msg += '* Building PyGTK using distutils is only supported on windows. *\n' msg += '* To build PyGTK in a supported way, read the INSTALL file. *\n' msg += '*' * 68 raise SystemExit(msg) # Check for python version MIN_PYTHON_VERSION = (2, 6, 0) if sys.version_info[:3] < MIN_PYTHON_VERSION: raise SystemExit('ERROR: Python %s or higher is required, %s found.' % ( '.'.join(map(str,MIN_PYTHON_VERSION)), '.'.join(map(str,sys.version_info[:3])))) # Check for pygobject (dsextras) try: import pygtk pygtk.require('2.0') from dsextras import GLOBAL_MACROS, GLOBAL_INC, get_m4_define, getoutput, \ have_pkgconfig, pkgc_version_check, pkgc_get_defs_dir, \ PkgConfigExtension, Template, TemplateExtension, \ BuildExt, InstallLib, InstallData except ImportError: raise SystemExit('ERROR: Could not import dsextras module: ' 'Make sure you have installed pygobject.') # Check for pkgconfig if not have_pkgconfig(): raise SystemExit('ERROR: Could not find pkg-config: ' 'Please check your PATH environment variable.') PYGTK_SUFFIX = '2.0' PYGTK_SUFFIX_LONG = 'gtk-' + PYGTK_SUFFIX PYGOBJECT_DEFSDIR = pkgc_get_defs_dir('pygobject-%s' % PYGTK_SUFFIX) GOBJECT_REQUIRED = get_m4_define('glib_required_version') ATK_REQUIRED = get_m4_define('atk_required_version') PANGO_REQUIRED = get_m4_define('pango_required_version') GTK_REQUIRED = get_m4_define('gtk_required_version') LIBGLADE_REQUIRED = get_m4_define('libglade_required_version') PYCAIRO_REQUIRED = get_m4_define('pycairo_required_version') PYGOBJECT_REQUIRED = get_m4_define('pygobject_required_version') MAJOR_VERSION = int(get_m4_define('pygtk_major_version')) MINOR_VERSION = int(get_m4_define('pygtk_minor_version')) MICRO_VERSION = int(get_m4_define('pygtk_micro_version')) VERSION = '%d.%d.%d' % (MAJOR_VERSION, MINOR_VERSION, MICRO_VERSION) GLOBAL_INC += ['.', 'gtk'] GLOBAL_MACROS += [('PYGTK_MAJOR_VERSION', MAJOR_VERSION), ('PYGTK_MINOR_VERSION', MINOR_VERSION), ('PYGTK_MICRO_VERSION', MICRO_VERSION), ('VERSION', '\\"%s\\"' % VERSION), ('PLATFORM_WIN32', 1), ('HAVE_BIND_TEXTDOMAIN_CODESET', 1)] DEFS_DIR = os.path.join('share', 'pygtk', PYGTK_SUFFIX, 'defs') DEFS_INCLUDE_DIR = os.path.join(DEFS_DIR, 'gtk') INCLUDE_DIR = os.path.join('include', 'pygtk-%s' % PYGTK_SUFFIX) HTML_DIR = os.path.join('share', 'gtk-doc', 'html', 'pygtk') class PyGtkInstallLib(InstallLib): def run(self): # Modify the base installation dir install_dir = os.path.join(self.install_dir, PYGTK_SUFFIX_LONG) self.set_install_dir(install_dir) # Install tests self.install_tests() InstallLib.run(self) def copy_test(self, srcfile, dstfile=None): if dstfile is None: dstfile = os.path.join(self.test_dir, srcfile) else: dstfile = os.path.join(self.test_dir, dstfile) srcfile = os.path.join('tests', srcfile) self.copy_file(srcfile, os.path.abspath(dstfile)) self.local_outputs.append(dstfile) self.local_inputs.append('srcfile') def install_tests(self): self.test_dir = os.path.join(self.install_dir, 'tests', 'pygtk') self.mkpath(self.test_dir) self.copy_test('runtests-windows.py', 'runtests.py') self.copy_test('common-windows.py', 'common.py') for testfile in glob.glob('tests/test*.py'): self.copy_test(os.path.basename(testfile)) for gladefile in glob.glob('tests/*.glade'): self.copy_test(os.path.basename(gladefile)) class PyGtkInstallData(InstallData): def run(self): self.add_template_option('VERSION', VERSION) self.prepare() # Install templates self.install_templates() InstallData.run(self) def install_templates(self): self.install_template('pygtk-%s.pc.in' % PYGTK_SUFFIX, os.path.join(self.install_dir, 'lib', 'pkgconfig')) class PyGtkBuild(build): enable_threading = True PyGtkBuild.user_options.append(('enable-threading', None, 'enable threading support')) ################################################################### # FOR A NEW RELEASE, YOU USUALLY ONLY NEED TO CHANGE THE FOLLOWING # These defs are registered with many modules... gdk_defs = [ 'gtk/gdk-2.24.defs', 'gtk/gdk-2.22.defs', 'gtk/gdk-2.20.defs', 'gtk/gdk-2.18.defs', 'gtk/gdk-2.16.defs', 'gtk/gdk-2.14.defs', 'gtk/gdk-2.12.defs', 'gtk/gdk-2.10.defs', 'gtk/gdk-base.defs'] gtk_defs = [ 'gtk/gtk-2.24.defs', 'gtk/gtk-2.22.defs', 'gtk/gtk-2.20.defs', 'gtk/gtk-2.18.defs', 'gtk/gtk-2.16.defs', 'gtk/gtk-2.14.defs', 'gtk/gtk-2.12.defs', 'gtk/gtk-2.10.defs', 'gtk/gtk-base.defs'] gtk_types_defs = [ 'gtk/gtk-2.24-types.defs', 'gtk/gtk-2.22-types.defs', 'gtk/gtk-2.20-types.defs', 'gtk/gtk-2.18-types.defs', 'gtk/gtk-2.16-types.defs', 'gtk/gtk-2.14-types.defs', 'gtk/gtk-2.12-types.defs', 'gtk/gtk-2.10-types.defs', 'gtk/gtk-base-types.defs'] gtk_extra_defs = [ 'gtk/gtk-extrafuncs.defs'] #################################################################### # Atk atk = TemplateExtension(name='atk', pkc_name=('pygobject-%s' % PYGTK_SUFFIX, 'atk'), pkc_version=(PYGOBJECT_REQUIRED, ATK_REQUIRED), defs='atk.defs', register=['atk-types.defs'], override='atk.override', sources=['atkmodule.c', 'atk.c'], py_ssize_t_clean=True) # Pango pango = TemplateExtension(name='pango', pkc_name=('pygobject-%s' % PYGTK_SUFFIX, 'pango'), pkc_version=(PYGOBJECT_REQUIRED, PANGO_REQUIRED), defs='pango.defs', register=['pango-types.defs'], override='pango.override', sources=['pangomodule.c', 'pango.c'], py_ssize_t_clean=True) # Pangocairo pangocairo = TemplateExtension(name='pangocairo', pkc_name=('pycairo', 'pangocairo'), pkc_version=(PYCAIRO_REQUIRED, PANGO_REQUIRED), defs='pangocairo.defs', register=['pango-types.defs'], override='pangocairo.override', sources=['pangocairomodule.c', 'pangocairo.c'], py_ssize_t_clean=True) # Gdk (template only) gdk_template = Template('gtk/gdk.override', 'gtk/gdk.c', defs=('gtk/gdk.defs', gdk_defs), prefix='pygdk', register=['atk-types.defs', 'pango-types.defs', ('gtk/gdk-types.defs', gdk_defs)], py_ssize_t_clean=True) # Gtk+ gtk_pkc_defs=('gtk/gtk.defs', gtk_defs) gtk_pkc_register=['%s/gio-types.defs' % PYGOBJECT_DEFSDIR, 'atk-types.defs', 'pango-types.defs', ('gtk/gdk-types.defs',['gtk/gdk-base-types.defs']), ('gtk/gtk-types.defs', gtk_types_defs)] libglade_pkc_register=[('gtk/gdk-types.defs',['gtk/gdk-base-types.defs']), ('gtk/gtk-types.defs',gtk_types_defs), 'gtk/libglade.defs'] gtk = TemplateExtension(name='gtk', pkc_name=('gtk+-%s' % PYGTK_SUFFIX, 'pycairo'), pkc_version=(GTK_REQUIRED, PYCAIRO_REQUIRED), output='gtk._gtk', defs=gtk_pkc_defs, sources=['gtk/gtkmodule.c', 'gtk/gtkobject-support.c', 'gtk/gtk-types.c', 'gtk/pygtktreemodel.c', 'gtk/pygtkcellrenderer.c', 'gtk/gdk.c', 'gtk/gtk.c'], register=gtk_pkc_register, override='gtk/gtk.override', py_ssize_t_clean=True) gtk.templates.append(gdk_template) # Libglade libglade = TemplateExtension(name='libglade', pkc_name='libglade-%s' % PYGTK_SUFFIX, pkc_version=LIBGLADE_REQUIRED, output='gtk.glade', defs='gtk/libglade.defs', sources=['gtk/libglademodule.c', 'gtk/libglade.c'], register=libglade_pkc_register, override='gtk/libglade.override', py_ssize_t_clean=True) data_files = [] ext_modules = [] py_modules = [] packages = [] if gtk.can_build(): if '--disable-numpy' in sys.argv: sys.argv.remove('--disable-numpy') else: try: import numpy numpy # pyflakes GLOBAL_MACROS.append(('HAVE_NUMPY', 1)) NUMPY_INCLUDE = os.path.join(os.path.dirname(numpy.__file__), 'core', 'include') gtk.include_dirs.append(NUMPY_INCLUDE) except ImportError: print ('* Could not import numpy module, disabling numpy support.') ext_modules.append(gtk) data_files.append((os.path.join(INCLUDE_DIR, 'pygtk'), ('gtk/pygtk.h',))) data_files.append((DEFS_DIR, ['gtk/gdk.defs'])) data_files.append((DEFS_DIR, ['gtk/gdk-types.defs'])) data_files.append((DEFS_INCLUDE_DIR, ['gtk/gdk-base-types.defs'])) data_files.append((DEFS_INCLUDE_DIR, gdk_defs)) data_files.append((DEFS_DIR, ['gtk/gtk.defs'])) data_files.append((DEFS_DIR, ['gtk/gtk-types.defs'])) data_files.append((DEFS_INCLUDE_DIR, gtk_defs)) data_files.append((DEFS_INCLUDE_DIR, gtk_types_defs)) data_files.append((DEFS_INCLUDE_DIR, gtk_extra_defs)) data_files.append((HTML_DIR, glob.glob('docs/html/*.html'))) py_modules += ['gtk.compat', 'gtk.deprecation', 'gtk.keysyms', 'gtk._lazyutils'] if atk.can_build(): ext_modules.append(atk) data_files.append((DEFS_DIR, ('atk.defs', 'atk-types.defs'))) else: raise SystemExit('ERROR: Nothing to do, atk could not be built and is essential.') if pango.can_build(): ext_modules.append(pango) data_files.append((DEFS_DIR, ('pango.defs', 'pango-types.defs'))) if pangocairo.can_build(): ext_modules.append(pangocairo) data_files.append((DEFS_DIR, ('pangocairo.defs',))) GLOBAL_MACROS.append(('HAVE_PYCAIRO', 1)) else: raise SystemExit('ERROR: Nothing to do, pangocairo could not be built and is essential.') else: raise SystemExit('ERROR: Nothing to do, pango could not be built and is essential.') if libglade.can_build(): ext_modules.append(libglade) data_files.append((DEFS_DIR, ('gtk/libglade.defs',))) else: raise SystemExit('ERROR: Nothing to do, gtk could not be built and is essential.') # Threading support if '--disable-threading' in sys.argv: sys.argv.remove('--disable-threading') enable_threading = False else: if '--enable-threading' in sys.argv: sys.argv.remove('--enable-threading') try: import thread thread # pyflakes except ImportError: print ('* Could not import thread module, disabling threading.') enable_threading = False else: enable_threading = True if enable_threading: name = 'gthread-%s' % PYGTK_SUFFIX for module in ext_modules: raw = getoutput('pkg-config --libs-only-l %s' % name) for arg in raw.split(): if arg.startswith('-l'): module.libraries.append(arg[2:]) else: module.extra_link_args.append(arg) raw = getoutput('pkg-config --cflags-only-I %s' % name) for arg in raw.split(): if arg.startswith('-I'): module.include_dirs.append(arg[2:]) else: module.extra_compile_args.append(arg) else: GLOBAL_MACROS.append(('DISABLE_THREADING', 1)) doclines = __doc__.split('\n') options = {'bdist_wininst': {'install_script': 'pygtk_postinstall.py', 'user_access_control': 'auto'}} setup(name='pygtk', url='http://www.pygtk.org/', version=VERSION, license='LGPL', platforms=['MS Windows'], maintainer='James Henstridge', maintainer_email='james@daa.com.au', description=doclines[0], long_description='\n'.join(doclines[2:]), provides=['gtk', 'atk', 'pango', 'pangocairo'], requires=['pycairo (>=%s)' % PYCAIRO_REQUIRED, 'pygobject (>=%s)' %PYGOBJECT_REQUIRED], py_modules=py_modules, packages=packages, ext_modules=ext_modules, data_files=data_files, scripts=['pygtk_postinstall.py'], options=options, cmdclass={'install_lib': PyGtkInstallLib, 'install_data': PyGtkInstallData, 'build_ext': BuildExt, 'build': PyGtkBuild}) pygtk-2.24.0/aclocal.m40000644000175000017500000123457511545325673011552 00000000000000# generated automatically by aclocal 1.11.1 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.67],, [m4_warning([this file was generated for autoconf 2.67. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.11.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.11.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 9 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 10 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. #serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 8 # AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 16 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.62])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl dnl The `parallel-tests' driver may need to know about EXEEXT, so add the dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ]) dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 6 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # ------------------------------ # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ---------------------------------- # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2009 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # --------------------------------------------------------------------------- # Adds support for distributing Python modules and packages. To # install modules, copy them to $(pythondir), using the python_PYTHON # automake variable. To install a package with the same name as the # automake package, install to $(pkgpythondir), or use the # pkgpython_PYTHON automake variable. # # The variables $(pyexecdir) and $(pkgpyexecdir) are provided as # locations to install python extension modules (shared libraries). # Another macro is required to find the appropriate flags to compile # extension modules. # # If your package is configured with a different prefix to python, # users will have to add the install directory to the PYTHONPATH # environment variable, or create a .pth file (see the python # documentation for details). # # If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will # cause an error if the version of python installed on the system # doesn't meet the requirement. MINIMUM-VERSION should consist of # numbers and dots only. AC_DEFUN([AM_PATH_PYTHON], [ dnl Find a Python interpreter. Python versions prior to 2.0 are not dnl supported. (2.0 was released on October 16, 2000). m4_define_default([_AM_PYTHON_INTERPRETER_LIST], [python python2 python3 python3.0 python2.5 python2.4 python2.3 python2.2 dnl python2.1 python2.0]) m4_if([$1],[],[ dnl No version check is needed. # Find any Python interpreter. if test -z "$PYTHON"; then AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :) fi am_display_PYTHON=python ], [ dnl A version check is needed. if test -n "$PYTHON"; then # If the user set $PYTHON, use it and don't search something else. AC_MSG_CHECKING([whether $PYTHON version >= $1]) AM_PYTHON_CHECK_VERSION([$PYTHON], [$1], [AC_MSG_RESULT(yes)], [AC_MSG_ERROR(too old)]) am_display_PYTHON=$PYTHON else # Otherwise, try each interpreter until we find one that satisfies # VERSION. AC_CACHE_CHECK([for a Python interpreter with version >= $1], [am_cv_pathless_PYTHON],[ for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do test "$am_cv_pathless_PYTHON" = none && break AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break]) done]) # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. if test "$am_cv_pathless_PYTHON" = none; then PYTHON=: else AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON]) fi am_display_PYTHON=$am_cv_pathless_PYTHON fi ]) if test "$PYTHON" = :; then dnl Run any user-specified action, or abort. m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])]) else dnl Query Python for its version number. Getting [:3] seems to be dnl the best way to do this; it's what "site.py" does in the standard dnl library. AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version], [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`]) AC_SUBST([PYTHON_VERSION], [$am_cv_python_version]) dnl Use the values of $prefix and $exec_prefix for the corresponding dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made dnl distinct variables so they can be overridden if need be. However, dnl general consensus is that you shouldn't need this ability. AC_SUBST([PYTHON_PREFIX], ['${prefix}']) AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}']) dnl At times (like when building shared libraries) you may want dnl to know which OS platform Python thinks this is. AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform], [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`]) AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform]) dnl Set up 4 directories: dnl pythondir -- where to install python scripts. This is the dnl site-packages directory, not the python standard library dnl directory like in previous automake betas. This behavior dnl is more consistent with lispdir.m4 for example. dnl Query distutils for this directory. distutils does not exist in dnl Python 1.5, so we fall back to the hardcoded directory if it dnl doesn't work. AC_CACHE_CHECK([for $am_display_PYTHON script directory], [am_cv_python_pythondir], [if test "x$prefix" = xNONE then am_py_prefix=$ac_default_prefix else am_py_prefix=$prefix fi am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null || echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"` case $am_cv_python_pythondir in $am_py_prefix*) am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` ;; *) case $am_py_prefix in /usr|/System*) ;; *) am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac ]) AC_SUBST([pythondir], [$am_cv_python_pythondir]) dnl pkgpythondir -- $PACKAGE directory under pythondir. Was dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is dnl more consistent with the rest of automake. AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE]) dnl pyexecdir -- directory for installing python extension modules dnl (shared libraries) dnl Query distutils for this directory. distutils does not exist in dnl Python 1.5, so we fall back to the hardcoded directory if it dnl doesn't work. AC_CACHE_CHECK([for $am_display_PYTHON extension module directory], [am_cv_python_pyexecdir], [if test "x$exec_prefix" = xNONE then am_py_exec_prefix=$am_py_prefix else am_py_exec_prefix=$exec_prefix fi am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null || echo "$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages"` case $am_cv_python_pyexecdir in $am_py_exec_prefix*) am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` ;; *) case $am_py_exec_prefix in /usr|/System*) ;; *) am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac ]) AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir]) dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE) AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE]) dnl Run any user-specified action. $2 fi ]) # AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) # --------------------------------------------------------------------------- # Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION. # Run ACTION-IF-FALSE otherwise. # This test uses sys.hexversion instead of the string equivalent (first # word of sys.version), in order to cope with versions such as 2.2c1. # This supports Python 2.0 or higher. (2.0 was released on October 16, 2000). AC_DEFUN([AM_PYTHON_CHECK_VERSION], [prog="import sys # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. # map returns an iterator in Python 3.0 and a list in 2.x minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]] minverhex = 0 # xrange is not present in Python 3.0 and range returns an iterator for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]] sys.exit(sys.hexversion < minverhex)" AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. AM_MISSING_PROG([AMTAR], [tar]) m4_if([$1], [v7], [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]) # serial 56 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_CC_BASENAME(CC) # ------------------- # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. m4_defun([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl _LT_PROG_ECHO_BACKSLASH case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from `configure', and `config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # `config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain="$ac_aux_dir/ltmain.sh" ])# _LT_PROG_LTMAIN # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the `libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to `config.status' so that its # declaration there will have the same value as in `configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "X$" | $Xsed -e "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags="_LT_TAGS"dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the `libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into `config.status', and then the shell code to quote escape them in # for loops in `config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Fix-up fallback echo if it was mangled by the above quoting rules. case \$lt_ECHO in *'\\\[$]0 --fallback-echo"')dnl " lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\` ;; esac _LT_OUTPUT_LIBTOOL_INIT ]) # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) cat >"$CONFIG_LT" <<_LTEOF #! $SHELL # Generated by $as_me. # Run this file to recreate a libtool stub with the current configuration. lt_cl_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ \`$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2008 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test $[#] != 0 do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try \`$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try \`$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. if test "$no_create" != yes; then lt_cl_success=: test "$silent" = yes && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) fi ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # _LT_COPYING _LT_LIBTOOL_TAGS # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) _LT_PROG_XSI_SHELLFNS sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[[012]]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES # -------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(whole_archive_flag_spec, $1)='' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=echo _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" m4_if([$1], [CXX], [ if test "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX # ----------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl AC_LINK_IFELSE(AC_LANG_PROGRAM,[ lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], [AC_DIVERT_PUSH(NOTICE)]) $1 AC_DIVERT_POP ])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Add some code to the start of the generated configure script which # will find an echo command which doesn't interpret backslashes. m4_defun([_LT_PROG_ECHO_BACKSLASH], [_LT_SHELL_INIT([ # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$lt_ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ;; esac ECHO=${lt_ECHO-echo} if test "X[$]1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X[$]1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then # Yippee, $ECHO works! : else # Restart under the correct shell. exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} fi if test "X[$]1" = X--fallback-echo; then # used as fallback echo shift cat <<_LT_EOF [$]* _LT_EOF exit 0 fi # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test -z "$lt_ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if { echo_test_string=`eval $cmd`; } 2>/dev/null && { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null then break fi done fi if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$ECHO" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. ECHO='print -r' elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} else # Try using printf. ECHO='printf %s\n' if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL ECHO="$CONFIG_SHELL [$]0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$CONFIG_SHELL [$]0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "[$]0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} else # Oops. We lost completely, so just stick with echo. ECHO=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. lt_ECHO=$ECHO if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" fi AC_SUBST(lt_ECHO) ]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that does not interpret backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" ])# _LT_ENABLE_LOCK # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [AC_CHECK_TOOL(AR, ar, false) test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1]) AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test x"[$]$2" = xyes; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ = "XX$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line __oline__ "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links="nottested" if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", [Define to the sub-directory in which libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existent directories. if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` else lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[123]]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[[3-9]]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([], [sys_lib_dlsearch_path_spec], [2], [Run-time system search path for libraries]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program which can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program which can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method == "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi]) if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :) AC_SUBST([DUMPBIN]) if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ const struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= AC_MSG_CHECKING([for $compiler option to produce PIC]) m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC*) # IBM XL 8.0 on PPC _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl*) # IBM XL C 8.0/Fortran 10.1 on PPC _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' ;; linux* | k*bsd*-gnu) _LT_TAGVAR(link_all_deplibs, $1)=no ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; linux* | k*bsd*-gnu) _LT_TAGVAR(link_all_deplibs, $1)=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag= tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi _LT_TAGVAR(link_all_deplibs, $1)=no else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; freebsd1*) _LT_TAGVAR(ld_shlibs, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" AC_LINK_IFELSE(int foo(void) {}, _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' ) LDFLAGS="$save_LDFLAGS" else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_MSG_CHECKING([whether -lc should be explicitly linked in]) $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then _LT_TAGVAR(archive_cmds_need_lc, $1)=no else _LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)]) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], [[If ld is used when linking, flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting ${shlibpath_var} if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [fix_srcfile_path], [1], [Fix the shell variable $srcfile for the compiler]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG # _LT_PROG_CXX # ------------ # Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++ # compiler, we have our own version here. m4_defun([_LT_PROG_CXX], [ pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes]) AC_PROG_CXX if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi popdef([AC_MSG_ERROR]) ])# _LT_PROG_CXX dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([_LT_PROG_CXX], []) # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [AC_REQUIRE([_LT_PROG_CXX])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared # libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd[[12]]*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; gnu*) ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 will use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; xl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd2*) # C++ shared libraries are fairly broken _LT_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=echo else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(GCC, $1)="$GXX" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ]) dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue else prev= fi if test "$pre_test_object_deps_done" = no; then case $p in -L* | -R*) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)="${prev}${p}" else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" fi fi ;; *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)="$p" else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)="$p" else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_PROG_F77 # ------------ # Since AC_PROG_F77 is broken, in that it returns the empty string # if there is no fortran compiler, we have our own version here. m4_defun([_LT_PROG_F77], [ pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes]) AC_PROG_F77 if test -z "$F77" || test "X$F77" = "Xno"; then _lt_disable_F77=yes fi popdef([AC_MSG_ERROR]) ])# _LT_PROG_F77 dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([_LT_PROG_F77], []) # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_REQUIRE([_LT_PROG_F77])dnl AC_LANG_PUSH(Fortran 77) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_F77" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC CC=${F77-"f77"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$G77" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_PROG_FC # ----------- # Since AC_PROG_FC is broken, in that it returns the empty string # if there is no fortran compiler, we have our own version here. m4_defun([_LT_PROG_FC], [ pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes]) AC_PROG_FC if test -z "$FC" || test "X$FC" = "Xno"; then _lt_disable_FC=yes fi popdef([AC_MSG_ERROR]) ])# _LT_PROG_FC dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([_LT_PROG_FC], []) # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_REQUIRE([_LT_PROG_FC])dnl AC_LANG_PUSH(Fortran) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_FC" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC CC=${FC-"f95"} compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" fi # test "$_lt_disable_FC" != yes AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC="$lt_save_CC" ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC GCC= CC=${RC-"windres"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC="$lt_save_CC" ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [AC_MSG_CHECKING([whether the shell understands some XSI constructs]) # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes AC_MSG_RESULT([$xsi_shell]) _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) AC_MSG_CHECKING([whether the shell understands "+="]) lt_shell_append=no ( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes AC_MSG_RESULT([$lt_shell_append]) _LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PROG_XSI_SHELLFNS # --------------------- # Bourne and XSI compatible variants of some useful shell functions. m4_defun([_LT_PROG_XSI_SHELLFNS], [case $xsi_shell in yes) cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac } # func_basename file func_basename () { func_basename_result="${1##*/}" } # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}" } # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). func_stripname () { # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"} } # func_opt_split func_opt_split () { func_opt_split_opt=${1%%=*} func_opt_split_arg=${1#*=} } # func_lo2o object func_lo2o () { case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac } # func_xform libobj-or-source func_xform () { func_xform_result=${1%.*}.lo } # func_arith arithmetic-term... func_arith () { func_arith_result=$(( $[*] )) } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=${#1} } _LT_EOF ;; *) # Bourne compatible functions. cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_basename file func_basename () { func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } dnl func_dirname_and_basename dnl A portable version of this function is already defined in general.m4sh dnl so there is no need for it here. # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; esac } # sed scripts: my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q' my_sed_long_arg='1s/^-[[^=]]*=//' # func_opt_split func_opt_split () { func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` } # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` } # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'` } # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "$[@]"` } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len` } _LT_EOF esac case $lt_shell_append in yes) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$[1]+=\$[2]" } _LT_EOF ;; *) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$[1]=\$$[1]\$[2]" } _LT_EOF ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option `$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl `shared' nor `disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) ]) ])# _LT_SET_OPTIONS # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [0], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the `shared' and # `disable-shared' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the `static' and # `disable-static' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the `fast-install' # and `disable-fast-install' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the `pic-only' and `no-pic' # LT_INIT options. # MODE is either `yes' or `no'. If omitted, it defaults to `both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [pic_mode="$withval"], [pic_mode=default]) test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59 which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) # ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # Generated from ltversion.in. # serial 3017 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.2.6b]) m4_define([LT_PACKAGE_REVISION], [1.3017]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.2.6b' macro_revision='1.3017' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 4 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # serial 1 (pkg-config-0.24) # # Copyright © 2004 Scott James Remnant . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])# PKG_PROG_PKG_CONFIG # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # # Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) # only at the first occurence in configure.ac, so if the first place # it's called might be skipped (such as if it is within an "if", you # have to call PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])# _PKG_SHORT_ERRORS_SUPPORTED # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND]) # # # Note that if there is a possibility the first call to # PKG_CHECK_MODULES might not happen, you should be sure to include an # explicit call to PKG_PROG_PKG_CONFIG in your configure.ac # # # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])# PKG_CHECK_MODULES # Configure paths for GLIB # Owen Taylor 1997-2001 dnl AM_PATH_GLIB_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if gmodule, gobject, dnl gthread, or gio is specified in MODULES, pass to pkg-config dnl AC_DEFUN([AM_PATH_GLIB_2_0], [dnl dnl Get the cflags and libraries from pkg-config dnl AC_ARG_ENABLE(glibtest, [ --disable-glibtest do not try to compile and run a test GLIB program], , enable_glibtest=yes) pkg_config_args=glib-2.0 for module in . $4 do case "$module" in gmodule) pkg_config_args="$pkg_config_args gmodule-2.0" ;; gmodule-no-export) pkg_config_args="$pkg_config_args gmodule-no-export-2.0" ;; gobject) pkg_config_args="$pkg_config_args gobject-2.0" ;; gthread) pkg_config_args="$pkg_config_args gthread-2.0" ;; gio*) pkg_config_args="$pkg_config_args $module-2.0" ;; esac done PKG_PROG_PKG_CONFIG([0.16]) no_glib="" if test "x$PKG_CONFIG" = x ; then no_glib=yes PKG_CONFIG=no fi min_glib_version=ifelse([$1], ,2.0.0,$1) AC_MSG_CHECKING(for GLIB - version >= $min_glib_version) if test x$PKG_CONFIG != xno ; then ## don't try to run the test against uninstalled libtool libs if $PKG_CONFIG --uninstalled $pkg_config_args; then echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH" enable_glibtest=no fi if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then : else no_glib=yes fi fi if test x"$no_glib" = x ; then GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0` GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0` GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0` GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args` GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args` glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` if test "x$enable_glibtest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GLIB_CFLAGS" LIBS="$GLIB_LIBS $LIBS" dnl dnl Now check if the installed GLIB is sufficiently new. (Also sanity dnl checks the results of pkg-config to some extent) dnl rm -f conf.glibtest AC_TRY_RUN([ #include #include #include int main () { unsigned int major, minor, micro; char *tmp_version; fclose (fopen ("conf.glibtest", "w")); /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = g_strdup("$min_glib_version"); if (sscanf(tmp_version, "%u.%u.%u", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_glib_version"); exit(1); } if ((glib_major_version != $glib_config_major_version) || (glib_minor_version != $glib_config_minor_version) || (glib_micro_version != $glib_config_micro_version)) { printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n", $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version, glib_major_version, glib_minor_version, glib_micro_version); printf ("*** was found! If pkg-config was correct, then it is best\n"); printf ("*** to remove the old version of GLib. You may also be able to fix the error\n"); printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); printf("*** required on your system.\n"); printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); printf("*** to point to the correct configuration files\n"); } else if ((glib_major_version != GLIB_MAJOR_VERSION) || (glib_minor_version != GLIB_MINOR_VERSION) || (glib_micro_version != GLIB_MICRO_VERSION)) { printf("*** GLIB header files (version %d.%d.%d) do not match\n", GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION); printf("*** library (version %d.%d.%d)\n", glib_major_version, glib_minor_version, glib_micro_version); } else { if ((glib_major_version > major) || ((glib_major_version == major) && (glib_minor_version > minor)) || ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro))) { return 0; } else { printf("\n*** An old version of GLIB (%u.%u.%u) was found.\n", glib_major_version, glib_minor_version, glib_micro_version); printf("*** You need a version of GLIB newer than %u.%u.%u. The latest version of\n", major, minor, micro); printf("*** GLIB is always available from ftp://ftp.gtk.org.\n"); printf("***\n"); printf("*** If you have already installed a sufficiently new version, this error\n"); printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); printf("*** being found. The easiest way to fix this is to remove the old version\n"); printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n"); printf("*** correct copy of pkg-config. (In this case, you will have to\n"); printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); printf("*** so that the correct libraries are found at run-time))\n"); } } return 1; } ],, no_glib=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_glib" = x ; then AC_MSG_RESULT(yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)) ifelse([$2], , :, [$2]) else AC_MSG_RESULT(no) if test "$PKG_CONFIG" = "no" ; then echo "*** A new enough version of pkg-config was not found." echo "*** See http://www.freedesktop.org/software/pkgconfig/" else if test -f conf.glibtest ; then : else echo "*** Could not run GLIB test program, checking why..." ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GLIB_CFLAGS" LIBS="$LIBS $GLIB_LIBS" AC_TRY_LINK([ #include #include ], [ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ], [ echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GLIB or finding the wrong" echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ], [ echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means GLIB is incorrectly installed."]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi GLIB_CFLAGS="" GLIB_LIBS="" GLIB_GENMARSHAL="" GOBJECT_QUERY="" GLIB_MKENUMS="" ifelse([$3], , :, [$3]) fi AC_SUBST(GLIB_CFLAGS) AC_SUBST(GLIB_LIBS) AC_SUBST(GLIB_GENMARSHAL) AC_SUBST(GOBJECT_QUERY) AC_SUBST(GLIB_MKENUMS) rm -f conf.glibtest ]) dnl dnl JH_ADD_CFLAG(FLAG) dnl checks whether the C compiler supports the given flag, and if so, adds dnl it to $CFLAGS. If the flag is already present in the list, then the dnl check is not performed. AC_DEFUN([JH_ADD_CFLAG], [ case " $CFLAGS " in *@<:@\ \ @:>@$1@<:@\ \ @:>@*) ;; *) save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $1" AC_MSG_CHECKING([whether [$]CC understands $1]) AC_TRY_COMPILE([], [], [jh_has_option=yes], [jh_has_option=no]) AC_MSG_RESULT($jh_has_option) if test $jh_has_option = no; then CFLAGS="$save_CFLAGS" fi ;; esac]) dnl AM_CHECK_PYMOD(MODNAME [,SYMBOL [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]]]) dnl Check if a module containing a given symbol is visible to python. AC_DEFUN([AM_CHECK_PYMOD], [AC_REQUIRE([AM_PATH_PYTHON]) py_mod_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'` AC_MSG_CHECKING(for ifelse([$2],[],,[$2 in ])python module $1) AC_CACHE_VAL(py_cv_mod_$py_mod_var, [ ifelse([$2],[], [prog=" import sys try: import $1 except ImportError: sys.exit(1) except: sys.exit(0) sys.exit(0)"], [prog=" import $1 $1.$2"]) if $PYTHON -c "$prog" 1>&AC_FD_CC 2>&AC_FD_CC then eval "py_cv_mod_$py_mod_var=yes" else eval "py_cv_mod_$py_mod_var=no" fi ]) py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"` if test "x$py_val" != xno; then AC_MSG_RESULT(yes) ifelse([$3], [],, [$3 ])dnl else AC_MSG_RESULT(no) ifelse([$4], [],, [$4 ])dnl fi ]) dnl a macro to check for ability to create python extensions dnl AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE]) dnl function also defines PYTHON_INCLUDES AC_DEFUN([AM_CHECK_PYTHON_HEADERS], [AC_REQUIRE([AM_PATH_PYTHON]) AC_MSG_CHECKING(for headers required to compile python extensions) dnl deduce PYTHON_INCLUDES py_prefix=`$PYTHON -c "import sys; print sys.prefix"` py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"` if test -x "$PYTHON-config"; then PYTHON_INCLUDES=`$PYTHON-config --includes 2>/dev/null` else PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}" if test "$py_prefix" != "$py_exec_prefix"; then PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}" fi fi AC_SUBST(PYTHON_INCLUDES) dnl check if the headers exist: save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES" AC_TRY_CPP([#include ],dnl [AC_MSG_RESULT(found) $1],dnl [AC_MSG_RESULT(not found) $2]) CPPFLAGS="$save_CPPFLAGS" ]) pygtk-2.24.0/PKG-INFO.in0000644000175000017500000000215711545325344011373 00000000000000Metadata-Version: 1.0 Name: PyGTK Version: @VERSION@ Summary: Python bindings for GTK Home-page: http://www.pygtk.org/ Author: James Henstridge Author-email: james@daa.com.au Maintainer: Johan Dahlin Maintainer-email: johan@gnome.org License: GNU LGPL Download-url: ftp://ftp.gnome.org/pub/GNOME/sources/pygtk/@PYGTK_MAJOR_VERSION@.@PYGTK_MINOR_VERSION@/pygtk-@VERSION@.tar.gz Description: PyGTK allows you to write full featured GTK programs in Python. It is targetted at GTK 2.x, and can be used in conjunction with gnome-python to write Gnome applications. Platform: POSIX, Windows Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: X11 Applications :: GTK Classifier: Environment :: Win32 (MS Windows) Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL) Classifier: Operating System :: POSIX Classifier: Operating System :: Microsoft :: Windows Classifier: Programming Language :: C Classifier: Programming Language :: Python Classifier: Topic :: Software Development :: Libraries :: Python Modules pygtk-2.24.0/MANIFEST.in0000644000175000017500000000060411545325344011422 00000000000000exclude atk.c pango.c gtk/gtk.c gtk/gdk.c gtk/libglade.c include ChangeLog AUTHORS COPYING MAPPING NEWS README THREADS TODO include MANIFEST.in include pygobject.h pygobject-private.h include *.defs *.override include pygtk.py pygtk-2.0.pc.in include dsextras.py recursive-include gtk *.override *.defs *.h recursive-include examples README *.py *.xpm global-exclude */CVS/* .cvsignore pygtk-2.24.0/atk.override0000644000175000017500000005346711545325344012223 00000000000000/* -*- Mode: C; c-basic-offset: 4 -*- * pygtk- Python bindings for the GTK toolkit. * Copyright (C) 1998-2003 James Henstridge * * atk.override: overrides for the ATK library * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ %% headers #define NO_IMPORT_PYGOBJECT #include "pygobject.h" #include #include #include #include %% include atkrectangle.override %% modulename atk %% import gobject.GObject as PyGObject_Type %% ignore atk_text_free_ranges AtkObjectFactory__do_create_accessible AtkObjectFactory__proxy_do_create_accessible AtkUtil__do_add_global_event_listener AtkUtil__proxy_do_add_global_event_listener AtkUtil__do_remove_global_event_listener AtkUtil__proxy_do_remove_global_event_listener AtkUtil__do_add_key_event_listener AtkUtil__proxy_do_add_key_event_listener AtkUtil__do_remove_key_event_listener AtkUtil__proxy_do_remove_key_event_listener %% ignore-glob *_get_type %% override atk_relation_new kwargs static int _wrap_atk_relation_new (PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "targets", "relationship", NULL }; AtkObject **targets; int relationship, count, i; PyObject *py_targets; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "Oi:relation_new", kwlist, &py_targets, &relationship)) return -1; if (!PySequence_Check(py_targets)) { PyErr_SetString(PyExc_TypeError, "targets argument must be a non-empty sequence"); return -1; } if ((count = PySequence_Length(py_targets)) == 0) { PyErr_SetString(PyExc_ValueError, "targets argument must be a non-empty sequence"); return -1; } targets = g_new(AtkObject *, count); for (i = 0; i < count; i++) { PyObject *item = PySequence_GetItem(py_targets, i); Py_DECREF(item); /* PySequence_GetItem INCREF's */ if (!pygobject_check(item, &PyAtkObject_Type)) { PyErr_SetString(PyExc_TypeError, "targets argument must be a sequence of AtkObjects."); g_free(targets); return -1; } targets[i] = (AtkObject *) pygobject_get(item); } self->obj = (GObject *) atk_relation_new(targets, count, relationship); g_free(targets); pygobject_register_wrapper((PyObject *) self); return 0; } %% override atk_component_get_extents kwargs static PyObject * _wrap_atk_component_get_extents(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "coord_type", NULL }; gint x, y, width, height; AtkCoordType coord_type; PyObject *py_coord_type; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:atk.Component.get_extents", kwlist, &py_coord_type)) return NULL; if (pyg_enum_get_value(ATK_TYPE_COORD_TYPE, py_coord_type, (gint *)&coord_type)) return NULL; atk_component_get_extents(ATK_COMPONENT(self->obj), &x, &y, &width, &height, coord_type); return Py_BuildValue("(iiii)", x, y, width, height); } %% override atk_component_get_position kwargs static PyObject * _wrap_atk_component_get_position(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "coord_type", NULL }; gint x, y; AtkCoordType coord_type; PyObject *py_coord_type; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:atk.Component.get_position", kwlist, &py_coord_type)) return NULL; if (pyg_enum_get_value(ATK_TYPE_COORD_TYPE, py_coord_type, (gint *)&coord_type)) return NULL; atk_component_get_position(ATK_COMPONENT(self->obj), &x, &y, coord_type); return Py_BuildValue("(ii)", x, y); } %% override atk_component_get_size noargs static PyObject * _wrap_atk_component_get_size(PyGObject *self) { gint width, height; atk_component_get_size(ATK_COMPONENT(self->obj), &width, &height); return Py_BuildValue("(ii)", width, height); } %% override atk_editable_text_set_run_attributes kwargs static PyObject * _wrap_atk_editable_text_set_run_attributes(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "attrib_set", "start_offset", "end_offset", NULL }; gint start, end, n_attrs, i; gboolean ret; AtkAttributeSet *attrib_set = NULL; PyObject *py_attrib_set; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "Oii:atk.EditableText.set_run_attributes", kwlist, &py_attrib_set, &start, &end)) return NULL; if (!(py_attrib_set = PySequence_Fast(py_attrib_set, "attrib_set must be a sequence"))) return NULL; n_attrs = PySequence_Fast_GET_SIZE(py_attrib_set); for (i = 0; i < n_attrs; i++) { PyObject *item = PySequence_Fast_GET_ITEM(py_attrib_set, i); AtkAttribute *attr = g_new0(AtkAttribute, 1); if (!PyArg_ParseTuple(item, "ss", &attr->name, &attr->value)) { PyErr_Clear(); PyErr_SetString(PyExc_TypeError, "attrib_set items should be (string,string)"); g_free(attr); g_slist_foreach(attrib_set, (GFunc)g_free, NULL); g_slist_free(attrib_set); Py_DECREF(py_attrib_set); return NULL; } attrib_set = g_slist_append(attrib_set, attr); } ret = atk_editable_text_set_run_attributes(ATK_EDITABLE_TEXT(self->obj), attrib_set, start, end); g_slist_foreach(attrib_set, (GFunc)g_free, NULL); g_slist_free(attrib_set); Py_DECREF(py_attrib_set); return PyBool_FromLong(ret); } %% override atk_editable_text_insert_text kwargs static PyObject * _wrap_atk_editable_text_insert_text(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "string", "length", "position", NULL }; gint length, position; const gchar *string; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "sii:atk.EditableText.insert_text", kwlist, &string, &length, &position)) return NULL; atk_editable_text_insert_text(ATK_EDITABLE_TEXT(self->obj), string, length, &position); return PyInt_FromLong(position); } %% override atk_image_get_image_size noargs static PyObject * _wrap_atk_image_get_image_size(PyGObject *self) { gint width, height; atk_image_get_image_size(ATK_IMAGE(self->obj), &width, &height); return Py_BuildValue("(ii)", width, height); } %% override atk_image_get_image_position kwargs static PyObject * _wrap_atk_image_get_image_position(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "coord_type", NULL }; gint x, y; AtkCoordType coord_type; PyObject *py_coord_type; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:atk.Image.get_image_position", kwlist, &py_coord_type)) return NULL; if (pyg_enum_get_value(ATK_TYPE_COORD_TYPE, py_coord_type, (gint *)&coord_type)) return NULL; atk_image_get_image_position(ATK_IMAGE(self->obj), &x, &y, coord_type); return Py_BuildValue("(ii)", x, y); } %% override atk_relation_get_target noargs static PyObject * _wrap_atk_relation_get_target (PyGObject *self) { GPtrArray * trgtarray; AtkObject **targets; int i; PyObject *py_targets; trgtarray = atk_relation_get_target(ATK_RELATION(self->obj)); py_targets = PyList_New(trgtarray->len); targets = (AtkObject**)trgtarray->pdata; for (i = 0; i < trgtarray->len; i++) { PyObject *item = pygobject_new((GObject*)targets[i]); PyList_SetItem(py_targets, i, item); } return py_targets; } %% override atk_state_set_add_states kwargs static PyObject * _wrap_atk_state_set_add_states(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "types", NULL }; AtkStateType *types; gint count, i; PyObject *py_types; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:atk.StateSet.add_states", kwlist, &py_types)) return NULL; if (!(py_types = PySequence_Fast(py_types, "types must be a sequence"))) return NULL; count = PySequence_Fast_GET_SIZE(py_types); types = g_new0(AtkStateType, count); for (i = 0; i < count; i++) { if (pyg_enum_get_value(ATK_TYPE_STATE_TYPE, PySequence_Fast_GET_ITEM(py_types, i), (gpointer)&types[i])) { Py_DECREF(py_types); return NULL; } } atk_state_set_add_states(ATK_STATE_SET(self->obj), types, count); Py_DECREF(py_types); Py_INCREF(Py_None); return Py_None; } %% override atk_state_set_contains_states kwargs static PyObject * _wrap_atk_state_set_contains_states(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "types", NULL }; AtkStateType *types; gint count, i; gboolean ret; PyObject *py_types, *py_ret; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:atk.StateSet.contains_states", kwlist, &py_types)) return NULL; if (!(py_types = PySequence_Fast(py_types, "types must be a sequence"))) return NULL; count = PySequence_Fast_GET_SIZE(py_types); types = g_new0(AtkStateType, count); for (i = 0; i < count; i++) { if (pyg_enum_get_value(ATK_TYPE_STATE_TYPE, PySequence_Fast_GET_ITEM(py_types, i), (gpointer)&types[i])) { Py_DECREF(py_types); return NULL; } } ret = atk_state_set_contains_states(ATK_STATE_SET(self->obj), types, count); if (ret) py_ret = Py_True; else py_ret = Py_False; Py_DECREF(py_types); Py_INCREF(py_ret); return py_ret; } %% override atk_table_get_selected_columns noargs static PyObject * _wrap_atk_table_get_selected_columns(PyGObject *self) { gint *selected, ret, i; PyObject *py_selected; ret = atk_table_get_selected_columns(ATK_TABLE(self->obj), &selected); py_selected = PyTuple_New(ret); for (i = 0; i < ret; i++) { PyTuple_SetItem(py_selected, i, PyInt_FromLong(selected[i])); } g_free(selected); return py_selected; } %% override atk_table_get_selected_rows noargs static PyObject * _wrap_atk_table_get_selected_rows(PyGObject *self) { gint *selected, ret, i; PyObject *py_selected; ret = atk_table_get_selected_rows(ATK_TABLE(self->obj), &selected); py_selected = PyTuple_New(ret); for (i = 0; i < ret; i++) { PyTuple_SetItem(py_selected, i, PyInt_FromLong(selected[i])); } g_free(selected); return py_selected; } %% override atk_text_get_text_after_offset kwargs static PyObject * _wrap_atk_text_get_text_after_offset(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "offset", "boundary_type", NULL }; gchar *text; gint start, end, offset; AtkTextBoundary boundary; PyObject *py_boundary; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "iO:atk.Text.get_text_after_offset", kwlist, &offset, &py_boundary)) return NULL; if (pyg_enum_get_value(ATK_TYPE_TEXT_BOUNDARY, py_boundary, (gpointer)&boundary)) return NULL; text = atk_text_get_text_after_offset(ATK_TEXT(self->obj), offset, boundary, &start, &end); return Py_BuildValue("(s#ii)", text, (Py_ssize_t) (end - start), start, end); } %% override atk_text_get_text_at_offset kwargs static PyObject * _wrap_atk_text_get_text_at_offset(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "offset", "boundary_type", NULL }; gchar *text; gint start, end, offset; AtkTextBoundary boundary; PyObject *py_boundary; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "iO:atk.Text.get_text_at_offset", kwlist, &offset, &py_boundary)) return NULL; if (pyg_enum_get_value(ATK_TYPE_TEXT_BOUNDARY, py_boundary, (gpointer)&boundary)) return NULL; text = atk_text_get_text_at_offset(ATK_TEXT(self->obj), offset, boundary, &start, &end); return Py_BuildValue("(s#ii)", text, (Py_ssize_t) (end - start), start, end); } %% override atk_text_get_text_before_offset kwargs static PyObject * _wrap_atk_text_get_text_before_offset(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "offset", "boundary_type", NULL }; gchar *text; gint start, end, offset; AtkTextBoundary boundary; PyObject *py_boundary; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "iO:atk.Text.get_text_before_offset", kwlist, &offset, &py_boundary)) return NULL; if (pyg_enum_get_value(ATK_TYPE_TEXT_BOUNDARY, py_boundary, (gpointer)&boundary)) return NULL; text = atk_text_get_text_before_offset(ATK_TEXT(self->obj), offset, boundary, &start, &end); return Py_BuildValue("(s#ii)", text, (Py_ssize_t) (end - start), start, end); } %% override atk_text_get_character_extents kwargs static PyObject * _wrap_atk_text_get_character_extents(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "offset", "coords", NULL }; gint offset, x, y, width, height; AtkCoordType coords; PyObject *py_coords; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "iO:atk.Text.get_character_extents", kwlist, &offset, &py_coords)) return NULL; if (pyg_enum_get_value(ATK_TYPE_COORD_TYPE, py_coords, (gpointer)&coords)) return NULL; atk_text_get_character_extents(ATK_TEXT(self->obj), offset, &x, &y, &width, &height, coords); return Py_BuildValue("(iiii)", x, y, width, height); } %% override atk_text_get_run_attributes kwargs static PyObject * _wrap_atk_text_get_run_attributes(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "offset", NULL }; gint offset, start, end; AtkAttributeSet *attribs; PyObject *py_attribs; gint count, i; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "iO:atk.Text.get_run_attributes", kwlist, &offset)) return NULL; attribs = atk_text_get_run_attributes(ATK_TEXT(self->obj), offset, &start, &end); count = g_slist_length(attribs); py_attribs = PyTuple_New(count); for (i = 0; i < count; i++) { AtkAttribute *attr = g_slist_nth_data(attribs, i); PyTuple_SetItem(py_attribs, i, Py_BuildValue("(ss)", attr->name, attr->value)); } atk_attribute_set_free(attribs); return Py_BuildValue("(Nii)", py_attribs, start, end); } %% override atk_text_get_default_attributes noargs static PyObject * _wrap_atk_text_get_default_attributes(PyGObject *self) { AtkAttributeSet *attribs; PyObject *py_attribs; gint count, i; attribs = atk_text_get_default_attributes(ATK_TEXT(self->obj)); count = g_slist_length(attribs); py_attribs = PyTuple_New(count); for (i = 0; i < count; i++) { AtkAttribute *attr = g_slist_nth_data(attribs, i); PyTuple_SetItem(py_attribs, i, Py_BuildValue("(ss)", attr->name, attr->value)); } atk_attribute_set_free(attribs); return py_attribs; } %% override atk_text_get_bounded_ranges kwargs static PyObject * _wrap_atk_text_get_bounded_ranges(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "rect", "coord_type", "x_clip_type", "y_clip_type", NULL }; AtkRectangle rect; AtkCoordType coord; AtkTextClipType x_clip, y_clip; AtkTextRange **ranges, *range; PyObject *py_rect, *py_coord, *py_x_clip, *py_y_clip, *py_ranges; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOOO:atk.Text.get_bounded_ranges", kwlist, &py_rect, &py_coord, &py_x_clip, &py_y_clip)) return NULL; if (pyatk_rectangle_from_pyobject(py_rect, &rect)) return NULL; if (pyg_enum_get_value(ATK_TYPE_COORD_TYPE, py_coord, (gpointer)&coord)) return NULL; if (pyg_enum_get_value(ATK_TYPE_TEXT_CLIP_TYPE, py_x_clip, (gpointer)&x_clip)) return NULL; if (pyg_enum_get_value(ATK_TYPE_TEXT_CLIP_TYPE, py_y_clip, (gpointer)&y_clip)) return NULL; ranges = atk_text_get_bounded_ranges(ATK_TEXT(self->obj), (AtkTextRectangle*)&rect, coord, x_clip, y_clip); py_ranges = PyList_New(0); while ((range = *ranges++)) { PyObject *py_range; py_rect = pyg_boxed_new(ATK_TYPE_RECTANGLE, (AtkRectangle*)&range->bounds, TRUE, TRUE); py_range = Py_BuildValue("(Niis)", py_rect, range->start_offset, range->end_offset, range->content); PyList_Append(py_ranges, py_range); Py_DECREF(py_range); } atk_text_free_ranges(ranges); return py_ranges; } %% override atk_text_get_selection kwargs static PyObject * _wrap_atk_text_get_selection(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "selection_num", NULL }; gchar *text; gint start, end, selection_num; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "iO:atk.Text.get_selection", kwlist, &selection_num)) return NULL; text = atk_text_get_selection(ATK_TEXT(self->obj), selection_num, &start, &end); return Py_BuildValue("(s#ii)", text, (Py_ssize_t) (end - start), start, end); } %% override atk_text_get_range_extents kwargs static PyObject * _wrap_atk_text_get_range_extents(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "start_offset", "end_offset", "coord_type", NULL }; gint start, end; AtkCoordType coord; AtkTextRectangle rect; PyObject *py_coord; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "iiO:atk.Text.get_range_extents", kwlist, &start, &end, &py_coord)) return NULL; if (pyg_enum_get_value(ATK_TYPE_COORD_TYPE, py_coord, (gpointer)&coord)) return NULL; atk_text_get_range_extents(ATK_TEXT(self->obj), start, end, coord, &rect); return pyg_boxed_new(ATK_TYPE_RECTANGLE, (AtkRectangle*)&rect, TRUE, TRUE); } %% override atk_value_get_current_value noargs static PyObject * _wrap_atk_value_get_current_value(PyGObject *self) { GValue value = { 0, }; PyObject *ret; atk_value_get_current_value(ATK_VALUE(self->obj), &value); ret = pyg_value_as_pyobject(&value, TRUE); g_value_unset(&value); return ret; } %% override atk_value_get_maximum_value noargs static PyObject * _wrap_atk_value_get_maximum_value(PyGObject *self) { GValue value = { 0, }; PyObject *ret; atk_value_get_maximum_value(ATK_VALUE(self->obj), &value); ret = pyg_value_as_pyobject(&value, TRUE); g_value_unset(&value); return ret; } %% override atk_value_get_minimum_value noargs static PyObject * _wrap_atk_value_get_minimum_value(PyGObject *self) { GValue value = { 0, }; PyObject *ret; atk_value_get_minimum_value(ATK_VALUE(self->obj), &value); ret = pyg_value_as_pyobject(&value, TRUE); g_value_unset(&value); return ret; } %% override atk_value_set_current_value kwargs static PyObject * _wrap_atk_value_set_current_value(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "value", NULL }; GValue value = { 0, }; PyObject *ret, *py_value; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:atk.Value.set_current_value", kwlist, &py_value)) return NULL; if (pyg_value_from_pyobject(&value, py_value)) { PyErr_SetString(PyExc_TypeError, "unable to convert value"); return NULL; } if (atk_value_set_current_value(ATK_VALUE(self->obj), &value)) ret = Py_True; else ret = Py_False; g_value_unset(&value); Py_INCREF(ret); return ret; } pygtk-2.24.0/depcomp0000755000175000017500000004426711545325700011252 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2009-04-28.21; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free # Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by `PROGRAMS ARGS'. object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputing dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u="sed s,\\\\\\\\,/,g" depmode=msvisualcpp fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add `dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: pygtk-2.24.0/NEWS0000644000175000017500000017546511545325546010411 00000000000000pygtk-2.24.0 01-Apr-2011 - Many many documentation improvements and updates (Dieter Verfaillie) - Add --without-glade configure option. No change to current behaviour - Small setup.py fixes pygtk-2.23.1 12-Mar-2011 - Many many documentation improvements and updates (Dieter Verfaillie) pygtk-2.23.0 22-Feb-2011 - Many windows build fixes (Dieter Verfaillie, #371317) - Fix mainloop hangs with signalfd (Philippe, Juha, Dieter, #638780, #640738) - Fix TypeError when running tests (Pacho, Gilles, Tomeu, Martin, Dieter, #636589) - gtk.gdk.GC.set_clip_mask() should accept None (Dieter, #638994) - gtk.AboutDialog.set_program_name() should accept None (Dieter) - Add "import gtk; gtk.require('2.0')" statements to the examples (Dieter) - Add GTK-2.24 API (John Stowers) pygtk-2.22.0 25-Sep-2010 - Fix build with Python 2.5 (Chenthill) - Add final GTK/GDK-2.22 API (John Stowers) - Add missing GDK-2.18 API (John Stowers) pygtk-2.21.0 15-Jul-2010 - Bump version number so next stable release will be aligned with the final gtk+-2.0 release (gtk+-2.22) - Wrap new API added in GTK/GDK 2.21/2.22 (John Stowers) - Wrap new API added in GTK/GDK 2.20 (John Stowers) - Add forgotten API from GTK/GDK 2.12/14/16/18/20 (John Stowers) pygtk-2.17.0 26-Dec-2009 - Some docs improvements (Gian Mario) - Wrap new API added in GTK/GDK 2.18 (Gian Mario) - Release GIL in several gdk.Pixbuf methods (Paul, #591726) - Fix override for gtk.TreeSortable.do_get_sorted_column_id (Paul) - Make it possible to implement gtk.TreeSortable to some extent (Paul) - Fix wrong gtk.gdk.color_from_hsv definition (Arun Raghavan, #594347) - Plug memory leaks in a few Pango Cairo functions (Paul, #599730) - Plug a huge leak in gtk.Widget.get_snapshot() (Benjamin Berg, #596612) - Undeprecate gtk.Toolbar.(un)set_icon_size() again (Paul) pygtk-2.16.0 23-Aug-2009 - Allow to use automake 1.11 (Paolo Borelli) - Remove compiler warnings (Gian) - Add gtk.gdk.CURRENT_TIME constant (Paul) - Fix gtk.IMContext().set_client_window() (Gian) - Some docs fix (John Finlay) - Fixed invocation of FileChooserDialog in print demo (Pietro Battiston) - Some autotools tweaks (Gian) - Fix arg parsing format typo for gtk_toggle_button_new (John Finlay) - Update some docs to the new 2.16 API (Gian) pygtk-2.15.2 20-Jun-2009 - Rename gtk.Statusbar.remove() to gtk.Statusbar.remove_message (Paul) - Allow pango.Context creation (Paul, #550855) - Make gtk.gdk.Pixbuf.add_alpha accept integers, retaining backward compatibility accepting also chars (Paul, #586094) - Protect window obj from GC in gtk.window_get_toplevels (Gustavo, #574259) - Plug huge number of memory leaks in Pango wrappers (Paul) - Add gtk.gdk.WINDOWING constant (Paul, #555112) - Wrap gdk_pixbuf_apply_embedded_orientation (Chris Wilson) - Modernize constructors of seven more types (Paul) - Don't free a string we don't own (Paul, #585458) - Some docs tweaking (Gian) pygtk-2.15.1 25-May-2009 - (Add HSV support to gtk.gdk.Color objects) - Add floating-point support to gtk.gdk.Color (Paul) - Retire hand-written ChangeLog; autocreate from Git history (Paul) - Fix conditional in docs/Makefile.am (Frederic Peters) - Document that gtk.gdk.GC coordinates are not related to allocation (Paul) - Make pygtk_boxed_unref_shared() also handle Py_None (Paul) - Make gtk.MenuItem.set_submenu accept None (Paul) - Don't run 'fixxref.py' if documentation is not built (Björn Lindqvist) - Apply libtool 2.2 compatibility patch (Gian) - Plug reference leak on main signal watch source (Paul) - Add extra warning against accidental misuse of tree model columns (Paul) - Wrap gtk.Border attributes and constructor (Mariano Suárez-Alvarez) - Make gtk.gdk.Event.time accept 'long' in assignments (Paul) - Wrap gtk.RcStyle attributes (Paul) pygtk-2.15.0 01-May-2009 - Update pygtk to use numpy instead of Numeric (Josselin Mouette, Brian Cameron, #397544) - Update the address of the FSF (Tobias Mueller, #577154) - Wrap gtk_builder_add_objects_from_string and gtk_builder_add_objects_from_file. - Add GTK+ 2.16 API (Gian) - wrap gtk.IconView.convert_widget_to_bin_window_coords (Gian) - add gtk.gdk.Window.redirect_to_drawable (Gian) - add GtkNumberUpLayout enum (Gian) - some method argument fixes (Gian) - add gtk.PrintSettings.[get|set]_number_up_layout (Gian) - Some demo fixes (Gian, Andi Albrecht) - Add various deprecation warnings (Gian Mario) pygtk-2.14.1 06-March-2009 - Return the deserialized string as a new memory buffer (Gustavo, #567747) - Complete docs with 2.14 API (Gian Mario) pygtk-2.14.0 31-January-2009 - Fix a bogus override of python includes in configure.ac (Loïc Minier, #556130) - Fix a memory leak in gdk.draw_indexed_image (Paul, #562991) - split gtkunixprint defs in order to support multiple gtk versions (Gian) - Include (Paul, #550442) - set_parent_window(None) should work (Paul, #551505) - comment out for a while gtk_selection_data_get_data waiting to fix a problem in codegen (Gian) - Remove compiler warnings (Gian) - Update pango examples (Paul, #541476) - TypeError not raised when setting gtk.TreeView adjustment property to None (Paul, #529623) - add __str__ and/or __repr__ to several types (Paul, #526189) pygtk-2.13.0 24-August-2008 - GtkBuilder.add_from_string set the default length to -1 (Johan Dahlin) - UIManager.insert_action_group add default -1 to `pos' (Paul Pogonyshev) - Some tweaks to h2defs (Olivier Crete) - Fix the use of flags in examples (Nathaniel Smith) - GdkPixbuf.save detach from python interpreter while saving (Paul) - Create GdkScreen instance using get_default() (Yevgen Muntyan, #444974) - Add an application example (Johan) - Fix several bugs wrt 'y_root' caused by copy-paste (Paul, #519631) - Unbreak pango/cairo dependency chains (Johan Euphrosine, Johan, #528217) - Add a GdkColor constructor similar to what gtk.gdk.color_parse() does. Raise with useful message in case of wrong arguments (Paul, #527718) - Wrap gdk_region_get_rectangles (Gian Mario Tagliaretti, #517099) - cairo_set_source_pixmap should accept any drawable (Gian, #491256) - GdkEvent wrap is_modifier for key press/release, (Gian, #367970) - Wrap the requisition field of GtkWidget (Gian, #369311) - Wrap GtkBorder fields (Gian, #484030) - Wrap region field for expose event (Gian, #495933) - Wrap set_tip_area of GtkTooltip (Gian, #485171) - Wrap gdk_notify_startup_complete_with_id (Gian, #454985) - Wrap gtk_widget_set_has_tooltip (Gian, #524987) - gtk.gdk.DragContext.set_icon_widget allow mask to be NULL (Gian #497781) - Add new textscroll example (Yevgen Muntyan, #522047) - Allocate the right amount of memory for PySignalWatchSource (Owen Taylor, #534083) - Move CSS_DATA variable inside the if ENABLE_DOCS block. Makes make work if --enable-docs=no is specified and pygobject docs are not available. (Björn Lindqvist, #536077) - Allow None in GtkRecentAction constructor params (Gian, #536882) - Allow None in gtk.recent_action_new_for_manager params (Gian) - Ship tooltip.py example in pygtk-demo (Gian) - Deprecate gtk.FileSelection (Johan) - Add a gtk.FileChooserDialog get_action method to workaround an issue with the same mothos of gtk.Widget being called (Gian, #534042) - Wrap gtk.show_about_dialog() (Christopher Aillon, #167603) - Fix 'use_underline' being ignored if neither 'text' nor 'stock' is set in GtkButton constructor (Paul, #524187) - Wrap gtk.TreeView.get_tooltip_context (Gian, #530145) - Check that argument is a subclass of gtk.MenuItem or gtk.ToolItem correspondingly (Paul, #533644) - Wrap gtk.IconView.get_tooltip_context (Gian, #539743) - GtkTreeModel get|set fix logic in negative index branch to avoid refcount corruption (Paul, #537459) - GtkPlug fix to work also with integer 'socket_id' argument (Paul, #539365) - Strip GSEAL out from codegen, to avoid us thinking that there are many functions called GSEAL (Murray Cumming) - Move codegen to pygobject (Paul) - CellRenderer.do_start_editing mark return value as optional (Paul #542583) - Modulename should be gtk.glade, not just glade (Johan) - Add GTK+ 2.14 API in PyGTK (Gian, #544777) - Rename configure.in in configure.ac - Fix signal connection in GtkBuilder (Paul, 543768) - Types with well-defined equality semantics are not properly comparable (Paul, 527212) - gtk.CellViewset_background_color accept None (Paul, #546733) - gtk.Widget.get_snapshot accept None and default to None (Björn Lindqvist, Gian, #548349) - Undeprecate gtk.Toolbar.set_icon_size and unset_icon_size following GTK+ see #314172 (Paul) pygtk-2.12.1 03-january-2008 - Fix TreeView coordinate wrappers (Jeremey Katz, #479012) - Allow None in tooltip methods (Gian) - Mention how to build documentation (Björn Lindqvist, #479379) - Plug a leak in GtkContainer.forall (Mark Doffman, #480306) - Add null-ok for accelerator function (Yevgen Muntyan) - Install gtk-extrafuncs.defs (Matthew Barnes, #380020) - Fix x86-64 crash (Dan Winship, #500508) - Plug gtk.Widget.render_icon leak (Gustavo, #502871) - Fix hypertext demo (Richard Hult, #503107) - Correct wrong command line (Sebastien Bacher) - Distribute .m4 files (Ed Catmur) - Release the GIL in pixbuf constructors (Jakub Stachowski, #415611) - Add a new pango extent example (Adam Olsen, Behdad Esfahbod, #400810) - Fix leak in gdk.Pixbuf.flip() (Guillaume Cottenceau) - Accept None in CellRenderer.get_cell_area() (Paul Pogonyshev, #358091) - Fix typo in clipboard.set_with_data (Julien Moutinho) - Add support for PySignal_SetWakeUp thread which avoids unnecessary polling in the main loop for threaded programs (Johan, #481569) pygtk-2.12.0 16-september-2007 - Make pango bindings more pythonic (Johan Dahlin) - Remove X11 specific calls from non-X11 builds (Gustavo Carneiro, #471804) - Allow string parameters to have default empty string ("") (John Finlay) - Make pango.Context non-instantiable (Gustavo, #472908) - defsgen.py fixes (Mark Doffman, John Finlay, #473576) - Docs build fixes (John Finlay) pygtk-2.11.0 27-august-2007 - Defs file tweaks (Mariano Suarez-Alvarez, Andrew Cowie, Yevgen Muntayan) - Documentation building fixes (Richard Hult, Gustavo) - Improve reverse wrapper (Gustavo, Sebastien Granjoux, Tim Evans) - Code generator improvements (Gustavo, Yevgen) - Update to Gtk+ 2.12 API (Gian Mario Tagliaretti) - Update to Pango 1.16 API (Gian) - Update to Atk+ 1.12 API (Gian) - Wrap new GtkTreeView coordinate methods (Gian) - Add wrappers for all GtkImage constructors (Gian) - Wrap GtkBuilder (Gian) - Add GtkBuilder and tooltip demons (Gian) - Wrap GtkContainer.do_forall (Paul Pogonyshev) - Add new API to simplify custom GenericTreeModels (Paul) - Allow None to set_focus_child/set_focus (Paul) - Update documentation (Gian, John Finlay) - Make GtkToolTips.tips_data_list always return an empty list (Johan) pygtk-2.10.4 4-februrary-2007 - Documentation build fixes (John Finlay, Gustavo) - Return NULL on error in TextBuffer.register_serialize_format (Paolo Borelli) - Do not overwrite sys.argv (JP Calderone) - Add status icon example (Nikos Kouremenos) - Make it possible to remove rows in the gtk.TreeModel.foreach callback (Gustavo) - Code generator fix for %define (#381389, Manish Singh) - Duplicate GdkEvent.string member when setting it (#382428, Gustavo, John Ehresman) - Make it possible to use automake 1.10 (Kjartan Maraas) - distutils build fixes (#385934, Sebastien Bacher, Michael Bienia) - Allow None to be passed into gdk.Display (Johan) - Undeprecate gtk.container_class_list_child_properties (Johan) - Fix memory leak in gtk.Container.child_get (Gian Mario Tagliaretti) pygtk-2.10.3 3-october-2006 - Fix a crasher bug introduced in 2.10.2 (Gustavo) - Make PyGTK work with Python 2.5 and 64-bit (#337368, Gustavo) (when used in conjunction with the soon-to-be-released PyGObject 2.12.2) pygtk-2.10.2 3-october-2006 - distutils / win32 compilation fixes (Cedric Gustin) - gtk.TreeSelection.selected_foreach bug fix (#347273, Gustavo) - Fix compilation older C compilers (John Ehresman) pygtk-2.10.0 4-september-2006 - Issue a warning when a DISPLAY is not set (#316877, Johan, Jeremey Katz) - Copy style.css from pygobject docs when installing docs. (#351385 Gian Mario Tagliaretti) - Include the built docs in the tarball (Johan) pygtk-2.9.6 8-august-2006 - GtkTreePath can be converted from integers again (#350252, Gustavo, Sebastien Bacher) - Fix parallel build (#350225, Ed Catmur) - Reduce exception abuse in code generator (Gustavo) - Documentation improvements (Johan, John) pygtk-2.9.5 6-august-2006 - Make it possible to build with GTK+ 2.10 (#350008, Joseph Sacco) - Make sure dir(gtk.keysyms) work again (#349892, Johan, John) - reloading the gtk module works again (#349026, Johan, Alexander Larsson) pygtk-2.9.4 4-august-2006 - Include John Finlay's PyGTK reference manual (Johan, John) - Setters and getters for GtkWidget.activate_signal (#331445, Gustavo) - GtkToolItemType setter/getter (#331355, Gustavo) - Code generator fixes (Gustavo, Johan, John, Yevgen Muntyan, Gustavo) - Add more gtk+ 2.10 API (#337011, John, Sebastian Pölsterl) - Don't copy treeiters in callbacks (#347273, John, Stefano Maggiolo) - Provide full information for GtkTreeSelection.set_select_function (#340475 John, Wouter Bolsterlee) - Export less symbols and reduce the size of the libraries (#347825, Rafael Espíndola) - Allow negative values for GtkTreeModel.set/getitem (#311852, Baiju M) - Much improved interface/virtual method support (John) - Remove evil 100ms timeout timer (#348937, Gustavo) pygtk-2.9.3 12-july-2006 - Update to latest gtk+ 2.10 API changes (#345447, #345623, Newren, Peters) - Many more new gtk+ 2.10 APIs wrapped (Finlay) - Wrap gtk_widget_class_find_style_property (Finlay) - gtk.gdk.CairoContext.rectangle bug fix (Gustavo) - Update defs for atk 1.8 (Finlay) - Misc. module cleanups (Dahlin) - New pango APIs wrapped (Finlay) - Fix refcount error in gtk.Clipboard (#343960, Gustavo, Finlay) - Enable GDK X11-specific APIs available also with gtk+ 2.8 (Gustavo) - Lazy loading of the gtk.keysyms module (Johan Dahlin) pygtk-2.9.2 15-june-2006 - Fix a codegen bug that prevent build of other extensions (344845, Gustavo) - Builds with pycairo 1.1.6 (344957, Gustavo) - gtk.TextBuffer rich text copy and serialization (Finlay) - Correct Print Editor example (Gustavo) pygtk-2.9.1 13-june-2006 - Allow gtk.TreeSortable.set_default_sort_func callback to be None (Johan, Patrick O'Brien) - Add API to unset the g_log handlers (#323786, Johan) - Allow the gtk module to be imported without DISPLAY (#316877, Johan) - Code cleanup and fixes considering Coverity reports (Johan) - Add codegen support for const-Object return type (#169204, Gustavo) - Add codgen support for unblocking threads around method calls (Gustavo) - Wrap gdk_event_handler_set (Johan) - Codegen reverse wrapper bug fix (#340162, Yevgen Muntyan) - Wrap GdkRegion (John Ehresman) - Add codegen support for ignore-type statement in override (Johan) - Add conditional support for gtk+ 2.10 API, especially printing (Johan, Finlay, Gustavo) - Complete the support for gtk.Container virtual methods (#341641, Gustavo) - Fix misc. reference leaks (Finlay, Gustavo) - Allow None parameter in pangocairo.CairoContext.set_font_options (Finlay) - Complete the support for gtk.CellRenderer virtual methods (#339431, Gustavo) - IconView.set_cursor method params 'cell' and 'start_editing' made optional (#343039, Ross Burton, Finlay) - Wrap a few more gdk_cairo_* methods (Finlay) - Add a 'selection' field to gdk.OWNER_CHANGE events (Finlay) - Allow None in gtk.Entry.set_inner_border() (Finlay) - gtk.Clipboard rich text methods (Finlay) - Add gtk.MessageDialog.set_image() (Finlay) - Wrap gtk_link_button_set_uri_hook() (Finlay) - Allow None in gtk.Widget.input_shape_combine_mask() (Finlay) - Allow gtk.LinkButton() constructor to optionally receive a label (Finlay) - Allow None in gtk.Label.set_mnemonic_widget() (Johan) - Wrap a bunch of X11 specific gdk methods (Gustavo) - Add gtk.SizeGroup.get_widgets() (Finlay) - Wrap gtk_style_lookup_color() (Finlay) - Wrap a bunch of gtk treeview grid lines methods (Finlay) - Better Drag and drop API support (Finlay) - Add -I option to codegen (defs search path) (Gustavo) pygtk-2.9.0 04-april-2006 - Remove gobject, pygobject is now a hard dependency - Set encoding in pango instead of gtk (328031) - Wrap gdk.Screen.get_rgba_colormap/get_rgbma_visual (328996, Marco Cabizza) - Remove private gtk wrappers (321476) - Add a bunch of missing wrappers (316881, John Finlay) - Add inout support in reverse wrappers (335964, Gustavo) - Update h2defs to allow whitespace before parenthesis (317124) - Make it possible to reimplement interfaces (334986, Gustavo) - Allow log_handler to be called when python is not initialized (334188, Gustavo) - Support for const object args (wollny@cbs.mpg.de, Gustavo) - Export pygtk tree model api (318021, Gustavo) - Allow overrides to be in base classes (327715, Gustavo) - Wrap a pango cairo font options acecssors (328108, Rauli Ruohonen) - Add GDK_PARENT_RELATIVE relative handling (320248, Johan, Nikos Kouremenos) - Improve pixbuf demo (327931, Ben Caradoc-Davies) - Set default markup accel marker to \x00 (329658, Johan, Johan Svedberg) - Set 1 as default argument to SpinButton.spin() (325452, Sebastian Rittau) - Wrap gdk.Drawable.gdk_draw_indexed_image (333431, Johan, Hamish Moffatt) - Mark rowreference.free() as deprecated (309811, Gustavo) - Rename name of first keyword argument to pango.LayoutLine.index_to_x (316581, Gustavo, John Finlay) - Run reindent on all python code (325320, Johan) - Improve generictreemodel example (311459, Steven Kennedy) - Wrap gdk.Pixbuf.rotate_simple (314164, Karel Vervaeke) - Use in argument in gtk.TreeView.cell_get_size (326357, John Ehresman) pygtk-2.8.5: 30-march-2006 - String list bug fix (Christopher Aillon) - Improved examples (Johan) - Proper refcounting in gdk.Window constructor (John Ehresman) - Fix a bunch of reference leaks (Gustavo) - __init__.py fixes for pydoc (Johan) - gtk.Dialog.new_with_buttons leak (#332771, Gustavo) pygtk-2.8.4: 11-january-2006 - Re-include gobject wrappers if pygobject is not found (Gustavo, Johan) - gtk.IconView should implement GtkCellLayout (Johan) - Always install pygtk-2.0.pc pygtk-2.8.3: 09-january-2006 - Split out gobject wrappers into a separate module and depend on pygobject 2.9.0 (Johan) - Bug fixes (Bob Gibbs, Johan, Gustavo) - Size group example (Johan) - Plug mem leaks (Gustavo) - Build cairo on win32 (Cedric) pygtk-2.8.2: 09-october-2005 - GIOChannel thread fix (Johan, Ole Andre Vadla Ravnås) pygtk-2.8.1: 03-october-2005 - Bug fixes (Gustavo, Johan) - Improve exceptions when registering properties (Gustavo) - Extend warnings (John Ehresman) - Raise exception when working on uninitialized objects (Johan) - Plug libglade leak (Gustavo) - Undeprecate a few gobject functions (Johan) - UINT64 buf fixes (Gustavo, Johan) - GCC 4.0 warnings (Johan) pygtk-2.8.0: 03-september-2005 - GObject metaclass bugfix (John Ehresman) - Double free fix in type_register (Gustavo) - Make it buildable srcdir != buildir (Johan) - Improve GdkRectangle conversion (Tim Evans, Gustavo) - Use automake 1.8 (Johan) pygtk-2.7.4: 24-august-2005 - Container.do_forall implementable in subclasses (Johan) - Bug fixes (John Finlay, Christian Persch, Christopher Allion, Johan, Gustavo) - Build fixes (Stepan Kasal, John Ehresman, Johan) pygtk-2.7.3: 10-august-2005 - Build fixes (Johan) - Code generator fixes (Gustavo) - Bug fixes (Johan, Andy, Gustavo) pygtk-2.7.2: 02-august-2005 - Subclass/type registration bug fixes (Gustavo) - Allow gobject to be initialized twice (Yevgen Muntyan) - Deprecating warning bug fixes (Mark McLoughlin) - Bug fixes (Sebastien Bacher, Gustavo, Johan, Manish) pygtk-2.7.1: 21-july-2005 - Update API to Gtk+ 2.7.3 (Johan) - Threading, Enum fixes (Johan - Registration fixes (Gustavo) - Make use of atomic ref counting in glib (Johan) pygtk-2.7.0: 10-july-2005 - GIOChannel wrapper (Gustavo, John Ehresman, Manish) - GSource wrapper (Manish) - Allow creation of python classes through gobject.new (Gustavo, John Ehresman, Benjamin Otte) - Improved GObject property support (Gustavo, Iñaki, Johan) - Improved ParamSpec wrapping (Johan) - Add gdkcairo and pangocairo wrapping, depends on pycairo (Gustavo) - 2.8 API updates (Johan) - Add GObject metaclass, making type_register unnecessary (Gustavo) - C++ compilation fixes (Manish) - Handle longs/ints better (Gustavo) - Support new GType fundamentals (Edward Hervey, Johan) - Improved GType wrapping (Johan) - Support for specifying GType name (Johan) - GtkContainer iterator support (Johan) - Support for subclasses that implements scrolling (Gustavo, Johan) - Bug fixes/Misc fixes (Steve Chaplin, Tim Evans, John Finlay, Cedric Gustin, Edward Hervey, Christian Kirbach, Tuure Laurinolli, Benjamin Otte, Manish Singh, Gian Mario Tagliaretti, Fernando San Martin Woerner) pygtk-2.6.2: 9-may-2005 - Allow None to be sent in to set_group radio widgets (Johan, Lorenzo) - guint/gsize as longs (Gustavo) - Check for exceptions in child_watch (Mark McLoughlin) - Bug fixes (Johan, Manish Singh, John Finaly) pygtk-2.6.1: 15-march-2005 - GtkListStore.insert optimization (Johan) - GtkTreeStore/GtkListStore.reorder leak fix (Johan, Richard Hult) - GParamSpec bug fix (Johan) - Code generator improvements (Anders Carlsson, Johan, Doug Quale) - GCC4 build fixes pygtk-2.6.0: 07-march-2005 - win32 fixes (Cedric Gustin) - remove unnecessary casting (Manish Singh) - updated examples (Johan) pygtk-2.5.4: 23-february-2005 - Much improved GMainloop support (Mark McLoughlin) - Install pygtk-demo (Gustavo) - Deprecate gtk.TRUE/gtk.FALSE (Johan) - win32 build fixes (Cedric Gustin) pygtk-2.5.3: 23-january-2005 - Revert some threading changes (Gustavo) - Build improvements (Johan) - Improve pixmap functions (John F) - GObject type registration fixes (Gustavo) - Code generator fixes (Johan, Gustavo) - Plug mem leaks (Mark McLoughlin) - Flag/Enum bug fixes (Gustavo) pygtk-2.5.2: 10-january-2005 - Improved deprecation messages (Johan) - gtk.idle_add, gtk.timout_add, and others are now deprecated (Johan) - Overriding GTK+ virtual methods (Gustavo) - Interfaces now implementation (Gustavo) - 2.6 merge (Johan, Gian Mario Tagliaretti) - Bug fixes (Adam Hooper, John Finlay, Gustavo, Johan, Tim Evans) - Build system improvens (Johan) pygtk-2.5.1: 23-december-2004 - Remove API removed in Gtk+ 2.6.0 (Gustavo, Johan) - Implement pango.LayoutIter (John) - Build fixes (Johan, Marco Pensenti Gritti) - Update examples (Alan Horkan) - distutils/win32 fixes (Cedric Gustin) pygtk-2.5.0: 29-november-2004 - Port to Gtk+ 2.5.x (Johan, John) - Code generator improvements (Gustavo) pygtk-2.4.1: 04-november-2004 - Bug fixes (Johan, Gustavo, John Finlay) - Allow the headers to be parsable by a C++ compiler - Updated examples (Johan, John) pygtk-2.4.0: 03-october-2004 - Updated examples (John Finlay) - Tiny threading bug fix (John Ehresman) pygtk-2.3.97: 28-september-2004 - Threading fixes (Gustavo, Johan, John E) - Other bug fixes (Gustavo, James, Johan, John, Ehresman, John Finaly, Owen Taylor and Xaiver Ordoquy) - x86_64 build fixes (Jonathan Blandford) - Updated examples (John Finlay) pygtk-2.3.96: 06-august-2004 - Threading fixes (Johan, Gustavo) - Bug fixes (John, Johan, Gustavo) - GEnum/GFlags wrapping improvements - GdkAtom string wrapping (John) - Better boolean support (since we now can require 2.3) pygtk-2.3.95: 02-august-2004 - Flags/Enum fixes (John, Johan) - Bug Fixes (John, John E, Johan, Gustavo) - Improved threading support (Johan) pygtk-2.3.94: 21-july-2004 - bug fixed (Gustavo, Johan, John, Lorenzo) - small enum additions for gazpacho (Johan) - rename GMainLoop, GMainContext back to MainLoop and MainContext pygtk-2.3.93: 19-july-2004 - GtkTreeView updates (John Finlay) - New examples (Johan) - GEnum/GFlags wrapping (Johan) - New (using g_object_new) constructors (Gustavo) - GParamSpec API, for GtkWidget and GtkContainer (Johan) - Unichar/Unicode support (Lorenzo, John Ehresman) - Widget subclassing (Johan, Gustavo, Lorenzo) - GdkEvents changable (Johan) - Warnings (Gustavo, Johan) - Many bugfixes (John Finlay, John Ehresman, Johan, Lorenzo, Gustavo) - Win32/FreeBSD/distutils build fixes (John, Johan) pygtk-2.3.92: 22-may-2004 - Deprecate old function (John Finlay) - Add missing 2.4 api for pango, gdk and gtk (John Finlay): PangoAttrList, PangoFontset, PangoFontFamily, GdkWindow, GdkPixbuf, GdkPixbufLoader, GtkClipboard, GtkTreeView, GtkTreeModel, GtkToolbar - Reference counting fixes (John) - gobject type registration improvements (Gustavo) pygtk-2.3.91: 16-april-2004 - Continue to wrap 2.4 api: GtkActionGroup, GtkColorButton, GtkCellLayout, GtkComboBox, GtkFileChooser, GtkFontButton, GtkIconInfo, Gtk*ToolButton (John Finlay, Johan) - ref GdkWindows on win32 (John Ehresman, Gustavo) - Clean up defs (John) - Deprecate 0.6.x compatibility functions (Johan) - Convert GValueArray to list, not tuple (Gustavo) - Add new demos (Joey Tsai) - Create unknown types on the fly, with interfaces (Johan) - Update spec (Jason Tackaberry, Thomas Vander Stichele) - Support tp_new (Johan) pygtk-2.3.90: 30-march-2004 - Merge in changes for Gtk+ 2.4 (Johan, Xavier) - GtkUIManager, GtkFileChooser, GtkTreeModelFilter, GtkActionGroup, GtkAction, GtkToolbar etc - Export GParamSpec in GObject and support style properties - Distutils win32 fixes (Cedric Gustin) - Fix mainloop related warnings (bug 136731, bug 136705) - Updated examples (Johan) - gdk.atom_intern (Gustavo) - Code generator fixes (Xavier) pygtk-2.2.0: 11-march-2004 - Added support for GTK+ 2.2 APIs, GdkDisplay, GdkScreen, GdkClipboard and GtkWindow (James) - Better and more flexible support for TreeModel and TreeView API (Don Allingham, Benjamin Cama, John Ehresman, Johan, jkluebs@luebsphoto.com) - Better support for gtk.gdk.Pixbuf integration with Numerical arrays (Tim Evans) - Better support for Pygtk generation tools (codegen, m4 macros, h2def, Makefile.am ...) (James, Jon Willeke, Xavier, Johan) - Removed gtkgl bindings (James) - Added gtk.gdk.Eventkey.hardware_code (Johan) - Added gtk.binding_entry_remove and gtk.accel_group_connect (Gustavo) - Don't allow reading non readable properties (James) - And lots of bug fixes: gdk.event_get_axis (Seth Nickell), distutils (Alif Wahid), mem leaks, gtk.Menu.popup (Gustavo) pygtk-2.0.0: 1-September-2003 - Roll version number over to 2.0. - Small fix to gtk.TextView.set_border_window_size() method. - Miscelaneous bug fixes. pygtk-1.99.18: 24-August-2003 - Fix up a duplicate symbol bug in the atk module, that was causing build problems on MacOS X (hopefully the last such problem). - add gtk.glade.set_custom_handler() API, that provides more info to the custom widget callback. Deprecate set_custom_widget_callbacks(). - some other bug fixes. pygtk-1.99.17: 31-July-2003 - Threading support is compiled in by default now. It is necessary to call gtk.threads_init() in order to make use of threading though. There have been a number of fixes to the threading support too. - Fix up some problems with multiple definitions of global variables in gobject module, that was causing problems on Mac OS X. - Wrappers for many new APIs (John Finlay, Naofumi Yasufuku, Johan Dahlin and others). - Improvements to the code generator to give better error messages. - Some fixes to property APIs to work correctly on 64 bit systems, and to handle ATOM type properties. - Fix copyright headers on source files. pygtk-1.99.16: 23-March-2003 - various new functions wrapped. - More threding fixes (Jon Trowbridge) - Reworking of the single instance per GObject code to work better with the Python cycle GC. - more updates to the simplified Python tree model API. - fix error handling in constructors for GtkTreeStore and GtkListStore. - add some inline comments for the APIs for extending pygtk to handle other widget sets. pygtk-1.99.15: 08-February-2003 - distutils support - Code generator improvements (Jeremy Katz) - Threading fixes (Lots of people) - API additions to GtkTextBuffer, GtkTextView and GtkFileSelection - GMainLoop/GMainContext support, you can now run input_add, timeout_add without importing gtk. - libglade now support passing in an instance to signal_autoconnect - pygtk.py import speedup. - Many many bugs fixed. pygtk-1.99.14: 27-December-2002 - update to newer auto-tools (autoconf-2.57, automake-1.7.2, libtool-1.4.3). - many bug fixes and additions of missing APIs. - fix doc generation scripts to match the new style of gtk-doc documentation. - make code generator return either Py_True or Py_False for boolean return functions. This change is only noticable with Python 2.3 alphas. - removal of wrappers for deprecated functions where the deprecated method shadowed the replacement. - wrappers for idle_add, timeout_add, io_add_watch and source_remove to gobject module. Compatibility names are provided in the gtk module. - Many tree and text view wrapper updates from Johan Dahlin and John Finlay. - leak fixes. - Updated examples, including demo for editable cells. - Improved threading support. - Api additions for GdkEvents, TreeSelection, GtkTooltips, libglade, GtkContainer. pygtk-1.99.13: 24-August-2002 - Support parallel install with pygtk >= 0.6.10 - fix initial reference handling for derived GObjects. This also uncovered a few other reference leaks. - Other reference leak fixes from Arjan. - Support building out of the box on windows with mingw32 from Cedric Gustin. pygtk-1.99.12: 23-July-2002 - more win32 compat updates. - simple tree model interfaces added. - added generic cell renderer type. pygtk-1.99.11: 10-July-2002 - int64/uint64 arg handlers in code generator. - some reference leak fixes. - get signal handlers to participate in cyclic garbage collection (thanks to Arjan Molenaar). - correctly reset LC_NUMERIC to "C" when initialising the gtk module. pygtk-1.99.10: 13-May-2002 - support new arg types in code generator. - handle (caller-owns-return) in code generator. - add gtk.compat module that provides similar naming to gtk 1.2 modules. pygtk-1.99.9: 23-April-2002 - Some win32 compatibility fixes merged in from Hans. - update defs file to match final gtk 2.0 APIs. - added gtk.gl wrapper. - refactored code generator, fixing a number of bugs in the process. pygtk-1.99.8: 18-March-2002 - Implement lots of stuff in Pango module. - make class names include module name so that help() output looks nicer. - lots of other functions added. pygtk-1.99.7: 31-January-2002 - add (broken) threading support. Will need fixing one day. - make safe for use with PyMalloc. - split gobjectmodule.c into a number of files. pygtk-1.99.6: 24-December-2001 - add scripts for generating documentation for pygtk. - add __gsignals__ and __gproperties__ sepcial class attributes for defining new signals and properties for an object. - better support for GError. - start of ATK wrapper (msw). pygtk-1.99.5: 26-November-2001 - lots of updates. pygtk-1.99.4: 29-October-2001 - fix up GObject last ref handling for derived types. - other fixes. pygtk-1.99.3: 9-October-2001 - Rename the PyGtkTreeModel to PyGtkGenericTreeModel to avoid name conflicts. - many method wrappers added. - more reference fixes. - adjust code generator so that it outputs #line directives. - move defintions of types (as opposed to functions/methods) to separate files to improve compilation speed. pygtk-1.99.2: 29-September-2001 - switch from ExtensionClass to use Python 2.2's type/class unification. - require Python 2.2a4 pygtk-1.99.1: 20-September-2001 - always use the GType wrapper type to represent GTypes, rather than using ints. - automatically populate modules with constants via introspection. - Switch from gtk.GtkFoo naming to gtk.Foo. pygtk-1.99.0: 10-September-2001 - First cut tarball for 2.0 branch. Lots and lots of changes (since branching in April 2000). - Uses ExtensionClass, and implement GObject wrappers in C code, rather than the two stage wrapper like the 1.2 branch. ---- GTK-1.2 branch ---- pygtk-0.6.11: 23-August-2002 - Fix up libtool patch for older binutils'. - a few bug fixes in some GtkWidget methods. pygtk-0.6.10: 22-August-2002 - Fix up segfaults when using with a Python compiled with pymalloc. - various new wrapper functions added. - Raise exception if gtk_init() fails. - bug fixes. - Support parallel install with PyGTK 2.0. pygtk-0.6.9: 3-Janyary-2002 - always check the return value of functions for NULL values. This fixes a number of problems which caused crashes on exit. - add pygt_version and gtk_version variables. - update to autoconf-2.52/automake-1.5 - many bug fixes (see ChangeLog). pygtk-0.6.8: 23-April-2001 - bug fixes to GtkNotebook, GtkCList. - add some missing methods to GtkWidget - a gdk-pixbuf wrapper module. - install the code generator, so that other wrappers can use it as well. pygtk-0.6.7: 16-February-2001 - added --disable-thread configure argument to turn off thread support even when compiling with a threaded python. - resets LC_NUMERIC back to "C" after calling gtk_set_locale, as this is the standard setting for python, no matter what the locale. - various other bug fixes. pygtk-0.6.6: 7-April-2000 - switched over to using the CVS version of automake rather than my `pyautomake' patches, as CVS automake now has the python support integrated. Libtool is now used to build the extensions, so if there are problems on your platform, it is a libtool problem :) - typo fixes. - new pointer_(un)grab and keyboard_(un)grab methods for GdkWindow. pygtk-0.6.5: 13-March-2000 - more reference leaks fixed. - crashes when changing window properties with 16 or 32 bit data formats fixed. - some libglade wrapper fixes. - various other fixes. pygtk-0.6.4: 16-February-2000 - gnome-python now requires python >= 1.5.2, as it uses the 'N' format tag for PyArg_ParseTuple. - Reference leak fixes. - A few new features. pygtk-0.6.3: 30-September-1999 - if the new gnome-python is installed, the libglade module will load the gnome support. Make sure you remember to import gnome.ui if the glade file contains any gnome widgets. - New methods for GdkWindow objects -- lower, _raise (for stacking order manipulation) and input_get_pointer (for XInput stuff). - A few other bugs have been fixed as well. See ChangeLog for details. pygtk-0.6.2: 9-August-1999 - Threading should work correctly with multiple threads accessing GTK (assuming they use threads_enter/leave). Thanks go to Matt Wilson and Paul Fisher for this code. - A pygtk.h header file is now installed that should make it easier to write extensions to pygtk. - There is now optional support for the gtkglarea widget and the libglade library now. - There is support for gdkrgb functions for rendering rgb and greyscale image data to a drawable. - Optional support for numpy arrays. You can create a GdkImlibImage from a numpy array, and manipulate an image's data as an array. Also there is a gdk_draw_array wrapper that uses gdkrgb to render an array to a drawable. The code for the imlib stuff is based on stuff submitted by Travis Oliphant. - The GdkWindow type now has some methods for manipulating properties, and has an xid attribute for getting the X window ID of the window. - idle_add and timeout_add can now pass extra parameters to the callback, like you can do for signals. Also added a wrapper for signal handlers similar to gtk_signal_connect_object. pygtk-0.6.1: 22-May-1999 - Fixed a few bugs to do with the threading patches I applied in the last release. Threading should now work correctly. pygtk-0.6.0: 25-April-1999 - updated for gtk+-1.2.1. - You can now write multithreaded programs in python (if python was compiled with thread support enabled, of course). This feature is thanks to Duncan Grisby . To use the multithreading, write your program as normal, but before calling any GTK routines from outside the GTK thread (ie. not from a signal handler or timeout/idle func), call threads_enter() before hand, and threads_leave() after. - Various bug fixes. pygtk-0.5.11: 24-February-1999 - Updated for gtk+-1.1.16 - Changes to the style code, so that you can now write to the attributes. There is also a copy() method, which can be used so you don't change the style on other objects. - Some changes so some functions which are supposed to accept NULL arguments will accept None in place of a boxed/string/object argument. - Added a file MAPPING that describes the mapping of GTK onto python. - Various bug fixes. - Pyglade XML parser made more robust. pygtk-0.5.10: 9-February-1999 - Updated for gtk+-1.1.14/15. - Fixed up some selection problems. - Added DnD example translated by Chi-Deok Hwang. - Some ctree fixes. - Some function renamings. - more functionality in the pixmap creation routines (you can create a pixmap if you have a GdkColormap but no GdkWindow). - added GdkWindow.depth attribute. pygtk-0.5.9: - Updated for gtk+-1.1.9 pygtk-0.5.8: 10-December-1998 - I made a mistake during building the last package. I ran cvs co pygtk; aclocal; automake --add-missing; autoconf; configure followed by make dist. Unfortunately, since there was no configure file when I ran automake, it didn't get added to the dist list. - Updated the spec files to match new version. pygtk-0.5.7: 9-December-1998 - Updated for gtk+-1.1.6. Probably not much will change between now and 1.2. - Added GtkCTree, GtkLayout, GtkPlug and GtkSocket widgets. - There has been a renaming of a number of commonly used functions. if you use gtk.py, the old names still work, but give a warning. To get a list of the name changes, see the file $(prefix)/include/gtk/gtkcompat.h - signal connection now uses the gtk_signal_connect_full function, rather than relying on the default marshaller. - The append, prepend and insert methods of the toolbar now return the widget that was added, like the C equivalents do. pygtk-0.5.6: 27-November-1998 - Updated for gtk+-1.1.5. - Renamed Gtkinter.py to gtk.py. This follows the naming scheme of other modules more closely, and is easier for people who prefer to use "import ...". It is also not a big change for people who use "from ... import *". I have included a simple Gtkinter.py module for backward compatibility. - Added a private function PyGtk_RegisterBoxed that can be used to add extra boxed types to the list of those registered in the callback marshals and the like. pygtk-0.5.5: 17-November-1998 - Fixed a small bug in GdkImlib that caused a syntax error (I should have picked this up for the last release). - Removed some function wrappers that are not used anywhere, in order to get pygtk to compile cleanly on newer CVS GTK's. - I forgot to include the wrappings for the new GtkCalendar widget in the previous release. It is in this one. pygtk-0.5.4: 15-November-1998 - updated for gtk+-1.1.3 (so you will need glib-1.1.4 as well). This release adds support for the new DnD functions, support for selection (through the gtk_selection_* functions, which I have mapped to GtkWidget.selection_*) and GdkAtoms, and support for GdkCursors. - To create a new cursor, use the cursor_new or cursor_new_from_pixmap function, and then call the GdkWindow.set_cursor method to attach it to a window. - Added create_pixmap_from_xpm_d function that allows you to embed XPM data into your program for easier distribution. - Updated the GdkImlib module to the features found in imlib-1.8. - Changed the build system, so SWIG is no longer needed. Also now using a modified version of automake to generate the makefiles. - Updated the pyglade code to handle menus and the like. pygtk-0.5.3: 27-September-1998 - Updated for GTK+-1.1.2 (note that this version of gtk requires glib-1.1.3). This version adds the support for the tearoff menus and keyboard navigation of menus (if you use item factory). - This is the version of pygtk you will need for the pygnome wrapper for gnome v0.30 (when I finish writing them). - added events_pending function. Now you can use code like: while events_pending(): mainiteration() to be sure that a scrollbar has been updated. - I have updated the examples/neil/*.py examples to use the GtkItemFactory class. This shows how to make keyboard navigable menus. - Fixed a typo in GtkWindow.set_focus - Fixed signal handler wrapper, so that handlers that return GtkObject classes get the return type converted back to the lower level GtkObjects. Also fixed _gtkbasemodule.c, so that return values from signals get returned to GTK properly. These fixes should allow people to use the GnomeMDI wrappers in pygnome if you change there signal definitions to use GTK_TYPE_OBJECT rather than GTK_TYPE_POINTER (I will ask the author to make this change). pygtk-0.5.2: 31-August-1998 - fixed the ancestory for the GtkScrolledWindow class, fixed the GtkPreview constructor. Fixed some more spots in _gtkmodule.i where I'd used int types instead of the correct enumeration. - added the pyglade package. This will allow you to put a bit of code behind interfaces built with GLADE, which can be found at http://www.comp.lancs.ac.uk/~damon/builder/index.html In my current code, I have implemented most widgets on the palette, although the .glade file reader is a bit fragile. Note that this package is not a code generator (yet). It reads the interface description and builds the interface at runtime. This way you can keep the interface separate from the implementation. For an example of use, check the examples/glade directory. - Added support for the GtkItemFactory. Still no support for the GtkCTree -- even if I did put in support for it, the signal definitions define the GtkCTreeNode's as pointers, making it almost useless. pygtk-0.5.1: 19-August-1998 - fix a small bug in configure script that prevented building. pygtk-0.5.0: 18-August-1998 - Updated for GTK+-1.1.1 - Replaced GtkAcceleratorTable with GtkAccelGroup. - Made use of the GtkFlagInfo and GtkEnumInfo structures. You can now specify enum values by a string as well as by a number. Flag values can be given as strings, or as a tuple of strings or numbers that are ORed together. - Added GtkAccelLabel, GtkFontSelection, GtkFontSelectionDialog, GtkPacker and GtkProgress widgets. Also updated the methods on all the other objects. I haven't yet done GtkCTree or GtkItemFactory. - Fixed the gtk_widget_size_request wrapper - it now returns the size requisition as a (w,h) tuple. - I have split gtkmodule into _gtkbasemodule and _gtkmodule. The code in _gtkbase is no longer generated. I have gone through and removed uneeded code put in by swig. This reduced the size of that piece of source by 25%. Hopefuly this will speed up some of the core functions a bit. If you use Gtkinter, this change is invisible. If you use gtkmodule directly, change: from gtk import * to from _gtkbase import * from _gtk import * pygtk_init() The pygtk_init function is part of the _gtk module, and is called to tell it about all the types in _gtkbase. (it should be called by the module's init routine, but I can't find out how to make that happen. - Updated the Gtkinter.new command. Now widget arguments don't get the widget name prepended, so I have changed the function from accepting the arguments as a dictionary to accepting them as keyword arguments. (eg you can do new(GtkWindow, title="title", allow_shrink=FALSE)). On a side note, the GTK_IS_*() functions have been removed from gtkmodule and added in gtk_*_get_type() functions. You can get the functionality of the removed functions with something like GTK_CHECK_TYPE(obj, gtk_*_get_type()). pygtk-0.4.5: 5-August-1998 - This may be the last gtk v1.0 release of pygtk. If you have anymore nagging bugs, tell me now, or they won't be fixed in a version that can compile for gtk v1.0 (I will be moving to gtk v1.1) - Fixed some small bugs which I got bug reports about, but forgot to patch (in draw_polygon, GtkDrawingArea.draw_polygon and load_fontset) Also added the font argument to draw_string,draw_text. This was what was causing those problems. - Now gtk_set_locale is called when Gtkinter is loaded. This will make pygtk more useful for languages with non-latin character sets (eg Japanese). - Fixed up new_gc, so that if you don't pass it any arguments, it doesn't cause your program to segfault. - Made GtkObject.connect and GtkObject.connect_after var arg functions. Any extra arguments passed will be added to the argument list for the signal handler. - Added some attributes to the GdkFont object. You can now access the ascent and descent attributes, and call the width and measure methods, which both take a string as an argument. pygtk-0.4.4: 17-June-1998 - Updated for gtk+-1.0.4, although it will work with gtk+-1.0.2 (No new features were added between these releases). - Fixed the date on the last changelog entry :( - Added the file description.py. It contains a breif description of some of the objects used in Gtkinter, such as GtkStyle's, GdkColors, GdkGC's and so on. It is structured as a python module, but is not intended to be imported. It can be used as a small reference. - Added variable GtkCList.selection, and method GtkCList.get_selection_info. These should help using clists, and help trap double clicks in a clist, since you can now do something like this: row, col = clist.get_selection_info(event.x, event.y) in a signal handler (maybe button_press). - Changed the GdkWindow destroy function to call gdk_pixmap_unref, if the window was a pixmap. This gets rid of the annoying warning when you close scribble.py. - pointer types and unknown boxed types are now passed as Python C objects in signal handlers. This is so wrappers for add on widgets that use pointer arguments can write code to convert the pointers to a more usable format. - Changed the behaviour of the PyObject -> GtkArg routines so that that they use python's conversion routines. Now you can pass a class instance which has a __int__ method in place of an integer in those routines (it implicitly uses int(o) on the instance). - Added method GtkObject.emit, which acts like gtk_signal_emit. Now widget.show() and widget.emit('show') are equivalent (although the first is faster). Now you should be able to use rulers properly. The specification is GtkObject.emit(signal_name, arg1, ...). It returns whatever the signal handler was supposed to. The rulers example in the testgtk.py program has been fixed, and gives an example of the GtkObject.emit method. - Added test of statusbar in testgtk.py. (The code was submited by Andrew Kuchling ) - Fixed hude memory leak in GdkEvent initialisation -- when adding items to a dictionary with PyDict_SetItemString, the third argument is INCREF'd. I was forgetting to DECREF it after finishing with it. - Added method GdkWindow.new_gc. It takes keyword arguments with names matching the fields of the structure GdkGCValues, defined in gdk/gdktypes.h. It creates a gc for that window with the given attributes. Also, the GdkGC type now has the same attributes as the GdkGCValues structure, and they can be read and set. - Added a wrapper for the GdkColormap type. It can be accessed as a sequence (eg len(cmap), a = cmap[42], print cmap[:10]). The sequence items are colours. Also, the GtkStyle and GdkWindow types now also have the attribute colormap, which can be used for accessing the colormap. Also, the GdkColor type now has the attributes red, green, blue and pixel. The colormap also has a single method -- GdkColormap.alloc. It can either be called with a string argument (a colour name), or three integers (RGB components). It does the same thing as the function color_alloc (in fact, color_alloc is now implemented using it). pygtk-0.4.3: 7-May-1998 - Updated for gtk+-1.0.1. This version of pygtk will not work with earlier versions. (You should upgrade anyway, since this version plugs some security holes and memory leaks). - Updated the GdkImlib module to take advntage of new features found in Imlib 1.3. You can now save images into just about any format. - Added the types GdkWindow and GdkGC. Also changed some of the functions like gtk_widget_shape_combine_mask to take their correct arguments. This will not break any code written with Gtkinter, as I have put in backward compatibility. However, if you used any of these functions in code that directly accessed the gtk module, you may have to recode some of your work. I have updated some of the testgtk.py examples. You will notice that the toolbar example loads quicker, since the test.xpm is only read off disk once. - Added the gdk_draw_* functions, and wrote wrappers for them as methods of the GtkDrawingArea class. See examples/simple/scribble.py for an example of using pixmaps and the drawing area. pygtk-0.4.2: 22-April-1998 - Updated for gtk+-1.0.0. Since there have been no API changes between 0.99.10 and 1.0.0, it should work with that version as well. - Updated the configure script. It now uses the gtk-config script to work out the cflags and libraries for GTK. If gtk-config is not on the path, you can pass configure an argument something like --with-gtk-config=/subdir/gtk-config. - You can now specify the path name for the python executable (if it isn't on the path) with the --with-python=/subdir/python argument. - There is now a 'make install' option. It should work with both python 1.4 and 1.5.x. It defaults to installing scripts the $(prefix)/lib/site-python, with $(prefix)/lib/python$(version) as a backup, and shared modules in $(prefix)/lib/python$(version) /site-packages with $(prefix)/lib/python$(version)/lib-dynload and $(prefix)/lib/python$(version)/sharedmodules as backup locations. It also checks that the directory is in python's search path before making the choice. If you have installed previous versions of pygtk, it is probably a good idea to remove those files before running 'make install', as the locations chosen by this routine may be different from where you installed previous versions. - Changed the gtk_init function slightly, so it doesn't immediately call the gtk_*get_type functions, instead deferring this till the first call to gtk_object_new. This shouldn't affect anyone's programs, other than making loading slightly quicker. - Also added support for return types for signals (this only breaks compatibility if your handlers didn't return None or 0 or whatever). You should now be able to do things like returning TRUE from a delete_event signal handler to prevent a window being destroyed. - Added some functions for GtkCurve's and GtkPreview's that were previously missing. - Fixed some of the typemap stuff. GtkAspectFrame, GtkToolQuery and GtkCList.get_row_data now work properly. Also fixed a few similar problems in GdkImlib. pygtk-0.4.1: 6-April-1998 - This archive is slightly smaller than the previous version, because I accidently included some unneeded files. (The package isn't missing anything that is required). - Updated for gtk+-0.99.9. Note that the previous version of pygtk works fine with 0.99.9, so this release is mainly new features. - There is now a mailing list for pygtk. To subscribe, send mail to pygtk-request@daa.com.au, with the word subscribe in the body. There is also a web site at http://www.daa.com.au/~james/pygtk/, although it isn't very interesting yet. - updated the examples/ide/gtkcons.py to take advantage of word wrapping in the text widget. - Added a function to export the Python types used in Gtkinter, so other python bindings (such as the imlib one) can use them. (It should be possible to do gnome bindings -- I will look at that in a little while). - Added support for gdk_imlib. Note that this does not change what libraries are required to build Gtkinter. If you don't have gdk_imlib, the configure script will notice, and decide not to build support for it. If you have gdk_imlib, and don't want to build it, you can pass configure the argument --without-imlib. - Added the directory examples/imlib, and a simple multi format image viewer called examples/imlib/view.py. This example requires the imlib bindings to have been built. pygtk-0.4.0: 23-Mar-1998 - Updated for gtk+-0.99.8, so won't work with older versions (although your old pygtk programs will still work). - Added support quit handlers and input handlers. - Fixed a long standing bug in idle/timeout/quit function reactivation. Before, in order for an idle or timeout function to be reactivated, it needed to call idle_add or timeout_add again. Now they just have to return TRUE (like in C). This simplifies these functions substantially. The old behaviour still works. If you are using gtk+-0.99.7, you will find that timeout handlers don't work. This is caused by a bug in GTK, which was fixed in gtk+-0.99.8. - Found that GtkPixamp.__init__, GtkCList.set_pixtmap and GtkCList. set_pixtext all kept references to the pixmaps when they shouldn't. This is now fixed. - Added the module GtkExtra, which contains some convenience routines for writing pygtk programs. It includes an implementation of the menu factory (allows creation of arbitrary sized menus with about four function calls), and single function call interfaces for handling message boxes, file selection dialogs and input boxes. - Added the module GDK.py, that contains relevant constants from GDK. It is automatically imported by Gtkinter, so it is possible to do things like widget.set_events(GDK.ALL_EVENTS_MASK) - Added a crude integrated development environment (pyide.py) that pulls together the debugger, profiler, console and editor examples in the examples/ide directory. - Added a function colour_alloc (or color_alloc) that can be used to allocate new colours for use in the text widget and others. - Added the drag and drop functions (finally). Check the example in testgtk.py for the details. - Added GtkWidget.shape_combine_mask, which takes a pixmap as its first argument, and uses its mask as the shape mask. - Added the GtkCList.{set,get}_row_data functions. pygtk-0.3.0: 10-Mar-1998 - Updated for gtk+-0.99.4. This means that it will not compile properly with previous versions. These incompatibilities are justified since according to the authors of gtk, gtk+-0.99.4 is very close to what 1.0.0 will look like. - Joined the reference counting revolution :) This doesn't affect anyone's programs, since reference counting (like type casting) is handled automatically by pygtk. - Check out the examples/ide directory. It contains a Gtkinter front end to the python debugger and profiler and also a graphical python console (which now works with different fonts and everything. - Added more of the functions I left out from previous versions. I still haven't fiddled round with dnd yet. - Fixed the gtk_object_get function (I had an '=' instead of a '=='). You can now use Gtkinter objects as dictionaries. An example is >>> win = GtkWindow(WINDOW_TOPLEVEL) >>> # next line is equivalent to win['GtkWindow::title'] = 'a' >>> win.set_title("a") >>> win['GtkWindow::title'] 'a' - Added the object data facility. You can use GtkObject.set_data, get_data and remove_data to manipulate it. - Added gtk_window_set_icon and gtk_window_set_icon_name. They are wrappers for the gdk counterparts. The functions are also exposed in Gtkinter as GtkWindow.set_icon[_name]. The set_icon function takes a GtkPixmap as its argumnet, extracts the GdkPixmap and mask from it and calls gtk_object_sink on the GtkPixmap, in case it never gets packed in another widget. - Similar wrappers are given for GtkCList.set_pixmap and GtkCList.set_pixtext. Once again, you pass a GtkPixmap instead of a GdkPixmap/GdkBitmap pair. pygtk-0.2.0: 12-Feb-1998 - Fixed tooltips properly this time. Now you need to keep a reference to the GtkTooltips object for as long as you want to display those tips. - Added the example examples/testgtk/testgtk.py. This is a translation of the example with the same name that comes with the gtk distribution. The plus side of this is that I found and fixed many bits of pygtk that were either broken or missing. (eg. getting the selection of a list, connecting signals for a toolbar) - Added an example of using trees (examples/ide/browse.py). This one shows how you might set up a file manager where you only create as much of the tree as you are using. - Altered the signal handling behaviour so that the arguments to a signal handler are converted to their Gtkinter equivalents. - Pygtk should be complete enough for writing applications the size of ones you might use guile-gtk for, and as far as I know is the most complete out of the other python-gtk bindings I know of. pygtk-0.1.1: 4-Feb-1998 - I accidentally broke tooltips in the previous version in such a way that you would get a seg fault when creating a GtkTooltips object. This has been fixed. - Added a new example called gtkcons.py. This is a simple interactive Python session in a GTK window. Currently it has some bugs, the most prominent being that the first character of output from a command remains hidden until the next command is executed. It also demonstrates GtkHandleBox's. pygtk-0.1.0: 2-Feb-1998 - Changed the copyright to LGPL. (There is no point in making it more free, since this is the lisence on GTK itself). - Integrated some changes sent in by Neil Schemenauer . (Mainly spelling mistakes in Gtkinter.py, and a number of extra examples). The new examples are TAppli*.py and notebook.py. - Updated package for gtk+-0.99.3. (updates include addition of GtkCList, GtkCombo, GtkHandleBox, GtkStatusbar and GtkToolbar). - Updated the GTK.py, the constants module. - Updated the GtkStyle and GdkEvent types. You can now get the different colours of a style, and you can access the relevant information associated with a given type of GdkEvent. This means that you can now use signals that look at button clicks or key strokes. - Added support for GtkAcceleratorTable and GtkTooltips in Gtkinter.py. The types GdkColor, GdkEvent, GdkFont and GtkStyle don't have wrappers, but are clean enough to be used without any. - Added the GtkText.insert method. There is also a GtkText.insert_defaults that takes a single string argument. pygtk-0.0.2: 21-Jan-1998 - Added file Gtkinter.py. This gives an object oriented interface to gtk accessable from Python. This is still not quite complete. - Added some example programs in the examples directory - Decided to release the code -- I wonder if anyone will use it? pygtk-0.0.1: (never released) - first release - contains basic functionality of gtk through use of SWIG pygtk-2.24.0/tests/0000755000175000017500000000000011545327522011106 500000000000000pygtk-2.24.0/tests/Makefile.in0000644000175000017500000003070511545325700013074 00000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ ATK_CFLAGS = @ATK_CFLAGS@ ATK_LIBS = @ATK_LIBS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODEGENDIR = @CODEGENDIR@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GTK210_CFLAGS = @GTK210_CFLAGS@ GTK210_LIBS = @GTK210_LIBS@ GTK212_CFLAGS = @GTK212_CFLAGS@ GTK212_LIBS = @GTK212_LIBS@ GTK214_CFLAGS = @GTK214_CFLAGS@ GTK214_LIBS = @GTK214_LIBS@ GTK216_CFLAGS = @GTK216_CFLAGS@ GTK216_LIBS = @GTK216_LIBS@ GTK218_CFLAGS = @GTK218_CFLAGS@ GTK218_LIBS = @GTK218_LIBS@ GTK220_CFLAGS = @GTK220_CFLAGS@ GTK220_LIBS = @GTK220_LIBS@ GTK222_CFLAGS = @GTK222_CFLAGS@ GTK222_LIBS = @GTK222_LIBS@ GTK224_CFLAGS = @GTK224_CFLAGS@ GTK224_LIBS = @GTK224_LIBS@ GTKUNIXPRINT_CFLAGS = @GTKUNIXPRINT_CFLAGS@ GTKUNIXPRINT_LIBS = @GTKUNIXPRINT_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ HAVE_GTK_2_10 = @HAVE_GTK_2_10@ HAVE_GTK_2_12 = @HAVE_GTK_2_12@ HAVE_GTK_2_14 = @HAVE_GTK_2_14@ HAVE_GTK_2_16 = @HAVE_GTK_2_16@ HAVE_GTK_2_18 = @HAVE_GTK_2_18@ HAVE_GTK_2_20 = @HAVE_GTK_2_20@ HAVE_GTK_2_22 = @HAVE_GTK_2_22@ HAVE_GTK_2_24 = @HAVE_GTK_2_24@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBGLADE_CFLAGS = @LIBGLADE_CFLAGS@ LIBGLADE_LIBS = @LIBGLADE_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOCAIRO_CFLAGS = @PANGOCAIRO_CFLAGS@ PANGOCAIRO_LIBS = @PANGOCAIRO_LIBS@ PANGO_CFLAGS = @PANGO_CFLAGS@ PANGO_LIBS = @PANGO_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PYCAIRO_CFLAGS = @PYCAIRO_CFLAGS@ PYCAIRO_LIBS = @PYCAIRO_LIBS@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_DATADIR = @PYGOBJECT_DATADIR@ PYGOBJECT_DEFSDIR = @PYGOBJECT_DEFSDIR@ PYGOBJECT_FIXXREF = @PYGOBJECT_FIXXREF@ PYGOBJECT_INCLUDEDIR = @PYGOBJECT_INCLUDEDIR@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYGOBJECT_PYGDOCS = @PYGOBJECT_PYGDOCS@ PYGTK_CODEGEN_DEFINES = @PYGTK_CODEGEN_DEFINES@ PYGTK_MAJOR_VERSION = @PYGTK_MAJOR_VERSION@ PYGTK_MICRO_VERSION = @PYGTK_MICRO_VERSION@ PYGTK_MINOR_VERSION = @PYGTK_MINOR_VERSION@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADING_CFLAGS = @THREADING_CFLAGS@ VERSION = @VERSION@ XSLTPROC = @XSLTPROC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = $(tests) common.py runtests.py testmodule.py leak.glade tests = \ test_actiongroup.py \ test_api.py \ test_bin.py \ test_button.py \ test_color.py \ test_container.py \ test_conversion.py \ test_dialog.py \ test_enum.py \ test_filechooserdialog.py \ test_gdk.py \ test_glade.py \ test_liststore.py \ test_pango.py \ test_plug.py \ test_radiobutton.py \ test_rectangle.py \ test_style.py \ test_textview.py \ test_treeview.py \ test_accel_closures.py GTK_PY_FILES = __init__.py _lazyutils.py compat.py deprecation.py keysyms.py all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-local check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: all all-am check check-am check-local clean clean-generic \ clean-libtool distclean distclean-generic distclean-libtool \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am check-local: $(top_srcdir)/gtk/__init__.py @if test "$(top_builddir)" != "$(top_srcdir)"; then \ for gtk_py in $(GTK_PY_FILES) ; do \ cp $(top_srcdir)/gtk/$${gtk_py} $(top_builddir)/gtk/; \ done \ fi @$(PYTHON) $(srcdir)/runtests.py $(top_builddir) $(top_srcdir) @if test "$(top_builddir)" != "$(top_srcdir)"; then \ for gtk_py in $(GTK_PY_FILES) ; do \ rm -f $(top_builddir)/gtk/$${gtk_py}*; \ done \ fi @rm -fr *.pyc # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: pygtk-2.24.0/tests/test_glade.py0000644000175000017500000000156611545325345013524 00000000000000import unittest from common import gtk, gobject import weakref import gc class TestGlade(unittest.TestCase): class SimpleTest: def __init__(self, test): xml = gtk.glade.XML('leak.glade') xml.signal_autoconnect(self) self.test = test self.window = xml.get_widget("window1") self.window.destroy() def on_window1_destroy(self, window): gobject.idle_add(self.test.leak_check, weakref.ref(self), weakref.ref(self.window)) def leak_check(self, objref, windowref): while gc.collect(): pass gtk.main_quit() self.assertEqual(objref(), None) self.windowref = windowref def testAutoconnectLeak(self): self.SimpleTest(self) gtk.main() self.assertEqual(self.windowref(), None) if __name__ == '__main__': unittest.main() pygtk-2.24.0/tests/test_api.py0000644000175000017500000000230311545325345013207 00000000000000import os import sys import unittest from common import gobject, gtk class APITest(unittest.TestCase): def testKeysyms(self): self.failUnless('Escape' in dir(gtk.keysyms)) self.failUnless(hasattr(gtk.keysyms, 'Escape')) self.assertEqual(gtk.keysyms.Escape, 0xFF1B) def testWindow(self): self.failUnless(hasattr(gtk, 'Window')) self.failUnless(issubclass(gtk.Window, gobject.GObject)) self.failUnless(issubclass(gtk.Window, gtk.Object)) self.failUnless(issubclass(gtk.Window, gtk.Widget)) self.failUnless(issubclass(gtk.Window, gtk.Container)) self.failUnless(issubclass(gtk.Window, gtk.Bin)) w = gtk.Window() self.failUnless(isinstance(w, gtk.Window)) def testAccelLabel(self): ra = gtk.RadioMenuItem(None, 'label') self.failUnless(hasattr(ra.get_child(), 'get_text')) self.assertEqual(ra.get_child().get_text(), 'label') def testGlade(self): self.failUnless(hasattr(gtk.glade, 'XML')) self.failUnless(issubclass(gtk.glade.XML, gobject.GObject)) def testReload(self): # test for #349026 del sys.modules['gtk'] import gtk reload(gtk) pygtk-2.24.0/tests/test_treeview.py0000644000175000017500000000154011545325345014272 00000000000000import unittest from common import gtk class TreeViewTest(unittest.TestCase): # Check for #350252 # Cooment out this test until we get a response # on bug #546005 and #498010 # #def test_default_attributes(self): # model = gtk.ListStore(str) # treeview = gtk.TreeView(model) # treeview.set_cursor(1) # Bug #347273 def testTreeSelectionForeach(self): model = gtk.ListStore(str) treeview = gtk.TreeView(model) sel = treeview.get_selection() iter_ = model.append() model.set_value(iter_, 0, "foo") sel.select_path((0,)) list_ = [] sel.selected_foreach(lambda model, path, iter: list_.append(iter)) list_ = [model.get_value(iter_, 0) for iter_ in list_] self.assertEqual(list_, ["foo"]) if __name__ == '__main__': unittest.main() pygtk-2.24.0/tests/test_rectangle.py0000644000175000017500000000253111545325345014405 00000000000000# -*- Mode: Python -*- import unittest from common import gtk class Tests(unittest.TestCase): def test_equal(self): self.assertEqual(gtk.gdk.Rectangle(0, 0, 1, 1), gtk.gdk.Rectangle(0, 0, 1, 1)) def test_not_equal(self): self.assertNotEqual(gtk.gdk.Rectangle(1, 0, 10, 10), gtk.gdk.Rectangle(0, 0, 10, 10)) self.assertNotEqual(gtk.gdk.Rectangle(0, 1, 10, 10), gtk.gdk.Rectangle(0, 0, 10, 10)) self.assertNotEqual(gtk.gdk.Rectangle(0, 0, 11, 10), gtk.gdk.Rectangle(0, 0, 10, 10)) self.assertNotEqual(gtk.gdk.Rectangle(0, 0, 10, 11), gtk.gdk.Rectangle(0, 0, 10, 10)) def test_non_hashable(self): self.assertRaises(TypeError, lambda: hash(gtk.gdk.Rectangle())) def dict_key(): {} [gtk.gdk.Rectangle()] = 'must raise' self.assertRaises(TypeError, dict_key) def test_repr(self): for rectangle in self._test_rectangle_list(): self.assertEqual(rectangle, eval(repr(rectangle))) def _test_rectangle_list(self): return [gtk.gdk.Rectangle(), gtk.gdk.Rectangle(0, 0, 100, 100), gtk.gdk.Rectangle(-10, 10, 30, 50), gtk.gdk.Rectangle(-100, -100, 20, 25), gtk.gdk.Rectangle(0, 0, 0, 20), gtk.gdk.Rectangle(1, 1, 20, 0)] if __name__ == '__main__': unittest.main() pygtk-2.24.0/tests/testmodule.py0000644000175000017500000000021011545325345013557 00000000000000import gtk class PyLabel(gtk.Label): __gtype_name__ = 'PyLabel' def __init__(self): gtk.Label.__init__(self, "hello") pygtk-2.24.0/tests/test_filechooserdialog.py0000644000175000017500000000047411545325345016127 00000000000000import unittest from common import gtk class FileChooserDialogTest(unittest.TestCase): def testFileChooserDialog(self): fc = gtk.FileChooserDialog() action = fc.get_action() self.assertEqual(action, gtk.FILE_CHOOSER_ACTION_OPEN) if __name__ == '__main__': unittest.main() pygtk-2.24.0/tests/test_style.py0000644000175000017500000000153511545325345013604 00000000000000import unittest from common import gtk class StylePixmapTest(unittest.TestCase): def setUp(self): win = gtk.Window() win.realize() self.window = win.window self.bg_pixmap = win.style.bg_pixmap def _test(self, pixmap): self.bg_pixmap[gtk.STATE_NORMAL] = pixmap self.assertEqual(self.bg_pixmap[gtk.STATE_NORMAL], pixmap) def testNormal(self): self._test(gtk.gdk.Pixmap(self.window, 1, 1)) def testNone(self): self._test(None) def testParentRelative(self): self._test(gtk.gdk.PARENT_RELATIVE) def testInvalid(self): func = self.bg_pixmap.__setitem__ self.assertRaises(TypeError, func, gtk.STATE_NORMAL, True) self.assertRaises(TypeError, func, gtk.STATE_NORMAL, 0L) self.assertRaises(TypeError, func, gtk.STATE_NORMAL, object()) pygtk-2.24.0/tests/test_pango.py0000644000175000017500000000242011545325345013542 00000000000000import unittest from common import pango class MarkupTest(unittest.TestCase): def testMarkupAccelMarker(self): self.assertRaises(TypeError, pango.parse_markup, 'test', 0) self.assertEqual(pango.parse_markup('test')[2], u'\x00') self.assertEqual(pango.parse_markup('test', u't')[2], u'e') class TestColor(unittest.TestCase): def testStr(self): col = pango.Color('red') self.assertEqual(str(col), '#ffff00000000') class TestLanguage(unittest.TestCase): def testStr(self): lang = pango.Language('sv') self.assertEqual(str(lang), 'sv') class TestFontDescription(unittest.TestCase): def testStr(self): fontdescr = pango.FontDescription('monospace 10') self.assertEqual(str(fontdescr), 'monospace 10') def testHash(self): fontdescr = pango.FontDescription('monospace 10') fontdescr2 = pango.FontDescription('monospace 10') self.assertEqual(hash(fontdescr), hash(fontdescr2)) def testEquals(self): fontdescr = pango.FontDescription('monospace 10') fontdescr2 = pango.FontDescription('monospace 10') fontdescr3 = pango.FontDescription('monospace 12') self.assertEqual(fontdescr, fontdescr2) self.assertNotEqual(fontdescr, fontdescr3) pygtk-2.24.0/tests/test_accel_closures.py0000644000175000017500000000114011545325345015422 00000000000000import unittest from common import gtk, gobject class AccelClosures(unittest.TestCase): def testListAccelClosures(self): group = gtk.AccelGroup() window = gtk.Window() window.add_accel_group(group) button = gtk.Button() window.add(button) button.add_accelerator("clicked", group, gtk.keysyms.x, gtk.gdk.CONTROL_MASK, 0) for closure in button.list_accel_closures(): group1 = gtk.accel_group_from_accel_closure(closure) self.assert_(group1 is group) window.destroy() if __name__ == '__main__': unittest.main() pygtk-2.24.0/tests/leak.glade0000644000175000017500000000221611545325345012742 00000000000000 25 True window1 GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False True False True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True False pygtk-2.24.0/tests/test_enum.py0000644000175000017500000002246111545325345013411 00000000000000import unittest import warnings from gobject import GEnum, GFlags, GObject, GType, PARAM_READWRITE from common import gobject, atk, gtk class PObject(GObject): __gproperties__ = { 'enum': (gtk.WindowType, 'blurb', 'description', gtk.WINDOW_TOPLEVEL, PARAM_READWRITE), 'enum2': (gtk.WindowType, 'blurb', 'description', int(gtk.WINDOW_TOPLEVEL), PARAM_READWRITE), 'flags': (gtk.AttachOptions, 'blurb', 'description', gtk.EXPAND, PARAM_READWRITE), 'flags2': (gtk.AttachOptions, 'blurb', 'description', int(gtk.EXPAND), PARAM_READWRITE), } class EnumTest(unittest.TestCase): def testEnums(self): self.assertTrue(issubclass(GEnum, int)) self.assertTrue(isinstance(atk.LAYER_OVERLAY, atk.Layer)) self.assertTrue(isinstance(atk.LAYER_OVERLAY, int)) self.assertTrue('LAYER_OVERLAY' in repr(atk.LAYER_OVERLAY)) self.assertTrue(int(atk.LAYER_OVERLAY)) self.assertEquals(atk.LAYER_INVALID, 0) self.assertNotEquals(atk.LAYER_INVALID, 1) self.assertNotEquals(atk.LAYER_INVALID, -1) self.assertNotEquals(atk.LAYER_INVALID, atk.LAYER_BACKGROUND) def testComparisionWarning(self): warnings.filterwarnings("error", "", Warning, "", 0) try: self.assertNotEquals(atk.LAYER_INVALID, atk.RELATION_NULL) except Warning: pass else: raise AssertionError warnings.resetwarnings() def testWindowGetState(self): win = gtk.Window() win.realize() state = win.window.get_state() self.assertEquals(state, gtk.gdk.WINDOW_STATE_WITHDRAWN) self.assertTrue(isinstance(state, gtk.gdk.WindowState)) self.assertTrue('WINDOW_STATE_WITHDRAWN' in repr(state)) def testProperty(self): win = gtk.Window() wtype = win.get_property('type') self.assertEquals(wtype, gtk.WINDOW_TOPLEVEL) self.assertTrue(isinstance(wtype, gtk.WindowType)) self.assertTrue('WINDOW_TOPLEVEL' in repr(wtype)) def testAtkObj(self): obj = atk.NoOpObject(GObject()) self.assertEquals(obj.get_role(), atk.ROLE_INVALID) def testGParam(self): win = gtk.Window() enums = filter(lambda x: GType.is_a(x.value_type, GEnum), gobject.list_properties(win)) self.assertTrue(enums) enum = enums[0] self.assertTrue(hasattr(enum, 'enum_class')) self.assertTrue(issubclass(enum.enum_class, GEnum)) def testWeirdEnumValues(self): self.assertEquals(int(gtk.gdk.NOTHING), -1) self.assertEquals(int(gtk.gdk.BUTTON_PRESS), 4) def testParamSpec(self): props = filter(lambda prop: GType.is_a(prop.value_type, GEnum), gobject.list_properties(gtk.Window)) self.assertTrue(len(props)>= 6) props = filter(lambda prop: prop.name == 'type', props) self.assertTrue(props) pspec = props[0] klass = pspec.enum_class self.assertEquals(klass, gtk.WindowType) self.assertTrue(hasattr(klass, '__enum_values__')) self.assertTrue(isinstance(klass.__enum_values__, dict)) self.assertTrue(len(klass.__enum_values__) >= 2) self.assertTrue(isinstance(pspec.default_value, gtk.WindowType)) def testOutofBounds(self): val = gtk.icon_size_register('fake', 24, 24) self.assertTrue(isinstance(val, gobject.GEnum)) self.assertEquals(int(val), 7) self.assertTrue('7' in repr(val)) self.assertTrue('GtkIconSize' in repr(val)) def testEnumProperty(self): default = PObject.props.enum.default_value self.assertTrue(isinstance(default, gtk.WindowType)) self.assertEqual(default, gtk.WINDOW_TOPLEVEL) default = PObject.props.enum2.default_value self.assertTrue(isinstance(default, gtk.WindowType)) self.assertEqual(default, gtk.WINDOW_TOPLEVEL) class FlagsTest(unittest.TestCase): def testFlags(self): self.assertTrue(issubclass(GFlags, int)) self.assertTrue(isinstance(gtk.gdk.BUTTON_PRESS_MASK, gtk.gdk.EventMask)) self.assertTrue(isinstance(gtk.gdk.BUTTON_PRESS_MASK, int)) self.assertEquals(gtk.gdk.BUTTON_PRESS_MASK, 256) self.assertNotEquals(gtk.gdk.BUTTON_PRESS_MASK, 0) self.assertNotEquals(gtk.gdk.BUTTON_PRESS_MASK, -256) self.assertNotEquals(gtk.gdk.BUTTON_PRESS_MASK, gtk.gdk.BUTTON_RELEASE_MASK) self.assertEquals(gtk.gdk.EventMask.__bases__[0], GFlags) self.assertEquals(len(gtk.gdk.EventMask.__flags_values__), 22) def testComparisionWarning(self): warnings.filterwarnings("error", "", Warning, "", 0) try: self.assertNotEquals(gtk.ACCEL_VISIBLE, gtk.EXPAND) except Warning: pass else: raise AssertionError warnings.resetwarnings() def testFlagOperations(self): a = gtk.gdk.BUTTON_PRESS_MASK self.assertTrue(isinstance(a, GFlags)) self.assertEquals(a.first_value_name, 'GDK_BUTTON_PRESS_MASK') self.assertEquals(a.first_value_nick, 'button-press-mask') self.assertEquals(a.value_names, ['GDK_BUTTON_PRESS_MASK'], a.value_names) self.assertEquals(a.value_nicks, ['button-press-mask'], a.value_names) b = gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK self.assertTrue(isinstance(b, GFlags)) self.assertEquals(b.first_value_name, 'GDK_BUTTON_PRESS_MASK') self.assertEquals(b.first_value_nick, 'button-press-mask') self.assertEquals(b.value_names, ['GDK_BUTTON_PRESS_MASK', 'GDK_BUTTON_RELEASE_MASK']) self.assertEquals(b.value_nicks, ['button-press-mask', 'button-release-mask']) c = (gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK | gtk.gdk.ENTER_NOTIFY_MASK) self.assertTrue(isinstance(c, GFlags)) self.assertEquals(c.first_value_name, 'GDK_BUTTON_PRESS_MASK') self.assertEquals(c.first_value_nick, 'button-press-mask') self.assertEquals(c.value_names, ['GDK_BUTTON_PRESS_MASK', 'GDK_BUTTON_RELEASE_MASK', 'GDK_ENTER_NOTIFY_MASK']) self.assertEquals(c.value_nicks, ['button-press-mask', 'button-release-mask', 'enter-notify-mask']) self.assertTrue(int(a)) self.assertEquals(int(a), int(gtk.gdk.BUTTON_PRESS_MASK)) self.assertTrue(int(b)) self.assertEquals(int(b), (int(gtk.gdk.BUTTON_PRESS_MASK) | int(gtk.gdk.BUTTON_RELEASE_MASK))) self.assertTrue(int(c)) self.assertEquals(int(c), (int(gtk.gdk.BUTTON_PRESS_MASK) | int(gtk.gdk.BUTTON_RELEASE_MASK) | int(gtk.gdk.ENTER_NOTIFY_MASK))) def testUnsupportedOpertionWarning(self): warnings.filterwarnings("error", "", Warning, "", 0) try: value = gtk.gdk.BUTTON_PRESS_MASK + gtk.gdk.BUTTON_RELEASE_MASK except Warning: pass else: raise AssertionError warnings.resetwarnings() def testParamSpec(self): props = filter(lambda x: GType.is_a(x.value_type, GFlags), gtk.Table.list_child_properties()) self.assertTrue(len(props) >= 2) pspec = props[0] klass = pspec.flags_class self.assertEquals(klass, gtk.AttachOptions) self.assertTrue(hasattr(klass, '__flags_values__')) self.assertTrue(isinstance(klass.__flags_values__, dict)) self.assertTrue(len(klass.__flags_values__) >= 3) self.assertTrue(isinstance(pspec.default_value, gtk.AttachOptions)) def testEnumComparision(self): enum = gtk.TREE_VIEW_DROP_BEFORE self.assertEquals(enum, 0) self.assertTrue(not enum == 10) self.assertTrue(not enum != 0) self.assertNotEquals(enum, 10) self.assertTrue(not enum < 0) self.assertTrue(enum < 10) self.assertTrue(not enum > 0) self.assertTrue(not enum > 10) self.assertTrue(enum >= 0) self.assertTrue(not enum >= 10) self.assertTrue(enum <= 0) self.assertTrue(enum <= 10) def testFlagComparision(self): flag = gtk.gdk.EXPOSURE_MASK self.assertEquals(flag, 2) self.assertTrue(not flag == 10) self.assertTrue(not flag != 2) self.assertNotEquals(flag, 10) self.assertTrue(not flag < 2) self.assertTrue(flag < 10) self.assertTrue(not flag > 2) self.assertTrue(not flag > 10) self.assertTrue(flag >= 2) self.assertTrue(not flag >= 10) self.assertTrue(flag <= 2) self.assertTrue(flag <= 10) def testFlagsProperty(self): default = PObject.props.flags.default_value self.assertTrue(isinstance(default, gtk.AttachOptions)) self.assertEqual(default, gtk.EXPAND) default = PObject.props.flags2.default_value self.assertTrue(isinstance(default, gtk.AttachOptions)) self.assertEqual(default, gtk.EXPAND) if __name__ == '__main__': unittest.main() pygtk-2.24.0/tests/test_gdk.py0000644000175000017500000000466311545325345013216 00000000000000import unittest import gc from common import gtk, gobject class CallOnDel: def __init__(self, callback): self.callback = callback def __del__(self): self.callback() class GdkTest(unittest.TestCase): def testBitmapCreateFromData(self): gtk.gdk.bitmap_create_from_data(None, '\x00', 1, 1) #def testPixmapCreateFromData(self): # black = gtk.gdk.color_parse('black') # gtk.gdk.pixmap_create_from_data(None, '\x00', 1, 1, 1, # black, black) def _testWindow(self): common = {'finalized': False} def on_finalize(): common['finalized'] = True w = gtk.gdk.Window(None, 200, 200, gtk.gdk.WINDOW_TEMP, 0, 0) w.set_data('foo', CallOnDel(on_finalize)) w.destroy() while gtk.events_pending(): gtk.main_iteration(block=False) del w # Note that this depends on the mainloop processing an X event so # if might fail if the timing is off while gc.collect(): pass assert common['finalized'] def testDrawIndexedImage(self): w = gtk.Window() w.realize() w.window.draw_indexed_image(gtk.gdk.GC(w.window), 0, 0, 1, 2, gtk.gdk.RGB_DITHER_NONE, '\x00\x01', 1, [0xdeadbe, 0xbebabe]) def _collect(self): cnt = 0 while True: x = gc.collect() cnt += x if x == 0: break return cnt def testDisplay(self): while gc.collect(): pass display = gtk.gdk.Display(None) if gobject.pygobject_version >= (2,13): dispref = display.weak_ref() del display self.assertEqual(dispref(), None) else: del display self.assertEquals(self._collect(), 1) display = gtk.gdk.Display(None) self.assertEquals(display.__grefcount__, 1) display.close() self.assertEquals(display.__grefcount__, 1) if gobject.pygobject_version >= (2,13): dispref = display.weak_ref() del display self.assertEqual(dispref(), None) else: del display self.assertEquals(self._collect(), 1) pygtk-2.24.0/tests/runtests.py0000644000175000017500000000165711545325345013301 00000000000000#!/usr/bin/env python import glob import os import sys import unittest import common program = None if len(sys.argv) == 3: buildDir = sys.argv[1] srcDir = sys.argv[2] else: if len(sys.argv) == 2: program = sys.argv[1] if program.endswith('.py'): program = program[:-3] buildDir = '..' srcDir = '.' common.importModules(buildDir=buildDir, srcDir=srcDir) SKIP_FILES = ['common', 'runtests', 'testmodule'] dir = os.path.split(os.path.abspath(__file__))[0] os.chdir(dir) def gettestnames(): files = glob.glob('*.py') names = map(lambda x: x[:-3], files) map(names.remove, SKIP_FILES) return names suite = unittest.TestSuite() loader = unittest.TestLoader() for name in gettestnames(): if program and program not in name: continue suite.addTest(loader.loadTestsFromName(name)) testRunner = unittest.TextTestRunner() testRunner.run(suite) pygtk-2.24.0/tests/test_dialog.py0000644000175000017500000000202111545325345013672 00000000000000import sys import unittest import gc import weakref from common import gtk class MessageDialogTest(unittest.TestCase): def testDialogAdd(self): dialog = gtk.MessageDialog() response_id = sys.maxint + 1 self.assertRaises(OverflowError, dialog.add_button, "Foo", response_id) self.assertRaises(OverflowError, dialog.add_buttons, "Foo", response_id) def testSubclass(self): # Normal subclassing should not register a type sub = type('sub', (gtk.MessageDialog,), {}) print sub.__gtype__ print sub.__gtype__.name self.assertEqual(sub.__gtype__.name, 'GtkMessageDialog') type('Sub', (gtk.MessageDialog,), {'__gtype_name__': 'SubDialog'}) self.assertEqual(sub.__gtype__.name, 'SubDialog') def testDialogLeak(self): dlg = gtk.Dialog() dlg.destroy() ref = weakref.ref(dlg) del dlg while gc.collect(): pass self.assertEqual(ref(), None) if __name__ == '__main__': unittest.main() pygtk-2.24.0/tests/test_container.py0000644000175000017500000000647411545325345014435 00000000000000import unittest from common import gtk, gobject class MyContainer(gtk.Container): __gtype_name__ = 'MyContainer' def __init__(self): gtk.Container.__init__(self) self.children = [] self.props = {} def do_add(self, child): child.set_parent(self) self.children.append(child) self.props[child] = '' # we just have one child property def do_remove(self, child): widget_was_visible = child.flags() & gtk.VISIBLE child.unparent() self.children.remove(child) del self.props[child] if widget_was_visible: self.queue_resize() def do_forall(self, internal, callback, data): for child in self.children: callback(child, data) def do_set_child_property(self, child, property_id, value, pspec): if pspec.name == 'dumb-prop': self.props[child] = value def do_get_child_property(self, child, property_id, pspec): if pspec.name == 'dumb-prop': return self.props[child] MyContainer.install_child_property(1, ('dumb_prop', gobject.TYPE_STRING, 'Dumb Prop', 'Dumb Property for testing purposes', '', gobject.PARAM_READWRITE)) class MyAlignment(gtk.Alignment): def __init__(self, caption): self.caption = gtk.Label() self.caption.set_markup('%s' % gobject.markup_escape_text(caption)) gtk.Alignment.__init__(self) self.caption.set_parent(self) def do_forall(self, include_internals, callback, callback_data): callback(self.caption, callback_data) gtk.Alignment.do_forall(self, include_internals, callback, callback_data) # FIXME: Why is it needed? gobject.type_register(MyAlignment) class FocusContainer(gtk.HBox): # Just call super. def do_set_focus_child(self, widget): gtk.HBox.do_set_focus_child(self, widget) gobject.type_register(FocusContainer) class FocusWindow(gtk.Window): # Just call super. def do_set_focus(self, focus): gtk.Window.do_set_focus(self, focus) gobject.type_register(FocusWindow) class ContainerTest(unittest.TestCase): def testChildProperties(self): obj = MyContainer() label = gtk.Label() obj.add(label) v = 'dumb value' obj.child_set_property(label, 'dumb_prop', v) self.assertEqual(v, obj.child_get_property(label, 'dumb_prop')) def testSuperclassForAll(self): alignment = MyAlignment('test') label = gtk.Label('foo') alignment.add(label) alignment.show_all() self.assert_(label.flags() & gtk.VISIBLE) self.assert_(alignment.caption.flags() & gtk.VISIBLE) def testFocusSignalHandlers(self): button = gtk.Button() container = FocusContainer() window = FocusWindow() container.add(button) window.add(container) window.show_all() button.grab_focus() self.assert_(button.is_focus()) window.set_focus(None) self.assert_(window.get_focus() is None) window.set_focus(button) self.assert_(window.get_focus() == button) window.destroy() if __name__ == '__main__': unittest.main() pygtk-2.24.0/tests/test_radiobutton.py0000644000175000017500000000567411545325345015006 00000000000000import unittest from common import gtk class RadioTest(unittest.TestCase): widget_type = None constructor_args = () def new(self): return self.widget_type(*self.constructor_args) def newLabel(self, label): return self.widget_type(None, label) def newGroup(self, group): return self.widget_type(group) def getLabel(self, obj): return obj.get_property('label') def compareGroups(self, group1, group2): return self.assertEqual(group1, group2) def testCreate(self): if self.widget_type is None: return radio = self.new() self.assert_(isinstance(radio, self.widget_type)) def testLabel(self): if self.widget_type is None: return radio = self.newLabel('test-radio') self.assertEqual(self.getLabel(radio), 'test-radio') def testGroup(self): if self.widget_type is None: return radio = self.new() radio2 = self.newGroup(radio) self.compareGroups(radio.get_group(), radio2.get_group()) self.compareGroups(radio2.get_group(), radio.get_group()) def testEmptyGroup(self): if self.widget_type is None: return radio = self.new() radio2 = self.new() self.compareGroups(radio.get_group(), [radio]) self.compareGroups(radio2.get_group(), [radio2]) radio2.set_group(radio) self.compareGroups(radio.get_group(), radio2.get_group()) self.compareGroups(radio2.get_group(), radio.get_group()) radio2.set_group(None) self.compareGroups(radio.get_group(), [radio]) self.compareGroups(radio2.get_group(), [radio2]) class RadioButtonTest(RadioTest): widget_type = gtk.RadioButton class RadioActionTest(RadioTest): widget_type = gtk.RadioAction constructor_args = ('RadioAction', 'test-radio-action', '', '', 0) def newGroup(self, radio): # No constructor, so set it manually obj = self.new() obj.set_group(radio) return obj def newLabel(self, label): return gtk.RadioAction('RadioAction', label, '', '', 0) class RadioToolButtonTest(RadioTest): widget_type = gtk.RadioToolButton def compareGroups(self, group1, group2): # GtkRadioToolButton.set/get_groups return GtkRadioButtons, # so instead of doing a normal cmp, compare ids return cmp(map(id, group1), map(id, group2)) def newLabel(self, label): # We don't have a constructor for which we can pass in a label # for, so just call set_label instead radio = gtk.RadioToolButton(None) radio.set_label(label) return radio class RadioMenuItem(RadioTest): widget_type = gtk.RadioMenuItem def getLabel(self, obj): # The label is stored in a gtk.AccelLabel, which is the only # child of the RadioMenuItem. return obj.get_child().get_text() if __name__ == '__main__': unittest.main() pygtk-2.24.0/tests/test_actiongroup.py0000644000175000017500000001262411545325345014777 00000000000000# Test for Bug #162874 import gc import unittest from common import gtk, gobject class ActionGroupTest(unittest.TestCase): ui0 = ''' ''' def build_gui(self): # Create the toplevel window window = gtk.Window() vbox = gtk.VBox() window.add(vbox) # Create a UIManager instance uimanager = gtk.UIManager() self.uimanager = uimanager # Create the base ActionGroup actiongroup = gtk.ActionGroup('UIMergeExampleBase') actiongroup.add_actions([('File', None, '_File'), ('Sound', None, '_Sound'), ('RadioBand', None, '_Radio Band')]) uimanager.insert_action_group(actiongroup, 0) # Create an ActionGroup actiongroup0 = gtk.ActionGroup('UIMergeExample0') # Create a ToggleAction, etc. actiongroup0.add_toggle_actions([('Mute', None, '_Mute', 'm', 'Mute the volume', self.cb)]) # Create actions actiongroup0.add_actions([('Quit', gtk.STOCK_QUIT, '_Quit me!', None, 'Quit the Program', self.cb)]) # Create some RadioActions actiongroup0.add_radio_actions([('AM', None, '_AM', 'a', 'AM Radio', 0), ('FM', None, '_FM', 'f', 'FM Radio', 1), ('SSB', None, '_SSB', 'b', 'SSB Radio', 2), ], 0, self.cb) # Add the actiongroup to the uimanager uimanager.insert_action_group(actiongroup0, 1) self.ag0 = actiongroup0 del actiongroup0 # Add a UI description self.merge_id0 = uimanager.add_ui_from_string(self.ui0) # Create a MenuBar menubar = uimanager.get_widget('/MenuBar') vbox.pack_start(menubar, False) # Create a Toolbar toolbar = uimanager.get_widget('/Toolbar') vbox.pack_start(toolbar, False) gobject.timeout_add(50, self.timeout_cb) gtk.main() return def timeout_cb(self): ag0 = self.ag0 uimanager = self.uimanager del self.ag0, self.uimanager uimanager.remove_ui(self.merge_id0) uimanager.remove_action_group(ag0) if gobject.pygobject_version >= (2,13): ag0ref = ag0.weak_ref() del ag0 self.assertEqual(ag0ref(), None) else: gc.collect() # Clean out unreachable objects del ag0 self.assertEqual(gc.collect(), 1) # Collect just the ActionGroup uimanager.ensure_update() self.assertEqual(gc.collect(), 6) # Now the GtkActions have lost their last # GObject reference; they should be collected. # We have a ToggleAction, an Action and a # RadioAction, plus self.cb is bound in three # closures. gtk.main_quit() def setUp(self): gc.collect() def testActionGroups(self): self.build_gui() def cb(self, action): return class ActionTest(unittest.TestCase): def testActionSubclass(self): class MyAction(gtk.Action): __gtype_name__ = 'MyAction' def __init__(self): self._activated = False gtk.Action.__init__(self, "name", "label", "tooltip", "stock_id") def do_activate(self): self._activated = True myaction = MyAction() myaction.activate() self.assertEqual(myaction._activated, True) def testSetItemClasses(self): class MyAction(gtk.Action): def __init__(self): gtk.Action.__init__(self, 'name', 'label', None, None) def set_menu_item_type(type): MyAction.set_menu_item_type(type) def set_tool_item_type(type): MyAction.set_tool_item_type(type) self.assertRaises(TypeError, lambda: set_menu_item_type(None)) self.assertRaises(TypeError, lambda: set_menu_item_type(gtk.Button)) set_menu_item_type(gtk.ImageMenuItem) self.assert_(isinstance(MyAction().create_menu_item(), gtk.ImageMenuItem)) self.assertRaises(TypeError, lambda: set_tool_item_type(None)) self.assertRaises(TypeError, lambda: set_tool_item_type(gtk.Button)) set_tool_item_type(gtk.SeparatorToolItem) self.assert_(isinstance(MyAction().create_tool_item(), gtk.SeparatorToolItem)) if __name__ == '__main__': unittest.main() pygtk-2.24.0/tests/test_color.py0000644000175000017500000001102011545325345013550 00000000000000# -*- Mode: Python -*- import unittest from common import gtk class Tests(unittest.TestCase): def test_constructor(self): """ Test GdkColor creation """ c = gtk.gdk.Color(1, 2, 3) self.assertEqual(c.red, 1) self.assertEqual(c.green, 2) self.assertEqual(c.blue, 3) c = gtk.gdk.Color(1.0, 0.7, 0.2) self.assertAlmostEqual(c.red_float, 1.0, 4) self.assertAlmostEqual(c.green_float, 0.7, 4) self.assertAlmostEqual(c.blue_float, 0.2, 4) # Mixing integers and floats is not allowed. self.assertRaises(TypeError, lambda: gtk.gdk.Color(0, 0.5)) c = gtk.gdk.Color(pixel=0xffff) self.assertEqual(c.pixel, 0xffff) c = gtk.gdk.Color(pixel=0xffffL) self.assertEqual(c.pixel, 0xffff) c = gtk.gdk.Color(pixel=0xffffffffL) self.assertEqual(c.pixel, 0xffffffffL) c = gtk.gdk.Color('red') self.assertEqual(c.red, 65535) self.assertEqual(c.green, 0) self.assertEqual(c.blue, 0) c = gtk.gdk.Color('#ff0000') self.assertEqual(c.red, 65535) self.assertEqual(c.green, 0) self.assertEqual(c.blue, 0) self.assertRaises(TypeError, lambda: gtk.gdk.Color([])) def test_color_from_hsv(self): self.assertEqual(gtk.gdk.Color('red'), gtk.gdk.color_from_hsv(0.0, 1.0, 1.0)) # See bug #594347. def test_color_from_hsv_kwargs(self): self.assertEqual(gtk.gdk.Color('black'), gtk.gdk.color_from_hsv(hue=0.0, saturation=0.0, value=0.0)) def test_float_attributes(self): c = gtk.gdk.Color(0, 10000, 65535) self.assertAlmostEqual(c.red_float, 0.0) self.assertAlmostEqual(c.green_float, 10000.0 / 65535.0) self.assertAlmostEqual(c.blue_float, 1.0) c.red_float = 0.57 self.assert_(c.red == int(0.57 * 65535) or c.red == int(0.57 * 65535) + 1) self.assertAlmostEqual(c.red_float, 0.57, 4) c.green = 12345 self.assertAlmostEqual(c.green_float, 12345.0 / 65535.0) def test_hue(self): self.assertAlmostEqual(gtk.gdk.Color('red').hue, 0 * 1.0 / 6) self.assertAlmostEqual(gtk.gdk.Color('yellow').hue, 1 * 1.0 / 6) self.assertAlmostEqual(gtk.gdk.Color('green').hue, 2 * 1.0 / 6) self.assertAlmostEqual(gtk.gdk.Color('cyan').hue, 3 * 1.0 / 6) self.assertAlmostEqual(gtk.gdk.Color('blue').hue, 4 * 1.0 / 6) self.assertAlmostEqual(gtk.gdk.Color('magenta').hue, 5 * 1.0 / 6) def test_saturation(self): self.assertAlmostEqual(gtk.gdk.Color('red').saturation, 1.0) self.assertAlmostEqual(gtk.gdk.Color('gray').saturation, 0.0) def test_value(self): self.assertAlmostEqual(gtk.gdk.Color('black').value, 0.0) self.assertAlmostEqual(gtk.gdk.Color('white').value, 1.0) def test_equal(self): self.assertEqual(gtk.gdk.Color(0, 0, 0), gtk.gdk.Color(0, 0, 0)) self.assertEqual(gtk.gdk.Color(100, 200, 300), gtk.gdk.Color(100, 200, 300)) self.assertEqual(gtk.gdk.Color('#abc'), gtk.gdk.Color('#aabbcc')) self.assertEqual(gtk.gdk.Color('#100020003000'), gtk.gdk.Color(0x1000, 0x2000, 0x3000)) def test_not_equal(self): self.assertNotEqual(gtk.gdk.Color('red'), gtk.gdk.Color('blue')) self.assertNotEqual(gtk.gdk.Color(1, 0, 0), gtk.gdk.Color(0, 0, 0)) self.assertNotEqual(gtk.gdk.Color(0, 1, 0), gtk.gdk.Color(0, 0, 0)) self.assertNotEqual(gtk.gdk.Color(0, 0, 1), gtk.gdk.Color(0, 0, 0)) def test_non_hashable(self): self.assertRaises(TypeError, lambda: hash(gtk.gdk.Color())) def dict_key(): {} [gtk.gdk.Color()] = 'must raise' self.assertRaises(TypeError, dict_key) def test_repr(self): for color in self._test_color_list(): self.assertEqual(color, eval(repr(color))) def test_str(self): for color in self._test_color_list(): self.assertEqual(color, gtk.gdk.Color(str(color))) def _test_color_list(self): return [gtk.gdk.Color(), gtk.gdk.Color(10, 20, 30), gtk.gdk.Color(65535, 65535, 65535), gtk.gdk.Color('red'), gtk.gdk.Color('#aaa'), gtk.gdk.Color('#f0a000'), gtk.gdk.Color('#123abcdef'), gtk.gdk.Color('#123412341234'), gtk.gdk.Color('#fedcfedcfedc')] if __name__ == '__main__': unittest.main() pygtk-2.24.0/tests/test_button.py0000644000175000017500000000040011545325345013745 00000000000000import unittest from common import gtk class TextButton(unittest.TestCase): # Bug #524187. def test_constructor(self): button = gtk.Button() self.assert_(button.props.use_underline) if __name__ == '__main__': unittest.main() pygtk-2.24.0/tests/test_liststore.py0000644000175000017500000000277511545325345014503 00000000000000import unittest from common import gtk class ListStoreTest(unittest.TestCase): def testConstructor(self): self.assertRaises(TypeError, gtk.ListStore) def testInsert(self): store = gtk.ListStore(int) # Old way, with iters store.set_value(store.insert(0), 0, 2) self.assertEqual(len(store), 1) self.assertEqual(store[0][0], 2) # New way store.insert(0, (1,)) self.assertEqual(len(store), 2) self.assertEqual(store[0][0], 1) self.assertEqual(store[1][0], 2) # TreeSortable, but... def testSetDefaultSortFunc(self): store = gtk.ListStore(int) self.assertFalse(store.has_default_sort_func()) store.set_default_sort_func(lambda x: None) store.set_sort_column_id(0, gtk.SORT_ASCENDING) self.assertTrue(store.has_default_sort_func()) store.set_default_sort_func(None) self.assertFalse(store.has_default_sort_func()) # Two tests for bug 537459. Since it is a memory corruption, we # use a large loop count hoping to trigger a segfault. def testNegativeIndexGet(self): store = gtk.ListStore(int) for i in range(200): store.append((i,)) self.assertEqual(store[-1][0], i) def testNegativeIndexSet(self): store = gtk.ListStore(int) for i in range(200): store.append((i,)) del store[-1] self.assert_(len(store) == 0) if __name__ == '__main__': unittest.main() pygtk-2.24.0/tests/test_textview.py0000644000175000017500000000141011545325345014313 00000000000000import unittest from common import gtk class TextIterTest(unittest.TestCase): def test_assign(self): buffer = gtk.TextBuffer() buffer.insert(buffer.get_start_iter(), 'blablabla') iter1, iter2 = buffer.get_bounds() self.assert_(iter1 is not iter2) self.assertNotEqual(iter1.get_offset(), iter2.get_offset()) iter2.assign(iter1) self.assert_(iter1 is not iter2) self.assertEqual(iter1.get_offset(), iter2.get_offset()) class TextViewTest(unittest.TestCase): def test_default_attributes(self): textview = gtk.TextView() attrs = textview.get_default_attributes() textview.destroy() self.assertEqual(attrs.font_scale, 1.0) if __name__ == '__main__': unittest.main() pygtk-2.24.0/tests/common.py0000644000175000017500000000305611545325345012675 00000000000000import os import sys import pygtk pygtk.require('2.0') import gobject def importModules(buildDir, srcDir): # Be very careful when you change this code, it's # fragile and the order is really significant # atk, pango sys.path.insert(0, buildDir) # _gtk, keysyms, glade sys.path.insert(0, os.path.join(buildDir, 'gtk')) sys.argv.append('--g-fatal-warnings') atk = importModule('atk', buildDir) pango = importModule('pango', buildDir) gtk = importModule('gtk', buildDir, 'gtk') gdk = importModule('gtk.gdk', buildDir, '_gdk.la') glade = importModule('gtk.glade', buildDir) globals().update(locals()) os.environ['PYGTK_USE_GIL_STATE_API'] = '' gobject.threads_init() def importModule(module, directory, name=None): global isDistCheck origName = module if '.' in module: fromlist = '.'.join(module.split('.')[:-1]) else: fromlist = None if not name: name = module + '.la' try: obj = __import__(module, {}, {}, fromlist) except ImportError: raise if hasattr(obj, '__file__'): location = obj.__file__ else: package = __import__(fromlist) location = os.path.join(package.__file__, name) current = os.getcwd() expected = os.path.abspath(os.path.join(current, location)) current = os.path.abspath(location) if current != expected: raise AssertionError('module %s imported from wrong location. Expected %s, got %s' % ( module, expected, current)) return obj pygtk-2.24.0/tests/test_conversion.py0000644000175000017500000000444111545325345014630 00000000000000# -*- Mode: Python -*- import unittest from common import gtk, gobject class Tests(unittest.TestCase): def testUnicharArg(self): """ Test unichar values when used as arguments. """ entry = gtk.Entry() for valid_value in ['a', u'b', u'\ufff0', u'\ufff0'.encode()]: entry.set_invisible_char(valid_value) self.assertEqual(entry.get_invisible_char(), unicode(valid_value), valid_value) for invalid_value in ('12', None, 1, ''): try: entry.set_invisible_char(invalid_value) except: pass else: raise AssertionError( 'exception not raised on invalid value w/ ' 'set_invisible_char: %s' % invalid_value) def testUnicharProperty(self): """ Test unichar values when used as properties. """ entry = gtk.Entry() for valid_value in ['a', u'b', u'\ufff0', u'\ufff0'.encode()]: entry.set_property('invisible_char', valid_value) self.assertEqual(entry.get_property('invisible_char'), valid_value, valid_value) for invalid_value in ('12', None, 1, ''): try: entry.set_property('invisible_char', invalid_value) except TypeError: pass else: raise AssertionError( 'exception not raised on invalid value w/ ' 'set_invisible_char: %s' % invalid_value) def testUnicharConstructor(self): for valid_value in ['a', u'b', u'\ufff0', u'\ufff0'.encode()]: entry = gobject.new(gtk.Entry, invisible_char=valid_value) self.assertEqual(entry.get_property('invisible_char'), valid_value, valid_value) def testUIntArg(self): child = gtk.DrawingArea() table = gtk.Table(2, 2, False) table.attach(child, 1, 2, 0, 1, ypadding=2) self.assertEqual(table.child_get_property(child, 'y-padding'), 2) child = gtk.DrawingArea() table.attach(child, 1, 2, 0, 1, ypadding=2L) self.assertEqual(table.child_get_property(child, 'y-padding'), 2) if __name__ == '__main__': unittest.main() pygtk-2.24.0/tests/test_bin.py0000644000175000017500000000066111545325345013213 00000000000000import unittest from common import gtk class MyBin(gtk.Bin): __gtype_name__ = 'MyBin' def __init__(self): gtk.Bin.__init__(self) class BinTest(unittest.TestCase): def testSet(self): bin = MyBin() self.assertEqual(bin.child, None) child = gtk.Label() bin.child = child self.assertEqual(bin.child, child) bin.child = None self.assertEqual(bin.child, None) pygtk-2.24.0/tests/Makefile.am0000644000175000017500000000206711545325345013070 00000000000000EXTRA_DIST = $(tests) common.py runtests.py testmodule.py leak.glade tests = \ test_actiongroup.py \ test_api.py \ test_bin.py \ test_button.py \ test_color.py \ test_container.py \ test_conversion.py \ test_dialog.py \ test_enum.py \ test_filechooserdialog.py \ test_gdk.py \ test_glade.py \ test_liststore.py \ test_pango.py \ test_plug.py \ test_radiobutton.py \ test_rectangle.py \ test_style.py \ test_textview.py \ test_treeview.py \ test_accel_closures.py GTK_PY_FILES = __init__.py _lazyutils.py compat.py deprecation.py keysyms.py check-local: $(top_srcdir)/gtk/__init__.py @if test "$(top_builddir)" != "$(top_srcdir)"; then \ for gtk_py in $(GTK_PY_FILES) ; do \ cp $(top_srcdir)/gtk/$${gtk_py} $(top_builddir)/gtk/; \ done \ fi @$(PYTHON) $(srcdir)/runtests.py $(top_builddir) $(top_srcdir) @if test "$(top_builddir)" != "$(top_srcdir)"; then \ for gtk_py in $(GTK_PY_FILES) ; do \ rm -f $(top_builddir)/gtk/$${gtk_py}*; \ done \ fi @rm -fr *.pyc pygtk-2.24.0/tests/test_plug.py0000644000175000017500000000052711545325345013413 00000000000000import unittest from common import gtk class TextPlug(unittest.TestCase): # Bug #539365. Just check that it doesn't raise anything. def test_constructor_socket_id(self): self.assert_(isinstance(gtk.Plug(0), gtk.Plug)) self.assert_(isinstance(gtk.Plug(0L), gtk.Plug)) if __name__ == '__main__': unittest.main() pygtk-2.24.0/AUTHORS0000644000175000017500000000130311545325344010731 00000000000000Original Authors =============== James Henstridge Johan Dahlin PyGTK past contributors (in alphabetical order) ================================ Xavier Ordoquy Christian Robottom Reis The PyGTK Team (in alphabetical order) ================================ Gian Mario Tagliaretti Gustavo J A M Carneiro John Finlay Paul Pogonyshev John Stowers There are many others who have contributed patches; we thank them, PyGTK is much better because of them. pygtk-2.24.0/ChangeLog.pre-2-00000644000175000017500000067334711545325344012543 000000000000002003-09-01 James Henstridge * configure.in: increment version number. * NEWS: add news items. 2003-08-31 James Henstridge * gtk/gtktreeview.override (pygtk_cell_data_func_marshal): get rid of the last argument in the cunote->data==NULL case. PyEval_CallFunction() was ignoring it anyway. Fixes bug #121100. 2003-08-26 James Henstridge * PKG-INFO.in (Classifier): add PKG-INFO file for submission to Python package index. 2003-08-25 John Finlay * gtk/gtktextview.override (_wrap_gtk_text_view_set_border_window_size): Add missing break to switch (bug #120669). Patch by Doug Quale. * gtk/gdk.override (_wrap_gdk_pixbuf_loader_write) Allow count to override buf_len if in range 0 to buf_len (bug #120680). 2003-08-24 James Henstridge * NEWS: add news items. * configure.in: update version number. * gtk/gtktreeview.override (_wrap_gtk_tree_store_new): Fix typo found by John Finlay (bug #120517). * gtk/gtk.defs (pack_start_defaults): mark deprecated in favour of pack_start. Fixes bug #118715. (pack_end_defaults): similar here. (attach_defaults): similar here. * gtk/libglade.override (_wrap_glade_set_custom_handler): wrap glade_set_custom_handler in a more direct way. Implementation based on the one in bug #119138. (_wrap_glade_set_custom_widget_callbacks): deprecate this function, and make it coexist better with the new one. 2003-08-15 Johan Dahlin * gtk/gtktreeview.override (_wrap_gtk_list_store_remove): Move to autogenerated, since it need to return a GtkTreeIter. 2003-08-02 James Henstridge * gtk/gdk.override (_wrap_gdk_pixbuf__get_pixel_array): fix up order of dimensions in pixel array (bug #118839). * atk.override (NO_IMPORT_PYGOBJECT): define NO_IMPORT_PYGOBJECT to get rid of multiple definitions of symbols. Patch from Naofumi Yasufuku (bug #118835). * Makefile.am, gtk/Makefile.am (common_ldflags): switch the -no-undefined switch back to being win32 only. In particular, caused breakage on OS X. 2003-07-31 James Henstridge * NEWS: add some news items. * configure.in: increment version number. * pygobject.c (pygobject_handler_is_connected): add wrapper (from bug #118676). * pygtype.c (pyg_object_descr_doc_get): add a call to PyType_Ready() to make sure the type is initialised (bug #118699). 2003-07-26 James Henstridge * gtk/gdk.override: apply Elliot Lee's threading patch. Still need to fix the remaining threading problems. 2003-07-25 James Henstridge * gtk/gtktreeview.override (_wrap_gtk_tree_view_get_dest_row_at_pos): add wrapper (bug #116133). * gtk/gtk.override (ignore): ignore some gtk_rc_* functions. 2003-07-24 James Henstridge * gtk/pygtk.h (init_pygtk): same here. * pygobject.h (init_pygobject): convert fatal errors to normal exceptions. * gtk/gtkglmodule.c (initgl): same here. * gtk/libglademodule.c (initglade): same here. * gtk/gtkmodule.c (init_gtk): same here. * atkmodule.c (initatk): same here. * pangomodule.c (initpango): same here. * gobjectmodule.c (initgobject): don't cause fatal errors if an exception on init. * codegen/codegen.py (write_source): print an error message if it isn't possible to import a particular name from the module. * autogen.sh (DIE): require Automake 1.7. * configure.in (AC_ARG_ENABLE): enable thread support by default. 2003-07-23 James Henstridge * gtk/gtk.override (_wrap_gtk_dialog_add_buttons): add add_buttons() method (bug #109620). 2003-07-23 Ian McKellar * gtk/Makefile.am: build fix 2003-07-22 James Henstridge * codegen/scmexpr.py (parse): print a real error if we find a string or identifier outside of a s-expression (bug #104311). * gtk/gtktreeview.override: wrappers for tree model drag source/dest functions from Emmanuele Bassi (bug #116133). * gtk/gtktreeview.override (_wrap_gtk_tree_model_rows_reordered): add wrapper (from Arjan J. Molenaar, bug #116005). * gtk/Makefile.am: fix a bug I introduced into the makefile yesterday, and fix dependencies for gtk.c. 2003-07-20 John Finlay * gtk/gdk.override (gdk_window_new) Wrap gdk_window_new as a constructor for gtk.gdk.Window(). Fixes #117860. 2003-07-20 James Henstridge * gtk/Makefile.am: same here. * Makefile.am: change *module.so to *.so. Seems to be the preferred extension these days ... 2003-07-12 John Finlay * pango.override (_wrap_PANGO_ASCENT, _wrap_PANGO_DESCENT) (_wrap_PANGO_LBEARING, _wrap_PANGO_RBEARING) Add these function overrides. Fixes #116920. * pango.defs (PIXELS, ASCENT, DESCENT, LBEARING, RBEARING) Add defs for these. Fixes #116920. * pangomodule.c (initpango) Add pango.SCALE constant. Fixes #116920. * pango.override (PangoAttrIterator) Add this type and its methods. 2003-07-11 John Finlay * pango.override (pypango_attr_new) Add start and end args to specify start_index and end_index values. (pypango_attr_copy) Specify copying start_index and end_index. (_wrap_pango_attr_*_new) Allow the pango.Attr* functions to optionally specify start_index and end_index values. Fixes #116776. * pango.override (pypango_attr_tp_getattr) (pypango_attr_get_type) Add these to provide pango.Attribute type information and access to attribute type specific data. Fixes #116691. * pango.defs (pango_color_parse) Make this a constructor for pango.Color. Fixes #116662. * pango.override (_wrap_pango_color_parse) Add constructor wrapper. Fixes #116662. * gtk/gtk.defs (gtk_tree_model_sort_convert_iter_to_child_iter) Allow sort_iter to be NULL. Fixes #113097 (gtk_tree_model_sort_convert_child_iter_to_iter) Allow child_iter to be NULL. Fixes #113097 * gtk/gtktreeview.override (_wrap_gtk_tree_model_sort_convert_iter_to_child_iter) Allow the child_iter to be NULL and return the converted iter but allow child_iter to be passed in for backward compatibility. Fixes #113097 (_wrap_gtk_tree_model_sort_convert_child_iter_to_iter) Allow the sort_iter to be NULL and return the converted iter but allow sort_iter to be passed in for backward compatibility. Fixes #113097 2003-07-03 James Henstridge * gtk/gtk.defs (GtkWindow.set_icon): allow passing None as the icon (fixes bug #116072). (GtkTreeViewColumn.set_widget): allow passing None for the column header widget (fixes bug #115027). * gobjectmodule.c (pyg_error_check): change first block threads instead of unblocking them here. (Looks like John forgot to check this part in). 2003-05-03 Naofumi Yasufuku Bug #110619: * dsextras.py (InstallLib.prepare): Fixed self.prefix initialization for win32. (BuildExt.init_extra_compile_args, BuildExt.build_extensions) (BuildExt.build_extension): On win32, add MinGW GCC option for MSVC compatible struct packing (gcc2: -fnative-struct, gcc3: -mms-bitfields). (BuildExt.modify_compiler, BuildExt.build_extensions): On win32, remove '-static' linker option to prevent MinGW ld from trying to link with MSVC import libraries. * setup.py: Changed list_files('codegen/*.py') to list_files(os.path.join('codegen', '*.py')) for win32. Fixed pygtk.h installation directory. 2003-07-02 James Henstridge * dsextras.py (pkgc_version_check): remove "self.", fixing bug 111002 (pointed out by Seth Nickell). 2003-07-01 John Finlay * gtk/gtk.override (_wrap_gtk_button_box_get_child_size) (_wrap_gtk_button_box_get_child_ipadding): Add deprecation warnings. Fixes #110663. * gtk/gdk.override (_wrap_gdk_pixbuf_animation_get_iter) (_wrap_gdk_pixbuf_animation_iter_advance): Add methods. Fixes #114616. * gtk/gdk.defs (gdk_pixmap_create_from_data): Allow NULL window arg. Fixes #114661. * gtk/gdk.defs (gdk_rectangle_new): Add GdkRectangle constructor. Partial fix for #114743. * gtk/gdk.override (_wrap_gdk_rectangle_union) (_wrap_gdk_rectangle_intersect): Add keyword args and allow 4-tuple as rectangle spec. Fixes #114743. * gtk/gdk.override (_wrap_gdk_window_get_frame_extents): Return a GdkRectangle. Fixes #114817. * gtk/gdk.override (gdk_window_get_decorations): Add method. Fixes #114821. * gtk/gdk.defs (gdk_window_shape_combine_mask): shape_mask can be NULL. Fixes #114952. * gtk/gdk.override (_wrap_gdk_window_get_toplevels) (_wrap_gdk_list_visuals): Add functions. Fixes #115046. * gtk/gtktextview.override (_wrap_gtk_text_buffer_set_text) (_wrap_gtk_text_buffer_insert) (_wrap_gtk_text_buffer_insert_at_cursor) (_wrap_gtk_text_buffer_insert_interactive) (_wrap_gtk_text_buffer_insert_interactive_at_cursor): Raise a ValueError exception if specified length greater than text length. Fixes #115154. * gtk/gtk.override (_wrap_gtk_accelerator_parse): Add function. Fixes #115191. * gtk/gtk.override (_wrap_gtk_accel_map_lookup_entry): Add function. Fixes #115194. * gtk/gtk.override (_wrap_gtk_accel_map_load_fd) (_wrap_gtk_accel_map_save_fd): Allow fd arg to be a Python file object. Fixes #115198. * gtk/gtk.override (_wrap_gtk_color_selection_palette_from_string) (_wrap_gtk_color_selection_palette_to_string): Add first and fix second. Fixes #115206. * gtk/gdk.defs (keyboard_ungrab) (rgb_get_colormap) (rgb_get_cmap): Add first two defs and add deprecation to last def. Fixes #115502. 2003-06-30 John Finlay * gobjectmodule.c (pyg_error_check) Replace first pyg_unblock_threads with pyg_block_threads. Fixes #116284. 2003-06-30 James Henstridge * gtk/pygtkcellrenderer.c: same here. * gtk/pygtktreemodel.c: don't explicitly import pygobject.h, so that it gets included correctly by pygtk-private.h. This should fix the Mac OS X build issues. 2003-06-27 John Finlay * gtk/gdk.defs (gdk_draw_layout_with_colors): Add deprecation warning. Fixes 113954. * gtk/gdk.defs (pixmap_new): Fix typo. Fixes #114659. * gtk/gdk.override (_wrap_gdk_draw_layout): Add optional args background and foreground (GdkColor) default to NULL. Fixes 113954. 2003-06-26 James Henstridge * (lots of stuff): add copyright notices, and update to LGPL 2.1. 2003-06-23 Gustavo J. A. M. Carneiro * codegen/defsparser.py (DefsParser.ifdef): for some reason, the list of arguments received now includes an extra empty string at the beginning, so I corrected the indexes. 2003-06-18 James Henstridge * gtk/gdk.override (_wrap_gdk_drawable__get_handle): fix bug 114619 (the #define we were using was private). 2003-06-12 Joe Shaw * gtk/gdk.override (_wrap_gdk_pixbuf_loader_write): Fix an invalid python format string. 2003-06-06 Johan Dahlin * gobjectmodule.c (get_handler_priority): Fix bogus strcmp. Thanks to John Ehresman for spotting this. Fixes #110489 2003-06-05 Johan Dahlin * gtk/gdk.override (_wrap_gdk_colormap_alloc_color): Allow allocating a color using an unallocated gdk.Color. Patch by John Finlay, fixes #113858 * gtk/gtk.defs (iter_children): Allow null for parent. Fixes #113577 * gtk/libglade.defs (set_custom_widget_callbacks): Added * gtk/libglade.override (_wrap_glade_set_custom_widget_callbacks) (_wrap_glade_set_custom_widget_callbacks): Impl. Patch by Ross Burton. Fixes #113271 * gtk/gdk.override (_wrap_gdk_pixbuf_loader_write): Make last argument optional. (_wrap_gdk_pixbuf_loader_new_with_type): Make first argument optional, so we can open without specifying a type. Fixes #114206. (_wrap_gdk_gc_set_values, _wrap_gdk_gc_set_values): Impl. Patch by John Finlay, fixes #114449 * gtk/gdk-types.defs (Drawable): Add xid and handle attributes. * gtk/gdk.override (_wrap_gdk_drawable__get_xid) (_wrap_gdk_drawable__get_xid): Implement for X11 and win32. Patch by jkluebs@luebsphoto.com, fixes #109105 * gtk/gtk.override (_wrap_gtk_adjustment_set_all): Undeprecate, add keywords. Based upon patch by kohler@icir.org, fixes #105220 * gtk/gtk-extrafuncs.defs (set_all): Undeprecate. * gtk/gtk*.override: New files, splitted out from gtk.override Fixes #103613 * gtk/Makefile.am (EXTRA_DIST): Add *.override here * codegen/override.py (Overrides.__parse_override): Added "include" keyword, to be able to include files in override files. Fixes #103611 2003-06-02 James Henstridge * gtk/gdk.override (_wrap_gdk_property_change): use short and long instead of gint16 and gint32, so we don't break on 64 bit platforms (Xlib uses those types, even though they don't match the sizes). If format==32 test if the type is ATOM or ATOM_PAIR, and if so marshal the data into a (GdkAtom *) array instead of (long *). Based on patch in bug 113860. (_wrap_gdk_property_get): make similar changes to property_get. (_wrap_gdk_property_get): the returned length is the length in bytes, not number of elements. 2003-05-30 Johan Dahlin * gtk/gtk.defs (set_transient_for, set_default, set_focus): Accept None as argument. Patch by John Finlay, fixes #113675 * gtk/gtk.override (_wrap_gtk_window_get_frame_dimensions): Impl. Patch by John Finlay, fixes #113568 (_wrap_gtk_widget_get_size_request): Impl. Patch by John Finlay, fixes #113572 (_wrap_gtk_window_set_icon_list, _wrap_gtk_window_get_icon_list) (_wrap_gtk_window_set_default_icon_list) (_wrap_gtk_window_get_default_icon_list): Impl. Patch by John Finlay, fixes # 113576 (pygtk_container_for_common_marshal, pygtk_container_for_common) (_wrap_gtk_label_get): Implement, share code with GtkContainer.foreach, patch by Rui Lopes, fixes #113597 * gtk/gtk.defs (convert_path_to_child_path): Rename first argument to sorted_path. Thanks to John Finlay, fixes #113102 * gtk/gtk.override (_wrap_gtk_text_tag_table_add): Raise ValueError if the tag exists. Patch by John Finlay, fixes #112796 (_wrap_gtk_text_view_set_border_window_size): Raise exceptions if size is under 0 or a wrong type is specified. Patch by John Finlay, fixes #112880 (_wrap_gtk_text_tag_table_remove): Raise ValueError if the tag doesn't exist. Patch by John Finlay, fixes #112797 (_wrap_gtk_tooltips_data_get): Impl. Patch by John Finlay, fixes #112952 * gtk/gdk.defs (set_icon_stock): Fix typo. Thanks to John Finlay. fixes #113928 * gtk/gdk.override (_wrap_gdk_devices_list): Impl. Patch by John Finlay, fixes #113919 * gtk/gtk.override (_wrap_gtk_text_buffer_set_text) (_wrap_gtk_text_buffer_insert) (_wrap_gtk_text_buffer_insert_at_cursor) (_wrap_gtk_text_buffer_insert_interactive) (_wrap_gtk_text_buffer_insert_interactive_at_cursor): * gtk/gdk.defs (gc_new): * gtk/gdk.override (_wrap_gdk_gc_new2): Backwards compatibility, based on patch by Jonathan Blandford, fixes #113861 2003-05-28 Johan Dahlin * codegen/defsparser.py (DefsParser.__init__): Make the third argument optional. This broke distutils. * gobjectmodule.c, pygtype.c, gtk/gtk.override, gtk/pygtkcellrenderer.c, pygtktreemodel.c: Remove unnecessary calls to PyErr_Clear. It's not needed right after a PyErr_Print. Thanks to Rui Lopes for spotting this. 2003-05-28 James Henstridge * codegen/defsparser.py (IncludeParser.include): simplify. * codegen/scmexpr.py (parse): set up so that it takes a filename as an argument. Also keep track of line numbers, so that more useful error messages can be provided. 2003-05-26 Gustavo J. A. M. Carneiro * codegen/codegen.py (main): Parse -Dkey[=val] options. * codegen/defsparser.py (DefsParser.__init__): Receive an aditional 'defines' parameter, with a dictionary of all -Dkey[=val] command-line options. (DefsParser.ifdef): Handle (ifdef 'FOO ... ) 2003-05-26 James Henstridge * codegen/scmexpr.py (parse): convert to a generator to allow incremental parsing of defs files. 2003-05-23 Gustavo J. A. M. Carneiro * codegen/defsparser.py (IncludeParser.include): Made pygtk-codegen able to read from stdin, by specifying a single dash (-) as file name. 2003-05-07 Johan Dahlin * gtk/gtk.override (_wrap_gtk_radio_button_set_group, _wrap_gtk_radio_button_set_group): Implement. Patch by John Finlay, fixes #112054 and #112058. (_wrap_gtk_ruler_get_range): Return a tuple of integers, not doubles. Patch by John Finlay, fixes #111716. (_wrap_gtk_image_get_pixmap, _wrap_gtk_image_get_image) (_wrap_gtk_image_get_stock, _wrap_gtk_image_get) (_wrap_gtk_image_get_pixbuf, _wrap_gtk_image_get_animation): Implement. Patch by John Finlay, fixes #111400. (_wrap_gtk_scrolled_window_get_policy): Implement. Patch by John Finlay, fixes #112247. (_wrap_gtk_text_buffer_get_iter_at_child_anchor): Implement, Patch by John Finlay, fixes #112524. * gtk/gtk.defs (GtkImage.render_icon, set_image, GtkStyle.render_icon): Allow None to be sent in. Patch by John Finlay, fixes #111389 and #111416. 2003-04-29 Johan Dahlin * gtk/Makefile.am (pygtk_PYTHON): Install dsextras. 2003-04-27 Johan Dahlin * setup.py (py_modules): Install dsextras.py 2003-04-12 Naofumi Yasufuku * pango.defs (pango_context_get_metrics): Allow language parameter to be omitted to get the metrics for the entire font. (pango_itemize): Allow cached_iter parameter to be omitted. (pango_font_description_better_match): Allow old_match parameter to be omitted to determine if new_match is a match at all. (pango_font_get_metrics): Allow language parameter to be omitted to get the metrics for the entire font. (pango_layout_set_font_description): Allow 'None' desc parameter to unset the current font description. (pango_layout_set_tabs): Allow 'None' tabs parameter to reinstate the default tabs. (pango_language_matches): Changed to function. Allow 'None' language parameter which matches nothing but '*'. Fixes #109848 2003-03-24 James Henstridge * pygobject-private.h: add missing "extern" keyword (from Glyph's patch). 2003-03-23 James Henstridge * setup.py: increment version number. * NEWS: add news items. * configure.in (numpy check): fix up check for Numeric and increment version number. 2003-03-21 Johan Dahlin * gtk/gtk.override (_wrap_gtk_tree_store_new): (_wrap_gtk_list_store_new): This two are constructors, not normal function, therefor return -1 as error and 0 as success. Also a big tab/trailing whitespace cleanup. (so the patch is a lot larger than it should be) 2003-03-19 Johan Dahlin * gtk/gdk.defs (get_option): Added. 2003-03-13 James Henstridge * gobjectmodule.c: add doc comments. * pygobject.c: add doc comments. * pygboxed.c: add doc comments. 2003-03-12 James Henstridge * pygtype.c: add some documentation. 2003-03-11 James Henstridge * gtk/gdk.defs (set_back_pixmap): allow passing None for the pixmap argument. * gtk/gtk.override (_wrap_gtk_main_iteration): return boolean (either Py_True or Py_False). (_wrap_gtk_main_iteration_do): same here. (_wrap_gtk_im_context_filter_keypress): and here. (_wrap_gtk_text_attributes__get_strikethrough): and here. (_wrap_gtk_text_attributes__get_draw_bg): and here. * gtk/gtk.override (_wrap_gtk_tree_model_tp_setitem): add a setitem routine for GtkTreeStore and GtkListStore. (_wrap_gtk_list_store_insert): add second argument to allow setting the values in the row when creating it. (_wrap_gtk_list_store_insert_before): same here. (_wrap_gtk_list_store_insert_after): and here. (_wrap_gtk_list_store_prepend): and here. (_wrap_gtk_list_store_append): and here. (_wrap_gtk_tree_store_insert): and here. (_wrap_gtk_tree_store_insert_before): and here. (_wrap_gtk_tree_store_insert_after): and here. (_wrap_gtk_tree_store_prepend): and here. (_wrap_gtk_tree_store_append): and here. * gtk/pygtk-private.h (_pygtk_tree_model_set_row): add prototype. * gtk/gtk-types.c (pygtk_tree_path_from_pyobject): support converting a path string to a GtkTreePath. (_pygtk_tree_model_set_row): new helper function to set a row from a sequence. 2003-03-08 Johan Dahlin * gtk/gdk.defs (gdk_color_new): New placeholder function (gc_new): Set as constructor for GdkGC * gtk/gdk.override (_wrap_gdk_color_tp_setattr) (_wrap_gdk_color_new): Impl 2003-03-06 James Henstridge * pygobject.c (pygobject_register_wrapper): the GObject should own a ref to the wrapper. (pygobject_new): get rid of the hasref code, and make sure that the GObject owns a ref to the wrapper if we create it. (pygobject_dealloc): get rid of the hasref code. If we get this far, the wrapper is dead. (pygobject_traverse): if the GObject's refcount == 1, then traverse to self. (pygobject_clear): clear self->obj and self->inst_dict. (pygobject_register_class): set tp_clear() so that things actually work. Without this, there was no tp_clear method for subclasses of GObject. * pygobject.h: remove hasref member, hopefully not needed if relying on cycle GC. 2003-03-07 Johan Dahlin * gtk/gtk.defs (gtk_label_new_with_mnemonic, gtk_label_new) (render_icon): Allow some parameters to be NULL. * gtk/gtk.override (_wrap_gtk_stock_lookup) (_wrap_gtk_stock_list_ids) (_wrap_gtk_tree_view_insert_column_with_data_func): Impl. (ignore-glob): Remove gtk_accelerator_* * examples/pygtk-demo/demos/stock_browser.py: Ported from C 2003-03-04 Jon Trowbridge * gtk/gtkmodule.c (python_do_pending_calls): Block threads while we make our Py* calls. This prevents a 'no current thread' error if you try to kill a program by typing ctrl-c in the console it was launched from. * pygobject.c (pygobject_dealloc): Unblock threads before invalidating our closures, since this might trigger a destructor that needs to execute python code. (pygobject_clear): Ditto. * pygboxed.c (pyg_boxed_dealloc): Unblock threads before freeing the boxed type, since the destructor may need to execute python code. (pyg_boxed_new): Block threads while we make our Py* calls. (pyg_pointer_new): Block threads while we make our Py* calls. * gobjectmodule.c (pyg_object_set_property): We need to block threads before our call to pygobject_new. (pyg_object_get_property): Ditto. 2003-03-02 Johan Dahlin * gobjectmodule.c (pyg_io_add_watch): Fix function name in exception. 2003-02-27 Johan Dahlin * dsextras.py (getstatusoutput): Small typo. * setup.py: Cut the doclines, to make the windows installer happy 2003-02-26 Johan Dahlin * gtk/gdk.defs (invalidate_rect): Null is okay here. Fixes #106295 (John Finlay). * gtk/gdk.override (_wrap_gdk_pixbuf_new_from_xpm_data): Impl. Fixes #106292 (John Finlay) * pango.override (_wrap_pango_layout_set_text): Impl. Fixes #106280 (John Finlay) * gtk/gtk.override: Added get implements for all TextAttribute fields. Fixes #106279 (John Finlay). * gtk/gtk-types.defs (TextAttributes): Added fields. * setup.py, dsextras.py: Added win32 support and some rearrangements. Largely based upon patch by Cedric Gustin. * gtk/gdk.defs (pointer_grab, pointer_ungrab, keyboard_grab) (pointer_is_grabbed): Add. * gtk/gdk.defs: Add GDK_CURRENT_TIME as default value to all functions that require a time argument 2003-02-24 Gustavo J. A. M. Carneiro * gtk/libglade.override (_wrap_glade_bindtextdomain): Raise exception if bindtextdomain() returns NULL. * gtk/libglade.defs (textdomain): Wrap the textdomain() function. 2003-02-14 James Henstridge * configure.in (export_dynamic): add guard around the export_dynamic flag from GTK_LIBS. (fixes bug 105728). === PyGTK 1.99.15 === 2003-02-08 Johan Dahlin * configure.in, setup.py: Upped version number * pygtk-2.0.pc.in (codegendir): Added. * setup.py: Added Numeric and gtkgl support (gtkgl untested). * dsextras.py: Updated. * gtk/libglade.override (connect_many): Add PyErr_Clear() here. Since PyMapping_GetItemString will raise an AttributeError if the handler can't be found. 2003-01-31 James Henstridge * gtk/gdk.override (_wrap_gdk_draw_rgb_image): add implementation. (_wrap_gdk_draw_rgb_32_image): add implementation. (_wrap_gdk_draw_gray_image): add (_wrap_gdk_draw_rgb_image, _wrap_gdk_draw_rgb_32_image): add xdith and ydith optional arguments, providing the functionality of the _dithalign variants. 2003-01-30 Jon Trowbridge * gtk/gdk.override: Only call import_array if we HAVE_NUMPY. 2003-01-30 James Henstridge * gtk/gdk.override (_wrap_gdk_pixbuf__get_pixel_array): add wrapper that returns a NumPy array. * gtk/gdk-types.defs (Pixbuf): add a "pixel_array" member to pixbuf object. * configure.in (enable_numpy): get rid of code detecting which directory Numeric's arrayobject.h header is in. No point in supporting ancient versions ... 2003-01-30 Gustavo J. A. M. Carneiro * gtk/gtk-types.defs (Layout): Wrap bin_window. 2003-01-24 Johan Dahlin * dsextras.py (InstallLib.add_template_option): Fix template bustage. * gtk/gtk.defs (set_from_image, set_from_file, set_from_pixbuf): Allow NULL here too. This definitly fixes #103559 2003-01-23 Johan Dahlin * gtk/gtkmodule.c (init_gtk): Added a timeout that calls python_do_pending_calls every 100 ms. (python_do_pending_calls): Call PyErr_CheckSignals, so Ctrl-C works as expected inside of gtk_main(). Fixes #72333 2003-01-21 Johan Dahlin * dsextras.py (Template.generate): Import codegen here instead, needs to be fixed in the future though. * Makefile.am (EXTRA_DIST): Added dsextras.py * gobjectmodule.c: Add GMainContext bindings and complete the GMainLoop bindings. Fixes #102362. * dsextras.py: Splitted out from setup.py. It should be reusable for gnome-python and other extensions that uses pygtk. Fixes #103615 * gtk/gtk.override (quit_handler_marshal): Added to here, was generated before. This version handle threads better. Patch from John Finlay, Fixes #103851. 2003-01-20 Johan Dahlin * gtk/gdk.override (_wrap_gdk_event_tp_getattr): Added correct __members__ to all different kind of GdkEvent's. This fixes the dir() output, also reported as #103979 2003-01-19 Johan Dahlin * pygtk.py (_get_available_versions): Check if a directory is empty before adding it to the path. Also added a few comments. Fixes #103876 (Ross Burton). 2003-01-18 Johan Dahlin * gtk/gtk.defs (drag_source_set_icon, set_from_pixmap): Null is okay here. Fixes #103559 (John Finlay) * gtk/gtk.defs (begins_tag, ends_tag, toggles_tag): Add default values. Fixes #103443 (John Finlay) * gtk/gdk.defs (bitmap_create_from_data): Change data parameter from const-gchar to const-guchar. Fixes #103616 (Eddie Kohler) * setup.py: use os.path.join in a few more places * pygobject-private.h: Add PyGMainLoop struct and type * gobjectmodule.c (_wrap_g_main_loop_new, _wrap_g_main_loop_quit) (_wrap_g_main_loop_is_running, _wrap_g_main_loop_run): Added GMainLoop wrapper. (initgobject): Register wrapper in gobject.MainLoop * setup.py: Check for the python version (Template.generate): Use codegen directly instead of os.system() 2003-01-17 Jon Trowbridge * pygobject.c (pygobject_dealloc): In my fix for bug #102756 on 2003-01-08, I should have used calls to pyg_unblock_threads()/ pyg_block_threads() instead of directly calling the Py_BEGIN_ALLOW_THREADS/Py_END_ALLOW_THREADS macros. The macros don't update our local thread lock counts, causing problems in cases where the finalization of one object triggers the finalization of another. (When I say "problems", I of course mean "horrible crashes".) * gtk/gtk-types.c (pygtk_style_helper_dealloc, pygtk_style_helper_setitem, pygtk_tree_model_row_dealloc, pygtk_tree_model_row_iter_dealloc): See above. 2003-01-16 Johan Dahlin * gtk/libglade.override (connect_many) Use PyObject_GetAttrString as a fallback. Remove warning. (_wrap_glade_xml_signal_autoconnect): Don't limit to PyDict_Type. 2002-01-09 Joe Shaw * gtk/gtk.override (_wrap_gtk_icon_size_lookup): Wrap. The width and height are returned as a tuple. 2003-01-09 Joe Shaw * gtk/gtk.override (_wrap_gtk_file_selection_get_selections): Added. Wraps the gtk_file_selection_get_selections() call which has a gchar ** return type, so it wasn't being wrapped. 2003-01-08 Johan Dahlin * setup.py: Make building with threading work (again). 2003-01-08 Jon Trowbridge * pygobject.c (pygobject_dealloc): Wrap Py_BEGIN_ALLOW_THREADS/Py_END_ALLOW_THREADS around the call to g_object_unref. We need to do this because the object finalizers might trigger other code that has to acquire the interpreter lock, causing a deadlock. Fixes #102756. * gtk/gtk-types.c (pygtk_style_helper_dealloc): Wrap the call to g_object_unref in Py_BEGIN_ALLOW_THREADS/Py_END_ALLOW_THREADS. This should let us avoid other instances of bug #102756. (pygtk_style_helper_setitem): Ditto. (pygtk_tree_model_row_dealloc): Ditto. (pygtk_tree_model_row_iter_dealloc): Ditto. * gtk/gdk.override (pygdk_unblock_threads, pygdk_unblock_threads): Restored David I Lehn's patch (#98380). His patch was fine --- it just caused bug #102756 to emerge. 2003-01-07 Johan Dahlin * pygtk.py (_get_available_versions): Rewrite using glob.glob, with python2.2 glob uses fnmatch.filter with is an optimized version of what we did before. _get_available_versions is now roughly 5 times faster. * gtk/gdk.override (pygdk_block_threads, pygdk_unblock_threads): Reverted patch from David I Lehn (#98380) since it caused troubles for other people. * gtk/gtk.defs (gtk_text_tag_new): Add default paramter. * pangomodule.c (initpango): Added SCALE_* constants, patch by John Finlay, fixes #102731. * gtk/gtk.override (_wrap_gtk_text_buffer_create_tag): Modify to accept keyword parameters, largely based upon patch by John Finlay, fixes #102628 * gtk/gtk.defs (GtkTextBuffer.get_slice): default last parameter to TRUE. #102607 (GtkTextBuffer.get_text): ditto. #102607 (GtkTextBuffer.create_mark): Default last param. to FALSE. #102627 * setup.py, MANIFEST.in: Added distutils support * Makefile.am (EXTRA_DIST): Added setup.py and MANIFEST.in here. * .cvsignore: Add build/dist/MANIFEST here 2003-01-06 Jon Trowbridge * gtk/pygtktreemodel.c (pygtk_generic_tree_model_get_path): pyg_unblock_threads was being called twice. 2003-01-05 Johan Dahlin * gtk/libglade.override: protect config.h by an ifdef. 2003-01-01 Johan Dahlin * gtk/gtk.override (_wrap_gtk_text_buffer_insert_at_cursor) (_wrap_gtk_text_buffer_insert_at_cursor) (_wrap_gtk_text_buffer_insert_interactive) (_wrap_gtk_text_buffer_insert_interactive_at_cursor): Wrap, so you don't have to specify the length of the string. For consistency. (It's not slower since Python does always store the length inside the PyStringObject struct). Patch (mostly) by John Finlay, fixes #102186. (_wrap_gtk_text_buffer_get_selection_bounds): Remove unused keyword argument and not up-to-date comment. * gtk/gtk.defs (GtkTreeView.scroll_to_cell): Add default values. * gtk/gtk.override (_wrap_gtk_tree_selection_get_selected): Check the mode before calling gtk_tree_selection_get_selected, this avoids an abort() in gtk+. * pygtk.py: Updated to fix #102180, so .require() can be called twice and won't do anything the second time (eg, not raise an error) based upon patch by warner-gnome.bugzilla@lothar.com 2002-12-29 Johan Dahlin * gtk/gtk.defs (set_cursor): Set default parameters. 2002-12-28 Johan Dahlin * gobjectmodule.c, gtk/gtk.override, gtk/pygtkcellrenderer.c, gtk/pygtktreemodel: Improve threading support by adding pyg_thread_block/unblock around all PyObject_Call* and g_object_refs. Based upon patch by Jon Trowbridge. Fixes #99102. * gtk/gdk-types.defs (ColorSpace): Add. * gtk/gdk.defs (GdkRectangle.intersect, GdkRectangle.union, gdk.atom_intern): Add * gtk/gdk.override (_wrap_gdk_rectangle_intersect): Impl. (_wrap_gdk_rectangle_union): Impl. (doesn't follow the GDK api to 100%, but this is much nicer from a python point of view) 2002-12-28 Jeremy Katz * codegen/codegen.py (GObjectWrapper.get_initial_constructor_substdict): GtkInvisible is a toplevel like GtkWindow and needs to be handled similarly for reference counting. 2002-12-28 Johan Dahlin * gtk/gtk.defs: Added -1 as default to second parameter, patch by John Finlay, fixes #102083. 2002-12-28 James Henstridge * gtk/gtk.override (_wrap_gtk_text_buffer_set_text): get rid of len argument all together. The first argument knows its length. 2002-12-27 James Henstridge * NEWS: add news items. * gtk/__init__.py: if True and False constants don't exist in __builtins__, add them. This way I can rely on them existing. Define gtk.TRUE and gtk.FALSE to True and False. (input_add_full): add extra compatibility name. * configure.in: increment version number. 2002-12-26 James Henstridge * gtk/pygtktreemodel.c (pygtk_generic_tree_model_get_path): this should have been calling on_get_path(), rather than on_get_tree_path(). 2002-12-25 James Henstridge * gtk/gtk.defs (GtkStyle.copy): caller owns return. (GtkRcStyle.copy): same. (GtkIconSet.copy): same. (GtkIconSource.copy): same. (GtkSelectionData.copy): same. (GtkStockItem.copy): same. (GtkBorder.copy): same. (GtkTextIter.copy): same. (GtkTextAttributes.copy): same. (GtkTreePath.copy): same. (GtkTreeIter.copy): same. (GtkRequisition.copy): same. * gtk/gtk.override (_wrap_gtk_layout_get_size): don't return NULL if user asks to register zero stock items. 2002-12-24 James Henstridge * pygobject.c (pygobject_init): add abstract type check here too. (pygobject_init): make this code more similar to pyg_object_new, so that it is easier to fix bugs in the future. (pygobject_chain_from_overridden): check if g_signal_get_invocation_hint() returns NULL. * gobjectmodule.c (pyg_object_new): handle case of no keyword arguments. (pyg_object_new): refuse to instantiate an abstract type. 2002-12-23 James Henstridge * autogen.sh (AUTOMAKE): use automake-1.7 in preference to 1.6. * configure.in (GLIB_LIBS): remove -export-dynamic from flags. 2002-12-22 Johan Dahlin * gtk/gtk.override (_wrap_gtk_text_view_get_location): Impl, patch from John Finlay, fixes 101714. (_wrap_gtk_text_view_get_line_at_y): Impl, patch from John Finlay, fixes 101716. (_wrap_gtk_text_view_get_line_yrange): Impl, patch from John Finlay, fixes 101720. (_wrap_gtk_text_view_get_iter_at_location): Impl, patch from John Finlay, fixes 101722. * examples/pygtk-demo/demos/editable_cells.py: New demo. * examples/pygtk-demo/pygtk-demo.py: Rearrange code a bit. * examples/pygtk-demo/demos/*.py: Clean up a bit. * gtk/gtk.override (_wrap_gtk_tree_view_insert_column_with_attributes): If the first argument (position) is -1, the column will be inserted at the end of the list, there for the new position will be columns - 1. If the columns isn't 1, it will be inserted at the requested position. This makes this function work again. 2002-12-19 Johan Dahlin * gtk/gdk.override: Integrate patch by David I. Lehn, improves threading support, fixes #98380. 2002-12-18 Johan Dahlin * gtk/gtk.override (_wrap_gtk_text_buffer_get_selection_bounds): Impl, based upon patch by John Finlay, fixes #101499. (_wrap_gtk_text_view_get_visible_rect): Impl, patch by John Finlay, fixes #101503. (_wrap_gtk_tree_view_get_visible_rect): Impl, patch by John Finlay, fixes #101505. (_wrap_gtk_tree_view_column_cell_get_size): Impl. 2002-12-17 Johan Dahlin * gtk/gtk.defs (gtk_text_buffer_new): Add (default "NULL"), fixed #101490 (John Finlay). * gtk/gtk.override: ignore gtk_text_view_new. * gtk/gtk.defs (gtk_text_view_new_with_buffer): Add null-ok. Fixes #101489 (John Finlay). 2002-12-11 Johan Dahlin * gtk/gtk.override (_wrap_gtk_tree_view_get_cursor): Make the return value a bit more intelligent and only return what's requested. (_wrap_gtk_tree_view_get_cursor): Another try, this time, don't take any input arguments, always return a tuple with two items (which could be None) (_wrap_gtk_text_buffer_create_tag): Check if the tag exists before inserting into the tag table. Fixes #100668. 2002-12-10 Johan Dahlin * pango.defs (pango_tab_array_new): Add, and make constructor of PangoTabArray. 2002-12-08 Johan Dahlin * gtk/__init__.py (threads_enter): point to gdk.threads_leave, not gdk.threads_enter! Fixes #100623. Thanks Jon Trowbridge. * gtk/gdk.override (_wrap_gdk_event_get_axis): Don't raise an exception when leaving this function, instead look in _PyGdkEvent_methods. (which raises an exception if it's not found) (_wrap_gdk_event_get_axis, _wrap_gdk_event_get_coords) (_wrap_gdk_event_get_root_coords): Impl. 2002-12-05 Johan Dahlin * gtk/gtk.override (_wrap_gtk_tree_selection_get_selected): Impl. Fixes #100389. 2002-12-05 James Henstridge * gtk/gtk.defs (create_pango_context): caller owns return. (create_pango_layout): caller owns return. 2002-12-04 Johan Dahlin * pygtk.py (_get_available_versions): s/os.path.exists/os.path.isdir/ * gtk/gtk.override (_wrap_gtk_tree_store_set) (_wrap_gtk_tree_store_new, _wrap_gtk_list_store_new) (_wrap_gtk_list_store_set): Do an extra check for the number of arguments. Fixes #100349 * pygtk-2.0.pc.in (Requires): Added gobject-2.0. Fixes #97727 * gtk/gtk.override (_wrap_gtk_tree_view_get_cursor): Impl. Fixes #100077 (Dave Cook) (_wrap_gtk_tree_model_iter_nth_child): Allow argument to be None, fixes #99787. Thanks to Rob Melby for patch. * gtk/gdk.defs (keyval_name): add caller-owns-returns false, this prevents the code generator from freeing the return value. Fixes #100103 (Dave Cook) * gtk/gtk.override (_wrap_gtk_tree_view_get_cell_area) (_wrap_gtk_tree_view_get_cell_area) (_wrap_gtk_tree_view_get_background_area): Impl. Fixes #100301 (Dave Cook) * gtk/gtk.override (_wrap_gtk_tree_view_widget_to_tree_coords) (_wrap_gtk_tree_view_tree_to_widget_coords): Impl. Fixes #100302 (Dave Cook) 2002-12-02 Johan Dahlin * gtk/gtk.override (_wrap_gtk_tooltips__get_tips_data_list): Impl. (_wrap_gtk_tooltips__get_tips_data_list): 2002-11-28 Johan Dahlin * pygtk.py (_get_available_versions): If the directory doesn't exist skip it. If not, it breaks when doing os.listdir. 2002-11-24 James Henstridge * gtk/gtk.override (_wrap_gtk_tree_model_tp_getitem): allow you to get a row object from a TreeIter as model[iter]. * gtk/gtk-types.c (pygtk_tree_model_row_get_iter): allow getting an iter from a treemodel row object. * gtk/gdk.override (_wrap_gdk_pixmap_create_from_xpm_d): fix up ParseTuple call arguments (bug 99400). * gtk/gtk.defs (create_mark): allow None to be passed for mark_name argument (bug 99391). 2002-11-20 Joe Shaw * gtk.override (_wrap_gtk_menu_attach_to_widget): Added. Fixes #97963. * pygtktreemodel.c: Add wrap all calls to PyObject_CallMethod() in pyg_block_threads() and pyg_unblock_threads(). Fixes #98344. 2002-11-20 James Henstridge * codegen/argtypes.py (PyObjectArg): arg matcher for "PyObject*" args, from bug #98822. 2002-11-19 James Henstridge * gtk/libglade.override (_wrap_glade_xml_get_widget_prefix): add wrapper. * gtk/gtkobject-support.c: get rid of pyg_handler_marshal and pyg_input_marshal, which were the last bits of code using the old GtkArg APIs in gtk. * gtk/gtk.override: remove wrappers for gtk_idle_add, gtk_timeout_add and gtk_input_add. (_wrap_gtk_quit_add): change so that it doesn't use pyg_handler_marshal. * gtk/__init__.py: set the TRUE and FALSE constants to True and False if possible. Fall back to 0/1 otherwise. (*): bind idle, timeout and input functions to gobject equivalents. * gobjectmodule.c (get_handler_priority): helper function to get priority value as a keyword argument. (pyg_idle_add): convert priority arg to an optional keyword argument. (pyg_timeout_add): and here. (pyg_io_add_watch): and here. 2002-11-18 James Henstridge * gobjectmodule.c (pyg_idle_add): add a wrapper for g_idle_add. (pyg_timeout_add): and a wrapper for g_timeout_add. (pyg_io_add_watch): and a wrapper for g_io_add_watch. (initgobject): add constants. 2002-11-16 James Henstridge * pygobject.c (pygobject_connect_object): set up closure correctly. Fix from bug #96922. (pygobject_connect_object_after): and here. * gtk/gtk.override (_wrap_gtk_text_view_buffer_to_window_coords): (_wrap_gtk_text_view_window_to_buffer_coords): wrap functions. * pango.override: fix up calls to pyg_enum_get_value() so that it doesn't throw an exception when it shouldn't. (_wrap_pango_layout_get_pixel_extents): call get_pixel_extents() like it is supposed to. Fixes bug #93569. * pygtype.c (pyg_value_from_pyobject): if python object is None, set GValue to NULL for boxed, pointer and GObject types. (pyg_value_as_pyobject): convert G_TYPE_POINTER values to gobject.GPointer python objects. (pyg_value_as_pyobject): when converting G_TYPE_BOOLEAN values to python objects, return one of Py_True or Py_False, so that Python 2.3 will return an instance of bool. From patch on bug #96950 * gtk/gdk.override (_wrap_gdk_pixbuf_save): wrapper for GdkPixbuf.save() * codegen/argtypes.py (GdkRectanglePtrArg.write_param): handle GdkRectangle args with (null-ok) set. * gtk/gtk.defs (gtk.Style.paint_*): allow passing None for area, widget and detail arguments. * codegen/docgen.py (DocbookDocWriter.write_method): wrap in a element. (DocbookDocWriter.write_constructor): same here. (DocbookDocWriter.write_params): wrap parameter description in a element to conform to docbook DTD better. (DocbookDocWriter.write_params): add colon to end of terms, like in gtk-doc output. * docs/pygtk-docs.xsl: small changes to produce output more similar to new gtk-doc output. 2002-11-15 James Henstridge * pango.defs (PangoContext.get_metrics): caller owns return value. * gtk/gtk.defs (GtkEntry.set_position): remove function, as it is deprecated and shadows the recommended API. 2002-11-11 Johan Dahlin * gtk/gtk.override: Ignore gtk_entry_select_region (It's deprecated, gtk_editable_select_region should be used instead). thanks Lars Wirzenius. 2002-11-06 James Henstridge * codegen/argtypes.py (BoolArg.write_return): add bool arg that returns Py_True or Py_False (which are instances of the boolean type in Python 2.3). Partial fix for bug 95372. 2002-11-04 Joe Shaw * gtk/pygtkcellrenderer.c (pygtk_generic_cell_renderer_get_size): Prevent NULL dereference by passing in local variables to PyArg_ParseTuple instead of our function arguments. 2002-10-17 Johan Dahlin * gtk/gtk.override: s/arg/argument/ in exception strings. (_wrap_gtk_box_query_child_packing): Use O! + PyGtkWidget_Type to PyArg_ParseTuple... and check so child actually is a child, to prevent returning uninitialized variables. 2002-10-16 Johan Dahlin * gtk/gtk.override (_wrap_gtk_container_child_set_property) (_wrap_gtk_container_child_get_property) (_wrap_gtk_container_child_set) (_wrap_gtk_container_child_get) (_wrap_gtk_container_add_with_properties) (_wrap_gtk_container_foreach): Impl. 2002-09-05 Matt Wilson * gtk/gdk.defs (get_from_drawable): GdkPixbuf.get_from_drawable doesn't actually leak pixbuf, remove caller-owns-return. 2002-09-02 Matt Wilson * gtk/gdk.defs (get_from_drawable, copy, add_alpha, scale_simple composite_color_simple): more caller-owns-return. 2002-08-31 James Henstridge * codegen/docgen.py (DocbookDocWriter.write_params): separate out the code that writes the variable list. 2002-08-30 Sander Vesik * autogen.sh: use automake-1.6/aclocal-1.6 unless otherwise requested 2002-08-30 Matt Wilson * gtk/gdk.defs (pixbuf_new_from_file, pixbuf_new_from_data pixbuf_new_from_xpm_data, pixbuf_new_from_inline): caller-owns-return, to avoid leaking pixbufs 2002-08-26 Joe Shaw * codegen/argtypes.py: Add gsize and gssize as valid integer types. 2002-08-26 James Henstridge * codegen/docgen.py (DocWriter.write_full_hierarchy): fix up misspelling. * pygtype.c (pyg_value_from_pyobject): fix typo from when I was applying Thomas's patch. * codegen/docgen.py (build_object_tree): show interfaces, boxes and pointers in class heirachy. (DocbookDocWriter.write_synopsis): show parent class for interfaces, boxes and pointers in class synopsis. * gtk/gtk-types.defs (CellEditable): CellEditable is an interface, not a GObject. 2002-08-25 James Henstridge * codegen/docgen.py: lots of docbuild updates. * docs/pygtk-docs.xml: add driver file. * docs/build-docs.py: move file to docs directory. * NEWS: update news file. * configure.in: increment version number. 2002-08-24 James Henstridge mingw32 patches from Cedric Gustin : * gtk/gtk.override: ignore more socket/plug functions on win32. * gtk/gdk.override: gdk_pixmap_lookup is not implemented on win32. * gtk/Makefile.am (common_ldflags): and here. * pango.override (PyPangoAttribute_Type): initialise tp_alloc and tp_new in the init() function, rather than in the structure definition itself. * Makefile.am (common_ldflags): pass -no-undefined if we are on windows. * configure.in: turn on win32 DLL support, and add OS_WIN32 and PLATFORM_WIN32 conditionals for use in makefiles. 2002-08-21 Jon K Hellan * codegen/argtypes.py (arg): More char* variants. 2002-08-20 James Henstridge * gtk/gdk.defs (gtk.gdk.Window.set_title): fix up typo. 2002-08-20 Johan Dahlin Patch from Arjan J. Molenaar: * gobjectmodule.c (pyg_type_register): Don't unref borrowed references. 2002-08-19 James Henstridge * codegen/codegen.py (GObjectWrapper.get_initial_constructor_substdict): fix small typo. * gtk/gtk.override (_wrap_gtk_dialog_new_with_buttons): ref the widget after constructing it. (_wrap_gtk_message_dialog_new): same here. * codegen/codegen.py (GObjectWrapper.get_initial_constructor_substdict): add special case code to ref() GtkWindow instances in their constructor, as we don't own the initial reference (it is managed internally by gtk+). This fixes bug #90213. 2002-08-18 James Henstridge * pygtk.spec.in: update spec file. * gtk/Makefile.am: same here. * Makefile.am: install in a gtk-2.0 subdir of site-packages. * pygtk.py: new file to help with pygtk version parallel install. * gobjectmodule.c (pyg_object_set_property): unref object_wrapper. (pyg_object_get_property): unref object_wrapper. (from patch by Arjan Molenaar on bug #71021). * gtk/gtk.defs (TreeView.set_cursor): allow column to be None (fixes bug #91043). * codegen/argtypes.py (ObjectArg.write_return): fix up generated code. * gtk/gtk.override (_wrap_gtk_clist_new_with_titles): don't need to manually sink. (_wrap_gtk_tree_view_column_new): same here. (_wrap_gtk_button_new): same here. (_wrap_gtk_toggle_button_new): same here. (_wrap_gtk_check_button_new): same here. (_wrap_gtk_radio_button_new): same here. (_wrap_gtk_list_item_new): same here. (_wrap_gtk_menu_item_new): same here. (_wrap_gtk_check_menu_item_new): same here. (_wrap_gtk_radio_menu_item_new): same here. (_wrap_gtk_image_menu_item_new): same here. (_wrap_gtk_ctree_new_with_titles): same here. (_wrap_gtk_dialog_new_with_buttons): same here. (_wrap_gtk_message_dialog_new): same here. (_wrap_gtk_progress_bar_new_with_adjustment): same here. * gtk/gtkmodule.c (sink_gtkobject): function to sink a GtkObject if it is floating. (init_gtk): register sink_gtkobject for sinking GtkObjects. * codegen/codegen.py (GObjectWrapper.get_initial_constructor_substdict): get rid of gtkobjectsink bit of code. * pygobject.c (pygobject_register_sinkfunc): new function to register a function to get rid of the floating reference from an object. (sink_object): run a sinkfunc for an object if it has been registered. (pygobject_new): call sink_object (pygobject_register_wrapper): call sink_object. Sat Aug 17 20:02:43 2002 Jonathan Blandford * codegen/argtypes.py (TimeTArg.write_param): Add a time_t parameter type. 2002-08-17 James Henstridge * pygtype.c (pyg_value_from_pyobject): allow None when converting to string GValue (bug picked up by Thomas Leonard. * gtk/gtk.defs (scroll_to_cell): allow column to be None (bug #90398). 2002-08-16 Johan Dahlin * gtk/gdk.defs: Add null-ok to GdkWindow.set_cursor. Fixes #88463. 2002-07-23 James Henstridge * configure.in: updated version number. 2002-07-20 James Henstridge * gtk/pygtkcellrenderer.c (pygtk_generic_cell_renderer_*): fix up arguments, and use "O" format code for PyObject_CallMethod -- can't rely on "N" causing the argument to be unrefed. * gtk/gtk.override (_wrap_gtk_cell_renderer_get_size): cell_area is an argument; not a return. * gtk/gtk.override (GtkTreeModel.tp_as_number): add nonzero method to tree models, so that they evaluate to a truth value even if they have zero elements. (at request of msw). * gtk/gtk-extrafuncs.defs, gtk/gtk.override: add GenericCellRenderer. * gtk/pygtkcellrenderer.[ch]: add "generic" cell renderer code, based on jrb's work. 2002-07-18 James Henstridge * gtk/Makefile.am (glademodule_la_LDFLAGS): fix up -export-symbols-regex flag. (glmodule_la_LDFLAGS): same here. 2002-07-15 James Henstridge * gtk/gtk-types.c (pygtk_tree_model_row_getsets): add next, parent, model and path attributes to row objects. (pygtk_tree_model_row_methods): add an iterchildren() method to row objects. * gtk/gtk.override (pygtk_register_classes): rather than #defines, set the tp_as_mapping and tp_iter members of GtkListStore, etc in the init func. * gtk/gtk.override (_wrap_gtk_list_store_tp_iter): iter(liststore) returns a gtk.TreeModelRowIter object. * gtk/gtk-types.c (PyGtkTreeModelRowIter_Type): new iterator type that returns a sequence of gtk.TreeModelRow objects for nodes under a particular parent node. 2002-07-13 James Henstridge * gtk/gtk.override (GtkListStore.tp_as_mapping): explicitly define this, as PyType_Ready doesn't seem to inherit special methods from secondary bases correctly. (GtkTreeStore.tp_as_mapping): same here. * gtk/gtk-types.c (PyGdkRectangle_to_value): fix up argument ordering bug. * gtk/gtk.override (_wrap_gtk_tree_model_tp_as_mapping): move these mapping behaviours to the GtkTreeModel wrapper. * gtk/gtk-types.c (PyGtkTreeModelRow_Type): rename from GtkListStoreRow, and extend so that it can handle setting cells for tree stores. * build-docs.py (dg): parse template dirs for additional documentation. * codegen/docgen.py (DocWriter.add_tmpldirs): add function to extract docs in the tmpl files. * gtk/gtk.override (_wrap_gtk_list_store_tp_getitem): allow subscripting of a GtkListStore to get row wrappers. (_wrap_gtk_tree_model_get_iter_from_string): add override. * gtk/gtk-types.c: add PyGtkListStoreRow type, that represents a row in a list store. (_pygtk_register_boxed_types): set the ob_type member. 2002-07-12 James Henstridge These changes help with win32 compat. * pygboxed.c (PyGBoxed_Type): set tp_alloc and tp_new to NULL. (PyGPointer_Type): same here. * gobjectmodule.c (PyGInterface_Type): set tp_alloc and tp_new to NULL. (initgobject): set tp_new and tp_alloc for various types. * pygobject.c (PyGObject_Type): set tp_alloc and tp_new to NULL. 2002-07-10 Murray Cumming * codegen/docextract_to_xml.py: Used jamesh's new extract_tmpl() function to get the sgml tmpl files. This file is only used by gtkmm at the moment, not pygtk itself. 2002-07-10 James Henstridge * configure.in: increment version number to 1.99.11. * codegen/argtypes.py (GdkNativeWindow): add arg type. This one also from Thomas Leonard. * gtk/gtk.defs (set_tip): allow tip_private to be NULL, and allow it to be omitted. Fix suggested by Thomas Leonard * gtk/gtkmodule.c (init_gtk): make sure LC_NUMERIC is set to C after gtk_init_check(). * codegen/h2def.py (clean_func): apply patch by David Lehn to correctly handle multi-line preprocessor macros. From bug #81771. (write_func): apply patch by Arjan Molenaar to write out is-constructor-of lines for function definitions that look like they might be constructors (doesn't catch every case, but is better than nothing). From bug #80914. 2002-07-09 James Henstridge * codegen/docextract.py (extract_tmpl): function to extract docs from gtk-doc 'tmpl' files. Takes a list of tmpl/ directories as an argument. Doesn't recurse. Fixes bug 86860. Reworking of Arjan Molenaar's (arjanmolenaar@hetnet.nl) patch from bug 71435. * gtk/libglade.override (connect_one): watch the closure. (connect_many): watch the closure. * gtk/gtk.override (_wrap_gtk_toolbar_append_item): watch closure for signal. (_wrap_gtk_toolbar_prepend_item): same here. (_wrap_gtk_toolbar_insert_item): same here. (_wrap_gtk_toolbar_insert_stock): same here. (_wrap_gtk_toolbar_append_element): same here. (_wrap_gtk_toolbar_prepend_element): same here. (_wrap_gtk_toolbar_insert_element): same here. * pygobject.h (_PyGObject_Functions): add pygobject_watch_closure to the list of exported functions. * pygobject.c (pygobject_watch_closure): new function to watch a closure. We perform cyclic garbage collection on watched closures. The closure will automatically be unwatched when it gets invalidated. (pygobject_traverse): traverse watched closures as well. (pygobject_clear): invalidate all watched closures (pygobject_dealloc): invalidate watched closures on dealloc too. (PyGObject_Type): register the invalidate handler. (pygobject_connect): watch the closure we connect here. (pygobject_connect_after): same here.. (pygobject_connect_object): same here. (pygobject_connect_object_after): same here. * pygtype.c (pyg_closure_new): clean up closure on invalidate, rather than finalize (on invalidate, we break references). * pygobject.h (PyGObject): add closures member to store references to PyGClosures. * gtk/gtk.override (_wrap_gtk_tree_model_iter_next): change so that it returns the next item, rather than modifying the iter. (_wrap_gtk_tree_model_iter_parent): add wrapper, so that we return the parent iter. (_wrap_gtk_tree_model_iter_nth_child): add wrapper. 2002-07-08 James Henstridge * codegen/docextract.py (parse_tmpl): fix up simple loading of tmpl files. * pygobject.c (pygobject_connect): apply another memory leak fix from Arjan (from bug #87413). (pygobject_connect_after): equivalent fix here. (pygobject_connect_object): and here. (pygobject_connect_object_after): and here. * gtk/gtk-types.c (PyGdkRectangle_to_value): add custom boxed handlers for GDK_TYPE_RECTANGLE, so that 4-sequences can automatically be marshaled to GdkRectangle values. 2002-07-07 James Henstridge * pygobject.c (pygobject_get_refcount): add __grefcount__ property. * gtk/gdk.override (_wrap_gdk_event_tp_getattr): return a boxed type for gdk.Event.area for expose events. * gtk/gtk.override (_wrap_gtk_widget_intersect): use pygdk_rectangle_from_pyobject. * codegen/argtypes.py (arg): register GdkRectanglePtrArg handler for "GtkAllocation*". * gtk/gtk.override (_wrap_gtk_paint_polygon): use pygdk_rectangle_from_pyboejct to read rectangle argument. (_wrap_gtk_widget_draw): remove overrides. Should be handled by code generator. (_wrap_gtk_widget_size_allocate): remove this override too. * codegen/argtypes.py (GtkTreePathArg.write_return): update to use this function. (ArgMatcher.register_boxed): short circuit if there is already a handler for the boxed type (helps with setting custom handlers for boxed types). * gtk/gtk-types.c (pygdk_rectangle_from_pyobject): new function to parse a GdkRectangle from a PyObject. * gtk/pygtktreemodel.c (pygtk_generic_tree_model_get_path): print a warning if the return value could not be converted to a GtkTreePath. * gtk/gtk.override (_wrap_gtk_tree_model_get_value): don't assume tree paths are tuples. * codegen/argtypes.py (GtkTreePathArg.write_param): fix up code generator to get rid of assumption that tree paths are tuples, and catch case where pygtk_tree_path_from_pyobject() returns NULL. * gtk/gtk-types.c (pygtk_tree_path_from_pyobject): change so that we treat an integer PyObject as a tree path with a single index. * pygtype.c (pyg_closure_marshal): apply patch from Arjan Molenaar that fixes a reference leak for the argument tuple passed to the callback. (pyg_signal_class_closure_marshal): apply similar fix here. Thu Jul 4 10:58:51 2002 Jonathan Blandford * gtk/gtk-types.defs (TreeModelSort): We also implement GtkTreeSortable. * gtk/gtk.defs (gtk_tree_model_sort_new_with_model): get the right is-constructor-of value. 2002-06-30 James Henstridge * gtk/gtk.override (pygtk_menu_position): fix up menu position func (fixes bug #85994). 2002-06-27 James Henstridge * gtk/gtk.defs (check_version): caller does _not_ own the returned string. Bug found by Anders Carlsson. 2002-06-24 James Henstridge * gtk/gtk.defs (drag_source_set_icon_pixbuf): fix definition, as reported by Thomas Leonard Sun Jun 23 11:10:30 2002 Jonathan Blandford * pygboxed.c: Add GBoxed::copy * pygobject.c (pygobject_init): take kwargs so we can pass construct-only arguments to our initialization function. 2002-06-23 James Henstridge * examples/simple/scribble.py: update example to work with current PyGTK. * gtk/gtk.override (_wrap_gtk_tree_sortable_get_sort_column_id): copy boxed arguments. * pygobject.h: fix up prototypes. * gobjectmodule.c (pyg_object_set_property): copy boxed arguments. * pygobject.c (pygobject_get_property): copy boxed arguments here. (pygobject_emit): same here. (pygobject_chain_from_overridden): same here. * pygtype.c (pyg_value_as_pyobject): add "copy_boxed" argument to this function. (pyg_closure_marshal): pass FALSE for copy_boxed argument. (pyg_signal_class_closure_marshal): same here. 2002-06-19 Matt Wilson * gtk/gtk.override (_wrap_gtk_ctree_insert_node): check the correct value when setting the sibling. Patch from Tim Waugh 2002-06-18 Matt Wilson * gtk/gtk.override (_wrap_gtk_tree_sortable_get_sort_column_id): implement GtkTreeSortable.get_sort_column_id 2002-06-18 James Henstridge * gtk/gtkgl.override (_wrap_gtk_gl_area_share_new): constructors return ints. * gtk/gdk.override, gtk/gtk.override: ignore all _ref() or _unref() functions. * codegen/argtypes.py (BoxedArg.write_return): fix up handling of ownsreturn for Boxed return types. 2002-06-17 Matt Wilson * pygtype.c (pyg_value_as_pyobject): if a value holds a PyObject*, the code that is getting the value is expecting a valid object. Translate NULL pointers to Py_None. 2002-06-17 Johan Dahlin * pango.defs: added PangoLayout.set_text Mon Jun 17 09:52:45 2002 Jonathan Blandford * gtk/gtk-types.defs: Add GtkRequisition * gtk/gtk.override: Add GtkRequisition 2002-06-15 James Henstridge * gobjectmodule.c (pyg_error_check): decref the exception instance after raising the error. Fri Jun 7 12:39:27 2002 Jonathan Blandford * gtk/gtk.override (pygtk_tree_selection_foreach_marshal): fix GtkTreeSelection::get_selected() 2002-06-09 James Henstridge * codegen/argtypes.py (BoxedArg.write_param): if the ptype is different to self.typecode, cast the event * gtk/gdk-types.defs (EventExpose): remove definition, as it breaks stuff. 2002-06-04 Matt Wilson * gtk/gtk-extrafuncs.defs (set_all): add GtkAdjustment.set_all * gtk/gtk.override (_wrap_gtk_adjustment_set_all): implement, for compatibility with PyGtk 0.6.x. Mark it as deprecated. (_wrap_gtk_adjustment__set_value) (_wrap_gtk_adjustment__set_lower) (_wrap_gtk_adjustment__set_upper) (_wrap_gtk_adjustment__set_step_increment) (_wrap_gtk_adjustment__set_page_increment) (_wrap_gtk_adjustment__set_page_size): implement setters for GtkAdjustment.{value, lower, upper, step_increment, page_increment, set_page_size} 2002-06-03 Matt Wilson * gtk/gtk.override (_wrap_gtk_tree_view_insert_column_with_attributes): implement (code mostly from jrb@redhat.com, minor fixups from me) * gtk/gdk-types.defs (EventExpose): added to make the code generator write GdkEventExpose * for _wrap_gtk_container_propagate_expose (gets rid of a warning) 2002-05-31 Matt Wilson * examples/pygtk-demo/demos/list_store.py (fixed_toggled): the path argument must be a tuple. Ints are not automatically converted to tuples any more. * pygtype.c (pyg_value_as_pyobject): change the behavior of G_TYPE_UINT to match the code generator's output on 32 bit systems. 2002-05-19 James Henstridge * gtk/Makefile.am (pygtk_PYTHON): install compat.py 2002-05-18 Matt Wilson * gtk/gtk.override (_wrap_gtk_editable_insert_text): add length and pos as keywords, allow user to override the length of text to be added (like other text insert functions) 2002-05-16 James Henstridge * pygtype.c (pyg_value_from_pyobject): add support for G_TYPE_INTERFACE, provided the interface has a prereq on G_TYPE_OBJECT. (pyg_value_as_pyobject): same here. 2002-05-14 James Henstridge * pygtype.c (pyg_value_from_pyobject): add handler for G_TYPE_PARAM (fix bug #81695). (pyg_value_as_pyobject): same in this function. * codegen/argtypes.py (ULongArg): use 'O!' format code, so we can reduce the size of the extra code we output. (Int64Arg): add arg handler (to solve bug #81694). (UInt64Arg): add arg handler (bug #81694 again). (ObjectArg.write_param): simplify output code using O! code for the normal and default value cases. 2002-05-13 James Henstridge * configure.in: increment version number. * codegen/definitions.py (MethodDef.__init__): skip the caller_owns_return bit if no return value clause given. (FunctionDef.__init__): same here. 2002-05-12 James Henstridge * codegen/argtypes.py (ObjectArg.write_return): add handler for ownsreturn case for GObjects. (BoxedArg.write_return): and for boxed types ... (GtkTreePathArg.write_return): handle ownsreturn. 2002-05-10 James Henstridge * codegen/argtypes.py (StringArg.write_return): make this handler actually look at the ownsreturn argument. This fixes a crasher when reading string type attributes (it was freeing the struct member!). 2002-05-09 James Henstridge * gtk/gtkgl.defs: get rid of gtk_gl and gdk_gl prefix on some functions. * codegen/codegen.py (Wrapper.write_function_wrapper): pass caller_owns_return as argument to write_return. (Wrapper.write_getsets): add extra arg to write_return() call. * codegen/argtypes.py (*.write_return): add an extra "ownsreturn" argument to all write_return functions. * codegen/definitions.py (MethodDef.__init__): read a caller_owns_return variable. It defaults to false if ommitted, unless we have a string return. (FunctionDef.__init__): same here, but also make caller_owns_return true for constructors. 2002-05-08 James Henstridge * gtk/gtk.override (_wrap_gtk_tree_model_get_value): fix typo. I should test these things before committing. 2002-05-05 James Henstridge * gtk/gtk.override (gtk_tree_sortable_set_sort_func): implement. (gtk_tree_sortable_set_default_sort_func): implement. * gtk/compat.py: start of compatibility module. * gtk/gtk.override (_wrap_gtk_tree_model_foreach): fix up foreach handler. (_wrap_gtk_tree_model_get_iter): change to take a single argument as the path, as discussed in bug 75811. 2002-05-04 James Henstridge * Makefile.am (EXTRA_DIST): add extra files to dist (from bug #79872). * gtk/gtk.defs (set_from_pixmap): allow NULL pointer passed for mask. * gtk/gtk.override (pygtk_tree_foreach_marshal): pass model, path and iter to the callback. (_wrap_gtk_tree_model_foreach): implement. 2002-04-29 Matt Wilson * codegen/argtypes.py (ULongArg): implemented an argtype to handle guint32 (on 32 bit platformas) and gulong arguments such that large values (>MAX_INT on 32 bit platforms) don't overflow. 2002-04-25 Matt Wilson * gtk/gtk.defs (gtk_spin_button_new): s/gbutton/gdouble/ from Art Haas. 2002-04-25 James Henstridge * codegen/argtypes.py (ArgMatcher.get): add hack to match GdkEvent* and use the GdkEvent handler. * gtk/gtk.override (_wrap_gtk_text_iter_get_char): remove wrapper, as arg type covers this case fine. * codegen/argtypes.py (GUniCharArg.write_return): add code for handling gunichar returns. (GUniCharArg.write_param): and support for gunichar parameters. 2002-04-23 James Henstridge * gtk/gtk-types.c: remove old commented out GdkGC implementation. 2002-04-22 James Henstridge * gtk/Makefile.am (EXTRA_DIST): same here. * Makefile.am (EXTRA_DIST): include windows make stuff. * gtk/gdk.override (_wrap_gdk_gc_tp_setattr): don't allow setting attributes on GdkGC instances. Simplifies things a bit. 2002-04-21 Hans Breuer * codegen/codegen.py : added parameter --errorfilename to allow redirection of stderr even with clumsy windoze shell * codegen/override.py : extended to allow 'sys.platform' specific ignores * examples/pygtk-demo/demos/colorsel.py : use color = gtk.gdk.color_parse("blue") to get the initial color * examples/pygtk-demo/demos/draw.py : (new file) demonstrating some simple drawing operations. It is using the gtk.GC interface additions below. * gtk/gdk.override : implement GdkGC.tp_getattr, GdkGC.tp_setattr and gdk_gc_set_dashes (ported from #if 0'ed code in gtk/gtk-types.c (should be removed there ?) * gtk/gtk.override : ignore-win32 GTK_TYPE_PLUG GTK_TYPE_SOCKET gtk_socket_new (the TYPE ignores do not work yet) * config.h.win32 makefile.msc pygtk/makefile.msc : new files to build pygtk on windoze using the established glib/build/win32 infrastructure * pygtk/gtk/gtk-fake-win32.c : (new file) implementing gtk_plug_get_type() and gtk_socket_get_type(). It could vanish if codegen/codegen.py has learned something like 'ignore-class-$(sys.platform) or my GtkPlug/GtkSocket patch gets accepted with Gtk. * gtk/gtkmodule.c : added a g_assert() to ensure importing pygobject did work. 2002-04-21 James Henstridge * gtk/gtk.override (_wrap_gtk_drag_dest_find_target): implement. (_wrap_gtk_drag_dest_get_target_list): implement. (_wrap_gtk_drag_dest_set_target_list): implement. 2002-04-20 James Henstridge * gtk/gtk.override (_wrap_gtk_container_get_children): implement. (_wrap_gtk_container_set_focus_chain): implement. (_wrap_gtk_container_get_focus_chain): implement. 2002-04-19 James Henstridge * gtk/gtk.override (_wrap_gtk_text_buffer_insert_with_tags): implement. (_wrap_gtk_text_buffer_insert_with_tags_by_name): implement. (_wrap_gtk_text_child_anchor_get_widgets): implement. (_wrap_gtk_tree_view_column_get_cell_renderers): implement. (_wrap_gtk_tree_view_column_set_attributes): implement. 2002-04-18 James Henstridge * gtk/gtk.override (_wrap_gtk_selection_data_get_targets): implement. (_wrap_gtk_tree_get_row_drag_data): implement. (_wrap_gtk_im_context_get_preedit_string): implement. (_wrap_gtk_im_context_filter_keypress): implement. (_wrap_gtk_im_context_get_surrounding): implement. (_wrap_gtk_paint_polygon): implement. * gtk/gtk-types.defs (CellEditable): add CellEditable interface. * codegen/h2def.py (strip_comments): add function to strip comments, and get rest of script to use it. This one doesn't use RE's, so it doesn't cause a stack overflow when parsing atkobject.h. * gtk/libglade.defs (get_toplevel_names): remove def, as it isn't in the libglade API anymore. 2002-04-16 Matt Wilson * gtk/libglade.override (_wrap_glade_bindtextdomain): added wrapper which will allow user to bind a textdomain. Also sets the codeset to UTF-8 if bind_textdomain_codeset is available. * config.h.in: added HAVE_BIND_TEXTDOMAIN_CODESET * configure.in: check for bind_textdomain_codeset * gtk/libglade.defs (bindtextdomain): added extra function to implement gtk.glade.bindtextdomain * gtk/gtk.override (pygtk_cell_data_func_marshal, _wrap_gtk_tree_view_column_set_cell_data_func): added wrapper for GtkTreeViewColumn.set_cell_data_func from Jonathan Blandford 2002-04-17 James Henstridge * gtk/gtk.defs, gdk/gdk.defs: updates to match final gtk 2.0 APIs. 2002-04-15 James Henstridge * pango.override: add a PangoAttribute wrapper type, constructors for various attributes, and methods for inserting attributes in a PangoAttrList. * pango.defs, gtk/gdk.defs: add missing definitions. 2002-04-12 Xavier Ordoquy * configure.in: * gtk/Makefile.am: Added the gtk.gl module. * gtk/gtkgl.defs: * gtk/gtkgl.override: * gtk/gtkglmodule.c: (initgl): Updated the gtkgl module and changed the name to gtk.gl * examples/gl/dots.py: Updated example but still needs some work. * examples/gl/cone.py: * examples/gl/gears.py: Updated working examples. 2002-04-10 James Henstridge * gtk/gtk.defs: remove deprecation messages for many GtkList and GtkListItem methods, as they are still required for the non deprecated GtkCombo. GtkList's constructor is still marked deprecated. * gtk/gtk.override (_wrap_gtk_text_iter_get_char): don't raise an exception for unicode chars > 0xffff if we have 32 bit unicode chars in python. 2002-04-08 James Henstridge * pango.override (_wrap_pango_glyph_string_get_logical_widths): add wrapper. (_wrap_pango_parse_markup): add wrapper. 2002-03-28 Johan Dahlin * gtk/gdk.defs: Add functions from gdkkeys.h * gtk/gdk-types.defs: Add GdkKeymap object 2002-03-22 James Henstridge * gtk/libglade.override (connect_many): don't decref the return value of PyDict_GetItemString(). 2002-03-22 Johan Dahlin * codegen/codegen.py: move type_tmpl to Wrapper class, saves 100 loc 2002-03-22 James Henstridge * codegen/codegen.py: code generator refactoring. Reduces file length by 500 lines, and fixes a few bugs in the process. 2002-03-19 Matt Wilson * autogen.sh: allow override of autoconf and autoheader * gtk/gtk.defs (GtkTreeModel.get_iter_root): use the gtk_tree_model_get_iter_first code, get_iter_root is going to be deprecated. (GtkTreeModel.get_iter_first): added * gtk/gtk.override (_wrap_gtk_tree_model_get_iter_root): check the return value of gtk_tree_model_get_iter_root and return None if it failed. Rename to _wrap_gtk_tree_model_get_iter_first. * codegen/codegen.py (write_class, write_interface, write_boxed write_pointer): use overrides.is_already_included to prevent from having the same override code included twice in one file. This allows two methods to point to the same function. * codegen/override.py (Overrides.is_already_included): added a function that returns true if the override code has been emitted already. 2002-03-11 Matt Wilson * gobjectmodule.c: remove pygobject_exception_notifiers and pyg_fatal_exceptions_notify. 2002-03-18 James Henstridge * pango.defs: remove indic functions -- they are part of the semi-public engine API. Remove pango-module functions -- backend API. * pango.override (_wrap_pango_layout_move_cursor_visually): implement. (_wrap_pango_layout_xy_to_index): implement. (_wrap_pango_layout_get_extents): implement. (_wrap_pango_layout_get_pixel_extents): implement. (_wrap_pango_layout_get_size): implement. (_wrap_pango_layout_get_pixel_size): implement. (_wrap_pango_glyph_string_extents): implement. (_wrap_pango_glyph_string_extents_range): implement. 2002-03-17 James Henstridge * pango.override (_wrap_pango_context_list_families): implement. (_wrap_pango_font_get_glyph_extents): implement. (_wrap_pango_font_family_list_faces): implement. (_wrap_pango_font_map_list_families): implement. (_wrap_pango_tab_array_get_tab): implement. (_wrap_pango_tab_array_get_tabs): implement. (_wrap_pango_layout_set_markup): implement. (_wrap_pango_layout_set_markup_with_accel): implement. (_wrap_pango_layout_index_to_pos): implement. (_wrap_pango_layout_get_cursor_pos): implement. * gtk/gtk.override (ignore): ignore the GtkMenu append, insert and prepend methods (they are deprecated and shadow the methods you should use ...). (_wrap_gtk_image_menu_item_new): add wrapper for GtkImageMenuItem constructor (from bug 71893). * gtk/gdk.override (_wrap_gdk_pixbuf_get_pixels): implement get_pixels to return the pixels as a string. * codegen/argtypes.py (GdkRectangleArg.write_return): fix up problem with return type found by Peter Kese. 2002-03-16 James Henstridge * pygtype.c (add_property_docs): fix up property listing. * gtk/libglade.override: add modulename directive. * gtk/gdk.override: add modulename directive. * gtk/gtk.override: add modulename directive. * atk.override: add modulename directive. * pango.override: add modulename directive. * codegen/codegen.py (write_class): if override.modulename is set, put it into the classname. (write_interface): same here. (write_boxed): same here. (write_pointer): same here. * codegen/override.py (Overrides.__parse_override): add support for a "modulename" directive for overrides files. * gtk/gtk-types.c (PyGtkStyleHelper_Type): add module name to type name, and remove the commented out obsolete GdkColormap implementation. * gtk/gtk.override (_wrap_gtk_widget_get_pointer): return a GdkRectangle instance. * gtk/gdk.override: implement setters for GdkRectangle attributes. * codegen/codegen.py (write_getsets): allow people to override the setter without having to override the getter too. (write_boxed_getsets): same here. * gtk/gdk.override: implement sequence behaviour for GdkRectangle wrapper. * gtk/gdk-types.defs (Rectangle): add a GdkRectangle boxed type definition. * pango.override (_wrap_pango_font_description_tp_compare): override the compare slot to use pango_font_description_equal. (_wrap_pango_font_description_tp_hash): and the hash function. * atk.override (_wrap_atk_relation_new): remove unused variable. * gtk/gtk-types.defs (Window): transient_parent field is a GtkWindow, rather than a GtkWidget. * gtk/gtk.override (_wrap_gtk_ctree_node_tp_getattr): same here. * gtk/gdk.override (_wrap_gdk_event_tp_getattr): change to "override-slot". * codegen/codegen.py (slots_list): a list of slots that we allow overriding of. (typetmpl): add extra substs for some slots. (write_class): add code that sets up the slot substitutions. (interfacetypetmpl): add slot substitutions. (boxedtmpl): add slot substitutions. (write_interface): add code to set slots. (write_interface): add code to set slots, and get rid of the old getattr handling. * codegen/override.py (Overrides.__parse_override): add support for an "override-slot" section to overrides file for overriding a slot in the PyTypeObject vtable. * gtk/gtk.override (_wrap_gtk_selection_data_get_text): add an override for this -- it was the only one correctly making use of * codegen/argtypes.py (UCharArg.write_param): unimplement. (guchar *) does not mean unicode, and often uchar returns are just date (eg. pixbuf data). gtk_selection_data_get_text is the exception. 2002-03-15 James Henstridge * gtk/gdk.override (_wrap_gdk_colormap_alloc_color): new function to allocate colours. (_wrap_gdk_color_alloc): new wrapper that shows a deprecation warning, and calls alloc_color. 2002-03-10 James Henstridge * gtk/pygtktreemodel.c: apply Arjan Molenaar's patch to allow selectively making the model leak free (although prone to crashing if you aren't careful). * gtk/pygtktreemodel.h: add a leak_references member. 2002-03-10 Johan Dahlin * gtk/gtk-types.defs (Window): Add 33 new fields 2002-03-10 James Henstridge * gtk/gtk-types.c: remove commented out GtkStyle code, as the GObject based code now provides all the missing features. * gtk/gtk.override: implement getters (and some setters) for GtkStyle properties. * gtk/gtk-types.c (_pygtk_style_helper_new): upgrade the style helper code to work with gtk 2.0. * gtk/gtk-types.defs (Style): add public fields of the GtkStyle object. * codegen/codegen.py (write_getsets): allow adding setters for overriden properties (just do a string search for the setter function prototype). (write_boxed_getsets): same here. 2002-02-19 James Henstridge * gtk/gtk-types.defs (MessageDialog): add some fields for the label and icon. These are marked private, but they are very useful if you want to change the message in a dialog. * ChangeLog: spell Michele's name correctly (sorry!). 2002-03-06 Johan Dahlin * gtk/gtkmodule.c (init_gtk): If sys.argv is NULL, don't call PyList_Size and don't call PySys_SetArgv if argc and argv is NULL. Bug fix so non gtk stock icons is correctly skipped. 2002-02-28 Johan Dahlin * gtk/gdk.defs: Add functions from gdk-pixbuf-loader.h * gtk/gdk-types.defs: Add GdkPixbufLoader object 2002-02-27 Matt Wilson * configure.in: increase micro version of package (1.99.8) 2002-02-25 Johan Dahlin * examples/pygtk-demo/pygtk-demo.py: Use set_size_request instead of set_usize * gtk/gtk.override (_wrap_gtk_widget_translate_coordinates): Impl (_wrap_gtk_editable_get_selection_bounds): Impl (_wrap_gtk_entry_get_layout_offsets): Impl * gtk/gtk.defs: Add GtkTreeView.columns_autosize Remove GtkTreeViewColumn.cell_renderer/cell_focus/ cell_draw_focus/cell_is_visible_cell_set_dirty * gtk/gtk-types.defs: Add a few fields * examples/pygtk-demo/demos/appwindow.py: clean up a bit and add broken stock icon registration 2002-02-21 Johan Dahlin * gtk/gtk.defs: Removed gtk_tree_view_column_cell_render, gtk_tree_view_column_cell_focus, gtk_tree_view_column_cell_draw_focus and gtk_tree_view_column_cell_set_dirty since they're now private in gtk+. 2002-02-18 James Henstridge * gtk/gtk.defs (create_item): remove defs for removed GtkItemFactory functions. Fixes bug #69815. 2002-02-12 Johan Dahlin * gobjectmodule.c (initgobject): Fix a leak * gtk/gtkmodule.c (init_gtk): Fix another one 2002-02-06 Matt Wilson * gtk/gtk.override (_wrap_gtk_icon_set_get_sizes): added an override that will allow making an empty iconset, thus allowing you to add modified sources to it. 2002-02-05 Johan Dahlin * examples/pygtk-demo/demos/list_store.py: add toggle for the check box column. 2002-02-05 James Henstridge * codegen/codegen.py (register_types): register pointer types as well. * codegen/argtypes.py (PointerArg): handling for pointer arg types. (ArgMatcher.register_pointer): add function to register pointer types. * gtk/gtk.override (_wrap_gtk_ctree__get_selection): GtkCTreeNode is not a boxed type. (_wrap_gtk_ctree_base_nodes): same. (_wrap_gtk_ctree_insert_node): same. (_wrap_gtk_ctree_find_by_row_data): same. (_wrap_gtk_ctree_find_all_by_row_data): same. (_wrap_gtk_ctree_node_get_text): same. (_wrap_gtk_ctree_node_get_pixmap): same. (_wrap_gtk_ctree_node_get_pixtext): same. (_wrap_gtk_ctree_get_node_info): same. (_wrap_gtk_ctree_node_set_row_data): same. (_wrap_gtk_ctree_node_get_row_data): same here. (_wrap_gtk_ctree_getattr): same here. * codegen/codegen.py (write_source): register pointer types as pointers. * pango.override (_wrap_pango_font_description_new): ignore some private (well, pango module API) functions. * gtk/gtk-types.defs (CTreeNode): make this a pointer type. * codegen/codegen.py (write_pointer_method): new method to write methods for GPointer types. (write_pointer_constructor): new function for writing constructor for GPointer types. (write_pointer_getsets): new function for writing getters for pointer objects (this should be merged with the GObject and GBoxed versions ...). (write_pointer): add new function, which calls all the GPointer related functions. (write_source): write pointer types. * gobjectmodule.c (initgobject): actually ready the GPointer type. * gtk/gtk-types.defs (CTreeNode): get rid of fields here. They will be covered by the custom getattr() function, so no need to duplicate. * codegen/codegen.py (write_boxed_getsets): convert to use getsets for boxed objects. (write_boxed): use write_boxed_getsets() to write the getsets, while allowing boxed objects to specify a getattr() function. 2002-02-04 James Henstridge * gobjectmodule.c (initgobject): add GPointer to the module dict. (pygobject_api_functions): and to the API vtable. * pygobject.h (pyg_constant_strip_prefix): and add it to the public header. * pygobject-private.h (pyg_pointer_new): add stuff to private header ... * pygboxed.c (PyGPointer): add code to handle base GPointer type. * codegen/defsparser.py (DefsParser.__init__): add self.pointers attribute. (DefsParser.define_pointer): handle (define-pointer ...). (DefsParser.write_defs): handle pointer types. * codegen/definitions.py (PointerDef): new definition type for G_TYPE_POINTER subclasses. 2002-02-04 Richard Hestilow * gtk/gtk.override (gtk_cell_renderer_get_size, get_fixed_size): Don't call pygobject_get, just pass in v->obj. 2002-01-31 James Henstridge * configure.in: increment version number of package and requirements. Change -ansi to -std=c9x to work arround potential problems with gcc 2.95.x. * gtk/libglade.override (connect_one): fix up signature on function. (connect_many): same here. 2002-01-28 James Henstridge * gobjectmodule.c (pyg_type_register): same code here, if __doc__ hasn't already been set. (initgobject): don't bother setting __doc__ on GObject here, as pygobject_register_class() does this for us. * pygobject.c (pygobject_register_class): need to set the __doc__ descriptor on every class, otherwise it gets lost. 2002-01-24 James Henstridge * examples/pygtk-demo/demos/colorsel.py: * examples/pygtk-demo/demos/dialogs.py: * examples/pygtk-demo/demos/panes.py: * examples/pygtk-demo/demos/sizegroup.py: add examples translated by Michele Campeotto. * gtk/gtk.override (_wrap_gtk_stock_add): add gtk.stock_add() function from Skip (bug 68363). (_wrap_gtk_layout_get_size): add gtk.Layout.get_size() routine -- from Skip (bug 68930) (_wrap_gtk_frame_get_label): added function from Skip (bug 69024) (_wrap_gtk_misc_get_alignment): same here. (_wrap_gtk_ruler_get_range): same here. * examples/simple/simple.py: updated to use gobject.new(). * examples/simple/hello.py: updated version from Steve George. (bug 67602) * pygtype.c (add_signal_docs): use g_string_append_printf(). (add_property_docs): same here. * examples/simple/tooltip.py: updated version from Steve George. (bug 67581). 2002-01-23 James Henstridge * pygtype.c (object_doc_descr_get): fill in __doc__ descriptor (add_property_docs): fix small bug. (add_signal_docs): only get the class for a type if it is a classed type. * gobjectmodule.c (initgobject): add __doc__ descriptor to GObject and GInterface. Add __gdoc__ as a synonym because type.__doc__ masks our descriptor sometimes :( * pygtype.c (object_doc_descr_get): skeleton of the __doc__ descriptor. (PyGObjectDoc_Type): type definition. (pyg_object_descr_doc_get): function to create and return the __doc__ descriptor (we only need one for all classes). 2002-01-22 James Henstridge * pygobject.c: move GObject wrapper stuff here. 2002-01-22 Johan Dahlin * codegen/codegen.py: Fix comments so jed can highlight correctly. * codegen/argtypes.py: Add GdkRectangleArg and GdkRectanglePtrArg * gtk/gtkgl.override: call pyg_block_threads instead of old pygtk_block_threads. * gtk/gtk.override: Don't ignore gtk_paint* * gtk/gtk.defs: Remove Container.border_width (GtkIconSet.icon_set_new_from_pixbuf): Make constructor of GtkIconSet instead of gtk_icon_Set_new (GtkStyle.draw_oval) (GtkStyle.draw_cross) (GtkStyle.draw_ramp) Remove. (GtkStyle.draw_type): Add state_type parameter * gtk/gtk-types.defs (Widget): Add allocation field (Container): add fields. * gtk/gdk-types.defs: Remove GdkRectangle 2002-01-22 James Henstridge * pygtype.c: move closure stuff here. * gobjectmodule.c (initgobject): don't create boxed_marshal hash table, and remove the type functions moved to pygtype.c. * pygtype.c: move GType stuff here from gobjectmodule.c. (pyg_register_boxed_custom): store the custom boxed marshal functions as GType data, rather than in a separate hash table. 2002-01-21 James Henstridge * Makefile.am (gobjectmodule_la_SOURCES): list extra source files. * pygobject-private.h (pyg_boxed_new): new header for functions shared between files in gobjectmodule. * pygboxed.c (pyg_register_boxed): move GBoxed handling code here. 2002-01-21 Matt Wilson * gtk/gtk.override (_wrap_gtk_radio_button_get_group): implemented GtkRadioButton.get_group 2002-01-16 James Henstridge * gtk/gtk.override (_wrap_gtk_toolbar_append_element): remove '!' signs that shouldn't have been there. (_wrap_gtk_toolbar_prepend_element): same here. (_wrap_gtk_toolbar_insert_element): and again. 2002-01-14 James Henstridge * codegen/codegen.py (main): add a --load-types argument that runs a python script before commencing code generation. The idea is to allow loading of extra argument type handlers. * gtk/libglade.override (connect_one): s/ignore_glob/ignore-glob/ 2002-1-13 Johan Dahlin * gtk/Makefile.am: Register gtk-types here, so XML.get_widget works. 2002-01-12 James Henstridge * gobjectmodule.c (pyg_type_from_object): convert None, int, long, float, str and object to GTypes. * gtk/gtkmodule.c (init_gtk): only raise a runtime error if we can't initialise gtk. 2002-01-11 Matt Wilson * Makefile.am (EXTRA_DIST): added appwindow.py * examples/pygtk-demo/demos/appwindow.py: added demo * gtk/gtk.override (_wrap_gtk_toolbar_insert_stock): removed debugging code I didn't mean to check in. * gobjectmodule.c (pyg_closure_new): use PyTuple_SetItem to build the tuple if extra_args isn't one. It's faster than using abstractions and clarifies ownership rules, so we always incref extra_args even if we're about to wrap it in a tuple. Fixes crashes when passing callback functions into GtkToolbar.{append_item,prepend_item,insert_item,insert_stock, append_element} 2002-01-11 Matt Wilson * codegen/argtypes.py (GtkTreePathArg.normal): added missing newline * gtk/gtk.defs (item_factory_path_from_widget): the return here should be gconst-gchar*. The header in gtk is wrong, filed #68527 against gtk. * gtk/gtk.override (pygtk_item_factory_cb): if the user passed data to GtkItemFactory.create_items, call the callable with the function data as the first parameter. (_wrap_gtk_item_factory_create_items): take an optional callback_data argument. Use PyGtkCustomNotify and g_object_weak_ref to free up the reference to the callable and data after the item factory is freed. 2002-01-11 James Henstridge * codegen/h2def.py (find_obj_defs): handle typedef struct { ... } style type defs, as used in bonobo. 2002-01-09 Matt Wilson * codegen/argtypes.py (GtkTreePathArg.freepath): added missing newline. * gtk/gtk.override (pygtk_tree_foreach_marshal, pygtk_tree_selection_marshal): handle exceptions raised in callback func. 2002-01-08 James Henstridge * gtk/__init__.py (threads_*): provide these functions in the gtk namespace as well as gtk.gdk. 2002-01-07 James Henstridge * examples/pygtk-demo/demos/itemfactory.py (main): the F10 key is used to start navigating the menu -- not alt. * gtk/gtk-types.c (PyGtkStyleHelper_Dealloc): use PyObject_DEL. (PyGtkStyle_Dealloc): same here. (PyGdkWindow_Dealloc): same here. (PyGdkGC_Dealloc): same here. (PyGdkColormap_Dealloc): same here. (pygdk_atom_dealloc): same here. * gobjectmodule.c (pyg_type_wrapper_dealloc): use PyObject_DEL to prevent segfaults with pymalloc. (pyg_param_spec_dealloc): same here. * gtk/gtkmodule.c (init_gtk): get rid of g_thread_init() call -- this occurs in gobjectmodule now. * gtk/gdk.override (pygdk_unblock_threads): give the function the right name (duh). * configure.in (AM_PATH_GLIB_2_0): add $extra_mods * gobjectmodule.c (initgobject): initialise GThread if threading is enabled at compile time (this doesn't initialise GDK threading though -- you need to run gtk.gdk.threads_init for that). * gtk/gdk.override (_wrap_gdk_threads_enter): add overriden implementation that allows threads while waiting, so some other thread has a chance to give up the gdk lock. * gtk/gtkmodule.c (functions): remove stuff. * gtk/pygtk-private.h: remove definitions here as well. * gtk/pygtk.h (_PyGtk_FunctionStruct): remove destroy notify and thread block stuff. * gtk/gtkobject-support.c: remove pygtk_destroy_notify. * gtk/gtk.override (pygtk_tree_foreach_marshal): move this function here from gtkobject-support.c, and don't bother blocking threads. (_wrap_gtk_tree_selection_selected_foreach): same here -- don't need to unblock threads. (pygtk_tree_selection_marshal): move this function here from gtkobject-support.c. Convert to use pyg_block_threads. (_wrap_gtk_dialog_run): add overriden implementation that unblocks threads. (_wrap_gtk_main): use pyg_block_threads (_wrap_gtk_main_iteration): same. (_wrap_gtk_item_factory_create_items): same here. (_wrap_gtk_menu_popup): same here. (_wrap_gtk_clist_set_row_data): use pyg_destroy_notify (_wrap_gtk_timeout_add): same here. (_wrap_gtk_idle_add): same here. (_wrap_gtk_quit_add): same here. (_wrap_gtk_input_add_full): same here. (_wrap_gtk_ctree_node_set_row_data): same here. * gtk/gtkobject-support.c: remove PyGTK_BLOCK_THREADS and PyGTK_UNBLOCK_THREADS macros. (pygtk_destroy_notify): use pyg_block_threads. (pygtk_custom_destroy_notify): same. (pygtk_handler_marshal): same. (pygtk_input_marshal): same. * gtk/gdk.override (_wrap_gdk_threads_init): register gdk lock based recursive threads block/unblock functions. If threading was disabled at compile time, then this function will error out. * gtk/gdk.defs (threads_enter, threads_leave, threads_leave): add functions. * gobjectmodule.c (functions): add destroy_notify here as well. * pygobject.h: add destroy_notify to the PyGObject_Functions vtable. * gobjectmodule.c (pyg_set_thread_block_funcs): handler for registering thread block/unblock funcs. (pygobject_destroy_notify): block threads during DECREF call. (pyg_closure_destroy): block threads during closure DECREF. (pyg_closure_marshal): block threads when calling function. (pyg_signal_class_closure_marshal): block threads. (functions): add extra functions to vtable. * pygobject.h (struct _PyGObject_Functions): add thread block/unblock slots to the API table. 2002-01-03 Matt Wilson * Makefile.am (EXTRA_DIST): add missing demo files * examples/pygtk-demo/demos/itemfactory.py: added demo * gtk/gtk.override (_wrap_gtk_item_factory_create_items): accept a sequence for the entries, not just a list. 2002-01-03 Matt Wilson * examples/pygtk-demo/demos/list_store.py (create_model): remove -1 from store.set call. * gtk/gtk.defs (GtkMenuBar.append, GtkMenuBar.prepend, GtkMenuBar.insert): uncomment, just ignore these in gtk.override * gtk/gtk.override (ignore): ignore gtk_menu_bar_append, gtk_menu_bar_insert, and gtk_menu_bar_prepend. * gtk/gtkmodule.c (init_gtk): remove unused v variable. * gtk/gtk-types.defs (DialogFlags): s/define-enum/define-flags/ 2001-12-24 James Henstridge * Makefile.am (EXTRA_DIST): same here. * gtk/Makefile.am (EXTRA_DIST): include the defs files in the dist, or things don't work. 2001-12-24 Johan Dahlin * gtk/gtk.override: Remove window arg. (_wrap_gtk_item_factory_create_items): Change PyArg_ParseTuple format args a bit and reset cb and ent for every item. 2001-12-24 James Henstridge * configure.in: define pygtk version and required package versions as m4 macros at the top of the file rather than shell variables. These can be put before the AC_INIT macro without problems. (AM_PATH_PYTHON): require python 2.2 final. 2001-12-21 James Henstridge * gtk/gdk.defs (gdk_colormap_change): comment out, as we have two GdkColormap.change's. * gtk/gtk.defs (append): this is a method of menu (prepend): same here. (insert): same here. (): now comment out the above three, as they shadow the methods their deprecation messages recommend using. (problem picked out by running xmllint over output docs). * codegen/docgen.py (DocbookDocWriter.__init__): add constructor with a use_xml parameter, which turns on DocBook/XML output. (DocbookDocWriter.create_filename): use ".xml" as extension if we are writing DocBook/XML. (DocbookDocWriter.output_toc): optionally write out the DocBook/XML doctype. * codegen/docgen.py (DocWriter.output_interface_docs): new function for outputting documentation about interfaces. (DocWriter.output_docs): output interface definitions. (DocbookDocWriter.write_heirachy): convert the list of interfaces the class implements into a list. 2001-12-20 James Henstridge * build-docs.py: script to generate documentation. * codegen/docgen.py (DocWriter.add_sourcedirs): new function for scanning source dirs, pulled out of the constructor. (DocWriter.output_docs): sort object defs by python name rather than c anme. * codegen/docgen.py (DocWriter.__init__): don't actually load the defs and overrides file in the constructor. (DocWriter.add_docs): new method for parsing a (defs, overrides, modulename) triple, -- the aim being to include docs for multiple modules in one sgml document. Also, build up a map from C type names to python names. (DocbookDocWriter.__format_function): translate to python class names. (DocbookDocWriter.__format_symbol): same here. (DocbookDocWriter.create_constructor_prototype): and here. (DocbookDocWriter.write_heirachy): and here. (DocbookDocWriter.write_method): and here. * codegen/scmexpr.py (Parser.startParsing): allow passing a filename as the argument here. * codegen/override.py (Overrides.handle_file): don't make this method private. * codegen/docextract.py (extract): add second argument doc_dict, so that the function can be used to update an existing dictionary. * configure.in (minver): require 2.2c1 * gobjectmodule.c (pygobject_chain_from_overridden): fix for updated API. (pygobject_methods): just call the method "chain". 2001-12-19 James Henstridge * codegen/docgen.py (DocWriter.output_object_docs): fix for changes to the way parent types are listed in the defs format. (DocWriter.create_method_prototype): of_object is only a string now -- not a 2-tuple. (DocbookDocWriter.make_method_ref): same here. (DocbookDocWriter.__format_function): and here ... (DocbookDocWriter.__format_symbol): and here :) (DocbookDocWriter.write_method): again here. 2001-12-18 James Henstridge * gobjectmodule.c (pyg_value_from_pyobject): add support for int64/uint64. Fix up code for unsigned int/long to parse long ints if necessary. (pyg_value_as_pyobject): add support for int64/uint64, and get UINT/ULONG to return python long ints if necessary, rather than wrapping around. * Makefile.am (EXTRA_DIST): add new example to dist. * examples/gobject/properties.py: test program that implements a few properties. * gobjectmodule.c (add_properties): new function for parsing the __gproperties__ class attribute. (create_property): helper routine for creating and installing the new pspecs. (pyg_type_register): add code to call add_properties if a __gproperties__ attribute is found. (pyg_object_class_init): set set_property/get_property methods in vtable, and get rid of debug message. (initgobject): add G_PARAM_* constants. 2001-12-17 James Henstridge * gobjectmodule.c (pygobject_chain_from_overridden): add chaining function. This will need to change when Tim makes the changes to the chaining API. This was just to test that things worked correctly (and they do). Possibly this should be renamed to just GObject.chain() or GObject._chain(). 2001-12-15 James Henstridge * gobjectmodule.c (add_signals): put the class ref/unref in here, so it is only done once. The ref/unref is really needed for adding signals as well, so that we don't end up with dups. 2001-12-14 Johan Dahlin * gobjectmodule.c (initgobject): Add gobject.glib_version. * configure.in (PYGTK_MINOR_VERSION): Add and define PYGTK_[MAJOR,MINOR,MACRO]_VERSION. Also add *_REQUIRED_VERSION for dependencies. * gtk/gtkmodule.c (init_gtk): remove gtk_major_version, gtk_minor_version and gtk_macro_version and replace them with gtk_version, Add pygtk_version. 2001-12-14 James Henstridge * gobjectmodule.c (override_signal): another helper function for overriding existing signals. Haven't done chaining support yet. (add_signals): if value in __gsignals__ dict is None or 'override', then call override_signal instead. (override_signal): add g_type_class_ref() calls so that parent signals are registered. * examples/gobject/signal.py: use __gsignals__ notation here. * gobjectmodule.c (create_signal, add_signals): helper routines for handling __gsignals__ attribute of classes. (pyg_type_register): add support for creating signals as part of type registration. 2001-12-14 Johan Dahlin * gtk/gtk.override (_wrap_gtk_window_get_position): (_wrap_gtk_window_get_size): (_wrap_gtk_window_get_default_size): Impl. * gtk/gtk-types.defs (FileSelection): Added fields. * gtk/gtk.defs (gtk_pixmap_new): Fix deprecation warning. GtkPixbuf->GdkPixbuf * gtk/gtk.defs (set_usize): dito, set_default_size -> set_size_request 2001-12-12 Matt Wilson * gobjectmodule.c (pyg_closure_marshal, pyg_signal_class_closure_marshal): always print and clear the exceptions in callback marshalers. People who want to catch these exceptions and make them fatal should use sys.excepthook. (pyg_fatal_exceptions_notify, pyg_fatal_exceptions_notify_add, pyg_fatal_exceptions_remove): remove now unused functions. Also remove them from the PyGObject_API. * gtk/pygtk.h (PyGtk_FatalExceptions): remove. * gtk/pygtk-private.h (PyGtk_FatalExceptions): remove. * gtk/gtkmodule.c (init_gtk): don't bother with PYGTK_FATAL_EXCEPTIONS. (pygtk_main_quit): remove unused code. * gtk/gtk.override (_wrap_gtk_item_factory_create_items, _wrap_gtk_menu_popup): likewise, always print and clear the exception. 2001-12-11 Matt Wilson * gtk/gtk.defs: added deprecation messages * codegen/definitions.py (FunctionDef.write_defs, MethodDef.write_defs): write out deprecation messages if they exist (MethodDef.__init__, FunctionDef.__init__): parse deprecated tags in defs file, added some sanity checking and error reporting * codegen/codegen.py (write_method, write_constructor, write_function): write out deprecation warning messages. 2001-12-11 James Henstridge * atk.defs: remove atk_attribute_get_name/value (again). 2001-12-10 Matt Wilson * gtk/libglade.defs: added missing defs. * atk.defs: add missing defs. 2001-12-09 James Henstridge * atk.defs (text_attribute_get_name): rename. (text_attribute_get_value): rename. * gtk/gtk.override (_wrap_gtk_input_add_full): use PyObject_AsFileDescriptor to convert the first arg to the fd. 2001-12-07 Matt Wilson * gtk/gtk.defs (GtkTable.get_row_spacing): one more missing defs entry. 2001-12-07 Matt Wilson * gtk/gtk.override (ignore-glob): ignore all functions that start with _ * codegen/definitions.py (FunctionDef.merge): if a cname changed from a method to a function, the merge would fail here. Handle the exception. * codegen/argtypes.py, codegen/codegen.py: don't use + for strings, use literal concatenation or """. * codegen/defsparser.py (DefsParser.printMissing): new function to support missingdefs.py * codegen/missingdefs.py: new program to help find things missing in .defs files * gtk/gtk.defs, gtk/gtk-types.defs: merged in missing entries in the defs file. 2001-12-06 Matt Wilson * codegen/argtypes.py (BoxedArg, CustomBoxedArg): for null-ok functions, added "or None" to the error string. * gtk/gtk.defs (GtkTreeModel.iter_n_children, GtkTreeModel.iter_nth_child): add null-ok to the special cased iter parameters that mean 'root'. Reported by Robert Nikander. 2001-12-05 Matt Wilson * codegen/codegen.py (write_function, write_method, write_boxed_method): output the args and kwargs to the wrapper function only if it takes arguments 2001-12-05 Matt Wilson * codegen/argtypes.py (WrapperInfo): split get_varlist into get_varlist and get_kwlist to avoid unused kwlists when generating noarg functions. * codegen/codegen.py (write_boxed, write_functions, write_class, write_interface): check to see if override function wants no args, use METH_NOARGS if so. Also get the method flags from the various function writers so they can ask to have noargs placed in their flags (write_function, write_method, write_boxed_method): write out the parse args and keywords only if there are parameters to parse. Return METH_NOARGS if we don't accept arguments, METH_VARARGS|METH_KEYWORDS otherwise. * codegen/override.py (Overrides.is_overriden): keep a dictionary of overrides that have the 'noargs' key in them. * gtk/gtkgl.override, gtk/gtk.override, gtk/gdk.override): removed argument parsing from functions/methods that take no arguments, mark them as noarg * examples/pygtk-demo/demos/list_store.py (create_model): use new GtkListStore.set method. 2001-12-04 Matt Wilson * gtk/gtk.override (_wrap_gtk_list_store_set, _wrap_gtk_tree_store_set): added. 2001-12-03 Matt Wilson * gtk/gtk.override (_wrap_gtk_rc_set_default_files, _wrap_gtk_rc_get_default_files, _wrap_gtk_icon_set_get_sizes, _wrap_gtk_cell_renderer_get_size, _wrap_gtk_cell_renderer_get_fixed_size): added * codegen/argtypes.py (UCharArg.write_return): implemented. * codegen/codegen.py (exc_info): wrote a common function that returns a descriptive string when wrapper generation goes wrong. Modified codegen functions to call it on exception. * gtk/gtk.defs (rc_set_image_loader, ctree_node_from_cobject): removed 2001-12-02 James Henstridge * gtk/gtk.override (_wrap_gtk_text_buffer_create_tag): fix up format string, from bug #65636 (Skip again). * gobjectmodule.c (pyg_type_wrapper_repr): fix up format string, from bug #65640 (from Skip). * codegen/argtypes.py (GTypeArg.write_return): use pyg_error_check to raise the exception. Now the domain and code elements of the GError are available. (GtkTreePathArg.write_param): add to codeafter in order to free the tree path we created, fixing a leak. * gobjectmodule.c (initgobject): create a gobject.GError exception. (pyg_error_check): function for converting a GError into a gobject.GError python exception. 2001-12-01 James Henstridge * codegen/argtypes.py: change write_return methods to simply add a "ret" variable to the varlist of the appropriate return type, and add code for returning the correct value to codeafter code list. (GErrorArg.write_param): add error handling code to the codeafter code list. * codegen/codegen.py: s/extracode/codebefore/ (*): get rid of the %(handlereturn)s stuff, and replace with "ret = functioncall" statements, followed by %(codeafter)s. * codegen/codegen.py: update to use WrapperInfo. * codegen/argtypes.py: lots of changes to add a WrapperInfo class, that replaces many of the arguments to the write_param/write_return methods of ArgTypes. 2001-11-30 James Henstridge * gobjectmodule.c (pygobject_register_class): get rid of class_hash, and store the pointer to the python class with g_type_set_qdata(). (pygobject_lookup_class): look up python class with g_type_get_qdata. (pyg_object_class_init): a class_init function for types defined in python. The python class is passed as the "class_data" argument. Currently empty, but will be used to install eg. get_property and set_property members. (pyg_type_register): store pointer to class like we do for types defined in C. (initgobject): move the quark initialisations above the registration of GObject. 2001-11-29 Matt Wilson * gtk/libglade.defs (glade_xml_new): fname is actually required. Added default to NULL for all arguments that are null-ok. * gtk/libglademodule.c: added missing #include pygobject.h. Why does pygtk.h define NO_IMPORT_PYGOBJECT? * atk-types.defs: split atk types off into its own file * Makefile.am, gtk/Makefile.am: more Makefile cleanups 2001-11-28 Matt Wilson * gtk/Makefile.am: removed disthook, marked autogenerated .c files as nodist sources. * Makefile.am: likewise. Use a suffix rule instead of a pattern rule for wider make compatibility. * gtk/gtk.override (_wrap_gtk_window_set_geometry_hints): added min_aspect and max_aspect to the kwlist so that the kwlist length matches the number of arguments in the argparse format string. * codegen/h2def.py (define_func): someone was thinking that a re.split looked like string.split. Also fix the argument munger that I broke the other day. * atk.override (_wrap_atk_relation_new): fixed the constructor so it actually works * gtk/Makefile.am ($(srcdir)/gtk.c): get the atk types * gtk/gtk.override: import atk.Object as PyAtkObject_Type * Makefile.am (EXTRA_DIST): added examples/atk/atk-demo.py * atk.defs (relation_new): mark as constructor of AtkRelation (atk_no_op_object_factory_new): mark as constructor of AtkNoOpObjectFactory 2001-11-27 Matt Wilson * atk.defs, atk.override, atkmodule.c: added start of atk wrapper * gtk/Makefile.am (DISTCLEANFILES): remove generated files ($(srcdir)/gtk.c): modify targets to output generated files in the builddir, not the srcdir. ($(srcdir)/gdk.c): likewise. ($(srcdir)/libglade.c): likewise. * codegen/h2def.py (define_func): add check to workaround broken string.replace semantics on python 1.5 * codegen/codegen.py (write_enums): if the enum or flag doesn't have a GType, just add those enum values listed in the defs file by hand. * codegen/argtypes.py (ArgMatcher.register_enum): if defs file doesn't specify a GType for the enum, use G_TYPE_NONE. (ArgMatcher.register_flag): likewise. * gobjectmodule.c (pyg_enum_get_value): allow enums to pass G_TYPE_NONE in as the type, disabling the string to value conversion. (pyg_flags_get_value): likewise. (pyg_constant_strip_prefix): new function to combine common codepath. (pyg_enum_add_constants): use pyg_constant_strip_prefix (pyg_flags_add_constants): likewise. (functions): make pyg_constant_strip_prefix available to users of pygobject * pygobject.h: added pyg_constant_strip_prefix wrapper * configure.in: added ATK test, subst for ATK_CFLAGS and ATK_LIBS. * Makefile.am (%.c): added generic codegen target for pango and atk. Added DISTCLEANFILES so that generated files will be removed. Added atk targets, cflags, ldflags. 2001-11-26 Matt Wilson * configure.in: bump up required versions of gtk, pango, and glib. 2001-11-26 Matt Wilson * configure.in: 1.99.5 2001-11-20 Matt Wilson * gtk/gtk.defs (GtkStyle.render_icon): change size argument type to GtkIconSize. (gtk_image_new_from_stock): likewise, change from constructor to function, rename to image_new_from_stock. (gtk_image_new_from_icon_set): likewise. (gtk_image_new_from_animation): change from constructor to function, rename to image_new_from_animation. Should these just go in as an overloaded constructor for GtkImage()? (icon_source_new): is-constructor-of GtkIconSource (icon_set_new): is-constructor-of GtkIconSet 2001-11-19 Matt Wilson * codegen/codegen.py (attrchecktmpl): fix indention. (write_getsets): use the handler's error handling code snippits. (write_boxed_getattr): likewise. * gobjectmodule.c (pyg_fatal_exceptions_notify_{add,remove}): fixed think-o, don't store a pointer to the function pointer, just store the function pointer. * pango.defs (PangoContext.add_font_map): renamed to set_font_map (PangoFontMap.load_font): added context argument 2001-11-17 Matt Wilson * gtk/gtk.defs: added GtkTreeView.get_columns, GtkTreeView.move_column_after, GtkTreeView.map_expanded_rows, GtkTreeView.row_expanded, GtkTreeView.get_cursor, GtkTreeView.get_bin_window, GtkTreeView.enable_model_drag_source, GtkTreeView.enable_model_drag_dest, GtkTreeView.set_enable_search, GtkTreeView.get_enable_search, GtkTreeView.get_search_column, GtkTreeView.set_search_column, GtkTreeView.get_search_equal_func, GtkTreeView.set_search_equal_func, GtkTreeView.set_destroy_count_func 2001-11-17 Matt Wilson * codegen/codegen.py (write_*): pass in any error checking and handling code snippets into the return function writer. Only add keywords for arguments that are going to be parsed, Python 2.2 now checks to make sure the kwlist length equals the paramspec. * codegen/argtypes.py: remove GtkCTreeNode custom registration, it's a generic boxed type. Added a GErrorType requested in bug #63980. This requires inserting possible error checking in each type's write_return method. * gtk/gtk.defs (gtk_image_new_from_icon_set): changed size argument from char* to GtkIconSize (GtkIconSet.render_icon): likewise * gtk/gtk-types.defs (IconSet): added GtkIconSet boxed type * gtk/gtk.override (_wrap_gtk_tree_model_get_value): value is not parsed, remove it from the kwlist. 2001-11-16 Matt Wilson * gtk/gtk.override (_wrap_gtk_tree_view_get_path_at_pos): remove window argument * gtk/gtk.defs (GtkTreeView.get_path_at_pos): remove window argument * gobjectmodule.c (pyg_param_spec_getattr, pyg_param_spec_repr): s/g_param_get_{name,nick,blurb}/g_param_spec_get_{name,nick,blurb}/g (pyg_fatal_exceptions_notify_remove): use the right type. * gtk/pygtk.h (init_pygtk): need to cast to the right type for _PyGTK_API init. 2001-11-15 Matt Wilson * gtk/gtk.defs (GtkEditable.insert_text): note default for position to be 0. * gtk/gtkmodule.c (init_gtk): added gtk.major_version, gtk.minor_version, and gtk.micro_version. #59830. 2001-11-15 Matt Wilson * gtk/pygtk.h (init_pygtk): cast void* to _PyGtk_FunctionStruct* when retrieving the API struct, #62872 * pygobject.h: added PyGFatalExceptionFunc typedef, API wrapper for pyg_fatal_exceptions_{add,remove}. * gobjectmodule.c (pyg_boxed_new): return NULL on assertion failures, #62814 (pyg_closure_new): actually assign swap_data to the closure. (pyg_fatal_exceptions_notify, pyg_fatal_exceptions_notify_add, pyg_fatal_exceptions_remove): added mechanism for gobjectmodule using modules to get a function called when a fatal exception happens in closures, etc. (pyg_closure_marshal, pyg_signal_class_closure_marshal): return NULL if a gobjectmodule using module registered a fatal exception function. * gtk/pygtk-private.h: added declarations for pygtk_custom_destroy_notify, pygtk_tree_selection_marshal, pygtk_tree_foreach_marshal. Added typedef for PyGtkCustomNotify. #62814 * gtk/gtkmodule.c (init_gtk): register stock items, #62814. Set up fatal exception stuff if PYGTK_FATAL_EXCEPTIONS is set. This isn't 100% done yet, gtk mainloop specific functions still need work. * gtk/gtkobject-support.c (pygtk_tree_selection_marshal): added, #62814 (pygtk_tree_foreach_marshal): added, #62814 (pygtk_custom_destroy_notify): added, #62814 * gtk/gtk.override (_wrap_gtk_tree_selection_set_select_function): added, #62814 (_wrap_gtk_tree_selection_selected_foreach): added, #62814 (_wrap_gtk_widget_path): added, #62393 (_wrap_gtk_widget_class_path): added, #62393 * gtk/gtk.defs (GtkWidget.set_size_request): added, #62474 (GtkTreeSelection.get_mode): added, #62474 2001-11-13 Matt Wilson * gtk/gtk.defs: removed GtkAccelGroup.accel_group_get_default, GtkAccelLabel.get_accel_object, GtkAccelLabel.set_accel_object, item_factory_parse_rc, item_factory_parse_rc_string, GtkWidget.remove_accelerators, GtkWidget.accelerator_signal, GtkWidget.lock_accelerators, GtkWidget.unlock_accelerators, GtkWidget.accelerators_locked to reflect Tim's accelerator API revamp checkin. (GtkTreeDragDest.row_drop_possible): modified arguments to match new API. 2001-11-01 Matt Wilson * gtk/gtk.defs (GtkSelectionData.tree_set_row_drag_data): renamed GtkSelectionData.data_set_tree_row, #60218 (GtkSelectionData.tree_get_row_drag_data): renamed GtkSelectionData.data_get_tree_row, #60218 (GtkFontSelection.get_preview_text): constify return arg (GtkFontSelectionDialog.get_preview_text): likewise. (GtkSelectionData.set_text): added len parameter 2001-10-31 Matt Wilson * gtk/gtk.defs (GtkTreeStore.clear): added 2001-10-29 James Henstridge * gtk/gtk.defs: remove gtk_cell_renderer_toggle_[gs]et_active. 2001-10-26 Matt Wilson * configure.in (AC_INIT): increase version to 1.99.4 (AM_PATH_GLIB_2_0): change minver to 1.3.10 (PKG_CHECK_MODULES): change pango requirement to >= 0.21 (AM_PATH_GTK_2_0): change minver to 1.3.10 2001-10-25 James Henstridge * gobjectmodule.c (PyGObject_Type): include the module name in the typename. (PyGInterface_Type): same here. (PyGBoxed_Type): same here. (pygobject_register_class): when working out what name to put into the module dictionary, strip off everything before the last dot, so the type name can include the module. * configure.in (minver): require python 2.2b1 * gobjectmodule.c (initgobject): remove statements using tp_defined (they are no longer needed). 2001-10-23 Matt Wilson * codegen/codegen.py (boxedgetattrtmpl, write_boxed_getattr): at the end of the getattr function, we must use Py_FindMethod. This fixes GtkSelectionData's methods, and DnD works again. * codegen/h2def.py (clean_func): deal with const return types when cleaning up function prototype (proto_pat): add '-' to the ret group so that const- will work in the return type 2001-10-23 Matt Wilson * gtk/gtk.override (_wrap_gtk_text_iter_forward_search): use new forward search API with flags enum in CVS. (_wrap_gtk_text_iter_backward_search): likewise. (_wrap_gtk_selection_data_set): use pygdk_atom_from_pyobject. (_wrap_gtk_selection_add_targets): likewise. * gtk/pygtk-private.h (pygdk_atom_from_pyobject): added declaration. * gtk/gtk.defs (GtkTextIter.forward_search): use new flags enum (GtkTextIter.backward_search): likewise. * gtk/gdk.override (_wrap_gdk_gc_new_with_values): s/GPOINTER_TO_INT/GDK_POINTER_TO_ATOM/ (_wrap_gdk_property_get): use pygdk_atom_from_pyobject (_wrap_gdk_property_change): likewise. * codegen/argtypes.py (AtomArg.write_param): use pygdk_atom_from_pyobject when getting atom args * gtk/gtk-types.defs (TextSearchFlags): added new enum. * gtk/gtk-types.c (pygdk_atom_from_pyobject): implemented a function to get a GdkAtom from a Python object (PyGdkWindow_PropertyGet): use pygdk_atom_from_pyobject to get atoms from args, not this two-try ParseTuple. (PyGdkWindow_PropertyChange): likewise. (PyGdkWindow_PropertyDelete): likewise. * gtk/gdk-types.defs (Selection): removed, no longer an enum (Target): Likewise. (SelectionType): Likewise. 2001-10-22 Matt Wilson * gtk/gtk-types.c (pygdk_atom_number): remove numeric bits, GdkAtom is now opaque. * gtk/gtk.defs (GtkTreeModelSort.set_model): removed, is static now. (GtkTreeModelSort.convert_path): rename to GtkTreeMOdelSort.convert_path_to_child_path 2001-10-19 Matt Wilson * gtk/gtk.override (_wrap_gtk_tree_model_iter_children): override GtkTreeModel.iter_children(parent) to return a new iter, like GtkTreeModel.get_iter_root(). 2001-10-18 Matt Wilson * gtk/gdk.defs (pixbuf_new_from_inline): rename from pixbuf_new_from_stream to match gdk-pixbuf changes in CVS. * pygtk.spec.in (%files devel): get header from new location * Makefile.am (pkgincludedir): put pygobject.h in $(includedir)/pygtk-2.0, not $(includedir)/pygtk-2.0/pygtk 2001-10-16 Matt Wilson * codegen/h2def.py (define_func): convert all argument type whitespace to '-'. 2001-10-15 Matt Wilson * pygtk-2.0.pc.in (pygtkincludedir): move headers to a version-specific directory so we can have old pygtk-devel and pygtk2-devel installed at the same time. * Makefile.am (pkgincludedir): likewise * gtk/Makefile.am (pkgincludedir): likewise * pygtk.spec.in (%files devel): pick up the new header location 2001-10-11 Matt Wilson * pygtk.spec.in (%files devel): fixed typo in devel filelist (header) added macro that tests to see if we have libglade2 (%files libglade) make the filelist a condition of that (Name) changed name to 'pygtk2' to avoid name conflict with pygtk 2001-10-11 Murray Cumming * h2def.py: Now it doesn't stop when it finds a function parameter with a type but no name. The resulting define-* will be missing that parameter, but at least the rest will have succeeded. 2001-10-10 Matt Wilson * gobjectmodule.c (pygobject_dealloc): also go set up the reflist if we're doing refcount debugging. 2001-10-11 James Henstridge * gobjectmodule.c (pygobject_dealloc): if we are saving a reference to the wrapper during dealloc (which is probably bad), check if it is a heap type, and if so, incref its type, so that subtype_dealloc() doesn't decref the type out from under us. This problem was tracked down by Matt Wilson 2001-10-09 James Henstridge * gtk/gtk-extrafuncs.defs (GenericTreeModel): fix up c-name. * examples/pygtk-demo/demos/treemodel.py (MyTreeModel): subclass from gtk.GenericTreeModel. * pygtk.spec.in (Requires): add new files to spec file. 2001-10-09 James Henstridge * pango-types.defs: move types. * gtk/Makefile.am: modify rules to take into account splitting out the type definitions. --register arguments now only parse the type defs and not the function defs, which should speed up the build a bit. * gtk/gdk-types.defs: same here. * gtk/gtk.defs: and include gtk-types.defs here. * gtk/gtk-types.defs: move define-{object,interface,enum,flags,boxed} defs to this file. * gtk/gtk-extrafuncs.defs (get_selection): and add it back here. * gtk/gtk.defs: remove gtk_list_get_selection function from this file. * gtk/gtk-extrafuncs.defs (pygtk_generic_tree_model_new): similar changes here. * gtk/pygtktreemodel.c: same changes here. * gtk/pygtktreemodel.h (pygtk_generic_tree_model_get_type): rename to PyGtkGenericTreeModel, so that short name doesn't collide with GtkTreeModel. 2001-10-08 Matt Wilson * pygtk.spec.in: added specfile template * configure.in (AC_CONFIG_FILES): add pygtk.spec * Makefile.am (dist-hook): copy the spec file into the dist dest dir * gtk/gtk.defs (ColorSelectionDialog): added colorsel, ok_button, cancel_button, and help_button fields. (GtkList.get_selection): marked as a PyGTK extension. 2001-10-08 James Henstridge * pango.defs (pango_font_metrics_new): comment out, as it is only for use by engines. * gtk/libglade.override: same here. * gtk/gdk.override: same here. * gtk/gtk.override: use import section here. * pango.override: use the new import stuff to get the reference to the GObject type. * codegen/codegen.py (write_source): write out code based on the import statements in the overrides file. Most modules have some code like this, and this helps reduce the boilerplate code that needs to be entered in. * codegen/override.py (Overrides.get_imports): add handlers for "import" sections of the overrides file, which are used to get references to the types in other modules. 2001-10-06 James Henstridge * gtk/gtk.override (_wrap_gtk_list__get_selection): remove unused variable (the line number on the gcc warning matched exactly!) * codegen/codegen.py (write_source): reset line numbering after writing headers and init overrides. (main): add --outfilename argument, for specifying the final name of the file -- output is not written to this file. If argument is not passed, derive from defs filename. * codegen/override.py (Overrides.__parse_override): add #line outputs for headers and init type overrides. * codegen/codegen.py (main): pass the filename to overrides. (FileOutput): wrapper class for file objects to keep track of line numbers, so that #line statements can be written. (write_class): write out #line statements for overriden constructor and methods. (write_getsets): write #line's for getsets. (write_interface): write #line's for methods. (write_boxed): write #line's for constructor and methods. * codegen/override.py (Overrides.__init__): rewrite the code that reads in the overrides file, so it only splits on lines with only '%%' in them. Also keep track of line numbers, so we know where each section starts. (Overrides.__parse_override): save the start line for 'override' sections and 'override-attr' sections. (Overrides.getstartline): new function to retrieve the start line for a .overrides section. (Overrides.__init__): take the filename rather than file handle as argument. 2001-10-05 Matt Wilson * gtk/gtk.override (_wrap_gtk_list__get_selection): implemented function to return the selection. (_wrap_gtk_list_get_selection): use above to implement a method for getting the selection, like old pygtk. * gtk/gtk.defs (GtkList.get_selection): added function to be compatible with previous versions. (GtkList): added "selection" field * gobjectmodule.c (pyg_closure_new): too many tuples. 2001-10-05 Matt Wilson * gobjectmodule.c (pygobject_emit): mask out G_SIGNAL_TYPE_STATIC_SCOPE to fix signal emission. 2001-10-05 Johan Dahlin * gobjectmodule.c (pyg_closure_new): Handle non-Tuple parameters. * gtk/gtk.override (_wrap_gtk_window_list_toplevels): Bound (_wrap_gtk_toolbar_insert_stock): Bound. * gtk/gtk.defs (binding_entry_clear): rename from gtk_bindings_entry_clear (color_selection_palette_from_string): rename from gtk_color_selection_palette_from_string (set_border_width): Added (set_resize_mode): Added (get_children): Added (children): Mark as deprecated (get_focus_chain): Added (get_focus_vadjustment): Added (get_focus_hadjustment): Added (gtk_container_add_child_arg_type): Removed (gtk_container_query_child_args): Removed (gtk_containerchild_getv): Removed (gtk_container_child_setv): Removed (gtk_container_add_with_args): Removed (gtk_container_addv): Removed (gtk_container_add_set): Removed (gtk_container_add_get): Removed (GtkContainer.child_set): Added (GtkContainer.child_get): Added (gtk_container_child_args_collect): Removed (gtk_container_child_arg_get_info): Removed (GtkDrawingArea.size): Mark as deprecated (GtkEditable.get_editable): Added (GtkEntry.new_with_max_length): Mark as deprecated (GtkEntry.get_visibility): Added (GtkEntry.get_invisible_char): Added (GtkEntry.get_max_length): Added (GtkFontSelection.get_font): Mark as deprecated (GtkFontSelectionDialog.get_font): Mark as deprecated (GtkFrame.get_label_widget): Added (GtkFrame.get_label_align): Added (GtkFrame.get_shadow_type): Added (GtkGC.gc_get): Added (gtk.gc_release): Rename from gtk_gc_release (GtkHandleBox.get_shadow_type): Added (GtkHandleBox.get_handle_position): Added (GtkHandleBox.get_snap_edge): Added (GtkHscale.new_with_range): Added (GtkLayout.freeze): Mark as deprecated (GtkLayout.thaw): Mark as deprecated (GtkListStore.new): Fix parameters (GtkListStore.newv): Added (needed?) (GtkListStore.set): Added (GtkListStore.clear): Added (gtk_init_abi_check): Remove (gtk_init_check_abi_check): Remove (gtk_exit): Remove (gtk.get_current_event_state): Added (GtkMenu.get_tearoff_state): Added (GtkMenu.get_title): Added (gtk_rc_*): Rename to rc_* (GtkToolbar.insert_stock): Added (GtkToolbar.set_icon_size): Added (GtkToolbar.unset_style): Added (GtkToolbar.unset_icon_size): Added (GtkToolbar.get_orientation): Added (GtkToolbar.get_style): Added (GtkToolbar.get_icon_size): Added (GtkToolbar.get_tooltips): Added (gtk_type_unique): Remove (gtk_type_class): Remove (gtk_type_new): Remove (gtk_enum_get_values): Remove (gtk_flags_get_values): Remove (gtk_enum_find_value): Remove (gtk_flags_find_value): Remove (GtkViewport.get_shadow_type): Added (GtkVscale.new_with_range): Added 2001-10-05 Matt Wilson * gtk/gtk.override (_wrap_gtk_dialog_new_with_buttons): fixed argument format string. 2001-10-03 Matt Wilson * gtk/gdk.defs (Rectangle): added definition for GdkRectangle 2001-10-04 Matthew Wilson * gtk/gtk.override (_wrap_gtk_toolbar_append_item): make user_data optional * gtk/gtk.defs (GtkToolbar.append_item): make user_data optional 2001-10-04 Matt Wilson * gtk/gtk.override (_wrap_gtk_item_factory_create_items): fixed non-compiling function. 2001-10-04 Johan Dahlin * gtk/gtk.override (_wrap_gtk_item_factory_create_items): Modify ParseTuple to accept 6 argument, so we can use stock icons and gdkpixbufs. (_wrap_gtk_spin_button_get_range): Bound. (_wrap_gtk_spin_button_get_increments): Bound. * gtk/gtk.defs: rename gtk.gtk_* gtk.*. 2001-10-04 James Henstridge * pygtk.spec: spec file changes. * gtk/gtk.defs (AccelGroup): this is an object now -- not a boxed. 2001-10-03 Matt Wilson * gobjectmodule.c (pygobject_repr): tweak the repr such that calling it on an uninitialized PyGObject won't segfault. Also print the python class name. 2001-10-02 Johan Dahlin * gtk/gdk.override (_wrap_gdk_color_parse): Added. * gtk/gtk.override (_wrap_gtk_label_get_selection_bounds): (_wrap_gtk_label_get_layout_offsets): (_wrap_gtk_button_box_get_child_size): (_wrap_gtk_button_box_get_child_ipadding): Added. * gtk/gtk.defs GtkAccelGroup.activate, attach, detach, groups_activate, add, remove: s/GtkObject/GObject/ (gtk_adjustment_new) (GtkAdjustment.clamp_page): s/gfloat/gdouble/ (GtkAdjustment.get_value): Added (GtkBin.get_child): Added (GtkBox.get_homogeneous): Added (GtkCellRenderer.event): Removed (GtkCellRenderer.activate): Added (GtkCellRenderer.start_editing): Added (GtkCellRenderer.set_fixed_size): Added (GtkCellRenderer.get_fixed_size): Added (GtkCheckMenuItem.get_activate): Added (gtk_color_selection_get_type): Added (gtk_color_selection_new): Added Removed old functions from gtkbindings.h. 2001-10-02 Matt Wilson * gtk/gdk.defs (gdk.screen_width): bound (gdk.screen_height): bound (gdk.screen_width_mm): bound (gdk.screen_height_mm): bound (gdk.flush): bound (gdk.beep): bound (gdk.set_double_click_time): bound (gdk.gdk_window_get_toplevels): renamed to window_get_toplevels (gdk.get_default_root_window): bound (gdk.gdk_color_parse): renamed to color_parse (gdk.gdk_drag_context_get_type): renamed to drag_context_get_type (gdk.gdk_drag_context_new): renamed to drag_context_new (gdk.gdk_gc_new): renamed to gc_new (gdk.gdk_image_new_bitmap): renamed to image_new_bitmap (gdk.gdk_device_get_type): renamed to device_get_type (gdk.gdk_devices_list): renamed to devices_list (gdk.device_free_history): renamed to device_free_history (gdk.gdk_rgb_xpixel_from_rgb): renamed to rgb_xpixel_from_rgb (gdk.gdk_rgb_gc_set_foreground): renamed to rgb_gc_set_foreground (gdk.rgb_gc_set_background): renamed to rgb_gc_set_background * gobjectmodule.c (pygobject_dealloc): remove debugging message James checked in. * gtk/gtk.override (_wrap_gtk_text_buffer_set_text): override GtkBuffer.set_text so that you don't have to pass in the length. * codegen/argtypes.py (FlagsArg.write_param): preserve flags that have a default value by short circuiting the conversion of NULL Python flags to 0. * gobjectmodule.c (pyg_object_new): rewrote function to use g_object_newv and instantiate the object after we check to make sure the class handles all the properties passed. This solves the problem of trying to destroy a GtkObject after creating it, which can be a little tricky. 2001-10-02 Matt Wilson * gobjectmodule.c (pyg_object_new): added a new gobject.new function to create an object of any registered type with kwargs property setting. 2001-10-02 James Henstridge * gobjectmodule.c (pygobject_new): fix bug where we were INCREFing the saved widget even in the hasref case (where we should be passing ownership of the last reference). 2001-10-02 Matt Wilson * gtk/gtk.override (_wrap_gtk_clist_new_with_titles): accept unicode objects as well. (_wrap_gtk_clist_prepend): likewise (_wrap_gtk_clist_append): likewise (_wrap_gtk_clist_insert): likewise (_wrap_gtk_combo_set_popdown_strings): likewise (_wrap_gtk_ctree_new_with_titles): likewise (_wrap_gtk_ctree_insert_node): likewise 2001-10-02 Johan Dahlin * gtk/gtk.defs: Added GtkAccelLabel: get_accel_object, set_accel_object. GtkButton: set_label, get_label, set_use_underline, get_use_underline, set_use_stock, get_use_stock. GtkLabel: get_attributes, set_label, get_label, set_use_markup, get_use_markup, set_use_underline, get_use_underline, get_justify GtkRadioButton: get_group GtkSpinButton: get_digits, get_increments, get_range, get_update_policy, get_numeric, get_wrap, get_snap_to_tickets, get_mode 2001-10-01 Matt Wilson * codegen/codegen.py (write_boxed_getattr): added code to write out __members__ attribute so that dir(foo) works on boxed types 2001-10-01 Matthew Wilson * examples/pygtk-demo/demos/treemodel.py (MyTreeModel.on_get_column_type): use gobject.TYPE_STRING instead of hard coded values 2001-09-30 James Henstridge * gobjectmodule.c (pygobject_dealloc): use plain old PyObject_GC_Del, as the overridden tp_free seems to ignore the GC header. (pygobject_new): GC track wrappers created through pygobject_new. * configure.in: increment version number, and require gtk 1.3.9 (we already required it before). * gobjectmodule.c (pygobject_new): initialise extra members. Problem found by msw. 2001-09-29 Matthew Wilson * examples/pygtk-demo/demos/dnd.py: port to new namespace 2001-09-29 James Henstridge * gobjectmodule.c (pyg_param_spec_new): add a wrapper for a GParamSpec. Currently it only exposes the base parameter info; none of the extra info provided by derived param specs. (pyg_object_class_list_properties): return a list of GParamSpec objects, rather than just strings. (pyg_value_as_pyobject): catch NULL strings. * configure.in (minver): require 2.2a4. * gtk/pygtktreemodel.c (pygtk_tree_model_get_column_type): use pyg_type_from_object instead. Based on patch from Elliot. * gtk/gtk.override (_wrap_gtk_selection_data__get_data): convert getter to a function to match codegen changes. * : merge in python22-branch (see changelog entries below). 2001-09-25 James Henstridge * gobjectmodule.c (pygobject_get_dict): getter for __dict__ on GObject wrappers. (PyGObject_Type): include getsets list. * codegen/codegen.py (write_getsets): change "struct getsets" to PyGetSetDef to match recent changes in python. * gtk/gdk.override (_wrap_gdk_device__get_axes): change to getter. (_wrap_gdk_device__get_keys): turn into a getter. (_wrap_gdk_drag_context__get_targets): same here. * gtk/gtk.override (_wrap_gtk_clist__get_selection): turn into a getter. (_wrap_gtk_ctree__get_selection): turn into a getter. * codegen/codegen.py (write_getsets): rename to write_getsets, and don't allow overriding the whole routine, as it is implemented as a number of smaller routines now. (gettertmpl): rename from getattrtmpl. Refactor for handling single attribute. (write_getsets): finish conversion over to using getsets. (write_class): call write_getsets instead. (typetmpl): substitute %(getsets)s rather than %(getattr)s. 2001-09-23 James Henstridge * gtk/__init__.py: don't import ExtensionClass. * gobjectmodule.c (object_gc_free): new function to free an GC managed object. (PyGObject_Type): use object_gc_free for the tp_free slot. * codegen/codegen.py (write_class): don't write getattr routine. This is a temporary hack to see if things work. * gobjectmodule.c (pygobject_dealloc): handle case of destruction when self->obj == NULL. * gtk/gtk.override (_wrap_gtk_clist_new_with_titles): return an int. (_wrap_gtk_tree_view_get_path_at_pos): same here. (_wrap_gtk_button_new): same here. (_wrap_gtk_toggle_button_new): same here. (_wrap_gtk_check_button_new): same here. (_wrap_gtk_radio_button_new): same here. (_wrap_gtk_list_item_new): same here. (_wrap_gtk_menu_item_new): same here. (_wrap_gtk_check_menu_item_new): same here. (_wrap_gtk_radio_menu_item_new): same here. (_wrap_gtk_ctree_new_with_titles): same here. (_wrap_gtk_dialog_new_with_buttons): same here. (_wrap_gtk_message_dialog_new): same here. (_wrap_gtk_message_dialog_new): same here. * gtk/gdk.override (_wrap_gdk_cursor_new): return an int. * pango.override (_wrap_pango_font_description_new): constructors return ints. * codegen/codegen.py (write_constructor): small hack to convert "return NULL;" to "return -1;" in constructors, as they should return ints. (write_boxed_constructor): same here. 2001-09-22 James Henstridge * gtk/pygtk.h: remove traces of ExtensionClass. * gtk/libglade.override: s/PyExtensionClass/PyTypeObject/. * gtk/gtk-types.c (_pygtk_register_boxed_types): get rid of mentions of ExtensionClass. * gtk/gdk.override: s/PyExtensionClass/PyTypeObject/. * gtk/gtk.override: s/PyExtensionClass/PyTypeObject/. * gobjectmodule.c (pygobject_traverse): implement a traverse function for PyGObject. (PyGObject_Type): add GC support. (object_free): use PyObject_GC_Del to delete the memory. (pygobject_dealloc): stop GC tracking the object here. (pygobject_register_class): set a few more type fields here. (pygobject_new): use PyObject_GC_New to allocate the object here. (pygobject_dealloc): readd the 1-1 object/wrapper hack. It should work as expected since adding GC support. * pango.override: s/PyExtensionClass/PyTypeObject/ * codegen/codegen.py (consttmpl): constructor template returns an int. (noconstructor): return int rather than PyObject. (typetmpl): change def to be a PyTypeObject, with extra fields. (interfacetypetmpl): same here. (boxedconsttmpl): return int rather than pyobject. (boxedtmpl): change def to PyTypeObject. (write_class): put the constructor in the right place. (write_boxed): put the constructor in the right place. (write_source): don't include ExtensionClass.h, forward declare type objects as PyTypeObjects, rather than PyExtensionClasses. * gobjectmodule.c (pygobject_register_class): set type->ob_type. (pyg_register_boxed): same here. (pyg_register_interface): same here. (initgobject): set the ob_type member of PyGInterface_Type and PyGBoxed_Type. (pygobject__gobject_init__): add __gobject_init__ method, that just calls pygobject_init. (pygobject_methods): readd __gobject_init__ method. 2001-09-21 James Henstridge * gobjectmodule.c (pygobject_register_class): convert to use PyTypeObjects instead of ExtensionClass. (pygobject_new): don't need to set inst_dict. Python takes care of that for us. (pyg_register_boxed): convert to 2.2. (pyg_boxed_new): convert to 2.2. (pyg_value_from_pyobject): get rid of ExtensionClass calls. (pygobject_init): convert to 2.2. * pygobject.h: don't include ExtensionClass.h * configure.in (AM_PATH_PYTHON): require python 2.2. * Makefile.am: remove ExtensionClass. 2001-09-28 Matt Wilson * gtk/gtk.defs (gtk_progress_bar_new_with_adjustment): mark as constructor * gtk/gtk.override (_wrap_gtk_progress_bar_new_with_adjustment): override constructor for ProgressBar to optionally take adjustment 2001-09-27 Matt Wilson * gtk/gtk.defs (GtkTreeView.set_cursor): added new parameters. * gtk/pygtk-private.h: removed old PyGtkCTreeNode code, move to generic generated code. * gtk/gtkmodule.c (_PyGtk_FunctionStruct): likewise * gtk/pygtk.h: likewise. * gtk/gtk-types.c: likewise. * gtk/gtk.override (_wrap_gtk_tree_store_get_root_iter): moved to gtk_tree_model_get_iter_root. (_wrap_gtk_ctree_node_from_cobject): removed (_wrap_gtk_ctree_node_getattr): moved gtk-types.c getattr code to generic boxed interface and placed here. (_wrap_gtk_ctree_*): migrated to generic PyGBoxed for GtkCTreeNodes 2001-09-26 Matt Wilson * gtk/gtkmodule.c (_PyGtk_FunctionStruct): removed PyGtkCTreeNode functions * codegen/argtypes.py: remove GtkCTreeNode custom registration * gtk/gtk.defs (GtkContainer.queue_resize): remove, use gtk_widget_queue_resize instead of gtk_container_queue_resize (GtkContainer.child_composite_name): remove, this is private (GtkContainer.clear_resize_widgets): likewise (GtkTreeViewColumn.set_cell_renderer): remove, use GtkTreeViewColumn.pack_start instead (CTreeNode): added CTreeNode boxed definition * gtk/gtk.override (_wrap_gtk_tree_view_column_new): changed from gtk_tree_view_column_set_renderer to gtk_tree_view_column_pack_start. 2001-09-25 Matt Wilson * gtk/gtk.defs (get_has_resize_grip): bound (set_has_resize_grip): bound 2001-09-24 Matt Wilson * gtk/gdk.override (_wrap_gdk_pixbuf_render_pixmap_and_mask): implemented GdkPixbuf.render_pixmap_and_mask. * gtk/gdk.defs (GdkPixbuf.render_pixmap_and_mask): set alpha_threshold default to 127 * gtk/gtk.override (ignore): added gtk_entry_new to the big list of ignores. * gtk/gtk.defs (gtk_entry_new_with_max_length): bound (GtkCList.set_pixmap): default mask to NULL 2001-09-24 Matt Wilson * gtk/gtk.defs (gtk_adjustment_new): added defaults to match previous version, changed step_increment to step_incr and page_increment to page_incr to match previous version. (gtk_table_new): added defaults to match previous version. 2001-09-22 Matthew Wilson * gtk/gtk.defs (ctree_node_from_cobject): added binding. * gtk/gtk.override (_wrap_gtk_ctree_node_from_cobject): added a function to turn a PyCObject into a PyCListNodeObject object. This is a hack until GtkCTreeNode becomes a boxed type. 2001-09-21 Matthew Wilson * gtk/gtk.override (_wrap_gtk_ctree_new_with_titles): use the same defaults as previous versions, make count and tree_column optional (_wrap_gtk_clist_new_with_titles): likewise 2001-09-21 Matt Wilson * codegen/argtypes.py (BoxedArg.write_return): handle returning both a pointer to a boxed type and a boxed type itself (ArgMatcher.register_boxed): register both pointers to boxed types and boxed types themselves * gtk/gtk.defs (Style): add "black" and "white" fields. More to do here later. * gtk/gtk.override (_wrap_gtk_radio_button_new): use new_from_widget, not the group->group member when creating a new button in a group. 2001-09-20 James Henstridge * pango.defs (FontMetrics): uncomment this now it has a boxed type. * gtk/Makefile.am (EXTRA_DIST): add gdk.override to dist. * configure.in: update version number. * pygobject.h (_PyGObject_Functions.newgobj): rename from new, so that the header is includable in C++ programs. 2001-09-19 Matt Wilson * gtk/gtk.defs (gtk_message_dialog_new): define defaults * gtk/gtk.override (_wrap_gtk_message_dialog_new): override this function so we can use "%s" as the format string and pass the entire last argument as a string securely. 2001-09-19 James Henstridge * pango.defs: update for newer Pango API. 2001-09-19 James Henstridge * pango.defs (FontDescription): remove fields from PangoFontDescription, as it is an opaque type now. * configure.in (ACLOCAL): require glib 1.3.8, pango 0.19 and gtk+ 1.3.8. 2001-09-18 Matt Wilson * gtk/gtk.override (_wrap_gtk_dialog_new_with_buttons): add a cast in pointer comparison to squelch compiler warning. 2001-09-18 Matt Wilson * gtk/gtk.defs (gtk_dialog_new_with_buttons): note the defaults in the definition. * gtk/gtk.override (_wrap_gtk_dialog_new_with_buttons): implement a full-featured constructor for GtkDialog that will allow flags (as well as other parameters) to be passed in during object construction. The form is a bit different than the C version, which uses varargs. To pass a list of buttons at construction time, pass a tuple of text/id pairs as the 4th argument or in the buttons keyword. * gtk/gtk.defs (CTree): add selection to the fields (GtkCTree::insert_node): note the defaults in the definition. (GtkCTree::base_nodes): added base_nodes method back into GtkCTree * gtk/gtk.override (_wrap_gtk_ctree_insert_node): only require the first three parameters and use the defaults from previous versions for all the other values. (override-attr GtkCTree.selection): implementation for getting the selection of a CTree (_wrap_gtk_ctree_base_nodes): ported old base_nodes method to new binding. * gtk/gtk.defs (CList): add columns and selection to the fields * gtk/gtk.override (GtkCList.selection): implementation for getting the selection of a CList 2001-09-18 James Henstridge * gobjectmodule.c (pyg_object_class_list_properties): rename to gobject.list_properties. 2001-09-18 Matt Wilson * examples/pygtk-demo/demos/treemodel.py: fixed to work with new namespace * gtk/gdk.defs (pixbuf_new_from_file): don't defined gdk_pixbuf_new_from_file as a constructor of GdkPixbuf. Define it as pixbuf_new_from_file to match pixbuf_new_from_stream. * gtk/gtk.defs (gtk_aspect_frame_new): add defaults to match old behavior (gtk_alignment_new): likewise (GtkCTree::construct): likewise (gtk_clist_new): likewise (gtk_clist_new_with_titles): likewise (gtk_ctree_new): likewise (gtk_ctree_new_with_titles): likewise (GtkImage::construct): use gtk_image_new to construct GtkImages - this allows us to use more than just pixmaps to create them. (gtk_image_new): new definition. 2001-09-18 James Henstridge * pygobject.h (pyg_type_wrapper_new): export this function. * codegen/argtypes.py (GTypeArg.write_return): wrap GType return values as PyGTypeWrappers rather than ints. * codegen/codegen.py (write_source): pass the typecode macros to pygobject_register_class and pyg_register_interface rather than references to the get_type functions. * pygobject.h (_PyGObject_Functions): fix up prototypes. * gobjectmodule.c (check_bases): check if the base class is an extensionclass before poking around in class->bases. (pyg_type_*): don't bother storing the _get_type() function for lazy initialisation. Instead, just store the GType. Also, remove code for coercing them into numbers. (pygobject_register_class): take the type, rather that get_type routine as an argument. (pyg_register_interface): same here. (pyg_type_from_object): don't accept types that convert to ints as being equivalent to GTypes. (pyg_register_boxed): set the __gtype__ attribute to a PyGTypeWrapper. (pyg_type_register): set __gtype__ to a PyGTypeWrapper. (pyg_type_name): use pyg_type_from_name (pyg_type_from_name): return a PyGTypeWrapper object. (pyg_type_parent): update. (pyg_type_is_a): update. (pyg_type_children): update. (pyg_type_interfaces): update. (initgobject): set __gtype__ attributes to PyGTypeWrapper objects. (initgobject): make type constants PyGTypeWrapper objects. 2001-09-17 James Henstridge * gtk/gdk.override: don't #define these types to G_TYPE_INVALID, as they are now valid. * gtk/gdk.defs: remove the FrameAction enum -- it is private to the GIF loader module. 2001-09-16 James Henstridge * gtk/Makefile.am (pygtk_PYTHON): install keysyms.py and not GDK.py * gtk/__init__.py: import keysyms, rather than GDK.py * gtk/gtk.defs: add missing enums. * gtk/gdk.defs: add missing enums. * gtk/GDK.py: remove this file. * gtk/keysyms.py: put all keysyms here. 2001-09-15 James Henstridge * gtk/libglademodule.c (initglade): fix name of init function. * codegen/codegen.py (write_enums): don't write out the add_constants fucntion if there are no enums/flags. * gtk/libglade.override (connect_many): fix small bug in connection function. * gtk/Makefile.am (pygtk_PYTHON): don't install the GTK.py header. (glademodule_la_SOURCES): rename the libglade module to gtk.glade. * pygtk.spec: update spec file, and add -devel sub package. * configure.in: use AC_HELP_STRING to format help strings, update version number. * acinclude.m4: remove the AM_PATH_PYTHON macro, as it is in automake 1.5. * Makefile.am: require automake 1.5 to build. 2001-09-15 James Henstridge * gobjectmodule.c (pyg_enum_add_constants): allow '_' as start of constant name. (pyg_flags_add_constants): same here. * gtk/__init__.py (TRUE): don't import GTK. * gtk/gtkmodule.c (init_gtk): same here. * pangomodule.c (initpango): add constants to the pango module. * codegen/codegen.py (write_enums): new function that writes a function to add constants for all the enums and flags in the parser. (write_source): call write_enums(). * gtk/gtkmodule.c (init_gtk): add test use of add_constants. * pygobject.h (_PyGObject_Functions): add new functions to header. * gobjectmodule.c (pyg_enum_add_constants): new function for adding constants to a module dictionary from a particular GType. (pyg_flags_add_constants): similar for flag types. (functions): add to export function vtable. 2001-09-14 James Henstridge * pygtk-2.0.pc.in (defsdir): fix up defsdir definition. * Makefile.am (pkginclude_HEADERS): install ExtensionClass.h header (this can go when we switch over to python2.2 type/class stuff. * pygobject.h (pyg_register_boxed_custom): same change. * gobjectmodule.c (pyg_register_boxed_custom): rename from pyg_boxed_register to avoid confusion. 2001-09-14 James Henstridge merge from short-class-names-branch 2001-09-12 James Henstridge * codegen/codegen.py (write_class, write_interface): set the short name as the class name here. * gobjectmodule.c (pygobject_register_class): pass ec->tp_name as the name for the class passed to PyExtensionClass_Export*. * codegen/codegen.py (write_source): pass the C name to pygobject_register_class again. 2001-09-11 James Henstridge * gtk/__init__.py (create_pixmap): few fixups to get things to import correctly. * gtk/gtkmodule.c (init_gtk): there is no _pygdk_register_boxed(). * gtk/libglade.override (init): same here. * gtk/gtk.override (init): same here. * gtk/gdk.override (init): use short class names here. * gtk/gtkmodule.c (init_gtk): initialise both the gtk._gtk and gtk.gdk modules. * gtk/gtk.defs: don't include gdk.defs * gtk/gtk.override: remove all GDK override wrappers. * gtk/gdk.override: new file taking the overrides for GDK functions. * codegen/codegen.py (write_source): register only the short name of the GObject, interface or boxed type. 2001-09-13 Johan Dahlin * gtk/gtk.defs (CellRendererTextPixbuf): removed. (gtk_cell_renderer_text_pixbuf_get_type): removed. (gtk_cell_renderer_text_pixbuf_new): removed. (gtk_cell_renderer_text_iter_spew): removed. (row_changed): Renamed. (row_inserted): Renamed. (row_has_child_toggled): Renamed. (row_deleted): Renamed. (rows_reordered): Renamed, and fixed. (set_fixed_width): Renamed. (get_fixed_width): Added. * gobjectmodule.c (initgobject): Adjust g_boxed_type_register_static to compile under latest cvs. 2001-09-10 Johan Dahlin * autogen.sh: add check and usage for AUTOMAKE and ACLOCAL. 2001-09-06 James Henstridge * gtk/GTK.py: fix up enums. * gobjectmodule.c (pyg_closure_marshal): if return_value is NULL, don't set it. (pyg_signal_class_closure_marshal): same here. * gtk/gtk.defs: various updates to make it compile. * gtk/gtk-types.c (pygdk_atom_str): fallback to returning the repr of the atom if we can't resolve its name, rather than returning NULL. Patch from Skip. * gobjectmodule.c (pyg_value_from_pyobject): look at the fundamental type in this function so we can use a switch statement that catches the fundamental types easily, reducing the number of type checks. (pyg_value_as_pyobject): similar here. Also handle boolean types using patch from Skip. * gtk/GDK.py: add extra constants from Skip. 2001-08-23 James Henstridge * configure.in (build_libglade): add forth argument to PKG_CHECK_MODULES call so that configure doesn't die a horrible death when it can't find libglade. 2001-08-22 James Henstridge * gtk/libglade.override: add signal connection function overrieds. * pygtk-2.0.pc.in: add a pkg-config data file that contains some information about how to link other wrapper modules, and where pygtk installs its defs files. 2001-08-21 James Henstridge * configure.in (build_libglade): add checks for libglade. * gtk/libglade*: add the libglade module to the build * configure.in: update for autoconf 2.52 * gtk/gtk.defs: make GtkAccelGroup a GObject rather than a boxed type. remove the gtk_tree_model_get_first function. 2001-07-09 James Henstridge * gobjectmodule.c (initgobject): add a gobject.TYPE_PYOBJECT constant for the PyObject boxed typecode. 2001-07-08 James Henstridge * gobjectmodule.c (pyg_signal_new): fix argument type for return_type. (initgobject): register a "PyObject" boxed type with glib.. (pyg_value_from_pyobject): if the value holds a PY_TYPE_OBJECT, set the value directly. (pyg_value_as_pyobject): special case the PY_TYPE_OBJECT case again. * gtk/gdk.defs, gtk/gtk-extrafuncs.defs, gtk/gtk.defs: update to new format. * pango.defs: update to new format. * codegen/codegen.py: various fixes to make it work with the new defs format. * codegen/argtypes.py (ObjectArg.__init__): take the typecode as an argument, and use it to deduce the cast macro (s/_TYPE_/_/). (BoxedArg.__init__): take typecode as argument explicitly. (EnumArg.__init__): take typecode as argument explicitly. (FlagsArg.__init__): take typecode as argument explicitly. (ArgMatcher.register_enum): pass typecode argument. (ArgMatcher.register_flag): same here. (ArgMatcher.register_object): same here. (ArgMatcher.register_boxed): same here. * codegen/definitions.py (ObjectDef): update parser for new format. (InterfaceDef): same here. (EnumDef): same here. (BoxedDef): same here. (MethodDef): same here. (FunctionDef): same here. * codegen/defsparser.py (DefsParser): add define- prefix to the defs we look for. * codegen/defsconvert.py (convert): new program to convert v2 defs to v3 defs. It will probably only work with files in the style created by the h2def.py program. 2001-07-07 James Henstridge * codegen/h2def.py (to_upper_str): add function to convert a type name to upper case with underscores using the same algorithm as gtk+ (with an extra rule to catch cases like GObject. (typecode): function to create a typecode like GTK_TYPE_WIDGET from the type name. (write_obj_defs): output v3 defs. (write_enum_defs): output v3 defs. (define_func): replace 'G_CONST_RETURN ' to 'const-' for return value. (write_func): output v3 defs. * codegen/scmexpr.py (parse): make the parser ignore single quotes, which are used in the new defs format. 2001-07-03 James Henstridge * gtk/gtk.override (_wrap_gtk_list_store_new): fix up function call. (_wrap_gtk_tree_store_new): fix up function call. * configure.in (AC_OUTPUT): add pygtk-codegen-2.0 to list of files to be processed. * codegen/codegen.py (register_types): fix typo s/parser/defsparser/ * gtk/Makefile.am ($(srcdir)/gtk.c): register types from pango.defs. * gtk/gtk.override (init): import the PangoContext and PangoLayout classes from the pango module. 2001-07-02 James Henstridge * pango.defs: add is-constructor-of arguments to some defs, and add fields to some object and boxed defs. * pango.override: add more overrides. * pango.defs: add more boxed type defs. * gtk/gtk.defs (dequeue_resize_handler): remove removed function. * codegen/override.py (Overrides.__parse_override): fix bug here. string.find returns negative value on error -- not zero. * codegen/argtypes.py (GTypeArg.write_param): fix up arg handler. * Makefile.am (pangomodule_la_SOURCES): fix up makefile rules to build the pango module. * pango.override: changes so that it builds properly. * configure.in: add line to check for pango and set PANGO_CFLAGS and PANGO_LIBS. * Makefile.am (pangomodule_la_SOURCES): add rules to build pango module. * pango.defs: * pango.override: * pangomodule.c: new files for the pango wrapper module. 2001-07-01 James Henstridge * gobjectmodule.c (pyg_signal_list_names): function to list the signals of an object type. From patch by Skip Montanaro (pyg_object_class_list_properties): function to list the properties of a GObject. Also from Skip. * gtk/gtk.override (_wrap_gtk_list_store_new): fix to use gtk_list_store_newv. (_wrap_gtk_tree_store_new): similar fix here. 2001-06-30 James Henstridge * gtk/gtk-types.c: remove GdkDevice stuff from this file. * gtk/gtk.override: add attribute getters for some GdkDevice attributes, and overrides for some GdkDevice methods. (_wrap_gdk_event_getattr): change stuff for GdkDevices, as they are now GObjects. * gtk/gdk.defs (Device): add device boxed type here. * gtk/gtk.override (_wrap_gtk_selection_add_targets): fix up to use PyGBoxed version of GdkEvent. * gtk/gtk-types.c: remove GdkEvent stuff from here. Also delete the commented out GdkDragContext code, as the current GObject implementation has the same features now. * gtk/gtk.override (_wrap_gdk_event_getattr): implement the getattr method for GdkEvents. * gtk/gdk.defs (Event): add boxed type here. * gobjectmodule.c (initgobject): remove g_type_init() argument. * gtk/gdk.defs (Visual): make GdkVisual a boxed. * gtk/gtk.override (GdkDragContext.targets): override getter for this attribute. (_wrap_gtk_list_store_new): comment out most of this function as there is no way to construct a GtkListStore without C varargs as of the last GtkTree related commit. * gtk/gtk-types.c: remove uses of GtkSelectionData. * gtk/gtk.override (GtkSelectionData.data): override the data attribute for GtkSelectionData types. (_wrap_gtk_selection_data_set): override method. * gtk/gtk.defs (SelectionData): add GtkSelectionData boxed type here. 2001-06-29 James Henstridge * codegen/codegen.py (write_getattr): add code to allow overriding the getter for a single attribute. (write_boxed_getattr): same here. * codegen/override.py (Overrides): add code to handle "override_attr" statements in an overrides file. * codegen/codegen.py (write_getattr): add support for overriding the complete getattr method for a GObject class. (write_boxed_getattr): similar change here. * configure.in: require 1.3.7 versions of glib and gtk+. (AC_ARG_ENABLE): fix --disable-thread argument. It was actually looking for --disable-numpy, which causes all kinds of weirdness. * gtk/gtk.override (_wrap_gdk_cursor_new): constructor for GdkCursor that handles both the standard and pixmap cases for cursors. * gtk/gtk-types.c: remove GdkCursor related stuff from this file. * gtk/gdk.defs (Cursor): add boxed type for cursor. (cursor_new): mark as constructor. (cursor_new_from_pixmap): mark this one as a constructor as well. 2001-06-27 James Henstridge * codegen/argtypes.py (arg): don't register a boxed handler for GtkTextIter here. * gtk/gtk.override: add overrides for various GtkTextIter methods. * codegen/argtypes.py (BoxedArg.write_param): fix up variable type. * gtk/gtk.override (_wrap_gtk_text_iter_copy): implement text iter copy function, and ignore the gtk_text_iter_free function (it could cause troubles). (*): replace function calls using the old GtkTextIter wrapper. * gtk/gtk.defs: update defs for GtkTextIter. (TextIter): add text iter boxed type here. * examples/pygtk-demo/demos/toolbar.py (main): fix up toolbar constructor. * examples/pygtk-demo/demos/treemodel.py: add on_get_iter() method, and put tree view in a scrolled window. * gtk/pygtktreemodel.c (pygtk_tree_model_get_iter): add missing function to GtkTreeModel implementation. * codegen/argtypes.py (arg): remove registrations for `custom' boxed types for objects converted to PyGBoxed. * gtk/gtk.override: use PyGBoxed calls fro GtkTreeIters. * gtk/gtk-types.c: remove GtkTreeIter stuff from here. * gtk/gtk.defs (TreeIter): add boxed type here. 2001-06-26 James Henstridge * gtk/gtk-types.c: remove traces of GdkColor from this file. * gtk/gtk.override: convert occurences of PyGdkColor_* with correct PyGBoxed calls. * gtk/gdk.defs (Color): add GdkColor boxed type here. 2001-06-25 James Henstridge * gtk/gtk.override (_wrap_gtk_binding_entry_add_signal): new function, based on implementation from Skip. Some small cleanups applied. * gtk/gtkobject-support.c: remove dead code for GtkArg handling, etc. (also tidied up references to it in other files). 2001-06-24 James Henstridge * gtk/gtk-types.c: removed all traces of GdkFont. * gtk/gdk.defs (Font): add boxed type for font. * gtk/gtk-types.c: removed all traces of GdkVisual. * gtk/gdk.defs (Visual): add boxed type for visual. * gtk/gtk-types.c: remove all traces of GtkAccelGroup from this file -- GtkAccelGroup is now generated code. * gtk/gtk.defs (AccelGroup): add boxed type here. 2001-06-23 James Henstridge * codegen/codegen.py: generate wrappers for boxed types as well. * codegen/defsparser.py (DefsParser.boxed): handle (boxed ...) lines. * codegen/definitions.py (BoxedDef): add a class for holding a Boxed definition. * gobjectmodule.c (pyg_signal_new): more fixups to use pyg_type_from_object. * gtk/gtk.override (_wrap_gtk_accel_group_new): don't use PyGtkAccelGroup_New (not sure why I am fixing this -- will change soon anyway). (_wrap_gtk_tree_store_set_value): use pyg_type_from_object here. (_wrap_gtk_list_store_set_value): same here. * codegen/argtypes.py (CustomBoxedArg): rename from BoxedArg. (BoxedArg): new code for standardised PyGBoxed handling. (ArgMatcher.register_custom_boxed): rename from register_boxed (ArgMatcher.register_boxed): new function for PyGBoxed types. (arg): use ArgMatcher.register_boxed to register GtkAccelGroup. * pygobject.h (pyg_boxed_check): change macro to check against the typecode, rather than python wrapper type. 2001-06-22 James Henstridge * codegen/argtypes.py (GTypeArg.write_param): new arg type for GType and GtkType args that uses pyg_type_from_object. * gobjectmodule.c (pyg_type_from_object): new function to get a type code from various types of python objects (currently, integer like objects, strings and other objects that have a __gtype__ attribute). (pygobject__init__): use pyg_type_from_object to get the object type. (pyg_signal_new): same here. 2001-06-21 James Henstridge * gobjectmodule.c (pyg_boxed_getattro): allow getattr to work on PyGBoxed types (while not overloading tp_getattr). We fall back to tp_getattr if provided by the boxed type. (pyg_register_boxed): make sure tp_getattro is set correctly. * gtk/gtk-types.c (_pygtk_register_boxed_types): convert GtkAccelGroup to a PyGBoxed type. * gtk/gtkobject-support.c (pygtk_dict_as_container_args): comment out, as container args have been switched to properties now. 2001-06-19 James Henstridge * gobjectmodule.c (pyg_value_from_pyobject): handle PyGBoxed types. (pyg_value_as_pyobject): pass out PyGBoxed types if no custom handler is found, rather than straight CObjects. Will need to do something about cases where we want mutable values (ie. don't copy the boxed type). * configure.in: require glib/gtk+ 1.3.6 2001-06-13 James Henstridge * gtk/gtk.defs (Dialog): add fields that were missing (pointed out by Skip). * gtk/gtk.override: various updates to overrides file. 2001-06-12 James Henstridge * gtk/gtk.override (_wrap_gtk_tree_view_get_path_at_pos): fix bug when no keyword arguments are passed in. Bug found by Skip Montanaro. * examples/pygtk-demo/pygtk-demo.py (create_list): correct signal name. * gtk/gtk.defs: update for changes made to gtk. 2001-06-09 James Henstridge * codegen/codegen.py (write_interface): remove the constructor from interfaces. It is now provided by GInterface. (write_source): use pyg_register_interface to register interfaces. * gobjectmodule.c (PyGInterface_Type): add a GInterface class that is the base of all interfaces. It prevents subclassing of interface objects, etc. 2001-06-08 James Henstridge * gobjectmodule.c (pyg_register_boxed): function to register a new boxed type ExtensionClass. (pyg_boxed_new): new function to create wrapper instances for a particular boxed type (given its typecode). 2001-06-07 James Henstridge * pygobject.h (pyg_boxed_get): add prototypes for a PyGBoxed type that will be used for all boxed types in pygtk (well, I can hope :) * gobjectmodule.c (pyg_register_interface): new function to register interfaces with. Makes sure I don't accidentally give the interface a parent class :). Also adds a __gtype__ class attribute similar to GObject classes. May also make interfaces subclasses of GInterface at some point. 2001-05-29 James Henstridge * codegen/Makefile.am: install the code generator * gtk/Makefile.am: install the pygtk.h header * Makefile.am: install the pygobject.h header * gtk/gdk.defs, gtk/gtk.defs, gtk/gtk-types.c: changes to make things compile. 2001-05-28 James Henstridge * codegen/codegen.py (write_source): add code to reorder object definitions if necessary. To catch ordering problems in .defs file. 2001-05-27 James Henstridge * codegen/codegen.py (write_source): interfaces don't have parents. * codegen/definitions.py (InterfaceDef.write_defs): don't look for (parent ...) sections in interface definitions. * gtk/gtk.defs (Editable): interfaces don't have parents. 2001-05-07 James Henstridge * examples/gobject/signal.py: register new types. 2001-05-06 James Henstridge * gobjectmodule.c (pygobject__init__): make the __init__ function choose what GType to pass to g_object_new based on the __gtype__ attribute. (pygobject_methods): make __gobject_init__ an alias for GObject.__init__. (pyg_type_register): new function for registering new GTypes. (pyg_type_register): register the type as "module+class" rather than "module.class", as the second form is considered bad (would like to use the second form though. * configure.in: require 1.3.5 versions of glib and gtk+. 2001-05-05 James Henstridge * codegen/docgen.py (DocbookDocWriter.output_toc): Produce kind of nice docbook documentation. Example output available at http://www.gnome.org/~james/pygtk-docs/. 2001-05-03 James Henstridge * codegen/docgen.py (DocWriter): handle output of constructor and method docs. Use overrides file so as not to output info about methods we don't actually wrap. * codegen/Makefile.am (noinst_PYTHON): update file list. * codegen/__init__.py (__all__): update module list. * codegen/mergedefs.py: same here. * codegen/docgen.py (DocWriter.__init__): same here. * codegen/codegen.py: import defsparser instead. * codegen/defsparser.py: rename from parser.py. 2001-05-01 James Henstridge * autogen.sh: fix up autogen script to call autoheader * gtk/gtk.defs: remove colorsel palette manipulation functions. 2001-05-01 Matthew Wilson * acinclude.m4 (AM_PATH_PYTHON_JH): only run the AC_PATH_PROGS check if we don't have a PYTHON environment variable set * autogen.sh: run autoheader * acinclude.m4 (AM_PATH_PYTHON_JH): s/AC_PATH_PROG/AC_PATH_PROGS/ so we check for more than one python interpreter. 2001-04-28 James Henstridge * Makefile.am, pygtk/Makefile.am: limit the symbols exported by the various modules to just their module init function. * gtk/Makefile.am (_gtkmodule_la_LDFLAGS): only export the init_gtk symbol. * examples/pygtk-demo/demos/toolbar.py (main): remove buttons that called set_space_size method. * gtk/__init__.py: remove __all__ definition. It causes problems with python 2.1. * gtk/gtk.override: updated GtkColorSelection method overrides (ignore): remove gtk_entry_new from ignore list, as other entry constructor is gone. * gtk/gtk.defs: updates to make it work with current gtk+ 2001-04-21 James Henstridge * codegen/docgen.py, codegen/docextract.py: start of automatic documentation generator. 2001-04-08 James Henstridge * gtk/gtk.override: same here. * gtk/gtk-types.c (_pygtk_register_boxed_types): more fixups * gtk/gtkobject-support.c: lots of similar fixups. * codegen/argtypes.py (_enum_name): gdk type codes now seem to be named GDK_TYPE_... and not GTK_TYPE_GDK_... 2001-04-07 James Henstridge * gtk/gtk.defs: lots of defs file updates. 2001-04-06 James Henstridge * codegen/h2def.py: add --onlyobjdefs flag to script. 2001-03-30 James Henstridge * examples/pygtk-demo/demos/toolbar.py (main): toolbar demo. * examples/pygtk-demo/demos/buttonbox.py (main): add button box demo. * examples/pygtk-demo: moved rewritten testgtk demo here, and make changes to account for renamings in gtk. * gobjectmodule.c (pygobject_set_property): initialise the GValue to { 0, }, so set_property actually works. (pygobject_get_property): same here. * gtk/gtk.defs: updated enum/flag defs. * gtk/gdk.defs: updated enum/flag defs. * examples/gobject/signal.py (D.do_my_signal): add small example of overriding class closure for a signal introduced from python code. * codegen/h2def.py: add --onlyenums flag to only output enum defs. 2001-03-27 James Henstridge * examples/gobject/signal.py: simple example program that adds a signal to a class, connects a handler to an instance of that class, and finally emits that signal. Messages are printed by both the signal handler and class method closure. * gobjectmodule.c (pyg_signal_class_closure_marshal): convert dashes in signal name to underscores. Why does g_siganl_name use dashes? (pyg_signal_class_closure_marshal): fix off by one error when setting up the python argument tuple. The first element was getting left uninitialised. Signals introduced in python now work. * gtk/gtk.defs (GtkFileSelection.get_filename): return value is const. * gtk/gtk.override (_wrap_gtk_list_store_set_value): change name. (_wrap_gtk_tree_store_insert): change name. * gtk/gtk.defs (GtkListStore.set_value): change from set_cell to set_value. (GtkListStore.set_value): same here. * gobjectmodule.c (pyg_signal_class_closure_get): new function to get the closure used as the `class closure' for signals. We only need one, as we can get all the information we need from the invocation hint. (pyg_signal_new): new function to create new signals. Doesn't work right yet. 2001-03-26 James Henstridge * gobjectmodule.c (pygobject__class_init__): add some comments about creating new GTypes here. * gobjectmodule.c: add type info functions to module. 2001-03-24 James Henstridge * gtk/gtk-types.c (pygtk_text_iter_is_end): s/is_last/is_end/ * gobjectmodule.c (pyg_closure_new): s/add_fnotify/add_finalize_notifier/ * gtk/gdk.defs, gtk/gtk.defs, gtk/gtk.override: various changes to make it compile again. 2001-03-18 James Henstridge * gtk/pygtktreemodel.c (pygtk_tree_model_class_init): signals are now created in the gtktreemodel.c, so we don't need to. * gtk/gtk.defs (Adjustment): make parent GtkObject, as GtkData is gone. (GtkText): remove from binding. * codegen/codegen.py (write_source): pass in the get_type function when registering classes. (gettypetmpl): remove template. (write_class): remove get_type method generator. Handled by __gtype__ * gobjectmodule.c (initgobject): add argument to g_type_init call. (pyg_value_from_pyobject): use G_VALUE_HOLDS_* rather than G_IS_VALUE_*. (pyg_value_as_pyobject): same here. (pygobject_register_class): add an argument that takes the get_type function for the GObject. This is used to add a __gtype__ attribute to the class (the get_type function is not actually called until __gtype__ is accessed). 2001-02-03 James Henstridge * gtk/pygtktreemodel.c (*): s/tree_node/user_data/ * gtk/gtk-types.c (pygtk_text_iter_forward_to_line_end): rename function. (pygtk_tree_iter_compare): fix compare function. (pygtk_tree_iter_hash): fix hash function. 2000-12-16 James Henstridge * gtk/gtk-types.c (pygtk_text_iter_forward_to_delimiters): rename function. 2000-12-14 James Henstridge * examples/testgtk/demos/menu.py (main): destroy window on button's clicked signal rather than destroy signal. * gtk/gtk.defs: remove gtk_object_default_construct and gtk_object_constructed. * gobjectmodule.c: change over to new notification functions. * gtk/gtk-types.c: rename functions. * gobjectmodule.c (pygobject_get_property): (pygobject_set_property): change function names to match changes in glib. (...connect|emit): use g_signal_parse_name instead of g_signal_lookup, so we can parse the detail out of the signal name string. 2000-12-07 James Henstridge * examples/testgtk/demos/treemodel.py (MyTreeModel.on_get_path): fix small typo. 2000-12-06 James Henstridge * gtk/pygtktreemodel.c: fix PyObject_CallMethod calls to add parentheses around argument type list. (pygtk_tree_model_get_flags): decref py_ret -- not Py_None (pygtk_tree_model_get_n_columns): same here. (pygtk_tree_model_get_column_type): same here. (*): conditionally print out debugging messages. * examples/testgtk/demos/treemodel.py: simple test of PyGtkTreeModel. * gtk/pygtktreemodel.c: set iter->tree_node to NULL when returning FALSE, as GTK sometimes ignores the return value :( * codegen/codegen.py (interfacetypetmpl): don't set the interface type as having an instance dictionary. (write_interface): actually use interfacetypetmpl when writing out the interface type def. * codegen/argtypes.py (_conv_special_cases): add a special case for the underscore version of PyGtkTreeModel. * gtk/gtk.override: include pygtktreemodel.h * gtk/__init__.py: don't error out if we can't import ltihooks. * gtk/gtk-extrafuncs.defs: include defs for PyGtkTreeModel type. * gtk/Makefile.am (_gtkmodule_la_SOURCES): compile PyGtkTreeModel into pygtk. * gtk/pygtktreemodel.c: fix errors. * gtk/pygtktreemodel.[ch]: check in initial leaky implementation of the GtkTreeModel for use from python. Can't test it right now because gtk head is broken. 2000-11-29 James Henstridge * configure.in (enable_thread): update checks for glib/gtk+ to require at least 1.3.2. * codegen/h2def.py (write_enum_defs): Havoc's enum handling patch. * TODO: add todo item about creating real GObject subclasses, and add some info on the GInterface stuff. * examples/testgtk/testgtk.py (load_module): fix bug where mod.__file__ is the .pyc file rather than the .py file. * gtk/gtk.defs: change parent type for some classes to GtkDialog to match changes in gtk+. * gtk/Makefile.am (pysitedir, pyexecdir): fix up directory names. It wasn't installing these files in a gtk/ subdirectory :( 2000-11-16 James Henstridge * gtk/gtk.defs: make changes to make GtkEditable into an interface. * examples/testgtk/demos/__init__.py (demos): create the list of example modules on the fly, rather than having them hard coded into a list. 2000-11-11 James Henstridge * examples/testgtk/testgtk.py: start of a revamped testgtk example, similar to the new one in gtk. * gtk/gtk-types.c (PyGdkEvent_New): guard against a NULL axes member in the GdkEvent structure. * gtk/gtk.override (_wrap_gtk_tree_view_get_path_at_pos): implementation of this function. * codegen/argtypes.py (GtkTreePathArg): add an arg matcher for GtkTreePath objects, that represents them as tuples of integers. * gtk/gtk-types.c (_pygtk_register_boxed_types): add marshalers for GtkTreeIter and GtkTreePath so they can be used from signal handlers now. * gtk/gtk.override, gtk/gtk.defs: make name change for GtkTreeStore constructor. 2000-11-10 James Henstridge * gtk/gtk.override: ignore the gtk_tree_view_new function, so gtk_tree_view_new_with_model gets chosen as the constructor. (_wrap_gtk_tree_store_...): fix up the iterator creation methods so that they can take NULL arguments. (_wrap_gtk_tree_view_column_new): new implementation of this constructor. Map keyword arguments to column attributes. * gtk/gtk.defs (gtk_tree_view_new_with_model, GtkTreeView.set_model): Allow NULL to be passed in as the model argument. * gtk/gtk.override: add gtk_tree_model_get_{iter,path,value} functions. (_wrap_gtk_list_store_*): add constructor and set_cell implementations, and impls of the insertion functions that return the new GtkTreeIter, rather than treating it as an out argument. (_wrap_gtk_list_store_set_cell): allow string versions of type codes for convenience. (_wrap_gtk_list_store_insert): directly access column_headers structure member as the get_column_type method doesn't exist. (_wrap_gtk_tree_store_*): constructor, set_cell and tree iter creation methods added. Ignore [gs]et{,v}. 2000-11-09 James Henstridge * gtk/gtk.defs (ListStore, TreeStore): these implement the GtkTreeModel interface. (TreeModel): add interface definition here. * codegen/codegen.py (register_types): register interfaces into the argument type matcher. (write_source): write out interface source. Register interface class types before object types, as they may be used by objects. (write_source): set multiple base classes if an object implements an interface. (write_interface): function to write out the code for an interface. It is really a simplified version of write_class. * codegen/parser.py (DefsParser.interface): handle interface clauses. * codegen/definitions.py (InterfaceDef): add a class for interface definitions. (ObjectDef): add support for an implements keyword. * codegen/codegen.py (write_source): change code generator to pass bases in as a tuple rather than a single PyExtensionClass structure. * pygobject.h: change prototype. * gobjectmodule.c (pygobject_register_class): allow for registerin a type with multiple base classes. 2000-11-08 James Henstridge * codegen/argtypes.py (_conv_special_cases): add a special case for converting GObject -> G_OBJECT. * gobjectmodule.c (pygobject_connect*): g_signal_connect_closure renaming. * codegen/argtypes.py (arg): add GtkTreeIter support. * gtk/gtk-types.c, gtk/pygtk.h, gtk/pygtk-private.h: add a skeleton for the GtkTreeIter wrapper. 2000-11-04 James Henstridge * TODO: todo file with a few items needed for the gtk 2.0 based pygtk. * gtk/gtk.defs: add new GtkTree widget definitions. (GtkTreeViewColumn.get_justification): comment out as it doesn't exist. 2000-11-02 James Henstridge * gtk/gtk-types.c (_pygtk_register_boxed_types): small changes to handle GtkTextIter objects as arguments to signals, now that Havoc made the appropriate changes in gtk. 2000-10-30 James Henstridge * gobjectmodule.c (pyg_closure_marshal): reorder parameters to make it work with latest glib. (pygobject_connect*): pass 0 for the new detail parameter. Don't know what it is for. (pygobject_emit): pass 0 for detail parameter. (pygobject_stop_emission): pass 0 for detail parameter. * gtk/gtkmodule.c (init_gtk): init as module gtk._gtk. Using just _gtk doesn't seem to work with python 2.0 2000-10-29 James Henstridge * examples/ide/gtkcons.py: small changes to make example run. * gtk/gtk-types.c: add GtkTextIter.forward_search implementation. * gtk/gtk.override: more override functions. * gtk/gtkobject-support.c: remove some of the unused functions from this file. 2000-10-28 James Henstridge * gtk/gtk.override: override the functions used to initialise GtkTextIter objects so that they return the iterator rather than setting up an static GtkTextIter structure. * gtk/gtk.defs (TextMark): add missing GtkTextMark object. Don't know why h2defs missed it. ("gtk-extrafuncs.defs"): include gtk-extrafuncs.defs. * codegen/argtypes.py: add GdkDevice and GtkTextIter to list of recognised boxed types. * gtk/gtk-types.c: add skeleton implementation of GtkTextIter. * gtk/pygtk.h, gtk/pygtk-private.h: add prototypes for GtkTextIter wrapper. * gtk/gtk.override: ref and sink GtkObjects which have their constructors listed in the overrides file. This should get rid of the last few warnings on exit related to reference counting. * codegen/codegen.py: use the keyword module to check for method and argument names that conflict with the python keywords. By using this module, we shouldn't have problems with new keywords in future versions of python. 2000-10-27 James Henstridge * gobjectmodule.c (pygobject_emit): support for emiting signals on GObjects from python. * codegen/codegen.py (write_constructor): sink GtkObjects. This prevents us losing our reference to the object if it is sunk. * codegen/argtypes.py (ArgMatcher.object_is_a): function to check if one object type is another type. * codegen/codegen.py (register_types): pass the parent type when registering a new GObject type. * gtk/gtk-types.c (_pygtk_register_boxed_types): register marshalers for the various boxed types, so that they work as expected inside the signal handlers. * gobjectmodule.c (pygobject_repr): small change to match style of other repr functions in python. * gtk/gtkmodule.c (init_gtk): only call g_thread_init() if pygtk threading support is enabled. * configure.in (enable_thread): add configure checks so that threading support can be disabled even if python was compiled with it. It defaults to off for now because GSignal has some mutex deadlocks at the moment. 2000-10-26 James Henstridge * gtk/gtkmodule.c (init_gtk): remove gtk_signal_set_funcs call. * gobjectmodule.c (pyg_value_from_pyobject): default to using CObject for unknown boxed values and pointer values. (pyg_value_as_pyobject): same here. (pygobject_connect*): Add signal connection functions. * gobjectmodule.c (pyg_boxed_register): new function for registering functions to marshal boxed GValues to/from their python wrappers. (pyg_value_from_pyobject): add boxed support. (pyg_value_as_pyobject): add boxed support. (pyg_closure_new): new function to create a python GClosure. (pyg_closure_destroy): cleanup function for a PyGClosure. (pyg_closure_marshal): marshaler for PyGClosure. (pyg_value_as_pyobject): add const to GValue argument. * pygobject.h: export a pyg_boxed_register function to register new boxed types for use with pyg_value_from_pyobject and pyg_value_as_pyobject. 2000-10-25 James Henstridge * gtk/gtkmodule.c (init_gtk): set the default python character encoding to UTF-8. * gtk/gtk.defs: more setting constructors and default arguments. * gtk/gtk.defs: more updates. * gobjectmodule.c (pygobject_getattro): return NULL on error. This fixes the segfault :) * gtk/gtk.defs (Bin): add a field just to test pygobject_getattro. It isn't working quite properly at the moment though :( * gobjectmodule.c (check_bases): class->bases is a tuple -- not a list. (check_bases): check if class->bases != NULL before using it :( * gtk/gtk.defs: comment out new tree widget stuff at hp and owen's suggestion. * gtk/__init__.py: import gobject here as well to prevent weirdness. * gtk/gtk.defs: more updates, adding (is-constructor-of ...) and (default "...") clauses. * gtk/gtk.override (_wrap_gtk_button_new): handle the accel_group argument, and try to create a stock button if possible. * gtk/gtk.defs, gtk/gdk.defs: various small fixes. * gtk/gtk.override: fix lots of overrides to work with gtk 2.0 2000-10-24 James Henstridge * gtk/gdk.defs: remove unneeded gdk_input_* functions. * gtk/gtk.override: small updates. * gtk/gtk.defs: update with defs from all of gtk. * codegen/h2def.py (find_enum_defs): small fix to enums parsing. * gtk/gtk-types.c: add support for GdkDevice and convert function names to lowercase. * gtk/gtkmodule.c: add GdkDevice stuff to PyGtk_API. * gtk/pygtk.h, gtk/pygtk-private.h: add GdkDevice to list of boxed types. 2000-10-23 James Henstridge * gobjectmodule.c: don't set the getattr method on objects if it isn't already set. Also, install a getattro handler that will perform the usual method/attribute lookup and then call the getattr method for all base classes to allow specifying of class specific attributes 2000-07-03 James Henstridge * gtk/gtkmodule.c (init_gtk): actually initialise the gobject stuff for gtk._gtk. * pygobject.h (pygobject_check): call the correct ExtensionClass check macro. (init_pygobject): small fixup here. * codegen/codegen.py (noconstructor): handle the null constructor better. (consttmpl): use pygobject_register_wrapper. (getattrtmpl): make the getattr function raise an exception on unhandled attributes. I will use a tp_getattro function to bind all the getattr functions of base classes together. * gtk/gtk-types.c (_pygtk_register_boxed_types): commented out the object implementations for types that have been converted to GObjects. * gtk/gtkobject-support.c: commented out some of this code to get it to compile again. Also converted some functions over to GObject. * codegen/argtypes.py (EnumArg,FlagsArg): use the version from gobject. * gtk/gtkmodule.c: update * gtk/gtk.override: fix up the overrides for the new gdk.defs stuff. (GTK_TYPE_GDK_*): add some dummy defines to make things compile until the gdk-pixbuf enums are added to * codegen/argtypes.py (ObjectArg.write_param): use PyGObject rather than PyGtk_Object. * pygobject.h (pygobject_check): add check function. Just a wrapper around ExtensionClassSubclassInstance. * codegen/codegen.py: updated to use PyGObject rather than PyGtk_Object. * gtk/gtk.defs: removed most of the stuff here so I can test out the gdk stuff. * gtk/gdk.defs: updated to gdk-1.3. A lot of stuff in here. * codegen/h2def.py (verbose): remove the special case for GtkObject. (find_obj_defs): amend regexes so that GObject is considered a valid object name. 2000-06-29 James Henstridge * gobjectmodule.c: use pygobject.h. (pygobject_[gs]et_param): free the GValue afterwards so as not to leak memory. * pygobject.h: header for modules that want to use GObject. 2000-06-28 James Henstridge * gobjectmodule.c: add get_data / set_data methods. Add get_param / set_param methods. (pygobject__init__): simple init function for GObjects. Doesn't handle params yet. (pygobject_register_wrapper): don't ref the GObject -- it isn't like GtkObjects where we ref/sink them. (pygobject_queue_param_changed): add queue_param_changed method. 2000-06-27 James Henstridge * gobjectmodule.c (pygobject_dealloc): start of gobject wrapper. 2000-06-19 Frederic Gobry * gdkimlibmodule.c: do an actual call to create_from_array instead of create_from_data, and fixed broken test on alpha channel 2000-04-15 James Henstridge * gtkmodule.c: move gtk_set_locale here, and set LC_NUMERIC back to "C" after call. Python's numeric locale should be fixed on C. 2000-04-07 James Henstridge * NEWS: added news items. * pygtk.spec, configure.in: updated version number. * configure.in (enable_numpy): added --disable-numpy argument that disables numeric python support even if numpy is found. * gtkmodule.c (PyGdkWindow_{Pointer,Keyboard}{Grab,Ungrab}): new GdkWindow methods. * gtk.py (rc_reparse_all): fix spelling mistake. (GtkTreeItem.__getattr__): fix bug reported by Aaron Digulla. * generate/gtklists.defs (gtk_clist_get_selectable): fix bug in return type. 2000-04-06 James Henstridge * (lots of files): switch over to using libtool and automake-1.4a. 2000-03-13 James Henstridge * pyglade/__init__.py: remove python-1.4 ni stuff, and put in a warning message that you should think of switching over to libglade. * pygtk.spec: incremented version number. Code gtk+ dependency into spec file. Made auxillary packages depend on the pygtk package of the same version. * configure.in: incremented version number. Incremented minimum required GTK+ so that when threading is compiled in we don't get problems caused by using old buggy versions of GTK+. * gtkmodule.c (PyGdkWindow_PropertyChange): fixed the 32 bit data part of the case statement correctly this time :) 2000-03-08 James Henstridge * gtkmodule.c (PyGdkWindow_PropertyChange): fixed up problem in property_change method that could cause a crash if data of size 16 or 32 was set. (PyGtkStyleHelper_SetItem): added missing return that could cause a fallthrough to the g_assert_not_reached() call when setting a bg_pixmap element on a GtkStyle. 2000-03-03 James Henstridge The following is from Paul Clifford * libglade.py (GladeXML.signal_autoconnect): pass all the extra arguments to autoconnect. * libglademodule.c (connect_many): don't exit if the handler is a tuple instead of a function. The following fixes are from John Ehresman * gtk.py (GtkWidget.set_scroll_adjustments): return the value to user. * gtkmodule.c (GtkArg_AsPyObject): check if GtkObject is not NULL. (_wrap_gtk_clist_get_pixmap, _gtk_clist_get_pixtext): check that returned pixmap is not NULL. (_wrap_gtk_ctree_node_get_pixmap, _gtk_ctree_node_get_pixtext): check that returned pixmap is not NULL. * gtk.py (GtkToolbar): wrap callbacks when inserting a toolbar item. (GtkNotebook.set_menu_label_text): fixed typo (GtkTreeItem.__getattr__): wrap subtree attribute. 2000-03-01 Frederic Gobry * gtkmodule.c (PyGtkSelectionData_GetAttr): added .length field, so that it is possible to check for invalid selection during copy/paste. 2000-02-23 Frederic Gobry * gtkmodule (GtkRet_FromPyObject): added missing break in switch. 2000-02-21 James Henstridge * gtk.py (GtkTable.resize): added missing function. Patch from wrobell . * generate/gtkcontainers.defs (gtk_table_resize): added missing function. 2000-02-20 James Henstridge * gtk.py (GtkCList.get_[hv]adjustment): apply fix from Martin Preishuber. 2000-02-16 James Henstridge * configure.in, pygtk.spec: updated version to 0.6.4 2000-01-27 Elliot Lee * gtk.py: s/sel/self/ in GtkSpinButton.get_adjustment() 2000-01-26 James Henstridge * gtk.py (GtkObject.__hash__): use C level GtkObject for hash function. (GtkAccelGroup.__cmp__): use C level object for comparisons. (GtkAccelGroup.__hash__): use C level object for hashing. * gtkmodule.c: added hash functions for many object types. 2000-01-25 Kelly Lynn Martin * gtk.py (gdk_beep): new wrapper * gtkmodule.c (_wrap_gdk_beep): new implementation 2000-01-21 Matt Wilson * generate/generate.py: add a hack to allow a null-ok flag on the return type. This lets us create wrappers which return None if the C function returns NULL. * generate/gtklists.defs (gtk_ctree_node_nth): return None when gtk_ctree_node_nth returns NULL. 2000-01-20 Matt Wilson * gtkmodule.c (PyGtk_New): disable object sinking for now, until we rework the .def file and generation routines to know which functions are creators. 2000-01-20 Matt Wilson * gtk.py (GtkCList.row_move): s/soure_row/source_row/g typo 2000-01-17 Matt Wilson * gtkmodule.c: following changes from ChiDeok Hwang * gtkmodule.c (_wrap_gtk_adjustment_set_all): parse the 6 optional arguments. * gtkmodule.c (_wrap_gtk_widget_draw, _wrap_gtk_widget_size_allocate, _wrap_gtk_widget_intersect, _wrap_gdk_color_alloc): fix PyArg_ParseTuple format strings to use shorts instead of ints where necessary. * gtkmodule.c (_wrap_gtk_toolbar_insert_item): check to make sure callback isn't Py_None before Py_INCREF() * gtkmodule.c (_wrap_gtk_toolbar_insert_item, _wrap_gtk_toolbar_append_item, _wrap_gtk_toolbar_prepend_item): fix broken ParseTuple specification strings. * gtkmodule.c (_wrap_gtk_clist_get_selection): use GPOINTER_TO_UINT to get row. 2000-01-17 Matt Wilson * libglademodule.c (connect_one, _wrap_glade_xml_signal_connect): don't INCREF objects passed into Py_BuildValue as they are INCREF'ed for you automatically. Pass new PyObjects in with 'N' to consume the reference. * gtkmodule.c (PyGtk_New): sink the object upon creation. We don't want floating GtkObjects. * gtkmodule.c: general cleanups, testing for success of PyObject creation, reference count fixes. Several functions used Py_BuildValue with 'O' format strings. This increfs the object passed into the tuple where. When using Py*New in Py_BuildValue, use 'N' in the format string to consume the reference of the new object. 2000-01-05 Matt Wilson * gdkimlibmodule.c, gtkglmodule.c, gtkmodule.c: Patch from ChiDeok Hwang to decref PyObjects retrieved by PySequence_GetItem. 1999-12-18 Matt Wilson * gtkmodule.c (_wrap_gtk_clist_get_rows): removed function * generate/gtklists.defs (GtkCList): add field for rows 1999-12-16 Matt Wilson * gtk.py (GtkCList.__getattr__): oops - left out the _gtk. part 1999-12-15 Matt Wilson * gtk.py (GdkColor): added a function to create a GdkColor object. You should use this if you don't want to allocate a color before passing it into functions that don't need an allocated color. * gtkmodule.c (_wrap_gdk_color_new, PyGdkColor_GetAttr): add a functions to create and modify a GdkColor object. 1999-12-15 Matt Wilson * gtk.py (GtkCList.__getattr__): added 'rows' attribute. * gtkmodule.c (_wrap_gtk_clist_get_rows): added wrapper to get number of rows in a clist * gtkmodule.c (PyGtkStyle_New): If the GtkStyle passed in is NULL, return a None object. This is a bit of a hack, but without it you'll fail NULL assertions when you attach to the style_set signal. * generate/gtkmisc.defs (gtk_pixmap_new): mask is null-ok. * generate/gtklists.defs (gtk_clist_set_pixmap): likewise. * pygtk.h (PyGdkBitmap_Check): define PyGdkBitmap_Check to be the same as PyGdkWindow_Check. * gtkmodule.c: -Wall cleanups * libglademodule.c (init_libglade): removed unused variable * gdkimlibmodule.c (_wrap_gdk_imlib_init): s/static/static int/ 1999-12-12 Matt Wilson * generate/generate.py (FunctionDefsParser.define_func): added new string_or_null type to check for NULL when passing strings back 1999-09-30 James Henstridge * pygtk.spec: updated spec file. * NEWS: added news items * configure.in: updated version number. * libglademodule.c: don't segfault when a widget name does not exist. 1999-09-28 James Henstridge * libglade.py: enable gnome functionality if it is available. * gtk.py (GtkEditable.__getattr__): added accessors to GtkEditable. * generate/gtkedit.defs (GtkEditable): added accessors for some fields of the GtkEditable. * gtkmodule.c: added _raise, lower and input_get_pointer methods to the GdkWindow wrapper. * gtk.py (GtkAspectFrame.__init__): fixed prototype for GtkAspectFrame 1999-08-25 Matt Wilson * gtkmodule.c (_wrap_gdk_char_width): added wrapper for gdk_char_width * gtk.py (gdk_char_width): added wrapper for gdk_char_width 1999-08-09 James Henstridge * pygtk.spec: updated spec file, and added subpackages pygtk-glarea and pygtk-libglade. Also incremented version number. 1999-08-08 James Henstridge * NEWS: updated news file. * configure.in: increased version number to 0.6.2. * gdkimlibmodule.c (_wrap_gdk_imlib_image_get_array): make sure that the image data is not freed while the returned array is in use, so that we don't get into an inconsistent state. * gtk.py: added gdkrgb functions to this file. * gtkmodule.c: added the gdkrgb functions for drawing rgb and greyscale images. (gdk_draw_array): a new function that will draw a numpy array to a drawable with gdkrgb. It is written so that it can handle slicing on the first two axes -- it does not handle non contiguous data on the third axis. 1999-08-04 Matt Wilson * GdkImlib.py (create_image_from_xpm): new wrapper for creating imlib images from xpm data * gdkimlibmodule.c (_wrap_gdk_imlib_create_image_from_xpm): New wrapper 1999-08-03 James Henstridge * description.py (GdkWindow): added descriptions of the new routines. * gtkmodule.c (GdkWindow.property_{get,change,delete}): new functions for manipulating the properties on a window. * gtk.py (_window_foreign_new, _root_window): added wrappers for the new functions. * gtkmodule.c: added xid attribute to GdkWindow's, and added functions gdk_window_foreign_new and gdk_get_root_win. The second function is simply a wrapper that returns a GdkWindow for the root window. 1999-08-02 James Henstridge * libglade.py: new file that wraps the _libglade module. * libglademodule.c: handle connecting to another object correctly. * gtkmodule.c: added support for passing an object for gtk_signal_connect_object type behaviour. (_wrap_gtk_signal_connect_object) (_wrap_gtk_signal_connect_object_after): new wrappers. * gtk.py (idle_add, timeout_add, quit_add): pass extra arguments to the callback. * libglademodule.c (_wrap_glade_xml_signal_connect): fixed a small problem with reference counting here. * gtkmodule.c: added support for passing arguments to timeout, quit and idle functions. 1999-08-01 James Henstridge * pyglade/build.py (optionmenu_new): a small fix from David Cole. * configure.in: added tests to see if libglade is installed. * libglademodule.c: the rest of the libglade module * generate/libglade.defs: a .defs file for libglade. 1999-07-31 James Henstridge * gtkmodule.c: put in Paul Fisher's enhancements to the threading code. It should now work better with multiple threads calling GTK+ routines (remember to use threads_enter/threads_leave), and doesn't reintroduce the global interpreter lock problems that Duncan's original code worked around. * configure.in: added a check for the numpy header. * GdkImlib.py: added wrappers for the numpy routines. * gdkimlibmodule.c: added Travis Oliphant's Numeric python stuff to the imlib module. 1999-07-20 Matt Wilson * gtk.py (gdk_flush): new wrapper * gtkmodule.c (_wrap_gdk_flush): new implementation 1999-07-19 James Henstridge * gtk.py (GtkAdjustment.set_all): a wrapper for the new function. * gtkmodule.c (_wrap_gtk_adjustment_set_all): simple wrapper for setting values on an adjustment. * gtk.py (GtkCList.get_column_width): a wrapper for this new function. * gtkmodule.c (_wrap_gtk_clist_get_column_width): a function to get the column width for a column in a clist. * gtk.py (_filtprops): convert GtkAccelGroup and GdkImlibImage types back to the C equivalents. This makes adding GnomeCanvasImage items to the GnomeCanvas easier. (GtkCTree.node_get_selectable): added wrapper function. 1999-07-18 James Henstridge * gtkmodule.c (_wrap_gdk_threads_enter): don't use PyGTK_BLOCK_THREADS, since it should only be called outside the gtk main loop. Instead use Py_BEGIN_ALLOW_THREADS. * examples/gl/*: new examples of use of gtkgl. * gtkgl.py: renamed from GtkGL.py. * gtkglmodule.c (_wrap_gtk_gl_area_new, _wrap_gtk_gl_area_share_new): fixed small typo. * GtkGL.py: added constants. 1999-07-15 James Henstridge * configure.in, Makefile.am: added tests for gtkglarea. * GtkGL.py: python wrapper for the GtkGLArea widget, and a few extra functions for use with the widget. * generate/gtkgl.defs, gtkglmodule.c: added wrapper for gtkglarea. 1999-07-14 James Henstridge * gdkimlibmodule.c: modified to use the pygdkimlib.h header. * pygdkimlib.h: new file similar to pygtk.h, but for _gdkimlib module. * gdkimlibmodule.c: modified to use the pygtk.h header. * gtkmodule.c: modified file to use the pygtk.h header, and set up the _gtk._PyGtk_API object correctly. * pygtk.h: a new file with a similar use to the arrayobject.h in numeric python. I will convert over to using this in pygtk and gnome-python. 1999-07-13 James Henstridge * gtkmodule.c (_wrap_gdk_threads_enter): unblock threads when waiting for the GDK lock. This allows other threads to unlock it, and should prevent some deadlocks. * gtkmodule.c (gtk_main_iteration, gtk_events_pending): removed code to unlock gtk thread -- Owen fixed this properly in gtk. 1999-07-12 James Henstridge * gtk.py: fixed a few bugs reported by Ville Lauriki. * generate/gtkmenus.defs (gtk_item_factory_add_foreign): fix a typo. * gtkmodule.c: fixed problems if gdk_atom_name returns NULL. (_wrap_gtk_main_iteration, _wrap_gtk_events_pending): added GDK_THREADS_LEAVE() and GDK_THREADS_ENTER() calls round these functions. Without this, it deadlocks if threads are enabled. * generate/gtklists.defs (GtkTreeItem): added wrapper for treeitem->subtree attribute. * pyglade/build.py (text_new): small fix. 1999-05-19 James Henstridge * NEWS: added news about changes in this version. * configure.in, pygtk.spec: updated version number to 0.6.1. 1999-05-13 James Henstridge * gtkmodule.c (PyGtk_item_factory_cb): forgot to wrap the function call in PyGTK_{,UN}BLOCK_THREADS -- this was causing seg faults for people with threading built into their python. (PyGtk_MenuPosition): similar fix. 1999-04-25 James Henstridge * gtk.py (GtkWidget.get_allocation): a wrapper for the new function. * gtkmodule.c: added a routine for getting the allocation of a widget. 1999-04-22 James Henstridge * NEWS: added a summary of the new features. * pygtk.spec: upped version number. * configure.in: upped version number to 0.6.0. I think thread support is a big enough feature to bump it up to 0.6. 1999-04-21 James Henstridge * gtk.py (create_bitmap_from_data): added new wrapper. * gtkmodule.c: added gdk_bitmap_create_from_data function. Also export PyGtk_BlockThreads and PyGtk_UnblockThreads through the _private dictionary, so they can be used from within other modules (gnome-python in particular). 1999-04-20 James Henstridge * pygtk.spec: updated package version number. * configure.in: added a check for the python thread module. If it is found, then also link _gtkmodule to the gthread library. Incremented minimum GTK version to 1.2.1. Incremented version to 0.5.13. * gtkmodule.c: call g_thread_init if python was built with thread support. This is required to turn thread support on inside gdk/gtk. * gtk.py: added new functions. (GtkList.insert_items): this function wasn't looking at the internal GtkObject for the children to insert, so would fail. * generate/gtkbase.defs (gtk_widget_accelerators_locked): new func. * generate/gtkmenus.defs (gtk_item_factory_add_foreign): new func. (gtk_menu_get_accel_group): new func. (gtk_menu_reorder_child): new func. (gtk_menu_shell_deselect): new func. * gtkmodule.c (_wrap_gtk_combo_set_popdown_strings): accept any sequence for the second argument, rather than just lists. (_wrap_gtk_init): check the return value, and throw an exception when a connection to the X server could not be made, rather than exiting. * gtk.py: got rid of some warnings when pygtk is imported when DISPLAY is not set. Not completely necessary, but it doesn't hurt. (GtkObject.remove_data) fixed small bug pointed out by Duncan Grisby. 1999-04-08 James Henstridge * gtk.py (threads_enter,threads_leave): export these two new functions. * gtkmodule.c: applied a modified version of Duncan Grisby's threading patch. The changes were mainly inlining some of the code with macros and making it so that the extra code was not added unless python was compiled with thread support. Also added wrappers for gdk_thread_enter and gdk_thread_leave. * gtk.py (GtkList.{,un}select_item): fixed small bug reported by Ben Darnell. * gtkmodule.c: fixed some small bugs in gtk_ctree stuff. Thanks go to Chi-Deok Hwang. Also fixed the bug in gtk_clist where I copy and pasted from. * gtk.py (GtkNotebook.set_tab_label_text): Small typo. Fix from Toby D. Reeves. 1999-03-13 James Henstridge * examples/testgtk/testgtk.py: Applied some fixes from Chi-Deok Hwang to this example. Mainly clean ups needed because of me not changing testgtk with the rest of pygtk. 1999-03-12 James Henstridge * configure.in, pygtk.spec: increased version number to 0.5.12. * gtkmodule.c: added optional support for not catching exceptions in callbacks. This way it should be a lot easier to debug a pygtk program with pdb. * gtkmodule.c, gtk.py: a few fixes for problems sent in by Chi-Deok Hwang. This includes a fix to GtkWidget.event(), assignments to GtkStyle attributes throwing exceptions, font loading getting reference counting correct and throwing exceptions for bad font names and allowing None to be passed as a colour to GnomeCanvasItem.set() (the fix is in pygtk). * generate/gtklists.defs (gtk_ctree_new): I had missed this function in previous releases. 1999-02-24 James Henstridge * gtk.py: made changes to match those in the defs files and _gtk. * description.py (GdkGC.set_dashes): describe new GdkGC method. * generate/gtkcontainers.defs: removed gtk_window_set{focus,default}, since these are internal to GtkWindow. Also added gtk_handle_box_set_handle_position and gtk_handle_box_set_snap_edge. * gtkmodule.c: added gtk_widget_get_child_requisition. (PyGdkGC_GetAttr): added method GdkGC.set_dashes to set the dash pattern for this GC. 1999-02-23 James Henstridge * pyglade/build.py: added some code to get the option menu creation code working. * pyglade/xmlparse.py: check if xmllib is included in the standard python library, use it for the XML parser -- it is much more complete, and doesn't barf on some valid XML files like the old one does. If xmllib is not found, the old parser is used. * README, Makefile.am, pygtk.spec: added references to the MAPPING file. * MAPPING: new file describing the mapping of GTK+ onto python as pygtk does it. 1999-02-22 James Henstridge * description.py (GdkCursor): added information about this type. * gtk.py: commented out the __getattr__, __setattr__ and __delattr__ methods of GtkObject. There were too many things that broke because of these changes. If I can get these to work correctly in the future, I will consider re-enabling it, but not till then. * examples/testgtk/testgtk.py (create_cursor_test): added a cursor test to the python testgtk. It is adapted from the translation sent in by Osamu Tanimoto. * gtkmodule.c: fixed a bit of bad copy'n'paste in the GC part of the style wrapper code. Thanks go to Osamu Tanimoto . (PyGdkCursor_GetAttr): now GdkCursor objects have a type attribute that returns the type number for the object, and a name attribute that gives a string representation of that type number. 1999-02-20 James Henstridge * gtk.py (GtkTooltips.set_tip): made tip_private argument optional. (GtkObject.__[gs]etattr__, GtkObject.__delattr__): added some more fixes to this code so that it shouldn't throw exceptions as much when it shouldn't. * gtkmodule.c: PyGdkEvent_New wasn't interpreting GDK_BUTTON_RELEASE events correctly. Also some fix ups for gtk_menu_popup. * generate/gtkcontainers.defs (gtk_container_set_focus_child): allow null child argument. 1999-02-19 James Henstridge * gtk.py: added __getattr__ and __setattr__ methods to GtkObject so that you can set data on a GtkObject directly in a persistent way (reference counting problems prevent pygtk from always passing the same python object to a callback). These functions ignore attributes starting with an underscore. Also modified all the other __getattr__ methods to call their parent class's __getattr__ method when they fail instead of raising an exception. * gtk.py: some changes to make use of the new null-ok flags. * generate/*.defs: added some null-ok tags where appropriate. * gtkmodule.c: removed gtk_frame_new, as the null-ok change in generate.py makes it unnecessary. Also gtk_spin_button_new_no_adj has been removed because it is no longer necessary. * generate/generate.py (FunctionDefsParser.define_func): altered the code generation routines so that they recognise the (null-ok) tag in the .defs file. This should give a lot more flexibility to the generator, and allow me to move some of the special case code in gtkmodule.c back to the .defs files. The null-ok tag is currently only recognised for string, object and boxed type arguments. * gtkmodule.c: fixes to the gtk_window_set_geometry_hints function to throw an exception for bad aspect values. Also let it understand integers for aspect values. Also fixed up gtk_menu_popup so that you could give None for a few more arguments. 1999-02-16 James Henstridge * description.py: added documentation about GtkStyle changes to this pseudo module. * gtkmodule.c: added a new python type GtkStyleHelper that is used by python GtkStyle objects as a sequence type that alows us to write back to the arrays in the GtkStyle object. I have also made it possible to update the font and (black|white){,_gc}. I also added a GtkStyle.copy() method. This gives the user everything they need to alter styles inside their applications. I still believe that rc files are better, but there seem to be a lot of people who want this functionality. * gtkmodule.c (_wrap_gtk_window_set_geometry_hints): made changes so apect ratios can be set to integers. Also made it throw an exception for aspect ratios of zero, since this caused my X server to crash a few times. 1999-02-15 James Henstridge * gtk.py (GtkPaned.set_position): added function. * generate/gtkcontainers.defs (gtk_paned_set_position): added new function 1999-02-14 James Henstridge * gtk.py: added GtkWindow.set_geometry_hints to match below addition. * gtkmodule.c: added gtk_window_set_geometry_hints. 1999-02-08 James Henstridge * description.py (GdkWindow.depth): documented presence of this attribute. * gtk.py (GtkFileSelection.complete): I had left out the argument in this prototype. Fixed now. 1999-02-04 James Henstridge * gtk.py (create_pixmap_from_xpm,create_pixmap_from_xpm_d): altered these functions to use the gdk_pixmap_colormap_create variants if the first argument is a GtkWidget or GtkStyle. This means you don't have to realise the widget before creating pixmaps from it. (GtkCheckMenuItem.set_state, GtkToggleButton.set_state): removed these compatibility routines so they don't mask GtkWidget.set_state. * gtkmodule.c: moved gtk_item_factory_get_widget here so I can catch NULL returns and convert them to None returns. Also added the depth attribute to GdkWindow objects. Also added gdk_pixmap_colormap_create_* variants. These can be used if you only have a colormap reference, rather than a window. * GtkExtra.py: there were a couple of calls to GtkContainer.border_width which is deprecated. * examples/testgtk/testgtk.py: fixes to dnd code in this example. I hadn't looked at it since Owen made the dnd changes. * examples/simple/tooltip2.py: fixed small bug pointed out by Markus Oberhumer. * pyglade/build.py (clist_new): fixes to make it parse after clist changes. 1999-02-02 James Henstridge * generate/gtklists.defs, gtk.py: added GtkCList.focus_row. * _gdkimlibmodule.c, GdkImlib.py: added push_visual and pop_visual, that can be used to easily set GTK to use the imlib visual/colormap combination. * gtkmodule.c: the PyObject -> GtkArg conversion routines were not catching some exceptions that they generated. This would cause wierd problems if you passed the wrong argument types to signal handlers. This was found by Chi-Deok Hwang * examples/simple/dnd.py, examples/simple/dndpixmaps.py: and example of drag and drop contributed by Chi-Deok Hwang * gtkmodule.c: added gtk_ctree_get_selection, that returns nodes rather than pointers. * gtk.py: made changes to reflect those below. Also added GtkWidget.get_colormap() (it was missing previously). * generate/gtkedit.defs (gtk_spin_button_update): added function. * generate/gtkmenus.defs (gtk_check_menu_item_set_active): function renaming. (gtk_menu_set_title): added function. * generate/gtkmisc.defs (gtk_toggle_button_[sg]et_active): added functions, and removed gtk_toggle_button_set_state. 1999-01-27 James Henstridge * gtkmodule.c: fixed some typos in _wrap_gtk_ctree_get_row_data and _wrap_gtk_ctree_base_nodes. This fix was sent to me by Jim Robinson . 1999-01-26 James Henstridge * gtk.py: fixed typo in GtkProgress.configure. 1999-01-22 James Henstridge * gdkimlibmodule.c: (_wrap_gdk_imlib_create_image_from_data): function would raise an exception if there was a null in the data or alpha arguments. Also added some sanity checks on the lengths of data and alpha. This patch was submitted by Toby D. Reeves. 1999-01-21 James Henstridge * examples/testgtk/testgtk.py (create_scrolled_windows): changed a call to GtkContainer.add to GtkScrolledWindow.add_with_viewport. * gtk.py (GtkPacker.add): Added defaults for the arguments. 1999-01-11 James Henstridge * gtk.py (GtkProgress.get_current_percentage): fixed function call * gtk.py (GtkScrolledWindow): changed so it inherits from GtkBin instead of GtkContainer, to match changes in GTK. * GDK.py (DRAG_PROTO_ROOTWIN): Added the constant. * gtkmodule.c: forgot to include GTK_TYPE_DOUBLE in one of the GtkArg processing routines. Also fixed a problem for events with a NULL window. 1998-12-24 James Henstridge * gdkimlibmodule.c(_wrap_gdk_imlib_get_rgb_height): I accidentally returned rgb_width instead of rgb_height. This bug report was from Osamu Tanimoto . 1998-12-22 James Henstridge * GtkExtra.py: modified the signal connect bit in the MenuFactory code so it is a bit more sane. 1998-12-21 James Henstridge * pygtk.spec: updated version here as well. * README: updated required GTK version to 1.1.9 * configure.in: Updated version for pygtk to 0.5.9, increased GTK version check to 1.1.9. 1998-12-20 James Henstridge * gtkmodule.c, generate/gtkmisc.defs: moved gtk_preview_draw_row here because python's string conversion routines do not like nuls in a string, but you quite often want them in image data. 1998-12-17 James Henstridge * examples/*/*.py: changed calls to GtkLabel.set to GtkLabel.set_text. * gtk.py: made changes to reflect those below. * generate/gtkbase.defs (gtk_widget_set_app_paintable): added this stub. * generate/gtkmisc.defs (gtk_label_set_text): renamed gtk_label_set to this, added gtk_label_set_line_wrap. * generate/gtkdnd.defs: Added gtk_drag_source_unset. * generate/gtklists.defs: moved reordering function stubs from ctree to clist. * generate/gtkcontainers.defs: removed GtkDrawWindow. Added gtk_paned_pack[12] * GtkExtra.py (MenuFactory.create): wasn't passing extra arguments onto signal connect. Bug fix from Sam Tannous * gtkmodule.c: Applied some fixes to the ctree code from A.Hartgers@phys.tue.nl 1998-12-09 James Henstridge * gtk.py, generate/gtkmisc.defs, GTK.py: Added gtk_toolbar_set_space_style and the required enum. 1998-12-08 James Henstridge * gtkmodule.c: fixed up the toolbar functions, so they also use gtk_signal_connect_full, and now return the added child, like the C functions do. * examples/testgtk/testgtk.py: fixed up some stuff in the main function and clist test. * gtk.py, generate/gtkcontainers.defs: added gtk_window_set_transient_for and gtk_window_set_default_size. * gtkmodule.c: Changed to use _full functions instead of _interp functions. Also made gtk_signal_connect and friends use the gtk_signal_connect_full function rather than the default marshaller method. 1998-12-07 James Henstridge * generate/gtkcontainers.defs (gtk_viewport_new): Accept NULL arguments for adjustments of a viewport. This is the correct fix for Michael's other patch. * examples/*/*.py: got rid of deprecation messages. Put scrolled windows round all clists. * pyglade/build.py: Fixes a bug in scrolledwindow_new pointed out by Michael Hudson. Also made some changes so that it doesn't use any deprecated functions. * gtkmodule.c: fixed two typos pointed out by Michael Hudson 1998-12-05 James Henstridge * gtkmodule.c, generate/*.defs, gtk.py: updated to latest CVS. This includes the function name changes Tim Janik introduced. I have added backward compatibility wrappers for the old functions in gtk.py, which also print out a deprecation message. 1998-12-01 James Henstridge * gtk.py (GtkLayout): I had left a few remnants from when this class was in gnome.ui. This is now fixed. 1998-11-29 James Henstridge * description.py: Added a description of the GtkCTreeNode type. * gtk.py (GtkCTree): Added the GtkCTree class to this layer. Hopefully I haven't made any mistakes. 1998-11-28 James Henstridge * generate/gtklists.defs: added entries for GtkCTree. * gtkmodule.c: Added the GtkCTreeNode type. It exports some of the attributes of the GtkCTreeRow associated with the node. Specifically, the parent, next sibling links, and a list of children. This should be enough attributes to make the type useful. Also added extra functions for GtkCTree. 1998-11-27 James Henstridge * generate/gtk*.defs: updated for GTK+-1.1.5. * gtkmodule.c: added the PyGtk_RegisterBoxed function, exported through the _private dictionary. This allows adding extra boxed types so they will be recognised in signal handlers and the like. * gtk.py: this file used to be Gtkinter.py. People should make this change in their programs. Also updated for changes to the API. * Gtkinter.py: new file. Simply does a "from gtk import *", so old programs will still run properly. * examples/*/*.py, pyglade/*.py, GdkImlib.py, GtkExtra.py: changed occurences of Gtkinter to gtk. 1998-11-17 James Henstridge * GdkImlib.py: missed a closing parenthesis. This caused problems. * generate/gtk.defs(gtk_rc_add_*_style): removed these functions. They weren't exported by Gtkinter, and their declaration has changed in newer GTK+'s. Now pygtk should compile with both GTK+-1.1.3 and CVS GTK (tested for a 1998-11-16 checkout). * configure.in, NEWS: bumped version up to 0.5.5, and made new release. * generate/gtkmisc.defs, Gtkinter.py: added the GtkCalendar widget. 1998-11-15 James Henstridge * gtkmodule.c: added GdkCursor type. * gtkmodule.c(GdkWindow.set_cursor): function to set cursor for window * generate/gtk.defs (gtk_cursor_*): new functions to create cursors * gtkmodule.c(gtk_pixmap_create_from_xpm_d): new function to create a GdkPixmap from a list of strings (XPM data). This allows you to store pixmaps inline with your program for distribution. * gdkimlibmodule.c: export the GdkImlibImageType, and a _private dictionary that holds exported functions. I should be able to add the GdkImlibImage dependent functions to _gnomeui now. * GDK.py, GTK.py: updated with new constants. * examples/simple/*1.py: stopped importing _gtkbase, and don't call _gtk.pygtk_init(). * pyglade/build.py: added menu widgets to the interface building code. * pygtk.spec: new file -- an RPM spec file for this package. * NEWS: add information about this new version. 1998-11-15 James Henstridge * gtkmodule.c: added GdkAtom handling. There is now a special type for GdkAtoms that can be cast to string and int with str() and int() respectively, and it supports coercions, so it should act like an int in most cases. Functions that take GdkAtom's as arguments actually take ints, so backward compatibility is kept, but functions that return GdkAtoms now return this special type. * gtkmodule.c, generate/gtkdnd.defs, Gtkinter.py: added the new DnD code, and support for selections. The gtk_selection_* functions have been mapped to GtkWidget.selection_*, and the gtk_drag_* functions have been mapped to GtkWidget.drag_* * GdkImlib.py: added function create_image_from_data, so you can create an image from raw RGB data. Also added the Image.get_pixmap method, which is like Image.make_pixmap, except it returns the GdkPixmap,GdkBitmap pair, instead of a GtkPixmap widget. 1998-11-14 James Henstridge * generate/*.defs: changes to bring pygtk up to date with GTK+-1.1.3 1998-11-13 James Henstridge * gtkmodule.c: added wrappers for GdkDragContext and GtkSelectionData. Also removed all the old DnD GdkEvent mappings, and added the GdkEventDND mapping. This should be enough to get the new Dnd signals working. * generate/gtkbase.defs, gtkmodule.c(_wrap_gtk_widget_dnd_*): removed the old gtk_widget_dnd_* functions from the bindings. 1998-11-10 James Henstridge * build system: Converted over to using automake. Note thay some modifications have been made to the original version of automake, so you will need to apply my patches if you want to modify pygtk. * swigsrc/*: removed. I am now using some code generation tools that take .defs files as input. * gdkimlibmodule.c: got rid of all the swig stuff, and cleaned up the code a bit. This has reduced the source code size by half. 1998-11-10 James Henstridge * ChangeLog: started change log. Old Changelog file has been moved to NEWS * NEWS: used to be Changelog pygtk-2.24.0/config.guess0000755000175000017500000012763711545325677012235 00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 # Free Software Foundation, Inc. timestamp='2009-12-30' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner. Please send patches (context # diff format) to and include a ChangeLog # entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[456]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) case ${UNAME_MACHINE} in pc98) echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else echo ${UNAME_MACHINE}-unknown-linux-gnueabi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit ;; i*86:Linux:*:*) LIBC=gnu eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in i386) eval $set_cc_for_build if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then UNAME_PROCESSOR="x86_64" fi fi ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: pygtk-2.24.0/README.win320000644000175000017500000000141711545325344011510 00000000000000Windows Setuptools Build Instructions ====================================== 1. Install gtk+ bundle from gtk.org (to C:\GTK for example) 2. Install Python2.6 3. Install pycairo and pygobject 4. Install MinGW and MSYS 5. Add the following to your msys environment variables (open and append to C:\msys\1.0\etc\profile) or set for the session $ export PATH=/c/GTK/bin:/c/Python26:/c/Python26/Scripts:$PATH $ export PKG_CONFIG_PATH=/c/GTK/lib/pkgconfig:/c/Python26/Lib/pkgconfig:$PKG_CONFIG_PATH 6. In msys shell, build with $ python setup.py build --compiler=mingw32 --enable-threading bdist_wininst Tested with * gtk+-bundle_2.20.0-20100406_win32.zip * MinGW-5.16.exe * MSYS-1.0.11.exe * python-2.6.5.exe * pycairo-1.8.6.win32-py2.6.exe pygtk-2.24.0/m4/0000755000175000017500000000000011545327517010270 500000000000000pygtk-2.24.0/m4/python.m40000644000175000017500000000361411545325345011774 00000000000000## this one is commonly used with AM_PATH_PYTHONDIR ... dnl AM_CHECK_PYMOD(MODNAME [,SYMBOL [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]]]) dnl Check if a module containing a given symbol is visible to python. AC_DEFUN([AM_CHECK_PYMOD], [AC_REQUIRE([AM_PATH_PYTHON]) py_mod_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'` AC_MSG_CHECKING(for ifelse([$2],[],,[$2 in ])python module $1) AC_CACHE_VAL(py_cv_mod_$py_mod_var, [ ifelse([$2],[], [prog=" import sys try: import $1 except ImportError: sys.exit(1) except: sys.exit(0) sys.exit(0)"], [prog=" import $1 $1.$2"]) if $PYTHON -c "$prog" 1>&AC_FD_CC 2>&AC_FD_CC then eval "py_cv_mod_$py_mod_var=yes" else eval "py_cv_mod_$py_mod_var=no" fi ]) py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"` if test "x$py_val" != xno; then AC_MSG_RESULT(yes) ifelse([$3], [],, [$3 ])dnl else AC_MSG_RESULT(no) ifelse([$4], [],, [$4 ])dnl fi ]) dnl a macro to check for ability to create python extensions dnl AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE]) dnl function also defines PYTHON_INCLUDES AC_DEFUN([AM_CHECK_PYTHON_HEADERS], [AC_REQUIRE([AM_PATH_PYTHON]) AC_MSG_CHECKING(for headers required to compile python extensions) dnl deduce PYTHON_INCLUDES py_prefix=`$PYTHON -c "import sys; print sys.prefix"` py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"` if test -x "$PYTHON-config"; then PYTHON_INCLUDES=`$PYTHON-config --includes 2>/dev/null` else PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}" if test "$py_prefix" != "$py_exec_prefix"; then PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}" fi fi AC_SUBST(PYTHON_INCLUDES) dnl check if the headers exist: save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES" AC_TRY_CPP([#include ],dnl [AC_MSG_RESULT(found) $1],dnl [AC_MSG_RESULT(not found) $2]) CPPFLAGS="$save_CPPFLAGS" ]) pygtk-2.24.0/m4/jhflags.m40000644000175000017500000000106111545325345012063 00000000000000dnl dnl JH_ADD_CFLAG(FLAG) dnl checks whether the C compiler supports the given flag, and if so, adds dnl it to $CFLAGS. If the flag is already present in the list, then the dnl check is not performed. AC_DEFUN([JH_ADD_CFLAG], [ case " $CFLAGS " in *@<:@\ \ @:>@$1@<:@\ \ @:>@*) ;; *) save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $1" AC_MSG_CHECKING([whether [$]CC understands $1]) AC_TRY_COMPILE([], [], [jh_has_option=yes], [jh_has_option=no]) AC_MSG_RESULT($jh_has_option) if test $jh_has_option = no; then CFLAGS="$save_CFLAGS" fi ;; esac]) pygtk-2.24.0/atkrectangle.override0000644000175000017500000001647411545325344014105 00000000000000/* -*- Mode: C; c-basic-offset: 4 -*- * pygtk- Python bindings for the GTK toolkit. * Copyright (C) 2006 John Finlay * * atkrectangle.override: atk.Rectangle overrides * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ %% headers static gboolean pyatk_rectangle_from_pyobject(PyObject *object, AtkRectangle *rectangle) { g_return_val_if_fail(rectangle != NULL, FALSE); if (pyg_boxed_check(object, ATK_TYPE_RECTANGLE)) { *rectangle = *pyg_boxed_get(object, AtkRectangle); return TRUE; } if (PyArg_ParseTuple(object, "iiii", &rectangle->x, &rectangle->y, &rectangle->width, &rectangle->height)) { return TRUE; } PyErr_Clear(); PyErr_SetString(PyExc_TypeError, "could not convert to AtkRectangle"); return FALSE; } static PyObject * PyAtkRectangle_from_value(const GValue *value) { AtkRectangle *rect = (AtkRectangle *)g_value_get_boxed(value); return pyg_boxed_new(ATK_TYPE_RECTANGLE, rect, TRUE, TRUE); } static int PyAtkRectangle_to_value(GValue *value, PyObject *object) { AtkRectangle rect; if (!pyatk_rectangle_from_pyobject(object, &rect)) return -1; g_value_set_boxed(value, &rect); return 0; } void _pyatk_register_boxed_types(void) { pyg_register_boxed_custom(ATK_TYPE_RECTANGLE, PyAtkRectangle_from_value, PyAtkRectangle_to_value); } %% override atk_rectangle_new kwargs static int _wrap_atk_rectangle_new(PyGBoxed *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "x", "y", "width", "height", NULL }; AtkRectangle rect = {0, 0, 0, 0}; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|iiii:AtkRectangle.__init__", kwlist, &(rect.x), &(rect.y), &(rect.width), &(rect.height))) return -1; self->boxed = g_boxed_copy(ATK_TYPE_RECTANGLE, &rect); self->free_on_dealloc = TRUE; self->gtype = ATK_TYPE_RECTANGLE; return 0; } %% override-slot AtkRectangle.tp_as_sequence static Py_ssize_t _wrap_atk_rectangle_length(PyGBoxed *self) { return 4; } static PyObject * _wrap_atk_rectangle_getitem(PyGBoxed *self, Py_ssize_t pos) { AtkRectangle *rect; if (pos < 0) pos += 4; if (pos < 0 || pos >= 4) { PyErr_SetString(PyExc_IndexError, "index out of range"); return NULL; } rect = pyg_boxed_get(self, AtkRectangle); switch (pos) { case 0: return PyInt_FromLong(rect->x); case 1: return PyInt_FromLong(rect->y); case 2: return PyInt_FromLong(rect->width); case 3: return PyInt_FromLong(rect->height); default: g_assert_not_reached(); return NULL; } } static int _wrap_atk_rectangle_setitem(PyGBoxed *self, Py_ssize_t pos, PyObject *value) { AtkRectangle *rect; gint val; if (pos < 0) pos += 4; if (pos < 0 || pos >= 4) { PyErr_SetString(PyExc_IndexError, "index out of range"); return -1; } rect = pyg_boxed_get(self, AtkRectangle); val = PyInt_AsLong(value); if (PyErr_Occurred()) return -1; switch(pos) { case 0: rect->x = val; break; case 1: rect->y = val; break; case 2: rect->width = val; break; case 3: rect->height = val; break; default: g_assert_not_reached(); return -1; } return 0; } static PySequenceMethods _wrap_atk_rectangle_tp_as_sequence = { (lenfunc)_wrap_atk_rectangle_length, /* sq_length */ 0, /* sq_concat */ 0, /* sq_repeat */ (ssizeargfunc)_wrap_atk_rectangle_getitem, /* sq_item */ 0, /* sq_slice */ (ssizeobjargproc)_wrap_atk_rectangle_setitem, /* sq_ass_item */ 0, /* sq_contains */ 0, /* sq_inplace_concat */ 0 /* sq_inplace_repeat */ }; %% override-attr AtkRectangle.x static int _wrap_atk_rectangle__set_x(PyGBoxed *self, PyObject *value, void *closure) { gint val; val = PyInt_AsLong(value); if (PyErr_Occurred()) return -1; pyg_boxed_get(self, AtkRectangle)->x = val; return 0; } %% override-attr AtkRectangle.y static int _wrap_atk_rectangle__set_y(PyGBoxed *self, PyObject *value, void *closure) { gint val; val = PyInt_AsLong(value); if (PyErr_Occurred()) return -1; pyg_boxed_get(self, AtkRectangle)->y = val; return 0; } %% override-attr AtkRectangle.width static int _wrap_atk_rectangle__set_width(PyGBoxed *self, PyObject *value, void *closure) { gint val; val = PyInt_AsLong(value); if (PyErr_Occurred()) return -1; pyg_boxed_get(self, AtkRectangle)->width = val; return 0; } %% override-attr AtkRectangle.height static int _wrap_atk_rectangle__set_height(PyGBoxed *self, PyObject *value, void *closure) { gint val; val = PyInt_AsLong(value); if (PyErr_Occurred()) return -1; pyg_boxed_get(self, AtkRectangle)->height = val; return 0; } %% override atk_rectangle_intersect kwargs static PyObject * _wrap_atk_rectangle_intersect(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "src", NULL }; PyObject *py_src; AtkRectangle src, dest = {0, 0, 0, 0}; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:AtkRectangle.intersect", kwlist, &py_src)) { return NULL; } if (!pyg_boxed_check(py_src, ATK_TYPE_RECTANGLE)) { if (!pyatk_rectangle_from_pyobject(py_src, &src)) { PyErr_Clear(); PyErr_SetString(PyExc_TypeError, "src must be a AtkRectangle or 4-tuple"); return NULL; } } else { src = *pyg_boxed_get(py_src, AtkRectangle); } atk_rectangle_intersect(pyg_boxed_get(self, AtkRectangle), &src, &dest); return pyg_boxed_new(ATK_TYPE_RECTANGLE, &dest, TRUE, TRUE); } %% override atk_rectangle_union kwargs static PyObject * _wrap_atk_rectangle_union(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "src", NULL }; PyObject *py_src; AtkRectangle src, dest; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:AtkRectangle.union", kwlist, &py_src)) { return NULL; } if (!pyg_boxed_check(py_src, ATK_TYPE_RECTANGLE)) { if (!pyatk_rectangle_from_pyobject(py_src, &src)) { PyErr_Clear(); PyErr_SetString(PyExc_TypeError, "src must be a AtkRectangle or 4-tuple"); return NULL; } } else { src = *pyg_boxed_get(py_src, AtkRectangle); } atk_rectangle_union(pyg_boxed_get(self, AtkRectangle), &src, &dest); return pyg_boxed_new(ATK_TYPE_RECTANGLE, &dest, TRUE, TRUE); } pygtk-2.24.0/atk.defs0000644000175000017500000016372611545325344011325 00000000000000;; -*- scheme -*- (include "atk-types.defs") ;; From atk-enum-types.h (define-function hyperlink_state_flags_get_type (c-name "atk_hyperlink_state_flags_get_type") (return-type "GType") ) (define-function role_get_type (c-name "atk_role_get_type") (return-type "GType") ) (define-function layer_get_type (c-name "atk_layer_get_type") (return-type "GType") ) (define-function relation_type_get_type (c-name "atk_relation_type_get_type") (return-type "GType") ) (define-function state_type_get_type (c-name "atk_state_type_get_type") (return-type "GType") ) (define-function text_attribute_get_type (c-name "atk_text_attribute_get_type") (return-type "GType") ) (define-function text_boundary_get_type (c-name "atk_text_boundary_get_type") (return-type "GType") ) (define-function text_clip_type_get_type (c-name "atk_text_clip_type_get_type") (return-type "GType") ) (define-function key_event_type_get_type (c-name "atk_key_event_type_get_type") (return-type "GType") ) (define-function coord_type_get_type (c-name "atk_coord_type_get_type") (return-type "GType") ) ;; From /usr/include/atk-1.0/atk/atkaction.h (define-function atk_action_get_type (c-name "atk_action_get_type") (return-type "GType") (parameters ) ) (define-method do_action (of-object "AtkAction") (c-name "atk_action_do_action") (return-type "gboolean") (parameters '("gint" "i") ) ) (define-method get_n_actions (of-object "AtkAction") (c-name "atk_action_get_n_actions") (return-type "gint") ) (define-method get_description (of-object "AtkAction") (c-name "atk_action_get_description") (return-type "const-gchar*") (parameters '("gint" "i") ) ) (define-method get_name (of-object "AtkAction") (c-name "atk_action_get_name") (return-type "const-gchar*") (parameters '("gint" "i") ) ) (define-method get_keybinding (of-object "AtkAction") (c-name "atk_action_get_keybinding") (return-type "const-gchar*") (parameters '("gint" "i") ) ) (define-method set_description (of-object "AtkAction") (c-name "atk_action_set_description") (return-type "gboolean") (parameters '("gint" "i") '("const-gchar*" "desc") ) ) (define-method get_localized_name (of-object "AtkAction") (c-name "atk_action_get_localized_name") (return-type "const-gchar*") (parameters '("gint" "i") ) ) (define-virtual do_action (of-object "AtkAction") (return-type "gboolean") (parameters '("gint" "i") ) ) (define-virtual get_n_actions (of-object "AtkAction") (return-type "gint") ) (define-virtual get_description (of-object "AtkAction") (return-type "const-gchar*") (parameters '("gint" "i") ) ) (define-virtual get_name (of-object "AtkAction") (return-type "const-gchar*") (parameters '("gint" "i") ) ) (define-virtual get_keybinding (of-object "AtkAction") (return-type "const-gchar*") (parameters '("gint" "i") ) ) (define-virtual set_description (of-object "AtkAction") (return-type "gboolean") (parameters '("gint" "i") '("const-gchar*" "desc") ) ) (define-virtual get_localized_name (of-object "AtkAction") (return-type "const-gchar*") (parameters '("gint" "i") ) ) ;; From /usr/include/atk-1.0/atk/atkcomponent.h (define-function atk_component_get_type (c-name "atk_component_get_type") (return-type "GType") (parameters ) ) (define-method add_focus_handler (of-object "AtkComponent") (c-name "atk_component_add_focus_handler") (return-type "guint") (parameters '("AtkFocusHandler" "handler") ) ) (define-method contains (of-object "AtkComponent") (c-name "atk_component_contains") (return-type "gboolean") (parameters '("gint" "x") '("gint" "y") '("AtkCoordType" "coord_type") ) ) (define-method ref_accessible_at_point (of-object "AtkComponent") (c-name "atk_component_ref_accessible_at_point") (return-type "AtkObject*") (parameters '("gint" "x") '("gint" "y") '("AtkCoordType" "coord_type") ) ) (define-method get_extents (of-object "AtkComponent") (c-name "atk_component_get_extents") (return-type "none") (parameters '("gint*" "x") '("gint*" "y") '("gint*" "width") '("gint*" "height") '("AtkCoordType" "coord_type") ) ) (define-method get_position (of-object "AtkComponent") (c-name "atk_component_get_position") (return-type "none") (parameters '("gint*" "x") '("gint*" "y") '("AtkCoordType" "coord_type") ) ) (define-method get_size (of-object "AtkComponent") (c-name "atk_component_get_size") (return-type "none") (parameters '("gint*" "width") '("gint*" "height") ) ) (define-method grab_focus (of-object "AtkComponent") (c-name "atk_component_grab_focus") (return-type "gboolean") ) (define-method remove_focus_handler (of-object "AtkComponent") (c-name "atk_component_remove_focus_handler") (return-type "none") (parameters '("guint" "handler_id") ) ) (define-method set_extents (of-object "AtkComponent") (c-name "atk_component_set_extents") (return-type "gboolean") (parameters '("gint" "x") '("gint" "y") '("gint" "width") '("gint" "height") '("AtkCoordType" "coord_type") ) ) (define-method set_position (of-object "AtkComponent") (c-name "atk_component_set_position") (return-type "gboolean") (parameters '("gint" "x") '("gint" "y") '("AtkCoordType" "coord_type") ) ) (define-method set_size (of-object "AtkComponent") (c-name "atk_component_set_size") (return-type "gboolean") (parameters '("gint" "width") '("gint" "height") ) ) (define-function rectangle_get_type (c-name "atk_rectangle_get_type") (return-type "GType") ) (define-method get_layer (of-object "AtkComponent") (c-name "atk_component_get_layer") (return-type "AtkLayer") ) (define-method get_mdi_zorder (of-object "AtkComponent") (c-name "atk_component_get_mdi_zorder") (return-type "gint") ) (define-method get_alpha (of-object "AtkComponent") (c-name "atk_component_get_alpha") (return-type "gdouble") ) (define-virtual add_focus_handler (of-object "AtkComponent") (return-type "guint") (parameters '("AtkFocusHandler" "handler") ) ) (define-virtual contains (of-object "AtkComponent") (return-type "gboolean") (parameters '("gint" "x") '("gint" "y") '("AtkCoordType" "coord_type") ) ) (define-virtual ref_accessible_at_point (of-object "AtkComponent") (return-type "AtkObject*") (parameters '("gint" "x") '("gint" "y") '("AtkCoordType" "coord_type") ) ) (define-virtual get_extents (of-object "AtkComponent") (return-type "none") (parameters '("gint*" "x") '("gint*" "y") '("gint*" "width") '("gint*" "height") '("AtkCoordType" "coord_type") ) ) (define-virtual get_position (of-object "AtkComponent") (return-type "none") (parameters '("gint*" "x") '("gint*" "y") '("AtkCoordType" "coord_type") ) ) (define-virtual get_size (of-object "AtkComponent") (return-type "none") (parameters '("gint*" "width") '("gint*" "height") ) ) (define-virtual grab_focus (of-object "AtkComponent") (return-type "gboolean") ) (define-virtual remove_focus_handler (of-object "AtkComponent") (return-type "none") (parameters '("guint" "handler_id") ) ) (define-virtual set_extents (of-object "AtkComponent") (return-type "gboolean") (parameters '("gint" "x") '("gint" "y") '("gint" "width") '("gint" "height") '("AtkCoordType" "coord_type") ) ) (define-virtual set_position (of-object "AtkComponent") (return-type "gboolean") (parameters '("gint" "x") '("gint" "y") '("AtkCoordType" "coord_type") ) ) (define-virtual set_size (of-object "AtkComponent") (return-type "gboolean") (parameters '("gint" "width") '("gint" "height") ) ) (define-virtual get_layer (of-object "AtkComponent") (return-type "AtkLayer") ) (define-virtual get_mdi_zorder (of-object "AtkComponent") (return-type "gint") ) (define-virtual bounds_changed (of-object "AtkComponent") (return-type "none") (parameters '("AtkRectangle*" "bounds") ) ) (define-virtual get_alpha (of-object "AtkComponent") (return-type "gdouble") ) ;; From /usr/include/atk-1.0/atk/atkdocument.h (define-function atk_document_get_type (c-name "atk_document_get_type") (return-type "GType") ) (define-method get_document_type (of-object "AtkDocument") (c-name "atk_document_get_document_type") (return-type "const-gchar*") ) (define-method get_document (of-object "AtkDocument") (c-name "atk_document_get_document") (return-type "gpointer") ) (define-method get_attributes (of-object "AtkDocument") (c-name "atk_document_get_attributes") (return-type "AtkAttributeSet*") ) (define-method get_attribute_value (of-object "AtkDocument") (c-name "atk_document_get_attribute_value") (return-type "const-gchar*") (parameters '("const-gchar*" "attribute_name") ) ) (define-method set_attribute_value (of-object "AtkDocument") (c-name "atk_document_set_attribute_value") (return-type "gboolean") (parameters '("const-gchar*" "attribute_name") '("const-gchar*" "attribute_value") ) ) (define-virtual get_document_type (of-object "AtkDocument") (return-type "const-gchar*") ) (define-virtual get_document (of-object "AtkDocument") (return-type "gpointer") ) (define-virtual get_document_attributes (of-object "AtkDocument") (return-type "AtkAttributeSet*") ) (define-virtual get_document_attribute_value (of-object "AtkDocument") (return-type "G_CONST_RETURNgchar*") (parameters '("const-gchar*" "attribute_name") ) ) (define-virtual set_document_attribute (of-object "AtkDocument") (return-type "gboolean") (parameters '("const-gchar*" "attribute_name") '("const-gchar*" "attribute_value") ) ) ;; From /usr/include/atk-1.0/atk/atkeditabletext.h (define-function atk_editable_text_get_type (c-name "atk_editable_text_get_type") (return-type "GType") ) (define-method set_run_attributes (of-object "AtkEditableText") (c-name "atk_editable_text_set_run_attributes") (return-type "gboolean") (parameters '("AtkAttributeSet*" "attrib_set") '("gint" "start_offset") '("gint" "end_offset") ) ) (define-method set_text_contents (of-object "AtkEditableText") (c-name "atk_editable_text_set_text_contents") (return-type "none") (parameters '("const-gchar*" "string") ) ) (define-method insert_text (of-object "AtkEditableText") (c-name "atk_editable_text_insert_text") (return-type "none") (parameters '("const-gchar*" "string") '("gint" "length") '("gint*" "position") ) ) (define-method copy_text (of-object "AtkEditableText") (c-name "atk_editable_text_copy_text") (return-type "none") (parameters '("gint" "start_pos") '("gint" "end_pos") ) ) (define-method cut_text (of-object "AtkEditableText") (c-name "atk_editable_text_cut_text") (return-type "none") (parameters '("gint" "start_pos") '("gint" "end_pos") ) ) (define-method delete_text (of-object "AtkEditableText") (c-name "atk_editable_text_delete_text") (return-type "none") (parameters '("gint" "start_pos") '("gint" "end_pos") ) ) (define-method paste_text (of-object "AtkEditableText") (c-name "atk_editable_text_paste_text") (return-type "none") (parameters '("gint" "position") ) ) (define-virtual set_run_attributes (of-object "AtkEditableText") (return-type "gboolean") (parameters '("AtkAttributeSet*" "attrib_set") '("gint" "start_offset") '("gint" "end_offset") ) ) (define-virtual set_text_contents (of-object "AtkEditableText") (return-type "none") (parameters '("const-gchar*" "string") ) ) (define-virtual insert_text (of-object "AtkEditableText") (return-type "none") (parameters '("const-gchar*" "string") '("gint" "length") '("gint*" "position") ) ) (define-virtual copy_text (of-object "AtkEditableText") (return-type "none") (parameters '("gint" "start_pos") '("gint" "end_pos") ) ) (define-virtual cut_text (of-object "AtkEditableText") (return-type "none") (parameters '("gint" "start_pos") '("gint" "end_pos") ) ) (define-virtual delete_text (of-object "AtkEditableText") (return-type "none") (parameters '("gint" "start_pos") '("gint" "end_pos") ) ) (define-virtual paste_text (of-object "AtkEditableText") (return-type "none") (parameters '("gint" "position") ) ) ;; From atkgobjectaccessible.h (define-function gobject_accessible_get_type (c-name "atk_gobject_accessible_get_type") (return-type "GType") ) (define-function gobject_accessible_for_object (c-name "atk_gobject_accessible_for_object") (return-type "AtkObject*") (parameters '("GObject*" "obj") ) ) (define-method get_object (of-object "AtkGObjectAccessible") (c-name "atk_gobject_accessible_get_object") (return-type "GObject*") ) ;; From /usr/include/atk-1.0/atk/atk.h ;; From /usr/include/atk-1.0/atk/atkhyperlink.h (define-function atk_hyperlink_get_type (c-name "atk_hyperlink_get_type") (return-type "GType") ) (define-method get_uri (of-object "AtkHyperlink") (c-name "atk_hyperlink_get_uri") (return-type "gchar*") (parameters '("gint" "i") ) ) (define-method get_object (of-object "AtkHyperlink") (c-name "atk_hyperlink_get_object") (return-type "AtkObject*") (parameters '("gint" "i") ) ) (define-method get_end_index (of-object "AtkHyperlink") (c-name "atk_hyperlink_get_end_index") (return-type "gint") ) (define-method get_start_index (of-object "AtkHyperlink") (c-name "atk_hyperlink_get_start_index") (return-type "gint") ) (define-method is_valid (of-object "AtkHyperlink") (c-name "atk_hyperlink_is_valid") (return-type "gboolean") ) (define-method get_n_anchors (of-object "AtkHyperlink") (c-name "atk_hyperlink_get_n_anchors") (return-type "gint") ) (define-method is_inline (of-object "AtkHyperlink") (c-name "atk_hyperlink_is_inline") (return-type "gboolean") ) (define-method is_selected_link (of-object "AtkHyperlink") (c-name "atk_hyperlink_is_selected_link") (return-type "gboolean") ) (define-method get_attributes (of-object "AtkObject") (c-name "atk_object_get_attributes") (return-type "AtkAttributeSet*") ) (define-virtual get_uri (of-object "AtkHyperlink") (return-type "gchar*") (parameters '("gint" "i") ) ) (define-virtual get_object (of-object "AtkHyperlink") (return-type "AtkObject*") (parameters '("gint" "i") ) ) (define-virtual get_end_index (of-object "AtkHyperlink") (return-type "gint") ) (define-virtual get_start_index (of-object "AtkHyperlink") (return-type "gint") ) (define-virtual is_valid (of-object "AtkHyperlink") (return-type "gboolean") ) (define-virtual get_n_anchors (of-object "AtkHyperlink") (return-type "gint") ) (define-virtual link_state (of-object "AtkHyperlink") (return-type "guint") ) (define-virtual is_selected_link (of-object "AtkHyperlink") (return-type "gboolean") ) (define-virtual link_activated (of-object "AtkHyperlink") (return-type "none") ) (define-virtual get_attributes (of-object "AtkObject") (return-type "AtkAttributeSet*") ) ;; From atkhyperlinkimpl.h (define-function atk_hyperlink_impl_get_type (c-name "atk_hyperlink_impl_get_type") (return-type "GType") ) (define-method get_hyperlink (of-object "AtkHyperlinkImpl") (c-name "atk_hyperlink_impl_get_hyperlink") (return-type "AtkHyperlink*") ) (define-virtual get_hyperlink (of-object "AtkHyperlinkImpl") (return-type "AtkHyperlink*") ) ;; From /usr/include/atk-1.0/atk/atkhypertext.h (define-function atk_hypertext_get_type (c-name "atk_hypertext_get_type") (return-type "GType") ) (define-method get_link (of-object "AtkHypertext") (c-name "atk_hypertext_get_link") (return-type "AtkHyperlink*") (parameters '("gint" "link_index") ) ) (define-method get_n_links (of-object "AtkHypertext") (c-name "atk_hypertext_get_n_links") (return-type "gint") ) (define-method get_link_index (of-object "AtkHypertext") (c-name "atk_hypertext_get_link_index") (return-type "gint") (parameters '("gint" "char_index") ) ) (define-virtual get_link (of-object "AtkHypertext") (return-type "AtkHyperlink*") (parameters '("gint" "link_index") ) ) (define-virtual get_n_links (of-object "AtkHypertext") (return-type "gint") ) (define-virtual get_link_index (of-object "AtkHypertext") (return-type "gint") (parameters '("gint" "char_index") ) ) (define-virtual link_selected (of-object "AtkHypertext") (return-type "none") (parameters '("gint" "link_index") ) ) ;; From /usr/include/atk-1.0/atk/atkimage.h (define-function atk_image_get_type (c-name "atk_image_get_type") (return-type "GType") ) (define-method get_image_description (of-object "AtkImage") (c-name "atk_image_get_image_description") (return-type "const-gchar*") ) (define-method get_image_size (of-object "AtkImage") (c-name "atk_image_get_image_size") (return-type "none") (parameters '("gint*" "width") '("gint*" "height") ) ) (define-method set_image_description (of-object "AtkImage") (c-name "atk_image_set_image_description") (return-type "gboolean") (parameters '("const-gchar*" "description") ) ) (define-method get_image_position (of-object "AtkImage") (c-name "atk_image_get_image_position") (return-type "none") (parameters '("gint*" "x") '("gint*" "y") '("AtkCoordType" "coord_type") ) ) (define-virtual get_image_position (of-object "AtkImage") (return-type "none") (parameters '("gint*" "x") '("gint*" "y") '("AtkCoordType" "coord_type") ) ) (define-virtual get_image_description (of-object "AtkImage") (return-type "const-gchar*") ) (define-virtual get_image_size (of-object "AtkImage") (return-type "none") (parameters '("gint*" "width") '("gint*" "height") ) ) (define-virtual set_image_description (of-object "AtkImage") (return-type "gboolean") (parameters '("const-gchar*" "description") ) ) ;; From /usr/include/atk-1.0/atk/atknoopobjectfactory.h (define-function atk_no_op_object_factory_get_type (c-name "atk_no_op_object_factory_get_type") (return-type "GType") (parameters ) ) (define-function atk_no_op_object_factory_new (c-name "atk_no_op_object_factory_new") (return-type "AtkObjectFactory*") (is-constructor-of AtkNoOpObjectFactory) (parameters ) ) ;; From /usr/include/atk-1.0/atk/atknoopobject.h (define-function atk_no_op_object_get_type (c-name "atk_no_op_object_get_type") (return-type "GType") ) (define-function atk_no_op_object_new (c-name "atk_no_op_object_new") (return-type "AtkNoOpObject*") (is-constructor-of AtkNoOpObject) (parameters '("GObject*" "obj") ) ) ;; From /usr/include/atk-1.0/atk/atkobjectfactory.h (define-function atk_object_factory_get_type (c-name "atk_object_factory_get_type") (return-type "GType") (parameters ) ) (define-method create_accessible (of-object "AtkObjectFactory") (c-name "atk_object_factory_create_accessible") (return-type "AtkObject*") (parameters '("GObject*" "obj") ) ) (define-method invalidate (of-object "AtkObjectFactory") (c-name "atk_object_factory_invalidate") (return-type "none") ) (define-method get_accessible_type (of-object "AtkObjectFactory") (c-name "atk_object_factory_get_accessible_type") (return-type "GType") ) (define-virtual create_accessible (of-object "AtkObjectFactory") (return-type "AtkObject*") ) (define-virtual invalidate (of-object "AtkObjectFactory") (return-type "none") ) ;; From /usr/include/atk-1.0/atk/atkobject.h (define-function atk_object_get_type (c-name "atk_object_get_type") (return-type "GType") ) (define-function atk_implementor_get_type (c-name "atk_implementor_get_type") (return-type "GType") ) (define-method ref_accessible (of-object "AtkImplementorIface") (c-name "atk_implementor_ref_accessible") (return-type "AtkObject*") ) (define-virtual ref_accessible (of-object "AtkImplementor") (return-type "AtkObject*") ) (define-method get_name (of-object "AtkObject") (c-name "atk_object_get_name") (return-type "const-gchar*") ) (define-method get_description (of-object "AtkObject") (c-name "atk_object_get_description") (return-type "const-gchar*") ) (define-method get_parent (of-object "AtkObject") (c-name "atk_object_get_parent") (return-type "AtkObject*") ) (define-method get_n_accessible_children (of-object "AtkObject") (c-name "atk_object_get_n_accessible_children") (return-type "gint") ) (define-method ref_accessible_child (of-object "AtkObject") (c-name "atk_object_ref_accessible_child") (return-type "AtkObject*") (parameters '("gint" "i") ) ) (define-method ref_relation_set (of-object "AtkObject") (c-name "atk_object_ref_relation_set") (return-type "AtkRelationSet*") ) (define-method get_role (of-object "AtkObject") (c-name "atk_object_get_role") (return-type "AtkRole") ) (define-method get_layer (of-object "AtkObject") (c-name "atk_object_get_layer") (return-type "AtkLayer") ) (define-method get_mdi_zorder (of-object "AtkObject") (c-name "atk_object_get_mdi_zorder") (return-type "gint") ) (define-method ref_state_set (of-object "AtkObject") (c-name "atk_object_ref_state_set") (return-type "AtkStateSet*") ) (define-method get_index_in_parent (of-object "AtkObject") (c-name "atk_object_get_index_in_parent") (return-type "gint") ) (define-method set_name (of-object "AtkObject") (c-name "atk_object_set_name") (return-type "none") (parameters '("const-gchar*" "name") ) ) (define-method set_description (of-object "AtkObject") (c-name "atk_object_set_description") (return-type "none") (parameters '("const-gchar*" "description") ) ) (define-method set_parent (of-object "AtkObject") (c-name "atk_object_set_parent") (return-type "none") (parameters '("AtkObject*" "parent") ) ) (define-method set_role (of-object "AtkObject") (c-name "atk_object_set_role") (return-type "none") (parameters '("AtkRole" "role") ) ) (define-method connect_property_change_handler (of-object "AtkObject") (c-name "atk_object_connect_property_change_handler") (return-type "guint") (parameters '("AtkPropertyChangeHandler*" "handler") ) ) (define-method remove_property_change_handler (of-object "AtkObject") (c-name "atk_object_remove_property_change_handler") (return-type "none") (parameters '("guint" "handler_id") ) ) (define-method notify_state_change (of-object "AtkObject") (c-name "atk_object_notify_state_change") (return-type "none") (parameters '("AtkState" "state") '("gboolean" "value") ) ) (define-virtual get_name (of-object "AtkObject") (return-type "const-gchar*") ) (define-virtual get_description (of-object "AtkObject") (return-type "const-gchar*") ) (define-virtual get_parent (of-object "AtkObject") (return-type "AtkObject*") ) (define-virtual get_n_children (of-object "AtkObject") (return-type "gint") ) (define-virtual ref_child (of-object "AtkObject") (return-type "AtkObject*") (parameters '("gint" "i") ) ) (define-virtual get_index_in_parent (of-object "AtkObject") (return-type "gint") ) (define-virtual ref_relation_set (of-object "AtkObject") (return-type "AtkRelationSet*") ) (define-virtual get_role (of-object "AtkObject") (return-type "AtkRole") ) (define-virtual get_layer (of-object "AtkObject") (return-type "AtkLayer") ) (define-virtual get_mdi_zorder (of-object "AtkObject") (return-type "gint") ) (define-virtual ref_state_set (of-object "AtkObject") (return-type "AtkStateSet*") ) (define-virtual set_name (of-object "AtkObject") (return-type "none") (parameters '("const-gchar*" "name") ) ) (define-virtual set_description (of-object "AtkObject") (return-type "none") (parameters '("const-gchar*" "description") ) ) (define-virtual set_parent (of-object "AtkObject") (return-type "none") (parameters '("AtkObject*" "parent") ) ) (define-virtual set_role (of-object "AtkObject") (return-type "none") (parameters '("AtkRole" "role") ) ) (define-virtual connect_property_change_handler (of-object "AtkObject") (return-type "guint") (parameters '("AtkPropertyChangeHandler*" "handler") ) ) (define-virtual remove_property_change_handler (of-object "AtkObject") (return-type "none") (parameters '("guint" "handler_id") ) ) (define-virtual initialize (of-object "AtkObject") (return-type "none") (parameters '("gpointer" "data") ) ) (define-virtual children_changed (of-object "AtkObject") (return-type "none") (parameters '("guint" "change_index") '("gpointer" "changed_child") ) ) (define-virtual focus_event (of-object "AtkObject") (return-type "none") (parameters '("gboolean" "focus_in") ) ) (define-virtual property_change (of-object "AtkObject") (return-type "none") (parameters '("AtkPropertyValues*" "values") ) ) (define-virtual state_change (of-object "AtkObject") (return-type "none") (parameters '("const-gchar*" "name") '("gboolean" "state_set") ) ) (define-virtual visible_data_changed (of-object "AtkObject") (return-type "none") ) (define-virtual active_descendant_changed (of-object "AtkObject") (return-type "none") (parameters '("gpointer*" "child") ) ) (define-function role_register (c-name "atk_role_register") (return-type "AtkRole") (parameters '("const-gchar*" "name") ) ) (define-method initialize (of-object "AtkObject") (c-name "atk_object_initialize") (return-type "none") (parameters '("gpointer" "data") ) ) (define-method add_relationship (of-object "AtkObject") (c-name "atk_object_add_relationship") (return-type "gboolean") (parameters '("AtkRelationType" "relationship") '("AtkObject*" "target") ) ) (define-method remove_relationship (of-object "AtkObject") (c-name "atk_object_remove_relationship") (return-type "gboolean") (parameters '("AtkRelationType" "relationship") '("AtkObject*" "target") ) ) (define-function role_get_localized_name (c-name "atk_role_get_localized_name") (return-type "const-gchar*") (parameters '("AtkRole" "role") ) ) ;; From /usr/include/atk-1.0/atk/atkregistry.h (define-function atk_registry_get_type (c-name "atk_registry_get_type") (return-type "GType") ) (define-method set_factory_type (of-object "AtkRegistry") (c-name "atk_registry_set_factory_type") (return-type "none") (parameters '("GType" "type") '("GType" "factory_type") ) ) (define-method get_factory_type (of-object "AtkRegistry") (c-name "atk_registry_get_factory_type") (return-type "GType") (parameters '("GType" "type") ) ) (define-method get_factory (of-object "AtkRegistry") (c-name "atk_registry_get_factory") (return-type "AtkObjectFactory*") (parameters '("GType" "type") ) ) (define-function get_default_registry (c-name "atk_get_default_registry") (return-type "AtkRegistry*") (parameters ) ) ;; From /usr/include/atk-1.0/atk/atkrelation.h (define-function atk_relation_get_type (c-name "atk_relation_get_type") (return-type "GType") ) (define-function relation_type_register (c-name "atk_relation_type_register") (return-type "AtkRelationType") (parameters '("const-gchar*" "name") ) ) (define-function relation_type_get_name (c-name "atk_relation_type_get_name") (return-type "const-gchar*") (parameters '("AtkRelationType" "relationship") ) ) (define-function relation_type_for_name (c-name "atk_relation_type_for_name") (return-type "AtkRelationType") (parameters '("const-gchar*" "name") ) ) (define-function relation_new (c-name "atk_relation_new") (return-type "AtkRelation*") (is-constructor-of AtkRelation) (parameters '("AtkObject**" "targets") '("gint" "n_targets") '("AtkRelationType" "relationship") ) ) (define-method get_relation_type (of-object "AtkRelation") (c-name "atk_relation_get_relation_type") (return-type "AtkRelationType") ) (define-method get_target (of-object "AtkRelation") (c-name "atk_relation_get_target") (return-type "GPtrArray*") ) (define-method add_target (of-object "AtkRelation") (c-name "atk_relation_add_target") (return-type "none") (parameters '("AtkObject*" "target") ) ) ;; From /usr/include/atk-1.0/atk/atkrelationset.h (define-function atk_relation_set_get_type (c-name "atk_relation_set_get_type") (return-type "GType") ) (define-function relation_set_new (c-name "atk_relation_set_new") (is-constructor-of AtkRelationSet) (return-type "AtkRelationSet*") ) (define-method contains (of-object "AtkRelationSet") (c-name "atk_relation_set_contains") (return-type "gboolean") (parameters '("AtkRelationType" "relationship") ) ) (define-method remove (of-object "AtkRelationSet") (c-name "atk_relation_set_remove") (return-type "none") (parameters '("AtkRelation*" "relation") ) ) (define-method add (of-object "AtkRelationSet") (c-name "atk_relation_set_add") (return-type "none") (parameters '("AtkRelation*" "relation") ) ) (define-method get_n_relations (of-object "AtkRelationSet") (c-name "atk_relation_set_get_n_relations") (return-type "gint") ) (define-method get_relation (of-object "AtkRelationSet") (c-name "atk_relation_set_get_relation") (return-type "AtkRelation*") (parameters '("gint" "i") ) ) (define-method get_relation_by_type (of-object "AtkRelationSet") (c-name "atk_relation_set_get_relation_by_type") (return-type "AtkRelation*") (parameters '("AtkRelationType" "relationship") ) ) (define-method add_relation_by_type (of-object "AtkRelationSet") (c-name "atk_relation_set_add_relation_by_type") (return-type "none") (parameters '("AtkRelationType" "relationship") '("AtkObject*" "target") ) ) ;; From /usr/include/atk-1.0/atk/atkselection.h (define-function atk_selection_get_type (c-name "atk_selection_get_type") (return-type "GType") (parameters ) ) (define-method add_selection (of-object "AtkSelection") (c-name "atk_selection_add_selection") (return-type "gboolean") (parameters '("gint" "i") ) ) (define-method clear_selection (of-object "AtkSelection") (c-name "atk_selection_clear_selection") (return-type "gboolean") ) (define-method ref_selection (of-object "AtkSelection") (c-name "atk_selection_ref_selection") (return-type "AtkObject*") (parameters '("gint" "i") ) ) (define-method get_selection_count (of-object "AtkSelection") (c-name "atk_selection_get_selection_count") (return-type "gint") ) (define-method is_child_selected (of-object "AtkSelection") (c-name "atk_selection_is_child_selected") (return-type "gboolean") (parameters '("gint" "i") ) ) (define-method remove_selection (of-object "AtkSelection") (c-name "atk_selection_remove_selection") (return-type "gboolean") (parameters '("gint" "i") ) ) (define-method select_all_selection (of-object "AtkSelection") (c-name "atk_selection_select_all_selection") (return-type "gboolean") ) (define-virtual add_selection (of-object "AtkSelection") (return-type "gboolean") (parameters '("gint" "i") ) ) (define-virtual clear_selection (of-object "AtkSelection") (return-type "gboolean") ) (define-virtual ref_selection (of-object "AtkSelection") (return-type "AtkObject*") (parameters '("gint" "i") ) ) (define-virtual get_selection_count (of-object "AtkSelection") (return-type "gint") ) (define-virtual is_child_selected (of-object "AtkSelection") (return-type "gboolean") (parameters '("gint" "i") ) ) (define-virtual remove_selection (of-object "AtkSelection") (return-type "gboolean") (parameters '("gint" "i") ) ) (define-virtual select_all_selection (of-object "AtkSelection") (return-type "gboolean") ) (define-virtual selection_changed (of-object "AtkSelection") (return-type "none") ) ;; From /usr/include/atk-1.0/atk/atkstate.h (define-function state_type_register (c-name "atk_state_type_register") (return-type "AtkStateType") (parameters '("const-gchar*" "name") ) ) (define-function state_type_get_name (c-name "atk_state_type_get_name") (return-type "const-gchar*") (parameters '("AtkStateType" "type") ) ) (define-function state_type_for_name (c-name "atk_state_type_for_name") (return-type "AtkStateType") (parameters '("const-gchar*" "name") ) ) ;; From /usr/include/atk-1.0/atk/atkstateset.h (define-function atk_state_set_get_type (c-name "atk_state_set_get_type") (return-type "GType") ) (define-function atk_state_set_new (c-name "atk_state_set_new") (is-constructor-of "AtkStateSet") (return-type "AtkStateSet*") ) (define-method is_empty (of-object "AtkStateSet") (c-name "atk_state_set_is_empty") (return-type "gboolean") ) (define-method add_state (of-object "AtkStateSet") (c-name "atk_state_set_add_state") (return-type "gboolean") (parameters '("AtkStateType" "type") ) ) (define-method add_states (of-object "AtkStateSet") (c-name "atk_state_set_add_states") (return-type "none") (parameters '("AtkStateType*" "types") '("gint" "n_types") ) ) (define-method clear_states (of-object "AtkStateSet") (c-name "atk_state_set_clear_states") (return-type "none") ) (define-method contains_state (of-object "AtkStateSet") (c-name "atk_state_set_contains_state") (return-type "gboolean") (parameters '("AtkStateType" "type") ) ) (define-method contains_states (of-object "AtkStateSet") (c-name "atk_state_set_contains_states") (return-type "gboolean") (parameters '("AtkStateType*" "types") '("gint" "n_types") ) ) (define-method remove_state (of-object "AtkStateSet") (c-name "atk_state_set_remove_state") (return-type "gboolean") (parameters '("AtkStateType" "type") ) ) (define-method and_sets (of-object "AtkStateSet") (c-name "atk_state_set_and_sets") (return-type "AtkStateSet*") (parameters '("AtkStateSet*" "compare_set") ) ) (define-method or_sets (of-object "AtkStateSet") (c-name "atk_state_set_or_sets") (return-type "AtkStateSet*") (parameters '("AtkStateSet*" "compare_set") ) ) (define-method xor_sets (of-object "AtkStateSet") (c-name "atk_state_set_xor_sets") (return-type "AtkStateSet*") (parameters '("AtkStateSet*" "compare_set") ) ) ;; From /usr/include/atk-1.0/atk/atkstreamablecontent.h (define-function atk_streamable_content_get_type (c-name "atk_streamable_content_get_type") (return-type "GType") ) (define-method get_n_mime_types (of-object "AtkStreamableContent") (c-name "atk_streamable_content_get_n_mime_types") (return-type "gint") ) (define-method get_mime_type (of-object "AtkStreamableContent") (c-name "atk_streamable_content_get_mime_type") (return-type "const-gchar*") (parameters '("gint" "i") ) ) (define-method get_stream (of-object "AtkStreamableContent") (c-name "atk_streamable_content_get_stream") (return-type "GIOChannel*") (parameters '("const-gchar*" "mime_type") ) ) (define-method get_uri (of-object "AtkStreamableContent") (c-name "atk_streamable_content_get_uri") (return-type "gchar*") (parameters '("const-gchar*" "mime_type") ) ) (define-virtual get_n_mime_types (of-object "AtkStreamableContent") (return-type "gint") ) (define-virtual get_mime_type (of-object "AtkStreamableContent") (return-type "const-gchar*") (parameters '("gint" "i") ) ) (define-virtual get_stream (of-object "AtkStreamableContent") (return-type "GIOChannel*") (parameters '("const-gchar*" "mime_type") ) ) (define-virtual get_uri (of-object "AtkStreamableContent") (return-type "G_CONST_RETURNgchar*") (parameters '("const-gchar*" "mime_type") ) ) ;; From /usr/include/atk-1.0/atk/atktable.h (define-function atk_table_get_type (c-name "atk_table_get_type") (return-type "GType") (parameters ) ) (define-method ref_at (of-object "AtkTable") (c-name "atk_table_ref_at") (return-type "AtkObject*") (parameters '("gint" "row") '("gint" "column") ) ) (define-method get_index_at (of-object "AtkTable") (c-name "atk_table_get_index_at") (return-type "gint") (parameters '("gint" "row") '("gint" "column") ) ) (define-method get_column_at_index (of-object "AtkTable") (c-name "atk_table_get_column_at_index") (return-type "gint") (parameters '("gint" "index") ) ) (define-method get_row_at_index (of-object "AtkTable") (c-name "atk_table_get_row_at_index") (return-type "gint") (parameters '("gint" "index") ) ) (define-method get_n_columns (of-object "AtkTable") (c-name "atk_table_get_n_columns") (return-type "gint") ) (define-method get_n_rows (of-object "AtkTable") (c-name "atk_table_get_n_rows") (return-type "gint") ) (define-method get_column_extent_at (of-object "AtkTable") (c-name "atk_table_get_column_extent_at") (return-type "gint") (parameters '("gint" "row") '("gint" "column") ) ) (define-method get_row_extent_at (of-object "AtkTable") (c-name "atk_table_get_row_extent_at") (return-type "gint") (parameters '("gint" "row") '("gint" "column") ) ) (define-method get_caption (of-object "AtkTable") (c-name "atk_table_get_caption") (return-type "AtkObject*") ) (define-method get_column_description (of-object "AtkTable") (c-name "atk_table_get_column_description") (return-type "const-gchar*") (parameters '("gint" "column") ) ) (define-method get_column_header (of-object "AtkTable") (c-name "atk_table_get_column_header") (return-type "AtkObject*") (parameters '("gint" "column") ) ) (define-method get_row_description (of-object "AtkTable") (c-name "atk_table_get_row_description") (return-type "const-gchar*") (parameters '("gint" "row") ) ) (define-method get_row_header (of-object "AtkTable") (c-name "atk_table_get_row_header") (return-type "AtkObject*") (parameters '("gint" "row") ) ) (define-method get_summary (of-object "AtkTable") (c-name "atk_table_get_summary") (return-type "AtkObject*") ) (define-method set_caption (of-object "AtkTable") (c-name "atk_table_set_caption") (return-type "none") (parameters '("AtkObject*" "caption") ) ) (define-method set_column_description (of-object "AtkTable") (c-name "atk_table_set_column_description") (return-type "none") (parameters '("gint" "column") '("const-gchar*" "description") ) ) (define-method set_column_header (of-object "AtkTable") (c-name "atk_table_set_column_header") (return-type "none") (parameters '("gint" "column") '("AtkObject*" "header") ) ) (define-method set_row_description (of-object "AtkTable") (c-name "atk_table_set_row_description") (return-type "none") (parameters '("gint" "row") '("const-gchar*" "description") ) ) (define-method set_row_header (of-object "AtkTable") (c-name "atk_table_set_row_header") (return-type "none") (parameters '("gint" "row") '("AtkObject*" "header") ) ) (define-method set_summary (of-object "AtkTable") (c-name "atk_table_set_summary") (return-type "none") (parameters '("AtkObject*" "accessible") ) ) (define-method get_selected_columns (of-object "AtkTable") (c-name "atk_table_get_selected_columns") (return-type "gint") (parameters '("gint**" "selected") ) ) (define-method get_selected_rows (of-object "AtkTable") (c-name "atk_table_get_selected_rows") (return-type "gint") (parameters '("gint**" "selected") ) ) (define-method is_column_selected (of-object "AtkTable") (c-name "atk_table_is_column_selected") (return-type "gboolean") (parameters '("gint" "column") ) ) (define-method is_row_selected (of-object "AtkTable") (c-name "atk_table_is_row_selected") (return-type "gboolean") (parameters '("gint" "row") ) ) (define-method is_selected (of-object "AtkTable") (c-name "atk_table_is_selected") (return-type "gboolean") (parameters '("gint" "row") '("gint" "column") ) ) (define-method add_row_selection (of-object "AtkTable") (c-name "atk_table_add_row_selection") (return-type "gboolean") (parameters '("gint" "row") ) ) (define-method remove_row_selection (of-object "AtkTable") (c-name "atk_table_remove_row_selection") (return-type "gboolean") (parameters '("gint" "row") ) ) (define-method add_column_selection (of-object "AtkTable") (c-name "atk_table_add_column_selection") (return-type "gboolean") (parameters '("gint" "column") ) ) (define-method remove_column_selection (of-object "AtkTable") (c-name "atk_table_remove_column_selection") (return-type "gboolean") (parameters '("gint" "column") ) ) (define-virtual ref_at (of-object "AtkTable") (return-type "AtkObject*") (parameters '("gint" "row") '("gint" "column") ) ) (define-virtual get_index_at (of-object "AtkTable") (return-type "gint") (parameters '("gint" "row") '("gint" "column") ) ) (define-virtual get_column_at_index (of-object "AtkTable") (return-type "gint") (parameters '("gint" "index") ) ) (define-virtual get_row_at_index (of-object "AtkTable") (return-type "gint") (parameters '("gint" "index") ) ) (define-virtual get_n_columns (of-object "AtkTable") (return-type "gint") ) (define-virtual get_n_rows (of-object "AtkTable") (return-type "gint") ) (define-virtual get_column_extent_at (of-object "AtkTable") (return-type "gint") (parameters '("gint" "row") '("gint" "column") ) ) (define-virtual get_row_extent_at (of-object "AtkTable") (return-type "gint") (parameters '("gint" "row") '("gint" "column") ) ) (define-virtual get_caption (of-object "AtkTable") (return-type "AtkObject*") ) (define-virtual get_column_description (of-object "AtkTable") (return-type "const-gchar*") (parameters '("gint" "column") ) ) (define-virtual get_column_header (of-object "AtkTable") (return-type "AtkObject*") (parameters '("gint" "column") ) ) (define-virtual get_row_description (of-object "AtkTable") (return-type "const-gchar*") (parameters '("gint" "row") ) ) (define-virtual get_row_header (of-object "AtkTable") (return-type "AtkObject*") (parameters '("gint" "row") ) ) (define-virtual get_summary (of-object "AtkTable") (return-type "AtkObject*") ) (define-virtual set_caption (of-object "AtkTable") (return-type "none") (parameters '("AtkObject*" "caption") ) ) (define-virtual set_column_description (of-object "AtkTable") (return-type "none") (parameters '("gint" "column") '("const-gchar*" "description") ) ) (define-virtual set_column_header (of-object "AtkTable") (return-type "none") (parameters '("gint" "column") '("AtkObject*" "header") ) ) (define-virtual set_row_description (of-object "AtkTable") (return-type "none") (parameters '("gint" "row") '("const-gchar*" "description") ) ) (define-virtual set_row_header (of-object "AtkTable") (return-type "none") (parameters '("gint" "row") '("AtkObject*" "header") ) ) (define-virtual set_summary (of-object "AtkTable") (return-type "none") (parameters '("AtkObject*" "accessible") ) ) (define-virtual get_selected_columns (of-object "AtkTable") (return-type "gint") (parameters '("gint**" "selected") ) ) (define-virtual get_selected_rows (of-object "AtkTable") (return-type "gint") (parameters '("gint**" "selected") ) ) (define-virtual is_column_selected (of-object "AtkTable") (return-type "gboolean") (parameters '("gint" "column") ) ) (define-virtual is_row_selected (of-object "AtkTable") (return-type "gboolean") (parameters '("gint" "row") ) ) (define-virtual is_selected (of-object "AtkTable") (return-type "gboolean") (parameters '("gint" "row") '("gint" "column") ) ) (define-virtual add_row_selection (of-object "AtkTable") (return-type "gboolean") (parameters '("gint" "row") ) ) (define-virtual remove_row_selection (of-object "AtkTable") (return-type "gboolean") (parameters '("gint" "row") ) ) (define-virtual add_column_selection (of-object "AtkTable") (return-type "gboolean") (parameters '("gint" "column") ) ) (define-virtual remove_column_selection (of-object "AtkTable") (return-type "gboolean") (parameters '("gint" "column") ) ) (define-virtual row_inserted (of-object "AtkTable") (return-type "none") (parameters '("gint" "row") '("gint" "num_inserted") ) ) (define-virtual column_inserted (of-object "AtkTable") (return-type "none") (parameters '("gint" "column") '("gint" "num_inserted") ) ) (define-virtual row_deleted (of-object "AtkTable") (return-type "none") (parameters '("gint" "row") '("gint" "num_deleted") ) ) (define-virtual column_deleted (of-object "AtkTable") (return-type "none") (parameters '("gint" "column") '("gint" "num_deleted") ) ) (define-virtual row_reordered (of-object "AtkTable") (return-type "none") ) (define-virtual column_reordered (of-object "AtkTable") (return-type "none") ) (define-virtual model_changed (of-object "AtkTable") (return-type "none") ) ;; From /usr/include/atk-1.0/atk/atktext.h (define-function atk_text_get_type (c-name "atk_text_get_type") (return-type "GType") ) (define-method get_text (of-object "AtkText") (c-name "atk_text_get_text") (return-type "gchar*") (parameters '("gint" "start_offset") '("gint" "end_offset") ) ) (define-method get_character_at_offset (of-object "AtkText") (c-name "atk_text_get_character_at_offset") (return-type "gunichar") (parameters '("gint" "offset") ) ) (define-method get_text_after_offset (of-object "AtkText") (c-name "atk_text_get_text_after_offset") (return-type "gchar*") (parameters '("gint" "offset") '("AtkTextBoundary" "boundary_type") '("gint*" "start_offset") '("gint*" "end_offset") ) ) (define-method get_text_at_offset (of-object "AtkText") (c-name "atk_text_get_text_at_offset") (return-type "gchar*") (parameters '("gint" "offset") '("AtkTextBoundary" "boundary_type") '("gint*" "start_offset") '("gint*" "end_offset") ) ) (define-method get_text_before_offset (of-object "AtkText") (c-name "atk_text_get_text_before_offset") (return-type "gchar*") (parameters '("gint" "offset") '("AtkTextBoundary" "boundary_type") '("gint*" "start_offset") '("gint*" "end_offset") ) ) (define-method get_caret_offset (of-object "AtkText") (c-name "atk_text_get_caret_offset") (return-type "gint") ) (define-method get_character_extents (of-object "AtkText") (c-name "atk_text_get_character_extents") (return-type "none") (parameters '("gint" "offset") '("gint*" "x") '("gint*" "y") '("gint*" "width") '("gint*" "height") '("AtkCoordType" "coords") ) ) (define-method get_run_attributes (of-object "AtkText") (c-name "atk_text_get_run_attributes") (return-type "AtkAttributeSet*") (parameters '("gint" "offset") '("gint*" "start_offset") '("gint*" "end_offset") ) ) (define-method get_default_attributes (of-object "AtkText") (c-name "atk_text_get_default_attributes") (return-type "AtkAttributeSet*") ) (define-method get_character_count (of-object "AtkText") (c-name "atk_text_get_character_count") (return-type "gint") ) (define-method get_offset_at_point (of-object "AtkText") (c-name "atk_text_get_offset_at_point") (return-type "gint") (parameters '("gint" "x") '("gint" "y") '("AtkCoordType" "coords") ) ) (define-method get_n_selections (of-object "AtkText") (c-name "atk_text_get_n_selections") (return-type "gint") ) (define-method get_selection (of-object "AtkText") (c-name "atk_text_get_selection") (return-type "gchar*") (parameters '("gint" "selection_num") '("gint*" "start_offset") '("gint*" "end_offset") ) ) (define-method add_selection (of-object "AtkText") (c-name "atk_text_add_selection") (return-type "gboolean") (parameters '("gint" "start_offset") '("gint" "end_offset") ) ) (define-method remove_selection (of-object "AtkText") (c-name "atk_text_remove_selection") (return-type "gboolean") (parameters '("gint" "selection_num") ) ) (define-method set_selection (of-object "AtkText") (c-name "atk_text_set_selection") (return-type "gboolean") (parameters '("gint" "selection_num") '("gint" "start_offset") '("gint" "end_offset") ) ) (define-method set_caret_offset (of-object "AtkText") (c-name "atk_text_set_caret_offset") (return-type "gboolean") (parameters '("gint" "offset") ) ) (define-method get_range_extents (of-object "AtkText") (c-name "atk_text_get_range_extents") (return-type "none") (parameters '("gint" "start_offset") '("gint" "end_offset") '("AtkCoordType" "coord_type") '("AtkTextRectangle*" "rect") ) ) (define-method get_bounded_ranges (of-object "AtkText") (c-name "atk_text_get_bounded_ranges") (return-type "AtkTextRange**") (parameters '("AtkTextRectangle*" "rect") '("AtkCoordType" "coord_type") '("AtkTextClipType" "x_clip_type") '("AtkTextClipType" "y_clip_type") ) ) (define-function text_free_ranges (c-name "atk_text_free_ranges") (return-type "none") (parameters '("AtkTextRange**" "ranges") ) ) (define-method free (of-object "AtkAttributeSet") (c-name "atk_attribute_set_free") (return-type "none") ) (define-function text_attribute_get_name (c-name "atk_text_attribute_get_name") (return-type "const-gchar*") (parameters '("AtkTextAttribute" "attr") ) ) (define-function text_attribute_get_value (c-name "atk_text_attribute_get_value") (return-type "const-gchar*") (parameters '("AtkTextAttribute" "attr") '("gint" "index") ) ) (define-function text_attribute_register (c-name "atk_text_attribute_register") (return-type "AtkTextAttribute") (parameters '("const-gchar*" "name") ) ) (define-function text_attribute_for_name (c-name "atk_text_attribute_for_name") (return-type "AtkTextAttribute") (parameters '("const-gchar*" "name") ) ) (define-virtual get_text (of-object "AtkText") (return-type "gchar*") (parameters '("gint" "start_offset") '("gint" "end_offset") ) ) (define-virtual get_text_after_offset (of-object "AtkText") (return-type "gchar*") (parameters '("gint" "offset") '("AtkTextBoundary" "boundary_type") '("gint*" "start_offset") '("gint*" "end_offset") ) ) (define-virtual get_text_at_offset (of-object "AtkText") (return-type "gchar*") (parameters '("gint" "offset") '("AtkTextBoundary" "boundary_type") '("gint*" "start_offset") '("gint*" "end_offset") ) ) (define-virtual get_character_at_offset (of-object "AtkText") (return-type "gunichar") (parameters '("gint" "offset") ) ) (define-virtual get_text_before_offset (of-object "AtkText") (return-type "gchar*") (parameters '("gint" "offset") '("AtkTextBoundary" "boundary_type") '("gint*" "start_offset") '("gint*" "end_offset") ) ) (define-virtual get_caret_offset (of-object "AtkText") (return-type "gint") ) (define-virtual get_run_attributes (of-object "AtkText") (return-type "AtkAttributeSet*") (parameters '("gint" "offset") '("gint*" "start_offset") '("gint*" "end_offset") ) ) (define-virtual get_default_attributes (of-object "AtkText") (return-type "AtkAttributeSet*") ) (define-virtual get_character_extents (of-object "AtkText") (return-type "none") (parameters '("gint" "offset") '("gint*" "x") '("gint*" "y") '("gint*" "width") '("gint*" "height") '("AtkCoordType" "coords") ) ) (define-virtual get_character_count (of-object "AtkText") (return-type "gint") ) (define-virtual get_offset_at_point (of-object "AtkText") (return-type "gint") (parameters '("gint" "x") '("gint" "y") '("AtkCoordType" "coords") ) ) (define-virtual get_n_selections (of-object "AtkText") (return-type "gint") ) (define-virtual get_selection (of-object "AtkText") (return-type "gchar*") (parameters '("gint" "selection_num") '("gint*" "start_offset") '("gint*" "end_offset") ) ) (define-virtual add_selection (of-object "AtkText") (return-type "gboolean") (parameters '("gint" "start_offset") '("gint" "end_offset") ) ) (define-virtual remove_selection (of-object "AtkText") (return-type "gboolean") (parameters '("gint" "selection_num") ) ) (define-virtual set_selection (of-object "AtkText") (return-type "gboolean") (parameters '("gint" "selection_num") '("gint" "start_offset") '("gint" "end_offset") ) ) (define-virtual set_caret_offset (of-object "AtkText") (return-type "gboolean") (parameters '("gint" "offset") ) ) (define-virtual text_changed (of-object "AtkText") (return-type "none") (parameters '("gint" "position") '("gint" "length") ) ) (define-virtual text_caret_moved (of-object "AtkText") (return-type "none") (parameters '("gint" "location") ) ) (define-virtual text_selection_changed (of-object "AtkText") (return-type "none") ) (define-virtual text_attributes_changed (of-object "AtkText") (return-type "none") ) (define-virtual get_range_extents (of-object "AtkText") (return-type "none") (parameters '("gint" "start_offset") '("gint" "end_offset") '("AtkCoordType" "coord_type") '("AtkTextRectangle*" "rect") ) ) (define-virtual get_bounded_ranges (of-object "AtkText") (return-type "AtkTextRange**") (parameters '("AtkTextRectangle*" "rect") '("AtkCoordType" "coord_type") '("AtkTextClipType" "x_clip_type") '("AtkTextClipType" "y_clip_type") ) ) ;; From /usr/include/atk-1.0/atk/atkutil.h (define-function atk_util_get_type (c-name "atk_util_get_type") (return-type "GType") ) (define-function add_focus_tracker (c-name "atk_add_focus_tracker") (return-type "guint") (parameters '("AtkEventListener" "focus_tracker") ) ) (define-function remove_focus_tracker (c-name "atk_remove_focus_tracker") (return-type "none") (parameters '("guint" "tracker_id") ) ) (define-function focus_tracker_init (c-name "atk_focus_tracker_init") (return-type "none") (parameters '("AtkEventListenerInit" "add_function") ) ) (define-function focus_tracker_notify (c-name "atk_focus_tracker_notify") (return-type "none") (parameters '("AtkObject*" "object") ) ) (define-function add_global_event_listener (c-name "atk_add_global_event_listener") (return-type "guint") (parameters '("GSignalEmissionHook" "listener") '("const-gchar*" "event_type") ) ) (define-function remove_global_event_listener (c-name "atk_remove_global_event_listener") (return-type "none") (parameters '("guint" "listener_id") ) ) (define-function add_key_event_listener (c-name "atk_add_key_event_listener") (return-type "guint") (parameters '("AtkKeySnoopFunc" "listener") '("gpointer" "data") ) ) (define-function remove_key_event_listener (c-name "atk_remove_key_event_listener") (return-type "none") (parameters '("guint" "listener_id") ) ) (define-function get_root (c-name "atk_get_root") (return-type "AtkObject*") ) (define-function get_toolkit_name (c-name "atk_get_toolkit_name") (return-type "const-gchar*") ) (define-function get_toolkit_version (c-name "atk_get_toolkit_version") (return-type "const-gchar*") ) (define-function get_focus_object (c-name "atk_get_focus_object") (return-type "AtkObject*") ) (define-virtual add_global_event_listener (of-object "AtkUtil") (return-type "guint") (parameters '("const-gchar*" "event_type") ) ) (define-virtual remove_global_event_listener (of-object "AtkUtil") (return-type "none") ) (define-virtual add_key_event_listener (of-object "AtkUtil") (return-type "guint") (parameters '("gpointer" "data") ) ) (define-virtual remove_key_event_listener (of-object "AtkUtil") (return-type "none") ) ;; From /usr/include/atk-1.0/atk/atkvalue.h (define-function atk_value_get_type (c-name "atk_value_get_type") (return-type "GType") ) (define-method get_current_value (of-object "AtkValue") (c-name "atk_value_get_current_value") (return-type "none") (parameters '("GValue*" "value") ) ) (define-method get_maximum_value (of-object "AtkValue") (c-name "atk_value_get_maximum_value") (return-type "none") (parameters '("GValue*" "value") ) ) (define-method get_minimum_value (of-object "AtkValue") (c-name "atk_value_get_minimum_value") (return-type "none") (parameters '("GValue*" "value") ) ) (define-method set_current_value (of-object "AtkValue") (c-name "atk_value_set_current_value") (return-type "gboolean") (parameters '("const-GValue*" "value") ) ) (define-method get_minimum_increment (of-object "AtkValue") (c-name "atk_value_get_minimum_increment") (return-type "none") (parameters '("GValue*" "value") ) ) (define-virtual get_current_value (of-object "AtkValue") (return-type "none") (parameters '("GValue*" "value") ) ) (define-virtual get_maximum_value (of-object "AtkValue") (return-type "none") (parameters '("GValue*" "value") ) ) (define-virtual get_minimum_value (of-object "AtkValue") (return-type "none") (parameters '("GValue*" "value") ) ) (define-virtual set_current_value (of-object "AtkValue") (return-type "gboolean") (parameters '("const-GValue*" "value") ) ) (define-virtual get_minimum_increment (of-object "AtkValue") (return-type "none") (parameters '("GValue*" "value") ) ) (define-function role_get_name (c-name "atk_role_get_name") (return-type "const-gchar*") (parameters '("AtkRole" "role") ) ) (define-function role_for_name (c-name "atk_role_for_name") (return-type "AtkRole") (parameters '("const-gchar*" "name") ) ) (define-function rectangle_new (c-name "atk_rectangle_new") (is-constructor-of "AtkRectangle") (return-type "AtkRectangle") ) pygtk-2.24.0/COPYING0000644000175000017500000006351011545325344010724 00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! pygtk-2.24.0/pygtk-2.0.pc.in0000644000175000017500000000146011545325345012252 00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ includedir=@includedir@ datarootdir=@datarootdir@ datadir=@datadir@ pyexecdir=@pyexecdir@ # you can use the --variable=pygtkincludedir argument to # pkg-config to get this value. You might want to use this to # install additional headers. pygtkincludedir=${includedir}/pygtk-2.0 # same here. Useful when calling the code generator in addon packages. defsdir=${datadir}/pygtk/2.0/defs # This is strictly speaking not necessarily so (we refer to another # package), but we want to preserve compatibility with times codegen # was in PyGTK, not PyGObject. codegendir=${datadir}/pygobject/2.0/codegen Name: PyGTK Description: Python bindings for GTK+ and related libraries Requires: pygobject-2.0 gtk+-2.0 Version: @VERSION@ Cflags: -I${pygtkincludedir} @THREADING_CFLAGS@ pygtk-2.24.0/pangocairomodule.c0000644000175000017500000000410311545325345013357 00000000000000/* -*- Mode: C; c-basic-offset: 4 -*- * pygtk- Python bindings for the GTK toolkit. * Copyright (C) 1998-2003 James Henstridge * * pangomodule.c: module wrapping the Pango library * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA */ #ifdef HAVE_CONFIG_H # include "config.h" #endif #include #include #include #include /* include any extra headers needed here */ void pypangocairo_register_classes(PyObject *d); void pypangocairo_add_constants(PyObject *module, const gchar *strip_prefix); extern PyMethodDef pypangocairo_functions[]; extern PyTypeObject PyPangoCairoContext_Type; extern GType pypango_layout_line_type; Pycairo_CAPI_t *Pycairo_CAPI; DL_EXPORT(void) initpangocairo(void) { PyObject *m, *d; /* perform any initialisation required by the library here */ m = Py_InitModule("pangocairo", pypangocairo_functions); d = PyModule_GetDict(m); Pycairo_IMPORT; if (Pycairo_CAPI == NULL) return; PyPangoCairoContext_Type.tp_base = &PycairoContext_Type; if (PyType_Ready(&PyPangoCairoContext_Type) < 0) { g_return_if_reached(); } init_pygobject(); pypangocairo_register_classes(d); Py_INCREF(&PyPangoCairoContext_Type); PyModule_AddObject(m, "CairoContext", (PyObject *)&PyPangoCairoContext_Type); pypango_layout_line_type = g_type_from_name("PangoLayoutLine"); } pygtk-2.24.0/config.h.win320000644000175000017500000000017211545325344012243 00000000000000 #define PYGTK_MAJOR_VERSION (2) #define PYGTK_MINOR_VERSION (4) #define PYGTK_MICRO_VERSION (1) #define VERSION "2.4.1" pygtk-2.24.0/configure0000755000175000017500000176171111545325676011621 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.67 for pygtk 2.24.0. # # Report bugs to . # # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software # Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV export CONFIG_SHELL exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: http://bugzilla.gnome.org/enter_bug.cgi?product=pygtk $0: about your system, including any error possibly output $0: before this message. Then install a modern shell, or $0: manually run the script under such a shell if you do $0: have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$lt_ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac ECHO=${lt_ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then # Yippee, $ECHO works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <<_LT_EOF $* _LT_EOF exit 0 fi # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test -z "$lt_ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if { echo_test_string=`eval $cmd`; } 2>/dev/null && { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null then break fi done fi if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$ECHO" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. ECHO='print -r' elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. ECHO='printf %s\n' if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL ECHO="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. ECHO=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. lt_ECHO=$ECHO if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='pygtk' PACKAGE_TARNAME='pygtk' PACKAGE_VERSION='2.24.0' PACKAGE_STRING='pygtk 2.24.0' PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=pygtk' PACKAGE_URL='' ac_unique_file="gtk/gtkmodule.c" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS BUILD_GTKUNIXPRINT_FALSE BUILD_GTKUNIXPRINT_TRUE GTKUNIXPRINT_LIBS GTKUNIXPRINT_CFLAGS BUILD_LIBGLADE_FALSE BUILD_LIBGLADE_TRUE LIBGLADE_LIBS LIBGLADE_CFLAGS HAVE_GTK_2_24 HAVE_GTK_2_24_FALSE HAVE_GTK_2_24_TRUE GTK224_LIBS GTK224_CFLAGS HAVE_GTK_2_22 HAVE_GTK_2_22_FALSE HAVE_GTK_2_22_TRUE GTK222_LIBS GTK222_CFLAGS HAVE_GTK_2_20 HAVE_GTK_2_20_FALSE HAVE_GTK_2_20_TRUE GTK220_LIBS GTK220_CFLAGS HAVE_GTK_2_18 HAVE_GTK_2_18_FALSE HAVE_GTK_2_18_TRUE GTK218_LIBS GTK218_CFLAGS HAVE_GTK_2_16 HAVE_GTK_2_16_FALSE HAVE_GTK_2_16_TRUE GTK216_LIBS GTK216_CFLAGS HAVE_GTK_2_14 HAVE_GTK_2_14_FALSE HAVE_GTK_2_14_TRUE GTK214_LIBS GTK214_CFLAGS HAVE_GTK_2_12 HAVE_GTK_2_12_FALSE HAVE_GTK_2_12_TRUE GTK212_LIBS GTK212_CFLAGS HAVE_GTK_2_10 HAVE_GTK_2_10_FALSE HAVE_GTK_2_10_TRUE GTK210_LIBS GTK210_CFLAGS BUILD_GTK_FALSE BUILD_GTK_TRUE GTK_LIBS GTK_CFLAGS BUILD_PANGOCAIRO_FALSE BUILD_PANGOCAIRO_TRUE PANGOCAIRO_LIBS PANGOCAIRO_CFLAGS PYCAIRO_LIBS PYCAIRO_CFLAGS PYGTK_CODEGEN_DEFINES CODEGENDIR BUILD_PANGO_FALSE BUILD_PANGO_TRUE PANGO_LIBS PANGO_CFLAGS BUILD_ATK_FALSE BUILD_ATK_TRUE ATK_LIBS ATK_CFLAGS PYGOBJECT_PYGDOCS PYGOBJECT_FIXXREF HAVE_GIO_TYPES_DEFS_FALSE HAVE_GIO_TYPES_DEFS_TRUE PYGOBJECT_DEFSDIR PYGOBJECT_DATADIR PYGOBJECT_INCLUDEDIR PYGOBJECT_LIBS PYGOBJECT_CFLAGS GLIB_MKENUMS GOBJECT_QUERY GLIB_GENMARSHAL GLIB_LIBS GLIB_CFLAGS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG THREADING_CFLAGS ENABLE_DOCS_FALSE ENABLE_DOCS_TRUE XSLTPROC PYTHON_INCLUDES pkgpyexecdir pyexecdir pkgpythondir pythondir PYTHON_PLATFORM PYTHON_EXEC_PREFIX PYTHON_PREFIX PYTHON_VERSION PYTHON CPP OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL lt_ECHO RANLIB AR LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED LIBTOOL OBJDUMP DLLTOOL AS OS_WIN32_FALSE OS_WIN32_TRUE PLATFORM_WIN32_FALSE PLATFORM_WIN32_TRUE host_os host_vendor host_cpu host build_os build_vendor build_cpu build am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM PYGTK_MICRO_VERSION PYGTK_MINOR_VERSION PYGTK_MAJOR_VERSION ACLOCAL_AMFLAGS target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_dependency_tracking enable_static enable_shared with_pic enable_fast_install with_gnu_ld enable_libtool_lock enable_thread enable_docs enable_glibtest with_glade enable_numpy ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR PYGOBJECT_CFLAGS PYGOBJECT_LIBS ATK_CFLAGS ATK_LIBS PANGO_CFLAGS PANGO_LIBS PYCAIRO_CFLAGS PYCAIRO_LIBS PANGOCAIRO_CFLAGS PANGOCAIRO_LIBS GTK_CFLAGS GTK_LIBS GTK210_CFLAGS GTK210_LIBS GTK212_CFLAGS GTK212_LIBS GTK214_CFLAGS GTK214_LIBS GTK216_CFLAGS GTK216_LIBS GTK218_CFLAGS GTK218_LIBS GTK220_CFLAGS GTK220_LIBS GTK222_CFLAGS GTK222_LIBS GTK224_CFLAGS GTK224_LIBS LIBGLADE_CFLAGS LIBGLADE_LIBS GTKUNIXPRINT_CFLAGS GTKUNIXPRINT_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used" >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures pygtk 2.24.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/pygtk] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of pygtk 2.24.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-static[=PKGS] build static libraries [default=no] --enable-shared[=PKGS] build shared libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --disable-thread Disable pygtk threading support --enable-docs Enable documentation building --disable-glibtest do not try to compile and run a test GLIB program --disable-numpy Disable numeric python features Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --without-glade Build without glade library (default: test) Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path PYGOBJECT_CFLAGS C compiler flags for PYGOBJECT, overriding pkg-config PYGOBJECT_LIBS linker flags for PYGOBJECT, overriding pkg-config ATK_CFLAGS C compiler flags for ATK, overriding pkg-config ATK_LIBS linker flags for ATK, overriding pkg-config PANGO_CFLAGS C compiler flags for PANGO, overriding pkg-config PANGO_LIBS linker flags for PANGO, overriding pkg-config PYCAIRO_CFLAGS C compiler flags for PYCAIRO, overriding pkg-config PYCAIRO_LIBS linker flags for PYCAIRO, overriding pkg-config PANGOCAIRO_CFLAGS C compiler flags for PANGOCAIRO, overriding pkg-config PANGOCAIRO_LIBS linker flags for PANGOCAIRO, overriding pkg-config GTK_CFLAGS C compiler flags for GTK, overriding pkg-config GTK_LIBS linker flags for GTK, overriding pkg-config GTK210_CFLAGS C compiler flags for GTK210, overriding pkg-config GTK210_LIBS linker flags for GTK210, overriding pkg-config GTK212_CFLAGS C compiler flags for GTK212, overriding pkg-config GTK212_LIBS linker flags for GTK212, overriding pkg-config GTK214_CFLAGS C compiler flags for GTK214, overriding pkg-config GTK214_LIBS linker flags for GTK214, overriding pkg-config GTK216_CFLAGS C compiler flags for GTK216, overriding pkg-config GTK216_LIBS linker flags for GTK216, overriding pkg-config GTK218_CFLAGS C compiler flags for GTK218, overriding pkg-config GTK218_LIBS linker flags for GTK218, overriding pkg-config GTK220_CFLAGS C compiler flags for GTK220, overriding pkg-config GTK220_LIBS linker flags for GTK220, overriding pkg-config GTK222_CFLAGS C compiler flags for GTK222, overriding pkg-config GTK222_LIBS linker flags for GTK222, overriding pkg-config GTK224_CFLAGS C compiler flags for GTK224, overriding pkg-config GTK224_LIBS linker flags for GTK224, overriding pkg-config LIBGLADE_CFLAGS C compiler flags for LIBGLADE, overriding pkg-config LIBGLADE_LIBS linker flags for LIBGLADE, overriding pkg-config GTKUNIXPRINT_CFLAGS C compiler flags for GTKUNIXPRINT, overriding pkg-config GTKUNIXPRINT_LIBS linker flags for GTKUNIXPRINT, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF pygtk configure 2.24.0 generated by GNU Autoconf 2.67 Copyright (C) 2010 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval "test \"\${$3+set}\"" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} } # ac_fn_c_check_func # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval "test \"\${$3+set}\"" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} } # ac_fn_c_check_header_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} as_fn_set_status $ac_retval } # ac_fn_c_try_run cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by pygtk $as_me 2.24.0, which was generated by GNU Autoconf 2.67. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5 ; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ACLOCAL_AMFLAGS="-I m4 -I ." $as_echo "#define PYGTK_MAJOR_VERSION 2" >>confdefs.h PYGTK_MAJOR_VERSION=2 $as_echo "#define PYGTK_MINOR_VERSION 24" >>confdefs.h PYGTK_MINOR_VERSION=24 $as_echo "#define PYGTK_MICRO_VERSION 0" >>confdefs.h PYGTK_MICRO_VERSION=0 ac_config_headers="$ac_config_headers config.h" am__api_version='1.11' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5 ;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5 ;; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test "${ac_cv_path_mkdir+set}" = set; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AWK+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='pygtk' VERSION='2.24.0' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5 ; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5 ; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5 ; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5 ; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if test "${ac_cv_objext+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5 ; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi for ac_func in bind_textdomain_codeset do : ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BIND_TEXTDOMAIN_CODESET 1 _ACEOF fi done ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS" # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if test "${ac_cv_build+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5 ;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if test "${ac_cv_host+set}" = set; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5 ;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for some Win32 platform" >&5 $as_echo_n "checking for some Win32 platform... " >&6; } case "$host" in *-*-mingw*|*-*-cygwin*) platform_win32=yes ;; *) platform_win32=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $platform_win32" >&5 $as_echo "$platform_win32" >&6; } if test "$platform_win32" = "yes"; then PLATFORM_WIN32_TRUE= PLATFORM_WIN32_FALSE='#' else PLATFORM_WIN32_TRUE='#' PLATFORM_WIN32_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for native Win32" >&5 $as_echo_n "checking for native Win32... " >&6; } case "$host" in *-*-mingw*) os_win32=yes ;; *) os_win32=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $os_win32" >&5 $as_echo "$os_win32" >&6; } if test "$os_win32" = "yes"; then OS_WIN32_TRUE= OS_WIN32_FALSE='#' else OS_WIN32_TRUE='#' OS_WIN32_FALSE= fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=no fi enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AS+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$AS"; then ac_cv_prog_AS="$AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AS="${ac_tool_prefix}as" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AS=$ac_cv_prog_AS if test -n "$AS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 $as_echo "$AS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AS"; then ac_ct_AS=$AS # Extract the first word of "as", so it can be a program name with args. set dummy as; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_AS+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AS"; then ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AS="as" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AS=$ac_cv_prog_ac_ct_AS if test -n "$ac_ct_AS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 $as_echo "$ac_ct_AS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AS" = x; then AS="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AS=$ac_ct_AS fi else AS="$ac_cv_prog_AS" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_DLLTOOL+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OBJDUMP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi ;; esac test -z "$AS" && AS=as test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$OBJDUMP" && OBJDUMP=objdump case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.2.6b' macro_revision='1.3017' ltmain="$ac_aux_dir/ltmain.sh" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if test "${ac_cv_path_SED+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if test "${ac_cv_path_GREP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if test "${ac_cv_path_EGREP+set}" = set; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if test "${ac_cv_path_FGREP+set}" = set; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if test "${lt_cv_path_LD+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if test "${lt_cv_path_NM+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$ac_tool_prefix"; then for ac_prog in "dumpbin -symbols" "link -dump -symbols" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_DUMPBIN+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in "dumpbin -symbols" "link -dump -symbols" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if test "${lt_cv_nm_interface+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:5006: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:5009: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:5012: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if test "${lt_cv_sys_max_cmd_len+set}" = set; then : $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ = "XX$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 $as_echo "$lt_shell_append" >&6; } if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if test "${lt_cv_ld_reload_flag+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OBJDUMP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if test "${lt_cv_deplibs_check_method+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AR+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AR="${ac_tool_prefix}ar" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_AR+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AR="ar" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi else AR="$ac_cv_prog_AR" fi test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_RANLIB+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then : $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ const struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line 6214 "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if test "${lt_cv_cc_needs_belf+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_DSYMUTIL+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_NMEDIT+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_LIPO+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OTOOL+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OTOOL64+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if test "${lt_cv_apple_cc_single_mod+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if test "${lt_cv_ld_exported_symbols_list+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5 ; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done # Set options enable_dlopen=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; pic_mode="$withval" else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if test "${lt_cv_objdir+set}" = set; then : $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:7707: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:7711: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl*) # IBM XL C 8.0/Fortran 10.1 on PPC lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5 $as_echo "$lt_prog_compiler_pic" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if test "${lt_cv_prog_compiler_pic_works+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:8046: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:8050: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:8151: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:8155: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:8206: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:8210: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; linux* | k*bsd*-gnu) link_all_deplibs=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag= tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld='-rpath $libdir' archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi link_all_deplibs=no else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes=yes ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported whole_archive_flag_spec='' link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=echo archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld='+b $libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo(void) {} _ACEOF if ac_fn_c_try_link "$LINENO"; then : archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then archive_cmds_need_lc=no else archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5 $as_echo "$archive_cmds_need_lc" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` else lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = x""yes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = x""yes; then : lt_cv_dlopen="shl_load" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if test "${ac_cv_lib_dld_shl_load+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = x""yes; then : lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = x""yes; then : lt_cv_dlopen="dlopen" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = x""yes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if test "${ac_cv_lib_svld_dlopen+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = x""yes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if test "${ac_cv_lib_dld_dld_link+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = x""yes; then : lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if test "${lt_cv_dlopen_self+set}" = set; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line 10590 "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if test "${lt_cv_dlopen_self_static+set}" = set; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line 10686 "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" ac_config_commands="$ac_config_commands libtool" # Only expand once: : ${CONFIG_LT=./config.lt} { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_LT" >&5 $as_echo "$as_me: creating $CONFIG_LT" >&6;} cat >"$CONFIG_LT" <<_LTEOF #! $SHELL # Generated by $as_me. # Run this file to recreate a libtool stub with the current configuration. lt_cl_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" "$LINENO" 5 } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX } >&5 lt_cl_help="\ \`$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $0 [OPTIONS] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ pygtk config.lt 2.24.0 configured by $0, generated by GNU Autoconf 2.67. Copyright (C) 2008 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test $# != 0 do case $1 in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) as_fn_error $? "unrecognized option: $1 Try \`$0 --help' for more information." "$LINENO" 5 ;; *) as_fn_error $? "unrecognized argument: $1 Try \`$0 --help' for more information." "$LINENO" 5 ;; esac shift done if $lt_cl_silent; then exec 6>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' AS='`$ECHO "X$AS" | $Xsed -e "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "X$DLLTOOL" | $Xsed -e "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`' macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # Quote evaled strings. for var in SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ deplibs_check_method \ file_magic_cmd \ AR \ AR_FLAGS \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ SHELL \ ECHO \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_wl \ lt_prog_compiler_pic \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ fix_srcfile_path \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ finish_eval \ old_striplib \ striplib; do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec; do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Fix-up fallback echo if it was mangled by the above quoting rules. case \$lt_ECHO in *'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` ;; esac ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ofile" >&5 $as_echo "$as_me: creating $ofile" >&6;} # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. available_tags="" # ### BEGIN LIBTOOL CONFIG # Whether or not to build static libraries. build_old_libs=$enable_static # Assembler program. AS=$AS # DLL creation program. DLLTOOL=$DLLTOOL # Object dumper program. OBJDUMP=$OBJDUMP # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == "file_magic". file_magic_cmd=$lt_file_magic_cmd # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name of the directory that contains temporary libtool files. objdir=$objdir # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that does not interpret backslashes. ECHO=$lt_ECHO # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # If ld is used when linking, flag to hardcode \$libdir into a binary # during linking. This must work even if \$libdir does not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain="$ac_aux_dir/ltmain.sh" # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) case $xsi_shell in yes) cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac } # func_basename file func_basename () { func_basename_result="${1##*/}" } # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}" } # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). func_stripname () { # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"} } # func_opt_split func_opt_split () { func_opt_split_opt=${1%%=*} func_opt_split_arg=${1#*=} } # func_lo2o object func_lo2o () { case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac } # func_xform libobj-or-source func_xform () { func_xform_result=${1%.*}.lo } # func_arith arithmetic-term... func_arith () { func_arith_result=$(( $* )) } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=${#1} } _LT_EOF ;; *) # Bourne compatible functions. cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_basename file func_basename () { func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; esac } # sed scripts: my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' my_sed_long_arg='1s/^-[^=]*=//' # func_opt_split func_opt_split () { func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` } # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` } # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` } # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "$@"` } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } _LT_EOF esac case $lt_shell_append in yes) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$1+=\$2" } _LT_EOF ;; *) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$1=\$$1\$2" } _LT_EOF ;; esac sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" as_fn_exit 0 _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. if test "$no_create" != yes; then lt_cl_success=: test "$silent" = yes && lt_config_lt_args="$lt_config_lt_args --quiet" exec 5>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec 5>>config.log $lt_cl_success || as_fn_exit 1 fi if test -n "$PYTHON"; then # If the user set $PYTHON, use it and don't search something else. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version >= 2.3.5" >&5 $as_echo_n "checking whether $PYTHON version >= 2.3.5... " >&6; } prog="import sys # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. # map returns an iterator in Python 3.0 and a list in 2.x minver = list(map(int, '2.3.5'.split('.'))) + [0, 0, 0] minverhex = 0 # xrange is not present in Python 3.0 and range returns an iterator for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i] sys.exit(sys.hexversion < minverhex)" if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5 ($PYTHON -c "$prog") >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else as_fn_error $? "too old" "$LINENO" 5 fi am_display_PYTHON=$PYTHON else # Otherwise, try each interpreter until we find one that satisfies # VERSION. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 2.3.5" >&5 $as_echo_n "checking for a Python interpreter with version >= 2.3.5... " >&6; } if test "${am_cv_pathless_PYTHON+set}" = set; then : $as_echo_n "(cached) " >&6 else for am_cv_pathless_PYTHON in python python2 python3 python3.0 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do test "$am_cv_pathless_PYTHON" = none && break prog="import sys # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. # map returns an iterator in Python 3.0 and a list in 2.x minver = list(map(int, '2.3.5'.split('.'))) + [0, 0, 0] minverhex = 0 # xrange is not present in Python 3.0 and range returns an iterator for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i] sys.exit(sys.hexversion < minverhex)" if { echo "$as_me:$LINENO: $am_cv_pathless_PYTHON -c "$prog"" >&5 ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then : break fi done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5 $as_echo "$am_cv_pathless_PYTHON" >&6; } # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. if test "$am_cv_pathless_PYTHON" = none; then PYTHON=: else # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args. set dummy $am_cv_pathless_PYTHON; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_PYTHON+set}" = set; then : $as_echo_n "(cached) " >&6 else case $PYTHON in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PYTHON=$ac_cv_path_PYTHON if test -n "$PYTHON"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 $as_echo "$PYTHON" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi am_display_PYTHON=$am_cv_pathless_PYTHON fi if test "$PYTHON" = :; then as_fn_error $? "no suitable Python interpreter found" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5 $as_echo_n "checking for $am_display_PYTHON version... " >&6; } if test "${am_cv_python_version+set}" = set; then : $as_echo_n "(cached) " >&6 else am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5 $as_echo "$am_cv_python_version" >&6; } PYTHON_VERSION=$am_cv_python_version PYTHON_PREFIX='${prefix}' PYTHON_EXEC_PREFIX='${exec_prefix}' { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5 $as_echo_n "checking for $am_display_PYTHON platform... " >&6; } if test "${am_cv_python_platform+set}" = set; then : $as_echo_n "(cached) " >&6 else am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5 $as_echo "$am_cv_python_platform" >&6; } PYTHON_PLATFORM=$am_cv_python_platform { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5 $as_echo_n "checking for $am_display_PYTHON script directory... " >&6; } if test "${am_cv_python_pythondir+set}" = set; then : $as_echo_n "(cached) " >&6 else if test "x$prefix" = xNONE then am_py_prefix=$ac_default_prefix else am_py_prefix=$prefix fi am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null || echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"` case $am_cv_python_pythondir in $am_py_prefix*) am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` ;; *) case $am_py_prefix in /usr|/System*) ;; *) am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5 $as_echo "$am_cv_python_pythondir" >&6; } pythondir=$am_cv_python_pythondir pkgpythondir=\${pythondir}/$PACKAGE { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5 $as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; } if test "${am_cv_python_pyexecdir+set}" = set; then : $as_echo_n "(cached) " >&6 else if test "x$exec_prefix" = xNONE then am_py_exec_prefix=$am_py_prefix else am_py_exec_prefix=$exec_prefix fi am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null || echo "$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages"` case $am_cv_python_pyexecdir in $am_py_exec_prefix*) am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` ;; *) case $am_py_exec_prefix in /usr|/System*) ;; *) am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5 $as_echo "$am_cv_python_pyexecdir" >&6; } pyexecdir=$am_cv_python_pyexecdir pkgpyexecdir=\${pyexecdir}/$PACKAGE fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for headers required to compile python extensions" >&5 $as_echo_n "checking for headers required to compile python extensions... " >&6; } py_prefix=`$PYTHON -c "import sys; print sys.prefix"` py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"` if test -x "$PYTHON-config"; then PYTHON_INCLUDES=`$PYTHON-config --includes 2>/dev/null` else PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}" if test "$py_prefix" != "$py_exec_prefix"; then PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}" fi fi save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5 $as_echo "found" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } as_fn_error $? "could not find Python headers" "$LINENO" 5 fi rm -f conftest.err conftest.i conftest.$ac_ext CPPFLAGS="$save_CPPFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PySignal_SetWakeupFd in Python.h" >&5 $as_echo_n "checking for PySignal_SetWakeupFd in Python.h... " >&6; } py_prefix=`$PYTHON -c "import sys; print sys.prefix"` old_CPPFLAGS=$CPPFLAGS CPPFLAGS="-Wall -Werror $PYTHON_INCLUDES" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { PySignal_SetWakeupFd(0); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : setwakeupfd_ok=yes else setwakeupfd_ok=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $setwakeupfd_ok" >&5 $as_echo "$setwakeupfd_ok" >&6; } if test "x$setwakeupfd_ok" != xno; then $as_echo "#define HAVE_PYSIGNAL_SETWAKEUPFD 1" >>confdefs.h fi CPPFLAGS=$old_CPPFLAGS # Check whether --enable-thread was given. if test "${enable_thread+set}" = set; then : enableval=$enable_thread; else enable_thread=yes fi py_mod_var=`echo thread'_' | sed 'y%./+-%__p_%'` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python module thread" >&5 $as_echo_n "checking for python module thread... " >&6; } if eval "test \"\${py_cv_mod_$py_mod_var+set}\"" = set; then : $as_echo_n "(cached) " >&6 else prog=" import sys try: import thread except ImportError: sys.exit(1) except: sys.exit(0) sys.exit(0)" if $PYTHON -c "$prog" 1>&5 2>&5 then eval "py_cv_mod_$py_mod_var=yes" else eval "py_cv_mod_$py_mod_var=no" fi fi py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"` if test "x$py_val" != xno; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } enable_thread=no fi # Check whether --enable-docs was given. if test "${enable_docs+set}" = set; then : enableval=$enable_docs; enable_docs=$enableval else enable_docs=no fi if test "${enable_docs}" != no; then # Extract the first word of "xsltproc", so it can be a program name with args. set dummy xsltproc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_XSLTPROC+set}" = set; then : $as_echo_n "(cached) " >&6 else case $XSLTPROC in [\\/]* | ?:[\\/]*) ac_cv_path_XSLTPROC="$XSLTPROC" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_XSLTPROC="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi XSLTPROC=$ac_cv_path_XSLTPROC if test -n "$XSLTPROC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XSLTPROC" >&5 $as_echo "$XSLTPROC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$XSLTPROC"; then enable_docs=no fi fi if test x$enable_docs != xno; then ENABLE_DOCS_TRUE= ENABLE_DOCS_FALSE='#' else ENABLE_DOCS_TRUE='#' ENABLE_DOCS_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable threading in pygtk" >&5 $as_echo_n "checking whether to enable threading in pygtk... " >&6; } if test "x$enable_thread" != xno; then extra_mods=gthread THREADING_CFLAGS= { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else extra_mods= THREADING_CFLAGS="-DDISABLE_THREADING" { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi CPPFLAGS="${CPPFLAGS} $THREADING_CFLAGS" export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh` # Check whether --enable-glibtest was given. if test "${enable_glibtest+set}" = set; then : enableval=$enable_glibtest; else enable_glibtest=yes fi pkg_config_args=glib-2.0 for module in . gobject $extra_mods do case "$module" in gmodule) pkg_config_args="$pkg_config_args gmodule-2.0" ;; gmodule-no-export) pkg_config_args="$pkg_config_args gmodule-no-export-2.0" ;; gobject) pkg_config_args="$pkg_config_args gobject-2.0" ;; gthread) pkg_config_args="$pkg_config_args gthread-2.0" ;; gio*) pkg_config_args="$pkg_config_args $module-2.0" ;; esac done if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_PKG_CONFIG+set}" = set; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.16 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi no_glib="" if test "x$PKG_CONFIG" = x ; then no_glib=yes PKG_CONFIG=no fi min_glib_version=2.8.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB - version >= $min_glib_version" >&5 $as_echo_n "checking for GLIB - version >= $min_glib_version... " >&6; } if test x$PKG_CONFIG != xno ; then ## don't try to run the test against uninstalled libtool libs if $PKG_CONFIG --uninstalled $pkg_config_args; then echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH" enable_glibtest=no fi if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then : else no_glib=yes fi fi if test x"$no_glib" = x ; then GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0` GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0` GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0` GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args` GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args` glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` if test "x$enable_glibtest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GLIB_CFLAGS" LIBS="$GLIB_LIBS $LIBS" rm -f conf.glibtest if test "$cross_compiling" = yes; then : echo $ac_n "cross compiling; assumed OK... $ac_c" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { unsigned int major, minor, micro; char *tmp_version; fclose (fopen ("conf.glibtest", "w")); /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = g_strdup("$min_glib_version"); if (sscanf(tmp_version, "%u.%u.%u", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_glib_version"); exit(1); } if ((glib_major_version != $glib_config_major_version) || (glib_minor_version != $glib_config_minor_version) || (glib_micro_version != $glib_config_micro_version)) { printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n", $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version, glib_major_version, glib_minor_version, glib_micro_version); printf ("*** was found! If pkg-config was correct, then it is best\n"); printf ("*** to remove the old version of GLib. You may also be able to fix the error\n"); printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); printf("*** required on your system.\n"); printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); printf("*** to point to the correct configuration files\n"); } else if ((glib_major_version != GLIB_MAJOR_VERSION) || (glib_minor_version != GLIB_MINOR_VERSION) || (glib_micro_version != GLIB_MICRO_VERSION)) { printf("*** GLIB header files (version %d.%d.%d) do not match\n", GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION); printf("*** library (version %d.%d.%d)\n", glib_major_version, glib_minor_version, glib_micro_version); } else { if ((glib_major_version > major) || ((glib_major_version == major) && (glib_minor_version > minor)) || ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro))) { return 0; } else { printf("\n*** An old version of GLIB (%u.%u.%u) was found.\n", glib_major_version, glib_minor_version, glib_micro_version); printf("*** You need a version of GLIB newer than %u.%u.%u. The latest version of\n", major, minor, micro); printf("*** GLIB is always available from ftp://ftp.gtk.org.\n"); printf("***\n"); printf("*** If you have already installed a sufficiently new version, this error\n"); printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); printf("*** being found. The easiest way to fix this is to remove the old version\n"); printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n"); printf("*** correct copy of pkg-config. (In this case, you will have to\n"); printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); printf("*** so that the correct libraries are found at run-time))\n"); } } return 1; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else no_glib=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_glib" = x ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)" >&5 $as_echo "yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)" >&6; } : else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if test "$PKG_CONFIG" = "no" ; then echo "*** A new enough version of pkg-config was not found." echo "*** See http://www.freedesktop.org/software/pkgconfig/" else if test -f conf.glibtest ; then : else echo "*** Could not run GLIB test program, checking why..." ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GLIB_CFLAGS" LIBS="$LIBS $GLIB_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GLIB or finding the wrong" echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" else echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means GLIB is incorrectly installed." fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi GLIB_CFLAGS="" GLIB_LIBS="" GLIB_GENMARSHAL="" GOBJECT_QUERY="" GLIB_MKENUMS="" as_fn_error $? "gobject is required to build pygtk?" "$LINENO" 5 fi rm -f conf.glibtest if test -n "$export_dynamic"; then GLIB_LIBS=`echo $GLIB_LIBS | sed -e "s/$export_dynamic//"` fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PYGOBJECT" >&5 $as_echo_n "checking for PYGOBJECT... " >&6; } if test -n "$PYGOBJECT_CFLAGS"; then pkg_cv_PYGOBJECT_CFLAGS="$PYGOBJECT_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pygobject-2.0 >= 2.21.3\""; } >&5 ($PKG_CONFIG --exists --print-errors "pygobject-2.0 >= 2.21.3") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PYGOBJECT_CFLAGS=`$PKG_CONFIG --cflags "pygobject-2.0 >= 2.21.3" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$PYGOBJECT_LIBS"; then pkg_cv_PYGOBJECT_LIBS="$PYGOBJECT_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pygobject-2.0 >= 2.21.3\""; } >&5 ($PKG_CONFIG --exists --print-errors "pygobject-2.0 >= 2.21.3") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PYGOBJECT_LIBS=`$PKG_CONFIG --libs "pygobject-2.0 >= 2.21.3" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then PYGOBJECT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "pygobject-2.0 >= 2.21.3" 2>&1` else PYGOBJECT_PKG_ERRORS=`$PKG_CONFIG --print-errors "pygobject-2.0 >= 2.21.3" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$PYGOBJECT_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (pygobject-2.0 >= 2.21.3) were not met: $PYGOBJECT_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables PYGOBJECT_CFLAGS and PYGOBJECT_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables PYGOBJECT_CFLAGS and PYGOBJECT_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5 ; } else PYGOBJECT_CFLAGS=$pkg_cv_PYGOBJECT_CFLAGS PYGOBJECT_LIBS=$pkg_cv_PYGOBJECT_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi PYGOBJECT_INCLUDEDIR=`$PKG_CONFIG --variable=pygtkincludedir pygobject-2.0` PYGOBJECT_DATADIR=`$PKG_CONFIG --variable=datadir pygobject-2.0` PYGOBJECT_DEFSDIR=`$PKG_CONFIG --variable defsdir pygobject-2.0` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gio-types.defs" >&5 $as_echo_n "checking for gio-types.defs... " >&6; } if test -n "$PYGOBJECT_DEFSDIR" && test -e "$PYGOBJECT_DEFSDIR/gio-types.defs"; then if true; then HAVE_GIO_TYPES_DEFS_TRUE= HAVE_GIO_TYPES_DEFS_FALSE='#' else HAVE_GIO_TYPES_DEFS_TRUE='#' HAVE_GIO_TYPES_DEFS_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYGOBJECT_DEFSDIR/gio-types.defs" >&5 $as_echo "$PYGOBJECT_DEFSDIR/gio-types.defs" >&6; } else if false; then HAVE_GIO_TYPES_DEFS_TRUE= HAVE_GIO_TYPES_DEFS_FALSE='#' else HAVE_GIO_TYPES_DEFS_TRUE='#' HAVE_GIO_TYPES_DEFS_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi PYGOBJECT_FIXXREF="$PYTHON `$PKG_CONFIG --variable=fixxref pygobject-2.0`" PYGOBJECT_PYGDOCS="`$PKG_CONFIG --variable=pygdocs pygobject-2.0`" pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ATK" >&5 $as_echo_n "checking for ATK... " >&6; } if test -n "$ATK_CFLAGS"; then pkg_cv_ATK_CFLAGS="$ATK_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"atk >= 1.12.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "atk >= 1.12.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ATK_CFLAGS=`$PKG_CONFIG --cflags "atk >= 1.12.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$ATK_LIBS"; then pkg_cv_ATK_LIBS="$ATK_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"atk >= 1.12.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "atk >= 1.12.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ATK_LIBS=`$PKG_CONFIG --libs "atk >= 1.12.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then ATK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "atk >= 1.12.0" 2>&1` else ATK_PKG_ERRORS=`$PKG_CONFIG --print-errors "atk >= 1.12.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$ATK_PKG_ERRORS" >&5 have_atk=false elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_atk=false else ATK_CFLAGS=$pkg_cv_ATK_CFLAGS ATK_LIBS=$pkg_cv_ATK_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_atk=true fi if $have_atk; then BUILD_ATK_TRUE= BUILD_ATK_FALSE='#' else BUILD_ATK_TRUE='#' BUILD_ATK_FALSE= fi if test -n "$export_dynamic"; then ATK_LIBS=`echo $ATK_LIBS | sed -e "s/$export_dynamic//"` fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PANGO" >&5 $as_echo_n "checking for PANGO... " >&6; } if test -n "$PANGO_CFLAGS"; then pkg_cv_PANGO_CFLAGS="$PANGO_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pango >= 1.16.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "pango >= 1.16.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PANGO_CFLAGS=`$PKG_CONFIG --cflags "pango >= 1.16.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$PANGO_LIBS"; then pkg_cv_PANGO_LIBS="$PANGO_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pango >= 1.16.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "pango >= 1.16.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PANGO_LIBS=`$PKG_CONFIG --libs "pango >= 1.16.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then PANGO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "pango >= 1.16.0" 2>&1` else PANGO_PKG_ERRORS=`$PKG_CONFIG --print-errors "pango >= 1.16.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$PANGO_PKG_ERRORS" >&5 have_pango=false elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_pango=false else PANGO_CFLAGS=$pkg_cv_PANGO_CFLAGS PANGO_LIBS=$pkg_cv_PANGO_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_pango=true fi if $have_pango; then BUILD_PANGO_TRUE= BUILD_PANGO_FALSE='#' else BUILD_PANGO_TRUE='#' BUILD_PANGO_FALSE= fi if test -n "$export_dynamic"; then PANGO_LIBS=`echo $PANGO_LIBS | sed -e "s/$export_dynamic//"` fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for codegen" >&5 $as_echo_n "checking for codegen... " >&6; } CODEGENDIR=`$PKG_CONFIG --variable codegendir pygobject-2.0` if test -z $CODEGENDIR; then as_fn_error $? "unable to find PyGObject codegen" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CODEGENDIR" >&5 $as_echo "$CODEGENDIR" >&6; } fi PYGTK_CODEGEN_DEFINES="" gtk_version="" pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PYCAIRO" >&5 $as_echo_n "checking for PYCAIRO... " >&6; } if test -n "$PYCAIRO_CFLAGS"; then pkg_cv_PYCAIRO_CFLAGS="$PYCAIRO_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pycairo >= 1.0.2\""; } >&5 ($PKG_CONFIG --exists --print-errors "pycairo >= 1.0.2") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PYCAIRO_CFLAGS=`$PKG_CONFIG --cflags "pycairo >= 1.0.2" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$PYCAIRO_LIBS"; then pkg_cv_PYCAIRO_LIBS="$PYCAIRO_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pycairo >= 1.0.2\""; } >&5 ($PKG_CONFIG --exists --print-errors "pycairo >= 1.0.2") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PYCAIRO_LIBS=`$PKG_CONFIG --libs "pycairo >= 1.0.2" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then PYCAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "pycairo >= 1.0.2" 2>&1` else PYCAIRO_PKG_ERRORS=`$PKG_CONFIG --print-errors "pycairo >= 1.0.2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$PYCAIRO_PKG_ERRORS" >&5 have_pycairo=false elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_pycairo=false else PYCAIRO_CFLAGS=$pkg_cv_PYCAIRO_CFLAGS PYCAIRO_LIBS=$pkg_cv_PYCAIRO_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_pycairo=true fi if test "x$have_pycairo" = "xtrue"; then PYGTK_CODEGEN_DEFINES="-DHAVE_PYCAIRO $PYGTK_CODEGEN_DEFINES"; $as_echo "#define HAVE_PYCAIRO 1" >>confdefs.h cat >>confdefs.h <<_ACEOF #define PYCAIRO_MAJOR_VERSION `pkg-config --modversion pycairo | cut -d '.' -f 1` _ACEOF cat >>confdefs.h <<_ACEOF #define PYCAIRO_MINOR_VERSION `pkg-config --modversion pycairo | cut -d '.' -f 2` _ACEOF cat >>confdefs.h <<_ACEOF #define PYCAIRO_MICRO_VERSION `pkg-config --modversion pycairo | cut -d '.' -f 3` _ACEOF pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PANGOCAIRO" >&5 $as_echo_n "checking for PANGOCAIRO... " >&6; } if test -n "$PANGOCAIRO_CFLAGS"; then pkg_cv_PANGOCAIRO_CFLAGS="$PANGOCAIRO_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pangocairo >= 1.16.0, pycairo >= 1.0.2\""; } >&5 ($PKG_CONFIG --exists --print-errors "pangocairo >= 1.16.0, pycairo >= 1.0.2") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PANGOCAIRO_CFLAGS=`$PKG_CONFIG --cflags "pangocairo >= 1.16.0, pycairo >= 1.0.2" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$PANGOCAIRO_LIBS"; then pkg_cv_PANGOCAIRO_LIBS="$PANGOCAIRO_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pangocairo >= 1.16.0, pycairo >= 1.0.2\""; } >&5 ($PKG_CONFIG --exists --print-errors "pangocairo >= 1.16.0, pycairo >= 1.0.2") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PANGOCAIRO_LIBS=`$PKG_CONFIG --libs "pangocairo >= 1.16.0, pycairo >= 1.0.2" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then PANGOCAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "pangocairo >= 1.16.0, pycairo >= 1.0.2" 2>&1` else PANGOCAIRO_PKG_ERRORS=`$PKG_CONFIG --print-errors "pangocairo >= 1.16.0, pycairo >= 1.0.2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$PANGOCAIRO_PKG_ERRORS" >&5 have_pangocairo=false elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_pangocairo=false else PANGOCAIRO_CFLAGS=$pkg_cv_PANGOCAIRO_CFLAGS PANGOCAIRO_LIBS=$pkg_cv_PANGOCAIRO_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_pangocairo=true fi if test ! $have_pangocairo then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if $have_pangocairo; then BUILD_PANGOCAIRO_TRUE= BUILD_PANGOCAIRO_FALSE='#' else BUILD_PANGOCAIRO_TRUE='#' BUILD_PANGOCAIRO_FALSE= fi if test -n "$export_dynamic"; then PANGOCAIRO_LIBS=`echo $PANGOCAIRO_LIBS | sed -e "s/$export_dynamic//"` fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK" >&5 $as_echo_n "checking for GTK... " >&6; } if test -n "$GTK_CFLAGS"; then pkg_cv_GTK_CFLAGS="$GTK_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.8.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.8.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 2.8.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTK_LIBS"; then pkg_cv_GTK_LIBS="$GTK_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.8.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.8.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 2.8.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gtk+-2.0 >= 2.8.0" 2>&1` else GTK_PKG_ERRORS=`$PKG_CONFIG --print-errors "gtk+-2.0 >= 2.8.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTK_PKG_ERRORS" >&5 HAVE_GTK="no" elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } HAVE_GTK="no" else GTK_CFLAGS=$pkg_cv_GTK_CFLAGS GTK_LIBS=$pkg_cv_GTK_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } HAVE_GTK="yes" fi if test "x$HAVE_GTK" = "xyes"; then have_gtk=true else have_gtk=false { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if $have_gtk; then BUILD_GTK_TRUE= BUILD_GTK_FALSE='#' else BUILD_GTK_TRUE='#' BUILD_GTK_FALSE= fi if test -n "$export_dynamic"; then GTK_LIBS=`echo $GTK_LIBS | sed -e "s/$export_dynamic//"` fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK210" >&5 $as_echo_n "checking for GTK210... " >&6; } if test -n "$GTK210_CFLAGS"; then pkg_cv_GTK210_CFLAGS="$GTK210_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.10.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.10.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK210_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 2.10.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTK210_LIBS"; then pkg_cv_GTK210_LIBS="$GTK210_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.10.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.10.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK210_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 2.10.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTK210_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gtk+-2.0 >= 2.10.0" 2>&1` else GTK210_PKG_ERRORS=`$PKG_CONFIG --print-errors "gtk+-2.0 >= 2.10.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTK210_PKG_ERRORS" >&5 HAVE_GTK_210="no" elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } HAVE_GTK_210="no" else GTK210_CFLAGS=$pkg_cv_GTK210_CFLAGS GTK210_LIBS=$pkg_cv_GTK210_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } HAVE_GTK_210="yes" fi if test "x$HAVE_GTK_210" = "xyes"; then gtk_version="2.10" have_gtk_210=true else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } gtk_version="2.8" have_gtk_210=false fi if $have_gtk_210; then HAVE_GTK_2_10_TRUE= HAVE_GTK_2_10_FALSE='#' else HAVE_GTK_2_10_TRUE='#' HAVE_GTK_2_10_FALSE= fi $as_echo "#define HAVE_GTK_2_10 \$have_gtk_210" >>confdefs.h pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK212" >&5 $as_echo_n "checking for GTK212... " >&6; } if test -n "$GTK212_CFLAGS"; then pkg_cv_GTK212_CFLAGS="$GTK212_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.11.6\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.11.6") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK212_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 2.11.6" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTK212_LIBS"; then pkg_cv_GTK212_LIBS="$GTK212_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.11.6\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.11.6") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK212_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 2.11.6" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTK212_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gtk+-2.0 >= 2.11.6" 2>&1` else GTK212_PKG_ERRORS=`$PKG_CONFIG --print-errors "gtk+-2.0 >= 2.11.6" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTK212_PKG_ERRORS" >&5 HAVE_GTK_212="no" elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } HAVE_GTK_212="no" else GTK212_CFLAGS=$pkg_cv_GTK212_CFLAGS GTK212_LIBS=$pkg_cv_GTK212_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } HAVE_GTK_212="yes" fi if test "x$HAVE_GTK_212" = "xyes"; then gtk_version="2.12" have_gtk_212=true PYGTK_CODEGEN_DEFINES="$PYGTK_CODEGEN_DEFINES -DHAVE_GTK_2_12" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_gtk_212=false fi if $have_gtk_212; then HAVE_GTK_2_12_TRUE= HAVE_GTK_2_12_FALSE='#' else HAVE_GTK_2_12_TRUE='#' HAVE_GTK_2_12_FALSE= fi $as_echo "#define HAVE_GTK_2_12 \$have_gtk_212" >>confdefs.h pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK214" >&5 $as_echo_n "checking for GTK214... " >&6; } if test -n "$GTK214_CFLAGS"; then pkg_cv_GTK214_CFLAGS="$GTK214_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.13.8\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.13.8") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK214_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 2.13.8" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTK214_LIBS"; then pkg_cv_GTK214_LIBS="$GTK214_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.13.8\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.13.8") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK214_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 2.13.8" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTK214_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gtk+-2.0 >= 2.13.8" 2>&1` else GTK214_PKG_ERRORS=`$PKG_CONFIG --print-errors "gtk+-2.0 >= 2.13.8" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTK214_PKG_ERRORS" >&5 HAVE_GTK_214="no" elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } HAVE_GTK_214="no" else GTK214_CFLAGS=$pkg_cv_GTK214_CFLAGS GTK214_LIBS=$pkg_cv_GTK214_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } HAVE_GTK_214="yes" fi if test "x$HAVE_GTK_214" = "xyes"; then gtk_version="2.14" have_gtk_214=true PYGTK_CODEGEN_DEFINES="$PYGTK_CODEGEN_DEFINES -DHAVE_GTK_2_14" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_gtk_214=false fi if $have_gtk_214; then HAVE_GTK_2_14_TRUE= HAVE_GTK_2_14_FALSE='#' else HAVE_GTK_2_14_TRUE='#' HAVE_GTK_2_14_FALSE= fi $as_echo "#define HAVE_GTK_2_14 \$have_gtk_214" >>confdefs.h pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK216" >&5 $as_echo_n "checking for GTK216... " >&6; } if test -n "$GTK216_CFLAGS"; then pkg_cv_GTK216_CFLAGS="$GTK216_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.16.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.16.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK216_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 2.16.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTK216_LIBS"; then pkg_cv_GTK216_LIBS="$GTK216_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.16.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.16.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK216_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 2.16.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTK216_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gtk+-2.0 >= 2.16.0" 2>&1` else GTK216_PKG_ERRORS=`$PKG_CONFIG --print-errors "gtk+-2.0 >= 2.16.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTK216_PKG_ERRORS" >&5 HAVE_GTK_216="no" elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } HAVE_GTK_216="no" else GTK216_CFLAGS=$pkg_cv_GTK216_CFLAGS GTK216_LIBS=$pkg_cv_GTK216_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } HAVE_GTK_216="yes" fi if test "x$HAVE_GTK_216" = "xyes"; then gtk_version="2.16" have_gtk_216=true PYGTK_CODEGEN_DEFINES="$PYGTK_CODEGEN_DEFINES -DHAVE_GTK_2_16" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_gtk_216=false fi if $have_gtk_216; then HAVE_GTK_2_16_TRUE= HAVE_GTK_2_16_FALSE='#' else HAVE_GTK_2_16_TRUE='#' HAVE_GTK_2_16_FALSE= fi $as_echo "#define HAVE_GTK_2_16 \$have_gtk_216" >>confdefs.h pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK218" >&5 $as_echo_n "checking for GTK218... " >&6; } if test -n "$GTK218_CFLAGS"; then pkg_cv_GTK218_CFLAGS="$GTK218_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.18.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.18.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK218_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 2.18.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTK218_LIBS"; then pkg_cv_GTK218_LIBS="$GTK218_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.18.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.18.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK218_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 2.18.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTK218_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gtk+-2.0 >= 2.18.0" 2>&1` else GTK218_PKG_ERRORS=`$PKG_CONFIG --print-errors "gtk+-2.0 >= 2.18.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTK218_PKG_ERRORS" >&5 HAVE_GTK_218="no" elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } HAVE_GTK_218="no" else GTK218_CFLAGS=$pkg_cv_GTK218_CFLAGS GTK218_LIBS=$pkg_cv_GTK218_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } HAVE_GTK_218="yes" fi if test "x$HAVE_GTK_218" = "xyes"; then gtk_version="2.18" have_gtk_218=true PYGTK_CODEGEN_DEFINES="$PYGTK_CODEGEN_DEFINES -DHAVE_GTK_2_18" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_gtk_218=false fi if $have_gtk_218; then HAVE_GTK_2_18_TRUE= HAVE_GTK_2_18_FALSE='#' else HAVE_GTK_2_18_TRUE='#' HAVE_GTK_2_18_FALSE= fi $as_echo "#define HAVE_GTK_2_18 \$have_gtk_218" >>confdefs.h pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK220" >&5 $as_echo_n "checking for GTK220... " >&6; } if test -n "$GTK220_CFLAGS"; then pkg_cv_GTK220_CFLAGS="$GTK220_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.20.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.20.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK220_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 2.20.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTK220_LIBS"; then pkg_cv_GTK220_LIBS="$GTK220_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.20.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.20.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK220_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 2.20.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTK220_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gtk+-2.0 >= 2.20.0" 2>&1` else GTK220_PKG_ERRORS=`$PKG_CONFIG --print-errors "gtk+-2.0 >= 2.20.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTK220_PKG_ERRORS" >&5 HAVE_GTK_220="no" elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } HAVE_GTK_220="no" else GTK220_CFLAGS=$pkg_cv_GTK220_CFLAGS GTK220_LIBS=$pkg_cv_GTK220_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } HAVE_GTK_220="yes" fi if test "x$HAVE_GTK_220" = "xyes"; then gtk_version="2.20" have_gtk_220=true PYGTK_CODEGEN_DEFINES="$PYGTK_CODEGEN_DEFINES -DHAVE_GTK_2_20" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_gtk_220=false fi if $have_gtk_220; then HAVE_GTK_2_20_TRUE= HAVE_GTK_2_20_FALSE='#' else HAVE_GTK_2_20_TRUE='#' HAVE_GTK_2_20_FALSE= fi $as_echo "#define HAVE_GTK_2_20 \$have_gtk_220" >>confdefs.h pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK222" >&5 $as_echo_n "checking for GTK222... " >&6; } if test -n "$GTK222_CFLAGS"; then pkg_cv_GTK222_CFLAGS="$GTK222_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.22.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.22.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK222_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 2.22.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTK222_LIBS"; then pkg_cv_GTK222_LIBS="$GTK222_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.22.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.22.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK222_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 2.22.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTK222_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gtk+-2.0 >= 2.22.0" 2>&1` else GTK222_PKG_ERRORS=`$PKG_CONFIG --print-errors "gtk+-2.0 >= 2.22.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTK222_PKG_ERRORS" >&5 HAVE_GTK_222="no" elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } HAVE_GTK_222="no" else GTK222_CFLAGS=$pkg_cv_GTK222_CFLAGS GTK222_LIBS=$pkg_cv_GTK222_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } HAVE_GTK_222="yes" fi if test "x$HAVE_GTK_222" = "xyes"; then gtk_version="2.22" have_gtk_222=true PYGTK_CODEGEN_DEFINES="$PYGTK_CODEGEN_DEFINES -DHAVE_GTK_2_22" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_gtk_222=false fi if $have_gtk_222; then HAVE_GTK_2_22_TRUE= HAVE_GTK_2_22_FALSE='#' else HAVE_GTK_2_22_TRUE='#' HAVE_GTK_2_22_FALSE= fi $as_echo "#define HAVE_GTK_2_22 \$have_gtk_222" >>confdefs.h pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK224" >&5 $as_echo_n "checking for GTK224... " >&6; } if test -n "$GTK224_CFLAGS"; then pkg_cv_GTK224_CFLAGS="$GTK224_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.24.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.24.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK224_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 2.24.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTK224_LIBS"; then pkg_cv_GTK224_LIBS="$GTK224_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.24.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.24.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK224_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 2.24.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTK224_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gtk+-2.0 >= 2.24.0" 2>&1` else GTK224_PKG_ERRORS=`$PKG_CONFIG --print-errors "gtk+-2.0 >= 2.24.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTK224_PKG_ERRORS" >&5 HAVE_GTK_224="no" elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } HAVE_GTK_224="no" else GTK224_CFLAGS=$pkg_cv_GTK224_CFLAGS GTK224_LIBS=$pkg_cv_GTK224_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } HAVE_GTK_224="yes" fi if test "x$HAVE_GTK_224" = "xyes"; then gtk_version="2.24" have_gtk_224=true PYGTK_CODEGEN_DEFINES="$PYGTK_CODEGEN_DEFINES -DHAVE_GTK_2_24" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_gtk_224=false fi if $have_gtk_224; then HAVE_GTK_2_24_TRUE= HAVE_GTK_2_24_FALSE='#' else HAVE_GTK_2_24_TRUE='#' HAVE_GTK_2_24_FALSE= fi $as_echo "#define HAVE_GTK_2_24 \$have_gtk_224" >>confdefs.h have_libglade=false # Check whether --with-glade was given. if test "${with_glade+set}" = set; then : withval=$with_glade; fi if test "x$with_glade" != "xno"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBGLADE" >&5 $as_echo_n "checking for LIBGLADE... " >&6; } if test -n "$LIBGLADE_CFLAGS"; then pkg_cv_LIBGLADE_CFLAGS="$LIBGLADE_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libglade-2.0 >= 2.5.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libglade-2.0 >= 2.5.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBGLADE_CFLAGS=`$PKG_CONFIG --cflags "libglade-2.0 >= 2.5.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$LIBGLADE_LIBS"; then pkg_cv_LIBGLADE_LIBS="$LIBGLADE_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libglade-2.0 >= 2.5.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libglade-2.0 >= 2.5.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBGLADE_LIBS=`$PKG_CONFIG --libs "libglade-2.0 >= 2.5.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LIBGLADE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libglade-2.0 >= 2.5.0" 2>&1` else LIBGLADE_PKG_ERRORS=`$PKG_CONFIG --print-errors "libglade-2.0 >= 2.5.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LIBGLADE_PKG_ERRORS" >&5 have_libglade=false elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_libglade=false else LIBGLADE_CFLAGS=$pkg_cv_LIBGLADE_CFLAGS LIBGLADE_LIBS=$pkg_cv_LIBGLADE_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_libglade=true fi fi if $have_libglade; then BUILD_LIBGLADE_TRUE= BUILD_LIBGLADE_FALSE='#' else BUILD_LIBGLADE_TRUE='#' BUILD_LIBGLADE_FALSE= fi if test -n "$export_dynamic"; then LIBGLADE_LIBS=`echo $LIBGLADE_LIBS | sed -e "s/$export_dynamic//"` fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTKUNIXPRINT" >&5 $as_echo_n "checking for GTKUNIXPRINT... " >&6; } if test -n "$GTKUNIXPRINT_CFLAGS"; then pkg_cv_GTKUNIXPRINT_CFLAGS="$GTKUNIXPRINT_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-unix-print-2.0 >= 2.9.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-unix-print-2.0 >= 2.9.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTKUNIXPRINT_CFLAGS=`$PKG_CONFIG --cflags "gtk+-unix-print-2.0 >= 2.9.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTKUNIXPRINT_LIBS"; then pkg_cv_GTKUNIXPRINT_LIBS="$GTKUNIXPRINT_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-unix-print-2.0 >= 2.9.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-unix-print-2.0 >= 2.9.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTKUNIXPRINT_LIBS=`$PKG_CONFIG --libs "gtk+-unix-print-2.0 >= 2.9.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTKUNIXPRINT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gtk+-unix-print-2.0 >= 2.9.0" 2>&1` else GTKUNIXPRINT_PKG_ERRORS=`$PKG_CONFIG --print-errors "gtk+-unix-print-2.0 >= 2.9.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTKUNIXPRINT_PKG_ERRORS" >&5 have_gtkunixprint=false elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_gtkunixprint=false else GTKUNIXPRINT_CFLAGS=$pkg_cv_GTKUNIXPRINT_CFLAGS GTKUNIXPRINT_LIBS=$pkg_cv_GTKUNIXPRINT_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_gtkunixprint=true fi if $have_gtkunixprint; then BUILD_GTKUNIXPRINT_TRUE= BUILD_GTKUNIXPRINT_FALSE='#' else BUILD_GTKUNIXPRINT_TRUE='#' BUILD_GTKUNIXPRINT_FALSE= fi if test -n "$export_dynamic"; then GTKUNIXPRINT_LIBS=`echo $GTKUNIXPRINT_LIBS | sed -e "s/$export_dynamic//"` fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: not checking for gtk due to missing pycairo" >&5 $as_echo "not checking for gtk due to missing pycairo" >&6; } if false; then BUILD_PANGOCAIRO_TRUE= BUILD_PANGOCAIRO_FALSE='#' else BUILD_PANGOCAIRO_TRUE='#' BUILD_PANGOCAIRO_FALSE= fi if false; then BUILD_GTK_TRUE= BUILD_GTK_FALSE='#' else BUILD_GTK_TRUE='#' BUILD_GTK_FALSE= fi if false; then HAVE_GTK_2_10_TRUE= HAVE_GTK_2_10_FALSE='#' else HAVE_GTK_2_10_TRUE='#' HAVE_GTK_2_10_FALSE= fi if false; then HAVE_GTK_2_12_TRUE= HAVE_GTK_2_12_FALSE='#' else HAVE_GTK_2_12_TRUE='#' HAVE_GTK_2_12_FALSE= fi if false; then HAVE_GTK_2_14_TRUE= HAVE_GTK_2_14_FALSE='#' else HAVE_GTK_2_14_TRUE='#' HAVE_GTK_2_14_FALSE= fi if false; then HAVE_GTK_2_16_TRUE= HAVE_GTK_2_16_FALSE='#' else HAVE_GTK_2_16_TRUE='#' HAVE_GTK_2_16_FALSE= fi if false; then HAVE_GTK_2_18_TRUE= HAVE_GTK_2_18_FALSE='#' else HAVE_GTK_2_18_TRUE='#' HAVE_GTK_2_18_FALSE= fi if false; then HAVE_GTK_2_20_TRUE= HAVE_GTK_2_20_FALSE='#' else HAVE_GTK_2_20_TRUE='#' HAVE_GTK_2_20_FALSE= fi if false; then HAVE_GTK_2_22_TRUE= HAVE_GTK_2_22_FALSE='#' else HAVE_GTK_2_22_TRUE='#' HAVE_GTK_2_22_FALSE= fi if false; then HAVE_GTK_2_24_TRUE= HAVE_GTK_2_24_FALSE='#' else HAVE_GTK_2_24_TRUE='#' HAVE_GTK_2_24_FALSE= fi if false; then BUILD_LIBGLADE_TRUE= BUILD_LIBGLADE_FALSE='#' else BUILD_LIBGLADE_TRUE='#' BUILD_LIBGLADE_FALSE= fi if false; then BUILD_GTKUNIXPRINT_TRUE= BUILD_GTKUNIXPRINT_FALSE='#' else BUILD_GTKUNIXPRINT_TRUE='#' BUILD_GTKUNIXPRINT_FALSE= fi have_pangocairo=false have_gtk=false have_libglade=false have_gtkunixprint=false fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GDK target" >&5 $as_echo_n "checking for GDK target... " >&6; } gdk_target=`$PKG_CONFIG --variable target gdk-2.0` if test -z $gdk_target; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: (unknown)" >&5 $as_echo "(unknown)" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unable to determine the GDK target system; some functions may not be available" >&5 $as_echo "$as_me: WARNING: unable to determine the GDK target system; some functions may not be available" >&2;} else { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdk_target" >&5 $as_echo "$gdk_target" >&6; } fi case $gdk_target in x11) PYGTK_CODEGEN_DEFINES="$PYGTK_CODEGEN_DEFINES -DGDK_TARGET_X11" ;; esac # Check whether --enable-numpy was given. if test "${enable_numpy+set}" = set; then : enableval=$enable_numpy; else enable_numpy=yes fi if test "x$enable_numpy" != xno; then save_CPPFLAGS="$CPPFLAGS" numpy_INCLUDES=`$PYTHON -c "import numpy; print numpy.get_include()" 2> /dev/null` if test "x$numpy_INCLUDES" = "x"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not find a valid numpy installation, disabling." >&5 $as_echo "$as_me: WARNING: Could not find a valid numpy installation, disabling." >&2;} enable_numpy=no else CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES -I$numpy_INCLUDES" ac_fn_c_check_header_compile "$LINENO" "numpy/arrayobject.h" "ac_cv_header_numpy_arrayobject_h" "#include " if test "x$ac_cv_header_numpy_arrayobject_h" = x""yes; then : $as_echo "#define HAVE_NUMPY /**/" >>confdefs.h else enable_numpy=no fi if test "x$enable_numpy" != "xno"; then CPPFLAGS="$save_CPPFLAGS -I$numpy_INCLUDES" fi fi fi if test "x$GCC" = "xyes"; then case " $CFLAGS " in *[\ \ ]-Wall[\ \ ]*) ;; *) save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Wall" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -Wall" >&5 $as_echo_n "checking whether $CC understands -Wall... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : jh_has_option=yes else jh_has_option=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $jh_has_option" >&5 $as_echo "$jh_has_option" >&6; } if test $jh_has_option = no; then CFLAGS="$save_CFLAGS" fi ;; esac case " $CFLAGS " in *[\ \ ]-fno-strict-aliasing[\ \ ]*) ;; *) save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fno-strict-aliasing" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -fno-strict-aliasing" >&5 $as_echo_n "checking whether $CC understands -fno-strict-aliasing... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : jh_has_option=yes else jh_has_option=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $jh_has_option" >&5 $as_echo "$jh_has_option" >&6; } if test $jh_has_option = no; then CFLAGS="$save_CFLAGS" fi ;; esac case $host_os in solaris*) ;; *) case " $CFLAGS " in *[\ \ ]-std=c9x[\ \ ]*) ;; *) save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -std=c9x" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -std=c9x" >&5 $as_echo_n "checking whether $CC understands -std=c9x... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : jh_has_option=yes else jh_has_option=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $jh_has_option" >&5 $as_echo "$jh_has_option" >&6; } if test $jh_has_option = no; then CFLAGS="$save_CFLAGS" fi ;; esac ;; esac fi ac_config_files="$ac_config_files Makefile pygtk-2.0.pc pygtk-codegen-2.0 gtk/Makefile docs/Makefile docs/reference/entities.docbook examples/Makefile tests/Makefile pygtk.spec PKG-INFO" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then test "x$cache_file" != "x/dev/null" && { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${PLATFORM_WIN32_TRUE}" && test -z "${PLATFORM_WIN32_FALSE}"; then as_fn_error $? "conditional \"PLATFORM_WIN32\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${OS_WIN32_TRUE}" && test -z "${OS_WIN32_FALSE}"; then as_fn_error $? "conditional \"OS_WIN32\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_DOCS_TRUE}" && test -z "${ENABLE_DOCS_FALSE}"; then as_fn_error $? "conditional \"ENABLE_DOCS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GIO_TYPES_DEFS_TRUE}" && test -z "${HAVE_GIO_TYPES_DEFS_FALSE}"; then as_fn_error $? "conditional \"HAVE_GIO_TYPES_DEFS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GIO_TYPES_DEFS_TRUE}" && test -z "${HAVE_GIO_TYPES_DEFS_FALSE}"; then as_fn_error $? "conditional \"HAVE_GIO_TYPES_DEFS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${BUILD_ATK_TRUE}" && test -z "${BUILD_ATK_FALSE}"; then as_fn_error $? "conditional \"BUILD_ATK\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${BUILD_PANGO_TRUE}" && test -z "${BUILD_PANGO_FALSE}"; then as_fn_error $? "conditional \"BUILD_PANGO\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${BUILD_PANGOCAIRO_TRUE}" && test -z "${BUILD_PANGOCAIRO_FALSE}"; then as_fn_error $? "conditional \"BUILD_PANGOCAIRO\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${BUILD_GTK_TRUE}" && test -z "${BUILD_GTK_FALSE}"; then as_fn_error $? "conditional \"BUILD_GTK\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GTK_2_10_TRUE}" && test -z "${HAVE_GTK_2_10_FALSE}"; then as_fn_error $? "conditional \"HAVE_GTK_2_10\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GTK_2_12_TRUE}" && test -z "${HAVE_GTK_2_12_FALSE}"; then as_fn_error $? "conditional \"HAVE_GTK_2_12\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GTK_2_14_TRUE}" && test -z "${HAVE_GTK_2_14_FALSE}"; then as_fn_error $? "conditional \"HAVE_GTK_2_14\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GTK_2_16_TRUE}" && test -z "${HAVE_GTK_2_16_FALSE}"; then as_fn_error $? "conditional \"HAVE_GTK_2_16\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GTK_2_18_TRUE}" && test -z "${HAVE_GTK_2_18_FALSE}"; then as_fn_error $? "conditional \"HAVE_GTK_2_18\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GTK_2_20_TRUE}" && test -z "${HAVE_GTK_2_20_FALSE}"; then as_fn_error $? "conditional \"HAVE_GTK_2_20\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GTK_2_22_TRUE}" && test -z "${HAVE_GTK_2_22_FALSE}"; then as_fn_error $? "conditional \"HAVE_GTK_2_22\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GTK_2_24_TRUE}" && test -z "${HAVE_GTK_2_24_FALSE}"; then as_fn_error $? "conditional \"HAVE_GTK_2_24\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${BUILD_LIBGLADE_TRUE}" && test -z "${BUILD_LIBGLADE_FALSE}"; then as_fn_error $? "conditional \"BUILD_LIBGLADE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${BUILD_GTKUNIXPRINT_TRUE}" && test -z "${BUILD_GTKUNIXPRINT_FALSE}"; then as_fn_error $? "conditional \"BUILD_GTKUNIXPRINT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${BUILD_PANGOCAIRO_TRUE}" && test -z "${BUILD_PANGOCAIRO_FALSE}"; then as_fn_error $? "conditional \"BUILD_PANGOCAIRO\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${BUILD_GTK_TRUE}" && test -z "${BUILD_GTK_FALSE}"; then as_fn_error $? "conditional \"BUILD_GTK\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GTK_2_10_TRUE}" && test -z "${HAVE_GTK_2_10_FALSE}"; then as_fn_error $? "conditional \"HAVE_GTK_2_10\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GTK_2_12_TRUE}" && test -z "${HAVE_GTK_2_12_FALSE}"; then as_fn_error $? "conditional \"HAVE_GTK_2_12\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GTK_2_14_TRUE}" && test -z "${HAVE_GTK_2_14_FALSE}"; then as_fn_error $? "conditional \"HAVE_GTK_2_14\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GTK_2_16_TRUE}" && test -z "${HAVE_GTK_2_16_FALSE}"; then as_fn_error $? "conditional \"HAVE_GTK_2_16\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GTK_2_18_TRUE}" && test -z "${HAVE_GTK_2_18_FALSE}"; then as_fn_error $? "conditional \"HAVE_GTK_2_18\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GTK_2_20_TRUE}" && test -z "${HAVE_GTK_2_20_FALSE}"; then as_fn_error $? "conditional \"HAVE_GTK_2_20\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GTK_2_22_TRUE}" && test -z "${HAVE_GTK_2_22_FALSE}"; then as_fn_error $? "conditional \"HAVE_GTK_2_22\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GTK_2_24_TRUE}" && test -z "${HAVE_GTK_2_24_FALSE}"; then as_fn_error $? "conditional \"HAVE_GTK_2_24\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${BUILD_LIBGLADE_TRUE}" && test -z "${BUILD_LIBGLADE_FALSE}"; then as_fn_error $? "conditional \"BUILD_LIBGLADE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${BUILD_GTKUNIXPRINT_TRUE}" && test -z "${BUILD_GTKUNIXPRINT_FALSE}"; then as_fn_error $? "conditional \"BUILD_GTKUNIXPRINT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : ${CONFIG_STATUS=./config.status} ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by pygtk $as_me 2.24.0, which was generated by GNU Autoconf 2.67. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ pygtk config.status 2.24.0 configured by $0, generated by GNU Autoconf 2.67, with options \\"\$ac_cs_config\\" Copyright (C) 2010 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' AS='`$ECHO "X$AS" | $Xsed -e "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "X$DLLTOOL" | $Xsed -e "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`' macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # Quote evaled strings. for var in SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ deplibs_check_method \ file_magic_cmd \ AR \ AR_FLAGS \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ SHELL \ ECHO \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_wl \ lt_prog_compiler_pic \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ fix_srcfile_path \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ finish_eval \ old_striplib \ striplib; do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec; do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Fix-up fallback echo if it was mangled by the above quoting rules. case \$lt_ECHO in *'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` ;; esac ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' ac_aux_dir='$ac_aux_dir' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "pygtk-2.0.pc") CONFIG_FILES="$CONFIG_FILES pygtk-2.0.pc" ;; "pygtk-codegen-2.0") CONFIG_FILES="$CONFIG_FILES pygtk-codegen-2.0" ;; "gtk/Makefile") CONFIG_FILES="$CONFIG_FILES gtk/Makefile" ;; "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;; "docs/reference/entities.docbook") CONFIG_FILES="$CONFIG_FILES docs/reference/entities.docbook" ;; "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; "pygtk.spec") CONFIG_FILES="$CONFIG_FILES pygtk.spec" ;; "PKG-INFO") CONFIG_FILES="$CONFIG_FILES PKG-INFO" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= trap 'exit_status=$? { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_t=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_t"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5 ;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5 ;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$tmp/stdin" case $ac_file in -) cat "$tmp/out" && rm -f "$tmp/out";; *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" } >"$tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "libtool":C) # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. available_tags="" # ### BEGIN LIBTOOL CONFIG # Whether or not to build static libraries. build_old_libs=$enable_static # Assembler program. AS=$AS # DLL creation program. DLLTOOL=$DLLTOOL # Object dumper program. OBJDUMP=$OBJDUMP # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == "file_magic". file_magic_cmd=$lt_file_magic_cmd # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name of the directory that contains temporary libtool files. objdir=$objdir # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that does not interpret backslashes. ECHO=$lt_ECHO # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # If ld is used when linking, flag to hardcode \$libdir into a binary # during linking. This must work even if \$libdir does not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain="$ac_aux_dir/ltmain.sh" # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) case $xsi_shell in yes) cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac } # func_basename file func_basename () { func_basename_result="${1##*/}" } # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}" } # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). func_stripname () { # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"} } # func_opt_split func_opt_split () { func_opt_split_opt=${1%%=*} func_opt_split_arg=${1#*=} } # func_lo2o object func_lo2o () { case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac } # func_xform libobj-or-source func_xform () { func_xform_result=${1%.*}.lo } # func_arith arithmetic-term... func_arith () { func_arith_result=$(( $* )) } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=${#1} } _LT_EOF ;; *) # Bourne compatible functions. cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_basename file func_basename () { func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; esac } # sed scripts: my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' my_sed_long_arg='1s/^-[^=]*=//' # func_opt_split func_opt_split () { func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` } # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` } # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` } # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "$@"` } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } _LT_EOF esac case $lt_shell_append in yes) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$1+=\$2" } _LT_EOF ;; *) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$1=\$$1\$2" } _LT_EOF ;; esac sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi echo echo "The following modules will be built:" echo $have_atk && echo atk $have_pango && echo pango $have_pangocairo && echo pangocairo $have_gtk && echo gtk with $gtk_version API $have_libglade && echo gtk.glade $have_gtkunixprint && echo gtk.unixprint if test ! $have_atk || ! $have_pango || \ ! $have_gtk || ! $have_libglade || \ ! $have_pangocairo || ! $have_gtkunixprint; then echo echo "The following modules will NOT be built:" echo $have_atk || echo atk $have_pango || echo pango $have_pangocairo || echo pangocairo $have_gtk || echo gtk $have_libglade || echo gtk.glade $have_gtkunixprint || echo gtk.unixprint fi echo echo "Numpy support: $enable_numpy" echo pygtk-2.24.0/ltmain.sh0000755000175000017500000073341511545325665011532 00000000000000# Generated from ltmain.m4sh. # ltmain.sh (GNU libtool) 2.2.6b # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, # or obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Usage: $progname [OPTION]... [MODE-ARG]... # # Provide generalized library-building support services. # # --config show all configuration variables # --debug enable verbose shell tracing # -n, --dry-run display commands without modifying any files # --features display basic configuration information and exit # --mode=MODE use operation mode MODE # --preserve-dup-deps don't remove duplicate dependency libraries # --quiet, --silent don't print informational messages # --tag=TAG use configuration variables from tag TAG # -v, --verbose print informational messages (default) # --version print version information # -h, --help print short or long help message # # MODE must be one of the following: # # clean remove files from the build directory # compile compile a source file into a libtool object # execute automatically set library path, then run a program # finish complete the installation of libtool libraries # install install libraries or executables # link create a library or an executable # uninstall remove libraries from an installed directory # # MODE-ARGS vary depending on the MODE. # Try `$progname --help --mode=MODE' for a more detailed description of MODE. # # When reporting a bug, please describe a test case to reproduce it and # include the following information: # # host-triplet: $host # shell: $SHELL # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) # $progname: (GNU libtool) 2.2.6b Debian-2.2.6b-2ubuntu1 # automake: $automake_version # autoconf: $autoconf_version # # Report bugs to . PROGRAM=ltmain.sh PACKAGE=libtool VERSION="2.2.6b Debian-2.2.6b-2ubuntu1" TIMESTAMP="" package_revision=1.3017 # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # NLS nuisances: We save the old values to restore during execute mode. # Only set LANG and LC_ALL to C if already set. # These must not be set unconditionally because not all systems understand # e.g. LANG=C (notably SCO). lt_user_locale= lt_safe_locale= for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${$lt_var+set}\" = set; then save_$lt_var=\$$lt_var $lt_var=C export $lt_var lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done $lt_unset CDPATH : ${CP="cp -f"} : ${ECHO="echo"} : ${EGREP="/bin/grep -E"} : ${FGREP="/bin/grep -F"} : ${GREP="/bin/grep"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SED="/bin/sed"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. exit_status=$EXIT_SUCCESS # Make sure IFS has a sensible default lt_nl=' ' IFS=" $lt_nl" dirname="s,/[^/]*$,," basename="s,^.*/,," # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } # Generated shell functions inserted here. # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" # The name of this program: # In the unlikely event $progname began with a '-', it would play havoc with # func_echo (imagine progname=-n), so we prepend ./ in that case: func_dirname_and_basename "$progpath" progname=$func_basename_result case $progname in -*) progname=./$progname ;; esac # Make sure we have an absolute path for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=$func_dirname_result progdir=`cd "$progdir" && pwd` progpath="$progdir/$progname" ;; *) save_IFS="$IFS" IFS=: for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break done IFS="$save_IFS" test -n "$progdir" || progdir=`pwd` progpath="$progdir/$progname" ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed="${SED}"' -e 1s/^X//' sed_quote_subst='s/\([`"$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Re-`\' parameter expansions in output of double_quote_subst that were # `\'-ed in input to the same. If an odd number of `\' preceded a '$' # in input to double_quote_subst, that '$' was protected from expansion. # Since each input `\' is now two `\'s, look for any number of runs of # four `\'s followed by two `\'s and then a '$'. `\' that '$'. bs='\\' bs2='\\\\' bs4='\\\\\\\\' dollar='\$' sed_double_backslash="\ s/$bs4/&\\ /g s/^$bs2$dollar/$bs&/ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g s/\n//g" # Standard options: opt_dry_run=false opt_help=false opt_quiet=false opt_verbose=false opt_warning=: # func_echo arg... # Echo program name prefixed message, along with the current mode # name if it has been set yet. func_echo () { $ECHO "$progname${mode+: }$mode: $*" } # func_verbose arg... # Echo program name prefixed message in verbose mode only. func_verbose () { $opt_verbose && func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_error arg... # Echo program name prefixed message to standard error. func_error () { $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 } # func_warning arg... # Echo program name prefixed warning message to standard error. func_warning () { $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 # bash bug again: : } # func_fatal_error arg... # Echo program name prefixed message to standard error, and exit. func_fatal_error () { func_error ${1+"$@"} exit $EXIT_FAILURE } # func_fatal_help arg... # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { func_error ${1+"$@"} func_fatal_error "$help" } help="Try \`$progname --help' for more information." ## default # func_grep expression filename # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $GREP "$1" "$2" >/dev/null 2>&1 } # func_mkdir_p directory-path # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { my_directory_path="$1" my_dir_list= if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then # Protect directory names starting with `-' case $my_directory_path in -*) my_directory_path="./$my_directory_path" ;; esac # While some portion of DIR does not yet exist... while test ! -d "$my_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. my_dir_list="$my_directory_path:$my_dir_list" # If the last portion added has no slash in it, the list is done case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` done my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do IFS="$save_mkdir_p_IFS" # mkdir can fail with a `File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$my_dir" 2>/dev/null || : done IFS="$save_mkdir_p_IFS" # Bail out if we (or some other process) failed to create a directory. test -d "$my_directory_path" || \ func_fatal_error "Failed to create \`$1'" fi } # func_mktempdir [string] # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, STRING is the basename for that directory. func_mktempdir () { my_template="${TMPDIR-/tmp}/${1-$progname}" if test "$opt_dry_run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else # If mktemp works, use that first and foremost my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race my_tmpdir="${my_template}-${RANDOM-0}$$" save_mktempdir_umask=`umask` umask 0077 $MKDIR "$my_tmpdir" umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$my_tmpdir" || \ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi $ECHO "X$my_tmpdir" | $Xsed } # func_quote_for_eval arg # Aesthetically quote ARG to be evaled later. # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT # is double-quoted, suitable for a subsequent eval, whereas # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters # which are still active within double quotes backslashified. func_quote_for_eval () { case $1 in *[\\\`\"\$]*) func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac case $func_quote_for_eval_unquoted_result in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and and variable # expansion for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" ;; *) func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" esac } # func_quote_for_expand arg # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { case $1 in *[\\\`\"]*) my_arg=`$ECHO "X$1" | $Xsed \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; esac case $my_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") my_arg="\"$my_arg\"" ;; esac func_quote_for_expand_result="$my_arg" } # func_show_eval cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$my_cmd" my_status=$? if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_show_eval_locale cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$lt_user_locale $my_cmd" my_status=$? eval "$lt_safe_locale" if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_version # Echo version message to standard output and exit. func_version () { $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { s/^# // s/^# *$// s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ p }' < "$progpath" exit $? } # func_usage # Echo short help message to standard output and exit. func_usage () { $SED -n '/^# Usage:/,/# -h/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" $ECHO $ECHO "run \`$progname --help | more' for full usage" exit $? } # func_help # Echo long help message to standard output and exit. func_help () { $SED -n '/^# Usage:/,/# Report bugs to/ { s/^# // s/^# *$// s*\$progname*'$progname'* s*\$host*'"$host"'* s*\$SHELL*'"$SHELL"'* s*\$LTCC*'"$LTCC"'* s*\$LTCFLAGS*'"$LTCFLAGS"'* s*\$LD*'"$LD"'* s/\$with_gnu_ld/'"$with_gnu_ld"'/ s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ p }' < "$progpath" exit $? } # func_missing_arg argname # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { func_error "missing argument for $1" exit_cmd=exit } exit_cmd=: # Check that we have a working $ECHO. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then # Yippee, $ECHO works! : else # Restart under the correct shell, and then maybe $ECHO will work. exec $SHELL "$progpath" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # Parse options once, thoroughly. This comes as soon as possible in # the script to make things like `libtool --version' happen quickly. { # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Parse non-mode specific arguments: while test "$#" -gt 0; do opt="$1" shift case $opt in --config) func_config ;; --debug) preserve_args="$preserve_args $opt" func_echo "enabling shell trace mode" opt_debug='set -x' $opt_debug ;; -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break execute_dlfiles="$execute_dlfiles $1" shift ;; --dry-run | -n) opt_dry_run=: ;; --features) func_features ;; --finish) mode="finish" ;; --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break case $1 in # Valid mode arguments: clean) ;; compile) ;; execute) ;; finish) ;; install) ;; link) ;; relink) ;; uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $opt" exit_cmd=exit break ;; esac mode="$1" shift ;; --preserve-dup-deps) opt_duplicate_deps=: ;; --quiet|--silent) preserve_args="$preserve_args $opt" opt_silent=: ;; --verbose| -v) preserve_args="$preserve_args $opt" opt_silent=false ;; --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break preserve_args="$preserve_args $opt $1" func_enable_tag "$1" # tagname is set here shift ;; # Separate optargs to long options: -dlopen=*|--mode=*|--tag=*) func_opt_split "$opt" set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} shift ;; -\?|-h) func_usage ;; --help) opt_help=: ;; --version) func_version ;; -*) func_fatal_help "unrecognized option \`$opt'" ;; *) nonopt="$opt" break ;; esac done case $host in *cygwin* | *mingw* | *pw32* | *cegcc*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_duplicate_deps ;; esac # Having warned about all mis-specified options, bail out if # anything was wrong. $exit_cmd $EXIT_FAILURE } # func_check_version_match # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } ## ----------- ## ## Main. ## ## ----------- ## $opt_help || { # Sanity checks first: func_check_version_match if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then func_fatal_configuration "not configured to build any kind of library" fi test -z "$mode" && func_fatal_error "error: you must specify a MODE." # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$execute_dlfiles" && test "$mode" != execute; then func_error "unrecognized option \`-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$progname --help --mode=$mode' for more information." } # func_lalib_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null \ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_unsafe_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if `file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case "$lalib_p_line" in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test "$lalib_p" = yes } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { func_lalib_p "$1" } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_ltwrapper_scriptname_result="" if func_ltwrapper_executable_p "$1"; then func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" fi } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $opt_debug save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$save_ifs eval cmd=\"$cmd\" func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # `FILE.' does not work on cygwin managed mounts. func_source () { $opt_debug case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $opt_debug if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_quote_for_eval "$arg" CC_quoted="$CC_quoted $func_quote_for_eval_result" done case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_quote_for_eval "$arg" CC_quoted="$CC_quoted $func_quote_for_eval_result" done case "$@ " in " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with \`--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=${1} if test "$build_libtool_libs" = yes; then write_lobj=\'${2}\' else write_lobj=none fi if test "$build_old_libs" = yes; then write_oldobj=\'${3}\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T <?"'"'"' &()|`$[]' \ && func_warning "libobj name \`$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname="$func_basename_result" xdir="$func_dirname_result" lobj=${xdir}$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi removelist="$removelist $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist removelist="$removelist $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir command="$command -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test "$suppress_opt" = yes; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then command="$command -o $obj" fi # Suppress compiler output if we already did a PIC compilation. command="$command$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test "$need_locks" != no; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test "$mode" = compile && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to building PIC objects only -prefer-non-pic try to building non-PIC objects only -shared do not build a \`.o' file suitable for static linking -static only build a \`.o' file suitable for static linking COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode \`$mode'" ;; esac $ECHO $ECHO "Try \`$progname --help' for more information about other modes." exit $? } # Now that we've collected a possible --mode arg, show help if necessary $opt_help && func_mode_help # func_mode_execute arg... func_mode_execute () { $opt_debug # The first argument is the command name. cmd="$nonopt" test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $execute_dlfiles; do test -f "$file" \ || func_fatal_help "\`$file' is not a file" dir= case $file in *.la) # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "\`$file' was not linked with \`-export-dynamic'" continue fi func_dirname "$file" "" "." dir="$func_dirname_result" if test -f "$dir/$objdir/$dlname"; then dir="$dir/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir="$func_dirname_result" ;; *) func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -*) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file="$progdir/$program" elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). func_quote_for_eval "$file" args="$args $func_quote_for_eval_result" done if test "X$opt_dry_run" = Xfalse; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" $ECHO "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS fi } test "$mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $opt_debug libdirs="$nonopt" admincmds= if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for dir do libdirs="$libdirs $dir" done for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || admincmds="$admincmds $cmds" fi done fi # Exit here if they wanted silent mode. $opt_silent && exit $EXIT_SUCCESS $ECHO "X----------------------------------------------------------------------" | $Xsed $ECHO "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done $ECHO $ECHO "If you ever happen to want to link against installed libraries" $ECHO "in a given directory, LIBDIR, you must either use libtool, and" $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" $ECHO "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" $ECHO " during execution" fi if test -n "$runpath_var"; then $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" $ECHO " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi $ECHO $ECHO "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" $ECHO "pages." ;; *) $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac $ECHO "X----------------------------------------------------------------------" | $Xsed exit $EXIT_SUCCESS } test "$mode" = finish && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $opt_debug # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. $ECHO "X$nonopt" | $GREP shtool >/dev/null; then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" install_prog="$install_prog$func_quote_for_eval_result" # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= for arg do if test -n "$dest"; then files="$files $dest" dest=$arg continue fi case $arg in -d) isdir=yes ;; -f) case " $install_prog " in *[\\\ /]cp\ *) ;; *) prev=$arg ;; esac ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" install_prog="$install_prog $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the \`$prev' option requires an argument" if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else func_dirname_and_basename "$dest" "" "." destdir="$func_dirname_result" destname="$func_basename_result" # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "\`$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "\`$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. staticlibs="$staticlibs $file" ;; *.la) # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) current_libdirs="$current_libdirs $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) future_libdirs="$future_libdirs $libdir" ;; esac fi func_dirname "$file" "/" "" dir="$func_dirname_result" dir="$dir$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` fi func_warning "relinking \`$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname="$1" shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme="$stripme" case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme="" ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try `ln -sf' first, because the `ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib="$destdir/$realname" func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name="$func_basename_result" instname="$dir/$name"i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest="$destfile" destfile= ;; *) func_fatal_help "cannot copy a libtool object to \`$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script \`$wrapper'" finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then func_warning "\`$lib' has not been installed in \`$libdir'" finalize=no fi done relink_command= func_source "$wrapper" outputname= if test "$fast_install" = no && test -n "$relink_command"; then $opt_dry_run || { if test "$finalize" = yes; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file="$func_basename_result" outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` $opt_silent || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink \`$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file="$outputname" else func_warning "cannot relink \`$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name="$func_basename_result" # Set up the ranlib parameters. oldlib="$destdir/$name" func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run \`$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test "$mode" = install && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $opt_debug my_outputname="$1" my_originator="$2" my_pic_p="${3-no}" my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms="${my_outputname}S.c" else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${my_outputname}.nm" func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then func_verbose "generating symbol list for \`$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` for progfile in $progfiles; do func_verbose "extracting global C symbols from \`$progfile'" $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$outputname.exp" $opt_dry_run || { $RM $export_symbols eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from \`$dlprefile'" func_basename "$dlprefile" name="$func_basename_result" $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" } done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" fi $ECHO >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; " case $host in *cygwin* | *mingw* | *cegcc* ) $ECHO >> "$output_objdir/$my_dlsyms" "\ /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */" lt_dlsym_const= ;; *osf5*) echo >> "$output_objdir/$my_dlsyms" "\ /* This system does not cope well with relocations in const data */" lt_dlsym_const= ;; *) lt_dlsym_const=const ;; esac $ECHO >> "$output_objdir/$my_dlsyms" "\ extern $lt_dlsym_const lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[]; $lt_dlsym_const lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = {\ { \"$my_originator\", (void *) 0 }," case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac $ECHO >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) if test "X$my_pic_p" != Xno; then pic_flag_for_symtable=" $pic_flag" fi ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) symtab_cflags="$symtab_cflags $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' # Transform the symbol file into the correct name. symfileobj="$output_objdir/${my_outputname}S.$objext" case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for \`$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` fi } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. func_win32_libid () { $opt_debug win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then win32_nmres=`eval $NM -f posix -A $1 | $SED -n -e ' 1,100{ / I /{ s,.*,import, p q } }'` case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_extract_an_archive dir oldlib func_extract_an_archive () { $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $opt_debug my_gentop="$1"; shift my_oldlibs=${1+"$@"} my_oldobjs="" my_xlib="" my_xabs="" my_xdir="" for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib="$func_basename_result" my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir="$my_gentop/$my_xlib_u" func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` darwin_base_archive=`basename "$darwin_archive"` darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches ; do func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" func_extract_an_archive "`pwd`" "${darwin_base_archive}" cd "$darwin_curdir" $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # func_emit_wrapper_part1 [arg=no] # # Emit the first part of a libtool wrapper script on stdout. # For more information, see the description associated with # func_emit_wrapper(), below. func_emit_wrapper_part1 () { func_emit_wrapper_part1_arg1=no if test -n "$1" ; then func_emit_wrapper_part1_arg1=$1 fi $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='${SED} -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then ECHO=\"$qecho\" file=\"\$0\" # Make sure echo works. if test \"X\$1\" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then # Yippee, \$ECHO works! : else # Restart under the correct shell, and then maybe \$ECHO will work. exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} fi fi\ " $ECHO "\ # Find the directory that this script lives in. thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` done " } # end: func_emit_wrapper_part1 # func_emit_wrapper_part2 [arg=no] # # Emit the second part of a libtool wrapper script on stdout. # For more information, see the description associated with # func_emit_wrapper(), below. func_emit_wrapper_part2 () { func_emit_wrapper_part2_arg1=no if test -n "$1" ; then func_emit_wrapper_part2_arg1=$1 fi $ECHO "\ # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` export $shlibpath_var " fi # fixup the dll searchpath if we need to. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 fi else # The program doesn't exist. \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # end: func_emit_wrapper_part2 # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory in which it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=no if test -n "$1" ; then func_emit_wrapper_arg1=$1 fi # split this up so that func_emit_cwrapperexe_src # can call each part independently. func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" } # func_to_host_path arg # # Convert paths to host format when used with build tools. # Intended for use with "native" mingw (where libtool itself # is running under the msys shell), or in the following cross- # build environments: # $build $host # mingw (msys) mingw [e.g. native] # cygwin mingw # *nix + wine mingw # where wine is equipped with the `winepath' executable. # In the native mingw case, the (msys) shell automatically # converts paths for any non-msys applications it launches, # but that facility isn't available from inside the cwrapper. # Similar accommodations are necessary for $host mingw and # $build cygwin. Calling this function does no harm for other # $host/$build combinations not listed above. # # ARG is the path (on $build) that should be converted to # the proper representation for $host. The result is stored # in $func_to_host_path_result. func_to_host_path () { func_to_host_path_result="$1" if test -n "$1" ; then case $host in *mingw* ) lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' case $build in *mingw* ) # actually, msys # awkward: cmd appends spaces to result lt_sed_strip_trailing_spaces="s/[ ]*\$//" func_to_host_path_tmp1=`( cmd //c echo "$1" |\ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ $SED -e "$lt_sed_naive_backslashify"` ;; *cygwin* ) func_to_host_path_tmp1=`cygpath -w "$1"` func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ $SED -e "$lt_sed_naive_backslashify"` ;; * ) # Unfortunately, winepath does not exit with a non-zero # error code, so we are forced to check the contents of # stdout. On the other hand, if the command is not # found, the shell will set an exit code of 127 and print # *an error message* to stdout. So we must check for both # error code of zero AND non-empty stdout, which explains # the odd construction: func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ $SED -e "$lt_sed_naive_backslashify"` else # Allow warning below. func_to_host_path_result="" fi ;; esac if test -z "$func_to_host_path_result" ; then func_error "Could not determine host path corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_path_result="$1" fi ;; esac fi } # end: func_to_host_path # func_to_host_pathlist arg # # Convert pathlists to host format when used with build tools. # See func_to_host_path(), above. This function supports the # following $build/$host combinations (but does no harm for # combinations not listed here): # $build $host # mingw (msys) mingw [e.g. native] # cygwin mingw # *nix + wine mingw # # Path separators are also converted from $build format to # $host format. If ARG begins or ends with a path separator # character, it is preserved (but converted to $host format) # on output. # # ARG is a pathlist (on $build) that should be converted to # the proper representation on $host. The result is stored # in $func_to_host_pathlist_result. func_to_host_pathlist () { func_to_host_pathlist_result="$1" if test -n "$1" ; then case $host in *mingw* ) lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_to_host_pathlist_tmp2="$1" # Once set for this call, this variable should not be # reassigned. It is used in tha fallback case. func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ $SED -e 's|^:*||' -e 's|:*$||'` case $build in *mingw* ) # Actually, msys. # Awkward: cmd appends spaces to result. lt_sed_strip_trailing_spaces="s/[ ]*\$//" func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ $SED -e "$lt_sed_naive_backslashify"` ;; *cygwin* ) func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ $SED -e "$lt_sed_naive_backslashify"` ;; * ) # unfortunately, winepath doesn't convert pathlists func_to_host_pathlist_result="" func_to_host_pathlist_oldIFS=$IFS IFS=: for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do IFS=$func_to_host_pathlist_oldIFS if test -n "$func_to_host_pathlist_f" ; then func_to_host_path "$func_to_host_pathlist_f" if test -n "$func_to_host_path_result" ; then if test -z "$func_to_host_pathlist_result" ; then func_to_host_pathlist_result="$func_to_host_path_result" else func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" fi fi fi IFS=: done IFS=$func_to_host_pathlist_oldIFS ;; esac if test -z "$func_to_host_pathlist_result" ; then func_error "Could not determine the host path(s) corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This may break if $1 contains DOS-style drive # specifications. The fix is not to complicate the expression # below, but for the user to provide a working wine installation # with winepath so that path translation in the cross-to-mingw # case works properly. lt_replace_pathsep_nix_to_dos="s|:|;|g" func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ $SED -e "$lt_replace_pathsep_nix_to_dos"` fi # Now, add the leading and trailing path separators back case "$1" in :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" ;; esac case "$1" in *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" ;; esac ;; esac fi } # end: func_to_host_pathlist # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include # define setmode _setmode #else # include # include # ifdef __CYGWIN__ # include # define HAVE_SETENV # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif # endif #endif #include #include #include #include #include #include #include #include #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif #ifdef _MSC_VER # define S_IXUSR _S_IEXEC # define stat _stat # ifndef _INTPTR_T_DEFINED # define intptr_t int # endif #endif #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifdef __CYGWIN__ # define FOPEN_WB "wb" #endif #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) #undef LTWRAPPER_DEBUGPRINTF #if defined DEBUGWRAPPER # define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args static void ltwrapper_debugprintf (const char *fmt, ...) { va_list args; va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } #else # define LTWRAPPER_DEBUGPRINTF(args) #endif const char *program_name = NULL; void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_fatal (const char *message, ...); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_opt_process_env_set (const char *arg); void lt_opt_process_env_prepend (const char *arg); void lt_opt_process_env_append (const char *arg); int lt_split_name_value (const char *arg, char** name, char** value); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); static const char *script_text_part1 = EOF func_emit_wrapper_part1 yes | $SED -e 's/\([\\"]\)/\\\1/g' \ -e 's/^/ "/' -e 's/$/\\n"/' echo ";" cat <"))); for (i = 0; i < newargc; i++) { LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : ""))); } EOF case $host_os in mingw*) cat <<"EOF" /* execv doesn't actually work on mingw as expected on unix */ rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); if (rval == -1) { /* failed to start process */ LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); return 127; } return rval; EOF ;; *) cat <<"EOF" execv (lt_argv_zero, newargz); return rval; /* =127, but avoids unused variable warning */ EOF ;; esac cat <<"EOF" } void * xmalloc (size_t num) { void *p = (void *) malloc (num); if (!p) lt_fatal ("Memory exhausted"); return p; } char * xstrdup (const char *string) { return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL; } const char * base_name (const char *name) { const char *base; #if defined (HAVE_DOS_BASED_FILE_SYSTEM) /* Skip over the disk name in MSDOS pathnames. */ if (isalpha ((unsigned char) name[0]) && name[1] == ':') name += 2; #endif for (base = name; *name; name++) if (IS_DIR_SEPARATOR (*name)) base = name + 1; return base; } int check_executable (const char *path) { struct stat st; LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!")); if ((!path) || (!*path)) return 0; if ((stat (path, &st) >= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!")); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; int tmp_len; char *concat_name; LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined (HAVE_DOS_BASED_FILE_SYSTEM) } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = q - p; p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal ("getcwd failed"); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal ("getcwd failed"); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", tmp_pathspec)); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { char *errstr = strerror (errno); lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal ("Could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (strcmp (str, pat) == 0) *str = '\0'; } return str; } static void lt_error_core (int exit_status, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s: %s: ", program_name, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, "FATAL", message, ap); va_end (ap); } void lt_setenv (const char *name, const char *value) { LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", (name ? name : ""), (value ? value : ""))); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else int len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { int orig_value_len = strlen (orig_value); int add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } int lt_split_name_value (const char *arg, char** name, char** value) { const char *p; int len; if (!arg || !*arg) return 1; p = strchr (arg, (int)'='); if (!p) return 1; *value = xstrdup (++p); len = strlen (arg) - strlen (*value); *name = XMALLOC (char, len); strncpy (*name, arg, len-1); (*name)[len - 1] = '\0'; return 0; } void lt_opt_process_env_set (const char *arg) { char *name = NULL; char *value = NULL; if (lt_split_name_value (arg, &name, &value) != 0) { XFREE (name); XFREE (value); lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); } lt_setenv (name, value); XFREE (name); XFREE (value); } void lt_opt_process_env_prepend (const char *arg) { char *name = NULL; char *value = NULL; char *new_value = NULL; if (lt_split_name_value (arg, &name, &value) != 0) { XFREE (name); XFREE (value); lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); } new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); XFREE (name); XFREE (value); } void lt_opt_process_env_append (const char *arg) { char *name = NULL; char *value = NULL; char *new_value = NULL; if (lt_split_name_value (arg, &name, &value) != 0) { XFREE (name); XFREE (value); lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); } new_value = lt_extend_str (getenv (name), value, 1); lt_setenv (name, new_value); XFREE (new_value); XFREE (name); XFREE (value); } void lt_update_exe_path (const char *name, const char *value) { LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", (name ? name : ""), (value ? value : ""))); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ int len = strlen (new_value); while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[len-1] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", (name ? name : ""), (value ? value : ""))); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF } # end: func_emit_cwrapperexe_src # func_mode_link arg... func_mode_link () { $opt_debug case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=no prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module="${wl}-single_module" func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" else dlprefiles="$dlprefiles $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" test -f "$arg" \ || func_fatal_error "symbol file \`$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) deplibs="$deplibs $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # moreargs="$moreargs $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file \`$arg' does not exist" fi arg=$save_arg prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) rpath="$rpath $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) xrpath="$xrpath $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds="$arg" prev= continue ;; weak) weak_libs="$weak_libs $arg" prev= continue ;; xcclinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) compiler_flags="$compiler_flags $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "\`-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname '-L' '' "$arg" dir=$func_stripname_result if test -z "$dir"; then if test "$#" -gt 0; then func_fatal_error "require no space between \`-L' and \`$1'" else func_fatal_error "need path for \`-L' option" fi fi # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of \`$dir'" dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "*) ;; *) deplibs="$deplibs -L$dir" lib_search_path="$lib_search_path $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) dllsearchpath="$dllsearchpath:$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) dllsearchpath="$dllsearchpath:$testbindir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework deplibs="$deplibs System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test "X$arg" = "X-lc" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi deplibs="$deplibs $arg" continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot) compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; esac continue ;; -multi_module) single_module="${wl}-multi_module" continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "\`-no-install' is ignored for $host" func_warning "assuming \`-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" arg="$arg $wl$func_quote_for_eval_result" compiler_flags="$compiler_flags $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" arg="$arg $wl$func_quote_for_eval_result" compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" linker_flags="$linker_flags $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; # -64, -mips[0-9] enable 64-bit mode on the SGI compiler # -r[0-9][0-9]* specifies the processor on the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler # +DA*, +DD* enable 64-bit mode on the HP compiler # -q* pass through compiler args for the IBM compiler # -m*, -t[45]*, -txscale* pass through architecture-specific # compiler args for GCC # -F/path gives path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC # @file GCC response files -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" func_append finalize_command " $arg" compiler_flags="$compiler_flags $arg" continue ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; *.$objext) # A standard object. objs="$objs $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. deplibs="$deplibs $arg" old_deplibs="$old_deplibs $arg" continue ;; *.la) # A libtool-controlled library. if test "$prev" = dlfiles; then # This library was specified with -dlopen. dlfiles="$dlfiles $arg" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. dlprefiles="$dlprefiles $arg" prev= else deplibs="$deplibs $arg" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the \`$prevarg' option requires an argument" if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname="$func_basename_result" libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" func_dirname "$output" "/" "" output_objdir="$func_dirname_result$objdir" # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_duplicate_deps ; then case "$libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi libs="$libs $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; esac pre_post_deps="$pre_post_deps $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test "$linkmode,$pass" = "lib,link"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs="$tmp_deplibs" fi if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS%" test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ;; esac fi if test "$linkmode,$pass" = "lib,dlpreopen"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= case $lib in *.la) func_source "$lib" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` case " $weak_libs " in *" $deplib_base "*) ;; *) deplibs="$deplibs $deplib" ;; esac done done libs="$dlprefiles" fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else compiler_flags="$compiler_flags $deplib" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; esac fi fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then func_warning "\`-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test "$linkmode" = lib; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no func_dirname "$lib" "" "." ladir="$func_dirname_result" lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l *.ltframework) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" newlib_search_path="$newlib_search_path $func_stripname_result" ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" newlib_search_path="$newlib_search_path $func_stripname_result" ;; *) func_warning "\`-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then func_stripname '-R' '' "$deplib" dir=$func_stripname_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) lib="$deplib" ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then $ECHO $ECHO "*** Warning: Trying to link with static lib archive $deplib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have" $ECHO "*** because the file extensions .$libext of this argument makes me believe" $ECHO "*** that it is just a static archive that I should not use here." else $ECHO $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi ;; esac continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. newdlprefiles="$newdlprefiles $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else newdlfiles="$newdlfiles $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" fi # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "\`$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir="$func_dirname_result" dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && dlfiles="$dlfiles $dlopen" test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # It is a libtool convenience library, so add in its objects. convenience="$convenience $ladir/$objdir/$old_library" old_convenience="$old_convenience $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_duplicate_deps ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi continue fi # $pass = conv # Get the name of the library we link against. linklib= for l in $old_library $library_names; do linklib="$l" done if test -z "$linklib"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then func_fatal_error "cannot -dlopen a convenience library: \`$lib'" fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. dlprefiles="$dlprefiles $lib $dependency_libs" else newdlfiles="$newdlfiles $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of \`$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir="$ladir" fi ;; esac func_basename "$lib" laname="$func_basename_result" # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library \`$lib' was moved." dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$libdir" absdir="$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir="$ladir" absdir="$abs_ladir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir" && test "$linkmode" = prog; then func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then newdlprefiles="$newdlprefiles $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then newdlprefiles="$newdlprefiles $dir/$dlname" else newdlprefiles="$newdlprefiles $dir/$linklib" fi fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then newlib_search_path="$newlib_search_path $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" newlib_search_path="$newlib_search_path $func_stripname_result" ;; esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_duplicate_deps ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { { test "$prefer_static_libs" = no || test "$prefer_static_libs,$installed" = "built,yes"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. case "$temp_rpath:" in *"$absdir:"*) ;; *) temp_rpath="$temp_rpath$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test "$use_static_libs" = built && test "$installed" = yes; then use_static_libs=no fi if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded notinst_deplibs="$notinst_deplibs $lib" need_relink=no ;; *) if test "$installed" = no; then notinst_deplibs="$notinst_deplibs $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule="" for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule="$dlpremoduletest" break fi done if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then $ECHO if test "$linkmode" = prog; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname="$1" shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc*) func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" func_basename "$soroot" soname="$func_basename_result" func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from \`$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for \`$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; *-*-sysv4*uw2*) add_dir="-L$dir" ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we can not # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null ; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library" ; then $ECHO $ECHO "*** And there doesn't seem to be a static archive available" $ECHO "*** The link will probably fail, sorry" else add="$dir/$old_library" fi elif test -n "$old_library"; then add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$dir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && test "$hardcode_minus_L" != yes && test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. $ECHO $ECHO "*** Warning: This system can not link to static lib archive $lib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then $ECHO "*** But as you try to build a module library, libtool will still create " $ECHO "*** a static module, that should work as long as the dlopening application" $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then $ECHO $ECHO "*** However, this would only work if libtool was able to extract symbol" $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" $ECHO "*** not find such a program. So, this module is probably useless." $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) xrpath="$xrpath $temp_xrpath";; esac;; *) temp_deplibs="$temp_deplibs $libdir";; esac done dependency_libs="$temp_deplibs" fi newlib_search_path="$newlib_search_path $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" if $opt_duplicate_deps ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path="$deplib" ;; *.la) func_dirname "$deplib" "" "." dir="$func_dirname_result" # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of \`$dir'" absdir="$dir" fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl" ; then depdepl="$absdir/$objdir/$depdepl" darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" path= fi fi ;; *) path="-L$absdir/$objdir" ;; esac else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "\`$deplib' seems to be moved" path="-L$absdir" fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test "$pass" = link; then if test "$linkmode" = "prog"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) lib_search_path="$lib_search_path $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) tmp_libs="$tmp_libs $deplib" ;; esac ;; *) tmp_libs="$tmp_libs $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then tmp_libs="$tmp_libs $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" fi if test "$linkmode" = prog || test "$linkmode" = lib; then dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "\`-R' is ignored for archives" test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "\`-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "\`-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" objs="$objs$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test "$module" = no && \ func_fatal_help "libtool library \`$output' must begin with \`lib'" if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else $ECHO $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" libobjs="$libobjs $objs" fi fi test "$dlself" != no && \ func_warning "\`-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test "$#" -gt 1 && \ func_warning "ignoring multiple \`-rpath's for a libtool library" install_libdir="$1" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "\`-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 shift IFS="$save_ifs" test -n "$7" && \ func_fatal_help "too many parameters to \`-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$1" number_minor="$2" number_revision="$3" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_minor" lt_irix_increment=no ;; *) func_fatal_configuration "$modename: unknown library version type \`$version_type'" ;; esac ;; no) current="$1" revision="$2" age="$3" ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT \`$current' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION \`$revision' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE \`$age' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE \`$age' is greater than the current interface number \`$current'" func_fatal_error "\`$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current" ;; irix | nonstopux) if test "X$lt_irix_increment" = "Xno"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring:${iface}.0" done # Make executables depend on our current version. verstring="$verstring:${current}.0" ;; qnx) major=".$current" versuffix=".$current" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; *) func_fatal_configuration "unknown library version type \`$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then func_warning "undefined symbols not allowed in $host shared libraries" build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi func_generate_dlsyms "$libname" "$libname" "yes" libobjs="$libobjs $symfileobj" test "X$libobjs" = "X " && libobjs= if test "$mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi removelist="$removelist $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then oldlibs="$oldlibs $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do temp_xrpath="$temp_xrpath -R$libdir" case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) dlfiles="$dlfiles $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) dlprefiles="$dlprefiles $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework deplibs="$deplibs System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then deplibs="$deplibs -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $ECHO $ECHO "*** Warning: linker path does not have real file for library $a_deplib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have" $ECHO "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) newdeplibs="$newdeplibs $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $ECHO $ECHO "*** Warning: linker path does not have real file for library $a_deplib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have" $ECHO "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` done fi if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | $GREP . >/dev/null; then $ECHO if test "X$deplibs_check_method" = "Xnone"; then $ECHO "*** Warning: inter-library dependencies are not supported in this platform." else $ECHO "*** Warning: inter-library dependencies are not known to be supported." fi $ECHO "*** All declared inter-library dependencies are being dropped." droppeddeps=yes fi ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then $ECHO $ECHO "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" $ECHO "*** a static module, that should work as long as the dlopening" $ECHO "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then $ECHO $ECHO "*** However, this would only work if libtool was able to extract symbol" $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" $ECHO "*** not find such a program. So, this module is probably useless." $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else $ECHO "*** The inter-library dependencies that have been dropped here will be" $ECHO "*** automatically added whenever a program is linked with this library" $ECHO "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then $ECHO $ECHO "*** Since this library must not contain undefined symbols," $ECHO "*** because either the platform does not support them or" $ECHO "*** it was explicitly requested with -no-undefined," $ECHO "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) new_libs="$new_libs -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$new_libs $deplib" ;; esac ;; *) new_libs="$new_libs $deplib" ;; esac done deplibs="$new_libs" # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" dep_rpath="$dep_rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" if test -n "$hardcode_libdir_flag_spec_ld"; then eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" else eval dep_rpath=\"$hardcode_libdir_flag_spec\" fi fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname="$1" shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" linknames= for link do linknames="$linknames $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols="$output_objdir/$libname.uexp" delfiles="$delfiles $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile if test "x`$SED 1q $export_symbols`" != xEXPORTS; then # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols="$export_symbols" export_symbols= always_export_symbols=yes fi fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" func_len " $cmd" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then func_show_eval "$cmd" 'exit $?' skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS="$save_ifs" if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' fi if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) tmp_deplibs="$tmp_deplibs $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test "$compiler_needs_object" = yes && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $convenience libobjs="$libobjs $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" linker_flags="$linker_flags $flag" fi # Make a backup of the uninstalled library when relinking if test "$mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output output_la=`$ECHO "X$output" | $Xsed -e "$basename"` # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then output=${output_objdir}/${output_la}.lnkscript func_verbose "creating GNU ld script: $output" $ECHO 'INPUT (' > $output for obj in $save_libobjs do $ECHO "$obj" >> $output done $ECHO ')' >> $output delfiles="$delfiles $output" elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then output=${output_objdir}/${output_la}.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test "$compiler_needs_object" = yes; then firstobj="$1 " shift fi for obj do $ECHO "$obj" >> $output done delfiles="$delfiles $output" output=$firstobj\"$file_list_spec$output\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-${k}.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test "X$objlist" = X || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. eval concat_cmds=\"$reload_cmds $objlist $last_robj\" else # All subsequent reloadable object files will link in # the last one created. eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-${k}.$objext objlist=$obj func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" if test -n "$last_robj"; then eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" fi delfiles="$delfiles $output" else output= fi if ${skipped_export-false}; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi fi test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi if ${skipped_export-false}; then if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi fi libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $dlprefiles libobjs="$libobjs $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "\`-R' is ignored for objects" test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for objects" test -n "$release" && \ func_warning "\`-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object \`$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec and hope we can get by with # turning comma into space.. wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` else gentop="$output_objdir/${obj}x" generated="$generated $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # Create the old-style object. reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for programs" test -n "$release" && \ func_warning "\`-release' is ignored for programs" test "$preload" = yes \ && test "$dlopen_support" = unknown \ && test "$dlopen_self" = unknown \ && test "$dlopen_self_static" = unknown && \ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test "$tagname" = CXX ; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) compile_command="$compile_command ${wl}-bind_at_load" finalize_command="$finalize_command ${wl}-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) new_libs="$new_libs -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$new_libs $deplib" ;; esac ;; *) new_libs="$new_libs $deplib" ;; esac done compile_deplibs="$new_libs" compile_command="$compile_command $compile_deplibs" finalize_command="$finalize_command $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) dllsearchpath="$dllsearchpath:$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) dllsearchpath="$dllsearchpath:$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" "no" # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=yes case $host in *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; *cegcc) # Disable wrappers for cegcc, we are cross compiling anyway. wrappers_required=no ;; *) if test "$need_relink" = no || test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; esac if test "$wrappers_required" = no; then # Replace the output file specification. compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' # Delete the generated files. if test -f "$output_objdir/${outputname}S.${objext}"; then func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' fi exit $exit_status fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do rpath="$rpath$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" func_warning "this platform does not like uninstalled shared libraries" func_warning "\`$output' will be relinked during installation" else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` fi # Quote $ECHO for shipping. if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then case $progpath in [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; esac qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` else qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource="$output_path/$objdir/lt-$output_name.c" cwrapper="$output_path/$output_name.exe" $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host" ; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save $symfileobj" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" if test "$preload" = yes && test -f "$symfileobj"; then oldobjs="$oldobjs $symfileobj" fi fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $addlibs oldobjs="$oldobjs $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $dlprefiles oldobjs="$oldobjs $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else $ECHO "copying selected object files to avoid basename conflicts..." gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase="$func_basename_result" case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" oldobjs="$oldobjs $gentop/$newobj" ;; *) oldobjs="$oldobjs $obj" ;; esac done fi eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" newdependency_libs="$newdependency_libs $libdir/$name" ;; *) newdependency_libs="$newdependency_libs $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" newdlfiles="$newdlfiles $libdir/$name" ;; *) newdlfiles="$newdlfiles $lib" ;; esac done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" newdlprefiles="$newdlprefiles $libdir/$name" ;; esac done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlfiles="$newdlfiles $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlprefiles="$newdlprefiles $abs" done dlprefiles="$newdlprefiles" fi $RM $output # place dlname in correct position for cygwin tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that can not go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } { test "$mode" = link || test "$mode" = relink; } && func_mode_link ${1+"$@"} # func_mode_uninstall arg... func_mode_uninstall () { $opt_debug RM="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) RM="$RM $arg"; rmforce=yes ;; -*) RM="$RM $arg" ;; *) files="$files $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= origobjdir="$objdir" for file in $files; do func_dirname "$file" "" "." dir="$func_dirname_result" if test "X$dir" = X.; then objdir="$origobjdir" else objdir="$dir/$origobjdir" fi func_basename "$file" name="$func_basename_result" test "$mode" = uninstall && objdir="$dir" # Remember objdir for removal later, being careful to avoid duplicates if test "$mode" = clean; then case " $rmdirs " in *" $objdir "*) ;; *) rmdirs="$rmdirs $objdir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do rmfiles="$rmfiles $objdir/$n" done test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" case "$mode" in clean) case " $library_names " in # " " in the beginning catches empty $dlname *" $dlname "*) ;; *) rmfiles="$rmfiles $objdir/$dlname" ;; esac test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test "$pic_object" != none; then rmfiles="$rmfiles $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test "$non_pic_object" != none; then rmfiles="$rmfiles $dir/$non_pic_object" fi fi ;; *) if test "$mode" = clean ; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe rmfiles="$rmfiles $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result rmfiles="$rmfiles $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then rmfiles="$rmfiles $objdir/lt-$name" fi if test "X$noexename" != "X$name" ; then rmfiles="$rmfiles $objdir/lt-${noexename}.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done objdir="$origobjdir" # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } { test "$mode" = uninstall || test "$mode" = clean; } && func_mode_uninstall ${1+"$@"} test -z "$mode" && { help="$generic_help" func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode \`$mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: # vi:sw=2 pygtk-2.24.0/atk-types.defs0000644000175000017500000002553311545325344012460 00000000000000;; -*- scheme -*- ; object definitions ... (define-object Hyperlink (in-module "Atk") (parent "GObject") (c-name "AtkHyperlink") (gtype-id "ATK_TYPE_HYPERLINK") ) (define-object GObjectAccessible (in-module "Atk") (parent "AtkObject") (c-name "AtkGObjectAccessible") (gtype-id "ATK_TYPE_GOBJECT_ACCESSIBLE") ) (define-object Object (in-module "Atk") (parent "GObject") (c-name "AtkObject") (gtype-id "ATK_TYPE_OBJECT") ) (define-object NoOpObject (in-module "Atk") (parent "AtkObject") (c-name "AtkNoOpObject") (gtype-id "ATK_TYPE_NO_OP_OBJECT") ) (define-object ObjectFactory (in-module "Atk") (parent "GObject") (c-name "AtkObjectFactory") (gtype-id "ATK_TYPE_OBJECT_FACTORY") ) (define-object NoOpObjectFactory (in-module "Atk") (parent "AtkObjectFactory") (c-name "AtkNoOpObjectFactory") (gtype-id "ATK_TYPE_NO_OP_OBJECT_FACTORY") ) (define-object Registry (in-module "Atk") (parent "GObject") (c-name "AtkRegistry") (gtype-id "ATK_TYPE_REGISTRY") ) (define-object Relation (in-module "Atk") (parent "GObject") (c-name "AtkRelation") (gtype-id "ATK_TYPE_RELATION") ) (define-object RelationSet (in-module "Atk") (parent "GObject") (c-name "AtkRelationSet") (gtype-id "ATK_TYPE_RELATION_SET") ) (define-object StateSet (in-module "Atk") (parent "GObject") (c-name "AtkStateSet") (gtype-id "ATK_TYPE_STATE_SET") ) (define-object Util (in-module "Atk") (parent "GObject") (c-name "AtkUtil") (gtype-id "ATK_TYPE_UTIL") ) (define-interface Action (in-module "Atk") (c-name "AtkAction") (gtype-id "ATK_TYPE_ACTION") ) (define-interface Component (in-module "Atk") (c-name "AtkComponent") (gtype-id "ATK_TYPE_COMPONENT") ) (define-interface Document (in-module "Atk") (c-name "AtkDocument") (gtype-id "ATK_TYPE_DOCUMENT") ) (define-interface EditableText (in-module "Atk") (c-name "AtkEditableText") (gtype-id "ATK_TYPE_EDITABLE_TEXT") ) (define-interface HyperlinkImpl (in-module "Atk") (c-name "AtkHyperlinkImpl") (gtype-id "ATK_TYPE_HYPERLINK_IMPL") ) (define-interface Hypertext (in-module "Atk") (c-name "AtkHypertext") (gtype-id "ATK_TYPE_HYPERTEXT") ) (define-interface Image (in-module "Atk") (c-name "AtkImage") (gtype-id "ATK_TYPE_IMAGE") ) (define-interface ImplementorIface (in-module "Atk") (c-name "AtkImplementorIface") (gtype-id "ATK_TYPE_IMPLEMENTOR") ) (define-interface Selection (in-module "Atk") (c-name "AtkSelection") (gtype-id "ATK_TYPE_SELECTION") ) (define-interface StreamableContent (in-module "Atk") (c-name "AtkStreamableContent") (gtype-id "ATK_TYPE_STREAMABLE_CONTENT") ) (define-interface Table (in-module "Atk") (c-name "AtkTable") (gtype-id "ATK_TYPE_TABLE") ) (define-interface Text (in-module "Atk") (c-name "AtkText") (gtype-id "ATK_TYPE_TEXT") ) (define-interface Value (in-module "Atk") (c-name "AtkValue") (gtype-id "ATK_TYPE_VALUE") ) (define-boxed Rectangle (in-module "Atk") (c-name "AtkRectangle") (gtype-id "ATK_TYPE_RECTANGLE") (fields '("gint" "x") '("gint" "y") '("gint" "width") '("gint" "height") ) ) ;; Enumerations and flags ... (define-enum Role (in-module "Atk") (c-name "AtkRole") (gtype-id "ATK_TYPE_ROLE") (values '("invalid" "ATK_ROLE_INVALID") '("accel-label" "ATK_ROLE_ACCEL_LABEL") '("alert" "ATK_ROLE_ALERT") '("animation" "ATK_ROLE_ANIMATION") '("arrow" "ATK_ROLE_ARROW") '("calendar" "ATK_ROLE_CALENDAR") '("canvas" "ATK_ROLE_CANVAS") '("check-box" "ATK_ROLE_CHECK_BOX") '("check-menu-item" "ATK_ROLE_CHECK_MENU_ITEM") '("color-chooser" "ATK_ROLE_COLOR_CHOOSER") '("column-header" "ATK_ROLE_COLUMN_HEADER") '("combo-box" "ATK_ROLE_COMBO_BOX") '("date-editor" "ATK_ROLE_DATE_EDITOR") '("desktop-icon" "ATK_ROLE_DESKTOP_ICON") '("desktop-frame" "ATK_ROLE_DESKTOP_FRAME") '("dial" "ATK_ROLE_DIAL") '("dialog" "ATK_ROLE_DIALOG") '("directory-pane" "ATK_ROLE_DIRECTORY_PANE") '("drawing-area" "ATK_ROLE_DRAWING_AREA") '("file-chooser" "ATK_ROLE_FILE_CHOOSER") '("filler" "ATK_ROLE_FILLER") '("font-chooser" "ATK_ROLE_FONT_CHOOSER") '("frame" "ATK_ROLE_FRAME") '("glass-pane" "ATK_ROLE_GLASS_PANE") '("html-container" "ATK_ROLE_HTML_CONTAINER") '("icon" "ATK_ROLE_ICON") '("image" "ATK_ROLE_IMAGE") '("internal-frame" "ATK_ROLE_INTERNAL_FRAME") '("label" "ATK_ROLE_LABEL") '("layered-pane" "ATK_ROLE_LAYERED_PANE") '("list" "ATK_ROLE_LIST") '("list-item" "ATK_ROLE_LIST_ITEM") '("menu" "ATK_ROLE_MENU") '("menu-bar" "ATK_ROLE_MENU_BAR") '("menu-item" "ATK_ROLE_MENU_ITEM") '("option-pane" "ATK_ROLE_OPTION_PANE") '("page-tab" "ATK_ROLE_PAGE_TAB") '("page-tab-list" "ATK_ROLE_PAGE_TAB_LIST") '("panel" "ATK_ROLE_PANEL") '("password-text" "ATK_ROLE_PASSWORD_TEXT") '("popup-menu" "ATK_ROLE_POPUP_MENU") '("progress-bar" "ATK_ROLE_PROGRESS_BAR") '("push-button" "ATK_ROLE_PUSH_BUTTON") '("radio-button" "ATK_ROLE_RADIO_BUTTON") '("radio-menu-item" "ATK_ROLE_RADIO_MENU_ITEM") '("root-pane" "ATK_ROLE_ROOT_PANE") '("row-header" "ATK_ROLE_ROW_HEADER") '("scroll-bar" "ATK_ROLE_SCROLL_BAR") '("scroll-pane" "ATK_ROLE_SCROLL_PANE") '("separator" "ATK_ROLE_SEPARATOR") '("slider" "ATK_ROLE_SLIDER") '("split-pane" "ATK_ROLE_SPLIT_PANE") '("spin-button" "ATK_ROLE_SPIN_BUTTON") '("statusbar" "ATK_ROLE_STATUSBAR") '("table" "ATK_ROLE_TABLE") '("table-cell" "ATK_ROLE_TABLE_CELL") '("table-column-header" "ATK_ROLE_TABLE_COLUMN_HEADER") '("table-row-header" "ATK_ROLE_TABLE_ROW_HEADER") '("tear-off-menu-item" "ATK_ROLE_TEAR_OFF_MENU_ITEM") '("terminal" "ATK_ROLE_TERMINAL") '("text" "ATK_ROLE_TEXT") '("toggle-button" "ATK_ROLE_TOGGLE_BUTTON") '("tool-bar" "ATK_ROLE_TOOL_BAR") '("tool-tip" "ATK_ROLE_TOOL_TIP") '("tree" "ATK_ROLE_TREE") '("tree-table" "ATK_ROLE_TREE_TABLE") '("unknown" "ATK_ROLE_UNKNOWN") '("viewport" "ATK_ROLE_VIEWPORT") '("window" "ATK_ROLE_WINDOW") '("last-defined" "ATK_ROLE_LAST_DEFINED") ) ) (define-enum Layer (in-module "Atk") (c-name "AtkLayer") (gtype-id "ATK_TYPE_LAYER") (values '("invalid" "ATK_LAYER_INVALID") '("background" "ATK_LAYER_BACKGROUND") '("canvas" "ATK_LAYER_CANVAS") '("widget" "ATK_LAYER_WIDGET") '("mdi" "ATK_LAYER_MDI") '("popup" "ATK_LAYER_POPUP") '("overlay" "ATK_LAYER_OVERLAY") ) ) (define-enum RelationType (in-module "Atk") (c-name "AtkRelationType") (gtype-id "ATK_TYPE_RELATION_TYPE") (values '("null" "ATK_RELATION_NULL") '("controlled-by" "ATK_RELATION_CONTROLLED_BY") '("controller-for" "ATK_RELATION_CONTROLLER_FOR") '("label-for" "ATK_RELATION_LABEL_FOR") '("labelled-by" "ATK_RELATION_LABELLED_BY") '("member-of" "ATK_RELATION_MEMBER_OF") '("node-child-of" "ATK_RELATION_NODE_CHILD_OF") '("last-defined" "ATK_RELATION_LAST_DEFINED") ) ) (define-enum StateType (in-module "Atk") (c-name "AtkStateType") (gtype-id "ATK_TYPE_STATE_TYPE") (values '("invalid" "ATK_STATE_INVALID") '("active" "ATK_STATE_ACTIVE") '("armed" "ATK_STATE_ARMED") '("busy" "ATK_STATE_BUSY") '("checked" "ATK_STATE_CHECKED") '("defunct" "ATK_STATE_DEFUNCT") '("editable" "ATK_STATE_EDITABLE") '("enabled" "ATK_STATE_ENABLED") '("expandable" "ATK_STATE_EXPANDABLE") '("expanded" "ATK_STATE_EXPANDED") '("focusable" "ATK_STATE_FOCUSABLE") '("focused" "ATK_STATE_FOCUSED") '("horizontal" "ATK_STATE_HORIZONTAL") '("iconified" "ATK_STATE_ICONIFIED") '("modal" "ATK_STATE_MODAL") '("multi-line" "ATK_STATE_MULTI_LINE") '("multiselectable" "ATK_STATE_MULTISELECTABLE") '("opaque" "ATK_STATE_OPAQUE") '("pressed" "ATK_STATE_PRESSED") '("resizable" "ATK_STATE_RESIZABLE") '("selectable" "ATK_STATE_SELECTABLE") '("selected" "ATK_STATE_SELECTED") '("sensitive" "ATK_STATE_SENSITIVE") '("showing" "ATK_STATE_SHOWING") '("single-line" "ATK_STATE_SINGLE_LINE") '("stale" "ATK_STATE_STALE") '("transient" "ATK_STATE_TRANSIENT") '("vertical" "ATK_STATE_VERTICAL") '("visible" "ATK_STATE_VISIBLE") '("last-defined" "ATK_STATE_LAST_DEFINED") ) ) (define-enum TextAttribute (in-module "Atk") (c-name "AtkTextAttribute") (gtype-id "ATK_TYPE_TEXT_ATTRIBUTE") (values '("left-margin" "ATK_TEXT_ATTR_LEFT_MARGIN") '("right-margin" "ATK_TEXT_ATTR_RIGHT_MARGIN") '("indent" "ATK_TEXT_ATTR_INDENT") '("invisible" "ATK_TEXT_ATTR_INVISIBLE") '("editable" "ATK_TEXT_ATTR_EDITABLE") '("pixels-above-lines" "ATK_TEXT_ATTR_PIXELS_ABOVE_LINES") '("pixels-below-lines" "ATK_TEXT_ATTR_PIXELS_BELOW_LINES") '("pixels-inside-wrap" "ATK_TEXT_ATTR_PIXELS_INSIDE_WRAP") '("bg-full-height" "ATK_TEXT_ATTR_BG_FULL_HEIGHT") '("rise" "ATK_TEXT_ATTR_RISE") '("underline" "ATK_TEXT_ATTR_UNDERLINE") '("strikethrough" "ATK_TEXT_ATTR_STRIKETHROUGH") '("size" "ATK_TEXT_ATTR_SIZE") '("scale" "ATK_TEXT_ATTR_SCALE") '("weight" "ATK_TEXT_ATTR_WEIGHT") '("language" "ATK_TEXT_ATTR_LANGUAGE") '("family-name" "ATK_TEXT_ATTR_FAMILY_NAME") '("bg-color" "ATK_TEXT_ATTR_BG_COLOR") '("fg-color" "ATK_TEXT_ATTR_FG_COLOR") '("bg-stipple" "ATK_TEXT_ATTR_BG_STIPPLE") '("fg-stipple" "ATK_TEXT_ATTR_FG_STIPPLE") '("wrap-mode" "ATK_TEXT_ATTR_WRAP_MODE") '("direction" "ATK_TEXT_ATTR_DIRECTION") '("justification" "ATK_TEXT_ATTR_JUSTIFICATION") '("stretch" "ATK_TEXT_ATTR_STRETCH") '("variant" "ATK_TEXT_ATTR_VARIANT") '("style" "ATK_TEXT_ATTR_STYLE") ) ) (define-enum TextBoundary (in-module "Atk") (c-name "AtkTextBoundary") (gtype-id "ATK_TYPE_TEXT_BOUNDARY") (values '("char" "ATK_TEXT_BOUNDARY_CHAR") '("word-start" "ATK_TEXT_BOUNDARY_WORD_START") '("word-end" "ATK_TEXT_BOUNDARY_WORD_END") '("sentence-start" "ATK_TEXT_BOUNDARY_SENTENCE_START") '("sentence-end" "ATK_TEXT_BOUNDARY_SENTENCE_END") '("line-start" "ATK_TEXT_BOUNDARY_LINE_START") '("line-end" "ATK_TEXT_BOUNDARY_LINE_END") ) ) (define-enum KeyEventType (in-module "Atk") (c-name "AtkKeyEventType") (gtype-id "ATK_TYPE_KEY_EVENT_TYPE") (values '("press" "ATK_KEY_EVENT_PRESS") '("release" "ATK_KEY_EVENT_RELEASE") '("last-defined" "ATK_KEY_EVENT_LAST_DEFINED") ) ) (define-enum CoordType (in-module "Atk") (c-name "AtkCoordType") (gtype-id "ATK_TYPE_COORD_TYPE") (values '("screen" "ATK_XY_SCREEN") '("window" "ATK_XY_WINDOW") ) ) (define-flags HyperlinkStateFlags (in-module "Atk") (c-name "AtkHyperlinkStateFlags") (gtype-id "ATK_TYPE_HYPERLINK_STATE_FLAGS") (values '("e" "ATK_HYPERLINK_IS_INLINE") ) ) (define-enum TextClipType (in-module "Atk") (c-name "AtkTextClipType") (gtype-id "ATK_TYPE_TEXT_CLIP_TYPE") (values '("none" "ATK_TEXT_CLIP_NONE") '("min" "ATK_TEXT_CLIP_MIN") '("max" "ATK_TEXT_CLIP_MAX") '("both" "ATK_TEXT_CLIP_BOTH") ) ) pygtk-2.24.0/pygtk.spec0000644000175000017500000000771111545325715011706 00000000000000# -*- mode: rpm-spec -*- %define buildglade %(pkg-config libglade-2.0 && echo 1 || echo 0) %define python python2 Summary: Python bindings for the GTK+ widget set. Name: pygtk2 Version: 2.24.0 Release: 1 Copyright: LGPL Group: Development/Languages Source: ftp://ftp.gtk.org/pub/gtk/python/pygtk-%{version}.tar.gz BuildRoot: /var/tmp/pygtk-root Packager: James Henstridge Requires: gtk2 >= 2.0.0 Requires: %{python} >= 2.2 Buildrequires: %{python}-devel >= 2.2 Buildrequires: libglade2-devel %description PyGTK is an extension module for python that gives you access to the GTK+ widget set. Just about anything you can write in C with GTK+ you can write in python with PyGTK (within reason), but with all the benefits of python. %package libglade Summary: A wrapper for the libglade library for use with PyGTK Group: Development/Languages Requires: pygtk2 = %{version} %description libglade This module contains a wrapper for the libglade library. Libglade allows a program to construct its user interface from an XML description, which allows the programmer to keep the UI and program logic separate. %package devel Summary: files needed to build wrappers for GTK+ addon libraries Group: Development/Languages Requires: pygtk2 = %{version} %description devel This package contains files required to build wrappers for GTK+ addon libraries so that they interoperate with pygtk. %changelog * Thu Oct 31 2002 Matt Wilson - use libdir for .pc files * Wed Feb 27 2002 Matt Wilson - 1.99.8 * Mon Jan 28 2002 Matt Wilson - added atkmodule.so to file list * Thu Oct 18 2001 Matt Wilson - fix devel filelist to match new header location * Mon Oct 15 2001 Matt Wilson - get the headers from their new version-specific location * Thu Oct 11 2001 Matt Wilson - fixed typo in devel filelist - added macro that tests to see if we have libglade2, make the filelist a condition of that - changed name to 'pygtk2' to avoid name conflict with pygtk %prep %setup -q -n pygtk-%{version} [ -x /usr/bin/python2.2 ] && export PYTHON=/usr/bin/python2.2 ./configure --prefix=%{_prefix} %build make %install rm -rf $RPM_BUILD_ROOT make DESTDIR=$RPM_BUILD_ROOT install find $RPM_BUILD_ROOT -type f -name "*.la" -exec rm -f {} ';' %files %defattr(644, root, root, 755) %{_prefix}/lib/python?.?/site-packages/pygtk.py* %dir %{_prefix}/lib/python?.?/site-packages/gtk-2.0 %dir %{_prefix}/lib/python?.?/site-packages/gtk-2.0/gtk %{_prefix}/lib/python?.?/site-packages/gtk-2.0/gtk/__init__.py* %{_prefix}/lib/python?.?/site-packages/gtk-2.0/gtk/compat.* %{_prefix}/lib/python?.?/site-packages/gtk-2.0/gtk/keysyms.py* %{_prefix}/lib/python?.?/site-packages/gtk-2.0/dsextras* %defattr(755, root, root, 755) %{_prefix}/lib/python?.?/site-packages/gtk-2.0/atk.so %{_prefix}/lib/python?.?/site-packages/gtk-2.0/gobject.so %{_prefix}/lib/python?.?/site-packages/gtk-2.0/pango.so %{_prefix}/lib/python?.?/site-packages/gtk-2.0/gtk/_gtk.so %doc AUTHORS NEWS README MAPPING ChangeLog %doc examples %if %{buildglade} %files libglade %defattr(755, root, root, 755) %{_prefix}/lib/python?.?/site-packages/gtk-2.0/gtk/glade.so %endif %files devel %defattr(755, root, root, 755) %defattr(644, root, root, 755) %dir %{_prefix}/include/pygtk-2.0 %{_prefix}/include/pygtk-2.0/*.h %dir %{_prefix}/include/pygtk-2.0/pygtk %{_prefix}/include/pygtk-2.0/pygtk/*.h %{_libdir}/pkgconfig/pygtk-2.0.pc %dir %{_prefix}/share/pygtk %dir %{_prefix}/share/pygtk/2.0 %dir %{_prefix}/share/pygtk/2.0/defs %{_prefix}/share/pygtk/2.0/defs/atk.defs %{_prefix}/share/pygtk/2.0/defs/atk-types.defs %{_prefix}/share/pygtk/2.0/defs/pango.defs %{_prefix}/share/pygtk/2.0/defs/pango-types.defs %{_prefix}/share/pygtk/2.0/defs/gdk.defs %{_prefix}/share/pygtk/2.0/defs/gdk-types.defs %{_prefix}/share/pygtk/2.0/defs/gtk.defs %{_prefix}/share/pygtk/2.0/defs/gtk-types.defs %{_prefix}/share/pygtk/2.0/defs/gtk-extrafuncs.defs %{_prefix}/share/pygtk/2.0/defs/libglade.defs pygtk-2.24.0/pango-types.defs0000644000175000017500000003027711545325345013007 00000000000000;; -*- scheme -*- ;; boxed definitions ... (define-boxed AttrList (in-module "Pango") (c-name "PangoAttrList") (gtype-id "PANGO_TYPE_ATTR_LIST") (copy-func "pango_attr_list_ref") (release-func "pango_attr_list_unref") ) (define-boxed Color (in-module "Pango") (c-name "PangoColor") (gtype-id "PANGO_TYPE_COLOR") (copy-func "pango_color_copy") (release-func "pango_color_free") (fields '("guint16" "red") '("guint16" "green") '("guint16" "blue") ) ) (define-boxed FontDescription (in-module "Pango") (c-name "PangoFontDescription") (gtype-id "PANGO_TYPE_FONT_DESCRIPTION") (copy-func "pango_font_description_copy") (release-func "pango_font_description_free") ) (define-boxed FontMetrics (in-module "Pango") (c-name "PangoFontMetrics") (gtype-id "PANGO_TYPE_FONT_METRICS") (copy-func "pango_font_metrics_ref") (release-func "pango_font_metrics_unref") ) (define-boxed GlyphString (in-module "Pango") (c-name "PangoGlyphString") (gtype-id "PANGO_TYPE_GLYPH_STRING") (copy-func "pango_glyph_string_copy") (release-func "pango_glyph_string_free") (fields '("gint" "num_glyphs") '("PangoGlyphInfo*" "glyphs") '("gint*" "log_clusters") ) ) (define-boxed Item (in-module "Pango") (c-name "PangoItem") (fields '("gint" "offset") '("gint" "length") '("gint" "num_chars") '("PangoEngineShape*" "analysis.shape_engine") '("PangoEngineLang*" "analysis.lang_engine") '("PangoFont*" "analysis.font") '("guint8" "analysis.level") '("PangoLanguage*" "analysis.language") '("GSList*" "analysis.extra_attrs") ) (gtype-id "PANGO_TYPE_ITEM") ) (define-boxed Language (in-module "Pango") (c-name "PangoLanguage") (gtype-id "PANGO_TYPE_LANGUAGE") ) (define-boxed LayoutIter (in-module "Pango") (c-name "PangoLayoutIter") (gtype-id "PANGO_TYPE_LAYOUT_ITER") (release-func "pango_layout_iter_free") ) (define-boxed LayoutLine (in-module "Pango") (c-name "PangoLayoutLine") (gtype-id "PANGO_TYPE_LAYOUT_LINE") (fields ; '("PangoLayout*" "layout") ;; omitted for fear of creating reference cycles '("gint" "start_index") '("gint" "length") '("GSList*" "runs") '("guint" "is_paragraph_start") '("guint" "resolved_dir") ) ) (define-boxed Matrix (in-module "Pango") (c-name "PangoMatrix") (gtype-id "PANGO_TYPE_MATRIX") ) (define-boxed TabArray (in-module "Pango") (c-name "PangoTabArray") (gtype-id "PANGO_TYPE_TAB_ARRAY") (copy-func "pango_tab_array_copy") (release-func "pango_tab_array_free") ) ; object definitions ... (define-object Context (in-module "Pango") (parent "GObject") (c-name "PangoContext") (gtype-id "PANGO_TYPE_CONTEXT") ) (define-object Engine (in-module "Pango") (parent "GObject") (c-name "PangoEngine") (gtype-id "PANGO_TYPE_ENGINE") ) (define-object EngineLang (in-module "Pango") (parent "PangoEngine") (c-name "PangoEngineLang") (gtype-id "PANGO_TYPE_ENGINE_LANG") ) (define-object EngineShape (in-module "Pango") (parent "PangoEngine") (c-name "PangoEngineShape") (gtype-id "PANGO_TYPE_ENGINE_SHAPE") ) (define-object Font (in-module "Pango") (parent "GObject") (c-name "PangoFont") (gtype-id "PANGO_TYPE_FONT") ) (define-object FontFace (in-module "Pango") (parent "GObject") (c-name "PangoFontFace") (gtype-id "PANGO_TYPE_FONT_FACE") ) (define-object FontFamily (in-module "Pango") (parent "GObject") (c-name "PangoFontFamily") (gtype-id "PANGO_TYPE_FONT_FAMILY") ) (define-object FontMap (in-module "Pango") (parent "GObject") (c-name "PangoFontMap") (gtype-id "PANGO_TYPE_FONT_MAP") ) (define-object Fontset (in-module "Pango") (parent "GObject") (c-name "PangoFontset") (gtype-id "PANGO_TYPE_FONTSET") ) (define-object FontsetSimple (in-module "Pango") (parent "PangoFontset") (c-name "PangoFontsetSimple") (gtype-id "PANGO_TYPE_FONTSET_SIMPLE") ) (define-object Layout (in-module "Pango") (parent "GObject") (c-name "PangoLayout") (gtype-id "PANGO_TYPE_LAYOUT") ) (define-object Renderer (in-module "Pango") (parent "GObject") (c-name "PangoRenderer") (gtype-id "PANGO_TYPE_RENDERER") ) ;; Enumerations and flags ... (define-enum Alignment (in-module "Pango") (c-name "PangoAlignment") (gtype-id "PANGO_TYPE_ALIGNMENT") (values '("left" "PANGO_ALIGN_LEFT") '("center" "PANGO_ALIGN_CENTER") '("right" "PANGO_ALIGN_RIGHT") ) ) (define-enum AttrType (in-module "Pango") (c-name "PangoAttrType") (gtype-id "PANGO_TYPE_ATTR_TYPE") (values '("invalid" "PANGO_ATTR_INVALID") '("language" "PANGO_ATTR_LANGUAGE") '("family" "PANGO_ATTR_FAMILY") '("style" "PANGO_ATTR_STYLE") '("weight" "PANGO_ATTR_WEIGHT") '("variant" "PANGO_ATTR_VARIANT") '("stretch" "PANGO_ATTR_STRETCH") '("size" "PANGO_ATTR_SIZE") '("font-desc" "PANGO_ATTR_FONT_DESC") '("foreground" "PANGO_ATTR_FOREGROUND") '("background" "PANGO_ATTR_BACKGROUND") '("underline" "PANGO_ATTR_UNDERLINE") '("strikethrough" "PANGO_ATTR_STRIKETHROUGH") '("rise" "PANGO_ATTR_RISE") '("shape" "PANGO_ATTR_SHAPE") '("scale" "PANGO_ATTR_SCALE") '("fallback" "PANGO_ATTR_FALLBACK") '("letter-spacing" "PANGO_ATTR_LETTER_SPACING") '("underline-color" "PANGO_ATTR_UNDERLINE_COLOR") '("strikethrough-color" "PANGO_ATTR_STRIKETHROUGH_COLOR") '("absolute-size" "PANGO_ATTR_ABSOLUTE_SIZE") ) ) (define-enum CoverageLevel (in-module "Pango") (c-name "PangoCoverageLevel") (gtype-id "PANGO_TYPE_COVERAGE_LEVEL") (values '("none" "PANGO_COVERAGE_NONE") '("fallback" "PANGO_COVERAGE_FALLBACK") '("approximate" "PANGO_COVERAGE_APPROXIMATE") '("exact" "PANGO_COVERAGE_EXACT") ) ) (define-enum Direction (in-module "Pango") (c-name "PangoDirection") (gtype-id "PANGO_TYPE_DIRECTION") (values '("ltr" "PANGO_DIRECTION_LTR") '("rtl" "PANGO_DIRECTION_RTL") '("ttb-ltr" "PANGO_DIRECTION_TTB_LTR") '("ttb-rtl" "PANGO_DIRECTION_TTB_RTL") '("weak-ltr" "PANGO_DIRECTION_WEAK_LTR") '("weak-rtl" "PANGO_DIRECTION_WEAK_RTL") '("neutral" "PANGO_DIRECTION_NEUTRAL") ) ) (define-enum EllipsizeMode (in-module "Pango") (c-name "PangoEllipsizeMode") (gtype-id "PANGO_TYPE_ELLIPSIZE_MODE") (values '("none" "PANGO_ELLIPSIZE_NONE") '("start" "PANGO_ELLIPSIZE_START") '("middle" "PANGO_ELLIPSIZE_MIDDLE") '("end" "PANGO_ELLIPSIZE_END") ) ) (define-enum Gravity (in-module "Pango") (c-name "PangoGravity") (gtype-id "PANGO_TYPE_GRAVITY") (values '("south" "PANGO_GRAVITY_SOUTH") '("east" "PANGO_GRAVITY_EAST") '("north" "PANGO_GRAVITY_NORTH") '("west" "PANGO_GRAVITY_WEST") '("auto" "PANGO_GRAVITY_AUTO") ) ) (define-enum GravityHint (in-module "Pango") (c-name "PangoGravityHint") (gtype-id "PANGO_TYPE_GRAVITY_HINT") (values '("natural" "PANGO_GRAVITY_HINT_NATURAL") '("strong" "PANGO_GRAVITY_HINT_STRONG") '("line" "PANGO_GRAVITY_HINT_LINE") ) ) (define-enum RenderPart (in-module "Pango") (c-name "PangoRenderPart") (gtype-id "PANGO_TYPE_RENDER_PART") (values '("foreground" "PANGO_RENDER_PART_FOREGROUND") '("background" "PANGO_RENDER_PART_BACKGROUND") '("underline" "PANGO_RENDER_PART_UNDERLINE") '("strikethrough" "PANGO_RENDER_PART_STRIKETHROUGH") ) ) (define-enum Script (in-module "Pango") (c-name "PangoScript") (gtype-id "PANGO_TYPE_SCRIPT") (values '("invalid-code" "PANGO_SCRIPT_INVALID_CODE") '("common" "PANGO_SCRIPT_COMMON") '("inherited" "PANGO_SCRIPT_INHERITED") '("arabic" "PANGO_SCRIPT_ARABIC") '("armenian" "PANGO_SCRIPT_ARMENIAN") '("bengali" "PANGO_SCRIPT_BENGALI") '("bopomofo" "PANGO_SCRIPT_BOPOMOFO") '("cherokee" "PANGO_SCRIPT_CHEROKEE") '("coptic" "PANGO_SCRIPT_COPTIC") '("cyrillic" "PANGO_SCRIPT_CYRILLIC") '("deseret" "PANGO_SCRIPT_DESERET") '("devanagari" "PANGO_SCRIPT_DEVANAGARI") '("ethiopic" "PANGO_SCRIPT_ETHIOPIC") '("georgian" "PANGO_SCRIPT_GEORGIAN") '("gothic" "PANGO_SCRIPT_GOTHIC") '("greek" "PANGO_SCRIPT_GREEK") '("gujarati" "PANGO_SCRIPT_GUJARATI") '("gurmukhi" "PANGO_SCRIPT_GURMUKHI") '("han" "PANGO_SCRIPT_HAN") '("hangul" "PANGO_SCRIPT_HANGUL") '("hebrew" "PANGO_SCRIPT_HEBREW") '("hiragana" "PANGO_SCRIPT_HIRAGANA") '("kannada" "PANGO_SCRIPT_KANNADA") '("katakana" "PANGO_SCRIPT_KATAKANA") '("khmer" "PANGO_SCRIPT_KHMER") '("lao" "PANGO_SCRIPT_LAO") '("latin" "PANGO_SCRIPT_LATIN") '("malayalam" "PANGO_SCRIPT_MALAYALAM") '("mongolian" "PANGO_SCRIPT_MONGOLIAN") '("myanmar" "PANGO_SCRIPT_MYANMAR") '("ogham" "PANGO_SCRIPT_OGHAM") '("old-italic" "PANGO_SCRIPT_OLD_ITALIC") '("oriya" "PANGO_SCRIPT_ORIYA") '("runic" "PANGO_SCRIPT_RUNIC") '("sinhala" "PANGO_SCRIPT_SINHALA") '("syriac" "PANGO_SCRIPT_SYRIAC") '("tamil" "PANGO_SCRIPT_TAMIL") '("telugu" "PANGO_SCRIPT_TELUGU") '("thaana" "PANGO_SCRIPT_THAANA") '("thai" "PANGO_SCRIPT_THAI") '("tibetan" "PANGO_SCRIPT_TIBETAN") '("canadian-aboriginal" "PANGO_SCRIPT_CANADIAN_ABORIGINAL") '("yi" "PANGO_SCRIPT_YI") '("tagalog" "PANGO_SCRIPT_TAGALOG") '("hanunoo" "PANGO_SCRIPT_HANUNOO") '("buhid" "PANGO_SCRIPT_BUHID") '("tagbanwa" "PANGO_SCRIPT_TAGBANWA") '("braille" "PANGO_SCRIPT_BRAILLE") '("cypriot" "PANGO_SCRIPT_CYPRIOT") '("limbu" "PANGO_SCRIPT_LIMBU") '("osmanya" "PANGO_SCRIPT_OSMANYA") '("shavian" "PANGO_SCRIPT_SHAVIAN") '("linear-b" "PANGO_SCRIPT_LINEAR_B") '("tai-le" "PANGO_SCRIPT_TAI_LE") '("ugaritic" "PANGO_SCRIPT_UGARITIC") '("new-tai-lue" "PANGO_SCRIPT_NEW_TAI_LUE") '("buginese" "PANGO_SCRIPT_BUGINESE") '("glagolitic" "PANGO_SCRIPT_GLAGOLITIC") '("tifinagh" "PANGO_SCRIPT_TIFINAGH") '("syloti-nagri" "PANGO_SCRIPT_SYLOTI_NAGRI") '("old-persian" "PANGO_SCRIPT_OLD_PERSIAN") '("kharoshthi" "PANGO_SCRIPT_KHAROSHTHI") ) ) (define-enum Stretch (in-module "Pango") (c-name "PangoStretch") (gtype-id "PANGO_TYPE_STRETCH") (values '("ultra-condensed" "PANGO_STRETCH_ULTRA_CONDENSED") '("extra-condensed" "PANGO_STRETCH_EXTRA_CONDENSED") '("condensed" "PANGO_STRETCH_CONDENSED") '("semi-condensed" "PANGO_STRETCH_SEMI_CONDENSED") '("normal" "PANGO_STRETCH_NORMAL") '("semi-expanded" "PANGO_STRETCH_SEMI_EXPANDED") '("expanded" "PANGO_STRETCH_EXPANDED") '("extra-expanded" "PANGO_STRETCH_EXTRA_EXPANDED") '("ultra-expanded" "PANGO_STRETCH_ULTRA_EXPANDED") ) ) (define-enum Style (in-module "Pango") (c-name "PangoStyle") (gtype-id "PANGO_TYPE_STYLE") (values '("normal" "PANGO_STYLE_NORMAL") '("oblique" "PANGO_STYLE_OBLIQUE") '("italic" "PANGO_STYLE_ITALIC") ) ) (define-enum TabAlign (in-module "Pango") (c-name "PangoTabAlign") (gtype-id "PANGO_TYPE_TAB_ALIGN") (values '("left" "PANGO_TAB_LEFT") ) ) (define-enum Underline (in-module "Pango") (c-name "PangoUnderline") (gtype-id "PANGO_TYPE_UNDERLINE") (values '("none" "PANGO_UNDERLINE_NONE") '("single" "PANGO_UNDERLINE_SINGLE") '("double" "PANGO_UNDERLINE_DOUBLE") '("low" "PANGO_UNDERLINE_LOW") '("error" "PANGO_UNDERLINE_ERROR") ) ) (define-enum Variant (in-module "Pango") (c-name "PangoVariant") (gtype-id "PANGO_TYPE_VARIANT") (values '("normal" "PANGO_VARIANT_NORMAL") '("small-caps" "PANGO_VARIANT_SMALL_CAPS") ) ) (define-enum Weight (in-module "Pango") (c-name "PangoWeight") (gtype-id "PANGO_TYPE_WEIGHT") (values '("ultralight" "PANGO_WEIGHT_ULTRALIGHT") '("light" "PANGO_WEIGHT_LIGHT") '("normal" "PANGO_WEIGHT_NORMAL") '("semibold" "PANGO_WEIGHT_SEMIBOLD") '("bold" "PANGO_WEIGHT_BOLD") '("ultrabold" "PANGO_WEIGHT_ULTRABOLD") '("heavy" "PANGO_WEIGHT_HEAVY") ) ) (define-enum WrapMode (in-module "Pango") (c-name "PangoWrapMode") (gtype-id "PANGO_TYPE_WRAP_MODE") (values '("word" "PANGO_WRAP_WORD") '("char" "PANGO_WRAP_CHAR") '("word-char" "PANGO_WRAP_WORD_CHAR") ) ) (define-flags FontMask (in-module "Pango") (c-name "PangoFontMask") (gtype-id "PANGO_TYPE_FONT_MASK") (values '("family" "PANGO_FONT_MASK_FAMILY") '("style" "PANGO_FONT_MASK_STYLE") '("variant" "PANGO_FONT_MASK_VARIANT") '("weight" "PANGO_FONT_MASK_WEIGHT") '("stretch" "PANGO_FONT_MASK_STRETCH") '("size" "PANGO_FONT_MASK_SIZE") ) ) pygtk-2.24.0/TODO0000644000175000017500000000100011545325344010343 00000000000000This list is out of date. Query bugzilla.gnome.org for an up to date list. Things to do for the gtk 2.0 based release - fix up threading to work with GObject/GSignal/GClosure. See the THREADS file for more info on what is required. - Implement a new PyGtkTreeModel GObject type that can be the base for new tree models defined in Python. Need to look at how the GtkTreeIter->tree_node lifetime is handled, as it doesn't look like anything is called to let us know that that data should be unrefed. pygtk-2.24.0/PKG-INFO0000644000175000017500000000210211545325715010756 00000000000000Metadata-Version: 1.0 Name: PyGTK Version: 2.24.0 Summary: Python bindings for GTK Home-page: http://www.pygtk.org/ Author: James Henstridge Author-email: james@daa.com.au Maintainer: Johan Dahlin Maintainer-email: johan@gnome.org License: GNU LGPL Download-url: ftp://ftp.gnome.org/pub/GNOME/sources/pygtk/2.24/pygtk-2.24.0.tar.gz Description: PyGTK allows you to write full featured GTK programs in Python. It is targetted at GTK 2.x, and can be used in conjunction with gnome-python to write Gnome applications. Platform: POSIX, Windows Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: X11 Applications :: GTK Classifier: Environment :: Win32 (MS Windows) Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL) Classifier: Operating System :: POSIX Classifier: Operating System :: Microsoft :: Windows Classifier: Programming Language :: C Classifier: Programming Language :: Python Classifier: Topic :: Software Development :: Libraries :: Python Modules pygtk-2.24.0/README0000644000175000017500000000725211545325344010552 00000000000000PyGTK ===== Original authors: James Henstridge Johan Dahlin Past maintainers: Gustavo J A M Carneiro Paul Pogonyshev Gian Mario Tagliaretti Maintainers: John Stowers Dieter Verfaillie This archive contains modules that allow you to use GTK+-2 in Python programs. At present, it is a complete set of bindings up to and including the gtk+-2.24 API. If you have any enhancements or bug reports, please file them in bugzilla at: http://bugzilla.gnome.org/enter_bug.cgi?product=pygtk If you have a patch, file the bug first and then use the "create new attachment" link on the bug's info page. My preferred format for patches is unified diff format (ie. diff -u). Please don't send me diffs which don't have any context, as these make it very difficult to see what the patch does. New Versions ============ New versions of this package can be found at: http://ftp.gnome.org/pub/GNOME/sources/pygtk/ Mailing list ============ There is a mailing list for pygtk. You can subscribe to it through the web interface: http://www.daa.com.au/mailman/listinfo/pygtk Requirements ============ * C compiler (GCC, MSVC and mingw supported) * Python 2.3.5 or higher * PyGObject 2.21.3 or higher * Pycairo 1.0.2 or higher * Glib 2.8.0 or higher * GTK+ 2.8.0 or higher (optional) or GTK+ 2.10.0 or higher for 2.10 API GTK+ 2.12.0 or higher for 2.12 API GTK+ 2.14.0 or higher for 2.14 API GTK+ 2.16.0 or higher for 2.16 API GTK+ 2.18.0 or higher for 2.18 API GTK+ 2.20.0 or higher for 2.20 API GTK+ 2.22.0 or higher for 2.22 API GTK+ 2.24.0 or higher for 2.24 API * libglade 2.5.0 or higher (optional) * pycairo 1.0.2 or higher (optional) * numpy (optional) This release is supporting the following GTK+ releases: 2.8.x 2.10.x 2.12.x 2.14.x 2.16.x 2.18.x 2.20.x 2.22.x 2.24.x To include support for the 2.10 API you'll need GTK+ 2.10.0 etc. Copyright Information ===================== This software is covered by the GNU Lesser General Public Licence (version 2.1, or if you choose, a later version). Basically just don't say you wrote bits you didn't. Compilation =========== PyGTK uses the standard autotools for the build infrastructure. To build, it should be as simple as running: $ ./configure --prefix= $ make $ make install To build the reference documentation, supply the argument "--enable-docs" to configure. If your Python interpreter isn't in the path, or is not called "python", you can set the PYTHON environment variable to the full path of the interpreter: $ PYTHON=/prefix/bin/python $ export PYTHON If configure can't find GTK+, you may need to set the PKG_CONFIG_PATH environment variable to help it find the libraries. The "make install" target will generate normal and optimised bytecode for all the .py files. Note. If you're installing to another prefix than the one where python is installed you'll need to set the PYTHONPATH variable to the $prefix/lib/pythonX.Y/site-packages directory created by the PyGTK installation. Tests ===== After having compiled and installed pygtk, you may want to test them. There are a number of example programs available in the examples/ subdirectory. Getting Help ============ If you have questions about programming with PyGTK, you might want to send a message to the mailing list (information on subscribing is above). Alternatively, your question may be answered in the FAQ: http://www.async.com.br/faq/pygtk/?req=index pygtk-2.24.0/docs/0000755000175000017500000000000011545327523010675 500000000000000pygtk-2.24.0/docs/Makefile.in0000644000175000017500000011404711545325677012701 00000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = docs DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(CSSdir)" DATA = $(CSS_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ ATK_CFLAGS = @ATK_CFLAGS@ ATK_LIBS = @ATK_LIBS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODEGENDIR = @CODEGENDIR@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ GTK210_CFLAGS = @GTK210_CFLAGS@ GTK210_LIBS = @GTK210_LIBS@ GTK212_CFLAGS = @GTK212_CFLAGS@ GTK212_LIBS = @GTK212_LIBS@ GTK214_CFLAGS = @GTK214_CFLAGS@ GTK214_LIBS = @GTK214_LIBS@ GTK216_CFLAGS = @GTK216_CFLAGS@ GTK216_LIBS = @GTK216_LIBS@ GTK218_CFLAGS = @GTK218_CFLAGS@ GTK218_LIBS = @GTK218_LIBS@ GTK220_CFLAGS = @GTK220_CFLAGS@ GTK220_LIBS = @GTK220_LIBS@ GTK222_CFLAGS = @GTK222_CFLAGS@ GTK222_LIBS = @GTK222_LIBS@ GTK224_CFLAGS = @GTK224_CFLAGS@ GTK224_LIBS = @GTK224_LIBS@ GTKUNIXPRINT_CFLAGS = @GTKUNIXPRINT_CFLAGS@ GTKUNIXPRINT_LIBS = @GTKUNIXPRINT_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ HAVE_GTK_2_10 = @HAVE_GTK_2_10@ HAVE_GTK_2_12 = @HAVE_GTK_2_12@ HAVE_GTK_2_14 = @HAVE_GTK_2_14@ HAVE_GTK_2_16 = @HAVE_GTK_2_16@ HAVE_GTK_2_18 = @HAVE_GTK_2_18@ HAVE_GTK_2_20 = @HAVE_GTK_2_20@ HAVE_GTK_2_22 = @HAVE_GTK_2_22@ HAVE_GTK_2_24 = @HAVE_GTK_2_24@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBGLADE_CFLAGS = @LIBGLADE_CFLAGS@ LIBGLADE_LIBS = @LIBGLADE_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOCAIRO_CFLAGS = @PANGOCAIRO_CFLAGS@ PANGOCAIRO_LIBS = @PANGOCAIRO_LIBS@ PANGO_CFLAGS = @PANGO_CFLAGS@ PANGO_LIBS = @PANGO_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PYCAIRO_CFLAGS = @PYCAIRO_CFLAGS@ PYCAIRO_LIBS = @PYCAIRO_LIBS@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_DATADIR = @PYGOBJECT_DATADIR@ PYGOBJECT_DEFSDIR = @PYGOBJECT_DEFSDIR@ PYGOBJECT_FIXXREF = @PYGOBJECT_FIXXREF@ PYGOBJECT_INCLUDEDIR = @PYGOBJECT_INCLUDEDIR@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYGOBJECT_PYGDOCS = @PYGOBJECT_PYGDOCS@ PYGTK_CODEGEN_DEFINES = @PYGTK_CODEGEN_DEFINES@ PYGTK_MAJOR_VERSION = @PYGTK_MAJOR_VERSION@ PYGTK_MICRO_VERSION = @PYGTK_MICRO_VERSION@ PYGTK_MINOR_VERSION = @PYGTK_MINOR_VERSION@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADING_CFLAGS = @THREADING_CFLAGS@ VERSION = @VERSION@ XSLTPROC = @XSLTPROC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ BUILDDIR = $(top_builddir)/docs REF_VERSION = $(PYGTK_MAJOR_VERSION).$(PYGTK_MINOR_VERSION) FULL_VERSION = $(REF_VERSION).$(PYGTK_MICRO_VERSION) HTML_STYLE = $(PYGOBJECT_DATADIR)/pygobject/xsl/ref-html-style.xsl PDF_STYLE = $(PYGOBJECT_DATADIR)/pygobject/xsl/pdf-style.xsl XMLFILES = \ reference/pygtk2-ref.xml \ reference/pygtk-atkaction.xml \ reference/pygtk-atk-classes.xml \ reference/pygtk-atkcomponent.xml \ reference/pygtk-atk-constants.xml \ reference/pygtk-atkdocument.xml \ reference/pygtk-atkeditabletext.xml \ reference/pygtk-atkgobjectaccessible.xml \ reference/pygtk-atkhyperlink.xml \ reference/pygtk-atkhypertext.xml \ reference/pygtk-atkimage.xml \ reference/pygtk-atkimplementor.xml \ reference/pygtk-atknoopobjectfactory.xml \ reference/pygtk-atknoopobject.xml \ reference/pygtk-atkobjectfactory.xml \ reference/pygtk-atkobject.xml \ reference/pygtk-atkrectangle.xml \ reference/pygtk-atkregistry.xml \ reference/pygtk-atkrelationset.xml \ reference/pygtk-atkrelation.xml \ reference/pygtk-atkselection.xml \ reference/pygtk-atkstateset.xml \ reference/pygtk-atkstreamablecontent.xml \ reference/pygtk-atktable.xml \ reference/pygtk-atktext.xml \ reference/pygtk-atkvalue.xml \ reference/pygtk-gdkapplaunchcontext.xml \ reference/pygtk-gdkatom.xml \ reference/pygtk-gdkcairocontext.xml \ reference/pygtk-gdk-classes.xml \ reference/pygtk-gdkcolormap.xml \ reference/pygtk-gdkcolor.xml \ reference/pygtk-gdk-constants.xml \ reference/pygtk-gdkcursor.xml \ reference/pygtk-gdkdevice.xml \ reference/pygtk-gdkdisplaymanager.xml \ reference/pygtk-gdkdisplay.xml \ reference/pygtk-gdkdragcontext.xml \ reference/pygtk-gdkdrawable.xml \ reference/pygtk-gdkevent.xml \ reference/pygtk-gdkfont.xml \ reference/pygtk-gdk-functions.xml \ reference/pygtk-gdkgc.xml \ reference/pygtk-gdkimage.xml \ reference/pygtk-gdkkeymap.xml \ reference/pygtk-gdkpangorenderer.xml \ reference/pygtk-gdkpixbufanimationiter.xml \ reference/pygtk-gdkpixbufanimation.xml \ reference/pygtk-gdkpixbufloader.xml \ reference/pygtk-gdkpixbuf.xml \ reference/pygtk-gdkpixmap.xml \ reference/pygtk-gdkrectangle.xml \ reference/pygtk-gdkregion.xml \ reference/pygtk-gdkscreen.xml \ reference/pygtk-gdkwindow.xml \ reference/pygtk-gdkvisual.xml \ reference/pygtk-glade-classes.xml \ reference/pygtk-gladexml.xml \ reference/pygtk-gtkaboutdialog.xml \ reference/pygtk-gtkaccelgroup.xml \ reference/pygtk-gtkaccellabel.xml \ reference/pygtk-gtkaccelmap.xml \ reference/pygtk-gtkaccessible.xml \ reference/pygtk-gtkactiongroup.xml \ reference/pygtk-gtkaction.xml \ reference/pygtk-gtkactivatable.xml \ reference/pygtk-gtkadjustment.xml \ reference/pygtk-gtkalignment.xml \ reference/pygtk-gtkarrow.xml \ reference/pygtk-gtkaspectframe.xml \ reference/pygtk-gtkassistant.xml \ reference/pygtk-gtkbin.xml \ reference/pygtk-gtkborder.xml \ reference/pygtk-gtkbox.xml \ reference/pygtk-gtkbuttonbox.xml \ reference/pygtk-gtkbuildable.xml \ reference/pygtk-gtkbuilder.xml \ reference/pygtk-gtkbutton.xml \ reference/pygtk-gtkcalendar.xml \ reference/pygtk-gtkcelleditable.xml \ reference/pygtk-gtkcelllayout.xml \ reference/pygtk-gtkcellrendereraccel.xml \ reference/pygtk-gtkcellrenderercombo.xml \ reference/pygtk-gtkcellrendererpixbuf.xml \ reference/pygtk-gtkcellrendererprogress.xml \ reference/pygtk-gtkcellrendererspin.xml \ reference/pygtk-gtkcellrendererspinner.xml \ reference/pygtk-gtkcellrenderertext.xml \ reference/pygtk-gtkcellrenderertoggle.xml \ reference/pygtk-gtkcellrenderer.xml \ reference/pygtk-gtkcellview.xml \ reference/pygtk-gtkcheckbutton.xml \ reference/pygtk-gtkcheckmenuitem.xml \ reference/pygtk-gtk-classes.xml \ reference/pygtk-gtkclipboard.xml \ reference/pygtk-gtkcolorbutton.xml \ reference/pygtk-gtkcolorselectiondialog.xml \ reference/pygtk-gtkcolorselection.xml \ reference/pygtk-gtkcomboboxentry.xml \ reference/pygtk-gtkcombobox.xml \ reference/pygtk-gtkcomboboxtext.xml \ reference/pygtk-gtkcombo.xml \ reference/pygtk-gtk-constants.xml \ reference/pygtk-gtkcontainer.xml \ reference/pygtk-gtkcurve.xml \ reference/pygtk-gtkdialog.xml \ reference/pygtk-gtkdrawingarea.xml \ reference/pygtk-gtkeditable.xml \ reference/pygtk-gtkentrycompletion.xml \ reference/pygtk-gtkentry.xml \ reference/pygtk-gtkentrybuffer.xml \ reference/pygtk-gtkeventbox.xml \ reference/pygtk-gtkexpander.xml \ reference/pygtk-gtkfilechooserbutton.xml \ reference/pygtk-gtkfilechooserdialog.xml \ reference/pygtk-gtkfilechooserwidget.xml \ reference/pygtk-gtkfilechooser.xml \ reference/pygtk-gtkfilefilter.xml \ reference/pygtk-gtkfileselection.xml \ reference/pygtk-gtkfixed.xml \ reference/pygtk-gtkfontbutton.xml \ reference/pygtk-gtkfontselectiondialog.xml \ reference/pygtk-gtkfontselection.xml \ reference/pygtk-gtkframe.xml \ reference/pygtk-gtk-functions.xml \ reference/pygtk-gtkgammacurve.xml \ reference/pygtk-gtkhandlebox.xml \ reference/pygtk-gtkhbox.xml \ reference/pygtk-gtkhbuttonbox.xml \ reference/pygtk-gtkhpaned.xml \ reference/pygtk-gtkhruler.xml \ reference/pygtk-gtkhscale.xml \ reference/pygtk-gtkhscrollbar.xml \ reference/pygtk-gtkhseparator.xml \ reference/pygtk-gtkiconfactory.xml \ reference/pygtk-gtkiconinfo.xml \ reference/pygtk-gtkiconset.xml \ reference/pygtk-gtkiconsource.xml \ reference/pygtk-gtkicontheme.xml \ reference/pygtk-gtkiconview.xml \ reference/pygtk-gtkimagemenuitem.xml \ reference/pygtk-gtkimage.xml \ reference/pygtk-gtkimcontextsimple.xml \ reference/pygtk-gtkimcontext.xml \ reference/pygtk-gtkimmulticontext.xml \ reference/pygtk-gtkinfobar.xml \ reference/pygtk-gtkinputdialog.xml \ reference/pygtk-gtkinvisible.xml \ reference/pygtk-gtkitemfactory.xml \ reference/pygtk-gtkitem.xml \ reference/pygtk-gtklabel.xml \ reference/pygtk-gtklayout.xml \ reference/pygtk-gtklinkbutton.xml \ reference/pygtk-gtkliststore.xml \ reference/pygtk-gtkmenubar.xml \ reference/pygtk-gtkmenuitem.xml \ reference/pygtk-gtkmenushell.xml \ reference/pygtk-gtkmenutoolbutton.xml \ reference/pygtk-gtkmenu.xml \ reference/pygtk-gtkmessagedialog.xml \ reference/pygtk-gtkmisc.xml \ reference/pygtk-gtkmountoperation.xml \ reference/pygtk-gtknotebook.xml \ reference/pygtk-gtkobject.xml \ reference/pygtk-gtkoffscreenwindow.xml \ reference/pygtk-gtkoptionmenu.xml \ reference/pygtk-gtkpagesetupunixdialog.xml \ reference/pygtk-gtkpagesetup.xml \ reference/pygtk-gtkpaned.xml \ reference/pygtk-gtkpapersize.xml \ reference/pygtk-gtkplug.xml \ reference/pygtk-gtkprintcontext.xml \ reference/pygtk-gtkprinter.xml \ reference/pygtk-gtkprintjob.xml \ reference/pygtk-gtkprintoperationpreview.xml \ reference/pygtk-gtkprintoperation.xml \ reference/pygtk-gtkprintsettings.xml \ reference/pygtk-gtkprintunixdialog.xml \ reference/pygtk-gtkprogressbar.xml \ reference/pygtk-gtkradioaction.xml \ reference/pygtk-gtkradiobutton.xml \ reference/pygtk-gtkradiomenuitem.xml \ reference/pygtk-gtkradiotoolbutton.xml \ reference/pygtk-gtkrange.xml \ reference/pygtk-gtkrcstyle.xml \ reference/pygtk-gtkrecentaction.xml \ reference/pygtk-gtkrecentchooserdialog.xml \ reference/pygtk-gtkrecentchoosermenu.xml \ reference/pygtk-gtkrecentchooserwidget.xml \ reference/pygtk-gtkrecentchooser.xml \ reference/pygtk-gtkrecentfilter.xml \ reference/pygtk-gtkrecentinfo.xml \ reference/pygtk-gtkrecentmanager.xml \ reference/pygtk-gtkrequisition.xml \ reference/pygtk-gtkruler.xml \ reference/pygtk-gtkscale.xml \ reference/pygtk-gtkscalebutton.xml \ reference/pygtk-gtkscrollbar.xml \ reference/pygtk-gtkscrolledwindow.xml \ reference/pygtk-gtkselectiondata.xml \ reference/pygtk-gtkseparatormenuitem.xml \ reference/pygtk-gtkseparatortoolitem.xml \ reference/pygtk-gtkseparator.xml \ reference/pygtk-gtksettings.xml \ reference/pygtk-gtksizegroup.xml \ reference/pygtk-gtksocket.xml \ reference/pygtk-gtkspinbutton.xml \ reference/pygtk-gtkspinner.xml \ reference/pygtk-gtkstatusbar.xml \ reference/pygtk-gtkstatusicon.xml \ reference/pygtk-gtk-stock-items.xml \ reference/pygtk-gtkstyle.xml \ reference/pygtk-gtktable.xml \ reference/pygtk-gtktearoffmenuitem.xml \ reference/pygtk-gtktextattributes.xml \ reference/pygtk-gtktextbuffer.xml \ reference/pygtk-gtktextchildanchor.xml \ reference/pygtk-gtktextiter.xml \ reference/pygtk-gtktextmark.xml \ reference/pygtk-gtktexttagtable.xml \ reference/pygtk-gtktexttag.xml \ reference/pygtk-gtktextview.xml \ reference/pygtk-gtktoggleaction.xml \ reference/pygtk-gtktogglebutton.xml \ reference/pygtk-gtktoggletoolbutton.xml \ reference/pygtk-gtktoolbar.xml \ reference/pygtk-gtktoolbutton.xml \ reference/pygtk-gtktoolitem.xml \ reference/pygtk-gtktoolitemgroup.xml \ reference/pygtk-gtktoolpalette.xml \ reference/pygtk-gtktoolshell.xml \ reference/pygtk-gtktooltip.xml \ reference/pygtk-gtktooltips.xml \ reference/pygtk-gtktreedragdest.xml \ reference/pygtk-gtktreedragsource.xml \ reference/pygtk-gtktreeiter.xml \ reference/pygtk-gtktreemodelfilter.xml \ reference/pygtk-gtktreemodelsort.xml \ reference/pygtk-gtktreemodel.xml \ reference/pygtk-gtktreerowreference.xml \ reference/pygtk-gtktreeselection.xml \ reference/pygtk-gtktreesortable.xml \ reference/pygtk-gtktreestore.xml \ reference/pygtk-gtktreeviewcolumn.xml \ reference/pygtk-gtktreeview.xml \ reference/pygtk-gtkuimanager.xml \ reference/pygtk-gtkvbox.xml \ reference/pygtk-gtkvbuttonbox.xml \ reference/pygtk-gtkviewport.xml \ reference/pygtk-gtkvolumebutton.xml \ reference/pygtk-gtkvpaned.xml \ reference/pygtk-gtkvruler.xml \ reference/pygtk-gtkvscale.xml \ reference/pygtk-gtkvscrollbar.xml \ reference/pygtk-gtkvseparator.xml \ reference/pygtk-gtkwidget.xml \ reference/pygtk-gtkwindowgroup.xml \ reference/pygtk-gtkwindow.xml \ reference/pygtk-hierarchy.xml \ reference/pygtk-introduction.xml \ reference/pygtk-pangoattribute.xml \ reference/pygtk-pangoattriter.xml \ reference/pygtk-pangoattrlist.xml \ reference/pygtk-pangocairocairocontext.xml \ reference/pygtk-pangocairocairofontmap.xml \ reference/pygtk-pangocairo-classes.xml \ reference/pygtk-pangocairo-constants.xml \ reference/pygtk-pangocairo-functions.xml \ reference/pygtk-pango-classes.xml \ reference/pygtk-pangocolor.xml \ reference/pygtk-pango-constants.xml \ reference/pygtk-pangocontext.xml \ reference/pygtk-pangofontdescription.xml \ reference/pygtk-pangofontface.xml \ reference/pygtk-pangofontfamily.xml \ reference/pygtk-pangofontmap.xml \ reference/pygtk-pangofontmetrics.xml \ reference/pygtk-pangofontsetsimple.xml \ reference/pygtk-pangofontset.xml \ reference/pygtk-pangofont.xml \ reference/pygtk-pango-functions.xml \ reference/pygtk-pangoglyphstring.xml \ reference/pygtk-pangolanguage.xml \ reference/pygtk-pangolayoutiter.xml \ reference/pygtk-pangolayoutline.xml \ reference/pygtk-pangolayout.xml \ reference/pygtk-pango-markup.xml \ reference/pygtk-pangorenderer.xml \ reference/pygtk-pangotabarray.xml \ reference/pygtk-pygtkgenericcellrenderer.xml \ reference/pygtk-pygtkgenerictreemodel.xml \ reference/pygtk-pygtktreemodelrowiter.xml \ reference/pygtk-pygtktreemodelrow.xml \ reference/pygtk-unixprint-classes.xml \ reference/pygtk-unixprint-constants.xml \ reference/pygtk-unixprint-functions.xml HTML_FILES = \ html/atk-class-reference.html \ html/atk-constants.html \ html/class-atkaction.html \ html/class-atkcomponent.html \ html/class-atkdocument.html \ html/class-atkeditabletext.html \ html/class-atkgobjectaccessible.html \ html/class-atkhyperlink.html \ html/class-atkhypertext.html \ html/class-atkimage.html \ html/class-atkimplementor.html \ html/class-atknoopobjectfactory.html \ html/class-atknoopobject.html \ html/class-atkobjectfactory.html \ html/class-atkobject.html \ html/class-atkrectangle.html \ html/class-atkregistry.html \ html/class-atkrelation.html \ html/class-atkrelationset.html \ html/class-atkselection.html \ html/class-atkstateset.html \ html/class-atkstreamablecontent.html \ html/class-atktable.html \ html/class-atktext.html \ html/class-atkvalue.html \ html/class-gdkatom.html \ html/class-gdkapplaunchcontext.html \ html/class-gdkcairocontext.html \ html/class-gdkcolor.html \ html/class-gdkcolormap.html \ html/class-gdkcursor.html \ html/class-gdkdevice.html \ html/class-gdkdisplay.html \ html/class-gdkdisplaymanager.html \ html/class-gdkdragcontext.html \ html/class-gdkdrawable.html \ html/class-gdkevent.html \ html/class-gdkgc.html \ html/class-gdkimage.html \ html/class-gdkkeymap.html \ html/class-gdkpangorenderer.html \ html/class-gdkpixbufanimation.html \ html/class-gdkpixbufanimationiter.html \ html/class-gdkpixbuf.html \ html/class-gdkpixbufloader.html \ html/class-gdkpixmap.html \ html/class-gdkrectangle.html \ html/class-gdkregion.html \ html/class-gdkscreen.html \ html/class-gdkwindow.html \ html/class-gdkvisual.html \ html/class-gladexml.html \ html/class-gtkaboutdialog.html \ html/class-gtkaccelgroup.html \ html/class-gtkaccellabel.html \ html/class-gtkaccelmap.html \ html/class-gtkaccessible.html \ html/class-gtkactiongroup.html \ html/class-gtkaction.html \ html/class-gtkactivatable.html \ html/class-gtkadjustment.html \ html/class-gtkalignment.html \ html/class-gtkarrow.html \ html/class-gtkaspectframe.html \ html/class-gtkassistant.html \ html/class-gtkbin.html \ html/class-gtkborder.html \ html/class-gtkbox.html \ html/class-gtkbuttonbox.html \ html/class-gtkbuildable.html \ html/class-gtkbuilder.html \ html/class-gtkbutton.html \ html/class-gtkcalendar.html \ html/class-gtkcelleditable.html \ html/class-gtkcelllayout.html \ html/class-gtkcellrendereraccel.html \ html/class-gtkcellrenderercombo.html \ html/class-gtkcellrenderer.html \ html/class-gtkcellrendererpixbuf.html \ html/class-gtkcellrendererprogress.html \ html/class-gtkcellrendererspin.html \ html/class-gtkcellrendererspinner.html \ html/class-gtkcellrenderertext.html \ html/class-gtkcellrenderertoggle.html \ html/class-gtkcellview.html \ html/class-gtkcheckbutton.html \ html/class-gtkcheckmenuitem.html \ html/class-gtkclipboard.html \ html/class-gtkcolorbutton.html \ html/class-gtkcolorselectiondialog.html \ html/class-gtkcolorselection.html \ html/class-gtkcomboboxentry.html \ html/class-gtkcombobox.html \ html/class-gtkcomboboxtext.html \ html/class-gtkcombo.html \ html/class-gtkcontainer.html \ html/class-gtkcurve.html \ html/class-gtkdialog.html \ html/class-gtkdrawingarea.html \ html/class-gtkeditable.html \ html/class-gtkentrycompletion.html \ html/class-gtkentry.html \ html/class-gtkentrybuffer.html \ html/class-gtkeventbox.html \ html/class-gtkexpander.html \ html/class-gtkfilechooserbutton.html \ html/class-gtkfilechooserdialog.html \ html/class-gtkfilechooser.html \ html/class-gtkfilechooserwidget.html \ html/class-gtkfilefilter.html \ html/class-gtkfileselection.html \ html/class-gtkfixed.html \ html/class-gtkfontbutton.html \ html/class-gtkfontselectiondialog.html \ html/class-gtkfontselection.html \ html/class-gtkframe.html \ html/class-gtkgammacurve.html \ html/class-gtkhandlebox.html \ html/class-gtkhbox.html \ html/class-gtkhbuttonbox.html \ html/class-gtkhpaned.html \ html/class-gtkhruler.html \ html/class-gtkhscale.html \ html/class-gtkhscrollbar.html \ html/class-gtkhseparator.html \ html/class-gtkiconfactory.html \ html/class-gtkiconinfo.html \ html/class-gtkiconset.html \ html/class-gtkiconsource.html \ html/class-gtkicontheme.html \ html/class-gtkiconview.html \ html/class-gtkimage.html \ html/class-gtkimagemenuitem.html \ html/class-gtkimcontext.html \ html/class-gtkimcontextsimple.html \ html/class-gtkimmulticontext.html \ html/class-gtkinfobar.html \ html/class-gtkinputdialog.html \ html/class-gtkinvisible.html \ html/class-gtkitemfactory.html \ html/class-gtkitem.html \ html/class-gtklabel.html \ html/class-gtklayout.html \ html/class-gtklinkbutton.html \ html/class-gtkliststore.html \ html/class-gtkmenubar.html \ html/class-gtkmenu.html \ html/class-gtkmenuitem.html \ html/class-gtkmenushell.html \ html/class-gtkmenutoolbutton.html \ html/class-gtkmessagedialog.html \ html/class-gtkmisc.html \ html/class-gtkmountoperation.html \ html/class-gtknotebook.html \ html/class-gtkobject.html \ html/class-gtkoffscreenwindow.html \ html/class-gtkoptionmenu.html \ html/class-gtkpagesetup.html \ html/class-gtkpagesetupunixdialog.html \ html/class-gtkpaned.html \ html/class-gtkpapersize.html \ html/class-gtkplug.html \ html/class-gtkprintcontext.html \ html/class-gtkprinter.html \ html/class-gtkprintjob.html \ html/class-gtkprintoperation.html \ html/class-gtkprintoperationpreview.html \ html/class-gtkprintsettings.html \ html/class-gtkprintunixdialog.html \ html/class-gtkprogressbar.html \ html/class-gtkradioaction.html \ html/class-gtkradiobutton.html \ html/class-gtkradiomenuitem.html \ html/class-gtkradiotoolbutton.html \ html/class-gtkrange.html \ html/class-gtkrcstyle.html \ html/class-gtkrecentaction.html \ html/class-gtkrecentchooserdialog.html \ html/class-gtkrecentchooser.html \ html/class-gtkrecentchoosermenu.html \ html/class-gtkrecentchooserwidget.html \ html/class-gtkrecentfilter.html \ html/class-gtkrecentinfo.html \ html/class-gtkrecentmanager.html \ html/class-gtkrequisition.html \ html/class-gtkruler.html \ html/class-gtkscale.html \ html/class-gtkscalebutton.html \ html/class-gtkscrollbar.html \ html/class-gtkscrolledwindow.html \ html/class-gtkselectiondata.html \ html/class-gtkseparator.html \ html/class-gtkseparatormenuitem.html \ html/class-gtkseparatortoolitem.html \ html/class-gtksettings.html \ html/class-gtksizegroup.html \ html/class-gtksocket.html \ html/class-gtkspinbutton.html \ html/class-gtkspinner.html \ html/class-gtkstatusbar.html \ html/class-gtkstatusicon.html \ html/class-gtkstyle.html \ html/class-gtktable.html \ html/class-gtktearoffmenuitem.html \ html/class-gtktextattributes.html \ html/class-gtktextbuffer.html \ html/class-gtktextchildanchor.html \ html/class-gtktextiter.html \ html/class-gtktextmark.html \ html/class-gtktexttag.html \ html/class-gtktexttagtable.html \ html/class-gtktextview.html \ html/class-gtktoggleaction.html \ html/class-gtktogglebutton.html \ html/class-gtktoggletoolbutton.html \ html/class-gtktoolbar.html \ html/class-gtktoolbutton.html \ html/class-gtktoolitem.html \ html/class-gtktoolitemgroup.html \ html/class-gtktoolpalette.html \ html/class-gtktoolshell.html \ html/class-gtktooltip.html \ html/class-gtktooltips.html \ html/class-gtktreedragdest.html \ html/class-gtktreedragsource.html \ html/class-gtktreeiter.html \ html/class-gtktreemodelfilter.html \ html/class-gtktreemodel.html \ html/class-gtktreemodelsort.html \ html/class-gtktreerowreference.html \ html/class-gtktreeselection.html \ html/class-gtktreesortable.html \ html/class-gtktreestore.html \ html/class-gtktreeviewcolumn.html \ html/class-gtktreeview.html \ html/class-gtkuimanager.html \ html/class-gtkvbox.html \ html/class-gtkvbuttonbox.html \ html/class-gtkviewport.html \ html/class-gtkvolumebutton.html \ html/class-gtkvpaned.html \ html/class-gtkvruler.html \ html/class-gtkvscale.html \ html/class-gtkvscrollbar.html \ html/class-gtkvseparator.html \ html/class-gtkwidget.html \ html/class-gtkwindowgroup.html \ html/class-gtkwindow.html \ html/class-hierarchy.html \ html/class-pangoattribute.html \ html/class-pangoattriterator.html \ html/class-pangoattrlist.html \ html/class-pangocairocairocontext.html \ html/class-pangocairocairofontmap.html \ html/class-pangocolor.html \ html/class-pangocontext.html \ html/class-pangofontdescription.html \ html/class-pangofontface.html \ html/class-pangofontfamily.html \ html/class-pangofont.html \ html/class-pangofontmap.html \ html/class-pangofontmetrics.html \ html/class-pangofontset.html \ html/class-pangofontsetsimple.html \ html/class-pangoglyphstring.html \ html/class-pangolanguage.html \ html/class-pangolayout.html \ html/class-pangolayoutiter.html \ html/class-pangolayoutline.html \ html/class-pangorenderer.html \ html/class-pangotabarray.html \ html/class-pygtkgenericcellrenderer.html \ html/class-pygtkgenerictreemodel.html \ html/class-pygtktreemodelrow.html \ html/class-pygtktreemodelrowiter.html \ html/gdk-class-reference.html \ html/gdk-constants.html \ html/gdk-functions.html \ html/glade-class-reference.html \ html/gtk-class-reference.html \ html/gtk-constants.html \ html/gtk-functions.html \ html/gtk-stock-items.html \ html/index.html \ html/index.sgml \ html/pangocairo-class-reference.html \ html/pangocairo-constants.html \ html/pangocairo-functions.html \ html/pango-class-reference.html \ html/pango-constants.html \ html/pango-functions.html \ html/pango-markup-language.html \ html/pygtk.devhelp \ html/pygtk-introduction.html \ html/unixprint-class-reference.html \ html/unixprint-constants.html \ html/unixprint-functions.html CSS_FILES = $(PYGOBJECT_PYGDOCS)/style.css TARGET_DIR = $(datadir)/gtk-doc/html/pygtk CSSdir = $(TARGET_DIR) EXTRA_DIST = \ cursors icons images \ $(HTML_FILES) \ $(XMLFILES) \ $(XSLFILES) \ $(FIX_XREF) @ENABLE_DOCS_TRUE@BUILT_SOURCES = reference/builddate.xml $(HTML_FILES) @ENABLE_DOCS_TRUE@DISTCLEANFILES = reference/builddate.xml $(HTML_FILES) @ENABLE_DOCS_TRUE@CSS_DATA = $(CSS_FILES) all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu docs/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-CSSDATA: $(CSS_DATA) @$(NORMAL_INSTALL) test -z "$(CSSdir)" || $(MKDIR_P) "$(DESTDIR)$(CSSdir)" @list='$(CSS_DATA)'; test -n "$(CSSdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(CSSdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(CSSdir)" || exit $$?; \ done uninstall-CSSDATA: @$(NORMAL_UNINSTALL) @list='$(CSS_DATA)'; test -n "$(CSSdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(CSSdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(CSSdir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(CSSdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-CSSDATA install-data-local @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-CSSDATA uninstall-local .MAKE: all check install install-am install-data-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ dist-hook distclean distclean-generic distclean-libtool \ distdir dvi dvi-am html html-am info info-am install \ install-CSSDATA install-am install-data install-data-am \ install-data-hook install-data-local install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-CSSDATA uninstall-am uninstall-local dist-hook: rm -rf `find $(distdir)/cursors -name .svn` rm -rf `find $(distdir)/icons -name .svn` rm -rf `find $(distdir)/images -name .svn` install-data-local: installfiles=`echo $(srcdir)/html/*`; \ if test "$$installfiles" = '$(srcdir)/html/*'; \ then echo '-- Nothing to install' ; \ else \ $(mkinstalldirs) $(DESTDIR)$(TARGET_DIR) \ $(DESTDIR)$(TARGET_DIR)/icons \ $(DESTDIR)$(TARGET_DIR)/images \ $(DESTDIR)$(TARGET_DIR)/cursors; \ for i in $$installfiles; do \ echo '-- Installing '$$i ; \ $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \ done; \ echo '-- Installing $(srcdir)/html/index.sgml' ; \ $(INSTALL_DATA) $(srcdir)/html/index.sgml $(DESTDIR)$(TARGET_DIR) || :; \ for i in $(srcdir)/icons/*; do \ echo '-- Installing '$$i ; \ $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR)/icons; \ done; \ for i in $(srcdir)/images/*; do \ echo '-- Installing '$$i ; \ $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR)/images; \ done; \ for i in $(srcdir)/cursors/*; do \ echo '-- Installing '$$i ; \ $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR)/cursors; \ done; \ fi uninstall-local: rm -rf $(DESTDIR)$(TARGET_DIR)/* @ENABLE_DOCS_TRUE@install-data-hook: @ENABLE_DOCS_TRUE@ @$(PYGOBJECT_FIXXREF) -i $(PYGOBJECT_PYGDOCS) $(DESTDIR)$(TARGET_DIR) @ENABLE_DOCS_TRUE@reference/builddate.xml: @ENABLE_DOCS_TRUE@ @$(PYTHON) -c 'import datetime; print datetime.date.today()' > $@ # Do not add a builddate.xml dependency here, because the generated html # documentation will be included in the tarball so xsltproc is not needed to # install the documentation. Adding a builddate.xml dependency will force # the documentation to be rebuilt when it doesn't need to be. @ENABLE_DOCS_TRUE@$(HTML_FILES): $(XMLFILES) $(XSLFILES) @ENABLE_DOCS_TRUE@ @xsltproc --nonet --xinclude -o $(BUILDDIR)/html/ \ @ENABLE_DOCS_TRUE@ --path $(BUILDDIR)/reference:$(srcdir)/reference \ @ENABLE_DOCS_TRUE@ --stringparam gtkdoc.bookname "pygtk" \ @ENABLE_DOCS_TRUE@ --stringparam gtkdoc.version ${REF_VERSION} \ @ENABLE_DOCS_TRUE@ $(HTML_STYLE) $(srcdir)/reference/pygtk2-ref.xml # pdf: $(REFERENCE_DEPS) reference/builddate.xml # xsltproc --nonet --xinclude -o pygtk-ref.fo \ # $(PDF_STYLE) reference/pygtk2-ref.xml # pdfxmltex pygtk-ref.fo >output ‰ÛÀ”Ip¼H®ü™Á~ÊîÌéÁÈôgDL[Ñ £bߪ®ü¢àò$»58îÂñ´hÂ…éÄN™3ÆjÉ>mã ò¬Òe|iõÖIEND®B`‚pygtk-2.24.0/docs/cursors/exchange.png0000644000175000017500000000032711545325344014606 00000000000000‰PNG  IHDRóÿagAMA† 1è–_ŽIDATxÚ•“Á!C©ñÿùíeœeØ2º$4¥´€ˆˆ¤¸b½ÕȘ(`VÒº»ãˆGbW¤bo]’s±pÀmgÖ„«ŠõëŠ7©?r%Ue³Ê+$ÛIÌÎïih`Ã>ª4£¾MtMs–ÇnQºî·^Hü´v‹â|ç§Ró gŒþûò›t‰ù‹z´æIEND®B`‚pygtk-2.24.0/docs/cursors/based_arrow_up.png0000644000175000017500000000023011545325344016011 00000000000000‰PNG  IHDR [k, gAMA† 1è–_OIDATxÚ•PAÀ ‚Æÿ™Ö™JLu)`PR O_o,t#’gL‰"i1†»w‰¿~ \btSÔÛØµuNÒ+<íÛ&zûëĤ=Bï×/™tIEND®B`‚pygtk-2.24.0/docs/cursors/top_left_arrow.png0000644000175000017500000000030311545325344016044 00000000000000‰PNG  IHDRóÿagAMA† 1è–_zIDATxÚ¥‘IÀ =ˆÿÙ½@…PXÒæD¤xâl[­”¬Ú„’¤Ë€êØ|ÑÑl¿nª[ú…#†m>9ò~a%“8 y Ó†mŒc‘àX-0·§{ïÈÆM¶hYº+'%“Aä¤Üüù¯sN'ò¢+ônüóåKIEND®B`‚pygtk-2.24.0/docs/cursors/clock.png0000644000175000017500000000032711545325344014117 00000000000000‰PNG  IHDRÉV%gAMA† 1è–_ŽIDATxÚ­’Q €0 CñþWŽ®#˦(Zt¥éÈë’DOBXÍ’ NÞ{½´­EC!„g‡ 2Áp_ W¢Ì·•-³äÖ¦Ø+!Éç½ ŽP ÁhNÀâå^ã›5åºÜsM ?ÔrF`ÇøWœ }]ú7Ú·Ÿd¢·C)‘íVñ…øñº>;ýX¬—.ZIEND®B`‚pygtk-2.24.0/docs/cursors/hand2.png0000644000175000017500000000031511545325344014015 00000000000000‰PNG  IHDRóÿagAMA† 1è–_„IDATxÚ“AÀ wÿÿez)† ,¦^šXvœ ÌÌ I¶ÿ<,jvmµ¹<ëa€Úýؤ$ÔÙÄ>ÓÈ/“èe§Ö HA0@I.dtÔ’Ô¯’Ÿ‡Å›£s¯¿ûŽÒ žDÓ ý°5ð?a5êç•¶ «7Ó=Fþ ohŸIEND®B`‚pygtk-2.24.0/docs/cursors/pirate.png0000644000175000017500000000030711545325344014306 00000000000000‰PNG  IHDRóÿagAMA† 1è–_~IDATxÚ¥RAÀ kÿÿåî"†¡ˆ‹$TJ¡!I>§¿Õ±WEèÁ$+0$1‚hw÷E\Æõ×""~üY£$µªí}³]Äc£¸ÜAl-[Ä1|qŸ[‰7gzd([÷ÒÓ\¾1#[¦çª¸$´Êœæg'9\ùsªœ±ˆ(ÅIEND®B`‚pygtk-2.24.0/docs/cursors/bogosity.png0000644000175000017500000000030511545325344014657 00000000000000‰PNG  IHDRÉV%gAMA† 1è–_|IDATxÚ¥SAÀ [ ÿÿrwÂP³& Ô@ É'|…cï8 kÔ°.üÔ Vç L¡U°zÀÁ6R8—SÒqŽÏŸÂá•wCúrkz« S,~å¤çIEND®B`‚pygtk-2.24.0/docs/cursors/boat.png0000644000175000017500000000023211545325344013744 00000000000000‰PNG  IHDR ;*¬2gAMA† 1è–_QIDATxÚ¥QA ÛÀÿy] ¬V! K§c’4r’Ä|1žÇA™ [ä¾UÁTË[ó__ààqPæ 3J¢Bv†F…ì.QñÀž±Èí7ý« {IEND®B`‚pygtk-2.24.0/docs/cursors/bottom_left_corner.png0000644000175000017500000000027011545325344016707 00000000000000‰PNG  IHDRóÿagAMA† 1è–_oIDATxÚ¥“A!…øÿ/Ï^ÖEšíÓ:†jm’™Y䯩‰¾O}7œ©"Ñ8s?%ïˆâÜ«¨Ã ,TþÇ\ ÈÌ¥€Ì|ÜB4ÇÍÌ[è‚ͳîáB­HJ{ÖB9@ý@½‰)H½èL9?6-V7ÄIEND®B`‚pygtk-2.24.0/docs/cursors/bottom_right_corner.png0000644000175000017500000000026411545325344017075 00000000000000‰PNG  IHDRóÿagAMA† 1è–_kIDATxÚ¥“QÀ C[Âý¯ÜýÌňDaý’×Z#Q”$ÍgCC$Aà+™c³q\w!ÉqÌ3ÙL—”BŽ€.Ä6qKKZþ 'yö¾ïìñÛ¶¯…ò#€{®Žíš iÞÿL!ÁŸ[<¹#94%ÝÅÖIEND®B`‚pygtk-2.24.0/docs/cursors/diamond_cross.png0000644000175000017500000000030411545325344015643 00000000000000‰PNG  IHDRóÿagAMA† 1è–_{IDATxÚ­“KÀ Dy¦÷¿2ÝÔ†" ±š™>‚HpTUcmxZD>o€d"-"{¬ª–"QÚbKHü%yHq…ò áñ€¨öÊU}(w"ƒÖ˜’úõ,ž®þëŽÌÁd–vbq¬‘w¶‘‰È;îXö;cw1zIEND®B`‚pygtk-2.24.0/docs/cursors/leftbutton.png0000644000175000017500000000023011545325344015203 00000000000000‰PNG  IHDRÉV%gAMA† 1è–_OIDATxÚÝ“A À@'eÿÿåéu‘Òv‘BÙÜrˆÆ¨PeIÕ$«ZTs¥ÉÒ#î;×q*oÙþ©¸®¿òñ6œ«[Ø1°OÅé¼ä 9'P~NçIEND®B`‚pygtk-2.24.0/docs/cursors/ll_angle.png0000644000175000017500000000020111545325344014570 00000000000000‰PNG  IHDR Vu\çgAMA† 1è–_8IDATxÚcüÿÿÿ$ÀÈÈÈÈ€0A1P‡ª0"5°   Ç ^ „ââÿÿÿd:‰€+PÆú¢~0IEND®B`‚pygtk-2.24.0/docs/cursors/right_ptr.png0000644000175000017500000000024711545325344015027 00000000000000‰PNG  IHDR /î@gAMA† 1è–_^IDATxÚÑAÀ DÑñþWžn¨¡V@VFBÐhB’F‡ÌŒF”Âá ý`†>°B v`Ü €é/®‹¬hZÈ(THâ¸Ç8‚#‹Ê/ÜñÛR~T¹ÇëG–ŸMü©5ýIEND®B`‚pygtk-2.24.0/docs/cursors/center_ptr.png0000644000175000017500000000026011545325344015165 00000000000000‰PNG  IHDR "ažgAMA† 1è–_gIDATxÚ•’K! B ñþWfV&¤¢Ž¬ì‡×ÔÕ$I€Ç¬ Õú²¡ÓSމžÞ‹!ÑS;ú.ǽO቞jüC÷)t‚¤r¿Ç³ÇéD^–Žgà¹Ù3pÚ6ÜëQφq[²ë6f?=ÝŒIEND®B`‚pygtk-2.24.0/docs/cursors/left_ptr.png0000644000175000017500000000024511545325344014642 00000000000000‰PNG  IHDR /î@gAMA† 1è–_\IDATxÚ•A!ÛÆÿÙ½@BXí qlZ±M$ ‰ –¬x8ÁÊ‹Võº‚ÕeʰNM#¬éÿ^û¬|I2ºñ—Ñ ºSYÆ!¼Êœ¶w­¯\cÆ-'Lüï¢D²IEND®B`‚pygtk-2.24.0/docs/cursors/arrow.png0000644000175000017500000000027111545325344014154 00000000000000‰PNG  IHDRóÿagAMA† 1è–_pIDATxÚSí !Û¢÷åݯÊóÎPAJûPˆh@’Ö"ÉUcvˆì%$g•xM%.wg’”qô˜^ùï2ûGÀ6»iìö±µ|DÓ­óÏû²óî+P‘3³Kˆœ£ÏsQièªK€Ô¤}Ñ|ŽTIEND®B`‚pygtk-2.24.0/docs/cursors/question_arrow.png0000644000175000017500000000026311545325344016104 00000000000000‰PNG  IHDR À½…~gAMA† 1è–_jIDATxÚ}‘QÀ B‹Ùý¯Ü}L‚Ð&~¬aO@MwwÉ€îŽð: À:  Bv¢ûÇØÿ°$Œ ù‹·Xs Õ¦~¯ ]} Y5ŒWÙ€ÓSÛ½z ß9Õ›nˆÂBè€Éç7%“IEND®B`‚pygtk-2.24.0/docs/cursors/iron_cross.png0000644000175000017500000000030411545325344015177 00000000000000‰PNG  IHDRóÿagAMA† 1è–_{IDATxÚ¥“ÁÃ0CýÐþÿ—ÝK3¡¬P¢ùF°ºaÛ:€$±Èw=†mD~8!/Dî>YÙv¤^E2ù;ÁfL)òDþ¨D*²$}ŠˆÚºàQ™µ¯P™³:scât'r'B>¤é=¤fÄ$ª.fþ=ç ÿÑZPõºIEND®B`‚pygtk-2.24.0/docs/cursors/dotbox.png0000644000175000017500000000023411545325344014320 00000000000000‰PNG  IHDRH-ÑgAMA† 1è–_SIDATxÚ­’Á C·Øÿÿò:D‚2¥Ý¦Ïm H¦L¶‡q/šK´5lZÓŠR4ùDÒn·ÜÈÿ¢¾¼²˜áÇþAÍÄO{"RÆJÎ;%ï- ?|YIEND®B`‚pygtk-2.24.0/docs/cursors/based_arrow_down.png0000644000175000017500000000023511545325344016341 00000000000000‰PNG  IHDR [k, gAMA† 1è–_TIDATxÚIÀ0=(ÿÿ²{(­H•F(>!0^°m50$ Ø’lßÄŽè¹âó´uÉbÎqb†šEéÏAñÍVQwQ›Õ0—\ØL­É«LEõ½_JÐ6 ƒiuIEND®B`‚pygtk-2.24.0/docs/cursors/middlebutton.png0000644000175000017500000000022711545325344015515 00000000000000‰PNG  IHDRÉV%gAMA† 1è–_NIDATxÚÝ“Q À0 BŸ£÷¿òÛoW¡ƨ"&bHTÙD’D5É®•‹Æ+¼œb×I—TOëUJæ!ÜvˆYhÀ Î":¹Fî;pД±+XmÀ¿Ø¸ó½;§áßZ¶OËôe\¯åÆIEND®B`‚pygtk-2.24.0/docs/cursors/gumby.png0000644000175000017500000000032411545325344014144 00000000000000‰PNG  IHDRóÿagAMA† 1è–_‹IDATxÚSAÀ ‚Æÿ™]æDcë6.‹M‹Ð!1 ìA $IèÇÑ@–$ì7KúEÞä“÷P¯§Sðœý›¡¥Þ—“¹BN;pìnuBW’Ž2 … ÞxIĵ§­žŠ@¡ü §Eö%®µøè;·ð‘DÙC™bl)L#Ùð»HóðœYÔj*]•§ÏWIEND®B`‚pygtk-2.24.0/docs/cursors/sb_h_double_arrow.png0000644000175000017500000000023011545325344016474 00000000000000‰PNG  IHDR ívWgAMA† 1è–_OIDATxÚ¥‘A ÃVÿÿg½¨Ajt7ÐIFµK"¯XÐN€ìübžËc€bò†T}óDžõ/ùùç%Š‘H•÷‹¹ÊŽnÎUß´HIEND®B`‚pygtk-2.24.0/docs/cursors/top_tee.png0000644000175000017500000000021011545325344014452 00000000000000‰PNG  IHDR kç=gAMA† 1è–_?IDATxÚcüÿÿÿ ###Ù0Qbûÿÿÿ!.Àå ˜ËÈò%4lþC™ÿiâ…Q¨d ¡„B¹Vu¾ÒIEND®B`‚pygtk-2.24.0/docs/cursors/pencil.png0000644000175000017500000000027011545325344014273 00000000000000‰PNG  IHDR Í£õ9gAMA† 1è–_oIDATxÚ•’Q€@BÁûß™>Êj]SóÓŸ2R’HÂK€ïf(ž:= ²5Z:éÒ.Ó‚i( Åv7‰$SaF³HpME³õ”\i–¤ÙÞf_ÉU4ËgI3ü(§q Ù?¥ƒ™¬7ÿ½Î8 b1«7?® RIEND®B`‚pygtk-2.24.0/docs/cursors/top_right_corner.png0000644000175000017500000000027011545325344016370 00000000000000‰PNG  IHDRóÿagAMA† 1è–_oIDATxÚ¥“QÀ C©áþW~ûXLœ”O¥¥­(»(73“tL0n¦¯‚®‹U±«©Ï̳‹d²Â#i‘ßôª¦?‡žÉd@I2² &¸½ÛdµºàÁ 8R‚«,¼Z’ê<܃Î'šõ gD0€]€IIEND®B`‚pygtk-2.24.0/docs/cursors/X_cursor.png0000644000175000017500000000027311545325344014630 00000000000000‰PNG  IHDRóÿagAMA† 1è–_rIDATxÚ­S[ À0Kd÷¿²ûXΩt8¡Å<¥TU…+’DS,ÒP‰¬ž¿C"ˆäË%#[IæE*2°˜FÕ£ÏÚ¹Täû_D<¹[Sz²á †5ŽðÏGkìÈæÒad+çe”Æ‘Ý=W"œ~çÒé‚ý˜sÇzIEND®B`‚pygtk-2.24.0/docs/cursors/tcross.png0000644000175000017500000000022611545325344014337 00000000000000‰PNG  IHDR;Ö•JgAMA† 1è–_MIDATxÚå‘A 1Òÿ9{(….lÔëÒœŒ‘0’¤]|ÍŒHd˜\é§ð%}æwÇIEND®B`‚pygtk-2.24.0/docs/cursors/bottom_side.png0000644000175000017500000000025211545325344015331 00000000000000‰PNG  IHDRÉV%gAMA† 1è–_aIDATxÚÕ’Á À Cøÿ¿œ] ŒÒÔn;íØCRK †$U@¦™£Àxzæ7sS‰£fÆíº$·L V£ú¿ý2Í}F¶ÑL'ðq׫“a3Ù·,uyÃÜAYßOÞ›IEND®B`‚pygtk-2.24.0/docs/cursors/draft_large.png0000644000175000017500000000027111545325344015274 00000000000000‰PNG  IHDRÉV%gAMA† 1è–_pIDATxÚ’AÀ Óÿy{ÑÖR•Ä‹°Ì‚ÂAH S‘$©ìˆÌìŒÔŸzE¢„be×^…¾H?*À5êøT¹†’H!Íþ`aŸ(Ѳ¼“‘³Ñ?!¹'šlJõÄå? [NɰiAF>Š€­Ÿ%»7nIEND®B`‚pygtk-2.24.0/docs/cursors/hand1.png0000644000175000017500000000026211545325344014015 00000000000000‰PNG  IHDR Í£õ9gAMA† 1è–_iIDATxÚÍ’Á€ CûŒÿÿËõ K`Ñ9n6áBÚµHMض$K22°?9θû“àIÈDÖWaÛ8ºÛ™2컽ò”È›y‹.’tìÄZ:…„µx²?grîF‘5?`ý a‰ jQƒ¹*¸úIEND®B`‚pygtk-2.24.0/docs/cursors/crosshair.png0000644000175000017500000000021411545325344015014 00000000000000‰PNG  IHDRóÿagAMA† 1è–_CIDATxÚí’1 ¯Æÿ¹.&.ÞÂ@Ú4°í9LBã’o½ºòÒÈN„H*„KIüô¶ÁI…Ï&ÿ§­ÜôIEND®B`‚pygtk-2.24.0/docs/cursors/star.png0000644000175000017500000000031111545325344013766 00000000000000‰PNG  IHDRóÿagAMA† 1è–_€IDATxÚµSAÀ £üÿÏÝa’@ƒ¸-7Ñ–ÐlîÍ'0É#‰Û±J3ù…ƒ ÙëêvRá]×FYò‘PòiŒÐ‘p£( GNƒè¤ ]*UPü¯Tk!Û&*X6¢rÝ´e¾ã‹r0ý ŸÀÉÚ–Dik4‘”¸}Ðò\qIEND®B`‚pygtk-2.24.0/docs/cursors/sb_left_arrow.png0000644000175000017500000000020511545325344015647 00000000000000‰PNG  IHDR ;*¬2gAMA† 1è–_%h (`c"¬`LE³ÂÅåÿÄ`°rœÞä~ê. k÷AIEND®B`‚pygtk-2.24.0/docs/cursors/box_spiral.png0000644000175000017500000000025011545325344015161 00000000000000‰PNG  IHDRóÿagAMA† 1è–__IDATxÚ¥“IÀ 'Èÿÿ²{BHEiCðâ±Y0€í;€ˆ8¶½ N“L ²…?òV¡šä Pucf¬jÔ¬Ú¨V¦q3üY¡z¥ê’SƒÓg­.y3è~(uÉSD!<`bpIEND®B`‚pygtk-2.24.0/docs/cursors/icon.png0000644000175000017500000000023411545325344013751 00000000000000‰PNG  IHDRóÿagAMA† 1è–_SIDATxÚí“1À0}ùÿŸÝ%(*j3ÄC—z1 „-H²Œ lñŒí.÷N†07[o¨>`í wèbã©ø;øÚA ÙqsxÎÙ/¾ó¸üvvò¤ªIEND®B`‚pygtk-2.24.0/docs/cursors/sailboat.png0000644000175000017500000000025311545325344014620 00000000000000‰PNG  IHDRóÿagAMA† 1è–_bIDATxÚ­“I )ñÿ_Ö‹$*uéQÓ¢ŠÊU«º !²¢=®»f¡ *±O¿ŠÀ.S_èÿwÀÐ}ŒN³7¥ªÝÞ˜­çÌ{Ÿ8èÓÀ~ߨT `FÅàIEND®B`‚pygtk-2.24.0/docs/cursors/gobbler.png0000644000175000017500000000031211545325344014432 00000000000000‰PNG  IHDRóÿagAMA† 1è–_IDATxÚ¥“QÀ C[Ãý¯ÜýˆaN³&&j*<‰D’´Ú'I0Ô½1蘛gàìÚ½Èx \R¸××vB]!Ï{ \(äEŒ™wt­rø¤’ƨ>©eÙN=àEDè…«ޱmIfDü\¡bÜ?Õv¿N]WNMÅà_ÐU4­IEND®B`‚pygtk-2.24.0/docs/cursors/umbrella.png0000644000175000017500000000030311545325344014621 00000000000000‰PNG  IHDRóÿagAMA† 1è–_zIDATxÚÕSË À0 Òýÿ?»Ã0©‡Á`^JÌ[R I$)IŹ|‡¼:6I–ÍÔuÁ©²í%Цß«‘'n¼í· }æ$×C”œ|Mù%N³øÄM>"H8ð?)®õYt߬0O8Nwã0~`à ¢)ŽÙ«UhIEND®B`‚pygtk-2.24.0/docs/cursors/sb_v_double_arrow.png0000644000175000017500000000023111545325344016513 00000000000000‰PNG  IHDR 6Èå gAMA† 1è–_PIDATxÚ½’A ! ñÿ_ž½(®²=m@p(mT*X çîÀÀ¶n4bÒ½ÖøéÕæ4lî†úš×tË2­œZ‰÷ßîë<&tj¸i[1}IEND®B`‚pygtk-2.24.0/docs/cursors/lr_angle.png0000644000175000017500000000017511545325344014610 00000000000000‰PNG  IHDR Vu\çgAMA† 1è–_4IDATxÚcd þÿÿÿ™ÏÄ@`ddd`dd$^É6 7 ,èáLP,œiç$hô­OÌ TQžòIEND®B`‚pygtk-2.24.0/docs/cursors/target.png0000644000175000017500000000026211545325344014310 00000000000000‰PNG  IHDR&/œŠgAMA† 1è–_iIDATxÚ­’AÀ ÙþÿÏéE;–zPf¸(Y0B˜¤|àj©Äkýä9Y\4z@Õ$³óš¯ë™îyYÜÅÒ‰m7éÄúƒ\•Ã+€j’ˆˆ°€¡Qëü)ö~awÎmb7M÷ 7·—™:MCÍIEND®B`‚pygtk-2.24.0/docs/cursors/bottom_tee.png0000644000175000017500000000021311545325344015157 00000000000000‰PNG  IHDR kç=gAMA† 1è–_BIDATxÚcdÀþÿÿÿ™ÏÈÈȈMÀÈÈÈ€CqF  ‚,èñMlº€‹oB釡TðÌ$r© ²—™IEND®B`‚pygtk-2.24.0/docs/cursors/shuttle.png0000644000175000017500000000025711545325344014516 00000000000000‰PNG  IHDRóÿagAMA† 1è–_fIDATxÚÍ“A À@éÿ¿œ^*X±¬n/O3"(ÐŒ$=M˜Æa¯‘$ÃYÂŽ#È@¾[L]Æ*˜$ºkÚøs…Iøþ[‚]® žÈŒ$%Á+^]£³¼Âü,Õ?Œ¿2J"|ô y¸áŸ„"IEND®B`‚pygtk-2.24.0/docs/cursors/man.png0000644000175000017500000000034511545325344013577 00000000000000‰PNG  IHDRóÿagAMA† 1è–_œIDATxÚ“[Å D‡ÆýoyîO§Áñš+¯ÂAi‘¤¾#"Ë% ØŠììz’˜|`¹Ã”®ž i©œV·•ÛJ¦Ýùt‘ëO°J9®SGˆ2rï=”ÕJù„ ùÒJ[]6ôÛw€0o(¢jàŠý39Ë>å1À©•· ‘§ÜÍÃ6tÃ] Ö¿)ô_¿ÕŒ¼áõ¶eIEND®B`‚pygtk-2.24.0/docs/cursors/sb_down_arrow.png0000644000175000017500000000021511545325344015665 00000000000000‰PNG  IHDR ÄHUCgAMA† 1è–_DIDATxÚí’I 0ÇÒÿ9½X°vÁ4 98`PÁ%InÑhô¡Ôãf³fÏ$ÉÌx€ëÝrmS2xqú€gبOAÙ‹&óIEND®B`‚pygtk-2.24.0/docs/cursors/sb_up_arrow.png0000644000175000017500000000021511545325344015342 00000000000000‰PNG  IHDR ÄHUCgAMA† 1è–_DIDATxÚíÎ[ 1CѤÌþ·|ûÓÀ`t ˆ‚Q*Ð)°…© VP¡lŸ^PËëÿžùó8³z6»¦‹æôæØIEND®B`‚pygtk-2.24.0/docs/cursors/heart.png0000644000175000017500000000025611545325344014130 00000000000000‰PNG  IHDRðŠFïgAMA† 1è–_eIDATxÚRAÀ0’ýÿÏôÐI¦8= X‹(0¾€át*µç‘FR/áx¹]µXx>aíÞÀš7Œæ¬atk.Relation

atk.Relation

atk.Relation — an object used to describe a relation between a object and one or more other objects.

Synopsis

class atk.Relation(gobject.GObject):
    atk.Relation(targets, relationship)
def get_relation_type()
def get_target()
Functions

    def atk.relation_type_register(name)
def atk.relation_type_get_name(relationship)
def atk.relation_type_for_name(name)

Ancestry

+-- gobject.GObject
  +-- atk.Relation

atk.Relation Properties

"relation-type"Read-WriteThe type of the relation - one of the Atk Relation Type Constants. Default value: atk.RELATION_NULL.
"target"Read-WriteAn array of the targets for the relation. Default value: None.

atk.Relation Signal Prototypes

gobject.GObject Signal Prototypes

Description

An atk.Relation describes a relation between an object and one or more other objects. The actual relations that an object has with other objects are defined as an atk.RelationSet, which contains a set of atk.Relation objects.

Constructor

atk.Relation

    atk.Relation(targets, relationship)

targets :

a sequence of atk.Object objects

relationship :

one of the Atk Relation Type Constants with which to create the new atk.Relation

Returns :

a new atk.Relation

Create a new relation for the specified relationship type and the specified sequence of targets.

Methods

atk.Relation.get_relation_type

    def get_relation_type()

Returns :

the relation type - one of the Atk Relation Type Constants.

Gets the relationship type.

atk.Relation.get_target

    def get_target()

Returns :

the target list of relation

Gets the target list of atk.Object objects.

Functions

atk.relation_type_register

    def atk.relation_type_register(name)

name :

a name string

Returns :

a new one of the Atk Relation Type Constants that is associated with name

Associate name with a new one of the Atk Relation Type Constants.

atk.relation_type_get_name

    def atk.relation_type_get_name(type)

type :

one of the Atk Relation Type Constants.

Returns :

the string associated with relationship.

Gets the description string describing the relation type specified by type.

atk.relation_type_for_name

    def atk.relation_type_for_name(name)

name :

a string which is the (non-localized) name of an ATK relation type.

Returns :

the matching type of the Atk Relation Type Constants corresponding to the specified name, or atk.RELATION_NULL if no matching relation type is found.

Get the relation type corresponding to the specified name.

pygtk-2.24.0/docs/html/class-gdkpixbuf.html0000644000175000017500000040746111545327344015552 00000000000000gtk.gdk.Pixbuf

gtk.gdk.Pixbuf

gtk.gdk.Pixbuf — an object containing a client side image.

Synopsis

class gtk.gdk.Pixbuf(gobject.GObject):
    gtk.gdk.Pixbuf(colorspace, has_alpha, bits_per_sample, width, height)
def apply_embedded_orientation()
def render_to_drawable(drawable, gc, src_x, src_y, dest_x, dest_y, width, height, dither, x_dither, y_dither)
def render_to_drawable_alpha(drawable, src_x, src_y, dest_x, dest_y, width, height, alpha_mode, alpha_threshold, dither, x_dither, y_dither)
def render_pixmap_and_mask(alpha_threshold=127)
def get_from_drawable(src, cmap, src_x, src_y, dest_x, dest_y, width, height)
def get_from_image(src, cmap, src_x, src_y, dest_x, dest_y, width, height)
def get_colorspace()
def get_n_channels()
def get_has_alpha()
def get_bits_per_sample()
def get_pixels()
def get_width()
def get_height()
def get_rowstride()
def get_option(key)
def copy()
def fill(pixel)
def save(filename, type, options=None)
def save_to_callback(save_func, type, options=None, user_data=None)
def add_alpha(substitute_color, r, g, b)
def copy_area(src_x, src_y, width, height, dest_pixbuf, dest_x, dest_y)
def saturate_and_pixelate(dest, saturation, pixelate)
def scale(dest, dest_x, dest_y, dest_width, dest_height, offset_x, offset_y, scale_x, scale_y, interp_type)
def composite(dest, dest_x, dest_y, dest_width, dest_height, offset_x, offset_y, scale_x, scale_y, interp_type, overall_alpha)
def composite_color(dest, dest_x, dest_y, dest_width, dest_height, offset_x, offset_y, scale_x, scale_y, interp_type, overall_alpha, check_x, check_y, check_size, color1, color2)
def scale_simple(dest_width, dest_height, interp_type)
def composite_color_simple(dest_width, dest_height, interp_type, overall_alpha, check_size, color1, color2)
def get_pixels_array()
def subpixbuf(src_x, src_y, width, height)
def rotate_simple(angle)
def flip(horizontal)
Functions

    def gtk.gdk.pixbuf_new_from_file(filename)
def gtk.gdk.pixbuf_new_from_file_at_size(filename, width, height)
def gtk.gdk.pixbuf_new_from_data(data, colorspace, has_alpha, bits_per_sample, width, height, rowstride)
def gtk.gdk.pixbuf_new_from_array(array, colorspace, bits_per_sample)
def gtk.gdk.pixbuf_new_from_xpm_data(data)
def gtk.gdk.pixbuf_new_from_inline(data_length, data, copy_pixels)
def gtk.gdk.pixbuf_get_formats()
def gtk.gdk.pixbuf_get_file_info(filename)

Ancestry

+-- gobject.GObject
  +-- gtk.gdk.Pixbuf

Attributes

"pixel_array"ReadA numeric array containing the pixel values of the gtk.gdk.Pixbuf. The contents of the numeric array can be changed even though the array is read-only. However you cannot change the pixel data of pixbufs that are backed by a const string such as stock icon pixbufs. PyGTK must be compiled with Numeric Python support for this to work.

Properties

"bits-per-sample"Read-Write-Construct OnlyThe number of bits per sample. Available in GTK+ 2.4 and above.
"colorspace"Read-Write-Construct OnlyThe colorspace in which the samples are interpreted.Available in GTK+ 2.4 and above.
"has-alpha"Read-Write-Construct OnlyIf True,the pixbuf has an alpha channel. Available in GTK+ 2.4 and above.
"height"Read-Write-Construct OnlyThe number of rows of the pixbuf. Available in GTK+ 2.4 and above.
"n-channels"Read-Write-Construct OnlyThe number of samples per pixel. Available in GTK+ 2.4 and above.
"pixels"Read-Write-Construct OnlyA pointer to the pixel data of the pixbuf. Available in GTK+ 2.4 and above.
"rowstride"Read-Write-Construct OnlyThe number of bytes between the start of a row and the start of the next row. Available in GTK+ 2.4 and above.
"width"Read-Write-Construct OnlyThe number of columns of the pixbuf. Available in GTK+ 2.4 and above.

Description

A gtk.gdk.Pixbuf object contains the data that describes an image using client side resources. By contrast a gtk.gdk.Pixmap uses server side resources to hold image data. Manipulating the image data in a gtk.gdk.Pixmap may involve round trip transfers between a client and a server in X11 while manipulating image data in a gtk.gdk.Pixbuf involves only client side operations. Therefore using gtk.gdk.Pixbuf objects may be more efficient than using gtk.gdk.Pixmap objects if a lot of image manipulation is necessary.

In addition to the methods associated with a gtk.gdk.Pixbuf object there are a number of functions that can be used to create gtk.gdk.Pixbuf objects from file and inline data.

Constructor

    gtk.gdk.Pixbuf(colorspace, has_alpha, bits_per_sample, width, height)

colorspace :

the color space for the image - currently only gtk.gdk.COLORSPACE_RGB.

has_alpha :

if True the image will have transparency information.

bits_per_sample :

the number of bits per color sample - currently must be 8.

width :

the width of image in pixels.

height :

the height of image in pixels.

Returns :

a newly-created gtk.gdk.Pixbuf.

Creates a new gtk.gdk.Pixbuf structure and allocates a buffer for it. The buffer has an optimal rowstride. Note that the buffer is not cleared; you will have to fill it completely yourself. The size of the image is specified by width and height.

Methods

gtk.gdk.Pixbuf.apply_embedded_orientation

    def apply_embedded_orientation()

Returns :

A newly-created pixbuf.

Note

This method was available in PyGTK 2.16 and above.

The apply_embedded_orientation() method takes an existing pixbuf and checks for the presence of an associated "orientation" option, which may be provided by the jpeg loader (which reads the exif orientation tag) or the tiff loader (which reads the tiff orientation tag, and compensates it for the partial transforms performed by libtiff). If an orientation option/tag is present, the appropriate transform will be performed so that the pixbuf is oriented correctly.

gtk.gdk.Pixbuf.render_to_drawable

    def render_to_drawable(drawable, gc, src_x, src_y, dest_x, dest_y, width, height, dither, x_dither, y_dither)

drawable :

the destination gtk.gdk.Drawable.

gc :

the gtk.gdk.GC used for rendering.

src_x :

the X coordinate within the pixbuf.

src_y :

the Y coordinate within the pixbuf.

dest_x :

the X coordinate within drawable.

dest_y :

the Y coordinate within drawable.

width :

the width of region to render, in pixels, or -1 to use pixbuf width

height :

the height of region to render, in pixels, or -1 to use pixbuf height

dither :

the dithering mode.

x_dither :

the X offset for dithering.

y_dither :

the Y offset for dithering.

Warning

This method is deprecated in PyGTK 2.2 and above. Use the gtk.gdk.Drawable.draw_pixbuf() method instead.

The render_to_drawable() method renders a rectangular portion of the pixbuf to a gtk.gdk.Drawable specified by drawable while using the gtk.gdk.GC specified by gc. This is done using GdkRGB, so the specified drawable must have the GdkRGB visual and colormap. Note that this method will ignore the opacity information for images with an alpha channel; the gtk.gdk.GC must already have the clipping mask set if you want transparent regions to show through.

The dither offset is important when re-rendering partial regions of an image to a rendered version of the full image, or when the offsets to a base position change, as in scrolling. The dither matrix has to be shifted for consistent visual results. If you do not have any of these cases, the dither offsets can be both zero.

gtk.gdk.Pixbuf.render_to_drawable_alpha

    def render_to_drawable_alpha(drawable, src_x, src_y, dest_x, dest_y, width, height, alpha_mode, alpha_threshold, dither, x_dither, y_dither)

drawable :

the destination gtk.gdk.Drawable.

gc :

the gtk.gdk.GC used for rendering.

src_x :

the X coordinate within the pixbuf.

src_y :

the Y coordinate within the pixbuf.

dest_x :

the X coordinate within drawable.

dest_y :

the Y coordinate within drawable.

width :

the width of region to render, in pixels, or -1 to use pixbuf width

height :

the height of region to render, in pixels, or -1 to use pixbuf height

alpha_mode :

Ignored. Present for backward compatibility.

alpha_threshold :

Ignored. Present for backward compatibility

dither :

the dithering mode.

x_dither :

the X offset for dithering.

y_dither :

the Y offset for dithering.

Warning

This method is deprecated in PyGTK 2.2 and above. Use the gtk.gdk.Drawable.draw_pixbuf() method instead.

The render_to_drawable_alpha() method renders a rectangular portion of the pixbuf to a gtk.gdk.Drawable specified by drawable. drawable must have a colormap. All windows have a colormap; however, pixmaps only have colormap by default if they were created with a window argument.specifying a gtk.gdk.Window. Otherwise a colormap must be set on them with the gtk.gdk.Drawable.set_colormap() method. On older X servers, rendering pixbufs with an alpha channel involves round trips to the X server, and may be somewhat slow.

gtk.gdk.Pixbuf.render_pixmap_and_mask

    def render_pixmap_and_mask(alpha_threshold=127)

alpha_threshold :

the threshold value for opacity values.

Returns :

a tuple containing the created pixmap and mask.

The render_to_pixmap_and_mask() method returns a tuple containing a pixmap and a mask bitmap that the pixbuf and its corresponding thresholded alpha mask are rendered to. This is merely a convenience method; applications that need to render pixbufs with dither offsets or to specific drawables should use the render_to_drawable_alpha() or render_to_drawable() methods. If the pixbuf does not have an alpha channel, then the mask returned will be None.

gtk.gdk.Pixbuf.get_from_drawable

    def get_from_drawable(src, cmap, src_x, src_y, dest_x, dest_y, width, height)

src :

the source gtk.gdk.Drawable.

cmap :

a colormap if src doesn't have one set.

src_x :

the X coordinate within drawable.

src_y :

the Y coordinate within drawable.

dest_x :

the X coordinate in the pixbuf.

dest_y :

the Y coordinate in the pixbuf.

width :

the width in pixels of the region to get.

height :

the height in pixels of the region to get.

Returns :

the pixbuf or None on error

The get_from_drawable() method transfers image data from the gtk.gdk.Drawable specified by src and converts it to an RGB(A) representation inside a gtk.gdk.Pixbuf. In other words, copies image data from a server-side drawable to a client-side RGB(A) buffer. This allows you to efficiently read individual pixels on the client side. If src has no colormap (the gtk.gdk.Drawable.get_colormap() method returns None), then a suitable colormap must be specified as cmap. Typically a gtk.gdk.Window or a pixmap created by passing a gtk.gdk.Window to gtk.gdk.Pixmap() will already have a colormap associated with it. If src has a colormap, the cmap argument will be ignored. If src is a bitmap (1 bit per pixel pixmap), then a colormap is not required; pixels with a value of 1 are assumed to be white, and pixels with a value of 0 are assumed to be black. For taking screenshots, the gtk.gdk.colormap_get_system() function returns the correct colormap to use.

If src is a pixmap, then the requested source rectangle must be completely contained within the pixmap, otherwise the function will return None. For pixmaps only (not for windows) passing -1 for width or height is allowed to mean the full width or height of the pixmap. If src is a window, and the window is off the screen, then there is no image data in the obscured/offscreen regions to be placed in the pixbuf. The contents of portions of the pixbuf corresponding to the offscreen region are undefined.

If the window you're obtaining data from is partially obscured by other windows, then the contents of the pixbuf areas corresponding to the obscured regions are undefined. If the target drawable is not mapped (typically because it's iconified/minimized or not on the current workspace), None will be returned. If memory can't be allocated for the return value, None will be returned instead. (In short, there are several ways this method can fail, and if it fails it returns None; so check the return value.)

This method calls the gtk.gdk.Drawable.get_image() method internally and converts the resulting image to a gtk.gdk.Pixbuf, so the documentation for the gtk.gdk.Drawable.get_image() method may also be helpful.

gtk.gdk.Pixbuf.get_from_image

    def get_from_image(src, cmap, src_x, src_y, dest_x, dest_y, width, height)

src :

the source gtk.gdk.Image.

cmap :

a colormap if src doesn't have one set or None.

src_x :

the X coordinate within src.

src_y :

the Y coordinate within src.

dest_x :

the X coordinate in the pixbuf.

dest_y :

the Y coordinate in the pixbuf.

width :

the width in pixels of the region to get.

height :

the height in pixels of the region to get.

Returns :

the pixbuf or None on error

The get_from_image() method is the same as the get_from_drawable() method but gets the pixbuf from the gtk.gdk.Image specified by src.

gtk.gdk.Pixbuf.get_colorspace

    def get_colorspace()

Returns :

the color space.

The get_colorspace() method returns the color space of the pixbuf.

gtk.gdk.Pixbuf.get_n_channels

    def get_n_channels()

Returns :

the number of channels.

The get_n_channels() method returns the number of channels of a pixbuf.

gtk.gdk.Pixbuf.get_has_alpha

    def get_has_alpha()

Returns :

True if the pixbuf has an alpha channel.

The get_has_alpha() method returns True if the pixbuf has an alpha channel (opacity information).

gtk.gdk.Pixbuf.get_bits_per_sample

    def get_bits_per_sample()

Returns :

the number of bits per color sample.

The get_bits_per_sample() method returns the number of bits per color sample in a pixbuf.

gtk.gdk.Pixbuf.get_pixels

    def get_pixels()

Returns :

a string containing the pixel data of the pixbuf

The get_pixels() method returns a sting containing the pixel data of the pixbuf.

gtk.gdk.Pixbuf.get_width

    def get_width()

Returns :

the width in pixels.

The get_width() method returns the width of the pixbuf.

gtk.gdk.Pixbuf.get_height

    def get_height()

Returns :

the height in pixels.

The get_height() method returns the height of the pixbuf.

gtk.gdk.Pixbuf.get_rowstride

    def get_rowstride()

Returns :

the number of bytes between rows.

The get_rowstride() method returns the rowstride of a pixbuf, which is the number of bytes between rows.

gtk.gdk.Pixbuf.get_option

    def get_option(key)

key :

a key string

Returns :

the value associated with key

The get_option() method looks up key in the list of options that may have been attached to the pixbuf when it was loaded.

gtk.gdk.Pixbuf.copy

    def copy()

Returns :

A newly-created pixbuf or None if not enough memory could be allocated.

The copy() method returns a new gtk.gdk.Pixbuf with a copy of the data in the pixbuf.

gtk.gdk.Pixbuf.fill

    def fill(pixel)

pixel :

the RGBA pixel to clear to (0xffffffff is opaque white, 0x00000000 transparent black)

The fill() method clears the pixbuf to the RGBA value specified by pixel, converting the RGBA value into the pixbuf's pixel format. The alpha will be ignored if the pixbuf doesn't have an alpha channel.

gtk.gdk.Pixbuf.save

    def save(filename, type, options=None)

filename :

the name of file to save.

type :

the name of the file format.

options :

a Python dict containing key-value string pairs or None

The save() method saves the pixbuf to a file in the format specified by type, which may be "jpeg" or "png". If options is not None it should be a Python dict containing key-value string pairs that modify the save parameters. For example:

  pixbuf.save(filename, "jpeg", {"quality":"100"})

Currently only a few parameters exist. JPEG images can be saved with a "quality" parameter; its value should be in the range [0,100]. Text chunks can be attached to PNG images by specifying parameters of the form "tEXt::key", where key is an ASCII string of length 1-79. Note however that PNG text chunks are stored in ISO-8859-1 encoding, so you can only set texts that can be represented in this encoding. The values are UTF-8 encoded strings. ICO images can be saved in depth 16, 24, or 32, by using the "depth" parameter. When the ICO saver is given "x_hot" and "y_hot" parameters, it produces a CUR instead of an ICO.

This method raises the GError exception if an error occurs during the save operation.

gtk.gdk.Pixbuf.save_to_callback

    def save_to_callback(save_func, type, options=None, user_data=None)

save_func :

a function that is called to save each block of data that the save routine generates.

type :

the name of the file format.

options :

a Python dict containing key-value string pairs or None

user_data :

user-specified data passed to save_func or None

Note

This method was available in PyGTK 2.8 and above.

The save_to_callback() method saves the pixbuf in the format specified by type by feeding the pixbuf data to the callback function specified by save_func. type may be "jpeg", "png" or "ico" or other installed formats. If options is not None it should be a Python dict containing key-value string pairs that modify the save parameters. For example:

        pixbuf.save_to_callback(func, "jpeg", {"quality":"100"})

See the save() method for more information on formats. If user_data is not None it is passed to save_func with each invocation.

This method raises a GError exception or exceptions raised by save_func if an error occurs during the save operation.

The signature of save_func is:

def pixbuf_save_func(buf, data=None):

where buf is a Python string containing the pixbuf data and data is user_data. pixbuf_save_func returns True if successful or False on failure.

gtk.gdk.Pixbuf.add_alpha

    def add_alpha(substitute_color, r, g, b)

substitute_color :

if False, the (r, g, b) arguments will be ignored.

r :

the red value to substitute.

g :

the green value to substitute.

b :

the blue value to substitute.

Returns :

a new gtk.gdk.Pixbuf.

The add_alpha() method returns a new gtk.gdk.Pixbuf created from the pixbuf with an alpha channel added. If the pixbuf already had an alpha channel, the channel values are copied; otherwise, the alpha channel is initialized to 255 (full opacity).

If substitute_color is True, then the color specified by (r, g, b) will be assigned zero opacity. That is, if you pass (255, 255, 255) for the substitute color, all white pixels will become fully transparent.

gtk.gdk.Pixbuf.copy_area

    def copy_area(src_x, src_y, width, height, dest_pixbuf, dest_x, dest_y)

src_x :

the X coordinate within the pixbuf.

src_y :

the Y coordinate within the pixbuf.

width :

the width of the area to copy.

height :

the height of the area to copy.

dest_pixbuf :

the destination pixbuf.

dest_x :

the X coordinate within dest_pixbuf.

dest_y :

the Y coordinate within dest_pixbuf.

The copy_area() method copies a rectangular area from the pixbuf to the destination gtk.gdk.Pixbuf specified by dest_pixbuf. Conversion of pixbuf formats is done automatically.

gtk.gdk.Pixbuf.saturate_and_pixelate

    def saturate_and_pixelate(dest, saturation, pixelate)

dest :

the gtk.gdk.Pixbuf to write the modified version of the pixbuf

saturation :

the saturation factor

pixelate :

if True pixelate dest

The saturate_and_pixelate() method modifies the saturation and optionally pixelates the pixbuf, placing the result in dest. the pixbuf and dest may be the same gtk.gdk.Pixbuf with no ill effects. If saturation is 1.0 then saturation is not changed. If it's less than 1.0, saturation is reduced (the image is darkened); if greater than 1.0, saturation is increased (the image is brightened). If pixelate is True, then pixels are faded in a checkerboard pattern to create a pixelated image. The pixbuf and dest must have the same image format, size, and rowstride.

gtk.gdk.Pixbuf.scale

    def scale(dest, dest_x, dest_y, dest_width, dest_height, offset_x, offset_y, scale_x, scale_y, interp_type)

dest :

the gtk.gdk.Pixbuf the scaling is rendered to.

dest_x :

the X coordinate for the rectangle

dest_y :

the Y coordinate for the rectangle

dest_width :

the width of the rectangle

dest_height :

the height of the rectangle

offset_x :

the offset in the X direction (currently rounded to an integer)

offset_y :

the offset in the Y direction (currently rounded to an integer)

scale_x :

the scale factor in the X direction

scale_y :

the scale factor in the Y direction

interp_type :

the interpolation type for the transformation.

The scale() method creates a transformation of the pixbuf's image by scaling by scale_x and scale_y and translating by offset_x and offset_y it, then rendering the rectangle (dest_x, dest_y, dest_width, dest_height) of the resulting image onto the destination image specified by dest replacing the previous contents. The value of interp_type must be one of:

gtk.gdk.INTERP_NEAREST

Nearest neighbor sampling; this is the fastest and lowest quality mode. Quality is normally unacceptable when scaling down, but may be OK when scaling up.

gtk.gdk.INTERP_TILES

This is an accurate simulation of the PostScript image operator without any interpolation enabled. Each pixel is rendered as a tiny parallelogram of solid color, the edges of which are implemented with antialiasing. It resembles nearest neighbor for enlargement, and bilinear for reduction.

gtk.gdk.INTERP_BILINEAR

Best quality/speed balance; use this mode by default. Bilinear interpolation. For enlargement, it is equivalent to point-sampling the ideal bilinear-interpolated image. For reduction, it is equivalent to laying down small tiles and integrating over the coverage area.

gtk.gdk.INTERP_HYPER

This is the slowest and highest quality reconstruction function. It is derived from the hyperbolic filters in Wolberg's "Digital Image Warping", and is formally defined as the hyperbolic-filter sampling the ideal hyperbolic-filter interpolated image (the filter is designed to be idempotent for 1:1 pixel mapping).

Try the scale_simple() method as an alternative with a simpler interface.

gtk.gdk.Pixbuf.composite

    def composite(dest, dest_x, dest_y, dest_width, dest_height, offset_x, offset_y, scale_x, scale_y, interp_type, overall_alpha)

dest :

the output gtk.gdk.Pixbuf

dest_x :

the X coordinate for the rectangle

dest_y :

the top coordinate for the rectangle

dest_width :

the width of the rectangle

dest_height :

the height of the rectangle

offset_x :

the offset in the X direction (currently rounded to an integer)

offset_y :

the offset in the Y direction (currently rounded to an integer)

scale_x :

the scale factor in the X direction

scale_y :

the scale factor in the Y direction

interp_type :

the interpolation type for the transformation.

overall_alpha :

overall alpha for source image (0..255)

The composite() method creates a transformation of the pixbuf's image by scaling by scale_x and scale_y and translating by offset_x and offset_y, then compositing the rectangle (dest_x, dest_y, dest_width, dest_height) of the resulting image onto the destination image. The value of interp_type must be one of:

gtk.gdk.INTERP_NEAREST

Nearest neighbor sampling; this is the fastest and lowest quality mode. Quality is normally unacceptable when scaling down, but may be OK when scaling up.

gtk.gdk.INTERP_TILES

This is an accurate simulation of the PostScript image operator without any interpolation enabled. Each pixel is rendered as a tiny parallelogram of solid color, the edges of which are implemented with antialiasing. It resembles nearest neighbor for enlargement, and bilinear for reduction.

gtk.gdk.INTERP_BILINEAR

Best quality/speed balance; use this mode by default. Bilinear interpolation. For enlargement, it is equivalent to point-sampling the ideal bilinear-interpolated image. For reduction, it is equivalent to laying down small tiles and integrating over the coverage area.

gtk.gdk.INTERP_HYPER

This is the slowest and highest quality reconstruction function. It is derived from the hyperbolic filters in Wolberg's "Digital Image Warping", and is formally defined as the hyperbolic-filter sampling the ideal hyperbolic-filter interpolated image (the filter is designed to be idempotent for 1:1 pixel mapping).

gtk.gdk.Pixbuf.composite_color

    def composite_color(dest, dest_x, dest_y, dest_width, dest_height, offset_x, offset_y, scale_x, scale_y, interp_type, overall_alpha, check_x, check_y, check_size, color1, color2)

dest :

the output gtk.gdk.Pixbuf

dest_x :

the X coordinate for the rectangle

dest_y :

the top coordinate for the rectangle

dest_width :

the width of the rectangle

dest_height :

the height of the rectangle

offset_x :

the offset in the X direction (currently rounded to an integer)

offset_y :

the offset in the Y direction (currently rounded to an integer)

scale_x :

the scale factor in the X direction

scale_y :

the scale factor in the Y direction

interp_type :

the interpolation type for the transformation.

overall_alpha :

overall alpha for source image (0..255)

check_x :

the X offset for the checkboard (origin of checkboard is at -check_x, -check_y)

check_y :

the Y offset for the checkboard

check_size :

the size of checks in the checkboard (must be a power of two)

color1 :

the color of check at upper left

color2 :

the color of the other check

The composite_color() method creates a transformation of the source image src by scaling by scale_x and scale_y and translating by offset_x and offset_y, then compositing the rectangle (dest_x ,dest_y, dest_width, dest_height) of the resulting image with a checkboard of the colors color1 and color2 and renders it onto the destination image. The value of interp_type must be one of:

gtk.gdk.INTERP_NEAREST

Nearest neighbor sampling; this is the fastest and lowest quality mode. Quality is normally unacceptable when scaling down, but may be OK when scaling up.

gtk.gdk.INTERP_TILES

This is an accurate simulation of the PostScript image operator without any interpolation enabled. Each pixel is rendered as a tiny parallelogram of solid color, the edges of which are implemented with antialiasing. It resembles nearest neighbor for enlargement, and bilinear for reduction.

gtk.gdk.INTERP_BILINEAR

Best quality/speed balance; use this mode by default. Bilinear interpolation. For enlargement, it is equivalent to point-sampling the ideal bilinear-interpolated image. For reduction, it is equivalent to laying down small tiles and integrating over the coverage area.

gtk.gdk.INTERP_HYPER

This is the slowest and highest quality reconstruction function. It is derived from the hyperbolic filters in Wolberg's "Digital Image Warping", and is formally defined as the hyperbolic-filter sampling the ideal hyperbolic-filter interpolated image (the filter is designed to be idempotent for 1:1 pixel mapping).

See the composite_color_simple() method for a simpler variant of this method suitable for most tasks.

gtk.gdk.Pixbuf.scale_simple

    def scale_simple(dest_width, dest_height, interp_type)

dest_width :

the width of destination image

dest_height :

the height of destination image

interp_type :

the interpolation type for the transformation.

Returns :

the new gtk.gdk.Pixbuf, or None if not enough memory could be allocated for it.

The scale_simple() method returns a new gtk.gdk.Pixbuf containing a copy of the pixbuf scaled to dest_width x dest_height. The pixbuf is unaffected by the scaling operation. The value of interp_type must be one of:

gtk.gdk.INTERP_NEAREST

Nearest neighbor sampling; this is the fastest and lowest quality mode. Quality is normally unacceptable when scaling down, but may be OK when scaling up.

gtk.gdk.INTERP_TILES

This is an accurate simulation of the PostScript image operator without any interpolation enabled. Each pixel is rendered as a tiny parallelogram of solid color, the edges of which are implemented with antialiasing. It resembles nearest neighbor for enlargement, and bilinear for reduction.

gtk.gdk.INTERP_BILINEAR

Best quality/speed balance; use this mode by default. Bilinear interpolation. For enlargement, it is equivalent to point-sampling the ideal bilinear-interpolated image. For reduction, it is equivalent to laying down small tiles and integrating over the coverage area.

gtk.gdk.INTERP_HYPER

This is the slowest and highest quality reconstruction function. It is derived from the hyperbolic filters in Wolberg's "Digital Image Warping", and is formally defined as the hyperbolic-filter sampling the ideal hyperbolic-filter interpolated image (the filter is designed to be idempotent for 1:1 pixel mapping).

interp_type should be gtk.gdk.INTERP_NEAREST if you want maximum speed (but when scaling down gtk.gdk.INTERP_NEAREST is usually unusably ugly). The default interp_type should be GDK_INTERP_BILINEAR which offers reasonable quality and speed.

You can scale a sub-portion of src by creating a sub-pixbuf pointing into src; see the subpixbuf() method for more information.

For more complicated scaling/compositing see the scale() and composite() methods.

gtk.gdk.Pixbuf.composite_color_simple

    def composite_color_simple(dest_width, dest_height, interp_type, overall_alpha, check_size, color1, color2)

dest_width :

the width of destination image

dest_height :

the height of destination image

interp_type :

the interpolation type for the transformation.

overall_alpha :

overall alpha for source image (0..255)

check_size :

the size of checks in the checkboard (must be a power of two)

color1 :

the color of check at upper left

color2 :

the color of the other check

Returns :

the new gtk.gdk.Pixbuf, or NULL if not enough memory could be allocated for it.

The composite_color_simple() method returns a new gtk.gdk.Pixbuf by scaling the pixbuf to dest_width x dest_height and compositing the result with a checkboard of colors color1 and color2. The value of interp_type must be one of:

gtk.gdk.INTERP_NEAREST

Nearest neighbor sampling; this is the fastest and lowest quality mode. Quality is normally unacceptable when scaling down, but may be OK when scaling up.

gtk.gdk.INTERP_TILES

This is an accurate simulation of the PostScript image operator without any interpolation enabled. Each pixel is rendered as a tiny parallelogram of solid color, the edges of which are implemented with antialiasing. It resembles nearest neighbor for enlargement, and bilinear for reduction.

gtk.gdk.INTERP_BILINEAR

Best quality/speed balance; use this mode by default. Bilinear interpolation. For enlargement, it is equivalent to point-sampling the ideal bilinear-interpolated image. For reduction, it is equivalent to laying down small tiles and integrating over the coverage area.

gtk.gdk.INTERP_HYPER

This is the slowest and highest quality reconstruction function. It is derived from the hyperbolic filters in Wolberg's "Digital Image Warping", and is formally defined as the hyperbolic-filter sampling the ideal hyperbolic-filter interpolated image (the filter is designed to be idempotent for 1:1 pixel mapping).

See the composite_color() method for a more powerful but complicated interface.

gtk.gdk.Pixbuf.get_pixels_array

    def get_pixels_array()

Returns :

a Numeric Python array containing the pixel data of the pixbuf

Note

This method is available in PyGTK 2.2 and above.

The get_pixels_array() method returns a Numeric Python array containing the pixel data of the pixbuf.

Note

PyGTK must be compiled with Numeric Python support for this method to be available.

gtk.gdk.Pixbuf.subpixbuf

    def subpixbuf(src_x, src_y, width, height)

src_x :

X coord in the pixbuf

src_y :

Y coord in the pixbuf

width :

width of region in the pixbuf

height :

height of region in the pixbuf

Returns :

a new gtk.gdk.Pixbuf

Note

This method is available in PyGTK 2.4 and above.

The subpixbuf() method creates a new gtk.gdk.Pixbuf that represents a sub-region of the pixbuf. The new pixbuf shares its pixels with the original pixbuf, so writing to one affects both.

gtk.gdk.Pixbuf.rotate_simple

    def rotate_simple(angle)

angle :

the rotation angle

Returns :

a new gtk.gdk.Pixbuf

Note

This method is available in PyGTK 2.10 and above.

The rotate_simple() method creates a new gtk.gdk.Pixbuf by rotating the given pixbuf by a multiple of 90 degrees as specified by angle which is one of the GDK Pixbuf Rotation Constants

gtk.gdk.Pixbuf.flip

    def flip(horizontal)

flip :

True to flip horizontally, False to flip vertically

Returns :

a new gtk.gdk.Pixbuf

Note

This method is available in PyGTK 2.6 and above.

The flip() method creates a new gtk.gdk.Pixbuf by flipping the given pixbuf horizontally or vertically, as specified by horizontal.

Functions

gtk.gdk.pixbuf_new_from_file

    def gtk.gdk.pixbuf_new_from_file(filename)

filename :

the name of the file containing the image to load

Returns :

a new gtk.gdk.Pixbuf.

The gtk.gdk.pixbuf_new_from_file() function returns a new gtk.gdk.Pixbuf containing an image loaded from the file specified by filename. The image file format is detected automatically. The application will block until the image is done loading. This method can be used by applications in which blocking is acceptable while an image is being loaded (small images in general). Applications that need progressive loading should use gtk.gdk.PixbufLoader instead.

This function raises the GError exception if an error occurs during the loading of the pixbuf.

gtk.gdk.pixbuf_new_from_file_at_size

    def gtk.gdk.pixbuf_new_from_file_at_size(filename, width, height)

filename :

the name of the file containing the image to load

width :

The width the image should have

height :

The height the image should have

Returns :

a new gtk.gdk.Pixbuf.

Note

This function is available in PyGTK 2.4 and above.

The gtk.gdk.pixbuf_new_from_file_at_size() function returns a new gtk.gdk.Pixbuf containing an image loaded from the file specified by filename with it scaled to the size specified by width and height. The image file format is detected automatically. The application will block until the image is done loading. This function can be used by applications in which blocking is acceptable while an image is being loaded (small images in general). Applications that need progressive loading should use a gtk.gdk.PixbufLoader instead.

This function raises the GError exception if an error occurs during the loading of the pixbuf.

gtk.gdk.pixbuf_new_from_data

    def gtk.gdk.pixbuf_new_from_data(data, colorspace, has_alpha, bits_per_sample, width, height, rowstride)

data :

a string containing image data in 8-bit/sample packed format.

colorspace :

the colorspace for the image data.

has_alpha :

If True, the data has an opacity channel.

bits_per_sample :

the number of bits per sample.

width :

the width of the image in pixels.

height :

the height of the image in pixels.

rowstride :

the distance in bytes between row starts.

Returns :

a gtk.gdk.Pixbuf

Note

This function is available in PyGTK 2.2 and above.

The gtk.gdk.pixbuf_new_from_data() function returns a new pixbuf created from the string specified by data. data must be RGB image data with 8 bits per sample. colorspace must be gtk.gdk.COLORSPACE_RGB.

gtk.gdk.pixbuf_new_from_array

    def gtk.gdk.pixbuf_new_from_array(array, colorspace, bits_per_sample)

array :

a string containing image data in 8-bit/sample packed format.

colorspace :

the colorspace for the image data.

bits_per_sample :

the number of bits per sample.

Returns :

a gtk.gdk.Pixbuf

Note

This function is available in PyGTK 2.2 and above.

The gtk.gdk.pixbuf_new_from_array() function returns a new pixbuf created from the Numeric Python array specified by array. array must be a 3 or 4 dimensional array (4 if the image has an alpha channel) with bits_per_sample bits per sample. colorspace must be gtk.gdk.COLORSPACE_RGB.

Note

PyGTK must be compiled with the Numeric Python module to support this function.

gtk.gdk.pixbuf_new_from_xpm_data

    def gtk.gdk.pixbuf_new_from_xpm_data(data)

data :

a list of strings containing the XPM image data

Returns :

a gtk.gdk.Pixbuf

The gtk.gdk.pixbuf_new_from_xpm_data() function returns a new gtk.gdk.Pixbuf by parsing XPM data in memory specified by data. data is a list of strings containing the XPM data.

gtk.gdk.pixbuf_new_from_inline

    def gtk.gdk.pixbuf_new_from_inline(data_length, data, copy_pixels)

data_length :

the length in bytes of the data

data :

a string containing the inline pixbuf data

copy_pixels :

if True the pixel data should be copied

Returns :

a new gtk.gdk.Pixbuf object

The gtk.gdk.pixbuf_new_from_inline() function returns a gtk.gdk.Pixbuf from a flat representation that is suitable for storing as inline data in a program. This is useful if you want to ship a program with images, but don't want to depend on any external files.

GTK+ ships with a program called gdk-pixbuf-csource which allows for conversion of an image into such a inline representation.In almost all cases, you should pass the --raw flag to gdk-pixbuf-csource. A sample invocation would be:

  gdk-pixbuf-csource --raw --name=myimage_inline myimage.png

For the typical case where the inline pixbuf is read-only static data, you don't need to copy the pixel data unless you intend to write to it, so you can pass False for copy_pixels.

This function raises the GError exception if an error occurs during the loading of the pixbuf.

gtk.gdk.pixbuf_get_formats

    def gtk.gdk.pixbuf_get_formats()

Returns :

a list of image formats as Python dicts

The gtk.gdk.pixbuf_get_formats() function returns a list of the supported image formats as a Python dict. The keys of the image format dict are:

name :

the name of the image format.

description :

a description of the image format.

mime_types :

a list of the mime types this image matches.

extensions :

a list of typical filename extensions for the image format.

is_writable :

if True the image can be written to a file

gtk.gdk.pixbuf_get_file_info

    def gtk.gdk.pixbuf_get_file_info(filename)

filename :

the name of the file to check

Returns :

an image format as a Python dict

The gtk.gdk.pixbuf_get_file_info() function reads enough of the file specified by filename to determine its image format and then returns the image format information in a Python dict. See the gtk.gdk.pixbuf_get_formats() function for more details on the image format dict.

pygtk-2.24.0/docs/html/class-pangolanguage.html0000644000175000017500000003241211545327433016364 00000000000000pango.Language

pango.Language

pango.Language — an object that represents a language tag.

Synopsis

class pango.Language(gobject.GBoxed):
    pango.Language(language)
def matches(range_list)
def to_string()
Functions

    def pango.pango_language_from_string(language)
def pango.pango_language_matches(language, range_list)

Description

A pango.Language object represents a language tag meeting the RFC-3066 standard. The pango.Language can be retrieved from a pango.Context by using the pango.Context.get_language() method or created using the pango.Language() constructor. Example RFC-3066 language tags include: "en-us", "fr", and "sgn-us-ma".

Constructor

    pango.Language(language>)

language :

a string representing a language tag

Returns :

a new pango.Language object

Note

This constructor is available in PyGTK 2.4 and above.

Creates a new pango.Language object from the RFC-3066 language tag specified by language. This constructor first canonicalizes the string in language by converting it to lowercase, mapping '_' to '-', and stripping all characters other than letters and '-'.

Methods

pango.Language.matches

    def matches(range_list)

>range_list :

a list of language ranges, separated by ';' characters.

Returns :

True if a match was found.

Note

This method is available in PyGTK 2.4 and above.

The matches() method returns True if the language matches one of the language ranges in the list specified by range_list.A language tag is considered to match a range in the list if

  • the range is '*'
  • the range is exactly the same as the tag, or
  • the range is a prefix of the tag, and the character after the matching portion of the tag is '-'

each range must either be '*', or a canonicalized RFC-3066 language range (see the pango.Language() constructor for more information).

pango.Language.matches

    def to_string()

Returns :

the string representation of the language tag

Note

This method is available in PyGTK 2.4 and above.

The to_string() method returns a string representation of the canonicalized language tag. See the pango.Language() constructor for more information.

Functions

pango.pango_language_from_string

    def pango.pango_language_from_string(language)

language :

a string representing a language tag

Returns :

a new pango.Language object

Note

This function is deprecated in PyGTK 2.4 and above. Use the pango.Language() constructor instead.

The pango.pango_language_from_string() function takes a RFC-3066 format language tag as a string (specified by language) and converts it to a pango.Language object. This function first canonicalizes the string by converting it to lowercase, mapping '_' to '-', and stripping all characters other than letters and '-'.

pango.pango_language_matches

    def pango.pango_language_matches()

language :

a language tag (see the pango.pango_language_from_string() function), None is allowed and matches nothing but '*'

range_list :

a list of language ranges, separated by ';' characters. each element must either be '*', or a RFC 3066 language range canonicalized as by the pango.pango_language_from_string() function.

Returns :

True if a match was found.

Note

This function is deprecated in PyGTK 2.4 and above. Use the matches() method instead.

The pango.pango_language_matches() function checks if a language tag matches one of the elements in a list of language ranges. A language tag is considered to match a range in the list if the range is '*', the range is exactly the tag, or the range is a prefix of the tag, and the character after the tag is '-'.

pygtk-2.24.0/docs/html/class-gtktreesortable.html0000644000175000017500000005236411545327102016756 00000000000000gtk.TreeSortable

gtk.TreeSortable

gtk.TreeSortable — an interface for sorting a gtk.TreeModel

Synopsis

class gtk.TreeSortable(gobject.GInterface):
    def sort_column_changed()
def get_sort_column_id()
def set_sort_column_id(sort_column_id, order)
def set_sort_func(sort_column_id, sort_func, user_data=None)
def set_default_sort_func(sort_func, user_data=None)
def has_default_sort_func()

gtk.TreeSortable Signal Prototypes

"sort-column-changed"

def callback(treesortable, user_param1, ...)

Description

The gtk.TreeSortable interface provide the common methods for a gtk.TreeModel to implement a sorted model for a gtk.TreeView. See the gtk.TreeModelSort for an example of a treemodel that implements the gtk.TreeSortable interface. The key element of the interface is a "sort column ID" which is an arbitrary integer value referring to a sort function and associated user data. A sort column ID must be greater than or equal to zero. A usable sort column ID is created by using the set_sort_func() method. The sort column ID can then be used for sorting a gtk.ListStore or gtk.TreeStore using the set_sort_column_id() method.

The gtk.ListStore and gtk.TreeStore objects automatically setup sort column IDs corresponding to the columns in the store. These sort column IDs are associated with an internal comparison function that handles the fundamental types:

  • gboolean
  • str
  • int
  • long
  • float

Note

Once a sort column ID has been set on a gtk.TreeModel implementing the gtk.TreeSortable interface it cannot be returned to the original unsorted state. You can change the sort function or use a default sort function but you cannot set the gtk.TreeModel to have no sort function.

Methods

gtk.TreeSortable.sort_column_changed

    def sort_column_changed()

The sort_column_changed() method emits the "sort_column_changed" signal on the treesortable object.

gtk.TreeSortable.get_sort_column_id

    def get_sort_column_id()

Returns :

a tuple containing the sort column id and the sort type: gtk.SORT_ASCENDING or gtk.SORT_DESCENDING

The get_sort_column_id() method returns a tuple containing the current sort column ID and the sort type (either gtk.SORT_ASCENDING or gtk.SORT_DESCENDING), if applicable. If the sort column ID is not set, then the tuple (-2, 0) is returned. If the sort column ID is set to -1 indicating the default sort function is to be used this method returns (None, None)

gtk.TreeSortable.set_sort_column_id

    def set_sort_column_id(sort_column_id, order)

sort_column_id :

the sort column id to set

order :

the sort order: gtk.SORT_ASCENDING or gtk.SORT_DESCENDING

The set_sort_column_id() method sets the current sort comparison function to that associated with the sort column ID specified by sort_column_id with the sort order type specified by order. The value of order must be either: gtk.SORT_ASCENDING or gtk.SORT_DESCENDING. The treesortable will resort itself to reflect this change, after emitting a "sort_column_changed" signal.

If sort_column_id is -1, then the default sort function will be used, if it is set. If a default sort function is not set then the sort column ID is not changed.

gtk.TreeSortable.set_sort_func

    def set_sort_func(sort_column_id, sort_func, user_data=None)

sort_column_id :

the sort column id to set the function for

sort_func :

The sorting function

user_data :

the user data to pass to the sort func, or None

The set_sort_func() method sets the comparison function (or method) used when sorting on the sort column ID specified by column_id to the value specified by sort_func. If the current sort column id of the treesortable is the same as sort_column_id, the model will be resorted. The signature of the comparison function (or method) is:

    def comparefunction(treemodel, iter1, iter2, user_data)
def comparemethod(self, treemodel, iter1, iter2, user_data)

where treemodel is the tree model implementing the gtk.TreeSortable interface, iter1 and iter2 point at the rows to compare and user_data is the user data specified in set_sort_func() or None. If sort_func is a method then self is the object associated with the method.

The comparison callback should return -1 if the iter1 row should come before the iter2 row, 0 if the rows are equal, or 1 if the iter1 row should come after the iter2 row.

gtk.TreeSortable.set_default_sort_func

    def set_default_sort_func(sort_func, user_data=None)

sort_func :

the sorting function

user_data :

the user data to pass to sort_func, or None

The set_default_sort_func() method sets the default comparison function (or method) to the value of sort_func. If the current sort column id of the treesortable is -1 (the get_sort_column_id() method returns (None, None)), then the model will be resorted using the sort_func. See the set_sort_func() method for more details on the signature of the comparison function.

In Pygtk 2.10, sort_func can be None to have no default comparison function. This means that once the model has been sorted, it can't go back to the default state. In this case, when the current sort column id of sortable is -1, the model will be unsorted.

gtk.TreeSortable.has_default_sort_func

    def has_default_sort_func()

Returns :

True, if the model has a default sort function

The has_default_sort_func() method returns True if the model has a default sort function. This is used primarily by gtk.TreeViewColumn to determine if a model can go back to the default state, or not.

Signals

The "sort-column-changed" gtk.TreeSortable Signal

    def callback(treesortable, user_param1, ...)

treesortable :

the treesortable that received the signal

user_param1 :

the first user parameter (if any) specified with the connect() method

... :

additional user parameters (if any)

The "sort-column-changed" signal is emitted when the sort_column_changed() method is called or the sort column is changed using the set_sort_column_id() method.

pygtk-2.24.0/docs/html/class-gtkcellrenderertoggle.html0000644000175000017500000004355011545326430020133 00000000000000gtk.CellRendererToggle

gtk.CellRendererToggle

gtk.CellRendererToggle — an object that renders a toggle button into a TreeView cell

Synopsis

class gtk.CellRendererToggle(gtk.CellRenderer):
    gtk.CellRendererToggle()
def get_radio()
def set_radio(radio)
def get_active()
def set_active(setting)
def get_activatable()
def set_activatable(setting)

Ancestry

+-- gobject.GObject
  +-- gtk.Object
    +-- gtk.CellRenderer
      +-- gtk.CellRendererToggle

gtk.CellRendererToggle Properties

gtk.Object Properties

gtk.CellRenderer Properties

"activatable"Read/WriteIf True, the toggle button can be activated
"active"Read/WriteIf True, the button is active.
"inconsistent"Read/WriteIf True, the button is in an inconsistent state. GTK+ 2.2 and above.
"indicator-size"Read-WriteSize of check or radio indicator. Allowed values: >= 0. Default value: 12.
"radio"Read/WriteIf True, draw the toggle button as a radio button

gtk.CellRendererToggle Signal Prototypes

gobject.GObject Signal Prototypes

gtk.Object Signal Prototypes

gtk.CellRenderer Signal Prototypes

"toggled"

def callback(cellrenderertoggle, path, user_param1, ...)

Description

The gtk.CellRendererToggle manages the rendering of toggle button into a gtk.TreeView cell. The button is drawn as a radio- or checkbutton, depending on the "radio" property. When activated, it emits the toggled signal.

Constructor

    gtk.CellRendererToggle()

Returns :

the new cell renderer

Creates a new gtk.CellRendererToggle. The toggle button rendering parameters are adjusted using the object properties. The object properties can be set globally (with set_property()). Also, with gtk.TreeViewColumn, you can bind a property to a value in a gtk.TreeModel. For example, you can bind the "active" property on the cell renderer to a boolean value in the model, thus causing the check button to reflect the state of the model.

Methods

gtk.CellRendererToggle.get_radio

    def get_radio()

Returns :

True if we're rendering radio toggles rather than checkboxes

The get_radio() method returns True if radio toggles rather than checkboxes are being rendered.

gtk.CellRendererToggle.set_radio

    def set_radio(radio)

radio :

If True make the toggle look like a radio button

The set_radio() method sets the style of the toggle button. If radio is True, the cell renderer renders a radio toggle (i.e. a toggle in a group of mutually-exclusive toggles). If False, it renders a check toggle (a standalone boolean option). This can be set globally for the cell renderer, or changed just before rendering each cell in the model (for gtk.TreeView, you set up a per-row setting using gtk.TreeViewColumn to associate model columns with cell renderer properties).

gtk.CellRendererToggle.get_active

    def get_active()

Returns :

True if the cell renderer is active.

The get_active() method returns True if the cell renderer is active. See gtk.CellRendererToggle.set_active().

gtk.CellRendererToggle.set_active

    def set_active(setting)

setting :

the value to set.

The set_active() method activates a cell renderer if setting is True and or deactivates a cell renderer if setting is False.

gtk.CellRendererToggle.get_activatable

    def get_activatable()

Returns :

True if the cell renderer is activatable.

Note

This method is available in PyGTK 2.22 and above.

The get_activatable() method returns True if the cell renderer is activatable.

gtk.CellRendererToggle.set_activatable

    def set_activatable(setting)

setting :

the value to set.

Note

This method is available in PyGTK 2.22 and above.

The set_activatable() method sets wether the cell renderer is activatable.

Signals

The "toggled" gtk.CellRendererToggle Signal

    def callback(cellrenderertoggle, path, user_param1, ...)

cellrenderertoggle :

the cellrenderertoggle that received the "toggled" signal

path :

the path of the cellrenderertoggle represented as a string

user_param1 :

the first user parameter (if any) specified with the connect() method

... :

additional user parameters (if any)

The "toggled" signal is emitted when the toggle button in the cell changes state.

pygtk-2.24.0/docs/html/class-gtkspinner.html0000644000175000017500000002226011545326743015743 00000000000000gtk.Spinner

gtk.Spinner

gtk.Spinner — show a spinner animation (new in PyGTK 2.22)

Synopsis

class gtk.Spinner(gtk.DrawingArea):
    gtk.Spinner()
def start()
def stop()

Ancestry

+-- GObject
  +-- gtk.Object
    +-- gtk.Widget
      +-- gtk.DrawingArea
        +-- gtk.Spinner

Implemented Interfaces

gtk.Spinner implements gtk.Buildable atk.ImplementorIFace

gtk.Spinner Properties

gtk.Object Properties

gtk.Widget Properties

"active"Read-WriteWhether the spinner is active. Default value: False This property is available in GTK+ 2.20 and above.

gtk.Spinner Style Properties

gtk.Widget Style Properties

"cycle-duration"ReadThe duration in milliseconds for the spinner to complete a full cycle. Allowed values: >= 500 Default value: 1000 This property is available in GTK+ 2.20 and above.
"num-steps"ReadThe number of steps for the spinner to complete a full loop. The animation will complete a full cycle in one second by default (see the "cycle-duration" style property). Allowed values: >= 1 Default value: 12 This property is available in GTK+ 2.20 and above.

gtk.Spinner Signal Prototypes

gobject.GObject Signal Prototypes

gtk.Object Signal Prototypes

gtk.Widget Signal Prototypes

Description

Note

This widget is available in PyGTK 2.22 and above.

A GtkSpinner widget displays an icon-size spinning animation. It is often used as an alternative to a GtkProgressBar for displaying indefinite activity, instead of actual progress.

To start the animation, use start(), to stop it use stop().

Constructor

    gtk.Spinner()

Returns :

a new gtk.Spinner

Note

This constructor is available in PyGTK 2.22 and above.

Returns a new spinner widget. Not yet started.

Methods

gtk.Spinner.start

    def start()

Note

This method is available in PyGTK 2.22 and above.

Starts the animation of the spinner.

gtk.Spinner.stop

    def stop()

Note

This method is available in PyGTK 2.22 and above.

Stops the animation of the spinner.

pygtk-2.24.0/docs/html/class-gtkcomboboxtext.html0000644000175000017500000004163711545326453017011 00000000000000gtk.ComboBoxText

gtk.ComboBoxText

gtk.ComboBoxText — A simple, text-only combo box (new in PyGTK 2.24)

Synopsis

class gtk.ComboBoxText(gtk.ComboBox):
    gtk.ComboBoxText()
def append_text(text)
def insert_text(position, text)
def prepend_text(text)
def remove(position)
def get_active_text()
      Functions

          def gtk.combo_box_text_new_with_entry()
    

Ancestry

+-- gobject.GObject
  +-- gtk.Object
    +-- gtk.Widget
      +-- gtk.Container
        +-- gtk.Bin
          +-- gtk.ComboBox
            +-- gtk.ComboBoxText

Description

Note

This widget is available in GTK+ 2.24 and PyGTK 2.24 and above.

A gtk.ComboBoxText is a simple variant of gtk.ComboBox that hides the model-view complexity for simple text-only use cases.

Constructor

    gtk.ComboBox()

Returns :

A new gtk.ComboBoxText.

Note

This constructor is available in PyGTK 2.24 and above.

Creates a new gtk.ComboBoxText, which is a gtk.ComboBox just displaying strings.

Methods

gtk.ComboBoxText.append_text

    def append_text(text)

text :

A string.

Note

This method is available in PyGTK 2.24 and above.

The append_text() method appends the string specified by text to the list of strings stored in the combo box gtk.ListStore.

gtk.ComboBoxText.insert_text

    def insert_text(position, text)

position :

A model index where the text should be inserted.

text :

A string.

Note

This method is available in PyGTK 2.24 and above.

The insert_text() method inserts the string specified by text in the combo box gtk.ListStore at the index specified by position.

gtk.ComboBoxText.prepend_text

    def prepend_text(text)

text :

A string.

Note

This method is available in PyGTK 2.24 and above.

The prepend_text() method prepends the string specified by text to the list of strings stored in the gtk.ListStore associated with the combo_box.

gtk.ComboBoxText.remove

    def remove(position)

position :

Index of the item to remove.

Note

This method is available in PyGTK 2.24 and above.

The remove_text() method removes the string at the index specified by position in the associated gtk.ListStore.

gtk.ComboBoxText.get_active_text

    def get_active_text()

Returns :

The currently active text.

Note

This method is available in PyGTK 2.24 and above.

The get_active_text() method returns the currently active string or None if no entry is selected.

Functions

gtk.combo_box_text_new_with_entry

    def gtk.combo_box_text_new_with_entry()

Returns :

A new gtk.ComboBoxText.

Note

This function is available in PyGTK 2.24 and above.

The gtk.combo_box_new_text() function creates a new gtk.ComboBoxText, which is a gtk.ComboBox just displaying strings. The combo box created by this function has an entry.

pygtk-2.24.0/docs/html/class-gtkiconset.html0000644000175000017500000003456511545326547015746 00000000000000gtk.IconSet

gtk.IconSet

gtk.IconSet — contains a set of variants for an icon

Synopsis

class gtk.IconSet(gobject.GBoxed):
    gtk.IconSet(pixbuf=None)
def copy()
def render_icon(style, direction, state, size, widget, detail)
def add_source(source)
def get_sizes()

Description

A gtk.IconSet contains a set of variants for a single icon. The variants provide icons of different sizes and for different widget states. The variants can be added with the add_source() method.

Constructor

    gtk.IconSet(pixbuf=None)

pixbuf :

a gtk.gdk.Pixbuf

Returns :

a new gtk.IconSet

Creates a new gtk.IconSet with pixbuf as the default fallback source image. If pixbuf is None there is no default fallback source image. If you don't add any additional gtk.IconSources to the icon set, all variants of the icon will be created from pixbuf, using scaling, pixelation, etc. as required to adjust the icon size or make the icon look insensitive/prelighted.

Methods

gtk.IconSet.copy

    def copy()

Returns :

a new gtk.IconSet identical to the first.

The copy() method returns a copy of the icon set.

gtk.IconSet.render_icon

    def render_icon(style, direction, state, size, widget, detail)

style :

a gtk.Style associated with widget, or None

direction :

the text direction; one of: gtk.TEXT_DIR_NONE, gtk.TEXT_DIR_LTR, gtk.TEXT_DIR_RTL

state :

the widget state; one of: gtk.STATE_NORMAL, gtk.STATE_ACTIVE, gtk.STATE_PRELIGHT, gtk.STATE_SELECTED, gtk.STATE_INSENSITIVE

size :

the icon size; one of: gtk.ICON_SIZE_INVALID, gtk.ICON_SIZE_MENU, gtk.ICON_SIZE_SMALL_TOOLBAR, gtk.ICON_SIZE_LARGE_TOOLBAR, gtk.ICON_SIZE_BUTTON, gtk.ICON_SIZE_DND, gtk.ICON_SIZE_DIALOG

widget :

the widget that will display the icon, or None

detail :

the detail to pass to the theme engine, or None

Returns :

a gtk.gdk.Pixbuf to be displayed

The render_icon() method renders an icon using gtk.Style.render_icon(). In most cases, gtk.Widget.render_icon() is better, since it automatically provides most of the arguments from the current widget settings. This method never returns None; if the icon can't be rendered (perhaps because an image file fails to load), a default "missing image" icon will be returned instead.

gtk.IconSet.add_source

    def add_source(source)

source :

a gtk.IconSource

The add_source() method adds the gtk.IconSource specified by source to the icon set. Icon sets have a list of gtk.IconSource, which they use as base icons for rendering icons in different states and sizes. Icons are scaled, made to look insensitive, etc. in the render_icon() method, but gtk.IconSet needs base images to work with. The base images and when to use them are described by a gtk.IconSource.

An example of when you'd use this method: a web browser's "Back to Previous Page" icon might point in a different direction in Hebrew and in English; it might look different when insensitive; and it might change size depending on toolbar mode (small or large icons). So a single icon set would contain all those variants of the icon, and you might add a separate source for each one.

You should nearly always add a "default" icon source with all fields wildcarded, which will be used as a fallback if no more specific source matches. gtk.IconSet always prefers more specific icon sources to more generic icon sources. The order in which you add the sources to the icon set does not matter.

The gtk.IconSet() constructor creates a new icon set with a default icon source based on the given pixbuf.

gtk.IconSet.get_sizes

    def get_sizes()

Returns :

a tuple containing all the icon sizes supported by the icon set

The get_sizes() method returns a tuple containing all the icon sizes this icon set can render.

pygtk-2.24.0/docs/html/class-gtkwindow.html0000644000175000017500000065454511545327244015612 00000000000000gtk.Window

gtk.Window

gtk.Window — a top-level window that holds one child widget.

Synopsis

class gtk.Window(gtk.Bin):
    gtk.Window(type=gtk.WINDOW_TOPLEVEL)
def set_title(title)
def get_title()
def set_wmclass(wmclass_name, wmclass_class)
def set_role(role)
def get_role()
def add_accel_group(accel_group)
def remove_accel_group(accel_group)
def set_position(position)
def activate_focus()
def set_focus(focus)
def get_focus()
def set_default(default_widget)
def activate_default()
def set_transient_for(parent)
def get_transient_for()
def set_type_hint(hint)
def get_type_hint()
def set_destroy_with_parent(setting)
def get_destroy_with_parent()
def set_resizable(resizable)
def get_resizable()
def set_gravity(gravity)
def get_gravity()
def set_geometry_hints(geometry_widget, min_width=-1, min_height=-1, max_width=-1, max_height=-1, base_width=-1, base_height=-1, width_inc=-1, height_inc=-1, min_aspect=-1.0, max_aspect=-1.0)
def set_screen(screen)
def get_screen()
def is_active()
def has_toplevel_focus()
def set_has_frame(setting)
def get_has_frame()
def set_frame_dimensions(left, top, right, bottom)
def get_frame_dimensions()
def set_decorated(setting)
def get_decorated()
def set_icon_list(...)
def get_icon_list()
def set_icon(icon)
def set_icon_from_file(filename)
def get_icon()
def set_modal(modal)
def get_modal()
def add_mnemonic(keyval, target)
def remove_mnemonic(keyval, target)
def mnemonic_activate(keyval, modifier)
def set_mnemonic_modifier(modifier)
def get_mnemonic_modifier()
def set_mnemonics_visible(setting)
def get_mnemonics_visible()
def activate_key(event)
def propagate_key_event(event)
def present()
def iconify()
def deiconify()
def stick()
def unstick()
def maximize()
def unmaximize()
def fullscreen()
def unfullscreen()
def set_keep_above(setting)
def set_keep_below(setting)
def begin_resize_drag(edge, button, root_x, root_y, timestamp)
def begin_move_drag(button, root_x, root_y, timestamp)
def set_default_size(width, height)
def get_default_size()
def resize(width, height)
def get_size()
def move(x, y)
def get_position()
def parse_geometry(geometry)
def reshow_with_initial_size()
def tooltips_get_info_from_tip_window()
def set_focus_on_map(setting)
def get_focus_on_map()
def set_icon_name(name)
def get_icon_name()
def set_urgency_hint(urgency_hint)
def get_urgency_hint()
def present_with_time(timestamp)
def set_deletable(setting)
def get_deletable()
def get_group()
def has_group()
def get_window_type()
def set_opacity(opacity)
def get_opacity()
def set_startup_id(startup_id)
def get_default_widget()
def set_skip_taskbar_hint(setting)
def get_skip_taskbar_hint()
def set_skip_pager_hint(setting)
def get_skip_pager_hint()
def set_accept_focus(setting)
def get_accept_focus()
Functions

    def gtk.window_set_default_icon(icon)
def gtk.window_set_default_icon_from_file(filename)
def gtk.window_set_default_icon_list(...)
def gtk.window_get_default_icon_list()
def gtk.window_set_auto_startup_notification(setting)
def gtk.window_list_toplevels()
def gtk.window_set_default_icon_name(name)

Ancestry

+-- gobject.GObject
  +-- gtk.Object
    +-- gtk.Widget
      +-- gtk.Container
        +-- gtk.Bin
          +-- gtk.Window

Implemented Interfaces

gtk.Window implements gtk.Buildable

gtk.Window Properties

gtk.Object Properties

gtk.Widget Properties

gtk.Container Properties

"accept-focus"Read-WriteIf True, the window should receive the input focus. Default value: True. Available in GTK+ 2.4 and above.
"allow-grow"Read-WriteIf True, the user can expand the window beyond its minimum size. Default value: True.
"allow-shrink"Read-WriteIf True, the window has no minimum size. Setting this to True is a bad idea 99% of the time. Default value: False.
"decorated"Read-WriteIf True, the window should be decorated by the window manager. Default value: True. Available in GTK+ 2.4 and above.
"default-height"Read-WriteThe default height of the window, used when initially showing the window. Allowed values: >= -1. Default value: -1
"default-width"Read-WriteThe default width of the window, used when initially showing the window. Allowed values: >= -1. Default value: -1
"deletable"Read-WriteIf True the window frame should have a close button. This property is available in GTK+ 2.10 and above.
"destroy-with-parent"Read-WriteIf True, the window should be destroyed when its parent is destroyed. Default value: False.
"focus-on-map"Read-WriteIf True, the window should receive the input focus when mapped. Default value: True. Available in GTK+ 2.6 and above.
"gravity"Read-WriteThe window gravity of the window. See the move() method and the GDK Gravity Constants for more details about window gravity. Default value: gtk.gdk.GRAVITY_NORTH_WEST. Available in GTK+ 2.4 and above.
"has-toplevel-focus"ReadIf True, the input focus is within the window. Default value: False. Available in GTK+ 2.2 and above.
"icon"Read-WriteThe icon for this window
"icon-name"Read-WriteThe name of the themed icon to use as the window icon. See gtk.IconTheme for more details. Default value: None. Available in GTK+ 2.6 and above.
"is-active"ReadIf True, the toplevel is the current active window. Default value: False. Available in GTK+ 2.2 and above.
"mnemonics-visible"Read-WriteIf True, mnemonics are currently visible in the window. Default value: True.
"modal"Read-WriteIf True, the window is modal (other windows are not usable while this one is up). Default value: False.
"opacity"Read-WriteThe requested opacity of the window. See gtk.Window.set_opacity() for more details about window opacity. Allowed values: [0,1] Default value: 1. Available in GTK+ 2.12.
"resizable"Read-WriteIf True, the user can resize the window. Default value: True.
"role"Read-WriteUnique identifier for the window to be used when restoring a session. Default value: None. Available in GTK+ 2.4
"screen"Read-WriteThe screen where this window will be displayed. Available in GTK+ 2.2
"skip-pager-hint"Read-WriteIf True, the window should not be in the pager. Default value: False. Available in GTK+ 2.2 and above.
"skip-taskbar-hint"Read-WriteIf True, the window should not be in the task bar. Default value: False. Available in GTK+ 2.2 and above.
"startup-id"WriteThe :startup-id is a write-only property for setting window's startup notification identifier. See gtk.Window.set_startup_id() for more details. Default value: NULL. Available in GTK+ 2.12 and above.
"title"Read-WriteThe title of the window. Default value: None.
"transient-for"Read-Write-ConstructThe transient parent of the window. See gtk.Window.set_transient_for() for more details about transient windows. This property is available in GTK+ 2.10 and above.
"type"Read-WriteThe type of the window. Default value: gtk.WINDOW_TOPLEVEL
"type-hint"Read-WriteHint to help the desktop environment understand what kind of window this is and how to treat it. Default value: gtk.gdk.WINDOW_TYPE_HINT_NORMAL. Available in GTK+ 2.2 and above.
"urgency-hint"Read-WriteIf True the window should be brought to the users attention. Default value: False. Available in GTK+ 2.8 and above.
"window-position"Read-WriteThe initial position of the window. Default value: gtk.WIN_POS_NONE

gtk.Window Style Properties

gtk.Widget Style Properties

Attributes

"allow_grow"ReadIf True, users can expand the window beyond its minimum size.
"allow_shrink"ReadIf True, the window has no minimum size.
"configure_notify_received"ReadIf True a window resize configuration event has been received.
"configure_request_count"ReadThe number of outstanding configuration requests.
"decorated"ReadIf True the window will have decorations like a titlebar, resize controls, etc. See the set_decorated() method.
"default_widget"ReadThe child widget that will be activated by default. See the set_default() method.
"destroy_with_parent"ReadIf True the window is destroyed when its transient parent is destroyed.
"focus_widget"ReadThe child widget that has the focus.
"frame"ReadThe frame gtk.gdk.Window (if any). See the set_has_frame() and set_frame_dimensions() methods.
"frame_bottom"ReadThe height of the bottom frame border. See the set_frame_dimensions() and set_has_frame() methods.
"frame_left"ReadThe width of the left frame border. See the set_frame_dimensions() and set_has_frame() methods.
"frame_right"ReadThe width of the right frame border. See the set_frame_dimensions() and set_has_frame() methods.
"frame_top"ReadThe height of the top frame border. See the set_frame_dimensions() and set_has_frame() methods.
"gravity"ReadThe window's gravity. See the move() and set_gravity() methods.
"group"ReadThe gtk.WindowGroup (if any) the window belongs to.
"has_focus"ReadIf True the window has the focus.
"has_frame"ReadIf True the window has a frame window. See the set_has_frame() method.
"has_user_ref_count"ReadIf True the window has not been destroyed.
"iconify_initially"ReadIf True the window has been iconified by a call to the iconify() method.
"keys_changed_handler"ReadThe idle handler ID for handling accelerator group changes.
"maximize_initially"ReadIf True the window has been maximized by a call to the maximize() method.
"mnemonic_modifier"ReadThe mnemonic modifier used with a key to activate an accelerator. See the set_mnemonic_modifier() method
"modal"ReadIf True the window is modal. See the set_modal() method.
"need_default_position"ReadIf True the window needs an initial position calculated.
"need_default_size"ReadIf True the window needs an initial size calculated.
"position"ReadThe initial position of the window. See the set_position() method.
"stick_initially"ReadIf True the window has been made sticky by a call to the stick() method.
"title"ReadThe title of the window.
"transient_parent"ReadThe transient parent window. See the set_transient_for() method.
"type"ReadThe type of the window: gtk.WINDOW_TOPLEVEL or gtk.WINDOW_POPUP.
"type_hint"ReadThe window's type hint. See the set_type_hint() method.
"wmclass_class"ReadThe window system class hint. See the set_wmclass() method.
"wmclass_name"ReadThe window system name hint. See the set_wmclass() method.
"wm_role"ReadThe unique identifier for the window. See the set_role() method.

gtk.Window Signal Prototypes

gobject.GObject Signal Prototypes

gtk.Object Signal Prototypes

gtk.Widget Signal Prototypes

gtk.Container Signal Prototypes

"activate-default"

def callback(window, user_param1, ...)

"activate-focus"

def callback(window, user_param1, ...)

"frame-event"

def callback(window, event, user_param1, ...)

"keys-changed"

def callback(window, user_param1, ...)

"move-focus"

def callback(window, direction, user_param1, ...)

"set-focus"

def callback(window, widget, user_param1, ...)

Description

A gtk.Window provides a widget that users commonly think of as a window. That is, an area of the display that is managed by the window manager and usually decorated with a title bar, and items to allow the user to close, resize and move the window. PyGTK provides two types of windows (see the GTK Window Type Constants section for more information):

gtk.WINDOW_TOPLEVEL

A window that has no parent and usually has a frame and decorations supplied by a window manager. Toplevels windows are the main application window and dialogs.

gtk.WINDOW_POPUP

A window that is ignored by the window manager and has no frame or decorations. A popup window is used for menus and tooltips.

Typically, applications only directly create and use toplevel windows.

A gtk.Window is a container (subclass of gtk.Bin) holding one child widget.

Constructor

    gtk.Window(type=gtk.WINDOW_TOPLEVEL)

type :

the type of window: gtk.WINDOW_TOPLEVEL or gtk.WINDOW_POPUP

Returns :

a new gtk.Window.

Creates a new gtk.Window, which is a toplevel window that can contain other widgets. Nearly always, the type of the window should be gtk.WINDOW_TOPLEVEL (see the GTK Window Type Constants for more details). gtk.WINDOW_POPUP is used to create a pop-up menu or pop-up tooltip. On X11, popup windows are not controlled by the window manager. If you simply want an undecorated window (no window borders), use the set_decorated() method with a toplevel window, don't use a popup window.

Methods

gtk.Window.set_title

    def set_title(title)

title :

the title of the window

The set_title() method sets the "title" property of the gtk.Window to the value specified by title. The title of a window will be displayed in its title bar. On the X Window System, the title bar is rendered by the window manager, so exactly how the title appears to users may vary according to a user's exact configuration. The title should help a user distinguish this window from other windows they may have open. A good title might include the application name and current document filename.

gtk.Window.get_title

    def get_title()

Returns :

the title of the window, or None.

The get_title() method returns the value of the "title" property of the window. See the set_title() method.

gtk.Window.set_wmclass

    def set_wmclass(wmclass_name, wmclass_class)

wmclass_name :

the window name hint

wmclass_class :

the window class hint

The set_wmclass() method sets the X Window System "class" and "name" hints for a window. Applications should not call this method. According to the ICCCM, you should always set these to the same value for all windows in an application, and PyGTK sets them to that value by default, so calling this method is sort of pointless. However, you may want to call the set_role() method on each window in your application, for the benefit of the session manager. Setting the role allows the window manager to restore window positions when loading a saved session.

gtk.Window.set_role

    def set_role(role)

role :

a unique identifier for the window

The set_role() method sets a unique identifier (specified by role) for the window to be used when restoring a session. This method is only useful on X11. In combination with the window title, the window role allows a window manager to identify "the same" window when an application is restarted. So for example you might set the "toolbox" role on your app's toolbox window, so that when the user restarts their session, the window manager can put the toolbox back in the same place. If a window already has a unique title, you don't need to set the role, since the WM can use the title to identify the window when restoring the session.d

gtk.Window.get_role

    def get_role()

Returns :

the role of the window if set, or None.

The get_role() method returns the role of the window. See the set_role() method for further explanation.

gtk.Window.add_accel_group

    def add_accel_group(accel_group)

accel_group :

a gtk.AccelGroup

The add_accel_group() method associates the accelerator group specified by accel_group with the window.

gtk.Window.remove_accel_group

    def remove_accel_group(accel_group)

accel_group :

a gtk.AccelGroup

The remove_accel_group() method dissociates the accelerator group specified by accel_group from the widget. This method reverses the effects of the add_accel_group() method.

gtk.Window.set_position

    def set_position(position)

position :

a position constraint.

The set_position() method sets the "window-position" property to the value of position. The value of position must be one of the GTK Window Position Constants.

If the old or new window position constraint is gtk.WIN_POS_CENTER_ALWAYS, this will also cause the window to be repositioned to satisfy the new constraint.

gtk.Window.activate_focus

    def activate_focus()

Returns :

True if the window has a focus widget

The activate_focus() method activates the child widget with the focus. This method returns True if the window has a widget with the focus.

gtk.Window.set_focus

    def set_focus(focus)

focus :

the widget to be the new focus widget or None to unset a focus widget

The set_focus() method sets the widget specified by focus to be the focus widget for the window. If focus is None the window's focus widget is unset. To set the focus to a particular widget in the toplevel, it is usually more convenient to use the gtk.Widget.grab_focus() method instead of this method.

gtk.Window.get_focus

    def get_focus()

Returns :

the currently focused widget.

The get_focus() method returns the current focused widget within the window. The focus widget is the widget that would have the focus if the toplevel window is focused.

gtk.Window.set_default

    def set_default(default_widget)

default_widget :

the widget to be the default, or None to unset the default widget.

The set_default() method sets the window's default widget to the value specified by default_widget. If default_widget is None the window's default widget is unset. The default widget is the widget that's activated when the user presses Enter in a window. When setting (rather than unsetting) the default widget it's generally easier to call the gtk.Widget.grab_default() method on the widget. Before making a widget the default widget, you must set the gtk.CAN_DEFAULT flag on the widget you'd like to make the default using the gtk.Object.set_flags() method.

gtk.Window.activate_default

    def activate_default()

Returns :

True if the window has a default widget or a focus widget.

The activate_default() method activates the default widget. If there is no default widget or the default widget cannot be activated, the window's focus widget (if any) is activated. This method returns False if no default widget could be activated or there is no focus widget.

gtk.Window.set_transient_for

    def set_transient_for(parent)

parent :

the parent window or None to remove the transient parent

The set_transient_for() method sets the window as a transient window for the window specified by parent. Dialog windows should be set transient for the main application window they were spawned from. This allows window managers to keep the dialog on top of the main window, or center the dialog over the main window. The gtk.Dialog() constructor and other convenience functions in PyGTK will sometimes call the set_transient_for() method on your behalf.

On Windows, this method will and put the child window on top of the parent, much as the window manager would have done on X.

gtk.Window.get_transient_for

    def get_transient_for()

Returns :

the transient parent for this window, or None if no transient parent has been set.

The get_transient_for() method returns the transient parent for this window or None if no transient window is set. See the set_transient_for() method.

gtk.Window.set_type_hint

    def set_type_hint(hint)

hint :

the window type

The set_type_hint() method sets the window type hint for the window to the value specified by hint. The value of hint must be one of the GDK Window Type Hint Constants.

By setting the type hint for the window, you allow the window manager to decorate and handle the window in a way which is suitable to the method of the window in your application. This method should be called before the window becomes visible. The gtk.Dialog() constructor and other convenience functions in PyGTK will sometimes call this method on your behalf.

gtk.Window.get_type_hint

    def get_type_hint()

Returns :

the type hint for the window.

The get_type_hint() method returns the type hint for this window. See the set_type_hint() method.

gtk.Window.set_destroy_with_parent

    def set_destroy_with_parent(setting)

setting :

if True destroy the window with its transient parent

The set_destroy_with_parent() method sets the "destroy-with-parent" property to the value specified by setting. If setting is True, destroying the transient parent of the window will also destroy the window itself. This is useful for dialogs that shouldn't persist beyond the lifetime of the main window they're associated with.

gtk.Window.get_destroy_with_parent

    def get_destroy_with_parent()

Returns :

True if the window will be destroyed with its transient parent.

The get_destroy_with_parent() method returns the value of the "destroy-with-parent" property that determines if the window will be destroyed with its transient parent. See the set_destroy_with_parent() method.

gtk.Window.set_resizable

    def set_resizable(resizable)

resizable :

if True the user can resize this window

The set_resizable() method sets the "resizable" property to the value of resizable. If resizable is True the user can resize the window. Windows are user resizable by default.

gtk.Window.get_resizable

    def get_resizable()

Returns :

True if the user can resize the window

The get_resizable() method returns the value of the "resizable" property. See the set_resizable() method.

gtk.Window.set_gravity

    def set_gravity(gravity)

gravity :

the window gravity

The set_gravity() method sets the gravity of the window to the value specified by gravity. The window gravity defines the meaning of coordinates passed to the move() method. The value of gravity must be one of the GDK Gravity Constants.

The default window gravity is gtk.gdk.GRAVITY_NORTH_WEST which will typically "do what you want."

gtk.Window.get_gravity

    def get_gravity()

Returns :

the window gravity

The get_gravity() method returns window gravity. See the set_gravity() method.

gtk.Window.set_geometry_hints

    def set_geometry_hints(geometry_widget, min_width=-1, min_height=-1, max_width=-1, max_height=-1, base_width=-1, base_height=-1, width_inc=-1, height_inc=-1, min_aspect=-1.0, max_aspect=-1.0)

geometry_widget :

the widget the geometry hints will be applied to

min_width :

the minimum width of window (or -1 to use requisition)

min_height :

the minimum height of window (or -1 to use requisition)

max_width :

the maximum width of window (or -1 to use requisition)

max_height :

the maximum height of window (or -1 to use requisition)

base_width :

allowed window widths are base_width + width_inc * N where N is any integer

base_height :

allowed window heights are base_height + width_inc * N where N is any integer

width_inc :

the width resize increment

height_inc :

the height resize increment

min_aspect :

the minimum width to height ratio

max_aspect :

the maximum width to height ratio

The set_geometry_hints() method sets up hints about how a window can be resized by the user. You can set the minimum and maximum widths and heights, the base width and height for resizing, the allowed width and height resize increments (e.g. for xterm, you can only resize by the size of a character), and the minimum and maximum aspect ratios. If geometry_widget is not None it specifies the widget to figure the geometry on.

gtk.Window.set_screen

    def set_screen(screen)

screen :

a gtk.gdk.Screen.

Note

This method is available in PyGTK 2.2 and above.

The set_screen() method sets the "screen" property to the gtk.gdk.Screen specified by screen. The "screen" property contains the screen that the window is displayed on. If the window is already mapped, it will be unmapped, and then remapped on the new screen.

gtk.Window.get_screen

    def get_screen()

Returns :

a gtk.gdk.Screen.

Note

This method is available in PyGTK 2.2 and above.

The get_screen() method returns the gtk.gdk.Screen that the window is displayed on.

gtk.Window.is_active

    def is_active()

Returns :

True if the window is part of the current active window.

Note

This method is available in PyGTK 2.4 and above.

The is_active() method returns True if the window is part of the current active toplevel, i.e., the toplevel window receiving keystrokes. The return value is True if the window is active the toplevel itself, or if it is, for example, a gtk.Plug embedded in the active toplevel. You might use this method if you wanted to draw a widget differently in an active window from a widget in an inactive window. See the has_toplevel_focus() method.

gtk.Window.has_toplevel_focus

    def has_toplevel_focus()

Returns :

True if the the input focus is within the window

Note

This method is available in PyGTK 2.4 and above.

The has_toplevel_focus() method returns True if the input focus is within the window. For real toplevel windows, this is identical to is_active(), but for embedded windows, like a gtk.Plug, the results will differ.

gtk.Window.set_has_frame

    def set_has_frame(setting)

setting :

if True PyGTK draws the window border

The set_has_frame() method sets the flag that causes PyGTK to draw its own window border for the window.

Note

This is a special-purpose method for the framebuffer port. For most applications, you want the set_decorated() method instead,that tells the window manager whether to draw the window border.

If this method is called on a window with setting of True, before it is realized or showed, it will have a "frame" window around the window's gtk.gdk.Window, accessible in the window's frame. Using the signal "frame-event" you can receive all events targeted at the frame. This method is used by the linux-fb port to implement managed windows, but it could conceivably be used by X-programs that want to do their own window decorations.

gtk.Window.get_has_frame

    def get_has_frame()

Returns :

True if a frame has been added to the window via the set_has_frame() method.

The get_has_frame() method returns the value of the window's "has_frame" flag that determines if the window has a frame window exterior to its gtk.gdk.Window. See the set_has_frame() method for more information.

gtk.Window.set_frame_dimensions

    def set_frame_dimensions(left, top, right, bottom)

left :

the width of the left border

top :

the height of the top border

right :

the width of the right border

bottom :

the height of the bottom border

The set_frame_dimensions() method sets the size of the frame around the window to the values specified by left, top, bottom and right.

Note

This is a special-purpose method intended for the framebuffer port. See the set_has_frame() method. It will have no effect on the window border drawn by the window manager, which is the normal case when using the X Window system.

For windows with frames (see the set_has_frame() method) this method can be used to change the size of the frame border.

gtk.Window.get_frame_dimensions

    def get_frame_dimensions()

Returns :

a tuple containing the frame dimensions: the width of the frame at the left; the height of the frame at the top; the width of the frame at the right; and, the height of the frame at the bottom.

The get_frame_dimensions() method returns a tuple containing the frame dimensions: the width of the frame at the left; the height of the frame at the top; the width of the frame at the right; and, the height of the frame at the bottom.

Note

This is a special-purpose method intended for the framebuffer port See the set_has_frame() method. It will not return the size of the window border drawn by the window manager, which is the normal case when using a windowing system. See the get_frame_extents() to get the standard window border extents.

See the set_has_frame() and set_frame_dimensions() methods for more information.

gtk.Window.set_decorated

    def set_decorated(setting)

setting :

if True decorate the window

The set_decorated() method sets the decorated flag to the value specified by setting. If setting is True the window will be decorated. By default, windows are decorated with a title bar, resize controls, etc. Some window managers allow PyGTK to disable these decorations, creating a borderless window. If you set the decorated property to False using this method, PyGTK will do its best to convince the window manager not to decorate the window. On Windows, this method always works, since there's no window manager policy involved.

gtk.Window.get_decorated

    def get_decorated()

Returns :

True if the window has been set to have decorations

The get_decorated() method returns the value of the decorated flag that determines if the window has been set to have decorations such as a title bar. See the set_decorated() method.

gtk.Window.set_icon_list

    def set_icon_list(...)

... :

zero or more gtk.gdk.Pixbuf objects

The set_icon_list() method sets up the icon representing the window using the set of gtk.gdk.Pixbuf objects passed as arguments. If no gtk.gdk.Pixbuf objects are passed in the icon is unset and reverts to the default icon. The icon is used when the window is minimized (also known as iconified). Some window managers or desktop environments may also place it in the window frame, or display it in other contexts. This method allows you to pass in the same icon in several hand-drawn sizes. The gtk.gdk.Pixbuf objects should contain the natural sizes your icon is available in; i.e., don't scale the image before passing it to PyGTK. Scaling is postponed until the last minute, when the desired final size is known, to allow best quality. By passing several sizes, you may improve the final image quality of the icon, by reducing or eliminating automatic image scaling. The recommended sizes to provide are: 16x16, 32x32, 48x48 at minimum, and larger images (64x64, 128x128) if you have them.

See the gtk.window_set_default_icon_list() function to set the icon for all windows in your application in one go. Note that transient windows (those who have been set transient for another window using the set_transient_for() method) will inherit their icon from their transient parent. So there's no need to explicitly set the icon on transient windows.

gtk.Window.get_icon_list

    def get_icon_list()

Returns :

a copy of the window's icon list

The get_icon_list() method returns the list of icons set by the set_icon_list() method.

gtk.Window.set_icon

    def set_icon(icon)

icon :

an icon image, or None

The set_icon() method sets the "icon" property to the value specified by icon. This icon is used when the window is minimized (also known as iconified). Some window managers or desktop environments may also place it in the window frame, or display it in other contexts. The icon should be provided in whatever size it was naturally drawn; that is, don't scale the image before passing it to PyGTK. Scaling is postponed until the last minute, when the desired final size is known, to allow best quality. If you have your icon hand-drawn in multiple sizes, use the set_icon_list() method. Then the best size will be used.

This method is equivalent to calling the set_icon_list() method with a 1-element list. See the gtk.window_set_default_icon_list() function to set the icon for all windows in your application in one go.

gtk.Window.set_icon_from_file

    def set_icon_from_file(filename)

filename :

the name of a file containing an icon image

Returns :

True if the icon was loaded.

The set_icon_from_file() method sets the "icon" property to the icon loaded from the file specified by filename. The icon is used when the window is minimized (also known as iconified). See the set_icon()) method for more information. This method is equivalent to calling the set_icon() method with a pixbuf created by loading the image from filename.

The GError exception is raised if an error occurs while loading the pixbuf from filename.

gtk.Window.get_icon

    def get_icon()

Returns :

the icon for window

The get_icon() method returns the value of the "icon" property set by the set_icon() (or if you've called the set_icon_list() method, returns the first icon in the icon list).

gtk.Window.set_modal

    def set_modal(modal)

modal :

if True the window is modal

The set_modal() method sets the "modal" property to the value of modal. If modal is True the window becomes modal. Modal windows prevent interaction with other windows in the same application. Typically modal windows are used for gtk.Dialog windows that require a user response before the application can continue. To keep modal dialogs on top of the main application windows, use the set_transient_for() method to make the dialog transient for the parent - most window managers will then disallow lowering the dialog below the parent.

gtk.Window.get_modal

    def get_modal()

Returns :

True if the window is set to be modal and establishes a grab when shown

The get_modal() method returns the value of the "modal" property. If "modal" is True the window is modal. See the set_modal() method.

gtk.Window.add_mnemonic

    def add_mnemonic(keyval, target)

keyval :

the mnemonic key

target :

the widget that gets activated by the mnemonic

The add_mnemonic() method adds a mnemonic key specified by keyval to this window. When the mnemonic key is pressed the widget specified by target will be activated.

gtk.Window.remove_mnemonic

    def remove_mnemonic(keyval, target)

keyval :

the mnemonic key

target :

the widget that gets activated by the mnemonic

The remove_mnemonic() method removes the mnemonic specified by keyval for the widget specified by target from this window.

gtk.Window.mnemonic_activate

    def mnemonic_activate(keyval, modifier)

keyval :

the mnemonic key

modifier :

the modifiers

Returns :

True if the activation was done

The mnemonic_activate() method activates the targets associated with the mnemonic specified by keyval. The window's mnemonic modifier must match modifier to allow the activation to proceed. See the set_mnemonic_modifier() method for more information.

gtk.Window.set_mnemonic_modifier

    def set_mnemonic_modifier(modifier)

modifier :

the modifier mask used to activate mnemonics on this window.

The set_mnemonic_modifier() method sets the mnemonic modifier for this window to the value specified by modifier. The value of modifier is one of:

gtk.gdk.SHIFT_MASK

The Shift key.

gtk.gdk.CONTROL_MASK

The Control key.

gtk.gdk.MOD1_MASK

The fourth modifier key (it depends on the modifier mapping of the X server which key is interpreted as this modifier, but normally it is the Alt key).

gtk.Window.get_mnemonic_modifier

    def get_mnemonic_modifier()

Returns :

the modifier mask used to activate mnemonics on this window.

The get_mnemonic_modifier() method returns the mnemonic modifier for this window. See the set_mnemonic_modifier() method for more detail.

gtk.Window.set_mnemonics_visible

    def set_mnemonics_visible(setting)

setting :

True if mnemomics should be visible in the window, False otherwise.

Note

This method is available in PyGTK 2.22 and above.

The set_mnemonics_visible() method sets whether mnemonics are currently visible in the window.

gtk.Window.get_mnemonics_visible

    def get_mnemonics_visible()

Returns :

True if mnemomics are currently visible in the window, False otherwise.

Note

This method is available in PyGTK 2.22 and above.

The get_mnemonics_visible() method returns whether mnemonics are currently visible in the window.

gtk.Window.activate_key

    def activate_key(event)

event :

a gtk.gdk.Event

Returns :

True if a mnemonic or accelerator was found and activated.

Note

This method is available in PyGTK 2.4 and above.

The activate_key() method activates mnemonics and accelerators for the window. This is normally called by the default gtk.Widget "key-press-event" signal handler for toplevel windows, however in some cases it may be useful to call this directly when overriding the standard key handling for a toplevel window.

gtk.Window.propagate_key_event

    def propagate_key_event(event)

event :

a gtk.gdk.Event

Returns :

True if a widget in the focus chain handled the event.

Note

This method is available in PyGTK 2.4 and above.

The propagate_key_event() method propagates a key press or release event to the focus widget and up the focus container chain until a widget handles the key event specified by event. This is normally called by the default gtk.Widget "key-press-event" and "key-release-event" signal handlers for toplevel windows, however in some cases it may be useful to call this directly when overriding the standard key handling for a toplevel window.

gtk.Window.present

    def present()

The present() method presents a window to the user. This may mean raising the window in the stacking order, deiconifying it, moving it to the current desktop, and/or giving it the keyboard focus, possibly dependent on the user's platform, window manager, and preferences. If the window is hidden, this method calls the the gtk.Widget.show() method as well. This method should be used when the user tries to open a window that's already open. Say for example the preferences dialog is currently open, and the user chooses Preferences from the menu a second time; use the present() method to move the already-open dialog where the user can see it.

gtk.Window.iconify

    def iconify()

The iconify() method asks the window manager to iconify (i.e. minimize) the specified the window. Note that you shouldn't assume the window is definitely iconified afterward, because other entities (e.g. the user or window manager) could deiconify it again, or there may not be a window manager in which case iconification isn't possible, etc. But normally the window will end up iconified. Just don't write code that crashes if not. This method can be called before showing a window, in which case the window will be iconified before it ever appears on-screen. You can track iconification via the gtk.Widget "window-state-event" signal.

gtk.Window.deiconify

    def deiconify()

The deiconify() method asks the window manager to deiconify (i.e. unminimize) the specified the window. Note that you shouldn't assume the window is definitely deiconified afterward, because other entities (e.g. the user or window manager) could iconify it again before your code which assumes deiconification gets to run. You can track iconification via the gtk.Widget "window-state-event" signal.

gtk.Window.stick

    def stick()

The stick() method asks the window manager to stick the window, which means that it will appear on all user desktops. Note that you shouldn't assume the window is definitely stuck afterward, because other entities (e.g. the user or window manager) could unstick it again, and some window managers do not support sticking windows. But normally the window will end up stuck. Just don't write code that crashes if not. This method can be called before showing a window. You can track stickiness via the gtk.Widget "window-state-event" signal.

gtk.Window.unstick

    def unstick()

The unstick() method asks the window manager to unstick the window, which means that it will appear on only one of the user's desktops. Note that you shouldn't assume the window is definitely unstuck afterward, because other entities (e.g. the user or window manager) could stick it again. But normally the window will end up stuck. Just don't write code that crashes if not. You can track stickiness via the gtk.Widget "window-state-event" signal.

gtk.Window.maximize

    def maximize()

The maximize() method asks the window manager to maximize the window, so that it becomes full-screen. Note that you shouldn't assume the window is definitely maximized afterward, because other entities (e.g. the user or window manager) could unmaximize it again, and not all window managers support maximization. But normally the window will end up maximized. This method can be called before showing a window, in which case the window will be maximized when it appears on-screen initially. You can track maximization via the gtk.Widget "window-state-event" signal.

gtk.Window.unmaximize

    def unmaximize()

The unmaximize() method asks the window manager to unmaximize the window. Note that you shouldn't assume the window is definitely unmaximized afterward, because other entities (e.g. the user or window manager) could maximize it again, and not all window managers honor requests to unmaximize. But normally the window will end up unmaximized. You can track maximization via the gtk.Widget "window-state-event" signal.

gtk.Window.fullscreen

    def fullscreen()

Note

This method is available in PyGTK 2.2 and above.

The fullscreen() method requests the window manager to place the window in the fullscreen state. Note you shouldn't assume the window is definitely full screen afterward, because other entities (e.g. the user or window manager) could unfullscreen it again, and not all window managers honor requests to fullscreen windows. But normally the window will end up fullscreen. Just don't write code that crashes if not.

You can track the fullscreen state via the gtk.Widget "window-state-event" signal.

gtk.Window.unfullscreen

    def unfullscreen()

Note

This method is available in PyGTK 2.2 and above.

The unfullscreen() method requests the window manager to toggle off the fullscreen state for the window. Note that you shouldn't assume the window is definitely not full screen afterward, because other entities (e.g. the user or window manager) could fullscreen it again, and not all window managers honor requests to unfullscreen windows. But normally the window will end up restored to its normal state. Just don't write code that crashes if not.

You can track the fullscreen state via the gtk.Widget "window_state_event" signal.

gtk.Window.set_keep_above

    def set_keep_above(setting)

setting :

if True keep the window above other windows

Note

This method is available in PyGTK 2.4 and above.

The set_keep_above() method requests the window manager to keep the window on top if setting is True. Note that you shouldn't assume the window is definitely above afterward, because other entities (e.g. the user or window manager) could not keep it above, and not all window managers support keeping windows above. But normally the window will end kept above. Just don't write code that crashes if not.

It's permitted to call this method before showing a window, so the window will be kept above when it appears on-screen initially.

You can track the above state via the gtk.Widget "window_state_event" signal.

Note that, according to the Extended Window Manager Hints specification, the above state is mainly meant for user preferences and should not be used by applications e.g. for drawing attention to their dialogs.

gtk.Window.set_keep_below

    def set_keep_below(setting)

setting :

if True keep the window below other windows

Note

This method is available in PyGTK 2.4 and above.

The set_keep_below() method requests the window manager to keep the window on the bottom (i.e. below all other windows). Note that you shouldn't assume the window is definitely below afterward, because other entities (e.g. the user or window manager) could not keep it below, and not all window managers support putting windows below. But normally the window will be kept below. Just don't write code that crashes if not.

It's permitted to call this function before showing a window, in which case the window will be kept below when it appears on-screen initially.

You can track the below state via the gtk.Widget "window_state_event" signal.

Note that, according to the Extended Window Manager Hints specification, the above state is mainly meant for user preferences and should not be used by applications e.g. for drawing attention to their dialogs.

gtk.Window.begin_resize_drag

    def begin_resize_drag(edge, button, root_x, root_y, timestamp)

edge :

the position of the resize control

button :

the mouse button that initiated the drag

root_x :

the X position where the user clicked to initiate the drag, in root window coordinates

root_y :

the Y position where the user clicked to initiate the drag

timestamp :

the timestamp from the click event that initiated the drag

The begin_resize_drag() method starts resizing a window from the edge specified by edge. The mouse button that started the resize is specified by button; the location, by root_x and root_y; and the time of the event, by timestamp. The value of edge must be one of the GDK Window Edge Constants.

This method is used if an application has window resizing controls. When PyGTK can support it, the resize will be done using the standard mechanism for the window manager or windowing system. Otherwise, PyGTK will try to emulate window resizing, potentially not all that well, depending on the windowing system.

gtk.Window.begin_move_drag

    def begin_move_drag(button, root_x, root_y, timestamp)

button :

the mouse button that initiated the drag

root_x :

the X position where the user clicked to initiate the drag, in root window coordinates

root_y :

the Y position where the user clicked to initiate the drag

timestamp :

the timestamp from the click event that initiated the drag

The begin_move_drag() method starts moving a window when the user presses the mouse button specified by button at the location specified by root_x and root_y at the time specified by timestamp. This method is used if an application has window movement grips. When PyGTK can support it, the window movement will be done using the standard mechanism for the window manager or windowing system. Otherwise, PyGTK will try to emulate window movement, potentially not all that well, depending on the windowing system.

gtk.Window.set_default_size

    def set_default_size(width, height)

width :

the width in pixels, or -1 to unset the default width

height :

the height in pixels, or -1 to unset the default height

The set_default_size() method sets the default size of the window to the specified width and height. If the window's "natural" size (its size request) is larger than the default, the default will be ignored. More generally, if the default size does not obey the geometry hints for the window (the set_geometry_hints() method can be used to set these explicitly), the default size will be clamped to the nearest permitted size.

Unlike the gtk.Widget.set_size_request() method, which sets a size request for a widget and thus would keep users from shrinking the window, this method only sets the initial size, just as if the user had resized the window themselves. Users can still shrink the window again as they normally would. Setting a default size of -1 means to use the "natural" default size (the size request of the window). For more control over a window's initial size and how resizing works, investigate the set_geometry_hints() method.

For some uses, the resize() method is more appropriate as it changes the current size of the window, rather than the size to be used on initial display. The resize() method always affects the window itself, not the geometry widget. The default size of a window only affects the first time a window is shown; if a window is hidden and re-shown, it will remember the size it had prior to hiding, rather than using the default size. Windows can't actually be 0x0 in size, they must be at least 1x1, but passing 0 for width and height is OK, resulting in a 1x1 default size.

gtk.Window.get_default_size

    def get_default_size()

Returns :

a tuple containing the default width and height of the window

The get_default_size() method returns a tuple containing the default width and height of the window. A value of -1 for the returned width or height indicates that a default size has not been explicitly set for that dimension, so the "natural" size of the window will be used. See the set_default_size() method for more information

gtk.Window.resize

    def resize(width, height)

width :

the width in pixels to resize the window to

height :

the height in pixels to resize the window to

The resize() method resizes the window to the specified width and height as if the user had done so, obeying geometry constraints. The default geometry constraint is that windows may not be smaller than their size request; to override this constraint, call the gtk.Widget.set_size_request() method to set the window's request to a smaller value. If the resize() method is called before showing a window for the first time, it overrides any default size set with the set_default_size() method. Windows may not be resized smaller than 1 by 1 pixels.

gtk.Window.get_size

    def get_size()

Returns :

a tuple containing the width and height of the window

The get_size() method returns a tuple containing the current width and height of the window. If the window is not on-screen, it returns the size PyGTK will suggest to the window manager for the initial window size (but this is not reliably the same as the size the window manager will actually select). The size obtained by the get_size() method is the last size received in a configure event, that is, PyGTK uses its locally-stored size, rather than querying the X server for the size. As a result, if you call the resize() method then immediately call the get_size() method, the size won't have taken effect yet. After the window manager processes the resize request, PyGTK receives notification that the size has changed via a configure event, and the size of the window gets updated.

Note

Nearly any use of this method creates a race condition, because the size of the window may change between the time that you get the size and the time that you perform some action assuming that size is the current size. To avoid race conditions, connect to "configure_event" on the window and adjust your size-dependent state to match the size delivered in the configure event.

The returned size does not include the size of the window manager decorations (aka the window frame or border). Those are not drawn by PyGTK which has no reliable method of determining their size.

If you are getting a window size in order to position the window on-screen, there may be a better way. The preferred way is to simply set the window's semantic type with the set_type_hint() method, that allows the window manager to center dialogs, etc. Also, if you set the transient parent of dialogs with the set_transient_for() method, window managers will often center the dialog over its parent window. It's much preferred to let the window manager handle these things rather than doing it yourself, because all apps will behave consistently and according to user prefs if the window manager handles it. Also, the window manager can take the size of the window decorations/border into account, while your application cannot.

In any case, if you insist on application-specified window positioning, there's still a better way than doing it yourself - the set_position() method will frequently handle the details for you.

gtk.Window.move

    def move(x, y)

x :

the X coordinate to move window to

y :

the Y coordinate to move window to

The move() method asks the window manager to move the window to the position specified by x and y. Window managers are free to ignore this. In fact, most window managers ignore requests for initial window positions (instead using a user-defined placement algorithm) and honor requests after the window has already been shown.

The position is the position of the gravity-determined reference point for the window. The gravity determines two things: first, the location of the reference point in root window coordinates; and second, which point on the window is positioned at the reference point. By default the gravity is gtk.gdk.GRAVITY_NORTH_WEST, so the reference point is simply the x, y supplied to the move() method. The top-left corner of the window decorations (aka window frame or border) will be placed at x, y. Therefore, to position a window at the top left of the screen, you want to use the default gravity (which is gtk.gdk.GRAVITY_NORTH_WEST) and move the window to 0,0.

To position a window at the bottom right corner of the screen, you would set gtk.gdk.GRAVITY_SOUTH_EAST, which means that the reference point is at x + the window width and y + the window height, and the bottom-right corner of the window border will be placed at that reference point. So, to place a window in the bottom right corner you would first set gravity to south east, then move the window:

  window.set_gravity(gtk.gdk.GRAVITY_SOUTH_EAST)
  width, height = window.get_size()
  window.move(gtk.gdk.screen_width() - width, gtk.gdk.screen_height() - height)

The Extended Window Manager Hints specification has a nice table of gravities in the "implementation notes" section. The get_position() method documentation may also be relevant.

gtk.Window.get_position

    def get_position()

Returns :

a tuple containing the X and Y coordinates of the gravity-determined reference point

The get_position() method returns a tuple containing the x and y coordinates of the window that you would need to pass to the move() method to keep the window in its current position. This means that the meaning of the returned value varies with window gravity. See the move() method for more details. If you haven't changed the window gravity, its gravity will be gtk.gdk.GRAVITY_NORTH_WEST. This means that the get_position() method gets the position of the top-left corner of the window manager frame for the window. The move() method sets the position of this same top-left corner.

The get_position() method is not 100% reliable because the X Window System does not specify a way to obtain the geometry of the decorations placed on a window by the window manager. Thus PyGTK is using a "best guess" that works with most window managers. Moreover, nearly all window managers are historically broken with respect to their handling of window gravity. So moving a window to its current position as returned by the get_position() method tends to result in moving the window slightly. Window managers are slowly getting better over time.

If a window has gravity gtk.gdk.GRAVITY_STATIC the window manager frame is not relevant, and thus the get_position() method will always produce accurate results. However you can't use static gravity to do things like place a window in a corner of the screen, because static gravity ignores the window manager decorations. If you are saving and restoring your application's window positions, you should know that it's impossible for applications to do this without getting it somewhat wrong because applications do not have sufficient knowledge of window manager state. The correct mechanism is to support the session management protocol (see the "GnomeClient" object in the GNOME libraries for example) and allow the window manager to save your window sizes and positions.

gtk.Window.parse_geometry

    def parse_geometry(geometry)

geometry :

the geometry string

Returns :

True if string was parsed successfully

The parse_geometry() method parses the standard X Window System geometry string specified by geometry. The geometry string has the format "WIDTHxHEIGHT+XOFFSET+YOFFSET" where WIDTH, HEIGHT, XOFFSET and YOFFSET are specified in pixels (see the X documentation for more details). This method works work on all PyGTK ports including Win32 but is primarily intended for an X environment. If either a size or a position can be extracted from the geometry string, the parse_geometry() method returns True and calls the set_default_size() and move() methods to resize and move the window.

If the parse_geometry() method returns True, it will also set the gtk.gdk.HINT_USER_POS and gtk.gdk.HINT_USER_SIZE hints indicating to the window manager that the size and position of the window was user-specified. This causes most window managers to honor the geometry.

gtk.Window.reshow_with_initial_size

    def reshow_with_initial_size()

The reshow_with_initial_size() method hides the window, then reshows it, resetting the default size and position of the window. Used by GUI builders only.

gtk.Window.tooltips_get_info_from_tip_window

    def tooltips_get_info_from_tip_window()

Returns :

a 2-tuple containing the gtk.Tooltips and gtk.Widget displayed in the window or None.

Note

This method is available in PyGTK 2.4 and above.

The tooltips_get_info_from_tip_window() method returns a 2-tuple containing the gtk.Tooltips and gtk.Widget displayed in the window. If the window is not displaying tooltips this method returns None. This method is mostly intended for use by accessibility technologies - applications should have little use for it.

gtk.Window.set_focus_on_map

    def set_focus_on_map(setting)

setting :

If True this window would like to receive focus when mapped.

Note

This method is available in PyGTK 2.6 and above.

The set_focus_on_map() method sets the "focus-on-map" property to the value of setting. If setting is True a hint is set asking the desktop environment to give focus to the window when it is mapped.

gtk.Window.get_focus_on_map

    def get_focus_on_map()

Returns :

True if the window would like to receive focus when mapped.

Note

This method is available in PyGTK 2.6 and above.

The get_focus_on_map() method returns the value of the "focus-on-map" property. See the set_focus_on_map() method for more information.

gtk.Window.set_icon_name

    def set_icon_name(name)

name :

the name of the themed icon or None

Note

This method is available in PyGTK 2.6 and above.

The set_icon_name() method sets the "icon-name" property to the value of name. If name is None, then the default themed icon will be used. The "icon-name" property contains the name of the icon used for the window. See the gtk.IconTheme reference for more information.

gtk.Window.get_icon_name

    def get_icon_name()

Returns :

The name of the themed icon used for the window icon or None if no icon is set.

Note

This method is available in PyGTK 2.6 and above.

The get_icon_name() method returns the name of the themed icon for the window, see the set_icon_name() method for more information.

gtk.Window.set_urgency_hint

    def set_urgency_hint(urgency_hint)

urgency_hint :

if True mark this window as needing urgent attention.

Note

This method is available in PyGTK 2.8 and above.

The set_urgency_hint() method sets the "urgency-hint" property to the value of urgency_hint. If the "urgency-hint" property is True the window sets a hint to the desktop environment to draw the users attention to the window.

gtk.Window.get_urgency_hint

    def get_urgency_hint()

Returns :

True if the window is marked as needing urgent user attention.

Note

This method is available in PyGTK 2.8 and above.

The get_urgency_hint() method returns the value of the "urgency-hint" property. See the set_urgency_hint() method for more information.

gtk.Window.present_with_time

    def present_with_time(timestamp)

timestamp :

the timestamp of the user interaction (typically a button or key press event) which triggered this call

Note

This method is available in PyGTK 2.8 and above.

The present_with_time() method presents a window to the user in response to a user interaction. If you need to present a window without a timestamp, use the present() method.

gtk.Window.set_deletable

    def set_deletable(setting)

setting :

if True decorate the window as deletable

Note

This method is available in PyGTK 2.10 and above.

By default, windows have a close button in the window frame. Some window managers allow GTK+ to disable this button. If you set the deletable property to False using this method, GTK+ will do its best to convince the window manager not to show a close button. Depending on the system, this method may not have any effect when called on a window that is already visible, so you should call it before calling gtk_window_show().

On Windows, this method always works, since there's no window manager policy involved.

gtk.Window.get_deletable

    def get_deletable()

Returns :

True if the window has been set to have a close button

Note

This method is available in PyGTK 2.10 and above.

Returns whether the window has been set to have a close button via the gtk.Window.set_deletable() method.

gtk.Window.get_group

    def get_group()

Returns :

the gtk.WindowGroup for a window or the default group

Note

This method is available in PyGTK 2.10 and above.

Returns the gtk.WindowGroup or the default group, if the window does not have an explicit window group.

gtk.Window.has_group

    def has_group()

Returns :

True if the window has an explicit window group, False otherwise.

Note

This method is available in PyGTK 2.22 and above.

The has_group() method returns whether window has an explicit window group.

gtk.Window.get_window_type

    def get_window_type()

Returns :

the type of the window.

Note

This method is available in PyGTK 2.22 and above.

The get_window_type() method gets the type of the window.

gtk.Window.set_opacity

    def set_opacity(opacity)

opacity :

desired opacity, between 0 and 1.

Note

This method is available in PyGTK 2.12 and above.

Request the windowing system to make window partially transparent, with opacity 0 being fully transparent and 1 fully opaque. (Values of the opacity parameter are clamped to the [0,1] range.) On X11 this has any effect only on X screens with a compositing manager running. See gtk.Widget.is_composited(). On Windows it should work always.

Note that setting a window's opacity after the window has been shown causes it to flicker once on Windows.

gtk.Window.get_opacity

    def get_opacity()

Returns :

the requested opacity for this window.

Note

This method is available in PyGTK 2.12 and above.

Fetches the requested opacity for this window. See gtk.Window.set_opacity().

gtk.Window.set_startup_id

    def set_startup_id(startup_id)

startup_id :

a string with startup-notification identifier

Note

This method is available in PyGTK 2.12 and above.

Startup notification identifiers are used by desktop environment to track application startup, to provide user feedback and other features. This function changes the corresponding property on the underlying GdkWindow. Normally, startup identifier is managed automatically and you should only use this function in special cases like transferring focus from other processes. You should use this function before calling gtk.Window.present() or any equivalent function generating a window map event.

This function is only useful on X11, not with other GTK+ targets.

gtk.Window.get_default_widget

    def get_default_widget()

Returns :

The default widget, or None if there is none.

Note

This method is available in PyGTK 2.14 and above.

Returns the default widget for window. See gtk.Window.set_default()() for more details.

gtk.Window.set_skip_taskbar_hint

    def set_skip_taskbar_hint(setting)

setting :

True to keep this window from appearing in the task bar, False otherwise.

The set_skip_taskbar_hint() method set a hint asking the desktop environment not to display the window in the task bar.

gtk.Window.get_skip_taskbar_hint

    def get_skip_taskbar_hint()

Returns :

True if this window is kept from appearing in the task bar, False otherwise.

The get_skip_taskbar_hint() method returns whether a hint is set asking the desktop environment not to display the window in the task bar.

gtk.Window.set_skip_pager_hint

    def set_skip_pager_hint(setting)

setting :

True to keep this window from appearing in the pager, False otherwise.

The set_skip_pager_hint() method sets a hint asking the desktop environment not to display the window in the pager. A "pager" is any desktop navigation tool such as a workspace switcher that displays a thumbnail representation of the windows on the screen.

gtk.Window.get_skip_pager_hint

    def get_skip_pager_hint()

Returns :

True if this window is kept from appearing in the pager, False otherwise.

The get_skip_pager_hint() method returns whether a hint is set asking the desktop environment not to display the window in the pager.

gtk.Window.set_accept_focus

    def set_accept_focus(setting)

setting :

True to let this window receive input focus.

The set_accept_focus() method sets a hint asking the desktop environment to receive the input focus or not.

gtk.Window.get_accept_focus

    def get_accept_focus()

Returns :

True if the window should receive the input focus.

The get_accept_focus() method returns whether a hint is set asking the desktop environment to receive the input focus.

Functions

gtk.window_set_default_icon_list

    def gtk.window_set_default_icon_list(...)

... :

zero or more gtk.gdk.Pixbuf objects

The gtk.window_set_default_icon_list() function sets an icon list to be used as fallback for windows that haven't had the set_icon_list() method called on them to set up a window-specific icon list. This function allows you to set up the icon for all windows in your app at once. See the set_icon_list() method documentation for more details.

gtk.window_set_default_icon

    def gtk.window_set_default_icon(icon)

icon :

a gtk.gdk.Pixbuf

Note

This function is available in PyGTK 2.4 and above.

The gtk.window_set_default_icon() function sets an icon specified by icon to be used as the fallback for windows that haven't had the set_icon() method called on them to set up a window-specific icon. This function allows you to set up the icon for all windows in your app at once.

gtk.window_set_default_icon_from_file

    def gtk.window_set_default_icon_from_file(filename)

filename :

an icon file name

Note

This function is available in PyGTK 2.2 and above.

The gtk.window_set_default_icon_from_file() function sets an icon contained in the file specified by filename to be used as the fallback for windows that haven't had the set_icon() method called on them to set up a window-specific icon. This function allows you to set up the icon for all windows in your app at once.

The GError exception is raised if an error occurs while loading the icon pixbuf from filename.

gtk.window_get_default_icon_list

    def gtk.window_get_default_icon_list()

Returns :

a copy of the applications default icon list

The gtk.window_get_default_icon_list() function returns the application's default icon list as set by the gtk.window_set_default_icon_list() function. See the set_icon_list() method documentation for more details.

gtk.window_set_auto_startup_notification

    def gtk.window_set_auto_startup_notification()

setting :

if True, automatically do startup notification

Note

This function is available in PyGTK 2.2 and above.

The gtk.window_set_auto_startup_notification() function sets the auto startup notification setting to the value of setting. If setting is True startup notification will be done automatically.

By default, after showing the first gtk.Window for each gtk.gdk.Screen, GTK+ calls the gdk_notify_startup_complete() function. Call this function to disable the automatic startup notification. You might do this if your first window is a splash screen, and you want to delay notification until after your real main window has been shown. In that example, you would disable startup notification temporarily, show your splash screen, then re-enable it so that showing the main window would automatically result in notification.

gtk.window_list_toplevels

    def gtk.window_list_toplevels()

Returns :

a list of all the toplevel gtk.Window widgets

The gtk.window_list_toplevels() function returns a list of all the toplevel gtk.Window widgets in the application.

gtk.window_set_default_icon_name

    def gtk.window_set_default_icon_name()

setting :

if True, automatically do startup notification

Note

This function is available in PyGTK 2.6 and above.

The gtk.window_set_default_icon_name() function sets an icon to be used as fallback for windows that haven't had the set_icon_list() method called on them from a named themed icon, see the set_icon_name() method.

Signals

The "activate-default" gtk.Window Signal

    def callback(window, user_param1, ...)

window :

the window that received the signal

user_param1 :

the first user parameter (if any) specified with the connect() method

... :

additional user parameters (if any)

The "activate-default" signal is emitted when the default child widget of window is activated usually by the user pressing the Return or Enter key.

The "activate-focus" gtk.Window Signal

    def callback(window, user_param1, ...)

window :

the window that received the signal

user_param1 :

the first user parameter (if any) specified with the connect() method

... :

additional user parameters (if any)

The "activate-focus" signal is emitted when the child widget with the focus is activated usually by the user pressing the Space key.

The "frame-event" gtk.Window Signal

    def callback(window, event, user_param1, ...)

window :

the window that received the signal

event :

the event that triggered the signal

user_param1 :

the first user parameter (if any) specified with the connect() method

... :

additional user parameters (if any)

Returns :

True to stop other handlers from being invoked for the event. False to propagate the event further.

The "frame-event" signal is emitted when an event other than key press or release or focus change is received on the window's frame.

The "keys-changed" gtk.Window Signal

    def callback(window, user_param1, ...)

window :

the window that received the signal

user_param1 :

the first user parameter (if any) specified with the connect() method

... :

additional user parameters (if any)

The "keys-changed" signal is emitted when a mnemonic accelerator is added, removed or changed or the mnemonic modifier is set.

The "move-focus" gtk.Window Signal

    def callback(window, direction, user_param1, ...)

window :

the window that received the signal

direction :

the move direction: gtk.DIR_TAB_FORWARD, gtk.DIR_TAB_BACKWARD, gtk.DIR_UP, gtk.DIR_DOWN, gtk.DIR_LEFT or gtk.DIR_RIGHT

user_param1 :

the first user parameter (if any) specified with the connect() method

... :

additional user parameters (if any)

The "move-focus" signal is emitted when the focus is changed within the window's child widgets. Usually this happens when the user presses the Tab, the Shift+Tab or the Up, Down, Left or Right arrow keys.

The "set-focus" gtk.Window Signal

    def callback(window, widget, user_param1, ...)

window :

the window that received the signal

widget :

the widget that receives the focus

user_param1 :

the first user parameter (if any) specified with the connect() method

... :

additional user parameters (if any)

The "set-focus" signal is emitted when the focus changes to widget in window.

pygtk-2.24.0/docs/html/index.sgml0000644000175000017500000226372611545327512013574 00000000000000