hippo-canvas-0.3.1/0000775000076400007640000000000011404424207011114 500000000000000hippo-canvas-0.3.1/configure.ac0000664000076400007640000001374511404424147013337 00000000000000dnl -*- mode: m4 -*- AC_PREREQ(2.59) AC_INIT(LICENSE) AC_CONFIG_AUX_DIR(config) AC_CANONICAL_TARGET AM_INIT_AUTOMAKE(hippo-canvas, 0.3.1) AM_CONFIG_HEADER(config/config.h) # Honor aclocal flags ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS" GETTEXT_PACKAGE=hippo-canvas AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[The name of the gettext domain]) ## must come before we use the $USE_MAINTAINER_MODE variable later AM_MAINTAINER_MODE ## don't rerun to this point if we abort AC_CACHE_SAVE AC_PROG_CC AC_PROG_LIBTOOL AC_ISC_POSIX AC_HEADER_STDC ## don't rerun to this point if we abort AC_CACHE_SAVE #### gcc warning flags changequote(,)dnl addCommonWarnings() { result="$@" case " $result " in *[\ \ ]-Wall[\ \ ]*) ;; *) result="$result -Wall" ;; esac case " $result " in *[\ \ ]-Wchar-subscripts[\ \ ]*) ;; *) result="$result -Wchar-subscripts" ;; esac case " $result " in *[\ \ ]-Wpointer-arith[\ \ ]*) ;; *) result="$result -Wpointer-arith" ;; esac case " $result " in *[\ \ ]-Wcast-align[\ \ ]*) ;; *) result="$result -Wcast-align" ;; esac case " $result " in *[\ \ ]-Wfloat-equal[\ \ ]*) ;; *) result="$result -Wfloat-equal" ;; esac case " $result " in *[\ \ ]-Wsign-compare[\ \ ]*) ;; *) result="$result -Wsign-compare" ;; esac if test "x$enable_ansi" = "xyes"; then case " $result " in *[\ \ ]-ansi[\ \ ]*) ;; *) result="$result -ansi" ;; esac case " $result " in *[\ \ ]-D_POSIX_C_SOURCE*) ;; *) result="$result -D_POSIX_C_SOURCE=199309L" ;; esac case " $result " in *[\ \ ]-D_BSD_SOURCE[\ \ ]*) ;; *) result="$result -D_BSD_SOURCE" ;; esac case " $result " in *[\ \ ]-pedantic[\ \ ]*) ;; *) result="$result -pedantic" ;; esac fi if test x$enable_gcov = xyes; then case " $result " in *[\ \ ]-fprofile-arcs[\ \ ]*) ;; *) result="$result -fprofile-arcs" ;; esac case " $result " in *[\ \ ]-ftest-coverage[\ \ ]*) ;; *) result="$result -ftest-coverage" ;; esac ## remove optimization result=`echo "$result" | sed -e 's/-O[0-9]*//g'` fi echo $result } addCOnlyWarnings() { result="$@" case " $result " in *[\ \ ]-Wdeclaration-after-statement[\ \ ]*) ;; *) result="$result -Wdeclaration-after-statement" ;; esac case " $result " in *[\ \ ]-Wmissing-declarations[\ \ ]*) ;; *) result="$result -Wmissing-declarations" ;; esac case " $result " in *[\ \ ]-Wmissing-prototypes[\ \ ]*) ;; *) result="$result -Wmissing-prototypes" ;; esac case " $result " in *[\ \ ]-Wnested-externs[\ \ ]*) ;; *) result="$result -Wnested-externs" ;; esac echo $result } changequote([,])dnl if test "x$GCC" = "xyes"; then CFLAGS="`addCommonWarnings $CFLAGS`" CFLAGS="`addCOnlyWarnings $CFLAGS`" fi AC_SUBST(CFLAGS) AC_SUBST(LDFLAGS) GLIB2_REQUIRED=2.6.0 GTK2_REQUIRED=2.6.0 LIBCROCO_REQUIRED=0.6.0 PANGO_REQUIRED=1.14 LIBRSVG_REQUIRED=2.16 PYGOBJECT_REQUIRED=2.21.2 # We define HAVE_LIBRSVG so we can do a Windows build without it, but there's # no point in supporting no-librsvg Linux builds, so we don't go ahead and # make it fully optional. PKG_CHECK_EXISTS(librsvg-2.0 >= $LIBRSVG_REQUIRED, have_rsvg=true, have_rsvg=false) if $have_rsvg; then AC_DEFINE(HAVE_LIBRSVG, 1, [Define if you have librsvg]) librsvg_modules=librsvg-2.0 else AC_MSG_ERROR([librsvg >= $LIBRSVG_REQUIRED is required]) fi PKG_CHECK_MODULES(LIBHIPPOCANVAS, gobject-2.0 >= $GLIB2_REQUIRED gtk+-2.0 >= $GTK2_REQUIRED libcroco-0.6 >= $LIBCROCO_REQUIRED $librsvg_modules cairo pango >= $PANGO_REQUIRED) GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0` AC_SUBST(GLIB_GENMARSHAL) GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0` AC_SUBST(GLIB_MKENUMS) GTK_DOC_CHECK([1.6]) ## Python bindings AC_ARG_ENABLE(python, [AC_HELP_STRING([--enable-python], [Python bindings [default=auto]])]) if test "x$enable_python" = "xno" ; then have_python=no else have_python=no AM_PATH_PYTHON if test "x$PYTHON" = "x" ; then AC_MSG_WARN([Python not found]) else AM_CHECK_PYTHON_HEADERS([ AC_PATH_PROG(PYGTK_CODEGEN, pygtk-codegen-2.0, no) PKG_CHECK_MODULES(PYTHON_BINDINGS, pygobject-2.0 > $PYGOBJECT_REQUIRED pygtk-2.0 pycairo, [ PYGTK_DEFSDIR=`$PKG_CONFIG --variable=defsdir pygtk-2.0` AC_SUBST(PYGTK_DEFSDIR) have_python=yes ], [AC_MSG_WARN(could not find pygobject > $PYGOBJECT_REQUIRED, pygtk-2.0 or pycairo)]) ],[AC_MSG_WARN(could not find Python headers)]) fi fi AC_MSG_CHECKING([for gobject-introspection]) PKG_CHECK_EXISTS(gobject-introspection-1.0, have_introspection=true, have_introspection=false) AC_MSG_RESULT($have_introspection) AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$have_introspection" = "xtrue") INTROSPECTION_SCANNER= INTROSPECTION_COMPILER= INTROSPECTION_GENERATE= INTROSPECTION_GIRDIR= INTROSPECTION_TYPELIBDIR= if test "x$have_introspection" = "xtrue"; then INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0` INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0` INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0` INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0` INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)" fi AC_SUBST(INTROSPECTION_SCANNER) AC_SUBST(INTROSPECTION_COMPILER) AC_SUBST(INTROSPECTION_GENERATE) AC_SUBST(INTROSPECTION_GIRDIR) AC_SUBST(INTROSPECTION_TYPELIBDIR) AM_CONDITIONAL(HAVE_PYTHON, test "x$have_python" = "xyes") AC_OUTPUT([ Makefile hippo-canvas-1.pc docs/Makefile ]) dnl ========================================================================== echo " hippo-canvas $VERSION ================== prefix: ${prefix} compiler: ${CC} LIBHIPPOCANVAS_CFLAGS: ${LIBHIPPOCANVAS_CFLAGS} Python bindings: ${have_python} Now type 'make' to build $PACKAGE " hippo-canvas-0.3.1/gtk-doc.make0000644000076400007640000001567111376754216013251 00000000000000# -*- mode: makefile -*- #################################### # Everything below here is generic # #################################### if GTK_DOC_USE_LIBTOOL GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) GTKDOC_RUN = $(LIBTOOL) --mode=execute else GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) GTKDOC_RUN = endif # We set GPATH here; this gives us semantics for GNU make # which are more like other make's VPATH, when it comes to # whether a source that is a target of one rule is then # searched for in VPATH/GPATH. # GPATH = $(srcdir) TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE) EXTRA_DIST = \ $(content_files) \ $(HTML_IMAGES) \ $(DOC_MAIN_SGML_FILE) \ $(DOC_MODULE)-sections.txt \ $(DOC_MODULE)-overrides.txt DOC_STAMPS=scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp \ pdf-build.stamp \ $(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp \ $(srcdir)/pdf.stamp SCANOBJ_FILES = \ $(DOC_MODULE).args \ $(DOC_MODULE).hierarchy \ $(DOC_MODULE).interfaces \ $(DOC_MODULE).prerequisites \ $(DOC_MODULE).signals REPORT_FILES = \ $(DOC_MODULE)-undocumented.txt \ $(DOC_MODULE)-undeclared.txt \ $(DOC_MODULE)-unused.txt CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) if ENABLE_GTK_DOC if GTK_DOC_BUILD_HTML HTML_BUILD_STAMP=html-build.stamp else HTML_BUILD_STAMP= endif if GTK_DOC_BUILD_PDF PDF_BUILD_STAMP=pdf-build.stamp else PDF_BUILD_STAMP= endif all-local: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) else all-local: endif docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) $(REPORT_FILES): sgml-build.stamp #### scan #### scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB) @echo 'gtk-doc: Scanning header files' @-chmod -R u+w $(srcdir) @_source_dir='' ; for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ cd $(srcdir) && \ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) @if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null 2>&1 ; then \ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \ else \ cd $(srcdir) ; \ for i in $(SCANOBJ_FILES) ; do \ test -f $$i || touch $$i ; \ done \ fi @touch scan-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp @true #### templates #### tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt @echo 'gtk-doc: Rebuilding template files' @-chmod -R u+w $(srcdir) @cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS) @touch tmpl-build.stamp tmpl.stamp: tmpl-build.stamp @true $(srcdir)/tmpl/*.sgml: @true #### xml #### sgml-build.stamp: tmpl.stamp $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files) @echo 'gtk-doc: Building XML' @-chmod -R u+w $(srcdir) @_source_dir='' ; for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ cd $(srcdir) && \ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) @touch sgml-build.stamp sgml.stamp: sgml-build.stamp @true #### html #### html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) @echo 'gtk-doc: Building HTML' @-chmod -R u+w $(srcdir) @rm -rf $(srcdir)/html @mkdir $(srcdir)/html @mkhtml_options=""; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \ if test "$(?)" = "0"; then \ mkhtml_options=--path="$(srcdir)"; \ fi; \ cd $(srcdir)/html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) @test "x$(HTML_IMAGES)" = "x" || ( cd $(srcdir) && cp $(HTML_IMAGES) html ) @echo 'gtk-doc: Fixing cross-references' @cd $(srcdir) && gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) @touch html-build.stamp #### pdf #### pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) @echo 'gtk-doc: Building PDF' @-chmod -R u+w $(srcdir) @rm -rf $(srcdir)/$(DOC_MODULE).pdf @mkpdf_imgdirs=""; \ if test "x$(HTML_IMAGES)" != "x"; then \ for img in $(HTML_IMAGES); do \ part=`dirname $$img`; \ echo $$mkpdf_imgdirs | grep >/dev/null "\-\-imgdir=$$part "; \ if test $$? != 0; then \ mkpdf_imgdirs="$$mkpdf_imgdirs --imgdir=$$part"; \ fi; \ done; \ fi; \ cd $(srcdir) && gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_imgdirs $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) @touch pdf-build.stamp ############## clean-local: rm -f *~ *.bak rm -rf .libs distclean-local: cd $(srcdir) && \ rm -rf xml $(REPORT_FILES) $(DOC_MODULE).pdf \ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt maintainer-clean-local: clean cd $(srcdir) && rm -rf xml html install-data-local: @installfiles=`echo $(srcdir)/html/*`; \ if test "$$installfiles" = '$(srcdir)/html/*'; \ then echo '-- Nothing to install' ; \ else \ if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ $(mkinstalldirs) $${installdir} ; \ for i in $$installfiles; do \ echo '-- Installing '$$i ; \ $(INSTALL_DATA) $$i $${installdir}; \ done; \ if test -n "$(DOC_MODULE_VERSION)"; then \ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ mv -f $${installdir}/$(DOC_MODULE).devhelp \ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp; \ fi; \ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ fi uninstall-local: @if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ rm -rf $${installdir} # # Require gtk-doc when making dist # if ENABLE_GTK_DOC dist-check-gtkdoc: else dist-check-gtkdoc: @echo "*** gtk-doc must be installed and enabled in order to make dist" @false endif dist-hook: dist-check-gtkdoc dist-hook-local mkdir $(distdir)/tmpl mkdir $(distdir)/html -cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl cp $(srcdir)/html/* $(distdir)/html -cp $(srcdir)/$(DOC_MODULE).pdf $(distdir)/ -cp $(srcdir)/$(DOC_MODULE).types $(distdir)/ -cp $(srcdir)/$(DOC_MODULE)-sections.txt $(distdir)/ cd $(distdir) && rm -f $(DISTCLEANFILES) $(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html .PHONY : dist-hook-local docs hippo-canvas-0.3.1/README0000664000076400007640000000006311366237062011723 00000000000000See http://developer.mugshot.org/wiki/Hippo_Canvas hippo-canvas-0.3.1/Makefile-python.am0000664000076400007640000000235411366237062014423 00000000000000hippo_la_CPPFLAGS = \ $(AM_CPPFLAGS) \ -I $(top_srcdir)/common \ -I $(top_srcdir)/linux \ -I $(top_srcdir)/python \ $(PYTHON_INCLUDES) \ $(PYTHON_BINDINGS_CFLAGS) \ $(PYCAIRO_CFLAGS) \ $(LIBHIPPOCANVAS_CFLAGS) PYTHONSRCDIR=$(top_srcdir)/python pyhippodir = $(pyexecdir) pyhippo_LTLIBRARIES=hippo.la hippo_la_LDFLAGS = -module -avoid-version hippo_la_LIBADD = \ $(PYTHON_BINDINGS_LIBS) \ $(LIBHIPPOCANVAS_LIBS) \ $(top_builddir)/libhippocanvas-1.la hippo_la_SOURCES = \ $(PYTHONSRCDIR)/canvas-box-child.c \ $(PYTHONSRCDIR)/canvas-box-child.h \ $(PYTHONSRCDIR)/hippomodule.c nodist_hippo_la_SOURCES = \ hippo.c PYTHONDEFS_FILES = \ $(PYTHONSRCDIR)/hippo.defs \ $(PYTHONSRCDIR)/hippo.override \ $(PYTHONSRCDIR)/arg-types.py CLEANFILES += hippo.c EXTRA_DIST += $(PYTHONDEFS_FILES) hippo.c: $(PYTHONDEFS_FILES) ($(PYGTK_CODEGEN) \ --load-types $(PYTHONSRCDIR)/arg-types.py \ --register $(PYGTK_DEFSDIR)/pango.defs \ --register $(PYGTK_DEFSDIR)/gtk-types.defs \ --register $(PYGTK_DEFSDIR)/gdk-types.defs \ --override $(PYTHONSRCDIR)/hippo.override \ --prefix pyhippo $(PYTHONSRCDIR)/hippo.defs) > gen-hippo.c \ && cp gen-hippo.c $*.c \ && rm -f gen-hippo.c hippo-canvas-0.3.1/configure0000775000076400007640000153161611404424201012752 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.63. # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008 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 # PATH needs CR # 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_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 if (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 # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false 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); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. 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 # Name of the executable. 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'` # CDPATH. $as_unset CDPATH if test "x$CONFIG_SHELL" = x; then if (eval ":") 2>/dev/null; then as_have_required=yes else as_have_required=no fi if test $as_have_required = yes && (eval ": (as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=\$LINENO as_lineno_2=\$LINENO test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ") 2> /dev/null; then : else as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. case $as_dir in /*) for as_base in sh bash ksh sh5; do as_candidate_shells="$as_candidate_shells $as_dir/$as_base" done;; esac done IFS=$as_save_IFS for as_shell in $as_candidate_shells $SHELL; do # Try only shells that exist, to save several forks. if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { ("$as_shell") 2> /dev/null <<\_ASEOF 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 : _ASEOF }; then CONFIG_SHELL=$as_shell as_have_required=yes if { "$as_shell" 2> /dev/null <<\_ASEOF 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_func_return () { (exit $1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = "$1" ); then : else exitcode=1 echo positional parameters were not saved. fi test $exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } _ASEOF }; then break fi fi done if test "x$CONFIG_SHELL" != x; then for as_var in BASH_ENV ENV do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done export CONFIG_SHELL exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi if test $as_have_required = no; then echo This script requires a shell more modern than all the echo shells that I found on your system. Please install a echo modern shell, or manually run the script under such a echo shell if you do have one. { (exit 1); exit 1; } fi fi fi (eval "as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0") || { echo No shell found that supports shell functions. echo Please tell bug-autoconf@gnu.org about your system, echo including any error possibly output before this message. echo This can help us improve future autoconf versions. echo Configuration will now proceed without shell functions. } as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. 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 { (exit 1); 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 } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi 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=: 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 exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, 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= SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= ac_unique_file="LICENSE" # 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 HAVE_PYTHON_FALSE HAVE_PYTHON_TRUE INTROSPECTION_TYPELIBDIR INTROSPECTION_GIRDIR INTROSPECTION_GENERATE INTROSPECTION_COMPILER INTROSPECTION_SCANNER HAVE_INTROSPECTION_FALSE HAVE_INTROSPECTION_TRUE PYGTK_DEFSDIR PYTHON_BINDINGS_LIBS PYTHON_BINDINGS_CFLAGS PYGTK_CODEGEN PYTHON_INCLUDES pkgpyexecdir pyexecdir pkgpythondir pythondir PYTHON_PLATFORM PYTHON_EXEC_PREFIX PYTHON_PREFIX PYTHON_VERSION PYTHON GTK_DOC_USE_REBASE_FALSE GTK_DOC_USE_REBASE_TRUE GTK_DOC_USE_LIBTOOL_FALSE GTK_DOC_USE_LIBTOOL_TRUE GTK_DOC_BUILD_PDF_FALSE GTK_DOC_BUILD_PDF_TRUE GTK_DOC_BUILD_HTML_FALSE GTK_DOC_BUILD_HTML_TRUE ENABLE_GTK_DOC_FALSE ENABLE_GTK_DOC_TRUE HTML_DIR GTKDOC_MKPDF GTKDOC_REBASE GTKDOC_CHECK GLIB_MKENUMS GLIB_GENMARSHAL LIBHIPPOCANVAS_LIBS LIBHIPPOCANVAS_CFLAGS PKG_CONFIG CPP OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL lt_ECHO RANLIB AR OBJDUMP LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED LIBTOOL 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 MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE GETTEXT_PACKAGE 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 target_os target_vendor target_cpu target host_os host_vendor host_cpu host build_os build_vendor build_cpu build 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_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_maintainer_mode enable_dependency_tracking enable_shared enable_static with_pic enable_fast_install with_gnu_ld enable_libtool_lock with_html_dir enable_gtk_doc enable_gtk_doc_html enable_gtk_doc_pdf enable_python ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP PKG_CONFIG LIBHIPPOCANVAS_CFLAGS LIBHIPPOCANVAS_LIBS PYTHON_BINDINGS_CFLAGS PYTHON_BINDINGS_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}' 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=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_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } 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_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } 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_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } 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_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } 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_echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } 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_echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2 { (exit 1); exit 1; }; } ;; *) $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_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; } 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_echo "$as_me: error: working directory cannot be determined" >&2 { (exit 1); exit 1; }; } test "X$ac_ls_di" = "X$ac_pwd_ls_di" || { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 { (exit 1); exit 1; }; } # 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_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } 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 this package 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/PACKAGE] --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] --target=TARGET configure for building compilers for TARGET [HOST] _ACEOF fi if test -n "$ac_init_help"; then 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] --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-gtk-doc use gtk-doc to build documentation [default=no] --enable-gtk-doc-html build documentation in html format [default=yes] --enable-gtk-doc-pdf build documentation in pdf format [default=no] --enable-python Python bindings [default=auto] 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] --with-html-dir=PATH path to installed docs 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 C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor PKG_CONFIG path to pkg-config utility LIBHIPPOCANVAS_CFLAGS C compiler flags for LIBHIPPOCANVAS, overriding pkg-config LIBHIPPOCANVAS_LIBS linker flags for LIBHIPPOCANVAS, overriding pkg-config PYTHON_BINDINGS_CFLAGS C compiler flags for PYTHON_BINDINGS, overriding pkg-config PYTHON_BINDINGS_LIBS linker flags for PYTHON_BINDINGS, 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. _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 configure generated by GNU Autoconf 2.63 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 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 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 $as_me, which was generated by GNU Autoconf 2.63. 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) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$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 ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export 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 cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX 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:$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= ;; #( *) $as_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 cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX 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 cat <<\_ASBOX ## ------------------- ## ## File substitutions. ## ## ------------------- ## _ASBOX 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 cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX 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'; { (exit 1); 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 # 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 # 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 ac_site_file1=$CONFIG_SITE 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 -r "$ac_site_file"; then { $as_echo "$as_me:$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" 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. if test -f "$cache_file"; then { $as_echo "$as_me:$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:$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:$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:$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:$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:$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:$LINENO: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:$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. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:$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_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 $as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } 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 ac_aux_dir= for ac_dir in config "$srcdir"/config; 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_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in config \"$srcdir\"/config" >&5 $as_echo "$as_me: error: cannot find install-sh or install.sh in config \"$srcdir\"/config" >&2;} { (exit 1); exit 1; }; } 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. # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 $as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$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_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 $as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 $as_echo "$as_me: error: invalid value of canonical build" >&2;} { (exit 1); exit 1; }; };; 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:$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_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} { (exit 1); exit 1; }; } fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 $as_echo "$as_me: error: invalid value of canonical host" >&2;} { (exit 1); exit 1; }; };; 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:$LINENO: checking target system type" >&5 $as_echo_n "checking target system type... " >&6; } if test "${ac_cv_target+set}" = set; then $as_echo_n "(cached) " >&6 else if test "x$target_alias" = x; then ac_cv_target=$ac_cv_host else ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;} { (exit 1); exit 1; }; } fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_target" >&5 $as_echo "$ac_cv_target" >&6; } case $ac_cv_target in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical target" >&5 $as_echo "$as_me: error: invalid value of canonical target" >&2;} { (exit 1); exit 1; }; };; esac target=$ac_cv_target ac_save_IFS=$IFS; IFS='-' set x $ac_cv_target shift target_cpu=$1 target_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: target_os=$* IFS=$ac_save_IFS case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. # will get canonicalized. test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- am__api_version='1.11' # 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:$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:$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:$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_echo "$as_me:$LINENO: error: unsafe absolute working directory name" >&5 $as_echo "$as_me: error: unsafe absolute working directory name" >&2;} { (exit 1); exit 1; }; };; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) { { $as_echo "$as_me:$LINENO: error: unsafe srcdir value: \`$srcdir'" >&5 $as_echo "$as_me: error: unsafe srcdir value: \`$srcdir'" >&2;} { (exit 1); exit 1; }; };; 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_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 $as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 $as_echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$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:$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:$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:$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:$LINENO: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:$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:$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:$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:$LINENO: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:$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:$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:$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 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. test -d ./--version && rmdir ./--version MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:$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:$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:$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:$LINENO: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:$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 { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+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:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:$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_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 $as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } 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=hippo-canvas VERSION=0.3.1 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 -' ac_config_headers="$ac_config_headers config/config.h" # Honor aclocal flags ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS" GETTEXT_PACKAGE=hippo-canvas cat >>confdefs.h <<_ACEOF #define GETTEXT_PACKAGE "$GETTEXT_PACKAGE" _ACEOF ## must come before we use the $USE_MAINTAINER_MODE variable later { $as_echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi { $as_echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 $as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE ## don't rerun to this point if we abort 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:$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= ;; #( *) $as_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:$LINENO: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache 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:$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:$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:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$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:$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:$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:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$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:$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:$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:$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:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$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:$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:$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:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$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:$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:$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:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$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:$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:$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:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 $as_echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } # Provide some information about the compiler. $as_echo "$as_me:$LINENO: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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:$LINENO: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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 { $as_echo "$as_me:$LINENO: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } if test -z "$ac_file"; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 $as_echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; }; } fi ac_exeext=$ac_cv_exeext # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi fi fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } { $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } { $as_echo "$as_me:$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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi rm -f conftest$ac_cv_exeext { $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT { $as_echo "$as_me:$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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:$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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 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:$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:$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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 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:$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:$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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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" 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_c89=$ac_arg else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 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:$LINENO: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:$LINENO: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; 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 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:$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:$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 depcc="$CC" am_compiler_list= { $as_echo "$as_me:$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:$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 case `pwd` in *\ * | *\ *) { $as_echo "$as_me:$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:$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 $as_unset ac_script || 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 ac_count=`expr $ac_count + 1` 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_echo "$as_me:$LINENO: error: no acceptable sed could be found in \$PATH" >&5 $as_echo "$as_me: error: no acceptable sed could be found in \$PATH" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:$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:$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 ac_count=`expr $ac_count + 1` 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_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:$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 ac_count=`expr $ac_count + 1` 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_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:$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 ac_count=`expr $ac_count + 1` 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_echo "$as_me:$LINENO: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:$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:$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:$LINENO: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:$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:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 $as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$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:$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:$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:$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:$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:$LINENO: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:$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:$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:$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:$LINENO: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:$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:$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:$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:4591: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:4594: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:4597: 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:$LINENO: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } { $as_echo "$as_me:$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:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:$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:$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:$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:$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:$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:$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:$LINENO: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:$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:$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:$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:$LINENO: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:$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:$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:$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) lt_cv_deplibs_check_method=pass_all ;; netbsd*) 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:$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:$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:$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:$LINENO: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:$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:$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:$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:$LINENO: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:$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:$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:$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:$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:$LINENO: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:$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:$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:$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:$LINENO: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:$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:$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:$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:$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:$LINENO: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:$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:$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:$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:$LINENO: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:$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:$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:$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:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:$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:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && 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:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && 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:$LINENO: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:$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:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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 5803 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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:$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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { 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 lt_cv_cc_needs_belf=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_cc_needs_belf=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 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:$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:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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:$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:$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:$LINENO: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:$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:$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:$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:$LINENO: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:$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:$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:$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:$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:$LINENO: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:$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:$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:$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:$LINENO: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:$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:$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:$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:$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:$LINENO: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:$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:$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:$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:$LINENO: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:$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:$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:$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:$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:$LINENO: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:$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:$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:$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:$LINENO: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:$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:$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:$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:$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:$LINENO: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:$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:$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:$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:$LINENO: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:$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:$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:$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:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:$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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { 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 lt_cv_ld_exported_symbols_list=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_ld_exported_symbols_list=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$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:$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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f 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:$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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 $as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } 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:$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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 rm -f 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : 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 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF 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` { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = 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 as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Set options enable_dlopen=no enable_win32_dll=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 --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=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:$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:$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:$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:$LINENO: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:$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:$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:7656: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:7660: \$? = $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:$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:$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) 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:$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:$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:7995: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:7999: \$? = $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:$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:$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:$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:$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:8100: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:8104: \$? = $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:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:$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:8155: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:8159: \$? = $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:$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:$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:$LINENO: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:$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:$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 ;; 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 *\ [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) 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*) 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 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { 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 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 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { 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 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 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 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 >conftest.$ac_ext <<_ACEOF int foo(void) {} _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { 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 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' else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 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*) 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:$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:$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:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 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:$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:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 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:$LINENO: result: $archive_cmds_need_lc" >&5 $as_echo "$archive_cmds_need_lc" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:$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) 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { 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 if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then shlibpath_overrides_runpath=yes fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 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 # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" # 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="$sys_lib_dlsearch_path_spec $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' ;; 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:$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:$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:$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:$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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { 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_cv_lib_dl_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$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 ;; *) { $as_echo "$as_me:$LINENO: checking for shl_load" >&5 $as_echo_n "checking for shl_load... " >&6; } if test "${ac_cv_func_shl_load+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* 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 (); /* 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_shl_load || defined __stub___shl_load choke me #endif int main () { return shl_load (); ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { 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_cv_func_shl_load=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 $as_echo "$ac_cv_func_shl_load" >&6; } if test "x$ac_cv_func_shl_load" = x""yes; then lt_cv_dlopen="shl_load" else { $as_echo "$as_me:$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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { 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_cv_lib_dld_shl_load=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$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 { $as_echo "$as_me:$LINENO: checking for dlopen" >&5 $as_echo_n "checking for dlopen... " >&6; } if test "${ac_cv_func_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* 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 (); /* 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_dlopen || defined __stub___dlopen choke me #endif int main () { return dlopen (); ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { 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_cv_func_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 $as_echo "$ac_cv_func_dlopen" >&6; } if test "x$ac_cv_func_dlopen" = x""yes; then lt_cv_dlopen="dlopen" else { $as_echo "$as_me:$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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { 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_cv_lib_dl_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$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:$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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { 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_cv_lib_svld_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$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:$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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { 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_cv_lib_dld_dld_link=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$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:$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 10958 "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:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && 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:$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:$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 11054 "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:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && 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:$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:$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:$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:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:$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:$LINENO: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:$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:$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: { $as_echo "$as_me:$LINENO: checking for library containing strerror" >&5 $as_echo_n "checking for library containing strerror... " >&6; } if test "${ac_cv_search_strerror+set}" = set; then $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 strerror (); int main () { return strerror (); ; return 0; } _ACEOF for ac_lib in '' cposix; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { 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_cv_search_strerror=$ac_res else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext if test "${ac_cv_search_strerror+set}" = set; then break fi done if test "${ac_cv_search_strerror+set}" = set; then : else ac_cv_search_strerror=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5 $as_echo "$ac_cv_search_strerror" >&6; } ac_res=$ac_cv_search_strerror if test "$ac_res" != no; then test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi { $as_echo "$as_me:$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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 rm -f 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : 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 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi ## don't rerun to this point if we abort 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:$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= ;; #( *) $as_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:$LINENO: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache #### gcc warning flags addCommonWarnings() { result="$@" case " $result " in *[\ \ ]-Wall[\ \ ]*) ;; *) result="$result -Wall" ;; esac case " $result " in *[\ \ ]-Wchar-subscripts[\ \ ]*) ;; *) result="$result -Wchar-subscripts" ;; esac case " $result " in *[\ \ ]-Wpointer-arith[\ \ ]*) ;; *) result="$result -Wpointer-arith" ;; esac case " $result " in *[\ \ ]-Wcast-align[\ \ ]*) ;; *) result="$result -Wcast-align" ;; esac case " $result " in *[\ \ ]-Wfloat-equal[\ \ ]*) ;; *) result="$result -Wfloat-equal" ;; esac case " $result " in *[\ \ ]-Wsign-compare[\ \ ]*) ;; *) result="$result -Wsign-compare" ;; esac if test "x$enable_ansi" = "xyes"; then case " $result " in *[\ \ ]-ansi[\ \ ]*) ;; *) result="$result -ansi" ;; esac case " $result " in *[\ \ ]-D_POSIX_C_SOURCE*) ;; *) result="$result -D_POSIX_C_SOURCE=199309L" ;; esac case " $result " in *[\ \ ]-D_BSD_SOURCE[\ \ ]*) ;; *) result="$result -D_BSD_SOURCE" ;; esac case " $result " in *[\ \ ]-pedantic[\ \ ]*) ;; *) result="$result -pedantic" ;; esac fi if test x$enable_gcov = xyes; then case " $result " in *[\ \ ]-fprofile-arcs[\ \ ]*) ;; *) result="$result -fprofile-arcs" ;; esac case " $result " in *[\ \ ]-ftest-coverage[\ \ ]*) ;; *) result="$result -ftest-coverage" ;; esac ## remove optimization result=`echo "$result" | sed -e 's/-O[0-9]*//g'` fi echo $result } addCOnlyWarnings() { result="$@" case " $result " in *[\ \ ]-Wdeclaration-after-statement[\ \ ]*) ;; *) result="$result -Wdeclaration-after-statement" ;; esac case " $result " in *[\ \ ]-Wmissing-declarations[\ \ ]*) ;; *) result="$result -Wmissing-declarations" ;; esac case " $result " in *[\ \ ]-Wmissing-prototypes[\ \ ]*) ;; *) result="$result -Wmissing-prototypes" ;; esac case " $result " in *[\ \ ]-Wnested-externs[\ \ ]*) ;; *) result="$result -Wnested-externs" ;; esac echo $result } if test "x$GCC" = "xyes"; then CFLAGS="`addCommonWarnings $CFLAGS`" CFLAGS="`addCOnlyWarnings $CFLAGS`" fi GLIB2_REQUIRED=2.6.0 GTK2_REQUIRED=2.6.0 LIBCROCO_REQUIRED=0.6.0 PANGO_REQUIRED=1.14 LIBRSVG_REQUIRED=2.16 PYGOBJECT_REQUIRED=2.21.2 # We define HAVE_LIBRSVG so we can do a Windows build without it, but there's # no point in supporting no-librsvg Linux builds, so we don't go ahead and # make it fully optional. 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:$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:$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:$LINENO: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:$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:$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:$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:$LINENO: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:$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:$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.9.0 { $as_echo "$as_me:$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:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"librsvg-2.0 >= \$LIBRSVG_REQUIRED\"") >&5 ($PKG_CONFIG --exists --print-errors "librsvg-2.0 >= $LIBRSVG_REQUIRED") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then have_rsvg=true else have_rsvg=false fi if $have_rsvg; then cat >>confdefs.h <<\_ACEOF #define HAVE_LIBRSVG 1 _ACEOF librsvg_modules=librsvg-2.0 else { { $as_echo "$as_me:$LINENO: error: librsvg >= $LIBRSVG_REQUIRED is required" >&5 $as_echo "$as_me: error: librsvg >= $LIBRSVG_REQUIRED is required" >&2;} { (exit 1); exit 1; }; } fi pkg_failed=no { $as_echo "$as_me:$LINENO: checking for LIBHIPPOCANVAS" >&5 $as_echo_n "checking for LIBHIPPOCANVAS... " >&6; } if test -n "$LIBHIPPOCANVAS_CFLAGS"; then pkg_cv_LIBHIPPOCANVAS_CFLAGS="$LIBHIPPOCANVAS_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gobject-2.0 >= \$GLIB2_REQUIRED gtk+-2.0 >= \$GTK2_REQUIRED libcroco-0.6 >= \$LIBCROCO_REQUIRED \$librsvg_modules cairo pango >= \$PANGO_REQUIRED\"") >&5 ($PKG_CONFIG --exists --print-errors "gobject-2.0 >= $GLIB2_REQUIRED gtk+-2.0 >= $GTK2_REQUIRED libcroco-0.6 >= $LIBCROCO_REQUIRED $librsvg_modules cairo pango >= $PANGO_REQUIRED") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_LIBHIPPOCANVAS_CFLAGS=`$PKG_CONFIG --cflags "gobject-2.0 >= $GLIB2_REQUIRED gtk+-2.0 >= $GTK2_REQUIRED libcroco-0.6 >= $LIBCROCO_REQUIRED $librsvg_modules cairo pango >= $PANGO_REQUIRED" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$LIBHIPPOCANVAS_LIBS"; then pkg_cv_LIBHIPPOCANVAS_LIBS="$LIBHIPPOCANVAS_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gobject-2.0 >= \$GLIB2_REQUIRED gtk+-2.0 >= \$GTK2_REQUIRED libcroco-0.6 >= \$LIBCROCO_REQUIRED \$librsvg_modules cairo pango >= \$PANGO_REQUIRED\"") >&5 ($PKG_CONFIG --exists --print-errors "gobject-2.0 >= $GLIB2_REQUIRED gtk+-2.0 >= $GTK2_REQUIRED libcroco-0.6 >= $LIBCROCO_REQUIRED $librsvg_modules cairo pango >= $PANGO_REQUIRED") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_LIBHIPPOCANVAS_LIBS=`$PKG_CONFIG --libs "gobject-2.0 >= $GLIB2_REQUIRED gtk+-2.0 >= $GTK2_REQUIRED libcroco-0.6 >= $LIBCROCO_REQUIRED $librsvg_modules cairo pango >= $PANGO_REQUIRED" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then 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 LIBHIPPOCANVAS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gobject-2.0 >= $GLIB2_REQUIRED gtk+-2.0 >= $GTK2_REQUIRED libcroco-0.6 >= $LIBCROCO_REQUIRED $librsvg_modules cairo pango >= $PANGO_REQUIRED" 2>&1` else LIBHIPPOCANVAS_PKG_ERRORS=`$PKG_CONFIG --print-errors "gobject-2.0 >= $GLIB2_REQUIRED gtk+-2.0 >= $GTK2_REQUIRED libcroco-0.6 >= $LIBCROCO_REQUIRED $librsvg_modules cairo pango >= $PANGO_REQUIRED" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LIBHIPPOCANVAS_PKG_ERRORS" >&5 { { $as_echo "$as_me:$LINENO: error: Package requirements (gobject-2.0 >= $GLIB2_REQUIRED gtk+-2.0 >= $GTK2_REQUIRED libcroco-0.6 >= $LIBCROCO_REQUIRED $librsvg_modules cairo pango >= $PANGO_REQUIRED) were not met: $LIBHIPPOCANVAS_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 LIBHIPPOCANVAS_CFLAGS and LIBHIPPOCANVAS_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 $as_echo "$as_me: error: Package requirements (gobject-2.0 >= $GLIB2_REQUIRED gtk+-2.0 >= $GTK2_REQUIRED libcroco-0.6 >= $LIBCROCO_REQUIRED $librsvg_modules cairo pango >= $PANGO_REQUIRED) were not met: $LIBHIPPOCANVAS_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 LIBHIPPOCANVAS_CFLAGS and LIBHIPPOCANVAS_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: 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 LIBHIPPOCANVAS_CFLAGS and LIBHIPPOCANVAS_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." >&5 $as_echo "$as_me: 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 LIBHIPPOCANVAS_CFLAGS and LIBHIPPOCANVAS_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." >&2;} { (exit 1); exit 1; }; }; } else LIBHIPPOCANVAS_CFLAGS=$pkg_cv_LIBHIPPOCANVAS_CFLAGS LIBHIPPOCANVAS_LIBS=$pkg_cv_LIBHIPPOCANVAS_LIBS { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } : fi GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0` GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0` # Extract the first word of "gtkdoc-check", so it can be a program name with args. set dummy gtkdoc-check; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_GTKDOC_CHECK+set}" = set; then $as_echo_n "(cached) " >&6 else case $GTKDOC_CHECK in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_CHECK="$GTKDOC_CHECK" # 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_GTKDOC_CHECK="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi GTKDOC_CHECK=$ac_cv_path_GTKDOC_CHECK if test -n "$GTKDOC_CHECK"; then { $as_echo "$as_me:$LINENO: result: $GTKDOC_CHECK" >&5 $as_echo "$GTKDOC_CHECK" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi for ac_prog in gtkdoc-rebase 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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_GTKDOC_REBASE+set}" = set; then $as_echo_n "(cached) " >&6 else case $GTKDOC_REBASE in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_REBASE="$GTKDOC_REBASE" # 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_GTKDOC_REBASE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi GTKDOC_REBASE=$ac_cv_path_GTKDOC_REBASE if test -n "$GTKDOC_REBASE"; then { $as_echo "$as_me:$LINENO: result: $GTKDOC_REBASE" >&5 $as_echo "$GTKDOC_REBASE" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$GTKDOC_REBASE" && break done test -n "$GTKDOC_REBASE" || GTKDOC_REBASE="true" # Extract the first word of "gtkdoc-mkpdf", so it can be a program name with args. set dummy gtkdoc-mkpdf; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_GTKDOC_MKPDF+set}" = set; then $as_echo_n "(cached) " >&6 else case $GTKDOC_MKPDF in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_MKPDF="$GTKDOC_MKPDF" # 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_GTKDOC_MKPDF="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi GTKDOC_MKPDF=$ac_cv_path_GTKDOC_MKPDF if test -n "$GTKDOC_MKPDF"; then { $as_echo "$as_me:$LINENO: result: $GTKDOC_MKPDF" >&5 $as_echo "$GTKDOC_MKPDF" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi # Check whether --with-html-dir was given. if test "${with_html_dir+set}" = set; then withval=$with_html_dir; else with_html_dir='${datadir}/gtk-doc/html' fi HTML_DIR="$with_html_dir" # Check whether --enable-gtk-doc was given. if test "${enable_gtk_doc+set}" = set; then enableval=$enable_gtk_doc; else enable_gtk_doc=no fi if test x$enable_gtk_doc = xyes; then if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtk-doc >= 1.6\"") >&5 ($PKG_CONFIG --exists --print-errors "gtk-doc >= 1.6") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then : else { { $as_echo "$as_me:$LINENO: error: You need to have gtk-doc >= 1.6 installed to build $PACKAGE_NAME" >&5 $as_echo "$as_me: error: You need to have gtk-doc >= 1.6 installed to build $PACKAGE_NAME" >&2;} { (exit 1); exit 1; }; } fi fi { $as_echo "$as_me:$LINENO: checking whether to build gtk-doc documentation" >&5 $as_echo_n "checking whether to build gtk-doc documentation... " >&6; } { $as_echo "$as_me:$LINENO: result: $enable_gtk_doc" >&5 $as_echo "$enable_gtk_doc" >&6; } # Check whether --enable-gtk-doc-html was given. if test "${enable_gtk_doc_html+set}" = set; then enableval=$enable_gtk_doc_html; else enable_gtk_doc_html=yes fi # Check whether --enable-gtk-doc-pdf was given. if test "${enable_gtk_doc_pdf+set}" = set; then enableval=$enable_gtk_doc_pdf; else enable_gtk_doc_pdf=no fi if test -z "$GTKDOC_MKPDF"; then enable_gtk_doc_pdf=no fi if test x$enable_gtk_doc = xyes; then ENABLE_GTK_DOC_TRUE= ENABLE_GTK_DOC_FALSE='#' else ENABLE_GTK_DOC_TRUE='#' ENABLE_GTK_DOC_FALSE= fi if test x$enable_gtk_doc_html = xyes; then GTK_DOC_BUILD_HTML_TRUE= GTK_DOC_BUILD_HTML_FALSE='#' else GTK_DOC_BUILD_HTML_TRUE='#' GTK_DOC_BUILD_HTML_FALSE= fi if test x$enable_gtk_doc_pdf = xyes; then GTK_DOC_BUILD_PDF_TRUE= GTK_DOC_BUILD_PDF_FALSE='#' else GTK_DOC_BUILD_PDF_TRUE='#' GTK_DOC_BUILD_PDF_FALSE= fi if test -n "$LIBTOOL"; then GTK_DOC_USE_LIBTOOL_TRUE= GTK_DOC_USE_LIBTOOL_FALSE='#' else GTK_DOC_USE_LIBTOOL_TRUE='#' GTK_DOC_USE_LIBTOOL_FALSE= fi if test -n "$GTKDOC_REBASE"; then GTK_DOC_USE_REBASE_TRUE= GTK_DOC_USE_REBASE_FALSE='#' else GTK_DOC_USE_REBASE_TRUE='#' GTK_DOC_USE_REBASE_FALSE= fi ## Python bindings # Check whether --enable-python was given. if test "${enable_python+set}" = set; then enableval=$enable_python; fi if test "x$enable_python" = "xno" ; then have_python=no else have_python=no # Find any Python interpreter. if test -z "$PYTHON"; then for ac_prog in python python2 python3 python3.0 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 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:$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:$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:$LINENO: result: $PYTHON" >&5 $as_echo "$PYTHON" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$PYTHON" && break done test -n "$PYTHON" || PYTHON=":" fi am_display_PYTHON=python if test "$PYTHON" = :; then { { $as_echo "$as_me:$LINENO: error: no suitable Python interpreter found" >&5 $as_echo "$as_me: error: no suitable Python interpreter found" >&2;} { (exit 1); exit 1; }; } else { $as_echo "$as_me:$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:$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:$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:$LINENO: result: $am_cv_python_platform" >&5 $as_echo "$am_cv_python_platform" >&6; } PYTHON_PLATFORM=$am_cv_python_platform { $as_echo "$as_me:$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:$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:$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:$LINENO: result: $am_cv_python_pyexecdir" >&5 $as_echo "$am_cv_python_pyexecdir" >&6; } pyexecdir=$am_cv_python_pyexecdir pkgpyexecdir=\${pyexecdir}/$PACKAGE fi if test "x$PYTHON" = "x" ; then { $as_echo "$as_me:$LINENO: WARNING: Python not found" >&5 $as_echo "$as_me: WARNING: Python not found" >&2;} else { $as_echo "$as_me:$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"` 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 save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then { $as_echo "$as_me:$LINENO: result: found" >&5 $as_echo "found" >&6; } # Extract the first word of "pygtk-codegen-2.0", so it can be a program name with args. set dummy pygtk-codegen-2.0; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_PYGTK_CODEGEN+set}" = set; then $as_echo_n "(cached) " >&6 else case $PYGTK_CODEGEN in [\\/]* | ?:[\\/]*) ac_cv_path_PYGTK_CODEGEN="$PYGTK_CODEGEN" # 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_PYGTK_CODEGEN="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_PYGTK_CODEGEN" && ac_cv_path_PYGTK_CODEGEN="no" ;; esac fi PYGTK_CODEGEN=$ac_cv_path_PYGTK_CODEGEN if test -n "$PYGTK_CODEGEN"; then { $as_echo "$as_me:$LINENO: result: $PYGTK_CODEGEN" >&5 $as_echo "$PYGTK_CODEGEN" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi pkg_failed=no { $as_echo "$as_me:$LINENO: checking for PYTHON_BINDINGS" >&5 $as_echo_n "checking for PYTHON_BINDINGS... " >&6; } if test -n "$PYTHON_BINDINGS_CFLAGS"; then pkg_cv_PYTHON_BINDINGS_CFLAGS="$PYTHON_BINDINGS_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"pygobject-2.0 > \$PYGOBJECT_REQUIRED pygtk-2.0 pycairo\"") >&5 ($PKG_CONFIG --exists --print-errors "pygobject-2.0 > $PYGOBJECT_REQUIRED pygtk-2.0 pycairo") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_PYTHON_BINDINGS_CFLAGS=`$PKG_CONFIG --cflags "pygobject-2.0 > $PYGOBJECT_REQUIRED pygtk-2.0 pycairo" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$PYTHON_BINDINGS_LIBS"; then pkg_cv_PYTHON_BINDINGS_LIBS="$PYTHON_BINDINGS_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"pygobject-2.0 > \$PYGOBJECT_REQUIRED pygtk-2.0 pycairo\"") >&5 ($PKG_CONFIG --exists --print-errors "pygobject-2.0 > $PYGOBJECT_REQUIRED pygtk-2.0 pycairo") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_PYTHON_BINDINGS_LIBS=`$PKG_CONFIG --libs "pygobject-2.0 > $PYGOBJECT_REQUIRED pygtk-2.0 pycairo" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then 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 PYTHON_BINDINGS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "pygobject-2.0 > $PYGOBJECT_REQUIRED pygtk-2.0 pycairo" 2>&1` else PYTHON_BINDINGS_PKG_ERRORS=`$PKG_CONFIG --print-errors "pygobject-2.0 > $PYGOBJECT_REQUIRED pygtk-2.0 pycairo" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$PYTHON_BINDINGS_PKG_ERRORS" >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: WARNING: could not find pygobject > $PYGOBJECT_REQUIRED" >&5 $as_echo "$as_me: WARNING: could not find pygobject > $PYGOBJECT_REQUIRED" >&2;} elif test $pkg_failed = untried; then { $as_echo "$as_me:$LINENO: WARNING: could not find pygobject > $PYGOBJECT_REQUIRED" >&5 $as_echo "$as_me: WARNING: could not find pygobject > $PYGOBJECT_REQUIRED" >&2;} else PYTHON_BINDINGS_CFLAGS=$pkg_cv_PYTHON_BINDINGS_CFLAGS PYTHON_BINDINGS_LIBS=$pkg_cv_PYTHON_BINDINGS_LIBS { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } PYGTK_DEFSDIR=`$PKG_CONFIG --variable=defsdir pygtk-2.0` have_python=yes fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: not found" >&5 $as_echo "not found" >&6; } { $as_echo "$as_me:$LINENO: WARNING: could not find Python headers" >&5 $as_echo "$as_me: WARNING: could not find Python headers" >&2;} fi rm -f conftest.err conftest.$ac_ext CPPFLAGS="$save_CPPFLAGS" fi fi { $as_echo "$as_me:$LINENO: checking for gobject-introspection" >&5 $as_echo_n "checking for gobject-introspection... " >&6; } if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gobject-introspection-1.0\"") >&5 ($PKG_CONFIG --exists --print-errors "gobject-introspection-1.0") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then have_introspection=true else have_introspection=false fi { $as_echo "$as_me:$LINENO: result: $have_introspection" >&5 $as_echo "$have_introspection" >&6; } if test "x$have_introspection" = "xtrue"; then HAVE_INTROSPECTION_TRUE= HAVE_INTROSPECTION_FALSE='#' else HAVE_INTROSPECTION_TRUE='#' HAVE_INTROSPECTION_FALSE= fi INTROSPECTION_SCANNER= INTROSPECTION_COMPILER= INTROSPECTION_GENERATE= INTROSPECTION_GIRDIR= INTROSPECTION_TYPELIBDIR= if test "x$have_introspection" = "xtrue"; then INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0` INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0` INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0` INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0` INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)" fi if test "x$have_python" = "xyes"; then HAVE_PYTHON_TRUE= HAVE_PYTHON_FALSE='#' else HAVE_PYTHON_TRUE='#' HAVE_PYTHON_FALSE= fi ac_config_files="$ac_config_files Makefile hippo-canvas-1.pc docs/Makefile" 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:$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= ;; #( *) $as_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:$LINENO: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { $as_echo "$as_me:$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= 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. ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ac_ltlibobjs="$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 "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${ENABLE_GTK_DOC_TRUE}" && test -z "${ENABLE_GTK_DOC_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"ENABLE_GTK_DOC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"ENABLE_GTK_DOC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${GTK_DOC_BUILD_HTML_TRUE}" && test -z "${GTK_DOC_BUILD_HTML_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"GTK_DOC_BUILD_HTML\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"GTK_DOC_BUILD_HTML\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${GTK_DOC_BUILD_PDF_TRUE}" && test -z "${GTK_DOC_BUILD_PDF_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"GTK_DOC_BUILD_PDF\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"GTK_DOC_BUILD_PDF\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${GTK_DOC_USE_LIBTOOL_TRUE}" && test -z "${GTK_DOC_USE_LIBTOOL_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"GTK_DOC_USE_LIBTOOL\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"GTK_DOC_USE_LIBTOOL\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${GTK_DOC_USE_REBASE_TRUE}" && test -z "${GTK_DOC_USE_REBASE_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"GTK_DOC_USE_REBASE\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"GTK_DOC_USE_REBASE\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${HAVE_INTROSPECTION_TRUE}" && test -z "${HAVE_INTROSPECTION_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_INTROSPECTION\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"HAVE_INTROSPECTION\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${HAVE_PYTHON_TRUE}" && test -z "${HAVE_PYTHON_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_PYTHON\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"HAVE_PYTHON\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } 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:$LINENO: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF || ac_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} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_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 # PATH needs CR # 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_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 if (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 # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false 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); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. 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 # Name of the executable. 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'` # CDPATH. $as_unset CDPATH as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. 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 { (exit 1); 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 } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi 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=: 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 # 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 $as_me, which was generated by GNU Autoconf 2.63. 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 from templates according to the current configuration. Usage: $0 [OPTION]... [FILE]... -h, --help print this help, then exit -V, --version print version number and configuration settings, 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_version="\\ config.status configured by $0, generated by GNU Autoconf 2.63, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2008 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=$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 ;; --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"` ;; esac CONFIG_FILES="$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 CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header { $as_echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; };; --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_echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *) ac_config_targets="$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' 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"`' enable_static='`$ECHO "X$enable_static" | $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"`' OBJDUMP='`$ECHO "X$OBJDUMP" | $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 \ OBJDUMP \ 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' _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/config.h") CONFIG_HEADERS="$CONFIG_HEADERS config/config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "hippo-canvas-1.pc") CONFIG_FILES="$CONFIG_FILES hippo-canvas-1.pc" ;; "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;; *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 $as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; 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 '{ (exit 1); 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_echo "$as_me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } # 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=' ' 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_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } 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_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } 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_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } 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_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 $as_echo "$as_me: error: could not setup config files machinery" >&2;} { (exit 1); exit 1; }; } _ACEOF # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ 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[ ]*=/{ s/:*\$(srcdir):*/:/ s/:*\${srcdir}:*/:/ s/:*@srcdir@:*/:/ s/^\([^=]*=[ ]*\):*/\1/ s/:*$// 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_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5 $as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;} { (exit 1); exit 1; }; } 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_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5 $as_echo "$as_me: error: could not setup config headers machinery" >&2;} { (exit 1); exit 1; }; } 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_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 $as_echo "$as_me: error: invalid tag $ac_tag" >&2;} { (exit 1); exit 1; }; };; :[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_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 $as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} { (exit 1); exit 1; }; };; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac ac_file_inputs="$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:$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_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; 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" case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { 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_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } 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:$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_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } 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:$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_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; :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_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:$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_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5 $as_echo "$as_me: error: could not create -" >&2;} { (exit 1); exit 1; }; } 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:$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 case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { 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_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } # 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 # 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 # Whether or not to build static libraries. build_old_libs=$enable_static # 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 # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # 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 { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 $as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } # 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 || { (exit 1); exit 1; } fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi echo " hippo-canvas $VERSION ================== prefix: ${prefix} compiler: ${CC} LIBHIPPOCANVAS_CFLAGS: ${LIBHIPPOCANVAS_CFLAGS} Python bindings: ${have_python} Now type 'make' to build $PACKAGE " hippo-canvas-0.3.1/aclocal.m40000664000076400007640000121444611404424176012715 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.63],, [m4_warning([this file was generated for autoconf 2.63. 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])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # Copyright (C) 1996, 1998, 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_MAINTAINER_MODE([DEFAULT-MODE]) # ---------------------------------- # Control maintainer-specific portions of Makefiles. # Default is to disable them, unless `enable' is passed literally. # For symmetry, `disable' may be passed as well. Anyway, the user # can override the default with the --enable/--disable switch. AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), [enable], [m4_define([am_maintainer_other], [disable])], [disable], [m4_define([am_maintainer_other], [enable])], [m4_define([am_maintainer_other], [enable]) m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles]) dnl maintainer-mode's default is 'disable' unless 'enable' is passed AC_ARG_ENABLE([maintainer-mode], [ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful (and sometimes confusing) to the casual installer], [USE_MAINTAINER_MODE=$enableval], [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST([MAINT])dnl ] ) AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) # 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])]) # 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) 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 # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" # 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="$sys_lib_dlsearch_path_spec $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' ;; 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) lt_cv_deplibs_check_method=pass_all ;; netbsd*) 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) 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*) ;; *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) 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' ;; *) _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 ;; 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 *\ [[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) 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*) 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 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*) 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) 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 -*- # # 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])dnl 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. # # # Similar to PKG_CHECK_MODULES, make sure that the first instance of # this or PKG_CHECK_MODULES is called, or make sure 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_ifval([$2], [$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 _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 ifelse([$4], , [AC_MSG_ERROR(dnl [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 ])], [AC_MSG_RESULT([no]) $4]) elif test $pkg_failed = untried; then ifelse([$4], , [AC_MSG_FAILURE(dnl [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 .])], [$4]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) ifelse([$3], , :, [$3]) fi[]dnl ])# PKG_CHECK_MODULES dnl -*- mode: autoconf -*- # serial 1 dnl Usage: dnl GTK_DOC_CHECK([minimum-gtk-doc-version]) AC_DEFUN([GTK_DOC_CHECK], [ AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first dnl check for tools we added during development AC_PATH_PROG([GTKDOC_CHECK],[gtkdoc-check]) AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true]) AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf]) dnl for overriding the documentation installation directory AC_ARG_WITH([html-dir], AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),, [with_html_dir='${datadir}/gtk-doc/html']) HTML_DIR="$with_html_dir" AC_SUBST([HTML_DIR]) dnl enable/disable documentation building AC_ARG_ENABLE([gtk-doc], AS_HELP_STRING([--enable-gtk-doc], [use gtk-doc to build documentation [[default=no]]]),, [enable_gtk_doc=no]) if test x$enable_gtk_doc = xyes; then ifelse([$1],[], [PKG_CHECK_EXISTS([gtk-doc],, AC_MSG_ERROR([gtk-doc not installed and --enable-gtk-doc requested]))], [PKG_CHECK_EXISTS([gtk-doc >= $1],, AC_MSG_ERROR([You need to have gtk-doc >= $1 installed to build $PACKAGE_NAME]))]) fi AC_MSG_CHECKING([whether to build gtk-doc documentation]) AC_MSG_RESULT($enable_gtk_doc) dnl enable/disable output formats AC_ARG_ENABLE([gtk-doc-html], AS_HELP_STRING([--enable-gtk-doc-html], [build documentation in html format [[default=yes]]]),, [enable_gtk_doc_html=yes]) AC_ARG_ENABLE([gtk-doc-pdf], AS_HELP_STRING([--enable-gtk-doc-pdf], [build documentation in pdf format [[default=no]]]),, [enable_gtk_doc_pdf=no]) if test -z "$GTKDOC_MKPDF"; then enable_gtk_doc_pdf=no fi AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes]) AM_CONDITIONAL([GTK_DOC_BUILD_HTML], [test x$enable_gtk_doc_html = xyes]) AM_CONDITIONAL([GTK_DOC_BUILD_PDF], [test x$enable_gtk_doc_pdf = xyes]) AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"]) AM_CONDITIONAL([GTK_DOC_USE_REBASE], [test -n "$GTKDOC_REBASE"]) ]) m4_include([acinclude.m4]) hippo-canvas-0.3.1/AUTHORS0000664000076400007640000000010211366237062012105 00000000000000Havoc Pennington Owen Taylor hippo-canvas-0.3.1/Makefile-introspection.am0000664000076400007640000000146011404404116015764 00000000000000Hippo-1.0.gir: $(libhippocanvas_1_la_SOURCES) $(nodist_libhippocanvas_1_la_SOURCES) libhippocanvas-1.la Makefile libtool --mode=execute $(INTROSPECTION_SCANNER) -v --namespace Hippo --nsversion=1.0 \ --strip-prefix=Hippo \ --include=Gtk-2.0 \ --library=hippocanvas-1 \ --output $@ \ --pkg hippo-canvas-1 \ $(libhippocanvas_1_la_CPPFLAGS) \ $(nodist_libhippocanvas_1_la_SOURCES) \ $(libhippocanvasinclude_HEADERS) \ $(libhippocanvas_1_la_SOURCES) girdir = $(datadir)/gir gir_DATA = Hippo-1.0.gir CLEANFILES += $(gir_DATA) %.typelib: %.gir Makefile $(DEBUG) $(INTROSPECTION_COMPILER) $< -o $@ typelibdir = $(INTROSPECTION_TYPELIBDIR) typelib_DATA = $(gir_DATA:.gir=.typelib) CLEANFILES += $(typelib_DATA) hippo-canvas-0.3.1/common/0000775000076400007640000000000011404424207012404 500000000000000hippo-canvas-0.3.1/common/hippo/0000775000076400007640000000000011404424207013523 500000000000000hippo-canvas-0.3.1/common/hippo/hippo-canvas-theme.h0000664000076400007640000000274511366237062017324 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_CANVAS_THEME_H__ #define __HIPPO_CANVAS_THEME_H__ #include #include #include G_BEGIN_DECLS #define HIPPO_TYPE_CANVAS_THEME (hippo_canvas_theme_get_type ()) #define HIPPO_CANVAS_THEME(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_CANVAS_THEME, HippoCanvasTheme)) #define HIPPO_CANVAS_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), HIPPO_TYPE_CANVAS_THEME, HippoCanvasThemeClass)) #define HIPPO_IS_CANVAS_THEME(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_CANVAS_THEME)) #define HIPPO_IS_CANVAS_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), HIPPO_TYPE_CANVAS_THEME)) #define HIPPO_CANVAS_THEME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), HIPPO_TYPE_CANVAS_THEME, HippoCanvasThemeClass)) GType hippo_canvas_theme_get_type (void) G_GNUC_CONST; HippoCanvasTheme *hippo_canvas_theme_new (HippoCanvasThemeEngine *theme_engine, const char *application_stylesheet, const char *theme_stylesheet, const char *default_stylesheet); HippoCanvasThemeEngine *hippo_canvas_theme_get_theme_engine (HippoCanvasTheme *theme); G_END_DECLS #endif /* __HIPPO_CANVAS_THEME_H__ */ hippo-canvas-0.3.1/common/hippo/hippo-canvas-theme.c0000664000076400007640000011054211366237062017312 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* This file started as a cut-and-paste of cr-sel-eng.c from libcroco. * * It has been: * - Reformatted and otherwise edited to match our coding style * - Switched from handling xmlNode to handling HippoStyle * - Simplified by removing things that we don't need or that don't * make sense in our context. * - The code to get a list of matching properties works quite differently; * we order things in priority order, but we don't actually try to * coelesce properties with the same name. */ /* * This file is part of The Croco Library * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2.1 of the GNU Lesser General Public * License as published by the Free Software Foundation. * * 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 Lesser * 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 * * Copyright (C) 2003-2004 Dodji Seketeli. All Rights Reserved. */ #include #include #include "hippo-canvas-internal.h" #include "hippo-canvas-style.h" #include "hippo-canvas-theme-internal.h" static GObject *hippo_canvas_theme_constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_properties); static void hippo_canvas_theme_dispose (GObject *object); static void hippo_canvas_theme_finalize (GObject *object); static void hippo_canvas_theme_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); static void hippo_canvas_theme_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); #if 0 enum { LAST_SIGNAL }; static int signals[LAST_SIGNAL]; #endif struct _HippoCanvasTheme { GObject parent; HippoCanvasThemeEngine *theme_engine; char *application_stylesheet; char *default_stylesheet; char *theme_stylesheet; GHashTable *stylesheets_by_filename; GHashTable *filenames_by_stylesheet; CRCascade *cascade; }; struct _HippoCanvasThemeClass { GObjectClass parent_class; }; enum { PROP_0, PROP_THEME_ENGINE, PROP_APPLICATION_STYLESHEET, PROP_THEME_STYLESHEET, PROP_DEFAULT_STYLESHEET }; G_DEFINE_TYPE(HippoCanvasTheme, hippo_canvas_theme, G_TYPE_OBJECT) /* Quick strcmp. Test only for == 0 or != 0, not < 0 or > 0. */ #define strqcmp(str,lit,lit_len) \ (strlen (str) != (lit_len) || memcmp (str, lit, lit_len)) static void hippo_canvas_theme_init(HippoCanvasTheme *theme) { theme->stylesheets_by_filename = g_hash_table_new_full(g_str_hash, g_str_equal, (GDestroyNotify)g_free, (GDestroyNotify)cr_stylesheet_unref); theme->filenames_by_stylesheet = g_hash_table_new(g_direct_hash, g_direct_equal); } static void hippo_canvas_theme_class_init(HippoCanvasThemeClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->constructor = hippo_canvas_theme_constructor; object_class->dispose = hippo_canvas_theme_dispose; object_class->finalize = hippo_canvas_theme_finalize; object_class->set_property = hippo_canvas_theme_set_property; object_class->get_property = hippo_canvas_theme_get_property; /** * HippoCanvasImage:theme-engine * * The theme engine object, used to draw control parts in a theme-specific manner. */ g_object_class_install_property(object_class, PROP_THEME_ENGINE, g_param_spec_object("theme-engine", _("Theme Engine"), _("Theme engine object used to draw control parts"), HIPPO_TYPE_CANVAS_THEME_ENGINE, G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); /** * HippoCanvasImage:application-stylesheet * * The highest priority stylesheet, representing application-specific * styling; this is associated with the CSS "author" stylesheet. */ g_object_class_install_property(object_class, PROP_APPLICATION_STYLESHEET, g_param_spec_string("application-stylesheet", _("Application Stylesheet"), _("Stylesheet with application-specific styling"), NULL, G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); /** * HippoCanvasImage:theme-stylesheet * * The second priority stylesheet, representing theme-specific styling; * this is associated with the CSS "user" stylesheet. */ g_object_class_install_property(object_class, PROP_THEME_STYLESHEET, g_param_spec_string("theme-stylesheet", _("Theme Stylesheet"), _("Stylesheet with theme-specific styling"), NULL, G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); /** * HippoCanvasImage:default-stylesheet * * The lowest priority stylesheet, representing global default * styling; this is associated with the CSS "user agent" stylesheet. */ g_object_class_install_property(object_class, PROP_DEFAULT_STYLESHEET, g_param_spec_string("default-stylesheet", _("Default Stylesheet"), _("Stylesheet with global default styling"), NULL, G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); } static CRStyleSheet * parse_stylesheet(const char *filename) { enum CRStatus status; CRStyleSheet *stylesheet; if (filename == NULL) return NULL; status = cr_om_parser_simply_parse_file ((const guchar *)filename, CR_UTF_8, &stylesheet); if (status != CR_OK) { g_warning("Error parsing stylesheet '%s'", filename); return NULL; } return stylesheet; } static void insert_stylesheet(HippoCanvasTheme *theme, const char *filename, CRStyleSheet *stylesheet) { char *filename_copy; if (stylesheet == NULL) return; filename_copy = g_strdup(filename); cr_stylesheet_ref(stylesheet); g_hash_table_insert(theme->stylesheets_by_filename, filename_copy, stylesheet); g_hash_table_insert(theme->filenames_by_stylesheet, stylesheet, filename_copy); } static GObject * hippo_canvas_theme_constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_properties) { GObject *object; HippoCanvasTheme *theme; CRStyleSheet *application_stylesheet; CRStyleSheet *theme_stylesheet; CRStyleSheet *default_stylesheet; object = (*G_OBJECT_CLASS (hippo_canvas_theme_parent_class)->constructor) (type, n_construct_properties, construct_properties); theme = HIPPO_CANVAS_THEME (object); application_stylesheet = parse_stylesheet(theme->application_stylesheet); theme_stylesheet = parse_stylesheet(theme->theme_stylesheet); default_stylesheet = parse_stylesheet(theme->default_stylesheet); theme->cascade = cr_cascade_new(application_stylesheet, theme_stylesheet, default_stylesheet); if (theme->cascade == NULL) g_error("Out of memory when creating cascade object"); insert_stylesheet(theme, theme->application_stylesheet, application_stylesheet); insert_stylesheet(theme, theme->theme_stylesheet, theme_stylesheet); insert_stylesheet(theme, theme->default_stylesheet, default_stylesheet); return object; } static void hippo_canvas_theme_dispose(GObject *object) { /* HippoCanvasTheme *theme = HIPPO_CANVAS_THEME(object); */ G_OBJECT_CLASS(hippo_canvas_theme_parent_class)->dispose(object); } static void hippo_canvas_theme_finalize(GObject *object) { HippoCanvasTheme *theme = HIPPO_CANVAS_THEME(object); if (theme->theme_engine) g_object_unref(theme->theme_engine); g_hash_table_destroy(theme->stylesheets_by_filename); g_hash_table_destroy(theme->filenames_by_stylesheet); g_free(theme->application_stylesheet); g_free(theme->theme_stylesheet); g_free(theme->default_stylesheet); if (theme->cascade) { cr_cascade_unref(theme->cascade); theme->cascade = NULL; } G_OBJECT_CLASS(hippo_canvas_theme_parent_class)->finalize(object); } static void hippo_canvas_theme_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { HippoCanvasTheme *theme = HIPPO_CANVAS_THEME(object); switch (prop_id) { case PROP_THEME_ENGINE: { HippoCanvasThemeEngine *theme_engine = g_value_get_object(value); if (theme_engine != theme->theme_engine) { if (theme->theme_engine) g_object_unref(theme->theme_engine); theme->theme_engine = theme_engine; if (theme->theme_engine) g_object_ref(theme->theme_engine); } } break; case PROP_APPLICATION_STYLESHEET: { const char *path = g_value_get_string(value); if (path != theme->application_stylesheet) { g_free(theme->application_stylesheet); theme->application_stylesheet = g_strdup(path); } break; } case PROP_THEME_STYLESHEET: { const char *path = g_value_get_string(value); if (path != theme->theme_stylesheet) { g_free(theme->theme_stylesheet); theme->theme_stylesheet = g_strdup(path); } break; } case PROP_DEFAULT_STYLESHEET: { const char *path = g_value_get_string(value); if (path != theme->default_stylesheet) { g_free(theme->default_stylesheet); theme->default_stylesheet = g_strdup(path); } break; } default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } } static void hippo_canvas_theme_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { HippoCanvasTheme *theme = HIPPO_CANVAS_THEME (object); switch (prop_id) { case PROP_THEME_ENGINE: g_value_set_object(value, theme->theme_engine); break; case PROP_APPLICATION_STYLESHEET: g_value_set_string(value, theme->application_stylesheet); break; case PROP_THEME_STYLESHEET: g_value_set_string(value, theme->theme_stylesheet); break; case PROP_DEFAULT_STYLESHEET: g_value_set_string(value, theme->default_stylesheet); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } } /** * hippo_canvas_theme_new: * @theme_engine: The theme engine object used for theme-specific drawing code, may be %NULL * @application_stylesheet: The highest priority stylesheet, representing application-specific * styling; this is associated with the CSS "author" stylesheet, may be %NULL * @theme_stylesheet: The second priority stylesheet, representing theme-specific styling ; * this is associated with the CSS "user" stylesheet, may be %NULL * @default_stylesheet: The lowest priority stylesheet, representing global default styling; * this is associated with the CSS "user agent" stylesheet, may be %NULL * * Return value: the newly created theme object **/ HippoCanvasTheme * hippo_canvas_theme_new (HippoCanvasThemeEngine *theme_engine, const char *application_stylesheet, const char *theme_stylesheet, const char *default_stylesheet) { HippoCanvasTheme *theme = g_object_new(HIPPO_TYPE_CANVAS_THEME, "theme-engine", theme_engine, "application-stylesheet", application_stylesheet, "theme-stylesheet", theme_stylesheet, "default-stylesheet", default_stylesheet, NULL); return theme; } HippoCanvasThemeEngine * hippo_canvas_theme_get_theme_engine (HippoCanvasTheme *theme) { g_return_val_if_fail(HIPPO_IS_CANVAS_THEME(theme), NULL); return theme->theme_engine; } static gboolean link_class_add_sel_matches_style(HippoCanvasTheme *a_this, CRAdditionalSel *a_add_sel, HippoCanvasStyle *a_style) { return hippo_canvas_style_get_link_type(a_style) == HIPPO_CANVAS_LINK_LINK; } static gboolean visited_class_add_sel_matches_style(HippoCanvasTheme *a_this, CRAdditionalSel *a_add_sel, HippoCanvasStyle *a_style) { return hippo_canvas_style_get_link_type(a_style) == HIPPO_CANVAS_LINK_VISITED; } static gboolean pseudo_class_add_sel_matches_style (HippoCanvasTheme *a_this, CRAdditionalSel *a_add_sel, HippoCanvasStyle *a_style) { g_return_val_if_fail(a_this && a_add_sel && a_add_sel->content.pseudo && a_add_sel->content.pseudo->name && a_add_sel->content.pseudo->name->stryng && a_add_sel->content.pseudo->name->stryng->str && a_style, FALSE); if (strcmp(a_add_sel->content.pseudo->name->stryng->str, "link") == 0) { return link_class_add_sel_matches_style(a_this, a_add_sel, a_style); } else if (strcmp(a_add_sel->content.pseudo->name->stryng->str, "visited") == 0) { return visited_class_add_sel_matches_style(a_this, a_add_sel, a_style); } else { return FALSE; } } /** *@param a_add_sel the class additional selector to consider. *@param a_style the style object to consider. *@return TRUE if the class additional selector matches *the style object given in argument, FALSE otherwise. */ static gboolean class_add_sel_matches_style (CRAdditionalSel *a_add_sel, HippoCanvasStyle *a_style) { const char *klass; g_return_val_if_fail (a_add_sel && a_add_sel->type == CLASS_ADD_SELECTOR && a_add_sel->content.class_name && a_add_sel->content.class_name->stryng && a_add_sel->content.class_name->stryng->str && a_style, FALSE); klass = hippo_canvas_style_get_element_class(a_style); if (klass != NULL) { const char *cur; for (cur = klass; *cur;) { while (*cur && cr_utils_is_white_space (*cur)) cur++; if (strncmp (cur, a_add_sel->content.class_name->stryng->str, a_add_sel->content.class_name->stryng->len) == 0) { cur += a_add_sel->content.class_name->stryng->len; if ((!*cur) || cr_utils_is_white_space (*cur)) return TRUE; } /* skip to next whitespace character */ while (*cur && !cr_utils_is_white_space(*cur)) cur++; } } return FALSE; } /** *@return TRUE if the additional attribute selector matches *the current style object given in argument, FALSE otherwise. *@param a_add_sel the additional attribute selector to consider. *@param a_style the style object to consider. */ static gboolean id_add_sel_matches_style (CRAdditionalSel *a_add_sel, HippoCanvasStyle *a_style) { gboolean result = FALSE; const char *id; g_return_val_if_fail (a_add_sel && a_add_sel->type == ID_ADD_SELECTOR && a_add_sel->content.id_name && a_add_sel->content.id_name->stryng && a_add_sel->content.id_name->stryng->str && a_style, FALSE); g_return_val_if_fail (a_add_sel && a_add_sel->type == ID_ADD_SELECTOR && a_style, FALSE); id = hippo_canvas_style_get_element_id(a_style); if (id != NULL) { if (!strqcmp (id, a_add_sel->content.id_name->stryng->str, a_add_sel->content.id_name->stryng->len)) { result = TRUE; } } return result; } /** *Evaluates if a given additional selector matches an style object. *@param a_add_sel the additional selector to consider. *@param a_style the style object to consider. *@return TRUE is a_add_sel matches a_style, FALSE otherwise. */ static gboolean additional_selector_matches_style (HippoCanvasTheme *a_this, CRAdditionalSel *a_add_sel, HippoCanvasStyle *a_style) { CRAdditionalSel *cur_add_sel = NULL; CRAdditionalSel *tail; gboolean evaluated = FALSE; g_return_val_if_fail (a_add_sel, FALSE) ; for (tail = a_add_sel; tail && tail->next; tail = tail->next) ; for (cur_add_sel = tail ; cur_add_sel ; cur_add_sel = cur_add_sel->prev) { evaluated = TRUE ; if (cur_add_sel->type == NO_ADD_SELECTOR) { return FALSE; } if (cur_add_sel->type == CLASS_ADD_SELECTOR && cur_add_sel->content.class_name && cur_add_sel->content.class_name->stryng && cur_add_sel->content.class_name->stryng->str) { if (!class_add_sel_matches_style (cur_add_sel, a_style)) { return FALSE; } continue ; } else if (cur_add_sel->type == ID_ADD_SELECTOR && cur_add_sel->content.id_name && cur_add_sel->content.id_name->stryng && cur_add_sel->content.id_name->stryng->str) { if (!id_add_sel_matches_style (cur_add_sel, a_style)) { return FALSE; } continue ; } else if (cur_add_sel->type == ATTRIBUTE_ADD_SELECTOR && cur_add_sel->content.attr_sel) { g_warning("Attribute selectors not supported"); return FALSE; } else if (cur_add_sel->type == PSEUDO_CLASS_ADD_SELECTOR && cur_add_sel->content.pseudo) { /* FIXME: is this right?????; it's backwards from the rest */ if (pseudo_class_add_sel_matches_style(a_this, cur_add_sel, a_style)) { return TRUE; } return FALSE; } } if (evaluated) return TRUE; return FALSE ; } /* This is a workaround for: * - Python encodes '.' as '+' in type names * - libcroco doesn't correctly parse the \+ escape in types * - it's far too ugly to write foo\2b\bar\2bWidget... * * So we consider an element name of foo-bar-Widget to match a type * of foo+bar+Widget */ static gboolean element_name_matches_type_name(const char *element_name, const char *type_name) { const char *p = element_name; const char *q = type_name; while (*p || *q) { if (*p == '-') { if (*q != '-' && *q != '+') return FALSE; } else { if (*p != *q) return FALSE; } p++; q++; } return TRUE; } static gboolean element_name_matches_type(const char *element_name, GType element_type) { /* This is not efficient, but the number of selectors with an element_name * is probably fairly small. */ if (element_type == G_TYPE_NONE) { return strcmp(element_name, "canvas") == 0; } else { while (TRUE) { if (element_name_matches_type_name(element_name, g_type_name(element_type))) return TRUE; if (element_type == G_TYPE_OBJECT) return FALSE; element_type = g_type_parent(element_type); } } } /** *Evaluate a selector (a simple selectors list) and says *if it matches the style object given in parameter. *The algorithm used here is the following: *Walk the combinator separated list of simple selectors backward, starting *from the end of the list. For each simple selector, looks if *if matches the current style. * *@param a_this the selection engine. *@param a_sel the simple selection list. *@param a_style the style object. *@param a_result out parameter. Set to true if the *selector matches the style object, FALSE otherwise. *@param a_recurse if set to TRUE, the function will walk to *the next simple selector (after the evaluation of the current one) *and recursively evaluate it. Must be usually set to TRUE unless you *know what you are doing. */ static enum CRStatus sel_matches_style_real (HippoCanvasTheme *a_this, CRSimpleSel *a_sel, HippoCanvasStyle *a_style, gboolean *a_result, gboolean a_eval_sel_list_from_end, gboolean a_recurse) { CRSimpleSel *cur_sel = NULL; HippoCanvasStyle *cur_style = NULL; GType cur_type; *a_result = FALSE; if (a_eval_sel_list_from_end) { /*go and get the last simple selector of the list */ for (cur_sel = a_sel; cur_sel && cur_sel->next; cur_sel = cur_sel->next) ; } else { cur_sel = a_sel; } cur_style = a_style; cur_type = hippo_canvas_style_get_element_type(cur_style); while (cur_sel) { if (((cur_sel->type_mask & TYPE_SELECTOR) && (cur_sel->name && cur_sel->name->stryng && cur_sel->name->stryng->str) && (element_name_matches_type (cur_sel->name->stryng->str, cur_type))) || (cur_sel->type_mask & UNIVERSAL_SELECTOR)) { /* *this simple selector *matches the current style object *Let's see if the preceding *simple selectors also match *their style object counterpart. */ if (cur_sel->add_sel) { if (additional_selector_matches_style (a_this, cur_sel->add_sel, cur_style)) { goto walk_a_step_in_expr; } else { goto done; } } else { goto walk_a_step_in_expr; } } if (!(cur_sel->type_mask & TYPE_SELECTOR) && !(cur_sel->type_mask & UNIVERSAL_SELECTOR)) { if (!cur_sel->add_sel) { goto done; } if (additional_selector_matches_style(a_this, cur_sel->add_sel, cur_style)) { goto walk_a_step_in_expr; } else { goto done; } } else { goto done ; } walk_a_step_in_expr: if (a_recurse == FALSE) { *a_result = TRUE; goto done; } /* *here, depending on the combinator of cur_sel *choose the axis of the element tree traversal *and walk one step in the element tree. */ if (!cur_sel->prev) break; switch (cur_sel->combinator) { case NO_COMBINATOR: break; case COMB_WS: /*descendant selector */ { HippoCanvasStyle *n = NULL; /* *walk the element tree upward looking for a parent *style that matches the preceding selector. */ for (n = hippo_canvas_style_get_parent(a_style); n; n = hippo_canvas_style_get_parent(n)) { enum CRStatus status; gboolean matches = FALSE; status = sel_matches_style_real(a_this, cur_sel->prev, n, &matches, FALSE, TRUE); if (status != CR_OK) goto done; if (matches) { cur_style = n; cur_type = hippo_canvas_style_get_element_type(cur_style); break; } } if (!n) { /* *didn't find any ancestor that matches *the previous simple selector. */ goto done; } /* *in this case, the preceding simple sel *will have been interpreted twice, which *is a cpu and mem waste ... I need to find *another way to do this. Anyway, this is *my first attempt to write this function and *I am a bit clueless. */ break; } case COMB_PLUS: g_warning("+ combinators are not supported"); goto done; case COMB_GT: cur_style = hippo_canvas_style_get_parent (cur_style); if (!cur_style) goto done; cur_type = hippo_canvas_style_get_element_type(cur_style); break; default: goto done; } cur_sel = cur_sel->prev; } /* *if we reached this point, it means the selector matches *the style object. */ *a_result = TRUE; done: return CR_OK; } static void add_matched_properties (HippoCanvasTheme *a_this, CRStyleSheet *a_stylesheet, HippoCanvasStyle *a_style, GPtrArray *props) { CRStatement *cur_stmt = NULL; CRSelector *sel_list = NULL; CRSelector *cur_sel = NULL; gboolean matches = FALSE; enum CRStatus status = CR_OK; /* *walk through the list of statements and, *get the selectors list inside the statements that *contain some, and try to match our style object in these *selectors lists. */ for (cur_stmt = a_stylesheet->statements; cur_stmt; cur_stmt = cur_stmt->next) { /* *initialyze the selector list in which we will *really perform the search. */ sel_list = NULL; /* *get the the damn selector list in *which we have to look */ switch (cur_stmt->type) { case RULESET_STMT: if (cur_stmt->kind.ruleset && cur_stmt->kind.ruleset->sel_list) { sel_list = cur_stmt->kind.ruleset->sel_list; } break; case AT_MEDIA_RULE_STMT: if (cur_stmt->kind.media_rule && cur_stmt->kind.media_rule->rulesets && cur_stmt->kind.media_rule->rulesets->kind.ruleset && cur_stmt->kind.media_rule->rulesets->kind.ruleset->sel_list) { sel_list = cur_stmt->kind.media_rule->rulesets->kind.ruleset->sel_list; } break; case AT_IMPORT_RULE_STMT: { CRAtImportRule *import_rule = cur_stmt->kind.import_rule; if (import_rule->sheet == NULL) { char *filename = NULL; if (import_rule->url->stryng && import_rule->url->stryng->str) filename = _hippo_canvas_theme_resolve_url(a_this, a_stylesheet, import_rule->url->stryng->str); if (filename) import_rule->sheet = parse_stylesheet(filename); if (import_rule->sheet) { insert_stylesheet(a_this, filename, import_rule->sheet); /* refcount of stylesheets starts off at zero, so we don't need to unref! */ } else { /* Set a marker to avoid repeatedly trying to parse a non-existent or * broken stylesheet */ import_rule->sheet = (CRStyleSheet *)-1; } if (filename) g_free(filename); } if (import_rule->sheet != (CRStyleSheet *)-1) { add_matched_properties(a_this, import_rule->sheet, a_style, props); } } break; default: break; } if (!sel_list) continue; /* *now, we have a comma separated selector list to look in. *let's walk it and try to match the style object *on each item of the list. */ for (cur_sel = sel_list; cur_sel; cur_sel = cur_sel->next) { if (!cur_sel->simple_sel) continue; status = sel_matches_style_real(a_this, cur_sel->simple_sel, a_style, &matches, TRUE, TRUE); if (status == CR_OK && matches) { CRDeclaration *cur_decl = NULL; /* In order to sort the matching properties, we need to compute the * specificity of the selector that actually matched this * element. In a non-thread-safe fashion, we store it in the * ruleset. (Fixing this would mean cut-and-pasting * cr_simple_sel_compute_specificity(), and have no need for * thread-safety anyways.) * * Once we've sorted the properties, the specificity no longer * matters and it can be safely overriden. */ cr_simple_sel_compute_specificity (cur_sel->simple_sel); cur_stmt->specificity = cur_sel->simple_sel->specificity; for (cur_decl = cur_stmt->kind.ruleset->decl_list; cur_decl; cur_decl = cur_decl->next) g_ptr_array_add(props, cur_decl); } } } } #define ORIGIN_AUTHOR_IMPORTANT (ORIGIN_AUTHOR + 1) #define ORIGIN_USER_IMPORTANT (ORIGIN_AUTHOR + 2) static inline int get_origin(const CRDeclaration *decl) { enum CRStyleOrigin origin = decl->parent_statement->parent_sheet->origin; if (decl->important) { if (origin == ORIGIN_AUTHOR) return ORIGIN_AUTHOR_IMPORTANT; else if (origin == ORIGIN_USER) return ORIGIN_USER_IMPORTANT; } return origin; } /* Order of comparison is so that higher priority statements compare after * lower priority statements */ static int compare_declarations(gconstpointer a, gconstpointer b) { /* g_ptr_array_sort() is broooken */ CRDeclaration *decl_a = *(CRDeclaration **)a; CRDeclaration *decl_b = *(CRDeclaration **)b; int origin_a = get_origin(decl_a); int origin_b = get_origin(decl_b); if (origin_a != origin_b) return origin_a - origin_b; if (decl_a->parent_statement->specificity != decl_b->parent_statement->specificity) return decl_a->parent_statement->specificity - decl_b->parent_statement->specificity; return 0; } void _hippo_canvas_theme_get_matched_properties (HippoCanvasTheme *theme, HippoCanvasStyle *style, CRDeclaration ***properties, int *n_properties) { enum CRStyleOrigin origin = 0; CRStyleSheet *sheet = NULL; GPtrArray *props = g_ptr_array_new(); g_return_if_fail (HIPPO_IS_CANVAS_THEME(theme)); g_return_if_fail (HIPPO_IS_CANVAS_STYLE(style)); for (origin = ORIGIN_UA; origin < NB_ORIGINS; origin++) { sheet = cr_cascade_get_sheet (theme->cascade, origin); if (!sheet) continue; add_matched_properties(theme, sheet, style, props); } /* We count on a stable sort here so that later declarations come * after earlier declarations */ g_ptr_array_sort(props, compare_declarations); *n_properties = props->len; *properties = (CRDeclaration **)g_ptr_array_free(props, FALSE); } /* Resolve an url from an url() reference in a stylesheet into an absolute * local filename, if possible. The resolution here is distinctly lame and * will fail on many examples. */ char * _hippo_canvas_theme_resolve_url (HippoCanvasTheme *theme, CRStyleSheet *base_stylesheet, const char *url) { const char *base_filename = NULL; char *dirname; char *filename; /* Handle absolute file:/ URLs */ if (g_str_has_prefix(url, "file:") || g_str_has_prefix(url, "File:") || g_str_has_prefix(url, "FILE:")) { GError *error = NULL; char *filename; filename = g_filename_from_uri(url, NULL, &error); if (filename == NULL) { g_warning("%s", error->message); g_error_free(error); } return NULL; } /* Guard against http:/ URLs */ if (g_str_has_prefix(url, "http:") || g_str_has_prefix(url, "Http:") || g_str_has_prefix(url, "HTTP:")) { g_warning("Http URL '%s' in theme stylesheet is not supported", url); return NULL; } /* Assume anything else is a relative URL, and "resolve" it */ if (url[0] == '/') return g_strdup(url); base_filename = g_hash_table_lookup(theme->filenames_by_stylesheet, base_stylesheet); if (base_filename == NULL) { g_warning("Can't get base to resolve url '%s'", url); return NULL; } dirname = g_path_get_dirname(base_filename); filename = g_build_filename(dirname, url, NULL); g_free(dirname); return filename; } hippo-canvas-0.3.1/common/hippo/hippo-animation.h0000664000076400007640000000515511366237063016727 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_ANIMATION_H__ #define __HIPPO_ANIMATION_H__ #include G_BEGIN_DECLS /** * HippoAnimation:: * * The HippoAnimation class represents a single animation that can be managed by * a HippoAnimationManager. An animation consists of a series of "events". * events can either be instantantaneous, or they can have a duration. Each * event is identified by an integer ID. (It was done this way rather than * using objects to avoid forcing someone implementation an animation to * define a new GObject type.) * * The base HippoAnimation class does nothing by itself. You can either * subclass it, or you can create an instance of the base class and connect * to the ::event and ::cancel signals. */ #define HIPPO_TYPE_ANIMATION (hippo_animation_get_type ()) #define HIPPO_ANIMATION(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_ANIMATION, HippoAnimation)) #define HIPPO_ANIMATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), HIPPO_TYPE_ANIMATION, HippoAnimationClass)) #define HIPPO_IS_ANIMATION(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_ANIMATION)) #define HIPPO_IS_ANIMATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), HIPPO_TYPE_ANIMATION)) #define HIPPO_ANIMATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), HIPPO_TYPE_ANIMATION, HippoAnimationClass)) typedef struct _HippoAnimation HippoAnimation; typedef struct _HippoAnimationClass HippoAnimationClass; struct _HippoAnimation { GObject parent; GPtrArray *events; guint first_current; /* Index of first event that is still current */ double position; /* current time value */ }; struct _HippoAnimationClass { GObjectClass parent_class; void (*event) (HippoAnimation *animation, int event_id, double fraction); void (*cancel) (HippoAnimation *animation); }; GType hippo_animation_get_type (void) G_GNUC_CONST; HippoAnimation *hippo_animation_new (void); int hippo_animation_add_event(HippoAnimation *animation, double when, double duration); void hippo_animation_cancel (HippoAnimation *animation); /* "Protected" methods used by HippoAnimationManager */ void hippo_animation_advance (HippoAnimation *animation, double position); double hippo_animation_get_next_event_position (HippoAnimation *animation); G_END_DECLS #endif /* __HIPPO_ANIMATION_H__ */ hippo-canvas-0.3.1/common/hippo/hippo-canvas-image-button.c0000664000076400007640000002425611366237063020612 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include "hippo-canvas-internal.h" #include #include "hippo-canvas-image-button.h" #include "hippo-canvas-util.h" static void hippo_canvas_image_button_init (HippoCanvasImageButton *image); static void hippo_canvas_image_button_class_init (HippoCanvasImageButtonClass *klass); static void hippo_canvas_image_button_iface_init (HippoCanvasItemIface *item_class); static void hippo_canvas_image_button_finalize (GObject *object); static void hippo_canvas_image_button_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); static void hippo_canvas_image_button_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); /* Box methods */ static void hippo_canvas_image_button_hovering_changed (HippoCanvasBox *box, gboolean hovering); enum { NO_SIGNALS_YET, LAST_SIGNAL }; /* static int signals[LAST_SIGNAL]; */ enum { PROP_0, PROP_NORMAL_IMAGE, PROP_NORMAL_IMAGE_NAME, PROP_PRELIGHT_IMAGE, PROP_PRELIGHT_IMAGE_NAME }; struct _HippoCanvasImageButton { HippoCanvasImage image; cairo_surface_t *normal_image; char *normal_image_name; cairo_surface_t *prelight_image; char *prelight_image_name; }; struct _HippoCanvasImageButtonClass { HippoCanvasImageClass parent_class; }; G_DEFINE_TYPE_WITH_CODE(HippoCanvasImageButton, hippo_canvas_image_button, HIPPO_TYPE_CANVAS_IMAGE, G_IMPLEMENT_INTERFACE(HIPPO_TYPE_CANVAS_ITEM, hippo_canvas_image_button_iface_init)); static void hippo_canvas_image_button_init(HippoCanvasImageButton *button) { HIPPO_CANVAS_BOX(button)->clickable = TRUE; } static HippoCanvasItemIface *item_parent_class; static void hippo_canvas_image_button_iface_init(HippoCanvasItemIface *item_class) { item_parent_class = g_type_interface_peek_parent(item_class); } static void hippo_canvas_image_button_class_init(HippoCanvasImageButtonClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); HippoCanvasBoxClass *box_class = HIPPO_CANVAS_BOX_CLASS(klass); object_class->set_property = hippo_canvas_image_button_set_property; object_class->get_property = hippo_canvas_image_button_get_property; object_class->finalize = hippo_canvas_image_button_finalize; box_class->hovering_changed = hippo_canvas_image_button_hovering_changed; g_object_class_install_property(object_class, PROP_NORMAL_IMAGE, g_param_spec_boxed("normal-image", _("Normal Image"), _("normal image as cairo_surface_t"), HIPPO_TYPE_CAIRO_SURFACE, G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property(object_class, PROP_NORMAL_IMAGE_NAME, g_param_spec_string("normal-image-name", _("Normal Image Name"), _("Name of normal image to be loaded into the item"), NULL, G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property(object_class, PROP_PRELIGHT_IMAGE, g_param_spec_boxed("prelight-image", _("Prelight Image"), _("prelight image as cairo_surface_t"), HIPPO_TYPE_CAIRO_SURFACE, G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property(object_class, PROP_PRELIGHT_IMAGE_NAME, g_param_spec_string("prelight-image-name", _("Prelight Image Name"), _("Name of prelight image to be loaded into the item"), NULL, G_PARAM_READABLE | G_PARAM_WRITABLE)); } static void hippo_canvas_image_button_finalize(GObject *object) { HippoCanvasImageButton *button = HIPPO_CANVAS_IMAGE_BUTTON(object); if (button->normal_image) cairo_surface_destroy(button->normal_image); g_free(button->normal_image_name); button->normal_image_name = NULL; if (button->prelight_image) cairo_surface_destroy(button->prelight_image); g_free(button->prelight_image_name); button->prelight_image_name = NULL; G_OBJECT_CLASS(hippo_canvas_image_button_parent_class)->finalize(object); } HippoCanvasItem* hippo_canvas_image_button_new(void) { HippoCanvasImageButton *image = g_object_new(HIPPO_TYPE_CANVAS_IMAGE_BUTTON, NULL); return HIPPO_CANVAS_ITEM(image); } static void pick_image(HippoCanvasImageButton *button) { HippoCanvasBox *box; const char *name; cairo_surface_t *surface; box = HIPPO_CANVAS_BOX(button); name = NULL; surface = NULL; if (box->hovering) { if (button->prelight_image_name) name = button->prelight_image_name; else if (button->prelight_image) surface = button->prelight_image; } /* it's allowed to have no prelight image, in which case we just use the * normal image */ if (!box->hovering || (name == NULL && surface == NULL)) { if (button->normal_image_name) name = button->normal_image_name; else surface = button->normal_image; } /* This causes a request_changed or repaint if necessary */ if (name) g_object_set(G_OBJECT(button), "image-name", name, NULL); else g_object_set(G_OBJECT(button), "image", surface, NULL); /* note, surface may be null */ } static void hippo_canvas_image_button_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { HippoCanvasImageButton *button; button = HIPPO_CANVAS_IMAGE_BUTTON(object); switch (prop_id) { case PROP_NORMAL_IMAGE: { cairo_surface_t *surface = g_value_get_boxed(value); if (surface != button->normal_image) { if (surface) cairo_surface_reference(surface); if (button->normal_image) cairo_surface_destroy(button->normal_image); button->normal_image = surface; } } break; case PROP_NORMAL_IMAGE_NAME: { const char *name = g_value_get_string(value); if (!(button->normal_image_name == name || (button->normal_image_name && name && strcmp(button->normal_image_name, name) == 0))) { g_free(button->normal_image_name); button->normal_image_name = g_strdup(name); } } break; case PROP_PRELIGHT_IMAGE: { cairo_surface_t *surface = g_value_get_boxed(value); if (surface != button->prelight_image) { if (surface) cairo_surface_reference(surface); if (button->prelight_image) cairo_surface_destroy(button->prelight_image); button->prelight_image = surface; } } break; case PROP_PRELIGHT_IMAGE_NAME: { const char *name = g_value_get_string(value); if (!(button->prelight_image_name == name || (button->prelight_image_name && name && strcmp(button->prelight_image_name, name) == 0))) { g_free(button->prelight_image_name); button->prelight_image_name = g_strdup(name); } } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } /* This results in an emit_request_changed or repaint as appropriate */ pick_image(button); } static void hippo_canvas_image_button_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { HippoCanvasImageButton *button; button = HIPPO_CANVAS_IMAGE_BUTTON (object); switch (prop_id) { case PROP_NORMAL_IMAGE: g_value_set_boxed(value, button->normal_image); break; case PROP_NORMAL_IMAGE_NAME: g_value_set_string(value, button->normal_image_name); break; case PROP_PRELIGHT_IMAGE: g_value_set_boxed(value, button->prelight_image); break; case PROP_PRELIGHT_IMAGE_NAME: g_value_set_string(value, button->prelight_image_name); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } } static void hippo_canvas_image_button_hovering_changed (HippoCanvasBox *box, gboolean hovering) { HippoCanvasImageButton *button; button = HIPPO_CANVAS_IMAGE_BUTTON(box); pick_image(button); } hippo-canvas-0.3.1/common/hippo/hippo-canvas-marshal.list0000664000076400007640000000013211366237063020362 00000000000000VOID:POINTER,BOXED VOID:NONE VOID:UINT VOID:INT,INT,INT,INT VOID:INT,DOUBLE BOOLEAN:BOXED hippo-canvas-0.3.1/common/hippo/hippo-canvas-theme-image.c0000664000076400007640000001667411366237063020406 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include #include "hippo-canvas-theme-image.h" #ifdef HAVE_LIBRSVG #include #include #endif typedef enum { THEME_IMAGE_SURFACE, THEME_IMAGE_SVG } ThemeImageType; struct _HippoCanvasThemeImage { GObject parent; ThemeImageType type; union { #ifdef HAVE_LIBRSVG RsvgHandle *svg; #endif cairo_surface_t *surface; } u; int border_top; int border_right; int border_bottom; int border_left; }; struct _HippoCanvasThemeImageClass { GObjectClass parent_class; }; G_DEFINE_TYPE(HippoCanvasThemeImage, hippo_canvas_theme_image, G_TYPE_OBJECT) GQuark hippo_canvas_theme_image_error_quark (void) { return g_quark_from_static_string ("hippo-canvas-theme-image-error-quark"); } static void hippo_canvas_theme_image_finalize(GObject *object) { HippoCanvasThemeImage *image = HIPPO_CANVAS_THEME_IMAGE(object); switch (image->type) { case THEME_IMAGE_SURFACE: if (image->u.surface) { cairo_surface_destroy(image->u.surface); image->u.surface = NULL; } break; case THEME_IMAGE_SVG: #ifdef HAVE_LIBRSVG if (image->u.svg) { g_object_unref(image->u.svg); image->u.svg = NULL; } #endif break; } G_OBJECT_CLASS(hippo_canvas_theme_image_parent_class)->finalize(object); } static void hippo_canvas_theme_image_class_init(HippoCanvasThemeImageClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = hippo_canvas_theme_image_finalize; } static void hippo_canvas_theme_image_init(HippoCanvasThemeImage *image) { } HippoCanvasThemeImage * hippo_canvas_theme_image_new (const char *filename, int border_top, int border_right, int border_bottom, int border_left, GError **error) { HippoCanvasThemeImage *image; g_return_val_if_fail(error == NULL || *error == NULL, NULL); image = g_object_new(HIPPO_TYPE_CANVAS_THEME_IMAGE, NULL); #ifdef HAVE_LIBRSVG if (g_str_has_suffix(filename, ".svg") || g_str_has_suffix(filename, ".SVG")) { image->type = THEME_IMAGE_SVG; image->u.svg = rsvg_handle_new_from_file(filename, error); if (image->u.svg == NULL) { /* librsvg does a horrible job setting error, it's probably NULL */ if (*error == NULL) g_set_error(error, HIPPO_CANVAS_THEME_IMAGE_ERROR, HIPPO_CANVAS_THEME_IMAGE_ERROR_FAILED, "Failed to read SVG image '%s'", filename); goto fail; } } else #endif if (g_str_has_suffix(filename, ".png") || g_str_has_suffix(filename, ".PNG")) { image->type = THEME_IMAGE_SURFACE; image->u.surface = cairo_image_surface_create_from_png(filename); if (image->u.surface == NULL) { g_set_error(error, HIPPO_CANVAS_THEME_IMAGE_ERROR, HIPPO_CANVAS_THEME_IMAGE_ERROR_FAILED, "Failed to read PNG image '%s'", filename); goto fail; } } else { g_set_error(error, HIPPO_CANVAS_THEME_IMAGE_ERROR, HIPPO_CANVAS_THEME_IMAGE_ERROR_FAILED, "Unknown filetype for image '%s'", filename); goto fail; } image->border_top = border_top; image->border_right = border_right; image->border_bottom = border_bottom; image->border_left = border_left; return image; fail: g_object_unref(image); return NULL; } void hippo_canvas_theme_image_render (HippoCanvasThemeImage *image, cairo_t *cr, int x, int y, int width, int height) { int source_width = 0; int source_height = 0; int source_x1 = 0, source_x2 = 0, source_y1 = 0, source_y2 = 0; int dest_x1 = 0, dest_x2 = 0, dest_y1 = 0, dest_y2 = 0; int i, j; /* To draw a theme image, we divide the source and destination into 9 * pieces and draw each piece separately. (Some pieces may not exist * if we have 0-width borders, in which case they'll be skipped) * * i=0 i=1 i=2 * border_left border_right * +------------+--------------------+--------------+ * j=0: border_top | | | | * +------------+--------------------+--------------+ * j=1 | | | | * +------------+--------------------+--------------+ * j=2: border_bottom | | | | * +------------+--------------------+--------------+ * */ switch (image->type) { case THEME_IMAGE_SURFACE: source_width = cairo_image_surface_get_width(image->u.surface); source_height = cairo_image_surface_get_height(image->u.surface); break; case THEME_IMAGE_SVG: { #ifdef HAVE_LIBRSVG RsvgDimensionData dimensions; rsvg_handle_get_dimensions(image->u.svg, &dimensions); source_width = dimensions.width; source_height = dimensions.height; #endif break; } } for (j = 0; j < 3; j++) { switch (j) { case 0: source_y1 = 0; source_y2 = image->border_top; dest_y1 = y; dest_y2 = y + image->border_top; break; case 1: source_y1 = image->border_top; source_y2 = source_height - image->border_bottom; dest_y1 = y + image->border_top; dest_y2 = y + height - image->border_bottom; break; case 2: source_y1 = source_height - image->border_bottom; source_y2 = source_height; dest_y1 = y + height - image->border_bottom; dest_y2 = y + height; break; } if (dest_y2 <= dest_y1) continue; /* pixbuf-theme-engine has a nice interpretation of source_y2 == source_y1, * dest_y2 != dest_y1, which is to linearly interpolate between the surrounding * areas. We could do that for the surface case by setting * * source_y1 == y - 0.5 * source_y2 == y + 0.5 * * but it's hard for the SVG case. source_y2 < source_y1 is pathological ... someone * specified borders that sum up larger than the image. */ if (source_y2 <= source_y1) continue; for (i = 0; i < 3; i++) { switch (i) { case 0: source_x1 = 0; source_x2 = image->border_left; dest_x1 = x; dest_x2 = x + image->border_left; break; case 1: source_x1 = image->border_left; source_x2 = source_width - image->border_right; dest_x1 = x + image->border_left; dest_x2 = x + width - image->border_right; break; case 2: source_x1 = source_width - image->border_right; source_x2 = source_width; dest_x1 = x + width - image->border_right; dest_x2 = x + width; break; } if (dest_x2 <= dest_x1) continue; if (source_x2 <= source_x1) continue; cairo_save(cr); cairo_rectangle(cr, dest_x1, dest_y1, dest_x2 - dest_x1, dest_y2 - dest_y1); cairo_clip(cr); cairo_translate(cr, dest_x1, dest_y1); cairo_scale(cr, (double)(dest_x2 - dest_x1) / (source_x2 - source_x1), (double)(dest_y2 - dest_y1) / (source_y2 - source_y1)); switch (image->type) { case THEME_IMAGE_SURFACE: cairo_set_source_surface(cr, image->u.surface, - source_x1, - source_y1); cairo_paint(cr); break; case THEME_IMAGE_SVG: #ifdef HAVE_LIBRSVG cairo_translate(cr, - source_x1, - source_y1); rsvg_handle_render_cairo(image->u.svg, cr); #endif break; } cairo_restore(cr); } } } hippo-canvas-0.3.1/common/hippo/hippo-graphics.h0000664000076400007640000000313411366237063016543 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_GRAPHICS_H__ #define __HIPPO_GRAPHICS_H__ #include #include G_BEGIN_DECLS #define HIPPO_TYPE_RECTANGLE (hippo_rectangle_get_type()) typedef enum { HIPPO_ORIENTATION_VERTICAL, HIPPO_ORIENTATION_HORIZONTAL } HippoOrientation; typedef enum { HIPPO_SIDE_TOP, HIPPO_SIDE_BOTTOM, HIPPO_SIDE_LEFT, HIPPO_SIDE_RIGHT } HippoSide; typedef enum{ HIPPO_GRAVITY_NORTH_WEST, HIPPO_GRAVITY_NORTH_EAST, HIPPO_GRAVITY_SOUTH_EAST, HIPPO_GRAVITY_SOUTH_WEST } HippoGravity; typedef struct { int x; int y; int width; int height; } HippoRectangle; GType hippo_rectangle_get_type (void) G_GNUC_CONST; gboolean hippo_rectangle_intersect (const HippoRectangle *src1, const HippoRectangle *src2, HippoRectangle *dest); gboolean hippo_rectangle_equal (const HippoRectangle *r1, const HippoRectangle *r2); HippoRectangle *hippo_rectangle_copy (HippoRectangle *r); void hippo_rectangle_free (HippoRectangle *r); void hippo_cairo_set_source_rgba32 (cairo_t *cr, guint32 color); void hippo_cairo_pattern_add_stop_rgba32 (cairo_pattern_t *pattern, double offset, guint32 color); G_END_DECLS #endif /* __HIPPO_GRAPHICS_H__ */ hippo-canvas-0.3.1/common/hippo/hippo-canvas-gradient.h0000664000076400007640000000242311366237063020011 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_CANVAS_GRADIENT_H__ #define __HIPPO_CANVAS_GRADIENT_H__ /* A canvas item that renders a gradient */ #include "hippo-canvas-item.h" #include G_BEGIN_DECLS typedef struct _HippoCanvasGradient HippoCanvasGradient; typedef struct _HippoCanvasGradientClass HippoCanvasGradientClass; #define HIPPO_TYPE_CANVAS_GRADIENT (hippo_canvas_gradient_get_type ()) #define HIPPO_CANVAS_GRADIENT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_CANVAS_GRADIENT, HippoCanvasGradient)) #define HIPPO_CANVAS_GRADIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), HIPPO_TYPE_CANVAS_GRADIENT, HippoCanvasGradientClass)) #define HIPPO_IS_CANVAS_GRADIENT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_CANVAS_GRADIENT)) #define HIPPO_IS_CANVAS_GRADIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), HIPPO_TYPE_CANVAS_GRADIENT)) #define HIPPO_CANVAS_GRADIENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), HIPPO_TYPE_CANVAS_GRADIENT, HippoCanvasGradientClass)) GType hippo_canvas_gradient_get_type (void) G_GNUC_CONST; HippoCanvasItem* hippo_canvas_gradient_new (void); G_END_DECLS #endif /* __HIPPO_CANVAS_GRADIENT_H__ */ hippo-canvas-0.3.1/common/hippo/hippo-canvas-box.c0000664000076400007640000052060311404421020016761 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include #include "hippo-canvas-type-builtins.h" #include "hippo-canvas-internal.h" #include "hippo-canvas-box.h" #include "hippo-canvas-layout.h" #include "hippo-canvas-container.h" #include "hippo-canvas-style.h" #define HIPPO_CANVAS_DEFAULT_COLOR 0x000000ff #define HIPPO_CANVAS_DEFAULT_BACKGROUND_COLOR 0xffffff00 typedef struct { int minimum; int natural; int adjustment; unsigned int does_not_fit : 1; } AdjustInfo; typedef struct { double border[4]; double padding[4]; } Borders; static void hippo_canvas_box_init (HippoCanvasBox *box); static void hippo_canvas_box_class_init (HippoCanvasBoxClass *klass); static void hippo_canvas_box_iface_init (HippoCanvasItemIface *klass); static void hippo_canvas_box_iface_init_context (HippoCanvasContextIface *klass); static void hippo_canvas_box_iface_init_container (HippoCanvasContainerIface *klass); static void hippo_canvas_box_dispose (GObject *object); static void hippo_canvas_box_finalize (GObject *object); static void hippo_canvas_box_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); static void hippo_canvas_box_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); /* Canvas context methods */ static PangoLayout* hippo_canvas_box_create_layout (HippoCanvasContext *context); static cairo_surface_t* hippo_canvas_box_create_surface (HippoCanvasContext *context, cairo_content_t content, int width, int height); static cairo_surface_t* hippo_canvas_box_load_image (HippoCanvasContext *context, const char *image_name); static guint32 hippo_canvas_box_get_color (HippoCanvasContext *context, HippoStockColor color); static void hippo_canvas_box_register_widget_item (HippoCanvasContext *context, HippoCanvasItem *item); static void hippo_canvas_box_unregister_widget_item (HippoCanvasContext *context, HippoCanvasItem *item); static void hippo_canvas_box_translate_to_widget (HippoCanvasContext *context, HippoCanvasItem *item, int *x_p, int *y_p); static void hippo_canvas_box_translate_to_screen (HippoCanvasContext *context, HippoCanvasItem *item, int *x_p, int *y_p); static double hippo_canvas_box_get_resolution (HippoCanvasContext *context); static HippoCanvasStyle * hippo_canvas_box_get_style (HippoCanvasContext *context); static PangoFontDescription *hippo_canvas_box_get_font (HippoCanvasContext *context); HippoAnimationManager * hippo_canvas_box_get_animation_manager (HippoCanvasContext *context); static void hippo_canvas_box_style_changed (HippoCanvasContext *context, gboolean resize_needed); /* Canvas container methods */ static gboolean hippo_canvas_box_get_child_visible (HippoCanvasContainer *container, HippoCanvasItem *child); static void hippo_canvas_box_set_child_visible (HippoCanvasContainer *container, HippoCanvasItem *child, gboolean visible); /* Canvas item methods */ static HippoCanvasContext* hippo_canvas_box_get_context (HippoCanvasItem *item); static void hippo_canvas_box_set_context (HippoCanvasItem *item, HippoCanvasContext *context); static void hippo_canvas_box_set_parent (HippoCanvasItem *item, HippoCanvasContainer *container); static HippoCanvasContainer* hippo_canvas_box_get_parent (HippoCanvasItem *item); static void hippo_canvas_box_paint (HippoCanvasItem *item, cairo_t *cr, GdkRegion *damaged_region); static void hippo_canvas_box_get_width_request (HippoCanvasItem *item, int *min_width_p, int *natural_width_p); static void hippo_canvas_box_get_height_request (HippoCanvasItem *item, int for_width, int *min_height_p, int *natural_height_p); static void hippo_canvas_box_allocate (HippoCanvasItem *item, int width, int height, gboolean origin_changed); static void hippo_canvas_box_get_allocation (HippoCanvasItem *item, int *width_p, int *height_p); static gboolean hippo_canvas_box_button_press_event (HippoCanvasItem *item, HippoEvent *event); static gboolean hippo_canvas_box_button_release_event(HippoCanvasItem *item, HippoEvent *event); static gboolean hippo_canvas_box_motion_notify_event (HippoCanvasItem *item, HippoEvent *event); static gboolean hippo_canvas_box_scroll_event (HippoCanvasItem *item, HippoEvent *event); static void hippo_canvas_box_request_changed (HippoCanvasItem *item); static gboolean hippo_canvas_box_get_needs_request (HippoCanvasItem *canvas_item); static char* hippo_canvas_box_get_tooltip (HippoCanvasItem *item, int x, int y, HippoRectangle *for_area); static HippoCanvasPointer hippo_canvas_box_get_pointer (HippoCanvasItem *item, int x, int y); /* Canvas box methods */ static void hippo_canvas_box_paint_background (HippoCanvasBox *box, cairo_t *cr, GdkRegion *damaged_region); static void hippo_canvas_box_paint_children (HippoCanvasBox *box, cairo_t *cr, GdkRegion *damaged_region); static void hippo_canvas_box_get_content_width_request (HippoCanvasBox *box, int *min_width_p, int *natural_width_p); static void hippo_canvas_box_get_content_height_request (HippoCanvasBox *box, int for_width, int *min_width_p, int *natural_width_p); typedef struct _BoxChildQDataNode BoxChildQDataNode; struct _BoxChildQDataNode { GQuark key; gpointer data; GDestroyNotify notify; BoxChildQDataNode *next; }; typedef struct { HippoCanvasBoxChild public; guint ref_count; HippoCanvasBox *box; /* back-pointer to parent */ /* allocated x, y */ int x; int y; /* cache of last-requested sizes */ int min_width; /* -1 if invalid */ int natural_width; /* always valid and >= 0 when min_width is valid */ int min_height; /* -1 if invalid */ int natural_height; /* always valid and >= 0 when min_height is valid */ int height_request_for_width; /* width the height_request is valid for */ guint requesting : 1; /* used to detect bugs */ /* Whether the mouse is over the child */ guint hovering : 1; /* mouse button click tracking */ guint left_release_pending : 1; guint middle_release_pending : 1; guint right_release_pending : 1; /* Layout manager data */ BoxChildQDataNode *qdata; } BoxChildPrivate; enum { HOVERING_CHANGED, LAST_SIGNAL }; static int signals[LAST_SIGNAL]; enum { PROP_0, PROP_ID, PROP_CLASSES, PROP_ORIENTATION, PROP_PADDING_TOP, PROP_PADDING_BOTTOM, PROP_PADDING_LEFT, PROP_PADDING_RIGHT, PROP_PADDING, PROP_BORDER_TOP, PROP_BORDER_BOTTOM, PROP_BORDER_LEFT, PROP_BORDER_RIGHT, PROP_BORDER, PROP_BOX_WIDTH, PROP_BOX_HEIGHT, PROP_XALIGN, PROP_YALIGN, PROP_BACKGROUND_COLOR, PROP_BACKGROUND_COLOR_SET, PROP_BORDER_COLOR, PROP_BORDER_COLOR_SET, PROP_SPACING, PROP_COLOR, PROP_COLOR_SET, PROP_FONT, PROP_FONT_DESC, PROP_TOOLTIP, PROP_DEBUG_NAME }; G_DEFINE_TYPE_WITH_CODE(HippoCanvasBox, hippo_canvas_box, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE(HIPPO_TYPE_CANVAS_ITEM, hippo_canvas_box_iface_init); G_IMPLEMENT_INTERFACE(HIPPO_TYPE_CANVAS_CONTEXT, hippo_canvas_box_iface_init_context); G_IMPLEMENT_INTERFACE(HIPPO_TYPE_CANVAS_CONTAINER, hippo_canvas_box_iface_init_container)); static void hippo_canvas_box_iface_init(HippoCanvasItemIface *klass) { klass->get_context = hippo_canvas_box_get_context; klass->set_context = hippo_canvas_box_set_context; klass->set_parent = hippo_canvas_box_set_parent; klass->get_parent = hippo_canvas_box_get_parent; klass->paint = hippo_canvas_box_paint; klass->get_width_request = hippo_canvas_box_get_width_request; klass->get_height_request = hippo_canvas_box_get_height_request; klass->allocate = hippo_canvas_box_allocate; klass->get_allocation = hippo_canvas_box_get_allocation; klass->button_press_event = hippo_canvas_box_button_press_event; klass->button_release_event = hippo_canvas_box_button_release_event; klass->motion_notify_event = hippo_canvas_box_motion_notify_event; klass->scroll_event = hippo_canvas_box_scroll_event; klass->request_changed = hippo_canvas_box_request_changed; klass->get_needs_request = hippo_canvas_box_get_needs_request; klass->get_tooltip = hippo_canvas_box_get_tooltip; klass->get_pointer = hippo_canvas_box_get_pointer; } static void hippo_canvas_box_iface_init_context (HippoCanvasContextIface *klass) { klass->create_layout = hippo_canvas_box_create_layout; klass->create_surface = hippo_canvas_box_create_surface; klass->load_image = hippo_canvas_box_load_image; klass->get_color = hippo_canvas_box_get_color; klass->register_widget_item = hippo_canvas_box_register_widget_item; klass->unregister_widget_item = hippo_canvas_box_unregister_widget_item; klass->translate_to_widget = hippo_canvas_box_translate_to_widget; klass->translate_to_screen = hippo_canvas_box_translate_to_screen; klass->get_style = hippo_canvas_box_get_style; klass->get_resolution = hippo_canvas_box_get_resolution; klass->get_font = hippo_canvas_box_get_font; klass->get_animation_manager = hippo_canvas_box_get_animation_manager; klass->style_changed = hippo_canvas_box_style_changed; } static void hippo_canvas_box_iface_init_container (HippoCanvasContainerIface *klass) { klass->get_child_visible = hippo_canvas_box_get_child_visible; klass->set_child_visible = hippo_canvas_box_set_child_visible; } static void hippo_canvas_box_init(HippoCanvasBox *box) { box->orientation = HIPPO_ORIENTATION_VERTICAL; box->x_align = HIPPO_ALIGNMENT_FILL; box->y_align = HIPPO_ALIGNMENT_FILL; box->box_width = -1; box->box_height = -1; box->content_min_width = -1; box->content_min_height = -1; box->needs_width_request = TRUE; /* be sure we do at least one allocation */ box->needs_height_request = TRUE; } static void hippo_canvas_box_class_init(HippoCanvasBoxClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->set_property = hippo_canvas_box_set_property; object_class->get_property = hippo_canvas_box_get_property; object_class->dispose = hippo_canvas_box_dispose; object_class->finalize = hippo_canvas_box_finalize; klass->paint_background = hippo_canvas_box_paint_background; klass->paint_children = hippo_canvas_box_paint_children; klass->get_content_width_request = hippo_canvas_box_get_content_width_request; klass->get_content_height_request = hippo_canvas_box_get_content_height_request; signals[HOVERING_CHANGED] = g_signal_new ("hovering-changed", G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(HippoCanvasBoxClass, hovering_changed), NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, 1, G_TYPE_BOOLEAN); g_object_class_override_property (object_class, PROP_ID, "id"); g_object_class_override_property (object_class, PROP_CLASSES, "classes"); /** * HippoCanvasBox:orientation * * A box can stack items vertically #HIPPO_ORIENTATION_VERTICAL, like #GtkVBox, * or put them in a horizontal row, #HIPPO_ORIENTATION_HORIZONTAL, like #GtkHBox. * */ g_object_class_install_property(object_class, PROP_ORIENTATION, g_param_spec_enum("orientation", _("Orientation"), _("Direction of the box"), HIPPO_TYPE_ORIENTATION, HIPPO_ORIENTATION_VERTICAL, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasBox:padding-top * * Space inside the background color, on the top edge. Contrast with the * border, which is outside the background color. * */ g_object_class_install_property(object_class, PROP_PADDING_TOP, g_param_spec_int("padding-top", _("Top Padding"), _("Padding above the box"), 0, 255, 0, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasBox:padding-bottom * * Space inside the background color, on the bottom edge. Contrast with the * border, which is outside the background color. * */ g_object_class_install_property(object_class, PROP_PADDING_BOTTOM, g_param_spec_int("padding-bottom", _("Bottom Padding"), _("Padding below the box"), 0, 255, 0, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasBox:padding-left * * Space inside the background color, on the left edge. Contrast with the * border, which is outside the background color. * */ g_object_class_install_property(object_class, PROP_PADDING_LEFT, g_param_spec_int("padding-left", _("Left Padding"), _("Padding to left of the box"), 0, 255, 0, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasBox:padding-right * * Space inside the background color, on the right edge. Contrast with the * border, which is outside the background color. * */ g_object_class_install_property(object_class, PROP_PADDING_RIGHT, g_param_spec_int("padding-right", _("Right Padding"), _("Padding to right of the box"), 0, 255, 0, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasBox:padding * * Write-only convenience property to set padding-top, * padding-bottom, padding-left, and padding-right all at once. * */ g_object_class_install_property(object_class, PROP_PADDING, g_param_spec_int("padding", _("Padding"), _("Set all four paddings at once"), 0, 255, 0, G_PARAM_WRITABLE)); /** * HippoCanvasBox:border-top * * Space outside the background color, on the top edge. Contrast with the * padding, which is inside the background color. */ g_object_class_install_property(object_class, PROP_BORDER_TOP, g_param_spec_int("border-top", _("Top Border"), _("Border above the box"), 0, 255, 0, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasBox:border-bottom * * Space outside the background color, on the bottom edge. Contrast with the * padding, which is inside the background color. */ g_object_class_install_property(object_class, PROP_BORDER_BOTTOM, g_param_spec_int("border-bottom", _("Bottom Border"), _("Border below the box"), 0, 255, 0, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasBox:border-left * * Space outside the background color, on the left edge. Contrast with the * padding, which is inside the background color. */ g_object_class_install_property(object_class, PROP_BORDER_LEFT, g_param_spec_int("border-left", _("Left Border"), _("Border to left of the box"), 0, 255, 0, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasBox:border-right * * Space outside the background color, on the right edge. Contrast with the * padding, which is inside the background color. */ g_object_class_install_property(object_class, PROP_BORDER_RIGHT, g_param_spec_int("border-right", _("Right Border"), _("Border to right of the box"), 0, 255, 0, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasBox:border * * Write-only convenience property to set border-top, * border-bottom, border-left, and border-right all at once. * */ g_object_class_install_property(object_class, PROP_BORDER, g_param_spec_int("border", _("Border"), _("Set all four borders at once"), 0, 255, 0, G_PARAM_WRITABLE)); /** * HippoCanvasBox:box-width * * This forces both the natural and minimum width (for the entire * box, including border and padding). It should probably be * deprecated in favor of separate natural-width and min-width * properties, and potentially those properties should not include * the border and/or padding. Feel free to analyze and then resolve * the issue and send us a patch! * */ g_object_class_install_property(object_class, PROP_BOX_WIDTH, g_param_spec_int("box-width", _("Box Width"), _("Width request of the box including padding/border, or -1 to use natural width"), -1, G_MAXINT, -1, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasBox:box-height * * This forces both the natural and minimum height (for the entire * box, including border and padding). It should probably be * deprecated in favor of separate natural-height and min-height * properties, and potentially those properties should not include * the border and/or padding. Feel free to analyze and then resolve * the issue and send us a patch! * */ g_object_class_install_property(object_class, PROP_BOX_HEIGHT, g_param_spec_int("box-height", _("Box Height"), _("Height request of the box including padding/border, or -1 to use natural height"), -1, G_MAXINT, -1, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasBox:xalign * * Remember that most canvas items, including text and image * items, derive from #HippoCanvasBox. The alignment properties * determine whether the "content" of the box - which may be the * child items, image, text, or other main point of the canvas * item you're using - will be aligned start (left/top), aligned center, * aligned end (right/bottom), or stretched to fill the whole box. * * Alignment only matters if the box gets extra space (more space than * the natural size of the item). */ g_object_class_install_property(object_class, PROP_XALIGN, g_param_spec_enum("xalign", _("X Alignment"), _("What to do with extra horizontal space"), HIPPO_TYPE_ITEM_ALIGNMENT, HIPPO_ALIGNMENT_FILL, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasBox:yalign * * Remember that most canvas items, including text and image * items, derive from #HippoCanvasBox. The alignment properties * determine whether the "content" of the box - which may be the * child items, image, text, or other main point of the canvas * item you're using - will be aligned start (left/top), aligned center, * aligned end (right/bottom), or stretched to fill the whole box. * * Alignment only matters if the box gets extra space (more space than * the natural size of the item). */ g_object_class_install_property(object_class, PROP_YALIGN, g_param_spec_enum("yalign", _("Y Alignment"), _("What to do with extra vertical space"), HIPPO_TYPE_ITEM_ALIGNMENT, HIPPO_ALIGNMENT_FILL, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasBox:background-color * * Sets an RGBA background color (pack the color into 32-bit unsigned int, just type * "0xff0000ff" for example for opaque red). The background color covers the * padding but not the border of the box. * * This property is ignored if the background-color-set property is %FALSE. */ g_object_class_install_property(object_class, PROP_BACKGROUND_COLOR, g_param_spec_uint("background-color", _("Background Color"), _("32-bit RGBA background color"), 0, G_MAXUINT, HIPPO_CANVAS_DEFAULT_BACKGROUND_COLOR, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasBox:background-color-set * * Determines whether the background-color property is used, or whether the color is determined * from the item's style. This flag gets set automatically if you write to the background-color * property. */ g_object_class_install_property(object_class, PROP_BACKGROUND_COLOR_SET, g_param_spec_boolean("background-color-set", _("Background Color Set"), _("Whether a background color was set"), FALSE, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasBox:border-color * * Sets an RGBA border color (pack the color into 32-bit unsigned int, just type * "0xff0000ff" for example for opaque red). The border color covers the * border of the box; you have to set the border to a nonzero size with the * border property. * * Frequently, the border is transparent and just used for spacing. */ g_object_class_install_property(object_class, PROP_BORDER_COLOR, g_param_spec_uint("border-color", _("Border Color"), _("32-bit RGBA border color"), 0, G_MAXUINT, HIPPO_CANVAS_DEFAULT_BACKGROUND_COLOR, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasBox:border-color-set * * Determines whether the border-color property is used, or whether the color is determined * from the item's style. This flag gets set automatically if you write to the border-color * property. */ g_object_class_install_property(object_class, PROP_BORDER_COLOR_SET, g_param_spec_boolean("border-color-set", _("Border Color Set"), _("Whether a border color was set"), FALSE, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasBox:spacing * * The spacing is a gap to leave between all child items in the box. If you want a gap * in only one place, try setting a transparent border on one side of the child, rather than * setting the spacing. */ g_object_class_install_property(object_class, PROP_SPACING, g_param_spec_int("spacing", _("Spacing"), _("Spacing between items in the box"), 0, 255, 0, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasBox:color * * This property only matters if the subclass of #HippoCanvasBox you are using supports * it. Specifically text items use this color for the text color. * * The value is an RGBA color, i.e. a 32-bit unsigned int, * "0xff0000ff" for example for opaque red. * * This property is ignored if the color-set property is %FALSE. */ g_object_class_install_property(object_class, PROP_COLOR, g_param_spec_uint("color", _("Foreground Color"), _("32-bit RGBA foreground text color"), 0, G_MAXUINT, HIPPO_CANVAS_DEFAULT_COLOR, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasBox:color-set * * Determines whether the color property is used, or whether the color is determined * from the item's style. This flag gets set automatically if you write to the color * property. */ g_object_class_install_property(object_class, PROP_COLOR_SET, g_param_spec_boolean("color-set", _("Foreground Color Set"), _("Whether a foreground color was set"), FALSE, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasBox:font * * The font to use as a Pango font description string. Only matters for text items, or for * boxes that contain text items, overriding any font from the item's style. The font will not * be inherited by child items. * * This property is just a way to set the font-desc property, using a string * instead of a #PangoFontDescription object. */ g_object_class_install_property(object_class, PROP_FONT, g_param_spec_string("font", _("Font"), _("Font description as a string"), NULL, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasBox:font-desc * * The font to use for text in the item, overriding any font from the style. The font * will not be inherited by child items. */ g_object_class_install_property(object_class, PROP_FONT_DESC, g_param_spec_boxed("font-desc", _("Font Description"), _("Font description as a PangoFontDescription object"), PANGO_TYPE_FONT_DESCRIPTION, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasBox:tooltip * * A string to display as a tooltip on this canvas item. * */ g_object_class_install_property(object_class, PROP_TOOLTIP, g_param_spec_string("tooltip", _("Tooltip"), _("Tooltip to display on mouse hover"), NULL, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasBox:debug-name * * If set, debug-spew detailed information about size negotiation, prefixed with this name */ g_object_class_install_property(object_class, PROP_DEBUG_NAME, g_param_spec_string("debug_name", _("Debug Name"), _("Use this string to mark size negotiation debug spew"), NULL, G_PARAM_READABLE | G_PARAM_WRITABLE)); } static void clear_style(HippoCanvasBox *box) { if (box->style) { g_object_unref(box->style); box->style = NULL; } } static void hippo_canvas_box_dispose(GObject *object) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(object); hippo_canvas_box_clear(box); hippo_canvas_box_set_layout(box, NULL); hippo_canvas_box_set_theme(box, NULL); clear_style(box); hippo_canvas_item_emit_destroy(HIPPO_CANVAS_ITEM(object)); G_OBJECT_CLASS(hippo_canvas_box_parent_class)->dispose(object); } static void hippo_canvas_box_finalize(GObject *object) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(object); g_assert(box->children == NULL); /* should have vanished in dispose */ g_free(box->tooltip); G_OBJECT_CLASS(hippo_canvas_box_parent_class)->finalize(object); } HippoCanvasItem* hippo_canvas_box_new(void) { HippoCanvasBox *box = g_object_new(HIPPO_TYPE_CANVAS_BOX, NULL); return HIPPO_CANVAS_ITEM(box); } static void set_font_description(HippoCanvasBox *box, PangoFontDescription *font_desc, gboolean copy) { if (box->font_desc == font_desc) return; if (box->font_desc != NULL) pango_font_description_free(box->font_desc); if (copy && font_desc != NULL) box->font_desc = pango_font_description_copy(font_desc); else box->font_desc = font_desc; g_object_notify(G_OBJECT(box), "font-desc"); g_object_notify(G_OBJECT(box), "font"); } static void hippo_canvas_box_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { HippoCanvasBox *box; gboolean need_repaint; gboolean need_resize; box = HIPPO_CANVAS_BOX(object); need_resize = TRUE; /* for most of them it's true */ need_repaint = TRUE; /* for most of them it's true */ switch (prop_id) { case PROP_ID: { const char *str = g_value_get_string(value); if (str == box->element_id || (str && box->element_id && strcmp(str, box->element_id) == 0)) return; if (box->element_id) g_free(box->element_id); box->element_id = g_strdup(str); clear_style(box); hippo_canvas_context_emit_style_changed(HIPPO_CANVAS_CONTEXT(box), TRUE); } break; case PROP_CLASSES: { const char *str = g_value_get_string(value); if (str == box->element_class || (str && box->element_class && strcmp(str, box->element_class) == 0)) return; if (box->element_class) g_free(box->element_class); box->element_class = g_strdup(str); clear_style(box); hippo_canvas_context_emit_style_changed(HIPPO_CANVAS_CONTEXT(box), TRUE); } break; case PROP_ORIENTATION: box->orientation = g_value_get_enum(value); need_repaint = FALSE; break; case PROP_PADDING_TOP: { int p = g_value_get_int(value); if (p >= 0) { box->padding_top = p; box->padding_top_set = TRUE; } else { box->padding_top_set = FALSE; } } break; case PROP_PADDING_BOTTOM: { int p = g_value_get_int(value); if (p >= 0) { box->padding_bottom = p; box->padding_bottom_set = TRUE; } else { box->padding_bottom_set = FALSE; } } break; case PROP_PADDING_LEFT: { int p = g_value_get_int(value); if (p >= 0) { box->padding_left = p; box->padding_left_set = TRUE; } else { box->padding_left_set = FALSE; } } break; case PROP_PADDING_RIGHT: { int p = g_value_get_int(value); if (p >= 0) { box->padding_right = p; box->padding_right_set = TRUE; } else { box->padding_right_set = FALSE; } } break; case PROP_PADDING: { int p = g_value_get_int(value); if (p >= 0) { box->padding_top = box->padding_bottom = box->padding_left = box->padding_right = p; box->padding_top_set = box->padding_bottom_set = box->padding_left_set = box->padding_right_set = TRUE; } else { box->padding_top_set = box->padding_bottom_set = box->padding_left_set = box->padding_right_set = FALSE; } } break; case PROP_BORDER_TOP: { int p = g_value_get_int(value); if (p >= 0) { box->border_top = p; box->border_top_set = TRUE; } else { box->border_top_set = FALSE; } } break; case PROP_BORDER_BOTTOM: { int p = g_value_get_int(value); if (p >= 0) { box->border_bottom = p; box->border_bottom_set = TRUE; } else { box->border_bottom_set = FALSE; } } break; case PROP_BORDER_LEFT: { int p = g_value_get_int(value); if (p >= 0) { box->border_left = p; box->border_left_set = TRUE; } else { box->border_left_set = FALSE; } } break; case PROP_BORDER_RIGHT: { int p = g_value_get_int(value); if (p >= 0) { box->border_right = p; box->border_right_set = TRUE; } else { box->border_right_set = FALSE; } } box->border_right = g_value_get_int(value); break; case PROP_BORDER: { int p = g_value_get_int(value); if (p >= 0) { box->border_top = box->border_bottom = box->border_left = box->border_right = p; box->border_top_set = box->border_bottom_set = box->border_left_set = box->border_right_set = TRUE; } else { box->border_top_set = box->border_bottom_set = box->border_left_set = box->border_right_set = FALSE; } } break; case PROP_BOX_WIDTH: box->box_width = g_value_get_int(value); need_repaint = FALSE; break; case PROP_BOX_HEIGHT: box->box_height = g_value_get_int(value); need_repaint = FALSE; break; case PROP_XALIGN: box->x_align = g_value_get_enum(value); break; case PROP_YALIGN: box->y_align = g_value_get_enum(value); break; case PROP_BACKGROUND_COLOR: box->background_color_rgba = g_value_get_uint(value); box->background_color_set = TRUE; g_object_notify(object, "background-color-set"); hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(box), 0, 0, -1, -1); need_resize = FALSE; break; case PROP_BACKGROUND_COLOR_SET: box->background_color_set = g_value_get_boolean(value); hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(box), 0, 0, -1, -1); need_resize = FALSE; break; case PROP_BORDER_COLOR: box->border_color_rgba = g_value_get_uint(value); box->border_color_set = TRUE; g_object_notify(object, "border-color-set"); hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(box), 0, 0, -1, -1); need_resize = FALSE; break; case PROP_BORDER_COLOR_SET: box->border_color_set = g_value_get_boolean(value); hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(box), 0, 0, -1, -1); need_resize = FALSE; break; case PROP_SPACING: box->spacing = g_value_get_int(value); need_repaint = FALSE; break; case PROP_COLOR: box->color_rgba = g_value_get_uint(value); box->color_set = TRUE; g_object_notify(object, "color-set"); hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(box), 0, 0, -1, -1); need_resize = FALSE; break; case PROP_COLOR_SET: box->color_set = g_value_get_boolean(value); hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(box), 0, 0, -1, -1); need_resize = FALSE; break; case PROP_FONT: { const char *str = g_value_get_string(value); if (str != NULL) set_font_description(box, pango_font_description_from_string(str), FALSE); else set_font_description(box, NULL, FALSE); } break; case PROP_FONT_DESC: set_font_description(box, g_value_get_boxed(value), TRUE); break; case PROP_TOOLTIP: { const char *new_tip = g_value_get_string(value); if (new_tip == box->tooltip || (new_tip && box->tooltip && strcmp(new_tip, box->tooltip) == 0)) return; g_free(box->tooltip); box->tooltip = g_strdup(new_tip); hippo_canvas_item_emit_tooltip_changed(HIPPO_CANVAS_ITEM(box)); } need_resize = FALSE; need_repaint = FALSE; break; case PROP_DEBUG_NAME: { const char *new_name = g_value_get_string(value); if (new_name == box->debug_name || (new_name && box->debug_name && strcmp(new_name, box->debug_name) == 0)) return; g_free(box->debug_name); box->debug_name = g_strdup(new_name); } need_resize = FALSE; need_repaint = FALSE; break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } if (need_repaint) hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(box), 0, 0, -1, -1); if (need_resize) hippo_canvas_item_emit_request_changed(HIPPO_CANVAS_ITEM(box)); } static void hippo_canvas_box_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { HippoCanvasBox *box; box = HIPPO_CANVAS_BOX (object); switch (prop_id) { case PROP_ID: g_value_set_string(value, box->element_id); break; case PROP_CLASSES: g_value_set_string(value, box->element_class); break; case PROP_ORIENTATION: g_value_set_enum(value, box->orientation); break; case PROP_PADDING_TOP: g_value_set_int(value, box->padding_top_set ? box->padding_top : -1); break; case PROP_PADDING_BOTTOM: g_value_set_int(value, box->padding_bottom_set ? box->padding_bottom : -1); break; case PROP_PADDING_LEFT: g_value_set_int(value, box->padding_left_set ? box->padding_left : -1); break; case PROP_PADDING_RIGHT: g_value_set_int(value, box->padding_right_set ? box->padding_right : -1); break; case PROP_BORDER_TOP: g_value_set_int(value, box->border_top_set ? box->border_top : -1); break; case PROP_BORDER_BOTTOM: g_value_set_int(value, box->border_bottom_set ? box->border_bottom : -1); break; case PROP_BORDER_LEFT: g_value_set_int(value, box->border_left_set ? box->border_left : -1); break; case PROP_BORDER_RIGHT: g_value_set_int(value, box->border_right_set ? box->border_right : -1); break; case PROP_BOX_WIDTH: g_value_set_int(value, box->box_width); break; case PROP_BOX_HEIGHT: g_value_set_int(value, box->box_height); break; case PROP_XALIGN: g_value_set_enum(value, box->x_align); break; case PROP_YALIGN: g_value_set_enum(value, box->y_align); break; case PROP_BACKGROUND_COLOR: g_value_set_uint(value, box->background_color_rgba); break; case PROP_BACKGROUND_COLOR_SET: g_value_set_boolean(value, box->background_color_set); break; case PROP_BORDER_COLOR: g_value_set_uint(value, box->border_color_rgba); break; case PROP_BORDER_COLOR_SET: g_value_set_boolean(value, box->border_color_set); break; case PROP_SPACING: g_value_set_int(value, box->spacing); break; case PROP_COLOR: g_value_set_uint(value, box->color_rgba); break; case PROP_COLOR_SET: g_value_set_boolean(value, box->color_set); break; case PROP_FONT: if (box->font_desc) { char *str = pango_font_description_to_string(box->font_desc); g_value_take_string(value, str); } else { g_value_set_string(value, NULL); } break; case PROP_FONT_DESC: g_value_set_boxed(value, box->font_desc); break; case PROP_TOOLTIP: g_value_set_string(value, box->tooltip); break; case PROP_DEBUG_NAME: g_value_set_string(value, box->debug_name); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } } static BoxChildPrivate* find_child(HippoCanvasBox *box, HippoCanvasItem *item) { GSList *link; for (link = box->children; link != NULL; link = link->next) { HippoCanvasBoxChild *child = link->data; if (child->item == item) return (BoxChildPrivate *)child; } return NULL; } static PangoLayout* hippo_canvas_box_create_layout(HippoCanvasContext *context) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(context); PangoLayout *layout; g_assert(box->context != NULL); /* Chain to our parent context */ layout = hippo_canvas_context_create_layout(box->context); return layout; } static cairo_surface_t* hippo_canvas_box_create_surface(HippoCanvasContext *context, cairo_content_t content, int width, int height) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(context); g_assert(box->context != NULL); /* Chain to our parent context */ return hippo_canvas_context_create_surface(box->context, content, width, height); } static cairo_surface_t* hippo_canvas_box_load_image(HippoCanvasContext *context, const char *image_name) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(context); g_assert(box->context != NULL); /* just chain to our parent context */ return hippo_canvas_context_load_image(box->context, image_name); } static guint32 hippo_canvas_box_get_color(HippoCanvasContext *context, HippoStockColor color) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(context); g_assert(box->context != NULL); /* chain to our parent context */ return hippo_canvas_context_get_color(box->context, color); } static void hippo_canvas_box_register_widget_item(HippoCanvasContext *context, HippoCanvasItem *item) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(context); g_assert(box->context != NULL); hippo_canvas_context_register_widget_item(box->context, item); } static void hippo_canvas_box_unregister_widget_item (HippoCanvasContext *context, HippoCanvasItem *item) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(context); g_assert(box->context != NULL); hippo_canvas_context_unregister_widget_item(box->context, item); } static void hippo_canvas_box_translate_to_widget(HippoCanvasContext *context, HippoCanvasItem *item, int *x_p, int *y_p) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(context); BoxChildPrivate *child; g_assert(box->context != NULL); child = find_child(box, item); g_assert(child != NULL); if (x_p) *x_p += child->x; if (y_p) *y_p += child->y; hippo_canvas_context_translate_to_widget(box->context, HIPPO_CANVAS_ITEM(box), x_p, y_p); } static void hippo_canvas_box_translate_to_screen(HippoCanvasContext *context, HippoCanvasItem *item, int *x_p, int *y_p) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(context); BoxChildPrivate *child; g_assert(box->context != NULL); child = find_child(box, item); g_assert(child != NULL); if (x_p) *x_p += child->x; if (y_p) *y_p += child->y; hippo_canvas_context_translate_to_screen(box->context, HIPPO_CANVAS_ITEM(box), x_p, y_p); } static HippoCanvasStyle * hippo_canvas_box_get_style(HippoCanvasContext *context) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(context); if (box->style == NULL) { if (box->theme == NULL) { box->style = hippo_canvas_style_new(box->context, hippo_canvas_context_get_style(box->context), NULL, /* Inherit theme from parent */ G_OBJECT_TYPE(box), box->element_id, box->element_class); } else { box->style = hippo_canvas_style_new(box->context, NULL, box->theme, G_OBJECT_TYPE(box), box->element_id, box->element_class); } hippo_canvas_style_set_link_type(box->style, box->link_type); } return box->style; } static double hippo_canvas_box_get_resolution(HippoCanvasContext *context) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(context); return hippo_canvas_context_get_resolution(box->context); } static PangoFontDescription * hippo_canvas_box_get_font(HippoCanvasContext *context) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(context); return hippo_canvas_context_get_font(box->context); } HippoAnimationManager * hippo_canvas_box_get_animation_manager (HippoCanvasContext *context) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(context); return hippo_canvas_context_get_animation_manager(box->context); } static void hippo_canvas_box_style_changed(HippoCanvasContext *context, gboolean resize_needed) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(context); if (resize_needed) hippo_canvas_item_emit_request_changed(HIPPO_CANVAS_ITEM(box)); hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(box), 0, 0, -1, -1); } static void on_context_style_changed(HippoCanvasContext *context, gboolean resize_needed, HippoCanvasBox *box) { if (box->theme == NULL) { clear_style(box); /* If our context's style changed, then our own style also * changed since we chain up to the outer context. */ hippo_canvas_context_emit_style_changed(HIPPO_CANVAS_CONTEXT(box), resize_needed); } } static HippoCanvasContext* hippo_canvas_box_get_context(HippoCanvasItem *item) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(item); return box->context; } static void hippo_canvas_box_set_context(HippoCanvasItem *item, HippoCanvasContext *context) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(item); GSList *link; HippoCanvasContext *child_context; /* this shortcut most importantly catches NULL == NULL */ if (box->context == context) return; clear_style(box); /* Note that we do not ref the context; the parent is responsible for setting * it back to NULL before dropping the ref to the item. * * Also, we set box->context to non-NULL *before* setting child contexts, * so they see a valid context; and set it to NULL *after* setting child * contexts, so they see a valid context again. i.e. the context the * child sees is always valid. */ if (context != NULL) child_context = HIPPO_CANVAS_CONTEXT(box); else child_context = NULL; if (child_context) { box->context = context; /* set to non-NULL before sending to children */ g_signal_connect(G_OBJECT(box->context), "style-changed", G_CALLBACK(on_context_style_changed), box); } for (link = box->children; link != NULL; link = link->next) { BoxChildPrivate *child = link->data; hippo_canvas_item_set_context(child->public.item, child_context); /* clear child state flags */ child->hovering = FALSE; child->left_release_pending = FALSE; child->middle_release_pending = FALSE; child->middle_release_pending = FALSE; } if (child_context == NULL) { g_signal_handlers_disconnect_by_func(G_OBJECT(box->context), G_CALLBACK(on_context_style_changed), box); box->context = context; /* set box context to NULL after removing it from children */ } box->hovering = FALSE; } static void hippo_canvas_box_set_parent (HippoCanvasItem *item, HippoCanvasContainer *container) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(item); /* Note that we do not ref the parent; the parent is responsible for setting * it back to NULL before dropping the ref to the item. */ if (box->parent == container) return; box->parent = container; /* I believe GTK would queue resize here, but we do it in the container_add() equivalent */ } static HippoCanvasContainer* hippo_canvas_box_get_parent (HippoCanvasItem *item) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(item); return box->parent; } void hippo_canvas_box_set_link_type (HippoCanvasBox *box, HippoCanvasLinkType link_type) { g_return_if_fail(HIPPO_IS_CANVAS_BOX(box)); if (link_type == box->link_type) return; box->link_type = link_type; clear_style(box); hippo_canvas_context_emit_style_changed(HIPPO_CANVAS_CONTEXT(box), TRUE); hippo_canvas_item_emit_request_changed(HIPPO_CANVAS_ITEM(box)); hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(box), 0, 0, -1, -1); } static void get_borders(HippoCanvasBox *box, Borders *borders) { HippoCanvasStyle *style = hippo_canvas_context_get_style(HIPPO_CANVAS_CONTEXT(box)); if (box->border_left_set) borders->border[HIPPO_CANVAS_SIDE_LEFT] = box->border_left; else borders->border[HIPPO_CANVAS_SIDE_LEFT] = hippo_canvas_style_get_border_width(style, HIPPO_CANVAS_SIDE_LEFT); if (box->border_right_set) borders->border[HIPPO_CANVAS_SIDE_RIGHT] = box->border_right; else borders->border[HIPPO_CANVAS_SIDE_RIGHT] = hippo_canvas_style_get_border_width(style, HIPPO_CANVAS_SIDE_RIGHT); if (box->border_top_set) borders->border[HIPPO_CANVAS_SIDE_TOP] = box->border_top; else borders->border[HIPPO_CANVAS_SIDE_TOP] = hippo_canvas_style_get_border_width(style, HIPPO_CANVAS_SIDE_TOP); if (box->border_bottom_set) borders->border[HIPPO_CANVAS_SIDE_BOTTOM] = box->border_bottom; else borders->border[HIPPO_CANVAS_SIDE_BOTTOM] = hippo_canvas_style_get_border_width(style, HIPPO_CANVAS_SIDE_BOTTOM); if (box->padding_left_set) borders->padding[HIPPO_CANVAS_SIDE_LEFT] = box->padding_left; else borders->padding[HIPPO_CANVAS_SIDE_LEFT] = hippo_canvas_style_get_padding(style, HIPPO_CANVAS_SIDE_LEFT); if (box->padding_right_set) borders->padding[HIPPO_CANVAS_SIDE_RIGHT] = box->padding_right; else borders->padding[HIPPO_CANVAS_SIDE_RIGHT] = hippo_canvas_style_get_padding(style, HIPPO_CANVAS_SIDE_RIGHT); if (box->padding_top_set) borders->padding[HIPPO_CANVAS_SIDE_TOP] = box->padding_top; else borders->padding[HIPPO_CANVAS_SIDE_TOP] = hippo_canvas_style_get_padding(style, HIPPO_CANVAS_SIDE_TOP); if (box->padding_bottom_set) borders->padding[HIPPO_CANVAS_SIDE_BOTTOM] = box->padding_bottom; else borders->padding[HIPPO_CANVAS_SIDE_BOTTOM] = hippo_canvas_style_get_padding(style, HIPPO_CANVAS_SIDE_BOTTOM); } void hippo_canvas_box_get_background_area (HippoCanvasBox *box, HippoRectangle *area) { Borders borders; get_borders(box, &borders); area->x = borders.border[HIPPO_CANVAS_SIDE_LEFT]; area->y = borders.border[HIPPO_CANVAS_SIDE_TOP]; area->width = box->allocated_width - borders.border[HIPPO_CANVAS_SIDE_LEFT] - borders.border[HIPPO_CANVAS_SIDE_RIGHT]; area->height = box->allocated_height - borders.border[HIPPO_CANVAS_SIDE_TOP] - borders.border[HIPPO_CANVAS_SIDE_BOTTOM]; } static void draw_border(HippoCanvasBox *box, HippoCanvasStyle *style, cairo_t *cr, HippoCanvasSide side, double x, double y, double width, double height) { guint32 border_color_rgba; if (box->border_color_set) border_color_rgba = box->border_color_rgba; else border_color_rgba = hippo_canvas_style_get_border_color(style, side); if ((border_color_rgba & 0xff) == 0) /* Transparent */ return; hippo_cairo_set_source_rgba32(cr, border_color_rgba); cairo_rectangle(cr, x, y, width, height); /* In the common case of all the borders the same, we could do a single * fill, and optimize things a bit, but we'll leave the complexity aside * for now. */ cairo_fill(cr); } static void hippo_canvas_box_paint_background(HippoCanvasBox *box, cairo_t *cr, GdkRegion *damaged_region) { HippoCanvasStyle *style = hippo_canvas_context_get_style(HIPPO_CANVAS_CONTEXT(box)); HippoCanvasThemeImage *background_theme_image; guint background_color_rgba; Borders borders; if (box->background_color_set) background_color_rgba = box->background_color_rgba; else background_color_rgba = hippo_canvas_style_get_background_color(style); /* fill background, with html div type semantics - covers entire * item allocation, including padding but not border */ if ((background_color_rgba & 0xff) != 0) { HippoRectangle area; hippo_canvas_box_get_background_area(box, &area); hippo_cairo_set_source_rgba32(cr, background_color_rgba); cairo_rectangle(cr, area.x, area.y, area.width, area.height); cairo_fill(cr); } background_theme_image = hippo_canvas_style_get_background_theme_image(style); if (background_theme_image != NULL) { HippoRectangle area; hippo_canvas_box_get_background_area(box, &area); hippo_canvas_theme_image_render(background_theme_image, cr, area.x, area.y, area.width, area.height); } get_borders(box, &borders); draw_border(box, style, cr, HIPPO_CANVAS_SIDE_TOP, 0, 0, box->allocated_width, borders.border[HIPPO_CANVAS_SIDE_TOP]); draw_border(box, style, cr, HIPPO_CANVAS_SIDE_LEFT, 0, borders.border[HIPPO_CANVAS_SIDE_TOP], borders.border[HIPPO_CANVAS_SIDE_LEFT], box->allocated_height - borders.border[HIPPO_CANVAS_SIDE_TOP] - borders.border[HIPPO_CANVAS_SIDE_BOTTOM]); draw_border(box, style, cr, HIPPO_CANVAS_SIDE_RIGHT, box->allocated_width - borders.border[HIPPO_CANVAS_SIDE_RIGHT], borders.border[HIPPO_CANVAS_SIDE_TOP] , borders.border[HIPPO_CANVAS_SIDE_RIGHT], box->allocated_height - borders.border[HIPPO_CANVAS_SIDE_TOP] - borders.border[HIPPO_CANVAS_SIDE_BOTTOM]); draw_border(box, style, cr, HIPPO_CANVAS_SIDE_BOTTOM, 0, box->allocated_height - borders.border[HIPPO_CANVAS_SIDE_BOTTOM], box->allocated_width, borders.border[HIPPO_CANVAS_SIDE_BOTTOM]); } static void hippo_canvas_box_paint_children(HippoCanvasBox *box, cairo_t *cr, GdkRegion *damaged_region) { GSList *link; /* FIXME there will need to be some z-order control for fixed children, * probably keeping them above all layout children and allowing * ordering within the fixed */ /* Now draw children */ for (link = box->children; link != NULL; link = link->next) { BoxChildPrivate *child = link->data; if (!child->public.visible) continue; /* Fixed children have to be clipped to the box, since we * don't include them in the box's size request there's no * guarantee they are in the box */ if (child->public.fixed) { cairo_save(cr); cairo_rectangle(cr, 0, 0, box->allocated_width, box->allocated_height); cairo_clip(cr); } hippo_canvas_item_process_paint(HIPPO_CANVAS_ITEM(child->public.item), cr, damaged_region, child->x, child->y); if (child->public.fixed) { cairo_restore(cr); } } } static void hippo_canvas_box_paint(HippoCanvasItem *item, cairo_t *cr, GdkRegion *damaged_region) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(item); HippoCanvasBoxClass *klass = HIPPO_CANVAS_BOX_GET_CLASS(box); g_return_if_fail(box->allocated_width > 0 && box->allocated_height > 0); cairo_save(cr); (* klass->paint_background) (box, cr, damaged_region); cairo_restore(cr); if (klass->paint_below_children != NULL) { cairo_save(cr); (* klass->paint_below_children) (box, cr, damaged_region); cairo_restore(cr); } cairo_save(cr); (* klass->paint_children) (box, cr, damaged_region); cairo_restore(cr); if (klass->paint_above_children != NULL) { cairo_save(cr); (* klass->paint_above_children) (box, cr, damaged_region); cairo_restore(cr); } } /* This is intended to not rely on size request/allocation state, * so it can be called from request/allocation methods. * So for example don't use box->allocated_width in here. */ static void get_content_area_horizontal(HippoCanvasBox *box, int requested_content_width, int natural_content_width, int allocated_box_width, int *x_p, int *width_p) { Borders borders; int left; int right; int unpadded_box_width; int content_width; get_borders(box, &borders); left = borders.border[HIPPO_CANVAS_SIDE_LEFT] + borders.padding[HIPPO_CANVAS_SIDE_LEFT]; right = borders.border[HIPPO_CANVAS_SIDE_RIGHT] + borders.padding[HIPPO_CANVAS_SIDE_RIGHT]; g_return_if_fail(requested_content_width >= 0); if (natural_content_width < allocated_box_width) content_width = natural_content_width; else content_width = MAX(requested_content_width, allocated_box_width); unpadded_box_width = allocated_box_width - left - right; switch (box->x_align) { case HIPPO_ALIGNMENT_FILL: if (x_p) *x_p = left; if (width_p) *width_p = unpadded_box_width; break; case HIPPO_ALIGNMENT_START: if (x_p) *x_p = left; if (width_p) *width_p = content_width; break; case HIPPO_ALIGNMENT_END: if (x_p) *x_p = allocated_box_width - right - content_width; if (width_p) *width_p = content_width; break; case HIPPO_ALIGNMENT_CENTER: if (x_p) *x_p = left + (unpadded_box_width - content_width) / 2; if (width_p) *width_p = content_width; break; } } static void get_content_area_vertical(HippoCanvasBox *box, int requested_content_height, int natural_content_height, int allocated_box_height, int *y_p, int *height_p) { Borders borders; int top; int bottom; int unpadded_box_height; int content_height; g_return_if_fail(requested_content_height >= 0); get_borders(box, &borders); top = borders.border[HIPPO_CANVAS_SIDE_TOP] + borders.padding[HIPPO_CANVAS_SIDE_TOP]; bottom = borders.border[HIPPO_CANVAS_SIDE_BOTTOM] + borders.padding[HIPPO_CANVAS_SIDE_BOTTOM]; if (natural_content_height < allocated_box_height) content_height = natural_content_height; else content_height = MAX(requested_content_height, allocated_box_height); unpadded_box_height = allocated_box_height - top - bottom; switch (box->y_align) { case HIPPO_ALIGNMENT_FILL: if (y_p) *y_p = top; if (height_p) *height_p = unpadded_box_height; break; case HIPPO_ALIGNMENT_START: if (y_p) *y_p = top; if (height_p) *height_p = content_height; break; case HIPPO_ALIGNMENT_END: if (y_p) *y_p = allocated_box_height - bottom - content_height; if (height_p) *height_p = content_height; break; case HIPPO_ALIGNMENT_CENTER: if (y_p) *y_p = top + (unpadded_box_height - content_height) / 2; if (height_p) *height_p = content_height; break; } } static void get_content_area(HippoCanvasBox *box, int requested_content_width, int requested_content_height, int natural_content_width, int natural_content_height, int allocated_box_width, int allocated_box_height, int *x_p, int *y_p, int *width_p, int *height_p) { get_content_area_horizontal(box, requested_content_width, natural_content_width, allocated_box_width, x_p, width_p); get_content_area_vertical(box, requested_content_height, natural_content_height, allocated_box_height, y_p, height_p); } static gboolean child_is_expandable(HippoCanvasBoxChild *child, AdjustInfo *adjust) { return child->visible && child->expand && (!child->if_fits || (adjust && !(adjust->does_not_fit))); } static int count_expandable_children(GSList *children, AdjustInfo *adjusts) { int count; int i; GSList *link; count = 0; i = 0; for (link = children; link != NULL; link = link->next) { HippoCanvasBoxChild *child = link->data; /* We assume here that we've prevented via g_warning * any floats/fixed from having expand=TRUE */ if (child_is_expandable(child, adjusts ? &(adjusts[i]) : NULL)) ++count; ++i; } return count; } void hippo_canvas_box_child_get_width_request(HippoCanvasBoxChild *child, int *min_width_p, int *natural_width_p) { BoxChildPrivate *private = (BoxChildPrivate *)child; if (child->item == NULL) { if (min_width_p) *min_width_p = 0; if (natural_width_p) *natural_width_p = 0; return; } if (private->min_width < 0) { if (private->requesting) g_warning("Somehow recursively requesting child %p", child->item); private->requesting = TRUE; hippo_canvas_item_get_width_request(child->item, &private->min_width, &private->natural_width); if (private->min_width < 0 || private->natural_width < 0) g_warning("child %p %s returned width request of %d and %d, at least one <0", child->item, g_type_name_from_instance((GTypeInstance*) child->item), private->min_width, private->natural_width); if (private->natural_width < private->min_width) g_warning("some child says its natural width is below its min width"); private->requesting = FALSE; } if (min_width_p) *min_width_p = private->min_width; if (natural_width_p) *natural_width_p = private->natural_width; } static void hippo_canvas_box_get_content_width_request(HippoCanvasBox *box, int *min_width_p, int *natural_width_p) { int total_min; int total_natural; int n_children_in_min; int n_children_in_natural; GSList *link; for (link = box->children; link != NULL; link = link->next) { HippoCanvasBoxChild *child = link->data; /* Note that we still request and allocate !visible children, * but we allocate them 0x0. */ if (!child->in_layout) hippo_canvas_box_child_get_width_request(child, NULL, NULL); } if (box->layout) { hippo_canvas_layout_get_width_request(box->layout, min_width_p, natural_width_p); return; } n_children_in_min = 0; n_children_in_natural = 0; total_min = 0; total_natural = 0; for (link = box->children; link != NULL; link = link->next) { HippoCanvasBoxChild *child = link->data; int min_width; int natural_width; if (!child->in_layout) continue; /* PACK_IF_FITS children are do not contribute to the min size * of the whole box, but do contribute to natural size, and * will be hidden entirely if their width request does not * fit. */ hippo_canvas_box_child_get_width_request(child, &min_width, &natural_width); n_children_in_natural += 1; /* children with if fits flag won't appear at our min width if * we are horizontal. If we're vertical, always request enough * width for all if_fits children. Children with 0 min size won't * themselves appear but they will get spacing around them, so * they count in n_children_in_min. */ if (box->orientation == HIPPO_ORIENTATION_VERTICAL) { total_min = MAX(total_min, min_width); n_children_in_min += 1; total_natural = MAX(total_natural, natural_width); } else { if (!child->if_fits) { total_min += min_width; n_children_in_min += 1; } total_natural += natural_width; } } if (box->orientation == HIPPO_ORIENTATION_HORIZONTAL && n_children_in_min > 1) total_min += box->spacing * (n_children_in_min - 1); if (box->orientation == HIPPO_ORIENTATION_HORIZONTAL && n_children_in_natural > 1) total_natural += box->spacing * (n_children_in_natural - 1); if (min_width_p) *min_width_p = total_min; if (natural_width_p) *natural_width_p = total_natural; } static int get_adjusted_size(AdjustInfo *adjust) { return adjust->minimum + adjust->adjustment; } /* If we have an allocation larger than our request (min width), we distribute the space among children as follows: 1) for each child below natural width, bring it up to its natural width a) count children with a request still below their natural width b) find the child with the smallest needed expansion to reach natural width and record this needed expansion c) distribute among below-natural-width children the minimum of (all space remaining to distribute) and (smallest needed expansion times number of children to expand) d) goto a) if children below natural width remain 2) if extra space still remains, divide it equally among each child with expand=true In other words, children will always grow to their natural width whether they are expand=true or not. Below-natural-size children always grow before expand=true children. Various optimizations are obviously possible here (keep track of flags for whether we have any expandable / any natural!=minimum, for example). The PACK_IF_FITS children are done in a second pass after other children, the if_fits flag indicates which pass this is. If if_fits=TRUE we need to skip if_fits children that did not fit. */ /* return TRUE if it needs to run again */ static gboolean adjust_up_to_natural_size(GSList *children, int *remaining_extra_space_p, AdjustInfo *adjusts, gboolean if_fits) { int i; GSList *link; int smallest_increase; int n_needing_increase; int space_to_distribute; g_assert(*remaining_extra_space_p >= 0); if (*remaining_extra_space_p == 0) return FALSE; smallest_increase = G_MAXINT; n_needing_increase = 0; i = 0; for (link = children; link != NULL; link = link->next) { HippoCanvasBoxChild *child = link->data; if (!child->fixed && child->visible && ((!child->if_fits && !if_fits) || (child->if_fits && if_fits && !adjusts[i].does_not_fit))) { int needed_increase; g_assert(adjusts[i].adjustment >= 0); /* guaranteed to be >= 0 */ needed_increase = adjusts[i].natural - adjusts[i].minimum; g_assert(needed_increase >= 0); needed_increase -= adjusts[i].adjustment; /* see how much we've already increased */ if (needed_increase > 0) { n_needing_increase += 1; smallest_increase = MIN(smallest_increase, needed_increase); } } ++i; } if (n_needing_increase == 0) return FALSE; g_assert(smallest_increase < G_MAXINT); space_to_distribute = MIN(*remaining_extra_space_p, smallest_increase * n_needing_increase); g_assert(space_to_distribute >= 0); g_assert(space_to_distribute <= *remaining_extra_space_p); *remaining_extra_space_p -= space_to_distribute; i = 0; for (link = children; link != NULL; link = link->next) { HippoCanvasBoxChild *child = link->data; if (!child->fixed && child->visible && ((!child->if_fits && !if_fits) || (child->if_fits && if_fits && !adjusts[i].does_not_fit))) { int needed_increase; g_assert(adjusts[i].adjustment >= 0); /* guaranteed to be >= 0 */ needed_increase = adjusts[i].natural - adjusts[i].minimum; g_assert(needed_increase >= 0); needed_increase -= adjusts[i].adjustment; /* see how much we've already increased */ if (needed_increase > 0) { int extra; extra = (space_to_distribute / n_needing_increase); n_needing_increase -= 1; space_to_distribute -= extra; adjusts[i].adjustment += extra; } } ++i; } g_assert(n_needing_increase == 0); g_assert(space_to_distribute == 0); return TRUE; } static void adjust_for_expandable(GSList *children, int *remaining_extra_space_p, AdjustInfo *adjusts) { int i; GSList *link; int expand_space; int expand_count; if (*remaining_extra_space_p == 0) return; expand_space = *remaining_extra_space_p; expand_count = count_expandable_children(children, adjusts); if (expand_count == 0) return; i = 0; for (link = children; link != NULL; link = link->next) { HippoCanvasBoxChild *child = link->data; if (child_is_expandable(child, &(adjusts[i])) && !adjusts[i].does_not_fit) { int extra; extra = (expand_space / expand_count); expand_count -= 1; expand_space -= extra; adjusts[i].adjustment += extra; } ++i; } /* if we had anything to expand, then we will have used up all space */ g_assert(expand_space == 0); g_assert(expand_count == 0); *remaining_extra_space_p = 0; } static void adjust_if_fits_as_not_fitting(GSList *children, AdjustInfo *adjusts) { int i; GSList *link; i = 0; for (link = children; link != NULL; link = link->next) { HippoCanvasBoxChild *child = link->data; if (child->if_fits) { adjusts[i].adjustment -= adjusts[i].minimum; adjusts[i].does_not_fit = TRUE; } ++i; } } static gboolean adjust_one_if_fits(GSList *children, int spacing, int *remaining_extra_space_p, AdjustInfo *adjusts) { int i; GSList *link; int spacing_delta; gboolean visible_children = FALSE; if (*remaining_extra_space_p == 0) return FALSE; /* if there are no currently visible children, then adding a child won't * add another spacing */ i = 0; for (link = children; link != NULL; link = link->next) { HippoCanvasBoxChild *child = link->data; if (child->visible && (!child->if_fits || !adjusts[i].does_not_fit)) { visible_children = TRUE; break; } i++; } spacing_delta = visible_children ? spacing : 0; i = 0; for (link = children; link != NULL; link = link->next) { if (adjusts[i].does_not_fit) { /* This child was adjusted downward, see if we can pop it visible * (picking the smallest instead of first if-fits child on each pass * might be nice, but for now it's the first that fits) */ if ((adjusts[i].minimum + spacing_delta) <= *remaining_extra_space_p) { adjusts[i].adjustment += adjusts[i].minimum; g_assert(adjusts[i].adjustment >= 0); adjusts[i].does_not_fit = FALSE; *remaining_extra_space_p -= (adjusts[i].minimum + spacing_delta); g_assert(*remaining_extra_space_p >= 0); return TRUE; } } ++i; } return FALSE; } /* this doesn't take a CanvasBox arg because it can be run in multiple contexts * and it's important not to store the compute-adjusts state globally in the box, * so we don't pass in the box, which avoids cheating. */ static void compute_adjusts(GSList *children, AdjustInfo *adjusts, int spacing, int alloc_request_delta) { int remaining_extra_space; if (children == NULL) return; /* Go ahead and cram all PACK_IF_FITS children to zero width, * we'll expand them again if we can. */ adjust_if_fits_as_not_fitting(children, adjusts); /* Make no adjustments if we got too little or just right space. * (FIXME handle too little space better) */ if (alloc_request_delta <= 0) { return; } remaining_extra_space = alloc_request_delta; /* adjust non-PACK_IF_FITS up to natural size */ while (adjust_up_to_natural_size(children, &remaining_extra_space, adjusts, FALSE)) ; /* see if any PACK_IF_FITS can get their minimum size */ while (adjust_one_if_fits(children, spacing, &remaining_extra_space, adjusts)) ; /* if so, then see if they can also get a natural size */ while (adjust_up_to_natural_size(children, &remaining_extra_space, adjusts, TRUE)) ; /* and finally we can expand to fill empty space */ adjust_for_expandable(children, &remaining_extra_space, adjusts); /* remaining_extra_space need not be 0, if we had no expandable children */ } void hippo_canvas_box_child_get_height_request(HippoCanvasBoxChild *child, int for_width, int *min_height_p, int *natural_height_p) { BoxChildPrivate *private = (BoxChildPrivate *)child; if (child->item == NULL) { if (min_height_p) *min_height_p = 0; if (natural_height_p) *natural_height_p = 0; return; } if (private->min_width < 0) g_warning("Height requesting child without width requesting first"); if (private->min_height < 0 || private->height_request_for_width != for_width) { hippo_canvas_item_get_height_request(child->item, for_width, &private->min_height, &private->natural_height); private->height_request_for_width = for_width; } if (min_height_p) *min_height_p = private->min_height; if (natural_height_p) *natural_height_p = private->natural_height; } static void request_child_natural_size(HippoCanvasBoxChild *child, int *width_p, int *height_p) { int width, height; hippo_canvas_box_child_get_width_request(child, NULL, &width); hippo_canvas_box_child_get_height_request(child, width, NULL, &height); if (width_p) *width_p = width; if (height_p) *height_p = height; } /* * In essence there are three separate layout managers for HippoCanvasBox: * * - Horizontal * - Vertical * - Vertical with floats * * The code below implements the third case, and is used both when computing * height for a width and when doing the final allocation. * * The way we handle floats is similar to the CSS box model but not absolutely * identical. Some differences and limitations: * * - In the CSS model, an individual child in the normal flow can wrap around * a float; this obviously isn't possible for us where each child occupies * a rectangular area. * - We never put two left floats or right floats on the same line; the left * all are positioned on the extreme left of the box, the right floats all * are positioned on the extreme right of the box. * - We assume that floats all fit horizontally and that left floats and right * floats don't interact with each other; a float will never be forced * downwards because it doesn't fit. */ /* Checks that the box packing flags are consistent and returns true if the box has any * floating children */ static gboolean box_validate_packing(HippoCanvasBox *box) { gboolean has_floats = FALSE; gboolean has_expand = FALSE; gboolean has_if_fits = FALSE; GSList *l; for (l = box->children; l != NULL; l = l->next) { HippoCanvasBoxChild *child = l->data; if (child->float_right || child->float_left || child->clear_left || child->clear_right) has_floats = TRUE; if (child->expand) has_expand = TRUE; if (child->if_fits) has_if_fits = TRUE; if (child->expand && (child->fixed || child->float_right || child->float_left || child->clear_left || child->clear_right)) { g_warning("Child must be in 'normal flow' not floated/fixed if HIPPO_PACK_EXPAND is set"); } } if (has_floats && box->orientation == HIPPO_ORIENTATION_HORIZONTAL) g_warning("Floating children can only be used in a vertical box"); if (has_floats && has_expand) g_warning("Floating children cannot be used in the same box as HIPPO_PACK_EXPAND"); if (has_floats && has_if_fits) g_warning("Floating children can't be used in the same box as HIPPO_PACK_IF_FITS"); return has_floats; } /* Per-floated-child information that we need during the layout process */ typedef struct { HippoCanvasBoxChild *child; int width; int height; int y; } HippoBoxFloat; /* Global information during the layout process */ typedef struct { HippoCanvasBox *box; int for_width; int y; /* End y-coordinate of the last normal-flow child */ int normal_count; /* Number of normal-flow child we've seen */ HippoBoxFloat *left; int n_left; /* number of left-floated children */ int next_left; /* the index of the next left-floated child in the packing order */ int at_y_left; /* the index of the first left-floated child that could overlap * subsequent normal-flow children */ HippoBoxFloat *right; int n_right; /* number of right-floated children */ int next_right; /* the index of the next right-floated child in the packing order */ int at_y_right; /* the index of the first right-floated child that could overlap * subsequent normal-flow children */ } HippoBoxFloats; static void init_float(HippoBoxFloat *float_, HippoCanvasBoxChild *child) { float_->child = child; request_child_natural_size(child, &float_->width, &float_->height); } /* Initialize the layout process when doing layout with floats. */ static void floats_start_packing(HippoBoxFloats *floats, HippoCanvasBox *box, int for_width) { GSList *l; int n_left = 0; int n_right = 0; int i_left, i_right; floats->box = box; floats->for_width = for_width; /* Count the number of floated children and allocate space for * per-child information */ for (l = box->children; l != NULL; l = l->next) { HippoCanvasBoxChild *child = l->data; if (!child->in_layout) continue; if (child->float_left) n_left++; else if (child->float_right) n_right++; } floats->n_left = n_left; floats->left = g_new(HippoBoxFloat, n_left); floats->n_right = n_right; floats->right = g_new(HippoBoxFloat, n_right); /* Compute initial sizes and (vertical) positions for the floated children based on * the requested width and height of each child; left and right floats are positioned * in a solid column down each side. The only adjustment we make later is to move floats * down so that a float doesn't appear above a normally-flowed child that precedes it * in the packing order. */ i_left = 0; i_right = 0; for (l = box->children; l != NULL; l = l->next) { HippoCanvasBoxChild *child = l->data; if (!child->in_layout) continue; if (child->float_left) { init_float(&floats->left[i_left], child); if (i_left == 0) floats->left[i_left].y = 0; else floats->left[i_left].y = floats->left[i_left - 1].y + floats->left[i_left - 1].height + box->spacing; i_left++; } else if (child->float_right) { init_float(&floats->right[i_right], child); if (i_right == 0) floats->right[i_right].y = 0; else floats->right[i_right].y = floats->right[i_right - 1].y + floats->right[i_right - 1].height + box->spacing; i_right++; } } floats->y = 0; floats->normal_count = 0 ; floats->next_left = 0; floats->at_y_left = 0; floats->next_right = 0; floats->at_y_right = 0; } /* Return the bottom y of the last left float processed */ static int floats_get_left_end_y(HippoBoxFloats *floats) { if (floats->next_left > 0) return floats->left[floats->next_left - 1].y + floats->left[floats->next_left - 1].height; else return 0; } /* Return the bottom y of the last right float processed */ static int floats_get_right_end_y(HippoBoxFloats *floats) { if (floats->next_right > 0) return floats->right[floats->next_right - 1].y + floats->right[floats->next_right - 1].height; else return 0; } /* * Do layout for a single child; if do_request is FALSE we assume that we've * previously done layout at the same width (from get_width_request), so we skip * doing size negotation with the child, and use the cached value. The content-area * relative allocation of the child is stored in child_allocation, if non-NULL. */ static void floats_add_child(HippoBoxFloats *floats, HippoCanvasBoxChild *child, gboolean do_request, HippoRectangle *child_allocation) { HippoBoxFloat *left = floats->left; HippoBoxFloat *right = floats->right; int i; g_assert(child->in_layout); if (child->float_left) { /* If the float doesn't appear below normal normal children that precede * it in the packing order, then we need to move it (and all following * left floats) down */ HippoBoxFloat *left_float = &left[floats->next_left]; int next_normal_y = floats->y; if (floats->normal_count > 0) next_normal_y += floats->box->spacing; if (left_float->y < next_normal_y) { int move_down = next_normal_y - left_float->y; for (i = floats->next_left; i < floats->n_left; i++) left[i].y += move_down; } if (child_allocation) { child_allocation->x = 0; child_allocation->y = left_float->y; child_allocation->width = left_float->width; child_allocation->height = left_float->height; } floats->next_left++; } else if (child->float_right) { /* If the float doesn't appear below normal normal children that precede * it in the packing order, then we need to move it (and all following * left floats) down */ HippoBoxFloat *right_float = &right[floats->next_right]; int next_normal_y = floats->y; if (floats->normal_count > 0) next_normal_y += floats->box->spacing; if (right_float->y < next_normal_y) { int move_down = next_normal_y - right_float->y; for (i = floats->next_right; i < floats->n_right; i++) right[i].y += move_down; } if (child_allocation) { child_allocation->x = floats->for_width - right_float->width; child_allocation->y = right_float->y; child_allocation->width = right_float->width; child_allocation->height = right_float->height; } floats->next_right++; } else { int i_left = floats->at_y_left; int i_right = floats->at_y_right; int left_float_width = 0; int right_float_width = 0; gboolean one_more_pass = TRUE; /* Accessing natural_height here breaks the abstraction barrier between the * "layout manager" parts of the code and the "container" parts of the code. * If we were splitting out the floats layout manager into a truly separate * piece of code, the per-child cached negotatiated height could be stored * in layout-manager specific data using hippo_canvas_box_set_extra(). */ int tentative_height = do_request ? 1 : ((BoxChildPrivate *)child)->natural_height; /* Handle clear_left / clear_right. Ensure that normal-flow children appear below any * floats that they are specified to clear. */ if (child->clear_left) { int float_end_y = floats_get_left_end_y(floats); if (float_end_y > floats->y) floats->y = float_end_y; } if (child->clear_right) { int float_end_y = floats_get_right_end_y(floats); if (float_end_y > floats->y) floats->y = float_end_y; } if (floats->normal_count != 0) floats->y += floats->box->spacing; /* Skip over any floats that are completely above this child; they don't affect the * width; we only look up to floats->next_left/right since floats after this * normal-flow child will appear below it. */ while (i_left < floats->next_left && left[i_left].y + left[i_left].height <= floats->y) i_left++; while (i_right < floats->next_right && right[i_right].y + right[i_right].height <= floats->y) i_right++; /* We need to iterate to determine the set of floats that actually do affect * the width; we start off subtracting the width of only floats that overlap * the top line of the child (tentative_height == 1), and find the height * of the child at that width. If that height causes us to overlap any more * floats and narrow the available width, then we need to repeat, and so * forth. * * If we see a float that overlaps this child, then we know that floats * before that float can't overlap normal children after this child, * so we can advance floats->at_y_left/at_y_right. */ while (TRUE) { while (i_left < floats->next_left && left[i_left].y < floats->y + tentative_height) { if (left[i_left].width > left_float_width) { left_float_width = left[i_left].width; one_more_pass = TRUE; } floats->at_y_left = i_left; i_left++; } while (i_right < floats->next_right && right[i_right].y < floats->y + tentative_height) { if (right[i_right].width > right_float_width) { right_float_width = right[i_right].width; one_more_pass = TRUE; } floats->at_y_right = i_right; i_right++; } if (!one_more_pass) break; if (do_request) { int natural_height; hippo_canvas_box_child_get_height_request(child, floats->for_width - left_float_width - right_float_width, NULL, &natural_height); tentative_height = natural_height; } one_more_pass = FALSE; } if (child_allocation) { child_allocation->x = left_float_width; child_allocation->y = floats->y; child_allocation->width = floats->for_width - left_float_width - right_float_width; child_allocation->height = tentative_height; } floats->y += tentative_height; floats->normal_count++; } } /* Finish the floating layout process. Returns the minimal total height for the box */ static int floats_end_packing(HippoBoxFloats *floats) { int height = floats->y; int left_end_y = floats_get_left_end_y(floats); int right_end_y = floats_get_right_end_y(floats); if (left_end_y > height) height = left_end_y; if (right_end_y > height) height = right_end_y; g_free(floats->left); g_free(floats->right); return height; } static void get_floats_height_request(HippoCanvasBox *box, int for_width, int *min_height_p, int *natural_height_p) { int total_min; int total_natural; GSList *link; HippoBoxFloats floats; total_min = 0; total_natural = 0; floats_start_packing(&floats, box, for_width); for (link = box->children; link != NULL; link = link->next) { HippoCanvasBoxChild *child = link->data; if (!child->in_layout) continue; floats_add_child(&floats, child, TRUE, NULL); } total_min = total_natural = floats_end_packing(&floats); if (min_height_p) *min_height_p = total_min; if (natural_height_p) *natural_height_p = total_natural; } /* this function should look a lot like get_content_width_request() */ static void get_vbox_height_request(HippoCanvasBox *box, int for_width, int *min_height_p, int *natural_height_p) { int total_min; int total_natural; int n_children_in_min; int n_children_in_natural; GSList *link; total_min = 0; total_natural = 0; n_children_in_min = 0; n_children_in_natural = 0; for (link = box->children; link != NULL; link = link->next) { HippoCanvasBoxChild *child = link->data; int min_height; int natural_height; /* Note that we still request and allocate !visible children */ hippo_canvas_box_child_get_height_request(child, for_width, &min_height, &natural_height); if (!child->in_layout) continue; n_children_in_natural += 1; total_natural += natural_height; if (!child->if_fits) { n_children_in_min += 1; total_min += min_height; } } if (n_children_in_min > 1) total_min += box->spacing * (n_children_in_min - 1); if (n_children_in_natural > 1) total_natural += box->spacing * (n_children_in_natural - 1); if (min_height_p) *min_height_p = total_min; if (natural_height_p) *natural_height_p = total_natural; } static AdjustInfo* adjust_infos_new(HippoCanvasBox *box, int for_content_width) { /* Rely on the zero-initialization */ AdjustInfo *adjusts = g_new0(AdjustInfo, g_slist_length(box->children)); GSList *link; int i = 0; for (link = box->children; link != NULL; link = link->next) { HippoCanvasBoxChild *child = link->data; if (!child->in_layout) { adjusts[i].minimum = adjusts[i].natural = 0; } else if (box->orientation == HIPPO_ORIENTATION_VERTICAL) { hippo_canvas_box_child_get_height_request(child, for_content_width, &adjusts[i].minimum, &adjusts[i].natural); } else { hippo_canvas_box_child_get_width_request(child, &adjusts[i].minimum, &adjusts[i].natural); } i++; } return adjusts; } static void get_content_width_request(HippoCanvasBox *box, int *min_width_p, int *natural_width_p) { if (box->content_min_width < 0) { HippoCanvasBoxClass *klass = HIPPO_CANVAS_BOX_GET_CLASS(box); (* klass->get_content_width_request)(box, &box->content_min_width, &box->content_natural_width); } if (min_width_p) *min_width_p = box->content_min_width; if (natural_width_p) *natural_width_p = box->content_natural_width; } static void get_content_height_request(HippoCanvasBox *box, int for_width, int *min_height_p, int *natural_height_p) { if (box->content_min_height < 0 || box->content_height_request_for_width != for_width) { HippoCanvasBoxClass *klass = HIPPO_CANVAS_BOX_GET_CLASS(box); (* klass->get_content_height_request)(box, for_width, &box->content_min_height, &box->content_natural_height); box->content_height_request_for_width = for_width; } if (min_height_p) *min_height_p = box->content_min_height; if (natural_height_p) *natural_height_p = box->content_natural_height; } /* This function's algorithm must be kept in sync with the one in allocate() */ static void get_hbox_height_request(HippoCanvasBox *box, int for_width, int *min_height_p, int *natural_height_p) { int total_min; int total_natural; GSList *link; int requested_content_width; int natural_content_width; int allocated_content_width; AdjustInfo *width_adjusts; int i; total_min = 0; total_natural = 0; get_content_width_request(box, &requested_content_width, &natural_content_width); get_content_area_horizontal(box, requested_content_width, natural_content_width, for_width, NULL, &allocated_content_width); width_adjusts = adjust_infos_new(box, for_width); compute_adjusts(box->children, width_adjusts, box->spacing, allocated_content_width - requested_content_width); i = 0; for (link = box->children; link != NULL; link = link->next) { HippoCanvasBoxChild *child = link->data; int min_height, natural_height; int req; if (!child->in_layout) { ++i; continue; } req = get_adjusted_size(&width_adjusts[i]); hippo_canvas_box_child_get_height_request(child, req, &min_height, &natural_height); total_min = MAX(total_min, min_height); total_natural = MAX(total_natural, natural_height); ++i; } g_free(width_adjusts); if (min_height_p) *min_height_p = total_min; if (natural_height_p) *natural_height_p = total_natural; } static void hippo_canvas_box_get_content_height_request(HippoCanvasBox *box, int for_width, int *min_height_p, int *natural_height_p) { GSList *link; gboolean has_floats; /* Do fixed children, just to have their request recorded; * the box for_width is ignored here, fixed children just * always get their width request. * * For !visible children we want to request them but will * always allocate 0x0 */ for (link = box->children; link != NULL; link = link->next) { HippoCanvasBoxChild *child = link->data; if (!child->in_layout) request_child_natural_size(child, NULL, NULL); } if (box->layout) { hippo_canvas_layout_get_height_request(box->layout, for_width, min_height_p, natural_height_p); return; } /* Now do the box-layout children */ has_floats = box_validate_packing(box); if (box->orientation == HIPPO_ORIENTATION_VERTICAL && has_floats) { get_floats_height_request(box, for_width, min_height_p, natural_height_p); } else if (box->orientation == HIPPO_ORIENTATION_VERTICAL) { get_vbox_height_request(box, for_width, min_height_p, natural_height_p); } else { get_hbox_height_request(box, for_width, min_height_p, natural_height_p); } } static void hippo_canvas_box_get_width_request(HippoCanvasItem *item, int *min_width_p, int *natural_width_p) { int content_min_width, content_natural_width; HippoCanvasBox *box; Borders borders; box = HIPPO_CANVAS_BOX(item); box->needs_width_request = FALSE; get_borders(box, &borders); /* We need to call this even if just returning the box-width prop, * so that children can rely on getting the full request, allocate * cycle in order every time, and so we compute the cached requests. */ get_content_width_request(box, &content_min_width, &content_natural_width); if (box->box_width >= 0) { /* FIXME it's probably a lot more useful if we had separate properties * to set these two. */ if (min_width_p) *min_width_p = box->box_width; if (natural_width_p) *natural_width_p = box->box_width; } else { int outside; outside = borders.padding[HIPPO_CANVAS_SIDE_LEFT] + borders.padding[HIPPO_CANVAS_SIDE_RIGHT] + borders.border[HIPPO_CANVAS_SIDE_LEFT] + borders.border[HIPPO_CANVAS_SIDE_RIGHT]; if (min_width_p) *min_width_p = content_min_width + outside; if (natural_width_p) *natural_width_p = content_natural_width + outside; } if (box->debug_name != NULL && min_width_p != NULL) { g_debug("box %s Computed minimum width as %d", box->debug_name, *min_width_p); } if (box->debug_name != NULL && natural_width_p != NULL) { g_debug("box %s Computed natural width as %d", box->debug_name, *natural_width_p); } } static void hippo_canvas_box_get_height_request(HippoCanvasItem *item, int for_width, int *min_height_p, int *natural_height_p) { int content_min_height, content_natural_height; int content_for_width; HippoCanvasBox *box; Borders borders; box = HIPPO_CANVAS_BOX(item); box->needs_height_request = FALSE; get_borders(box, &borders); content_for_width = for_width - borders.padding[HIPPO_CANVAS_SIDE_LEFT] - borders.padding[HIPPO_CANVAS_SIDE_RIGHT] - borders.border[HIPPO_CANVAS_SIDE_LEFT] - borders.border[HIPPO_CANVAS_SIDE_RIGHT]; /* We need to call this even if just returning the box-height prop, * so that children can rely on getting the full request, allocate * cycle in order every time, and so we compute the cached requests. */ get_content_height_request(box, content_for_width, &content_min_height, &content_natural_height); if (box->box_height >= 0) { /* FIXME the property should probably be separate for these two */ if (min_height_p) *min_height_p = box->box_height; if (natural_height_p) *natural_height_p = box->box_height; } else { int outside; outside = borders.padding[HIPPO_CANVAS_SIDE_TOP] + borders.padding[HIPPO_CANVAS_SIDE_BOTTOM] + borders.border[HIPPO_CANVAS_SIDE_TOP] + borders.border[HIPPO_CANVAS_SIDE_BOTTOM]; if (min_height_p) *min_height_p = content_min_height + outside; if (natural_height_p) *natural_height_p = content_natural_height + outside; } if (box->debug_name != NULL && min_height_p != NULL) { g_debug("box %s Computed minimum height for width=%d as %d", box->debug_name, for_width, *min_height_p); } if (box->debug_name != NULL && natural_height_p != NULL) { g_debug("box %s Computed natural height for width=%d as %d", box->debug_name, for_width, *natural_height_p); } } /** * hippo_canvas_box_align: * @content_width: width of the content of your item (text, image, children, whatever) * @content_height: height of the content * @x_p: output the X origin where you should put your content * @y_p: output the Y origin where you should put your content * @width_p: output the width of your content (may exceed the * passed-in width/height if alignment mode is #HIPPO_ALIGNMENT_FILL * for example) * @height_p: output the height of your content * * This is a "protected" method intended for use by #HippoCanvasBox * subclasses (basically all items are box subclasses right now). * Pass in a size request, and have it converted to the right place * to actually draw, with padding/border removed and alignment performed. * In other words this sorts out the padding, border, and xalign/yalign * properties for you. */ void hippo_canvas_box_align(HippoCanvasBox *box, int content_width, int content_height, int *x_p, int *y_p, int *width_p, int *height_p) { /* What the user passes in here is the content area they are actually * using. For this, the distinction between the requested and natural * size that we need when doing layout doesn't matter, so we pass the * same value for both. */ get_content_area(box, content_width, content_height, content_width, content_height, box->allocated_width, box->allocated_height, x_p, y_p, width_p, height_p); } void hippo_canvas_box_child_allocate(HippoCanvasBoxChild *child, int x, int y, int width, int height, gboolean origin_changed) { BoxChildPrivate *private = (BoxChildPrivate *)child; gboolean child_moved; int old_width, old_height; if (child->item == NULL) return; hippo_canvas_item_get_allocation(child->item, &old_width, &old_height); child_moved = x != private->x || y != private->y; /* We handle repainting when the child moves here, the child is however * responsible for repainting itself on resize (this is to allow pure-containers * that don't draw anything to avoid repainting children that stay fixed when * the container resizes. */ if (child_moved && (old_width != 0 || old_height != 0)) hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(private->box), private->x, private->y, old_width, old_height); private->x = x; private->y = y; if (child_moved && (width != 0 || height != 0)) hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(private->box), x, y, width, height); hippo_canvas_item_allocate(child->item, width, height, origin_changed || child_moved); } static void layout_floats(HippoCanvasBox *box, int content_x, int content_y, int allocated_content_width, int allocated_content_height, int requested_content_width, int requested_content_height, gboolean origin_changed) { HippoBoxFloats floats; GSList *link; floats_start_packing(&floats, box, allocated_content_width); for (link = box->children; link != NULL; link = link->next) { HippoCanvasBoxChild *child = link->data; HippoRectangle child_allocation; if (!child->in_layout) continue; floats_add_child(&floats, child, FALSE, &child_allocation); hippo_canvas_box_child_allocate(child, content_x + child_allocation.x, content_y + child_allocation.y, child_allocation.width, child_allocation.height, origin_changed); } floats_end_packing(&floats); } static void layout_box(HippoCanvasBox *box, int content_x, int content_y, int allocated_content_width, int allocated_content_height, int requested_content_width, int requested_content_height, gboolean origin_changed) { int start; int end; AdjustInfo *adjusts; int i; int allocated_size, requested_size; GSList *link; if (box->orientation == HIPPO_ORIENTATION_VERTICAL) { allocated_size = allocated_content_height; requested_size = requested_content_height; start = content_y; } else { allocated_size = allocated_content_width; requested_size = requested_content_width; start = content_x; } end = start + allocated_size; adjusts = adjust_infos_new(box, allocated_content_width); compute_adjusts(box->children, adjusts, box->spacing, allocated_size - requested_size); i = 0; for (link = box->children; link != NULL; link = link->next) { HippoCanvasBoxChild *child = link->data; int req; if (!child->in_layout) { ++i; continue; } if (box->orientation == HIPPO_ORIENTATION_VERTICAL) { req = get_adjusted_size(&adjusts[i]); hippo_canvas_box_child_allocate(child, content_x, child->end ? (end - req) : start, allocated_content_width, req, origin_changed); } else { req = get_adjusted_size(&adjusts[i]); hippo_canvas_box_child_allocate(child, child->end ? (end - req) : start, content_y, req, allocated_content_height, origin_changed); } if (req <= 0) { /* Child was adjusted out of existence, act like it's * !visible */ hippo_canvas_box_child_allocate(child, 0, 0, 0, 0, origin_changed); } /* Children with req == 0 still get spacing unless they are IF_FITS. * The handling of spacing could use improvement (spaces should probably * act like items with min width 0 and natural width of spacing) but * it's pretty hard to get right without rearranging the code a lot. */ if (!adjusts[i].does_not_fit) { if (child->end) end -= (req + box->spacing); else start += (req + box->spacing); } ++i; } g_free(adjusts); } static void layout_all_children_hidden(HippoCanvasBox *box) { GSList *link; /* If we are !visible (0 allocation) then allocate all our * children to 0. This should happen in the layout algorithms * below, but they are all lame about dealing with too-small * allocations, so they don't "just work" for this. */ for (link = box->children; link != NULL; link = link->next) { HippoCanvasBoxChild *child = link->data; hippo_canvas_box_child_allocate(child, 0, 0, 0, 0, FALSE); } } static gboolean has_paint_signal_handlers(HippoCanvasItem *item) { guint paint_id = g_signal_lookup("paint", HIPPO_TYPE_CANVAS_ITEM); return g_signal_has_handler_pending(item, paint_id, 0, TRUE); } static void hippo_canvas_box_allocate(HippoCanvasItem *item, int allocated_box_width, int allocated_box_height, gboolean origin_changed) { HippoCanvasBox *box; int requested_content_width; int requested_content_height; int natural_content_width; int natural_content_height; int allocated_content_width; int allocated_content_height; GSList *link; int content_x, content_y; gboolean has_floats; gboolean size_changed; box = HIPPO_CANVAS_BOX(item); size_changed = (box->allocated_width != allocated_box_width || box->allocated_height != allocated_box_height); /* If we haven't emitted request-changed then we are allowed to short-circuit * an unchanged allocation */ if (!origin_changed && !size_changed && !box->needs_allocate) return; /* Figure out whether we need to queue a repaint */ if (size_changed && !origin_changed) { HippoCanvasBoxClass *klass = HIPPO_CANVAS_BOX_GET_CLASS(box); gboolean need_repaint = TRUE; /* Detecting if we need to repaint the box on resize is hard; it's possible * that we should just make it a property; the problem with making it a * property is that we want to avoid such repaints of HippoCanvasBox, * as a pure container, so we'd have to make it default off. And so then * you'd have to set it before connecting to ::paint or overriding * paint_below_children. * * The exact rule we follow here is somewhat non-scientific: * * - We draw borders, or background => need resize * - Subclass overrides paint_below_children or paint_above_children => need resize * - User connects to ::paint => resize needed * (Consider this a way of customizing existing painting) * - Subclass overrides paint => NO resize needed * (Subclass is really doing it's own thing ... skipping borders and backgrounds. * we dont' want to break this optimization for such classes) */ if (klass->paint_below_children == NULL && klass->paint_above_children == NULL && klass->paint_background == hippo_canvas_box_paint_background && !has_paint_signal_handlers(item)) { HippoCanvasStyle *style = hippo_canvas_context_get_style(HIPPO_CANVAS_CONTEXT(box)); guint32 background_color_rgba; guint32 border_color_rgba; if (box->background_color_set) background_color_rgba = box->background_color_rgba; else background_color_rgba = hippo_canvas_style_get_background_color(style); if (box->border_color_set) border_color_rgba = box->border_color_rgba; else /* We just care if any have non-zero in the bottom bits, so | together */ border_color_rgba = (hippo_canvas_style_get_border_color(style, HIPPO_CANVAS_SIDE_LEFT) | hippo_canvas_style_get_border_color(style, HIPPO_CANVAS_SIDE_RIGHT) | hippo_canvas_style_get_border_color(style, HIPPO_CANVAS_SIDE_TOP) | hippo_canvas_style_get_border_color(style, HIPPO_CANVAS_SIDE_BOTTOM)); if (hippo_canvas_style_get_background_theme_image(style) == NULL && (background_color_rgba & 0xff) == 0 && (border_color_rgba & 0xff) == 0) need_repaint = FALSE; } /* Our repaint area would be a little more accurate if we invalidated the old and new * sizes separately, instead of combining them into a single box, but it's not * going to be common to resize by large amounts in both directions at once. */ if (need_repaint) hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(box), 0, 0, MAX(box->allocated_width, allocated_box_width), MAX(box->allocated_height, allocated_box_height)); } box->allocated_width = allocated_box_width; box->allocated_height = allocated_box_height; box->needs_allocate = FALSE; if (allocated_box_width <= 0 || allocated_box_height <= 0) { /* Skip computation of content area in this common case (item hidden) */ layout_all_children_hidden(box); return; } get_content_width_request(box, &requested_content_width, &natural_content_width); get_content_area_horizontal(box, requested_content_width, natural_content_width, allocated_box_width, &content_x, &allocated_content_width); get_content_height_request(box, allocated_content_width, &requested_content_height, &natural_content_height); get_content_area_vertical(box, requested_content_height, natural_content_height, allocated_box_height, &content_y, &allocated_content_height); if (box->debug_name != NULL) { g_debug("box %s allocated %dx%d requested %dx%d lay out into %d,%d %dx%d", box->debug_name, box->allocated_width, box->allocated_height, requested_content_width, requested_content_height, content_x, content_y, allocated_content_width, allocated_content_height); } if (allocated_content_width <= 0 || allocated_content_height <= 0) { layout_all_children_hidden(box); } else { /* Allocate fixed children their natural size and invisible * children 0x0 */ for (link = box->children; link != NULL; link = link->next) { HippoCanvasBoxChild *child = link->data; if (!child->visible) { hippo_canvas_box_child_allocate(child, 0, 0, 0, 0, origin_changed); } else if (child->fixed) { BoxChildPrivate *private = (BoxChildPrivate *)child; int width, height; request_child_natural_size(child, &width, &height); hippo_canvas_box_child_allocate(child, private->x, private->y, width, height, origin_changed); } else { continue; } } /* Now layout the box */ if (box->layout) { hippo_canvas_layout_allocate(box->layout, content_x, content_y, allocated_content_width, allocated_content_height, requested_content_width, requested_content_height, origin_changed); return; } has_floats = box_validate_packing(box); if (box->orientation == HIPPO_ORIENTATION_VERTICAL && has_floats) { layout_floats(box, content_x, content_y, allocated_content_width, allocated_content_height, requested_content_width, requested_content_height, origin_changed); } else { layout_box(box, content_x, content_y, allocated_content_width, allocated_content_height, requested_content_width, requested_content_height, origin_changed); } } } static void hippo_canvas_box_get_allocation(HippoCanvasItem *item, int *width_p, int *height_p) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(item); if (width_p) *width_p = box->allocated_width; if (height_p) *height_p = box->allocated_height; } static BoxChildPrivate* find_child_at_point(HippoCanvasBox *box, int x, int y) { GSList *link; BoxChildPrivate *topmost; /* Box-layout children don't overlap each other, so we could just * return the first match, but for fixed children we have to * return the last match since the items are bottom-to-top in the list */ topmost = NULL; for (link = box->children; link != NULL; link = link->next) { BoxChildPrivate *child = link->data; int width, height; if (!child->public.visible) continue; hippo_canvas_item_get_allocation(child->public.item, &width, &height); if (x >= child->x && y >= child->y && x < (child->x + width) && y < (child->y + height)) { topmost = child; } } return topmost; } static BoxChildPrivate* find_hovering_child(HippoCanvasBox *box) { GSList *link; for (link = box->children; link != NULL; link = link->next) { BoxChildPrivate *child = link->data; if (child->hovering) return child; } return NULL; } /* the odd thing here is that sometimes we have an enter/leave from the parent, * and sometimes we have just a motion from the parent, and in both cases * we may need to send an enter/leave to one of our children. */ /* FIXME we need to update the "hovering child" whenever we get a new allocation * (which would happen e.g. when a child becomes visible/invisible also). */ static gboolean forward_motion_event(HippoCanvasBox *box, HippoEvent *event) { BoxChildPrivate *child; BoxChildPrivate *was_hovering; gboolean result; result = FALSE; /* we only overwrite this when forwarding the current event, * not with synthesized enter/leaves */ if (event->u.motion.detail == HIPPO_MOTION_DETAIL_ENTER || event->u.motion.detail == HIPPO_MOTION_DETAIL_WITHIN) child = find_child_at_point(box, event->x, event->y); else child = NULL; /* leave events never have a new hover target */ was_hovering = find_hovering_child(box); /* Do the leave event first to avoid having two current hovering children */ if (was_hovering && child != was_hovering) { was_hovering->hovering = FALSE; if (event->u.motion.detail != HIPPO_MOTION_DETAIL_LEAVE) hippo_canvas_item_emit_motion_notify_event(was_hovering->public.item, event->x - was_hovering->x, event->y - was_hovering->y, HIPPO_MOTION_DETAIL_LEAVE); else result = hippo_canvas_item_process_event(was_hovering->public.item, event, was_hovering->x, was_hovering->y); } /* Now mark the current hovering child */ if (child) { g_assert(event->u.motion.detail != HIPPO_MOTION_DETAIL_LEAVE); if (child != was_hovering) { g_assert(box->hovering); child->hovering = TRUE; if (event->u.motion.detail != HIPPO_MOTION_DETAIL_ENTER) { hippo_canvas_item_emit_motion_notify_event(child->public.item, event->x - child->x, event->y - child->y, HIPPO_MOTION_DETAIL_ENTER); } } /* forward an enter or motion within event */ result = hippo_canvas_item_process_event(child->public.item, event, child->x, child->y); } return result; } static void set_release_pending (BoxChildPrivate *child, guint button, gboolean value) { g_assert (child != NULL); switch (button) { case 1: child->left_release_pending = value; break; case 2: child->middle_release_pending = value; break; case 3: child->right_release_pending = value; break; } } static gboolean is_release_pending (BoxChildPrivate *child, guint button) { gboolean result = FALSE; g_assert (child != NULL); switch (button) { case 1: result = child->left_release_pending == TRUE; break; case 2: result = child->middle_release_pending == TRUE; break; case 3: result = child->right_release_pending == TRUE; break; } return result; } static gboolean forward_button_release_event(HippoCanvasBox *box, HippoEvent *event) { GSList *link; for (link = box->children; link != NULL; link = link->next) { BoxChildPrivate *child; child = link->data; if (is_release_pending (child, event->u.button.button)) { gboolean handled = FALSE; handled = hippo_canvas_item_process_event(child->public.item, event, child->x, child->y); set_release_pending(child, event->u.button.button, FALSE); return handled; } } return FALSE; } static gboolean forward_event(HippoCanvasBox *box, HippoEvent *event) { BoxChildPrivate *child; if (event->type == HIPPO_EVENT_MOTION_NOTIFY) { /* Motion events are a bit more complicated than the others */ return forward_motion_event(box, event); } else if (event->type == HIPPO_EVENT_BUTTON_RELEASE) { return forward_button_release_event(box, event); } else if (event->type == HIPPO_EVENT_BUTTON_PRESS) { child = find_child_at_point(box, event->x, event->y); if (child != NULL) { set_release_pending (child, event->u.button.button, TRUE); return hippo_canvas_item_process_event(child->public.item, event, child->x, child->y); } else { return FALSE; } } else if (event->type == HIPPO_EVENT_SCROLL) { child = find_child_at_point(box, event->x, event->y); if (child != NULL) { return hippo_canvas_item_process_event(child->public.item, event, child->x, child->y); } else { return FALSE; } } else { return FALSE; } } static gboolean hippo_canvas_box_button_press_event (HippoCanvasItem *item, HippoEvent *event) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(item); return forward_event(box, event); } static gboolean hippo_canvas_box_button_release_event (HippoCanvasItem *item, HippoEvent *event) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(item); gboolean handled; handled = forward_event (box, event); if (!handled && box->clickable && event->u.button.button == 1) { hippo_canvas_item_emit_activated(item); return TRUE; } else { return handled; } } static gboolean hippo_canvas_box_motion_notify_event (HippoCanvasItem *item, HippoEvent *event) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(item); gboolean was_hovering; gboolean handled; was_hovering = box->hovering; /* FIXME the warnings here need fixing; right now we aren't handling * e.g. unmap I think, maybe some larger problems too */ if (event->u.motion.detail == HIPPO_MOTION_DETAIL_ENTER) { #if 0 g_debug("motion notify ENTER %s %p box hovering was %d", g_type_name_from_instance((GTypeInstance*)box), box, box->hovering); #endif if (box->hovering) g_warning("Box got enter event but was already hovering=TRUE"); box->hovering = TRUE; } else if (event->u.motion.detail == HIPPO_MOTION_DETAIL_LEAVE) { #if 0 g_debug("motion notify LEAVE %s %p box hovering was %d", g_type_name_from_instance((GTypeInstance*)box), box, box->hovering); #endif if (!box->hovering) g_warning("Box got leave event but was not hovering=TRUE"); box->hovering = FALSE; } else if (event->u.motion.detail == HIPPO_MOTION_DETAIL_WITHIN) { #if 0 g_debug("motion notify WITHIN %s %p box hovering was %d", g_type_name_from_instance((GTypeInstance*)box), box, box->hovering); #endif if (!box->hovering) g_warning("Box got motion event but never got an enter event, hovering=FALSE"); } handled = forward_event(box, event); if (was_hovering != box->hovering) { g_signal_emit(G_OBJECT(box), signals[HOVERING_CHANGED], 0, box->hovering); } return handled; } static gboolean hippo_canvas_box_scroll_event (HippoCanvasItem *item, HippoEvent *event) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(item); gboolean handled; handled = forward_event (box, event); return handled; } static void hippo_canvas_box_request_changed(HippoCanvasItem *item) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(item); box->content_min_width = -1; box->content_min_height = -1; box->needs_width_request = TRUE; box->needs_height_request = TRUE; box->needs_allocate = TRUE; } static gboolean hippo_canvas_box_get_needs_request(HippoCanvasItem *item) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(item); return box->needs_width_request || box->needs_height_request; } static char* hippo_canvas_box_get_tooltip(HippoCanvasItem *item, int x, int y, HippoRectangle *for_area) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(item); BoxChildPrivate *child; child = find_child_at_point(box, x, y); if (child != NULL) { char *tip; tip = hippo_canvas_item_get_tooltip(child->public.item, x - child->x, y - child->y, for_area); if (tip != NULL) { for_area->x += child->x; for_area->y += child->y; return tip; } } /* If no child at the point, or child did not set the tip, then * use our own tip if any */ for_area->x = 0; for_area->y = 0; for_area->width = box->allocated_width; for_area->height = box->allocated_height; return g_strdup(box->tooltip); } static HippoCanvasPointer hippo_canvas_box_get_pointer(HippoCanvasItem *item, int x, int y) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(item); BoxChildPrivate *child; child = find_child_at_point(box, x, y); if (child != NULL) { HippoCanvasPointer p; p = hippo_canvas_item_get_pointer(child->public.item, x - child->x, y - child->y); if (p != HIPPO_CANVAS_POINTER_UNSET) return p; } if (box->clickable) return HIPPO_CANVAS_POINTER_HAND; else return HIPPO_CANVAS_POINTER_UNSET; } static void child_destroy(HippoCanvasItem *child, HippoCanvasBox *box) { hippo_canvas_box_remove(box, child); } static void child_request_changed(HippoCanvasItem *child, HippoCanvasBox *box) { BoxChildPrivate *box_child; box_child = find_child(box, child); #if 0 g_debug("child %s %p of %s %p request changed", g_type_name_from_instance((GTypeInstance*) box_child->public.item), box_child->public.item, g_type_name_from_instance((GTypeInstance*) box), box); #endif if (box_child->requesting) { g_warning("Child item %p of type %s changed its size request inside a size request operation", box_child->public.item, g_type_name_from_instance((GTypeInstance*) box_child->public.item)); } /* invalidate cached request for this child */ box_child->min_width = -1; box_child->min_height = -1; box_child->height_request_for_width = -1; /* no-op if we already emitted since last allocate */ hippo_canvas_item_emit_request_changed(HIPPO_CANVAS_ITEM(box)); } static void child_paint_needed(HippoCanvasItem *item, const HippoRectangle *damage_box, HippoCanvasBox *box) { BoxChildPrivate *child; /* translate to our own coordinates then emit the signal again */ child = find_child(box, item); if (child->public.visible) hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(box), damage_box->x + child->x, damage_box->y + child->y, damage_box->width, damage_box->height); } static void child_tooltip_changed(HippoCanvasItem *item, HippoCanvasBox *box) { hippo_canvas_item_emit_tooltip_changed(HIPPO_CANVAS_ITEM(box)); } static void connect_child(HippoCanvasBox *box, HippoCanvasItem *child) { g_signal_connect(G_OBJECT(child), "destroy", G_CALLBACK(child_destroy), box); g_signal_connect(G_OBJECT(child), "request-changed", G_CALLBACK(child_request_changed), box); g_signal_connect(G_OBJECT(child), "paint-needed", G_CALLBACK(child_paint_needed), box); g_signal_connect(G_OBJECT(child), "tooltip-changed", G_CALLBACK(child_tooltip_changed), box); } static void disconnect_child(HippoCanvasBox *box, HippoCanvasItem *child) { g_signal_handlers_disconnect_by_func(G_OBJECT(child), G_CALLBACK(child_destroy), box); g_signal_handlers_disconnect_by_func(G_OBJECT(child), G_CALLBACK(child_request_changed), box); g_signal_handlers_disconnect_by_func(G_OBJECT(child), G_CALLBACK(child_paint_needed), box); g_signal_handlers_disconnect_by_func(G_OBJECT(child), G_CALLBACK(child_tooltip_changed), box); } static gboolean set_flags(HippoCanvasBoxChild *c, HippoPackFlags flags) { HippoPackFlags old; old = 0; if (c->end) old |= HIPPO_PACK_END; if (c->expand) old |= HIPPO_PACK_EXPAND; if (c->fixed) old |= HIPPO_PACK_FIXED; if (c->if_fits) old |= HIPPO_PACK_IF_FITS; if (c->float_left) old |= HIPPO_PACK_FLOAT_LEFT; if (c->float_right) old |= HIPPO_PACK_FLOAT_RIGHT; if (c->clear_left) old |= HIPPO_PACK_CLEAR_LEFT; if (c->clear_right) old |= HIPPO_PACK_CLEAR_RIGHT; if (old == flags) return FALSE; /* no change */ c->expand = (flags & HIPPO_PACK_EXPAND) != 0; c->end = (flags & HIPPO_PACK_END) != 0; c->fixed = (flags & HIPPO_PACK_FIXED) != 0; c->if_fits = (flags & HIPPO_PACK_IF_FITS) != 0; c->float_left = (flags & HIPPO_PACK_FLOAT_LEFT) != 0; c->float_right = (flags & HIPPO_PACK_FLOAT_RIGHT) != 0; c->clear_left = (flags & HIPPO_PACK_CLEAR_LEFT) != 0; c->clear_right = (flags & HIPPO_PACK_CLEAR_RIGHT) != 0; if ((c->float_left && c->float_right) || (c->float_left && c->fixed) || (c->float_right && c->fixed)) g_warning("Only one of FLOAT_LEFT, FLOAT_RIGHT, FLOAT_EXPAND can be used at once"); return TRUE; } typedef struct { HippoCanvasCompareChildFunc func; void *data; } ChildSortData; static int child_compare_func(const void *a, const void *b, void *data) { ChildSortData *csd = data; BoxChildPrivate *child_a = (BoxChildPrivate*) a; BoxChildPrivate *child_b = (BoxChildPrivate*) b; return (* csd->func) (child_a->public.item, child_b->public.item, csd->data); } void hippo_canvas_box_sort(HippoCanvasBox *box, HippoCanvasCompareChildFunc compare_func, void *data) { ChildSortData csd; csd.func = compare_func; csd.data = data; box->children = g_slist_sort_with_data(box->children, child_compare_func, &csd); hippo_canvas_item_emit_request_changed(HIPPO_CANVAS_ITEM(box)); } static void update_in_layout(BoxChildPrivate *child) { child->public.in_layout = !child->public.fixed && child->public.visible; } static BoxChildPrivate * child_create_from_item(HippoCanvasBox *box, HippoCanvasItem *child, HippoPackFlags flags) { BoxChildPrivate *c; g_object_ref_sink(child); connect_child(box, child); c = g_new0(BoxChildPrivate, 1); c->ref_count = 1; c->public.item = child; set_flags(&c->public, flags); c->public.visible = TRUE; c->box = box; c->min_width = -1; c->min_height = -1; c->height_request_for_width = -1; update_in_layout(c); return c; } static void child_setup(HippoCanvasBox *box, HippoCanvasItem *child) { hippo_canvas_item_set_parent(child, HIPPO_CANVAS_CONTAINER(box)); if (box->context != NULL) hippo_canvas_item_set_context(child, HIPPO_CANVAS_CONTEXT(box)); else hippo_canvas_item_set_context(child, NULL); /* fixed items don't change the box's request, but they do * need to be request/allocated themselves, so we need to * do this even for fixed items */ hippo_canvas_item_emit_request_changed(HIPPO_CANVAS_ITEM(box)); } void hippo_canvas_box_insert_before(HippoCanvasBox *box, HippoCanvasItem *child, HippoCanvasItem *ref_child, HippoPackFlags flags) { BoxChildPrivate *c; BoxChildPrivate *ref_c; int position; g_return_if_fail(HIPPO_IS_CANVAS_BOX(box)); g_return_if_fail(HIPPO_IS_CANVAS_ITEM(child)); g_return_if_fail(find_child(box, child) == NULL); ref_c = find_child(box, ref_child); g_return_if_fail(ref_c != NULL); c = child_create_from_item(box, child, flags); position = g_slist_index(box->children, ref_c); box->children = g_slist_insert(box->children, c, position); child_setup(box, child); } void hippo_canvas_box_insert_after(HippoCanvasBox *box, HippoCanvasItem *child, HippoCanvasItem *ref_child, HippoPackFlags flags) { BoxChildPrivate *c; BoxChildPrivate *ref_c; int position; g_return_if_fail(HIPPO_IS_CANVAS_BOX(box)); g_return_if_fail(HIPPO_IS_CANVAS_ITEM(child)); g_return_if_fail(find_child(box, child) == NULL); ref_c = find_child(box, ref_child); g_return_if_fail(ref_c != NULL); c = child_create_from_item(box, child, flags); position = g_slist_index(box->children, ref_c); box->children = g_slist_insert(box->children, c, ++position); child_setup(box, child); } void hippo_canvas_box_insert_sorted(HippoCanvasBox *box, HippoCanvasItem *child, HippoPackFlags flags, HippoCanvasCompareChildFunc compare_func, void *data) { BoxChildPrivate *c; g_return_if_fail(HIPPO_IS_CANVAS_BOX(box)); g_return_if_fail(HIPPO_IS_CANVAS_ITEM(child)); g_return_if_fail(find_child(box, child) == NULL); c = child_create_from_item(box, child, flags); if (compare_func == NULL) { box->children = g_slist_append(box->children, c); } else { GSList *l; ChildSortData csd; csd.func = compare_func; csd.data = data; /* Could use g_slist_insert_sorted_with_data() for glib >= 2.10 */ l = box->children; while (l && child_compare_func(c, l->data, &csd) > 0) l = l->next; box->children = g_slist_insert_before(box->children, l, c); } child_setup(box, child); } /** * hippo_canvas_box_prepend: * @box: the canvas box * @child: the child to prepend * @flags: flags for how to layout the child * * See hippo_canvas_box_append() for all the details. */ void hippo_canvas_box_prepend(HippoCanvasBox *box, HippoCanvasItem *child, HippoPackFlags flags) { BoxChildPrivate *c; g_return_if_fail(HIPPO_IS_CANVAS_BOX(box)); g_return_if_fail(HIPPO_IS_CANVAS_ITEM(child)); g_return_if_fail(find_child(box, child) == NULL); c = child_create_from_item(box, child, flags); box->children = g_slist_prepend(box->children, c); child_setup(box, child); } /** * hippo_canvas_box_append: * @box: the canvas box * @child: the child to append * @flags: flags for how to layout the child * * Adds a child item to the box. #HIPPO_PACK_END means the child * should be added at the end of the box while normally the child * would be added at the start of the box. This is just like the "pack * end" concept in #GtkBox. #HIPPO_PACK_FIXED means the child is not * included in the layout algorithm, you have to set its position * manually with hippo_canvas_box_set_position(). #HIPPO_PACK_IF_FITS * means the child is "all or nothing"; if there isn't room to give * all children their natural width, then the "if fits" children can * be dropped. Dropping some children is often nicer than having all * the children squished or forcing the entire box to be too big. * * If you are familiar with GTK+ widget layout, note that #GtkMisc * functionality (alignment and padding) are incorporated into the * items themselves in the form of the alignment and border/padding * properties. #GtkFixed functionality is part of #HippoCanvasBox * because children can be packed #HIPPO_PACK_FIXED. #HippoCanvasBox * has an orientation property, rather than two subclasses for * horizontal and vertical. And #HIPPO_PACK_IF_FITS is not available * in GTK+ because it requires the "natural size" vs. "minimum size" * distinction that GTK+ lacks. */ void hippo_canvas_box_append(HippoCanvasBox *box, HippoCanvasItem *child, HippoPackFlags flags) { g_return_if_fail(HIPPO_IS_CANVAS_BOX(box)); g_return_if_fail(HIPPO_IS_CANVAS_ITEM(child)); hippo_canvas_box_insert_sorted(box, child, flags, NULL, NULL); } static void remove_box_child(HippoCanvasBox *box, BoxChildPrivate *c) { HippoCanvasItem *child; child = c->public.item; if (c->public.visible) { /* The area under the child now needs to be repainted */ int w, h; hippo_canvas_item_get_allocation(child, &w, &h); hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(box), c->x, c->y, w, h); } c->public.item = NULL; box->children = g_slist_remove(box->children, c); disconnect_child(box, child); hippo_canvas_item_set_context(child, NULL); hippo_canvas_item_set_parent(child, NULL); g_object_unref(child); hippo_canvas_box_child_unref(&c->public); hippo_canvas_item_emit_request_changed(HIPPO_CANVAS_ITEM(box)); } void hippo_canvas_box_remove(HippoCanvasBox *box, HippoCanvasItem *child) { BoxChildPrivate *c; g_return_if_fail(HIPPO_IS_CANVAS_BOX(box)); g_return_if_fail(HIPPO_IS_CANVAS_ITEM(child)); c = find_child(box, child); if (c == NULL) { g_warning("Trying to remove a canvas item from a box it isn't in"); return; } remove_box_child(box, c); } /** * hippo_canvas_box_remove_all: * @box: the canvas box * * Removes all children from the box without destroying them. You probably want * hipppo_canvas_box_clear() instead unless you have a particular reason to * preserve the children. The explicit destroy added by hipppo_canvas_box_clear() * will make your application more robust against memory leaks. **/ void hippo_canvas_box_remove_all(HippoCanvasBox *box) { g_return_if_fail(HIPPO_IS_CANVAS_BOX(box)); while (box->children != NULL) { BoxChildPrivate *child = box->children->data; remove_box_child(box, child); } } /** * hippo_canvas_box_clear: * @box: the canvas box * * Removes all children from the box and calls hippo_canvas_item_destroy() on them. **/ void hippo_canvas_box_clear(HippoCanvasBox *box) { g_return_if_fail(HIPPO_IS_CANVAS_BOX(box)); while (box->children != NULL) { BoxChildPrivate *child = box->children->data; HippoCanvasItem *item = child->public.item; g_object_ref(item); /* We could let this happen as a side-effect of destroying * the child; doing it this way results in a little less confusing * reentrancy. */ remove_box_child(box, child); hippo_canvas_item_destroy(item); g_object_unref(item); } } void hippo_canvas_box_move(HippoCanvasBox *box, HippoCanvasItem *child, HippoGravity gravity, int x, int y) { BoxChildPrivate *c; int w, h; g_return_if_fail(HIPPO_IS_CANVAS_BOX(box)); g_return_if_fail(HIPPO_IS_CANVAS_ITEM(child)); c = find_child(box, child); if (c == NULL) { g_warning("Trying to move a canvas item that isn't in the box"); return; } if (!c->public.fixed) { g_warning("Trying to move a canvas box child that isn't fixed"); return; } if (gravity != HIPPO_GRAVITY_NORTH_WEST) { int natural_width; int natural_height; /* Ensure the child has been requested */ request_child_natural_size(&c->public, &natural_width, &natural_height); switch (gravity) { case HIPPO_GRAVITY_NORTH_WEST: break; case HIPPO_GRAVITY_NORTH_EAST: x = x - natural_width; break; case HIPPO_GRAVITY_SOUTH_WEST: y = y - natural_height; break; case HIPPO_GRAVITY_SOUTH_EAST: x = x - natural_width; y = y - natural_height; break; } } if (c->x != x || c->y != y) { /* We only repaint, don't queue a resize - fixed items don't affect the * size request. */ hippo_canvas_item_get_allocation(child, &w, &h); if (c->public.visible) hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(box), c->x, c->y, w, h); c->x = x; c->y = y; if (c->public.visible) hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(box), c->x, c->y, w, h); } } void hippo_canvas_box_set_position(HippoCanvasBox *box, HippoCanvasItem *child, int x, int y) { hippo_canvas_box_move(box, child, HIPPO_GRAVITY_NORTH_WEST, x, y); } void hippo_canvas_box_get_position(HippoCanvasBox *box, HippoCanvasItem *child, int *x, int *y) { BoxChildPrivate *c; g_return_if_fail(HIPPO_IS_CANVAS_BOX(box)); g_return_if_fail(HIPPO_IS_CANVAS_ITEM(child)); c = find_child(box, child); if (c == NULL) { g_warning("Trying to get the position of a canvas item that isn't in the box"); return; } *x = c->x; *y = c->y; } static void children_list_callback(HippoCanvasItem *item, void *data) { GList **children = (GList**)data; *children = g_list_prepend (*children, item); } /** * hippo_canvas_box_get_children: * * Return value: (element-type CanvasBoxChild*) (transfer container): */ GList* hippo_canvas_box_get_children(HippoCanvasBox *box) { GList *children = NULL; g_return_val_if_fail(HIPPO_IS_CANVAS_BOX(box), NULL); hippo_canvas_box_foreach(box, children_list_callback, &children); /* return children in their original order */ children = g_list_reverse(children); return children; } gboolean hippo_canvas_box_is_empty(HippoCanvasBox *box) { g_return_val_if_fail(HIPPO_IS_CANVAS_BOX(box), FALSE); return box->children == NULL; } void hippo_canvas_box_foreach(HippoCanvasBox *box, HippoCanvasForeachChildFunc func, void *data) { GSList *link; GSList *next; g_return_if_fail(HIPPO_IS_CANVAS_BOX(box)); link = box->children; while (link != NULL) { BoxChildPrivate *child = link->data; next = link->next; /* allow removal of children in the foreach */ (* func) (child->public.item, data); link = next; } } /* reverse children's order and toggle all the start/end flags */ void hippo_canvas_box_reverse(HippoCanvasBox *box) { GSList *link; g_return_if_fail(HIPPO_IS_CANVAS_BOX(box)); if (box->children == NULL) return; /* we don't want this, because if we toggle the "end" flag * that already reverses the order */ /* box->children = g_slist_reverse(box->children); */ link = box->children; while (link != NULL) { BoxChildPrivate *child = link->data; child->public.end = !child->public.end; link = link->next; } hippo_canvas_item_emit_request_changed(HIPPO_CANVAS_ITEM(box)); } static gboolean hippo_canvas_box_get_child_visible (HippoCanvasContainer *container, HippoCanvasItem *child) { BoxChildPrivate *c; HippoCanvasBox *box; box = HIPPO_CANVAS_BOX(container); c = find_child(box, child); if (c == NULL) { g_warning("Trying to get visibility on a canvas item that isn't in the box"); return FALSE; } return c->public.visible; } static void hippo_canvas_box_set_child_visible (HippoCanvasContainer *container, HippoCanvasItem *child, gboolean visible) { BoxChildPrivate *c; HippoCanvasBox *box; box = HIPPO_CANVAS_BOX(container); c = find_child(box, child); if (c == NULL) { g_warning("Trying to set visibility on a canvas item that isn't in the box"); return; } visible = visible != FALSE; if (visible == c->public.visible) return; c->public.visible = visible; update_in_layout(c); if (c->public.fixed) { int w, h; /* We only repaint, don't queue a resize - fixed items don't affect the * size request. */ hippo_canvas_item_get_allocation(child, &w, &h); hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(box), c->x, c->y, w, h); } else hippo_canvas_item_emit_request_changed(HIPPO_CANVAS_ITEM(box)); } void hippo_canvas_box_set_child_packing (HippoCanvasBox *box, HippoCanvasItem *child, HippoPackFlags flags) { BoxChildPrivate *c; g_return_if_fail(HIPPO_IS_CANVAS_BOX(box)); g_return_if_fail(HIPPO_IS_CANVAS_ITEM(child)); c = find_child(box, child); if (c == NULL) { g_warning("Trying to set flags on a canvas item that isn't in the box"); return; } if (set_flags(&c->public, flags)) { update_in_layout(c); hippo_canvas_item_emit_request_changed(HIPPO_CANVAS_ITEM(box)); } } void hippo_canvas_box_set_clickable (HippoCanvasBox *box, gboolean clickable) { g_return_if_fail(HIPPO_IS_CANVAS_BOX(box)); box->clickable = clickable; } gboolean hippo_canvas_box_is_clickable (HippoCanvasBox *box) { g_return_val_if_fail(HIPPO_IS_CANVAS_BOX(box), FALSE); return box->clickable; } GType hippo_canvas_box_child_get_type (void) { static GType our_type = 0; if (our_type == 0) our_type = g_boxed_type_register_static (("HippoCanvasBoxChild"), (GBoxedCopyFunc) hippo_canvas_box_child_ref, (GBoxedFreeFunc) hippo_canvas_box_child_unref); return our_type; } /** * hippo_canvas_box_child_ref: * @child: a #HippoCanvasBoxChild * * Adds a reference to a #HippoCanvasBoxChild. The child will not * be freed before a corresponding call to hippo_canvas_box_child_unref() * * Return value: the child passed in */ HippoCanvasBoxChild * hippo_canvas_box_child_ref(HippoCanvasBoxChild *child) { g_return_val_if_fail(child != NULL, NULL); ((BoxChildPrivate *)child)->ref_count++; return child; } /** * hippo_canvas_box_child_ref: * @child: a #HippoCanvasBoxChild * * Release a reference previously added to a #HippoCanvasBoxChild. If ther * are no more outstanding references to the box child (including references * held by the parent box), the child and associated data will be freed. */ void hippo_canvas_box_child_unref(HippoCanvasBoxChild *child) { BoxChildPrivate *private; g_return_if_fail(child != NULL); private = (BoxChildPrivate *)child; private->ref_count--; if (private->ref_count == 0) { BoxChildQDataNode *node; for (node = private->qdata; node; node = node->next) { if (node->notify) node->notify(node->data); } if (private->qdata) g_slice_free_chain(BoxChildQDataNode, private->qdata, next); g_free(private); } } /** * hippo_canvas_box_child_set_qdata: * @child: a #HippoCanvasBoxChild * @key: a #GQuark identifying the data to store * @data: the data to store * @notify: a function to call when the data is replaced or the box child is freed * * Associates data with a #HippoCanvasBoxChild object * * Return value: the data previously stored, or %NULL if data was not * previously stored for the given key. */ void hippo_canvas_box_child_set_qdata(HippoCanvasBoxChild *child, GQuark key, gpointer data, GDestroyNotify notify) { BoxChildPrivate *private = (BoxChildPrivate *)child; BoxChildQDataNode *node; for (node = private->qdata; node; node = node->next) { if (node->key == key) break; } if (node == NULL) { node = g_slice_new(BoxChildQDataNode); node->key = key; node->next = private->qdata; private->qdata = node; } else { if (node->notify) node->notify(node->data); } node->data = data; node->notify = notify; } /** * hippo_canvas_box_child_get_qdata: * @child: a #HippoCanvasBoxChild * @key: a #GQuark identifying the data to retrieve * * Retrieves data previously stored with hippo_canvas_box_child_set_qdata() * * Return value: the data previously stored, or %NULL if data was not * previously stored for the given key. */ gpointer hippo_canvas_box_child_get_qdata(HippoCanvasBoxChild *child, GQuark key) { BoxChildPrivate *private = (BoxChildPrivate *)child; BoxChildQDataNode *node; for (node = private->qdata; node; node = node->next) { if (node->key == key) return node->data; } return NULL; } /** * hippo_canvas_box_find_box_child(HippoCanvasBox *box) * @box: a #HippoCanvasBox * @item: the canvas item to find the child object for * * Locates the #HippoCanvasBoxChild object for an item that is a child of the box. * * Return value: The #HippoCanvasBoxChild for the child item, or %NULL if the * item is not a child of the box. No reference is added to the returned * item. */ HippoCanvasBoxChild * hippo_canvas_box_find_box_child(HippoCanvasBox *box, HippoCanvasItem *item) { BoxChildPrivate *private; g_return_val_if_fail(HIPPO_IS_CANVAS_BOX(box), NULL); private = find_child(box, item); if (private) return &private->public; else return NULL; } /** * hippo_canvas_box_get_layout_children: * @box: a #HippoCanvasBox * * Return the list of children that a layout manager should manage. As compared * to hippo_canvas_box_get_children() this list omits widgets that are * not visible, positioned at a fixed position, or not geometry managed for * some other reason. It also returns a list of #HippoCanvasBoxChild rather * than a list of #HippoCanvasItem. * * If you are implementing a layout manager that iterates over the box's child list * directly (to save creating the list, say), you should check the 'in_layout' * property of each child before laying it out. * * Return value: (element-type CanvasBoxChild*) (transfer container): * a list of HippoCanvasBoxChild. The list should be freed with * g_list_free(), but the members don't have to be freed. (No reference count * is added to them.) */ GList * hippo_canvas_box_get_layout_children (HippoCanvasBox *box) { GList *result; GSList *link; g_return_val_if_fail(HIPPO_IS_CANVAS_BOX(box), NULL); result = NULL; for (link = box->children; link != NULL; link = link->next) { HippoCanvasBoxChild *child = link->data; if (child->in_layout) result = g_list_prepend(result, child); } return g_list_reverse(result); } /** * hippo_canvas_box_set_layout: * @box: a #HippoCanvasBox * @layout: the layout manager to set on the box or %NULL to use the * default box layout manager. * * Sets the layout manager to use for the box. A layout manager provides * an alternate method of laying out the children of a box. Once you set * a layout manager for the box, you will typically want to add children * to the box using the methods of the layout manager, rather than the * methods of the box, so that you can specify packing options that are * specific to the layout manager. */ void hippo_canvas_box_set_layout(HippoCanvasBox *box, HippoCanvasLayout *layout) { g_return_if_fail(HIPPO_IS_CANVAS_BOX(box)); if (box->layout) { hippo_canvas_layout_set_box(box->layout, NULL); g_object_unref(box->layout); box->layout = NULL; } box->layout = layout; if (box->layout) { g_object_ref(box->layout); hippo_canvas_layout_set_box(box->layout, box); } hippo_canvas_item_emit_request_changed(HIPPO_CANVAS_ITEM(box)); } /** * hippo_canvas_box_set_theme: * @box: a #HippoCanvasBox * @theme: the theme to set on the box or %NULL to unset the current one * * Sets the theme to use for the box. It breaks the normal style inheritance * by insulating the box and it's descendant into their own style context. It's * useful to embed components which provides their own application stylesheet. */ void hippo_canvas_box_set_theme (HippoCanvasBox *box, HippoCanvasTheme *theme) { g_return_if_fail(HIPPO_IS_CANVAS_BOX(box)); if (box->theme) g_object_unref(box->theme); box->theme = theme; if (box->theme) g_object_ref(box->theme); clear_style(box); hippo_canvas_context_emit_style_changed(HIPPO_CANVAS_CONTEXT(box), TRUE); } hippo-canvas-0.3.1/common/hippo/hippo-canvas-theme-image.h0000664000076400007640000000532711366237063020404 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_CANVAS_THEME_IMAGE_H__ #define __HIPPO_CANVAS_THEME_IMAGE_H__ #include #include G_BEGIN_DECLS /* A HippoCanvasThemeImage encapsulates an image with specified unscaled borders * on each edge. This class has the secondary purpose of encapsulating the use * of librvsg to render SVG images without revealing it in the public API. */ #define HIPPO_TYPE_CANVAS_THEME_IMAGE (hippo_canvas_theme_image_get_type ()) #define HIPPO_CANVAS_THEME_IMAGE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_CANVAS_THEME_IMAGE, HippoCanvasThemeImage)) #define HIPPO_CANVAS_THEME_IMAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), HIPPO_TYPE_CANVAS_THEME_IMAGE, HippoCanvasThemeImageClass)) #define HIPPO_IS_CANVAS_THEME_IMAGE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_CANVAS_THEME_IMAGE)) #define HIPPO_IS_CANVAS_THEME_IMAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), HIPPO_TYPE_CANVAS_THEME_IMAGE)) #define HIPPO_CANVAS_THEME_IMAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), HIPPO_TYPE_CANVAS_THEME_IMAGE, HippoCanvasThemeImageClass)) typedef struct _HippoCanvasThemeImage HippoCanvasThemeImage; typedef struct _HippoCanvasThemeImageClass HippoCanvasThemeImageClass; #define HIPPO_CANVAS_THEME_IMAGE_ERROR (hippo_canvas_theme_image_error_quark()) enum { HIPPO_CANVAS_THEME_IMAGE_ERROR_FAILED } HippoCanvasThemeImageError; GType hippo_canvas_theme_image_get_type (void) G_GNUC_CONST; GQuark hippo_canvas_theme_image_error_quark (void); HippoCanvasThemeImage *hippo_canvas_theme_image_new (const char *filename, int border_top, int border_right, int border_bottom, int border_left, GError **error); void hippo_canvas_theme_image_render (HippoCanvasThemeImage *image, cairo_t *cr, int x, int y, int width, int height); G_END_DECLS #endif /* __HIPPO_CANVAS_THEME_IMAGE_H__ */ hippo-canvas-0.3.1/common/hippo/hippo-canvas-util.h0000664000076400007640000000125411366237063017172 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_CANVAS_UTIL_H__ #define __HIPPO_CANVAS_UTIL_H__ #include G_BEGIN_DECLS /* utility methods used in hippo canvas */ #define HIPPO_TYPE_CAIRO_SURFACE (hippo_cairo_surface_get_type ()) GType hippo_cairo_surface_get_type (void) G_GNUC_CONST; /* A boxed type for GdkRegion until one gets into gtk+ itself. */ #ifdef GDK_TYPE_REGION #define PYGDK_TYPE_REGION GDK_TYPE_REGION #else GType pygdk_region_get_type (void) G_GNUC_CONST; #define PYGDK_TYPE_REGION (pygdk_region_get_type ()) #endif /* GDK_TYPE_REGION */ G_END_DECLS #endif /* __HIPPO_CANVAS_UTIL_H__ */ hippo-canvas-0.3.1/common/hippo/hippo-canvas-widgets.h0000664000076400007640000001014211366237063017657 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_CANVAS_WIDGETS_H__ #define __HIPPO_CANVAS_WIDGETS_H__ /* Collection of widget canvas items, implemented per-platform. * This is basically a lazy hack to stuff them all in one file like this. * The idea is to create token "no-op" canvas item GTypes for each possible * native widget that can be contained in an item, then have methods * that just pull out the native widget and do stuff to it. * * If we ever wanted to have methods or state on the widget items beyond just * chaining to the contained native widget, we'd probably want to split * things out into a separate file in a more normal way. */ #include G_BEGIN_DECLS #define HIPPO_DECLARE_WIDGET_ITEM(lower, Camel) \ typedef struct _HippoCanvas##Camel HippoCanvas##Camel; \ typedef struct _HippoCanvas##Camel##Class HippoCanvas##Camel##Class; \ GType hippo_canvas_##lower##_get_type(void); \ HippoCanvasItem* hippo_canvas_##lower##_new(void); /* BUTTON */ HIPPO_DECLARE_WIDGET_ITEM(button, Button) #define HIPPO_TYPE_CANVAS_BUTTON (hippo_canvas_button_get_type ()) #define HIPPO_CANVAS_BUTTON(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_CANVAS_BUTTON, HippoCanvasButton)) #define HIPPO_CANVAS_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), HIPPO_TYPE_CANVAS_BUTTON, HippoCanvasButtonClass)) #define HIPPO_IS_CANVAS_BUTTON(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_CANVAS_BUTTON)) #define HIPPO_IS_CANVAS_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), HIPPO_TYPE_CANVAS_BUTTON)) #define HIPPO_CANVAS_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), HIPPO_TYPE_CANVAS_BUTTON, HippoCanvasButtonClass)) /* SCROLLBARS */ HIPPO_DECLARE_WIDGET_ITEM(scrollbars, Scrollbars) #define HIPPO_TYPE_CANVAS_SCROLLBARS (hippo_canvas_scrollbars_get_type ()) #define HIPPO_CANVAS_SCROLLBARS(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_CANVAS_SCROLLBARS, HippoCanvasScrollbars)) #define HIPPO_CANVAS_SCROLLBARS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), HIPPO_TYPE_CANVAS_SCROLLBARS, HippoCanvasScrollbarsClass)) #define HIPPO_IS_CANVAS_SCROLLBARS(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_CANVAS_SCROLLBARS)) #define HIPPO_IS_CANVAS_SCROLLBARS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), HIPPO_TYPE_CANVAS_SCROLLBARS)) #define HIPPO_CANVAS_SCROLLBARS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), HIPPO_TYPE_CANVAS_SCROLLBARS, HippoCanvasScrollbarsClass)) /* ENTRY */ HIPPO_DECLARE_WIDGET_ITEM(entry, Entry) #define HIPPO_TYPE_CANVAS_ENTRY (hippo_canvas_entry_get_type ()) #define HIPPO_CANVAS_ENTRY(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_CANVAS_ENTRY, HippoCanvasEntry)) #define HIPPO_CANVAS_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), HIPPO_TYPE_CANVAS_ENTRY, HippoCanvasEntryClass)) #define HIPPO_IS_CANVAS_ENTRY(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_CANVAS_ENTRY)) #define HIPPO_IS_CANVAS_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), HIPPO_TYPE_CANVAS_ENTRY)) #define HIPPO_CANVAS_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), HIPPO_TYPE_CANVAS_ENTRY, HippoCanvasEntryClass)) /* METHODS */ void hippo_canvas_scrollbars_set_root (HippoCanvasScrollbars *scrollbars, HippoCanvasItem *item); typedef enum { HIPPO_SCROLLBAR_NEVER, HIPPO_SCROLLBAR_AUTOMATIC, HIPPO_SCROLLBAR_ALWAYS } HippoScrollbarPolicy; void hippo_canvas_scrollbars_set_policy (HippoCanvasScrollbars *scrollbars, HippoOrientation orientation, HippoScrollbarPolicy policy); guint hippo_canvas_entry_get_position (HippoCanvasEntry *entry); void hippo_canvas_entry_set_position (HippoCanvasEntry *entry, guint pos); G_END_DECLS #endif /* __HIPPO_CANVAS_WIDGETS_H__ */ hippo-canvas-0.3.1/common/hippo/hippo-canvas-context.c0000664000076400007640000001262411366237063017677 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include "hippo-canvas-internal.h" #include "hippo-canvas-context.h" #include "hippo-canvas-marshal.h" #include "hippo-canvas-item.h" static void hippo_canvas_context_base_init (void *klass); enum { STYLE_CHANGED, LAST_SIGNAL }; static int signals[LAST_SIGNAL]; GType hippo_canvas_context_get_type(void) { static GType type = 0; if (type == 0) { static const GTypeInfo info = { sizeof(HippoCanvasContextIface), hippo_canvas_context_base_init, NULL /* base_finalize */ }; type = g_type_register_static(G_TYPE_INTERFACE, "HippoCanvasContext", &info, 0); } return type; } static void hippo_canvas_context_base_init(void *klass) { static gboolean initialized = FALSE; if (!initialized) { /* create signals in here */ signals[STYLE_CHANGED] = g_signal_new ("style-changed", HIPPO_TYPE_CANVAS_CONTEXT, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(HippoCanvasContextIface, style_changed), NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, 1, G_TYPE_BOOLEAN); initialized = TRUE; } } PangoLayout* hippo_canvas_context_create_layout(HippoCanvasContext *context) { g_return_val_if_fail(HIPPO_IS_CANVAS_CONTEXT(context), NULL); return HIPPO_CANVAS_CONTEXT_GET_IFACE(context)->create_layout(context); } cairo_surface_t* hippo_canvas_context_create_surface(HippoCanvasContext *context, cairo_content_t content, int width, int height) { g_return_val_if_fail(HIPPO_IS_CANVAS_CONTEXT(context), NULL); return HIPPO_CANVAS_CONTEXT_GET_IFACE(context)->create_surface(context, content, width, height); } cairo_surface_t* hippo_canvas_context_load_image(HippoCanvasContext *context, const char *image_name) { g_return_val_if_fail(HIPPO_IS_CANVAS_CONTEXT(context), NULL); return HIPPO_CANVAS_CONTEXT_GET_IFACE(context)->load_image(context, image_name); } guint32 hippo_canvas_context_get_color(HippoCanvasContext *context, HippoStockColor color) { g_return_val_if_fail(HIPPO_IS_CANVAS_CONTEXT(context), 0); return HIPPO_CANVAS_CONTEXT_GET_IFACE(context)->get_color(context, color); } void hippo_canvas_context_register_widget_item(HippoCanvasContext *context, HippoCanvasItem *item) { g_return_if_fail(HIPPO_IS_CANVAS_CONTEXT(context)); g_return_if_fail(HIPPO_IS_CANVAS_ITEM(item)); HIPPO_CANVAS_CONTEXT_GET_IFACE(context)->register_widget_item(context, item); } void hippo_canvas_context_unregister_widget_item (HippoCanvasContext *context, HippoCanvasItem *item) { g_return_if_fail(HIPPO_IS_CANVAS_CONTEXT(context)); g_return_if_fail(HIPPO_IS_CANVAS_ITEM(item)); HIPPO_CANVAS_CONTEXT_GET_IFACE(context)->unregister_widget_item(context, item); } void hippo_canvas_context_translate_to_widget(HippoCanvasContext *context, HippoCanvasItem *item, int *x_p, int *y_p) { g_return_if_fail(HIPPO_IS_CANVAS_CONTEXT(context)); g_return_if_fail(HIPPO_IS_CANVAS_ITEM(item)); HIPPO_CANVAS_CONTEXT_GET_IFACE(context)->translate_to_widget(context, item, x_p, y_p); } void hippo_canvas_context_translate_to_screen(HippoCanvasContext *context, HippoCanvasItem *item, int *x_p, int *y_p) { g_return_if_fail(HIPPO_IS_CANVAS_CONTEXT(context)); g_return_if_fail(HIPPO_IS_CANVAS_ITEM(item)); HIPPO_CANVAS_CONTEXT_GET_IFACE(context)->translate_to_screen(context, item, x_p, y_p); } HippoCanvasStyle * hippo_canvas_context_get_style (HippoCanvasContext *context) { g_return_val_if_fail(HIPPO_IS_CANVAS_CONTEXT(context), NULL); return HIPPO_CANVAS_CONTEXT_GET_IFACE(context)->get_style(context); } double hippo_canvas_context_get_resolution (HippoCanvasContext *context) { g_return_val_if_fail(HIPPO_IS_CANVAS_CONTEXT(context), 96.); return HIPPO_CANVAS_CONTEXT_GET_IFACE(context)->get_resolution(context); } PangoFontDescription * hippo_canvas_context_get_font (HippoCanvasContext *context) { g_return_val_if_fail(HIPPO_IS_CANVAS_CONTEXT(context), NULL); return HIPPO_CANVAS_CONTEXT_GET_IFACE(context)->get_font(context); } HippoAnimationManager * hippo_canvas_context_get_animation_manager (HippoCanvasContext *context) { g_return_val_if_fail(HIPPO_IS_CANVAS_CONTEXT(context), NULL); return HIPPO_CANVAS_CONTEXT_GET_IFACE(context)->get_animation_manager(context); } void hippo_canvas_context_emit_style_changed(HippoCanvasContext *context, gboolean resize_needed) { g_signal_emit(context, signals[STYLE_CHANGED], 0, resize_needed); } hippo-canvas-0.3.1/common/hippo/hippo-canvas-style.c0000664000076400007640000013647211366237063017363 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include #include #include "hippo-canvas-internal.h" #include "hippo-canvas-theme-internal.h" #include "hippo-canvas-type-builtins.h" #include "hippo-canvas-style.h" static void hippo_canvas_style_init (HippoCanvasStyle *style); static void hippo_canvas_style_class_init (HippoCanvasStyleClass *klass); static void hippo_canvas_style_dispose (GObject *object); static void hippo_canvas_style_finalize (GObject *object); #if 0 enum { LAST_SIGNAL }; static int signals[LAST_SIGNAL]; #endif struct _HippoCanvasStyle { GObject parent; HippoCanvasContext *context; HippoCanvasStyle *parent_style; HippoCanvasTheme *theme; PangoFontDescription *font_desc; guint32 background_color; guint32 foreground_color; guint32 border_color[4]; double border_width[4]; guint padding[4]; HippoCanvasThemeImage *background_theme_image; GType element_type; char *element_id; char *element_class; CRDeclaration **properties; int n_properties; guint properties_computed : 1; guint borders_computed : 1; guint background_computed : 1; guint foreground_computed : 1; guint background_theme_image_computed : 1; guint link_type : 2; }; struct _HippoCanvasStyleClass { GObjectClass parent_class; }; G_DEFINE_TYPE(HippoCanvasStyle, hippo_canvas_style, G_TYPE_OBJECT) static void hippo_canvas_style_init(HippoCanvasStyle *style) { style->link_type = HIPPO_CANVAS_LINK_NONE; } static void hippo_canvas_style_class_init(HippoCanvasStyleClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = hippo_canvas_style_dispose; object_class->finalize = hippo_canvas_style_finalize; } static void hippo_canvas_style_dispose(GObject *object) { /* HippoCanvasStyle *style = HIPPO_CANVAS_STYLE(object); */ G_OBJECT_CLASS(hippo_canvas_style_parent_class)->dispose(object); } static void hippo_canvas_style_finalize(GObject *object) { HippoCanvasStyle *style = HIPPO_CANVAS_STYLE(object); g_free (style->element_id); g_free (style->element_class); if (style->properties) { g_free(style->properties); style->properties = NULL; style->n_properties = 0; } if (style->font_desc) { pango_font_description_free(style->font_desc); style->font_desc = NULL; } if (style->background_theme_image) { g_object_unref(style->background_theme_image); style->background_theme_image = NULL; } G_OBJECT_CLASS(hippo_canvas_style_parent_class)->finalize(object); } HippoCanvasStyle * hippo_canvas_style_new (HippoCanvasContext *context, HippoCanvasStyle *parent_style, HippoCanvasTheme *theme, GType element_type, const char *element_id, const char *element_class) { HippoCanvasStyle *style; g_return_val_if_fail(HIPPO_IS_CANVAS_CONTEXT(context), NULL); g_return_val_if_fail(parent_style == NULL || HIPPO_IS_CANVAS_STYLE(parent_style), NULL); style = g_object_new(HIPPO_TYPE_CANVAS_STYLE, NULL); style->context = g_object_ref(context); if (parent_style != NULL) style->parent_style = g_object_ref(parent_style); else style->parent_style = NULL; if (theme == NULL && parent_style != NULL) theme = parent_style->theme; if (theme != NULL) style->theme = g_object_ref(theme); style->element_type = element_type; style->element_id = g_strdup(element_id); style->element_class = g_strdup(element_class); return style; } void hippo_canvas_style_set_link_type (HippoCanvasStyle *style, HippoCanvasLinkType link_type) { g_return_if_fail(HIPPO_IS_CANVAS_STYLE(style)); style->link_type = link_type; } HippoCanvasLinkType hippo_canvas_style_get_link_type (HippoCanvasStyle *style) { g_return_val_if_fail(HIPPO_IS_CANVAS_STYLE(style), HIPPO_CANVAS_LINK_NONE); return style->link_type; } HippoCanvasStyle * hippo_canvas_style_get_parent (HippoCanvasStyle *style) { g_return_val_if_fail(HIPPO_IS_CANVAS_STYLE(style), NULL); return style->parent_style; } HippoCanvasTheme * hippo_canvas_style_get_theme (HippoCanvasStyle *style) { g_return_val_if_fail(HIPPO_IS_CANVAS_STYLE(style), NULL); return style->theme; } GType hippo_canvas_style_get_element_type (HippoCanvasStyle *style) { g_return_val_if_fail(HIPPO_IS_CANVAS_STYLE(style), G_TYPE_NONE); return style->element_type; } const char * hippo_canvas_style_get_element_id (HippoCanvasStyle *style) { g_return_val_if_fail(HIPPO_IS_CANVAS_STYLE(style), NULL); return style->element_id; } const char * hippo_canvas_style_get_element_class (HippoCanvasStyle *style) { g_return_val_if_fail(HIPPO_IS_CANVAS_STYLE(style), NULL); return style->element_class; } static void ensure_properties(HippoCanvasStyle *style) { if (!style->properties_computed) { style->properties_computed = TRUE; if (style->theme) _hippo_canvas_theme_get_matched_properties(style->theme, style, &style->properties, &style->n_properties); } } typedef enum { VALUE_FOUND, VALUE_NOT_FOUND, VALUE_INHERIT } GetFromTermResult; static int color_component_from_double(double component) { /* http://people.redhat.com/otaylor/pixel-converting.html */ if (component >= 1.0) return 255; else return (int)(component * 256); } static GetFromTermResult get_color_from_rgba_term(CRTerm *term, guint32 *color) { CRTerm *arg = term->ext_content.func_param; CRNum *num; double r = 0, g = 0, b = 0, a = 0; int i; for (i = 0; i < 4; i++) { double value; if (arg == NULL) return VALUE_NOT_FOUND; if ((i == 0 && arg->the_operator != NO_OP) || (i > 0 && arg->the_operator != COMMA)) return VALUE_NOT_FOUND; if (arg->type != TERM_NUMBER) return VALUE_NOT_FOUND; num = arg->content.num; /* For simplicity, we convert a,r,g,b to [0,1.0] floats and then * convert them back below. Then when we set them on a cairo content * we convert them back to floats, and then cairo converts them * back to integers to pass them to X, and so forth... */ if (i < 3) { if (num->type == NUM_PERCENTAGE) { value = num->val / 100; } else if (num->type == NUM_GENERIC) { value = num->val / 255; } else { return VALUE_NOT_FOUND; } } else { if (num->type != NUM_GENERIC) return VALUE_NOT_FOUND; value = num->val; } value = CLAMP(value, 0, 1); switch (i) { case 0: r = value; break; case 1: g = value; break; case 2: b = value; break; case 3: a = value; break; } arg = arg->next; } *color = ((color_component_from_double(r) << 24) | (color_component_from_double(g) << 16) | (color_component_from_double(b) << 8) | ((color_component_from_double(a)))); return VALUE_FOUND; } static GetFromTermResult get_color_from_term(HippoCanvasStyle *style, CRTerm *term, guint32 *color) { CRRgb rgb; enum CRStatus status; /* Since libcroco doesn't know about rgba colors, it can't handle * the transparent keyword */ if (term->type == TERM_IDENT && term->content.str && term->content.str->stryng && term->content.str->stryng->str && strcmp(term->content.str->stryng->str, "transparent") == 0) { *color = 0; return VALUE_FOUND; } /* rgba() colors - a CSS3 addition, are not supported by libcroco, * but they are parsed as a "function", so we can emulate the * functionality. */ else if (term->type == TERM_FUNCTION && term->content.str && term->content.str->stryng && term->content.str->stryng->str && strcmp(term->content.str->stryng->str, "rgba") == 0) { return get_color_from_rgba_term(term, color); } status = cr_rgb_set_from_term(&rgb, term); if (status != CR_OK) return VALUE_NOT_FOUND; if (rgb.inherit) return VALUE_INHERIT; if (rgb.is_percentage) cr_rgb_compute_from_percentage(&rgb); *color = (rgb.red << 24) | (rgb.green << 16) | (rgb.blue << 8) | 0xff; return VALUE_FOUND; } gboolean hippo_canvas_style_get_color (HippoCanvasStyle *style, const char *property_name, gboolean inherit, guint32 *color) { int i; ensure_properties(style); for (i = style->n_properties - 1; i >= 0; i--) { CRDeclaration *decl = style->properties[i]; if (strcmp(decl->property->stryng->str, property_name) == 0) { GetFromTermResult result = get_color_from_term(style, decl->value, color); if (result == VALUE_FOUND) { return TRUE; } else if (result == VALUE_INHERIT) { if (style->parent_style) return hippo_canvas_style_get_color(style->parent_style, property_name, inherit, color); else break; } } } return FALSE; } gboolean hippo_canvas_style_get_double (HippoCanvasStyle *style, const char *property_name, gboolean inherit, double *value) { gboolean result = FALSE; int i; ensure_properties(style); for (i = style->n_properties - 1; i >= 0; i--) { CRDeclaration *decl = style->properties[i]; if (strcmp(decl->property->stryng->str, property_name) == 0) { CRTerm *term = decl->value; if (term->type != TERM_NUMBER || term->content.num->type != NUM_GENERIC) continue; *value = term->content.num->val; result = TRUE; break; } } if (!result && inherit && style->parent_style) result = hippo_canvas_style_get_double(style->parent_style, property_name, inherit, value); return result; } static PangoFontDescription * get_parent_font(HippoCanvasStyle *style) { if (style->parent_style) return hippo_canvas_style_get_font(style->parent_style); else return hippo_canvas_context_get_font(style->context); } static GetFromTermResult get_length_from_term(HippoCanvasStyle *style, CRTerm *term, gboolean use_parent_font, gdouble *length) { CRNum *num; enum { ABSOLUTE, POINTS, FONT_RELATIVE, } type = ABSOLUTE; double multiplier = 1.0; if (term->type != TERM_NUMBER) { g_warning("Ignoring length property that isn't a number"); return FALSE; } num = term->content.num; switch (num->type) { case NUM_LENGTH_PX: type = ABSOLUTE; multiplier = 1; break; case NUM_LENGTH_PT: type = POINTS; multiplier = 1; break; case NUM_LENGTH_IN: type = POINTS; multiplier = 72; break; case NUM_LENGTH_CM: type = POINTS; multiplier = 72. / 2.54; break; case NUM_LENGTH_MM: type = POINTS; multiplier = 72. / 25.4; break; case NUM_LENGTH_PC: type = POINTS; multiplier = 12. / 25.4; break; case NUM_LENGTH_EM: { type = FONT_RELATIVE; multiplier = 1; break; } case NUM_LENGTH_EX: { /* Doing better would require actually resolving the font description * to a specific font, and Pango doesn't have an ex metric anyways, * so we'd have to try and synthesize it by complicated means. * * The 0.5em is the CSS spec suggested thing to use when nothing * better is available. */ type = FONT_RELATIVE; multiplier = 0.5; break; } case NUM_INHERIT: return VALUE_INHERIT; case NUM_AUTO: g_warning("'auto' not supported for lengths"); return VALUE_NOT_FOUND; case NUM_GENERIC: g_warning("length values must specify a unit"); return VALUE_NOT_FOUND; case NUM_PERCENTAGE: g_warning("percentage lengths not currently supported"); return VALUE_NOT_FOUND; case NUM_ANGLE_DEG: case NUM_ANGLE_RAD: case NUM_ANGLE_GRAD: case NUM_TIME_MS: case NUM_TIME_S: case NUM_FREQ_HZ: case NUM_FREQ_KHZ: case NUM_UNKNOWN_TYPE: case NB_NUM_TYPE: g_warning("Ignoring invalid type of number of length property"); return VALUE_NOT_FOUND; } switch (type) { case ABSOLUTE: *length = num->val * multiplier; break; case POINTS: { double resolution = hippo_canvas_context_get_resolution(style->context); *length = num->val * multiplier * (resolution / 72.); } break; case FONT_RELATIVE: { PangoFontDescription *desc; double font_size; if (use_parent_font) desc = get_parent_font(style); else desc = hippo_canvas_style_get_font(style); font_size = (double)pango_font_description_get_size(desc) / PANGO_SCALE; if (pango_font_description_get_size_is_absolute(desc)) { *length = num->val * multiplier * font_size; } else { double resolution = hippo_canvas_context_get_resolution(style->context); *length = num->val * multiplier * (resolution / 72.) * font_size; } } break; default: g_assert_not_reached(); } return VALUE_FOUND; } static GetFromTermResult get_length_internal(HippoCanvasStyle *style, const char *property_name, const char *suffixed, gdouble *length) { int i; ensure_properties(style); for (i = style->n_properties - 1; i >= 0; i--) { CRDeclaration *decl = style->properties[i]; if (strcmp(decl->property->stryng->str, property_name) == 0 || (suffixed != NULL && strcmp(decl->property->stryng->str, suffixed) == 0)) { GetFromTermResult result = get_length_from_term(style, decl->value, FALSE, length); if (result != VALUE_NOT_FOUND) return result; } } return VALUE_NOT_FOUND; } gboolean hippo_canvas_style_get_length (HippoCanvasStyle *style, const char *property_name, gboolean inherit, gdouble *length) { GetFromTermResult result = get_length_internal(style, property_name, NULL, length); if (result == VALUE_FOUND) return TRUE; else if (result == VALUE_INHERIT) inherit = TRUE; if (inherit && style->parent_style && hippo_canvas_style_get_length(style->parent_style, property_name, inherit, length)) return TRUE; else return FALSE; } static void do_border_property(HippoCanvasStyle *style, CRDeclaration *decl) { const char *property_name = decl->property->stryng->str + 6; /* Skip 'border' */ HippoCanvasSide side = (HippoCanvasSide)-1; guint32 color; gboolean color_set = FALSE; double width; gboolean width_set = FALSE; int j; if (g_str_has_prefix(property_name, "-left")) { side = HIPPO_CANVAS_SIDE_LEFT; property_name += 5; } else if (g_str_has_prefix(property_name, "-right")) { side = HIPPO_CANVAS_SIDE_RIGHT; property_name += 6; } else if (g_str_has_prefix(property_name, "-top")) { side = HIPPO_CANVAS_SIDE_TOP; property_name += 4; } else if (g_str_has_prefix(property_name, "-bottom")) { side = HIPPO_CANVAS_SIDE_BOTTOM; property_name += 7; } if (strcmp(property_name, "") == 0) { /* Set value for width/color/style in any order */ CRTerm *term; for (term = decl->value; term; term = term->next) { GetFromTermResult result; if (term->type == TERM_IDENT) { const char *ident = term->content.str->stryng->str; if (strcmp(ident, "none") == 0 || strcmp(ident, "hidden") == 0) { width = 0.; continue; } else if (strcmp(ident, "solid") == 0) { /* The only thing we support */ continue; } else if (strcmp(ident, "dotted") == 0 || strcmp(ident, "dashed") == 0 || strcmp(ident, "solid") == 0 || strcmp(ident, "double") == 0 || strcmp(ident, "groove") == 0 || strcmp(ident, "ridge") == 0 || strcmp(ident, "inset") == 0 || strcmp(ident, "outset") == 0) { /* Treat the same as solid */ continue; } /* Presumably a color, fall through */ } if (term->type == TERM_NUMBER) { result = get_length_from_term(style, term, FALSE, &width); if (result != VALUE_NOT_FOUND) { width_set = result == VALUE_FOUND; continue; } } result = get_color_from_term(style, term, &color); if (result != VALUE_NOT_FOUND) { color_set = result == VALUE_FOUND; continue; } } } else if (strcmp(property_name, "-color") == 0) { if (decl->value == NULL || decl->value->next != NULL) return; if (get_color_from_term(style, decl->value, &color) == VALUE_FOUND) { /* Ignore inherit */ color_set = TRUE; } } else if (strcmp(property_name, "-width") == 0) { if (decl->value == NULL || decl->value->next != NULL) return; if (get_length_from_term(style, decl->value, FALSE, &width) == VALUE_FOUND) { /* Ignore inherit */ width_set = TRUE; } } if (side == (HippoCanvasSide)-1) { for (j = 0; j < 4; j++) { if (color_set) style->border_color[j] = color; if (width_set) style->border_width[j] = width; } } else { if (color_set) style->border_color[side] = color; if (width_set) style->border_width[side] = width; } } static void do_padding_property_term(HippoCanvasStyle *style, CRTerm *term, gboolean left, gboolean right, gboolean top, gboolean bottom) { gdouble value; if (get_length_from_term(style, term, FALSE, &value) != VALUE_FOUND) return; if (left) style->padding[HIPPO_CANVAS_SIDE_LEFT] = value; if (right) style->padding[HIPPO_CANVAS_SIDE_RIGHT] = value; if (top) style->padding[HIPPO_CANVAS_SIDE_TOP] = value; if (bottom) style->padding[HIPPO_CANVAS_SIDE_BOTTOM] = value; } static void do_padding_property(HippoCanvasStyle *style, CRDeclaration *decl) { const char *property_name = decl->property->stryng->str + 7; /* Skip 'padding' */ if (strcmp(property_name, "") == 0) { /* Slight deviation ... if we don't understand some of the terms and understand others, * then we set the ones we understand and ignore the others instead of ignoring the * whole thing */ if (decl->value == NULL) /* 0 values */ return; else if (decl->value->next == NULL) { /* 1 value */ do_padding_property_term(style, decl->value, TRUE, TRUE, TRUE, TRUE); /* left/right/top/bottom */ return; } else if (decl->value->next->next == NULL) { /* 2 values */ do_padding_property_term(style, decl->value, FALSE, FALSE, TRUE, TRUE); /* top/bottom */ do_padding_property_term(style, decl->value->next, TRUE, TRUE, FALSE, FALSE); /* left/right */ } else if (decl->value->next->next->next == NULL) { /* 3 values */ do_padding_property_term(style, decl->value, FALSE, FALSE, TRUE, FALSE); /* top */ do_padding_property_term(style, decl->value->next, TRUE, TRUE, FALSE, FALSE); /* left/right */ do_padding_property_term(style, decl->value->next->next, FALSE, FALSE, FALSE, TRUE); /* bottom */ } else if (decl->value->next->next->next == NULL) { /* 4 values */ do_padding_property_term(style, decl->value, FALSE, FALSE, TRUE, FALSE); do_padding_property_term(style, decl->value->next, FALSE, TRUE, FALSE, FALSE); /* left */ do_padding_property_term(style, decl->value->next->next, FALSE, FALSE, FALSE, TRUE); do_padding_property_term(style, decl->value->next->next->next, TRUE, FALSE, FALSE, TRUE); /* left */ } else { g_warning("Too many values for padding property"); return; } } else { if (decl->value == NULL || decl->value->next != NULL) return; if (strcmp(property_name, "-left") == 0) { do_padding_property_term(style, decl->value, TRUE, FALSE, FALSE, FALSE); } else if (strcmp(property_name, "-right") == 0) { do_padding_property_term(style, decl->value, FALSE, TRUE, FALSE, FALSE); } else if (strcmp(property_name, "-top") == 0) { do_padding_property_term(style, decl->value, FALSE, FALSE, TRUE, FALSE); } else if (strcmp(property_name, "-bottom") == 0) { do_padding_property_term(style, decl->value, FALSE, FALSE, FALSE, TRUE); } } } static void ensure_borders(HippoCanvasStyle *style) { int i, j; if (style->borders_computed) return; style->borders_computed = TRUE; ensure_properties(style); for (j = 0; j < 4; j++) { style->border_width[j] = 0; style->border_color[j] = 0x00000000; } for (i = 0; i < style->n_properties; i++) { CRDeclaration *decl = style->properties[i]; const char *property_name = decl->property->stryng->str; if (g_str_has_prefix(property_name, "border")) { do_border_property(style, decl); } else if (g_str_has_prefix(property_name, "padding")) { do_padding_property(style, decl); } } } double hippo_canvas_style_get_border_width(HippoCanvasStyle *style, HippoCanvasSide side) { g_return_val_if_fail(HIPPO_IS_CANVAS_STYLE(style), 0.); g_return_val_if_fail(side >= HIPPO_CANVAS_SIDE_LEFT && side <= HIPPO_CANVAS_SIDE_BOTTOM, 0.); ensure_borders(style); return style->border_width[side]; } static GetFromTermResult get_background_color_from_term(HippoCanvasStyle *style, CRTerm *term, guint32 *color) { GetFromTermResult result = get_color_from_term(style, term, color); if (result == VALUE_NOT_FOUND) { if (term->type == TERM_IDENT && strcmp(term->content.str->stryng->str, "transparent") == 0) { *color = 0x00000000; return VALUE_FOUND; } } return result; } guint32 hippo_canvas_style_get_background_color (HippoCanvasStyle *style) { g_return_val_if_fail(HIPPO_IS_CANVAS_STYLE(style), 0); if (!style->background_computed) { int i; style->background_computed = TRUE; style->background_color = 0x00000000; /* Transparent */ ensure_properties(style); for (i = style->n_properties - 1; i >= 0; i--) { CRDeclaration *decl = style->properties[i]; const char *property_name = decl->property->stryng->str; if (g_str_has_prefix(property_name, "background")) property_name += 10; else continue; if (strcmp(property_name, "") == 0) { /* We're very liberal here ... if any term in the expression we take it, and * we ignore the rest. The actual specification is: * * background: [<'background-color'> || <'background-image'> || <'background-repeat'> || <'background-attachment'> || <'background-position'>] | inherit */ CRTerm *term; for (term = decl->value; term; term = term->next) { GetFromTermResult result = get_background_color_from_term(style, term, &style->background_color); if (result == VALUE_FOUND) { return style->background_color; } else if (result == VALUE_INHERIT) { if (style->parent_style) style->background_color = hippo_canvas_style_get_background_color(style->parent_style); return style->background_color; } } } else if (strcmp(property_name, "-color") == 0) { GetFromTermResult result; if (decl->value == NULL || decl->value->next != NULL) continue; result = get_background_color_from_term(style, decl->value, &style->background_color); if (result == VALUE_FOUND) { return style->background_color; } else if (result == VALUE_INHERIT) { if (style->parent_style) style->background_color = hippo_canvas_style_get_background_color(style->parent_style); return style->background_color; } } } } return style->background_color; } guint32 hippo_canvas_style_get_foreground_color (HippoCanvasStyle *style) { g_return_val_if_fail(HIPPO_IS_CANVAS_STYLE(style), 0); if (!style->foreground_computed) { int i; style->foreground_computed = TRUE; ensure_properties(style); for (i = style->n_properties - 1; i >= 0; i--) { CRDeclaration *decl = style->properties[i]; if (strcmp(decl->property->stryng->str, "color") == 0) { GetFromTermResult result = get_color_from_term(style, decl->value, &style->foreground_color); if (result == VALUE_FOUND) { return style->foreground_color; } else if (result == VALUE_INHERIT) { break; } } } if (style->parent_style) style->foreground_color = hippo_canvas_style_get_foreground_color(style->parent_style); else style->foreground_color = hippo_canvas_context_get_color(style->context, HIPPO_STOCK_COLOR_FG); } return style->foreground_color; } guint32 hippo_canvas_style_get_border_color(HippoCanvasStyle *style, HippoCanvasSide side) { g_return_val_if_fail(HIPPO_IS_CANVAS_STYLE(style), 0); g_return_val_if_fail(side >= HIPPO_CANVAS_SIDE_LEFT && side <= HIPPO_CANVAS_SIDE_BOTTOM, 0.); ensure_borders(style); return style->border_color[side]; } double hippo_canvas_style_get_padding(HippoCanvasStyle *style, HippoCanvasSide side) { g_return_val_if_fail(HIPPO_IS_CANVAS_STYLE(style), 0.); g_return_val_if_fail(side >= HIPPO_CANVAS_SIDE_LEFT && side <= HIPPO_CANVAS_SIDE_BOTTOM, 0.); ensure_borders(style); return style->padding[side]; } HippoTextDecoration hippo_canvas_style_get_text_decoration (HippoCanvasStyle *style) { int i; ensure_properties(style); for (i = style->n_properties - 1; i >= 0; i--) { CRDeclaration *decl = style->properties[i]; if (strcmp(decl->property->stryng->str, "text-decoration") == 0) { CRTerm *term = decl->value; HippoTextDecoration decoration = 0; /* Specification is none | [ underline || overline || line-through || blink ] | inherit * * We're a bit more liberal, and for example treat 'underline none' as the same as * none. */ for (; term; term = term->next) { if (term->type != TERM_IDENT) goto next_decl; if (strcmp(term->content.str->stryng->str, "none") == 0) { return 0; } else if (strcmp(term->content.str->stryng->str, "inherit") == 0) { if (style->parent_style) return hippo_canvas_style_get_text_decoration(style->parent_style); } else if (strcmp(term->content.str->stryng->str, "underline") == 0) { decoration |= HIPPO_TEXT_DECORATION_UNDERLINE; } else if (strcmp(term->content.str->stryng->str, "overline") == 0) { decoration |= HIPPO_TEXT_DECORATION_OVERLINE; } else if (strcmp(term->content.str->stryng->str, "line-through") == 0) { decoration |= HIPPO_TEXT_DECORATION_LINE_THROUGH; } else if (strcmp(term->content.str->stryng->str, "blink") == 0) { decoration |= HIPPO_TEXT_DECORATION_BLINK; } else { goto next_decl; } } return decoration; } next_decl: ; } return 0; } static gboolean font_family_from_terms(CRTerm *term, char **family) { GString *family_string; gboolean result = FALSE; gboolean last_was_quoted = FALSE; if (!term) return FALSE; family_string = g_string_new(NULL); while (term) { if (term->type != TERM_STRING && term->type != TERM_IDENT) { goto out; } if (family_string->len > 0) { if (term->the_operator != COMMA && term->the_operator != NO_OP) goto out; /* Can concetenate to bare words, but not two quoted strings */ if ((term->the_operator == NO_OP && last_was_quoted) || term->type == TERM_STRING) goto out; if (term->the_operator == NO_OP) { g_string_append(family_string, " "); } else { g_string_append(family_string, ", "); } } else { if (term->the_operator != NO_OP) goto out; } g_string_append(family_string, term->content.str->stryng->str); term = term->next; } result = TRUE; out: if (result) { *family = g_string_free(family_string, FALSE); return TRUE; } else { *family = g_string_free(family_string, TRUE); return FALSE; } } /* In points */ static int font_sizes[] = { 6 * 1024, /* xx-small */ 8 * 1024, /* x-small */ 10 * 1024, /* small */ 12 * 1024, /* medium */ 16 * 1024, /* large */ 20 * 1024, /* x-large */ 24 * 1024, /* xx-large */ }; static gboolean font_size_from_term(HippoCanvasStyle *style, CRTerm *term, double *size) { if (term->type == TERM_IDENT) { double resolution = hippo_canvas_context_get_resolution(style->context); /* We work in integers to avoid double comparisons when converting back * from a size in pixels to a logical size. */ int size_points = (int)(0.5 + *size * (72. / resolution)); if (strcmp(term->content.str->stryng->str, "xx-small") == 0) { size_points = font_sizes[0]; } else if (strcmp(term->content.str->stryng->str, "x-small") == 0) { size_points = font_sizes[1]; } else if (strcmp(term->content.str->stryng->str, "small") == 0) { size_points = font_sizes[2]; } else if (strcmp(term->content.str->stryng->str, "medium") == 0) { size_points = font_sizes[3]; } else if (strcmp(term->content.str->stryng->str, "large") == 0) { size_points = font_sizes[4]; } else if (strcmp(term->content.str->stryng->str, "x-large") == 0) { size_points = font_sizes[5]; } else if (strcmp(term->content.str->stryng->str, "xx-large") == 0) { size_points = font_sizes[6]; } else if (strcmp(term->content.str->stryng->str, "smaller") == 0) { /* Find the standard size equal to or smaller than the current size */ int i = 0; while (i <= 6 && font_sizes[i] < size_points) i++; if (i > 6) { /* original size greater than any standard size */ size_points = (int)(0.5 + size_points / 1.2); } else { /* Go one smaller than that, if possible */ if (i > 0) i--; size_points = font_sizes[i]; } } else if (strcmp(term->content.str->stryng->str, "larger") == 0) { /* Find the standard size equal to or larger than the current size */ int i = 6; while (i >= 0 && font_sizes[i] > size_points) i--; if (i < 0) /* original size smaller than any standard size */ i = 0; /* Go one larger than that, if possible */ if (i < 6) i++; size_points = font_sizes[i]; } else { return FALSE; } *size = size_points * (resolution / 72.); return TRUE; } else if (term->type == TERM_NUMBER && term->content.num->type == NUM_PERCENTAGE) { *size *= term->content.num->val; } else if (get_length_from_term(style, term, TRUE, size) == VALUE_FOUND) { /* Convert from pixels to Pango units */ *size *= 1024; return TRUE; } return FALSE; } static gboolean font_weight_from_term(CRTerm *term, PangoWeight *weight, gboolean *weight_absolute) { if (term->type == TERM_NUMBER) { int weight_int; /* The spec only allows numeric weights from 100-900, though Pango * will handle any number. We just let anything through. */ if (term->content.num->type != NUM_GENERIC) return FALSE; weight_int = (int)(term->content.num->val + 0.5); *weight = weight_int; *weight_absolute = TRUE; } else if (term->type == TERM_IDENT) { /* FIXME: handle INHERIT */ if (strcmp(term->content.str->stryng->str, "bold") == 0) { *weight = PANGO_WEIGHT_BOLD; *weight_absolute = TRUE; } else if (strcmp(term->content.str->stryng->str, "normal") == 0) { *weight = PANGO_WEIGHT_NORMAL; *weight_absolute = TRUE; } else if (strcmp(term->content.str->stryng->str, "bolder") == 0) { *weight = PANGO_WEIGHT_BOLD; *weight_absolute = FALSE; } else if (strcmp(term->content.str->stryng->str, "lighter") == 0) { *weight = PANGO_WEIGHT_LIGHT; *weight_absolute = FALSE; } else { return FALSE; } } else { return FALSE; } return TRUE; } static gboolean font_style_from_term(CRTerm *term, PangoStyle *style) { if (term->type != TERM_IDENT) return FALSE; /* FIXME: handle INHERIT */ if (strcmp(term->content.str->stryng->str, "normal") == 0) *style = PANGO_STYLE_NORMAL; else if (strcmp(term->content.str->stryng->str, "oblique") == 0) *style = PANGO_STYLE_OBLIQUE; else if (strcmp(term->content.str->stryng->str, "italic") == 0) *style = PANGO_STYLE_ITALIC; else return FALSE; return TRUE; } static gboolean font_variant_from_term(CRTerm *term, PangoVariant *variant) { if (term->type != TERM_IDENT) return FALSE; /* FIXME: handle INHERIT */ if (strcmp(term->content.str->stryng->str, "normal") == 0) *variant = PANGO_VARIANT_NORMAL; else if (strcmp(term->content.str->stryng->str, "small-caps") == 0) *variant = PANGO_VARIANT_SMALL_CAPS; else return FALSE; return TRUE; } PangoFontDescription * hippo_canvas_style_get_font (HippoCanvasStyle *style) { PangoStyle font_style; gboolean font_style_set = FALSE; PangoVariant variant; gboolean variant_set = FALSE; PangoWeight weight; gboolean weight_absolute; gboolean weight_set = FALSE; double parent_size; double size = 0.; /* Suppress warning */ gboolean size_set = FALSE; char *family = NULL; int i; if (style->font_desc) return style->font_desc; style->font_desc = pango_font_description_copy(get_parent_font(style)); parent_size = pango_font_description_get_size(style->font_desc); if (!pango_font_description_get_size_is_absolute(style->font_desc)) { double resolution = hippo_canvas_context_get_resolution(style->context); parent_size *= (resolution / 72.); } ensure_properties(style); for (i = 0; i < style->n_properties; i++) { CRDeclaration *decl = style->properties[i]; if (strcmp(decl->property->stryng->str, "font") == 0) { PangoStyle tmp_style = PANGO_STYLE_NORMAL; PangoVariant tmp_variant = PANGO_VARIANT_NORMAL; PangoWeight tmp_weight = PANGO_WEIGHT_NORMAL; gboolean tmp_weight_absolute = FALSE; double tmp_size; CRTerm *term = decl->value; /* A font specification starts with style/variant/weight * in any order. Each is allowed to be specified only once, * but we don't enforce that. */ for (; term; term = term->next) { if (font_style_from_term(term, &tmp_style)) ; else if (font_variant_from_term(term, &tmp_variant)) ; else if (font_weight_from_term(term, &tmp_weight, &tmp_weight_absolute)) ; else break; } /* The size is mandatory */ if (term == NULL || term->type != TERM_NUMBER) { g_warning("Size missing from font property"); continue; } tmp_size = parent_size; if (!font_size_from_term(style, term, &tmp_size)) { g_warning("Couldn't parse size in font property"); continue; } if (term != NULL && term->type && TERM_NUMBER && term->the_operator == DIVIDE) { /* Ignore line-height specification */ term = term->next; } /* the font family is mandatory - it is a comma-separated list of * names. */ if (!font_family_from_terms(term, &family)) { g_warning("Couldn't parse family in font property"); continue; } font_style = tmp_style; font_style_set = TRUE; weight = tmp_weight; weight_absolute = tmp_weight_absolute; weight_set = TRUE; variant = tmp_variant; variant_set = TRUE; size = tmp_size; size_set = TRUE; } else if (strcmp(decl->property->stryng->str, "family") == 0) { if (!font_family_from_terms(decl->value, &family)) { g_warning("Couldn't parse family in font property"); continue; } } else if (strcmp(decl->property->stryng->str, "font-weight") == 0) { if (decl->value == NULL || decl->value->next != NULL) continue; if (font_weight_from_term(decl->value, &weight, &weight_absolute)) weight_set = TRUE; } else if (strcmp(decl->property->stryng->str, "font-style") == 0) { if (decl->value == NULL || decl->value->next != NULL) continue; if (font_style_from_term(decl->value, &font_style)) font_style_set = TRUE; } else if (strcmp(decl->property->stryng->str, "font-variant") == 0) { if (decl->value == NULL || decl->value->next != NULL) continue; if (font_variant_from_term(decl->value, &variant)) variant_set = TRUE; } else if (strcmp(decl->property->stryng->str, "font-size") == 0) { gdouble tmp_size; if (decl->value == NULL || decl->value->next != NULL) continue; tmp_size = parent_size; if (font_size_from_term(style, decl->value, &tmp_size)) { size = tmp_size; size_set = TRUE; } } } if (family) pango_font_description_set_family(style->font_desc, family); if (size_set) pango_font_description_set_absolute_size(style->font_desc, size); if (weight_set) { if (!weight_absolute) { /* bolder/lighter are supposed to switch between available styles, but with * font substitution, that gets to be a pretty fuzzy concept. So we use * a fixed step of 200. (The spec says 100, but that might not take us from * normal to bold. */ PangoWeight old_weight = pango_font_description_get_weight(style->font_desc); if (weight == PANGO_WEIGHT_BOLD) weight = old_weight + 200; else weight = old_weight - 200; if (weight < 100) weight = 100; if (weight > 900) weight = 900; } pango_font_description_set_weight(style->font_desc, weight); } if (font_style_set) pango_font_description_set_style(style->font_desc, font_style); if (variant_set) pango_font_description_set_variant(style->font_desc, variant); return style->font_desc; } HippoCanvasThemeImage * hippo_canvas_style_get_background_theme_image (HippoCanvasStyle *style) { int i; if (style->background_theme_image_computed) return style->background_theme_image; style->background_theme_image = NULL; style->background_theme_image_computed = TRUE; ensure_properties(style); for (i = style->n_properties - 1; i >= 0; i--) { CRDeclaration *decl = style->properties[i]; if (strcmp(decl->property->stryng->str, "-hippo-background-image") == 0) { CRTerm *term = decl->value; int lengths[4]; int n_lengths = 0; int i; const char *url; int border_top; int border_right; int border_bottom; int border_left; char *filename; GError *error = NULL; /* First term must be the URL to the image */ if (term->type != TERM_URI) goto next_property; url = term->content.str->stryng->str; term = term->next; /* Followed by 0 to 4 lengths */ for (i = 0; i < 4; i++) { double value; if (term == NULL) break; if (get_length_from_term(style, term, FALSE, &value) != VALUE_FOUND) goto next_property; lengths[n_lengths] = (int)(0.5 + value); n_lengths++; term = term->next; } switch (n_lengths) { case 0: border_top = border_right = border_bottom = border_left = 0; break; case 1: border_top = border_right = border_bottom = border_left = lengths[0]; break; case 2: border_top = border_bottom = lengths[0]; border_left = border_right = lengths[1]; break; case 3: border_top = lengths[0]; border_left = border_right = lengths[1]; border_bottom = lengths[2]; break; case 4: default: border_top = lengths[0]; border_right = lengths[1]; border_bottom = lengths[2]; border_left = lengths[3]; break; } filename = _hippo_canvas_theme_resolve_url(style->theme, decl->parent_statement->parent_sheet, url); if (filename == NULL) goto next_property; style->background_theme_image = hippo_canvas_theme_image_new(filename, border_top, border_right, border_bottom, border_left, &error); g_free(filename); if (style->background_theme_image == NULL) { g_warning("Failed to load theme image: %s", error->message); g_error_free(error); goto next_property; } else { return style->background_theme_image; } } next_property: ; } return NULL; } gboolean hippo_canvas_style_paint (HippoCanvasStyle *style, cairo_t *cr, const char *name, double x, double y, double width, double height) { HippoCanvasThemeEngine *theme_engine; g_return_val_if_fail(HIPPO_IS_CANVAS_STYLE(style), FALSE); if (!style->theme) return FALSE; theme_engine = hippo_canvas_theme_get_theme_engine(style->theme); if (theme_engine == NULL) return FALSE; return hippo_canvas_theme_engine_paint(theme_engine, style, cr, name, x, y, width, height); } hippo-canvas-0.3.1/common/hippo/hippo-canvas-image.h0000664000076400007640000000272411366237063017302 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_CANVAS_IMAGE_H__ #define __HIPPO_CANVAS_IMAGE_H__ /* A canvas item that renders a Cairo image surface */ #include "hippo-canvas-item.h" #include "hippo-canvas-box.h" #include G_BEGIN_DECLS typedef struct _HippoCanvasImage HippoCanvasImage; typedef struct _HippoCanvasImageClass HippoCanvasImageClass; #define HIPPO_TYPE_CANVAS_IMAGE (hippo_canvas_image_get_type ()) #define HIPPO_CANVAS_IMAGE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_CANVAS_IMAGE, HippoCanvasImage)) #define HIPPO_CANVAS_IMAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), HIPPO_TYPE_CANVAS_IMAGE, HippoCanvasImageClass)) #define HIPPO_IS_CANVAS_IMAGE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_CANVAS_IMAGE)) #define HIPPO_IS_CANVAS_IMAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), HIPPO_TYPE_CANVAS_IMAGE)) #define HIPPO_CANVAS_IMAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), HIPPO_TYPE_CANVAS_IMAGE, HippoCanvasImageClass)) struct _HippoCanvasImage { HippoCanvasBox box; cairo_surface_t *surface; char *image_name; int scale_width; int scale_height; }; struct _HippoCanvasImageClass { HippoCanvasBoxClass parent_class; }; GType hippo_canvas_image_get_type (void) G_GNUC_CONST; HippoCanvasItem* hippo_canvas_image_new (void); G_END_DECLS #endif /* __HIPPO_CANVAS_IMAGE_H__ */ hippo-canvas-0.3.1/common/hippo/hippo-graphics.c0000664000076400007640000000577411366237063016552 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include "hippo-graphics.h" GType hippo_rectangle_get_type (void) { static GType type = 0; if (G_UNLIKELY(type == 0)) { type = g_boxed_type_register_static("HippoRectangle", (GBoxedCopyFunc)hippo_rectangle_copy, (GBoxedFreeFunc)hippo_rectangle_free); } return type; } gboolean hippo_rectangle_intersect(const HippoRectangle *src1, const HippoRectangle *src2, HippoRectangle *dest) { int dest_x, dest_y; int dest_w, dest_h; dest_x = MAX (src1->x, src2->x); dest_y = MAX (src1->y, src2->y); dest_w = MIN (src1->x + src1->width, src2->x + src2->width) - dest_x; dest_h = MIN (src1->y + src1->height, src2->y + src2->height) - dest_y; if (dest_w > 0 && dest_h > 0) { dest->x = dest_x; dest->y = dest_y; dest->width = dest_w; dest->height = dest_h; return TRUE; } else { dest->width = 0; dest->height = 0; return FALSE; } } gboolean hippo_rectangle_equal(const HippoRectangle *r1, const HippoRectangle *r2) { return r1->x == r2->x && r1->y == r2->y && r1->width == r2->width && r1->height == r2->height; } HippoRectangle * hippo_rectangle_copy(HippoRectangle *r) { g_return_val_if_fail(r != NULL, NULL); return (HippoRectangle *)g_memdup(r, sizeof(HippoRectangle)); } void hippo_rectangle_free(HippoRectangle *r) { g_return_if_fail(r != NULL); g_free(r); } #define HIPPO_GET_RED(rgba) (((rgba) >> 24) / 255.0) #define HIPPO_GET_GREEN(rgba) ((((rgba) & 0x00ff0000) >> 16) / 255.0) #define HIPPO_GET_BLUE(rgba) ((((rgba) & 0x0000ff00) >> 8) / 255.0) #define HIPPO_GET_ALPHA(rgba) (((rgba) & 0x000000ff) / 255.0) void hippo_cairo_set_source_rgba32(cairo_t *cr, guint32 color) { /* trying to avoid alpha 255 becoming a double alpha that isn't quite opaque ? * not sure this is needed. */ if ((color & 0xff) == 0xff) { cairo_set_source_rgb(cr, HIPPO_GET_RED(color), HIPPO_GET_GREEN(color), HIPPO_GET_BLUE(color)); } else { cairo_set_source_rgba(cr, HIPPO_GET_RED(color), HIPPO_GET_GREEN(color), HIPPO_GET_BLUE(color), HIPPO_GET_ALPHA(color)); } } void hippo_cairo_pattern_add_stop_rgba32(cairo_pattern_t *pattern, double offset, guint32 color) { if ((color & 0xff) == 0xff) { cairo_pattern_add_color_stop_rgb(pattern, offset, HIPPO_GET_RED(color), HIPPO_GET_GREEN(color), HIPPO_GET_BLUE(color)); } else { cairo_pattern_add_color_stop_rgba(pattern, offset, HIPPO_GET_RED(color), HIPPO_GET_GREEN(color), HIPPO_GET_BLUE(color), HIPPO_GET_ALPHA(color)); } } hippo-canvas-0.3.1/common/hippo/hippo-canvas-container.h0000664000076400007640000000437411366237063020205 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_CANVAS_CONTAINER_H__ #define __HIPPO_CANVAS_CONTAINER_H__ /* * The HippoCanvasContainer interface is implemented by a HippoCanvasItem that can contain * other items. Also read the comment in hippo-canvas-context.h about the difference between * the container and the context; some methods you might expect to be container methods in * GTK+ are context methods in HippoCanvas. * * Some methods on HippoCanvasBox should really be in this interface, if you find you need them * then feel free to move them here. For example get_children(), remove(), remove_all(), etc. */ #include G_BEGIN_DECLS #define HIPPO_TYPE_CANVAS_CONTAINER (hippo_canvas_container_get_type ()) #define HIPPO_CANVAS_CONTAINER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_CANVAS_CONTAINER, HippoCanvasContainer)) #define HIPPO_IS_CANVAS_CONTAINER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_CANVAS_CONTAINER)) #define HIPPO_CANVAS_CONTAINER_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), HIPPO_TYPE_CANVAS_CONTAINER, HippoCanvasContainerIface)) struct _HippoCanvasContainerIface { GTypeInterface base_iface; gboolean (* get_child_visible) (HippoCanvasContainer *container, HippoCanvasItem *child); void (* set_child_visible) (HippoCanvasContainer *container, HippoCanvasItem *child, gboolean visible); }; GType hippo_canvas_container_get_type (void) G_GNUC_CONST; gboolean hippo_canvas_container_get_child_visible (HippoCanvasContainer *container, HippoCanvasItem *child); void hippo_canvas_container_set_child_visible (HippoCanvasContainer *container, HippoCanvasItem *child, gboolean visible); G_END_DECLS #endif /* __HIPPO_CANVAS_CONTAINER_H__ */ hippo-canvas-0.3.1/common/hippo/hippo-canvas-gradient.c0000664000076400007640000001577511366237063020022 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include "hippo-canvas-internal.h" #include #include #include "hippo-canvas-gradient.h" #include "hippo-canvas-box.h" static void hippo_canvas_gradient_init (HippoCanvasGradient *gradient); static void hippo_canvas_gradient_class_init (HippoCanvasGradientClass *klass); static void hippo_canvas_gradient_iface_init (HippoCanvasItemIface *item_class); static void hippo_canvas_gradient_finalize (GObject *object); static void hippo_canvas_gradient_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); static void hippo_canvas_gradient_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); /* Canvas box methods */ static void hippo_canvas_gradient_paint_below_children (HippoCanvasBox *box, cairo_t *cr, GdkRegion *damaged_region); struct _HippoCanvasGradient { HippoCanvasBox box; guint32 start_color; guint32 end_color; }; struct _HippoCanvasGradientClass { HippoCanvasBoxClass parent_class; }; enum { NO_SIGNALS_YET, LAST_SIGNAL }; /* static int signals[LAST_SIGNAL]; */ enum { PROP_0, PROP_START_COLOR, PROP_END_COLOR }; G_DEFINE_TYPE_WITH_CODE(HippoCanvasGradient, hippo_canvas_gradient, HIPPO_TYPE_CANVAS_BOX, G_IMPLEMENT_INTERFACE(HIPPO_TYPE_CANVAS_ITEM, hippo_canvas_gradient_iface_init)); static void hippo_canvas_gradient_init(HippoCanvasGradient *gradient) { } static HippoCanvasItemIface *item_parent_class; static void hippo_canvas_gradient_iface_init(HippoCanvasItemIface *item_class) { item_parent_class = g_type_interface_peek_parent(item_class); } static void hippo_canvas_gradient_class_init(HippoCanvasGradientClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); HippoCanvasBoxClass *box_class = HIPPO_CANVAS_BOX_CLASS(klass); object_class->set_property = hippo_canvas_gradient_set_property; object_class->get_property = hippo_canvas_gradient_get_property; object_class->finalize = hippo_canvas_gradient_finalize; box_class->paint_below_children = hippo_canvas_gradient_paint_below_children; g_object_class_install_property(object_class, PROP_START_COLOR, g_param_spec_uint("start-color", _("Start color"), _("First color in the gradient"), 0, G_MAXUINT, 0, G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property(object_class, PROP_END_COLOR, g_param_spec_uint("end-color", _("End color"), _("Last color in the gradient"), 0, G_MAXUINT, 0, G_PARAM_READABLE | G_PARAM_WRITABLE)); } static void hippo_canvas_gradient_finalize(GObject *object) { /* HippoCanvasGradient *gradient = HIPPO_CANVAS_GRADIENT(object); */ G_OBJECT_CLASS(hippo_canvas_gradient_parent_class)->finalize(object); } HippoCanvasItem* hippo_canvas_gradient_new(void) { HippoCanvasGradient *gradient = g_object_new(HIPPO_TYPE_CANVAS_GRADIENT, NULL); return HIPPO_CANVAS_ITEM(gradient); } static void hippo_canvas_gradient_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { HippoCanvasGradient *gradient; gradient = HIPPO_CANVAS_GRADIENT(object); switch (prop_id) { case PROP_START_COLOR: { guint32 color = g_value_get_uint(value); if (color != gradient->start_color) { gradient->start_color = color; hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(gradient), 0, 0, -1, -1); } } break; case PROP_END_COLOR: { guint32 color = g_value_get_uint(value); if (color != gradient->end_color) { gradient->end_color = color; hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(gradient), 0, 0, -1, -1); } } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } } static void hippo_canvas_gradient_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { HippoCanvasGradient *gradient; gradient = HIPPO_CANVAS_GRADIENT (object); switch (prop_id) { case PROP_START_COLOR: g_value_set_uint(value, gradient->start_color); break; case PROP_END_COLOR: g_value_set_uint(value, gradient->end_color); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } } static void hippo_canvas_gradient_paint_below_children(HippoCanvasBox *box, cairo_t *cr, GdkRegion *damaged_region) { HippoCanvasGradient *gradient = HIPPO_CANVAS_GRADIENT(box); cairo_pattern_t *pattern; HippoRectangle area; hippo_canvas_box_get_background_area(box, &area); /* just hardcoded vertical for now */ pattern = cairo_pattern_create_linear(area.x, area.y, area.x, area.y + area.height); hippo_cairo_pattern_add_stop_rgba32(pattern, 0.0, gradient->start_color); hippo_cairo_pattern_add_stop_rgba32(pattern, 1.0, gradient->end_color); cairo_set_source(cr, pattern); cairo_rectangle(cr, area.x, area.y, area.width, area.height); cairo_fill(cr); cairo_pattern_destroy(pattern); } hippo-canvas-0.3.1/common/hippo/hippo-canvas-text.h0000664000076400007640000000311511366237063017177 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_CANVAS_TEXT_H__ #define __HIPPO_CANVAS_TEXT_H__ /* A text paragraph canvas item. */ #include "hippo-canvas-box.h" #include #include G_BEGIN_DECLS typedef enum { HIPPO_CANVAS_SIZE_FULL_WIDTH, HIPPO_CANVAS_SIZE_WRAP_WORD, HIPPO_CANVAS_SIZE_ELLIPSIZE_END } HippoCanvasSizeMode; typedef struct _HippoCanvasText HippoCanvasText; typedef struct _HippoCanvasTextClass HippoCanvasTextClass; #define HIPPO_TYPE_CANVAS_TEXT (hippo_canvas_text_get_type ()) #define HIPPO_CANVAS_TEXT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_CANVAS_TEXT, HippoCanvasText)) #define HIPPO_CANVAS_TEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), HIPPO_TYPE_CANVAS_TEXT, HippoCanvasTextClass)) #define HIPPO_IS_CANVAS_TEXT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_CANVAS_TEXT)) #define HIPPO_IS_CANVAS_TEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), HIPPO_TYPE_CANVAS_TEXT)) #define HIPPO_CANVAS_TEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), HIPPO_TYPE_CANVAS_TEXT, HippoCanvasTextClass)) struct _HippoCanvasText { HippoCanvasBox box; char *text; PangoAttrList *attributes; double font_scale; guint size_mode : 3; guint is_ellipsized : 1; }; struct _HippoCanvasTextClass { HippoCanvasBoxClass parent_class; }; GType hippo_canvas_text_get_type (void) G_GNUC_CONST; HippoCanvasItem* hippo_canvas_text_new (void); G_END_DECLS #endif /* __HIPPO_CANVAS_TEXT_H__ */ hippo-canvas-0.3.1/common/hippo/hippo-canvas-layout.c0000664000076400007640000000636411366237063017534 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include "hippo-canvas-layout.h" GType hippo_canvas_layout_get_type(void) { static GType type = 0; if (type == 0) { static const GTypeInfo info = { sizeof(HippoCanvasLayoutIface), NULL /* base_init */, NULL /* base_finalize */ }; type = g_type_register_static(G_TYPE_INTERFACE, "HippoCanvasLayout", &info, 0); } return type; } void hippo_canvas_layout_set_box(HippoCanvasLayout *layout, HippoCanvasBox *box) { HippoCanvasLayoutIface *iface; g_return_if_fail(HIPPO_IS_CANVAS_LAYOUT(layout)); iface = HIPPO_CANVAS_LAYOUT_GET_IFACE(layout); if (iface->set_box) HIPPO_CANVAS_LAYOUT_GET_IFACE(layout)->set_box(layout, box); } void hippo_canvas_layout_get_width_request(HippoCanvasLayout *layout, int *min_width_p, int *natural_width_p) { HippoCanvasLayoutIface *iface; g_return_if_fail(HIPPO_IS_CANVAS_LAYOUT(layout)); iface = HIPPO_CANVAS_LAYOUT_GET_IFACE(layout); if (iface->get_width_request) iface->get_width_request(layout, min_width_p, natural_width_p); else { g_warning("HippoCanvasLayout implementor must implement get_width_request"); if (min_width_p) *min_width_p = 0; if (natural_width_p) *natural_width_p = 0; } } void hippo_canvas_layout_get_height_request (HippoCanvasLayout *layout, int for_width, int *min_height_p, int *natural_height_p) { HippoCanvasLayoutIface *iface; g_return_if_fail(HIPPO_IS_CANVAS_LAYOUT(layout)); iface = HIPPO_CANVAS_LAYOUT_GET_IFACE(layout); if (iface->get_height_request) iface->get_height_request(layout, for_width, min_height_p, natural_height_p); else { g_warning("HippoCanvasLayout implementor must implement get_height_request"); if (min_height_p) *min_height_p = 0; if (natural_height_p) *natural_height_p = 0; } } void hippo_canvas_layout_allocate(HippoCanvasLayout *layout, int x, int y, int width, int height, int requested_width, int requested_height, gboolean origin_changed) { HippoCanvasLayoutIface *iface; g_return_if_fail(HIPPO_IS_CANVAS_LAYOUT(layout)); iface = HIPPO_CANVAS_LAYOUT_GET_IFACE(layout); if (iface->allocate) iface->allocate(layout, x, y, width, height, requested_width, requested_height, origin_changed); else g_warning("HippoCanvasLayout implementor must implement allocate"); } hippo-canvas-0.3.1/common/hippo/hippo-canvas-image-button.h0000664000076400007640000000256611366237063020617 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_CANVAS_IMAGE_BUTTON_H__ #define __HIPPO_CANVAS_IMAGE_BUTTON_H__ /* A canvas item for image buttons (supports a prelight image) */ #include G_BEGIN_DECLS typedef struct _HippoCanvasImageButton HippoCanvasImageButton; typedef struct _HippoCanvasImageButtonClass HippoCanvasImageButtonClass; #define HIPPO_TYPE_CANVAS_IMAGE_BUTTON (hippo_canvas_image_button_get_type ()) #define HIPPO_CANVAS_IMAGE_BUTTON(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_CANVAS_IMAGE_BUTTON, HippoCanvasImageButton)) #define HIPPO_CANVAS_IMAGE_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), HIPPO_TYPE_CANVAS_IMAGE_BUTTON, HippoCanvasImageButtonClass)) #define HIPPO_IS_CANVAS_IMAGE_BUTTON(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_CANVAS_IMAGE_BUTTON)) #define HIPPO_IS_CANVAS_IMAGE_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), HIPPO_TYPE_CANVAS_IMAGE_BUTTON)) #define HIPPO_CANVAS_IMAGE_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), HIPPO_TYPE_CANVAS_IMAGE_BUTTON, HippoCanvasImageButtonClass)) GType hippo_canvas_image_button_get_type (void) G_GNUC_CONST; HippoCanvasItem* hippo_canvas_image_button_new (void); G_END_DECLS #endif /* __HIPPO_CANVAS_IMAGE_BUTTON_H__ */ hippo-canvas-0.3.1/common/hippo/hippo-canvas-item.h0000664000076400007640000002721411403414527017151 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_CANVAS_ITEM_H__ #define __HIPPO_CANVAS_ITEM_H__ #include #include #include #include #include G_BEGIN_DECLS typedef enum { HIPPO_CANVAS_POINTER_UNSET, HIPPO_CANVAS_POINTER_DEFAULT, HIPPO_CANVAS_POINTER_HAND } HippoCanvasPointer; /* How an item deals with extra allocation in a single (x or y) dimension */ typedef enum { HIPPO_ALIGNMENT_FILL, HIPPO_ALIGNMENT_START, /* left or top */ HIPPO_ALIGNMENT_CENTER, HIPPO_ALIGNMENT_END /* right or bottom */ } HippoItemAlignment; #define HIPPO_TYPE_CANVAS_ITEM (hippo_canvas_item_get_type ()) #define HIPPO_CANVAS_ITEM(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_CANVAS_ITEM, HippoCanvasItem)) #define HIPPO_IS_CANVAS_ITEM(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_CANVAS_ITEM)) #define HIPPO_CANVAS_ITEM_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), HIPPO_TYPE_CANVAS_ITEM, HippoCanvasItemIface)) struct _HippoCanvasItemIface { GTypeInterface base_iface; HippoCanvasContext* (* get_context) (HippoCanvasItem *canvas_item); void (* set_context) (HippoCanvasItem *canvas_item, HippoCanvasContext *context); void (* set_parent) (HippoCanvasItem *canvas_item, HippoCanvasContainer *container); HippoCanvasContainer* (* get_parent) (HippoCanvasItem *canvas_item); void (* paint) (HippoCanvasItem *canvas_item, cairo_t *cr, GdkRegion *damaged_region); void (* get_width_request) (HippoCanvasItem *canvas_item, int *min_width_p, int *natural_width_p); void (* get_height_request) (HippoCanvasItem *canvas_item, int for_width, int *min_height_p, int *natural_height_p); /* The origin changed flag indicates that the position of the item with respect to the * canvas root changed. The item must then call allocate on it's children passing * TRUE for origin_changed as well. */ void (* allocate) (HippoCanvasItem *canvas_item, int width, int height, gboolean origin_changed); void (* get_allocation) (HippoCanvasItem *canvas_item, int *width_p, int *height_p); gboolean (* button_press_event) (HippoCanvasItem *canvas_item, HippoEvent *event); gboolean (* button_release_event) (HippoCanvasItem *canvas_item, HippoEvent *event); gboolean (* motion_notify_event) (HippoCanvasItem *canvas_item, HippoEvent *event); gboolean (* key_press_event) (HippoCanvasItem *canvas_item, HippoEvent *event); void (* activated) (HippoCanvasItem *canvas_item); void (* request_changed) (HippoCanvasItem *canvas_item); void (* paint_needed) (HippoCanvasItem *canvas_item, const HippoRectangle *damage_box); gboolean (* get_needs_request) (HippoCanvasItem *canvas_item); char* (* get_tooltip) (HippoCanvasItem *canvas_item, int x, int y, HippoRectangle *for_area); void (* tooltip_changed) (HippoCanvasItem *canvas_item); HippoCanvasPointer (* get_pointer) (HippoCanvasItem *canvas_item, int x, int y); gboolean (* scroll_event) (HippoCanvasItem *canvas_item, HippoEvent *event); }; GType hippo_canvas_item_get_type (void) G_GNUC_CONST; void hippo_canvas_item_destroy (HippoCanvasItem *canvas_item); HippoCanvasContext* hippo_canvas_item_get_context (HippoCanvasItem *canvas_item); void hippo_canvas_item_set_context (HippoCanvasItem *canvas_item, HippoCanvasContext *context); void hippo_canvas_item_set_parent (HippoCanvasItem *canvas_item, HippoCanvasContainer *container); HippoCanvasContainer* hippo_canvas_item_get_parent (HippoCanvasItem *canvas_item); void hippo_canvas_item_get_width_request (HippoCanvasItem *canvas_item, int *min_width_p, int *natural_width_p); void hippo_canvas_item_get_height_request (HippoCanvasItem *canvas_item, int for_width, int *min_height_p, int *natural_height_p); void hippo_canvas_item_allocate (HippoCanvasItem *canvas_item, int width, int height, gboolean origin_changed); void hippo_canvas_item_get_allocation (HippoCanvasItem *canvas_item, int *width_p, int *height_p); gboolean hippo_canvas_item_get_needs_request (HippoCanvasItem *canvas_item); char* hippo_canvas_item_get_tooltip (HippoCanvasItem *canvas_item, int x, int y, HippoRectangle *for_area); HippoCanvasPointer hippo_canvas_item_get_pointer (HippoCanvasItem *canvas_item, int x, int y); gboolean hippo_canvas_item_get_visible (HippoCanvasItem *canvas_item); void hippo_canvas_item_set_visible (HippoCanvasItem *canvas_item, gboolean visible); void hippo_canvas_item_emit_destroy (HippoCanvasItem *canvas_item); gboolean hippo_canvas_item_emit_button_press_event (HippoCanvasItem *canvas_item, int x, int y, int button, int x11_x_root, int x11_y_root, guint32 x11_time, int count); gboolean hippo_canvas_item_emit_button_release_event (HippoCanvasItem *canvas_item, int x, int y, int button, int x11_x_root, int x11_y_root, guint32 x11_time); gboolean hippo_canvas_item_emit_motion_notify_event (HippoCanvasItem *canvas_item, int x, int y, HippoMotionDetail detail); gboolean hippo_canvas_item_emit_key_press_event (HippoCanvasItem *canvas_item, HippoKey key, gunichar character, guint modifiers); gboolean hippo_canvas_item_emit_scroll_event (HippoCanvasItem *canvas_item, int x, int y, HippoScrollDirection direction); void hippo_canvas_item_emit_activated (HippoCanvasItem *canvas_item); void hippo_canvas_item_emit_paint_needed (HippoCanvasItem *canvas_item, int x, int y, int width, int height); void hippo_canvas_item_emit_tooltip_changed (HippoCanvasItem *canvas_item); void hippo_canvas_item_emit_request_changed (HippoCanvasItem *canvas_item); gboolean hippo_canvas_item_process_event (HippoCanvasItem *canvas_item, HippoEvent *event, int allocation_x, int allocation_y); void hippo_canvas_item_process_paint (HippoCanvasItem *canvas_item, cairo_t *cr, GdkRegion *damaged_region, int allocation_x, int allocation_y); G_END_DECLS #endif /* __HIPPO_CANVAS_ITEM_H__ */ hippo-canvas-0.3.1/common/hippo/hippo-canvas-link.c0000664000076400007640000001144611366237063017151 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include "hippo-canvas-internal.h" #include "hippo-canvas-link.h" #include "hippo-canvas-style.h" #include "hippo-canvas-text.h" #include "hippo-canvas-box.h" static void hippo_canvas_link_init (HippoCanvasLink *link); static void hippo_canvas_link_class_init (HippoCanvasLinkClass *klass); static void hippo_canvas_link_item_iface_init (HippoCanvasItemIface *item_class); static void hippo_canvas_link_context_iface_init (HippoCanvasContextIface *context_class); static void hippo_canvas_link_finalize (GObject *object); static void hippo_canvas_link_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); static void hippo_canvas_link_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); #if 0 enum { LAST_SIGNAL }; static int signals[LAST_SIGNAL]; #endif enum { PROP_0, PROP_VISITED }; G_DEFINE_TYPE_WITH_CODE(HippoCanvasLink, hippo_canvas_link, HIPPO_TYPE_CANVAS_TEXT, G_IMPLEMENT_INTERFACE(HIPPO_TYPE_CANVAS_ITEM, hippo_canvas_link_item_iface_init); G_IMPLEMENT_INTERFACE(HIPPO_TYPE_CANVAS_CONTEXT, hippo_canvas_link_context_iface_init)); static void hippo_canvas_link_init(HippoCanvasLink *link) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(link); hippo_canvas_box_set_link_type(box, HIPPO_CANVAS_LINK_LINK); hippo_canvas_box_set_clickable(box, TRUE); } static HippoCanvasItemIface *item_parent_class; static HippoCanvasContextIface *context_parent_class; static void hippo_canvas_link_item_iface_init(HippoCanvasItemIface *item_class) { item_parent_class = g_type_interface_peek_parent(item_class); } static void hippo_canvas_link_context_iface_init(HippoCanvasContextIface *context_class) { context_parent_class = g_type_interface_peek_parent(context_class); } static void hippo_canvas_link_class_init(HippoCanvasLinkClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS(klass); object_class->set_property = hippo_canvas_link_set_property; object_class->get_property = hippo_canvas_link_get_property; object_class->finalize = hippo_canvas_link_finalize; g_object_class_install_property(object_class, PROP_VISITED, g_param_spec_boolean("visited", _("Visited"), _("Whether or not link was visited"), FALSE, G_PARAM_READABLE | G_PARAM_WRITABLE)); } static void hippo_canvas_link_finalize(GObject *object) { G_OBJECT_CLASS(hippo_canvas_link_parent_class)->finalize(object); } HippoCanvasItem* hippo_canvas_link_new(void) { HippoCanvasLink *link = g_object_new(HIPPO_TYPE_CANVAS_LINK, NULL); return HIPPO_CANVAS_ITEM(link); } static void hippo_canvas_link_set_visited(HippoCanvasLink *link, gboolean visited) { visited = visited != FALSE; if (visited != link->visited) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(link); link->visited = visited; hippo_canvas_box_set_link_type(box, visited ? HIPPO_CANVAS_LINK_VISITED : HIPPO_CANVAS_LINK_LINK); } } static void hippo_canvas_link_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { HippoCanvasLink *link; link = HIPPO_CANVAS_LINK(object); switch (prop_id) { case PROP_VISITED: hippo_canvas_link_set_visited(link, g_value_get_boolean(value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } } static void hippo_canvas_link_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { HippoCanvasLink *link; link = HIPPO_CANVAS_LINK (object); switch (prop_id) { case PROP_VISITED: g_value_set_boolean(value, link->visited); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } } hippo-canvas-0.3.1/common/hippo/hippo-canvas-theme-internal.h0000664000076400007640000000174711366237063021140 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_CANVAS_THEME_INTERNAL_H__ #define __HIPPO_CANVAS_THEME_INTERNAL_H__ #ifdef G_OS_WIN32 /* The libcroco/ directory doesn't exist uninstalled, which is how we build on windows */ #include #else #include #endif #include "hippo-canvas-theme.h" G_BEGIN_DECLS void _hippo_canvas_theme_get_matched_properties (HippoCanvasTheme *theme, HippoCanvasStyle *style, CRDeclaration ***properties, int *n_properties); /* Resolve an URL from the stylesheet to a filename */ char *_hippo_canvas_theme_resolve_url (HippoCanvasTheme *theme, CRStyleSheet *base_stylesheet, const char *url); G_END_DECLS #endif /* __HIPPO_CANVAS_THEME_INTERNAL_H__ */ hippo-canvas-0.3.1/common/hippo/hippo-canvas-text.c0000664000076400007640000006353711366237063017210 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include "hippo-canvas-type-builtins.h" #include "hippo-canvas-internal.h" #include "hippo-canvas-style.h" #include "hippo-canvas-text.h" #include "hippo-canvas-box.h" #include #include #include #include static void hippo_canvas_text_init (HippoCanvasText *text); static void hippo_canvas_text_class_init (HippoCanvasTextClass *klass); static void hippo_canvas_text_iface_init (HippoCanvasItemIface *item_class); static void hippo_canvas_text_finalize (GObject *object); static void hippo_canvas_text_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); static void hippo_canvas_text_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); /* Canvas item methods */ static gboolean hippo_canvas_text_button_press_event (HippoCanvasItem *item, HippoEvent *event); static void hippo_canvas_text_set_context (HippoCanvasItem *item, HippoCanvasContext *context); static char* hippo_canvas_text_get_tooltip (HippoCanvasItem *item, int x, int y, HippoRectangle *for_area); /* Box methods */ static void hippo_canvas_text_paint_below_children (HippoCanvasBox *box, cairo_t *cr, GdkRegion *damaged_region); static void hippo_canvas_text_get_content_width_request (HippoCanvasBox *box, int *min_width_p, int *natural_width_p); static void hippo_canvas_text_get_content_height_request (HippoCanvasBox *box, int for_width, int *min_height_p, int *natural_height_p); enum { NO_SIGNALS_YET, LAST_SIGNAL }; /* static int signals[LAST_SIGNAL]; */ enum { PROP_0, PROP_TEXT, PROP_MARKUP, PROP_ATTRIBUTES, PROP_FONT_SCALE, PROP_SIZE_MODE }; G_DEFINE_TYPE_WITH_CODE(HippoCanvasText, hippo_canvas_text, HIPPO_TYPE_CANVAS_BOX, G_IMPLEMENT_INTERFACE(HIPPO_TYPE_CANVAS_ITEM, hippo_canvas_text_iface_init)); static void hippo_canvas_text_init(HippoCanvasText *text) { text->font_scale = 1.0; text->size_mode = HIPPO_CANVAS_SIZE_FULL_WIDTH; } static HippoCanvasItemIface *item_parent_class; static void hippo_canvas_text_iface_init(HippoCanvasItemIface *item_class) { item_parent_class = g_type_interface_peek_parent(item_class); item_class->button_press_event = hippo_canvas_text_button_press_event; item_class->set_context = hippo_canvas_text_set_context; item_class->get_tooltip = hippo_canvas_text_get_tooltip; } static void hippo_canvas_text_class_init(HippoCanvasTextClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); HippoCanvasBoxClass *box_class = HIPPO_CANVAS_BOX_CLASS(klass); object_class->set_property = hippo_canvas_text_set_property; object_class->get_property = hippo_canvas_text_get_property; object_class->finalize = hippo_canvas_text_finalize; box_class->paint_below_children = hippo_canvas_text_paint_below_children; box_class->get_content_width_request = hippo_canvas_text_get_content_width_request; box_class->get_content_height_request = hippo_canvas_text_get_content_height_request; /** * HippoCanvasText:text * * The text to display. */ g_object_class_install_property(object_class, PROP_TEXT, g_param_spec_string("text", _("Text"), _("Text to display"), NULL, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasText:markup * * The text to display in Pango markup format, allowing you to do bold and other text styles. * This is a shortcut way to set the 'text' and 'attributes' properties. */ g_object_class_install_property(object_class, PROP_MARKUP, g_param_spec_string("markup", _("Markup"), _("Marked-up text to display"), NULL, G_PARAM_WRITABLE)); /** * HippoCanvasText:attributes * * The Pango attributes of the text; usually it is more convenient to use the 'markup' property * than to do the attributes by hand. */ g_object_class_install_property(object_class, PROP_ATTRIBUTES, g_param_spec_boxed ("attributes", _("Attributes"), _("A list of style attributes to apply to the text"), PANGO_TYPE_ATTR_LIST, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasText:font-scale * * A scale factor for the font; Pango exports constants for common * factors, such as #PANGO_SCALE_LARGE, #PANGO_SCALE_X_SMALL and * so forth. If you want to set an absolute font size, use the * 'font' or 'font-desc' properties which are introduced in the * HippoCanvasBox base class. */ g_object_class_install_property(object_class, PROP_FONT_SCALE, g_param_spec_double("font-scale", _("Font scale"), _("Scale factor for fonts"), 0.0, 100.0, 1.0, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasText:size-mode * * Three "size modes" are available. In #HIPPO_CANVAS_SIZE_FULL_WIDTH mode, the * text item will give the width of its text as its minimum size. In #HIPPO_CANVAS_SIZE_WRAP_WORD, * the text item will wrap to fit available space - its minimum width will be pretty small, but as * the width decreases its height will increase. In #HIPPO_CANVAS_SIZE_ELLIPSIZE_END mode, the * width of the text will be the natural width of the item, but the minimum width will be small. * If the item gets less than its natural width, it will ellipsize the text in order to fit * in available space. * * If none of that made sense, just decide whether you want to * always display all the text without wrapping, want to be able * to wrap as the available space shrinks, or want to ellipsize * the text as the available space shrinks. */ g_object_class_install_property(object_class, PROP_SIZE_MODE, g_param_spec_enum("size-mode", _("Size mode"), _("Mode for size request and allocation"), HIPPO_TYPE_CANVAS_SIZE_MODE, HIPPO_CANVAS_SIZE_FULL_WIDTH, G_PARAM_READABLE | G_PARAM_WRITABLE)); } static void hippo_canvas_text_finalize(GObject *object) { HippoCanvasText *text = HIPPO_CANVAS_TEXT(object); g_free(text->text); text->text = NULL; if (text->attributes) { pango_attr_list_unref(text->attributes); text->attributes = NULL; } G_OBJECT_CLASS(hippo_canvas_text_parent_class)->finalize(object); } HippoCanvasItem* hippo_canvas_text_new(void) { HippoCanvasText *text = g_object_new(HIPPO_TYPE_CANVAS_TEXT, NULL); return HIPPO_CANVAS_ITEM(text); } static void hippo_canvas_text_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { HippoCanvasText *text; text = HIPPO_CANVAS_TEXT(object); switch (prop_id) { case PROP_TEXT: { const char *new_text; new_text = g_value_get_string(value); if (!(new_text == text->text || (new_text && text->text && strcmp(new_text, text->text) == 0))) { g_free(text->text); text->text = g_strdup(new_text); hippo_canvas_item_emit_request_changed(HIPPO_CANVAS_ITEM(text)); hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(text), 0, 0, -1, -1); } } break; case PROP_ATTRIBUTES: { PangoAttrList *attrs = g_value_get_boxed(value); if (attrs) pango_attr_list_ref(attrs); if (text->attributes) pango_attr_list_unref(text->attributes); text->attributes = attrs; hippo_canvas_item_emit_request_changed(HIPPO_CANVAS_ITEM(text)); hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(text), 0, 0, -1, -1); } break; case PROP_MARKUP: { char *text; PangoAttrList *attrs; GError *error = NULL; if (!pango_parse_markup(g_value_get_string(value), -1, 0, &attrs, &text, NULL, &error)) { g_error("Failed to set markup: %s", error->message); return; } g_object_set(object, "text", text, "attributes", attrs, NULL); pango_attr_list_unref(attrs); g_free(text); } break; case PROP_FONT_SCALE: text->font_scale = g_value_get_double(value); hippo_canvas_item_emit_request_changed(HIPPO_CANVAS_ITEM(text)); hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(text), 0, 0, -1, -1); break; case PROP_SIZE_MODE: text->size_mode = g_value_get_enum(value); hippo_canvas_item_emit_request_changed(HIPPO_CANVAS_ITEM(text)); hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(text), 0, 0, -1, -1); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } } static void hippo_canvas_text_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { HippoCanvasText *text; text = HIPPO_CANVAS_TEXT (object); switch (prop_id) { case PROP_TEXT: g_value_set_string(value, text->text); break; case PROP_ATTRIBUTES: g_value_set_boxed(value, text->attributes); break; case PROP_FONT_SCALE: g_value_set_double(value, text->font_scale); break; case PROP_SIZE_MODE: g_value_set_enum(value, text->size_mode); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } } static void hippo_canvas_text_set_context(HippoCanvasItem *item, HippoCanvasContext *context) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(item); gboolean changed; changed = context != box->context; item_parent_class->set_context(item, context); /* we can't create a layout until we have a context, * so we have to queue a size change when the context * is set. */ if (changed) { hippo_canvas_item_emit_request_changed(HIPPO_CANVAS_ITEM(item)); hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(item), 0, 0, -1, -1); } } static char * hippo_canvas_text_get_tooltip (HippoCanvasItem *item, int x, int y, HippoRectangle *for_area) { HippoCanvasText *text = HIPPO_CANVAS_TEXT(item); HippoCanvasBox *box = HIPPO_CANVAS_BOX(item); if (text->is_ellipsized && text->text) { for_area->x = 0; for_area->y = 0; for_area->width = box->allocated_width; for_area->height = box->allocated_height; return g_strdup(text->text); } else return item_parent_class->get_tooltip(item, x, y, for_area); } static char* remove_newlines(const char *text) { char *s; char *p; s = g_strdup(text); for (p = s; *p != '\0'; ++p) { if (*p == '\n' || *p == '\r') *p = ' '; } return s; } static PangoLayout* create_layout(HippoCanvasText *text, int allocation_width) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(text); PangoLayout *layout; HippoCanvasStyle *style = hippo_canvas_context_get_style(HIPPO_CANVAS_CONTEXT(text)); g_return_val_if_fail(box->context != NULL, NULL); layout = hippo_canvas_context_create_layout(box->context); if (box->font_desc) { PangoFontDescription *merged = pango_font_description_copy(hippo_canvas_style_get_font(style)); pango_font_description_merge(merged, box->font_desc, TRUE); pango_layout_set_font_description(layout, merged); pango_font_description_free(merged); } else { pango_layout_set_font_description(layout, hippo_canvas_style_get_font(style)); } { PangoAttrList *attrs; HippoTextDecoration decoration = hippo_canvas_style_get_text_decoration(style); if (text->attributes) attrs = pango_attr_list_copy(text->attributes); else attrs = pango_attr_list_new(); if (ABS(1.0 - text->font_scale) > .000001) { PangoAttribute *attr = pango_attr_scale_new(text->font_scale); attr->start_index = 0; attr->end_index = G_MAXUINT; pango_attr_list_insert(attrs, attr); } if ((decoration & HIPPO_TEXT_DECORATION_UNDERLINE) != 0) { PangoAttribute *attr = pango_attr_underline_new(TRUE); attr->start_index = 0; attr->end_index = G_MAXUINT; pango_attr_list_insert(attrs, attr); } if ((decoration & HIPPO_TEXT_DECORATION_LINE_THROUGH) != 0) { PangoAttribute *attr = pango_attr_strikethrough_new(TRUE); attr->start_index = 0; attr->end_index = G_MAXUINT; pango_attr_list_insert(attrs, attr); } pango_layout_set_attributes(layout, attrs); pango_attr_list_unref(attrs); } if (text->text != NULL) { pango_layout_set_text(layout, text->text, -1); } if (allocation_width >= 0) { int layout_width, layout_height; pango_layout_get_size(layout, &layout_width, &layout_height); layout_width /= PANGO_SCALE; layout_height /= PANGO_SCALE; /* Force layout smaller if required, but we don't want to make * the layout _wider_ because it breaks alignment, so only do * this if required. */ if (layout_width > allocation_width) { pango_layout_set_width(layout, allocation_width * PANGO_SCALE); /* If we set ellipsize, then it overrides wrapping. If we get * too-small allocation for HIPPO_CANVAS_SIZE_FULL_WIDTH, then * we want to ellipsize instead of wrapping. */ if (text->size_mode == HIPPO_CANVAS_SIZE_WRAP_WORD) { pango_layout_set_ellipsize(layout, PANGO_ELLIPSIZE_NONE); } else { pango_layout_set_ellipsize(layout, PANGO_ELLIPSIZE_END); } /* For now if we say ellipsize end, we always just want one line. * Maybe this should be an orthogonal property? */ if (text->size_mode == HIPPO_CANVAS_SIZE_ELLIPSIZE_END) { pango_layout_set_single_paragraph_mode(layout, TRUE); /* Pango's line separator character in this case is ugly, so we * fix it. Not a very efficient approach, but oh well. */ if (text->text != NULL) { char *new_text = remove_newlines(text->text); /* avoid making the layout recompute everything * if we didn't have newlines anyhow */ if (strcmp(text->text, new_text) != 0) { pango_layout_set_text(layout, new_text, -1); } g_free(new_text); } } } } return layout; } static gboolean layout_is_ellipsized(PangoLayout *layout) { /* pango_layout_is_ellipsized() is a new function in Pango-1.16; we * emulate it here by trying to look for the ellipsis run */ PangoLogAttr *log_attrs; int n_attrs; PangoLayoutIter *iter; gboolean result = FALSE; /* Short circuit when we aren't ellipsizing at all */ if (pango_layout_get_ellipsize(layout) == PANGO_ELLIPSIZE_NONE) return FALSE; pango_layout_get_log_attrs(layout, &log_attrs, &n_attrs); iter = pango_layout_get_iter(layout); do { PangoGlyphItem *run; int n_glyphs; int start_index; int n_graphemes; int i; run = pango_layout_iter_get_run(iter); if (!run) continue; n_glyphs = run->glyphs->num_glyphs; start_index = pango_layout_iter_get_index(iter); /* Check the number of clusters in the run ... if it is greater * than 1, then it isn't an ellipsis */ if (run->glyphs->log_clusters[0] != run->glyphs->log_clusters[n_glyphs - 1]) continue; /* Now check the number of graphemes in the run ... if it is less * than 3, it's probably an isolated 'fi' ligature or something * like that rather than an ellipsis. */ n_graphemes = 0; for (i = 0; i < run->item->num_chars && i + start_index < n_attrs; i++) if (log_attrs[i + start_index].is_cursor_position) n_graphemes++; if (n_graphemes < 3) continue; /* OK, at this point it is probably an ellipsis; it's possible that * the text consists of just the letters 'ffi' and the font has a ligature * for that or something, but it's not too likely. */ result = TRUE; break; } while (pango_layout_iter_next_run(iter)); pango_layout_iter_free(iter); g_free(log_attrs); return result; } static void hippo_canvas_text_paint_below_children(HippoCanvasBox *box, cairo_t *cr, GdkRegion *damaged_region) { HippoCanvasText *text = HIPPO_CANVAS_TEXT(box); guint32 color_rgba; if (box->color_set) { color_rgba = box->color_rgba; } else { HippoCanvasStyle *style = hippo_canvas_context_get_style(HIPPO_CANVAS_CONTEXT(text)); color_rgba = hippo_canvas_style_get_foreground_color(style); } /* It would seem more natural to compute whether we are ellipsized or * not when we are allocated to some width, but we don't have a layout * at that point. We could do it in get_content_height_request(), but * the parent could theoretically give us more width than it asked us * about (and there are also some quirks in HippoCanvasBox where it * will call get_content_height_request() with a width if 0 at odd times), * so doing it here is more reliable. We use is_ellipsized only for * computing whether to show a tooltip, and we make the assumption that * if the user hasn't seen the text item drawn, they won't need a * tooltip for it. */ text->is_ellipsized = FALSE; if ((color_rgba & 0xff) != 0 && text->text != NULL) { PangoLayout *layout; int layout_width, layout_height; int x, y, w, h; int allocation_width, allocation_height; int space_left = box->border_left + box->padding_left; int space_right = box->border_right + box->padding_right; hippo_canvas_item_get_allocation(HIPPO_CANVAS_ITEM(box), &allocation_width, &allocation_height); layout = create_layout(text, allocation_width - space_left - space_right); pango_layout_get_size(layout, &layout_width, &layout_height); layout_width /= PANGO_SCALE; layout_height /= PANGO_SCALE; text->is_ellipsized = layout_is_ellipsized(layout); hippo_canvas_box_align(box, layout_width, layout_height, &x, &y, &w, &h); /* we can't really "fill" so we fall back to center if we seem to be * in fill mode */ if (w > layout_width) { x += (w - layout_width) / 2; } if (h > layout_height) { y += (h - layout_height) / 2; } /* Clipping is needed since the layout size could exceed our * allocation if we got a too-small allocation. * FIXME It would be better to ellipsize or something instead, though. */ cairo_save(cr); cairo_rectangle(cr, 0, 0, allocation_width, allocation_height); cairo_clip(cr); cairo_move_to (cr, x, y); hippo_cairo_set_source_rgba32(cr, color_rgba); pango_cairo_show_layout(cr, layout); cairo_restore(cr); g_object_unref(layout); } } static void hippo_canvas_text_get_content_width_request(HippoCanvasBox *box, int *min_width_p, int *natural_width_p) { HippoCanvasText *text = HIPPO_CANVAS_TEXT(box); int children_min_width, children_natural_width; int layout_width; HIPPO_CANVAS_BOX_CLASS(hippo_canvas_text_parent_class)->get_content_width_request(box, &children_min_width, &children_natural_width); if (box->context != NULL) { PangoLayout *layout = create_layout(text, -1); pango_layout_get_size(layout, &layout_width, NULL); layout_width /= PANGO_SCALE; g_object_unref(layout); } else { layout_width = 0; } if (min_width_p) { if (text->size_mode == HIPPO_CANVAS_SIZE_FULL_WIDTH) *min_width_p = MAX(children_min_width, layout_width); else *min_width_p = children_min_width; } if (natural_width_p) { *natural_width_p = MAX(children_natural_width, layout_width); } } static void hippo_canvas_text_get_content_height_request(HippoCanvasBox *box, int for_width, int *min_height_p, int *natural_height_p) { HippoCanvasText *text = HIPPO_CANVAS_TEXT(box); int children_min_height, children_natural_height; PangoLayout *layout; int layout_height; HIPPO_CANVAS_BOX_CLASS(hippo_canvas_text_parent_class)->get_content_height_request(box, for_width, &children_min_height, &children_natural_height); if (for_width > 0) { if (box->context != NULL) { layout = create_layout(text, for_width); pango_layout_get_size(layout, NULL, &layout_height); layout_height /= PANGO_SCALE; g_object_unref(layout); } else { layout_height = 0; } } else { layout_height = 0; } if (min_height_p) *min_height_p = MAX(layout_height, children_min_height); if (natural_height_p) *natural_height_p = MAX(layout_height, children_natural_height); } static gboolean hippo_canvas_text_button_press_event (HippoCanvasItem *item, HippoEvent *event) { /* HippoCanvasText *text = HIPPO_CANVAS_TEXT(item); */ /* see if a child wants it */ return item_parent_class->button_press_event(item, event); } hippo-canvas-0.3.1/common/hippo/hippo-canvas-image.c0000664000076400007640000004103711366237063017275 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include "hippo-canvas-internal.h" #include "hippo-canvas-util.h" #include #include #include "hippo-canvas-image.h" static void hippo_canvas_image_init (HippoCanvasImage *image); static void hippo_canvas_image_class_init (HippoCanvasImageClass *klass); static void hippo_canvas_image_iface_init (HippoCanvasItemIface *item_class); static void hippo_canvas_image_finalize (GObject *object); static void hippo_canvas_image_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); static void hippo_canvas_image_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); /* Canvas item methods */ static void hippo_canvas_image_set_context (HippoCanvasItem *item, HippoCanvasContext *context); /* Canvas box methods */ static void hippo_canvas_image_paint_below_children (HippoCanvasBox *box, cairo_t *cr, GdkRegion *damaged_region); static void hippo_canvas_image_get_content_width_request (HippoCanvasBox *box, int *min_width_p, int *natural_width_p); static void hippo_canvas_image_get_content_height_request (HippoCanvasBox *box, int for_width, int *min_height_p, int *natural_height_p); enum { NO_SIGNALS_YET, LAST_SIGNAL }; /* static int signals[LAST_SIGNAL]; */ enum { PROP_0, PROP_IMAGE, PROP_IMAGE_NAME, PROP_SCALE_WIDTH, PROP_SCALE_HEIGHT }; G_DEFINE_TYPE_WITH_CODE(HippoCanvasImage, hippo_canvas_image, HIPPO_TYPE_CANVAS_BOX, G_IMPLEMENT_INTERFACE(HIPPO_TYPE_CANVAS_ITEM, hippo_canvas_image_iface_init)); static void hippo_canvas_image_init(HippoCanvasImage *image) { image->scale_width = -1; image->scale_height = -1; } static HippoCanvasItemIface *item_parent_class; static void hippo_canvas_image_iface_init(HippoCanvasItemIface *item_class) { item_parent_class = g_type_interface_peek_parent(item_class); item_class->set_context = hippo_canvas_image_set_context; } static void hippo_canvas_image_class_init(HippoCanvasImageClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); HippoCanvasBoxClass *box_class = HIPPO_CANVAS_BOX_CLASS(klass); object_class->set_property = hippo_canvas_image_set_property; object_class->get_property = hippo_canvas_image_get_property; object_class->finalize = hippo_canvas_image_finalize; box_class->paint_below_children = hippo_canvas_image_paint_below_children; box_class->get_content_width_request = hippo_canvas_image_get_content_width_request; box_class->get_content_height_request = hippo_canvas_image_get_content_height_request; /** * HippoCanvasImage:image * * Specifies the Cairo surface to display. */ g_object_class_install_property(object_class, PROP_IMAGE, g_param_spec_boxed("image", _("Image"), _("Image as cairo_surface_t"), HIPPO_TYPE_CAIRO_SURFACE, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasImage:image-name * * Specifies an image name to display; with GTK+ the image name is * an image name registered with the GTK+ theme system. */ g_object_class_install_property(object_class, PROP_IMAGE_NAME, g_param_spec_string("image-name", _("Image Name"), _("Image name to be loaded into the item"), NULL, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasImage:scale-width * * A width in pixels to scale the image to, or -1 to use the image's original width. */ g_object_class_install_property(object_class, PROP_SCALE_WIDTH, g_param_spec_int("scale-width", _("Scale width"), _("Width to scale to or -1 for no scale"), -1, G_MAXINT, -1, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasImage:scale-height * * A height in pixels to scale the image to, or -1 to use the image's original height. */ g_object_class_install_property(object_class, PROP_SCALE_HEIGHT, g_param_spec_int("scale-height", _("Scale height"), _("Height to scale to or -1 for no scale"), -1, G_MAXINT, -1, G_PARAM_READABLE | G_PARAM_WRITABLE)); } static void hippo_canvas_image_finalize(GObject *object) { HippoCanvasImage *image = HIPPO_CANVAS_IMAGE(object); if (image->surface) cairo_surface_destroy(image->surface); g_free(image->image_name); image->image_name = NULL; G_OBJECT_CLASS(hippo_canvas_image_parent_class)->finalize(object); } HippoCanvasItem* hippo_canvas_image_new(void) { HippoCanvasImage *image = g_object_new(HIPPO_TYPE_CANVAS_IMAGE, NULL); return HIPPO_CANVAS_ITEM(image); } static void set_surface(HippoCanvasImage *image, cairo_surface_t *surface) { if (surface != image->surface) { int old_width, old_height; gboolean request_changed = FALSE; #if 0 /* The FC5 version of Cairo doesn't have this API */ if (cairo_surface_get_type(surface) != CAIRO_SURFACE_TYPE_IMAGE) { g_warning("Image canvas item only supports image surfaces"); return; } #endif old_width = image->surface ? cairo_image_surface_get_width(image->surface) : 0; old_height = image->surface ? cairo_image_surface_get_height(image->surface) : 0; if (surface) cairo_surface_reference(surface); if (image->surface) cairo_surface_destroy(image->surface); image->surface = surface; if (image->scale_width < 0) { int width = image->surface ? cairo_image_surface_get_width(image->surface) : 0; if (width != old_width) request_changed = TRUE; } if (image->scale_height < 0) { int height = image->surface ? cairo_image_surface_get_height(image->surface) : 0; if (height != old_height) request_changed = TRUE; } if (request_changed) hippo_canvas_item_emit_request_changed(HIPPO_CANVAS_ITEM(image)); hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(image), 0, 0, -1, -1); g_object_notify(G_OBJECT(image), "image"); } } static void set_surface_from_name(HippoCanvasImage *image) { if (image->image_name == NULL) { set_surface(image, NULL); } else { cairo_surface_t *surface; HippoCanvasContext *context; context = hippo_canvas_item_get_context(HIPPO_CANVAS_ITEM(image)); /* If context is NULL, we'll call set_surface_from_name again * when a new context is set */ if (context != NULL) { /* may return NULL */ surface = hippo_canvas_context_load_image(context, image->image_name); set_surface(image, surface); if (surface != NULL) cairo_surface_destroy(surface); } else { set_surface(image, NULL); } } } static void hippo_canvas_image_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { HippoCanvasImage *image; image = HIPPO_CANVAS_IMAGE(object); switch (prop_id) { case PROP_IMAGE: { cairo_surface_t *surface = g_value_get_boxed(value); if (image->image_name) { g_free(image->image_name); image->image_name = NULL; g_object_notify(G_OBJECT(image), "image-name"); } set_surface(image, surface); } break; case PROP_IMAGE_NAME: { const char *name = g_value_get_string(value); if (!(image->image_name == name || (image->image_name && name && strcmp(image->image_name, name) == 0))) { g_free(image->image_name); image->image_name = g_strdup(name); set_surface_from_name(image); /* will recursively call set_property("image") which * will result in a request_changed if required */ } } break; case PROP_SCALE_WIDTH: { int w = g_value_get_int(value); if (w != image->scale_width) { image->scale_width = w; hippo_canvas_item_emit_request_changed(HIPPO_CANVAS_ITEM(image)); hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(image), 0, 0, -1, -1); } } break; case PROP_SCALE_HEIGHT: { int h = g_value_get_int(value); if (h != image->scale_height) { image->scale_height = h; hippo_canvas_item_emit_request_changed(HIPPO_CANVAS_ITEM(image)); hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(image), 0, 0, -1, -1); } } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } } static void hippo_canvas_image_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { HippoCanvasImage *image; image = HIPPO_CANVAS_IMAGE (object); switch (prop_id) { case PROP_IMAGE: g_value_set_boxed(value, image->surface); break; case PROP_IMAGE_NAME: g_value_set_string(value, image->image_name); break; case PROP_SCALE_WIDTH: g_value_set_int(value, image->scale_width); break; case PROP_SCALE_HEIGHT: g_value_set_int(value, image->scale_height); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } } static void hippo_canvas_image_set_context(HippoCanvasItem *item, HippoCanvasContext *context) { HippoCanvasImage *image = HIPPO_CANVAS_IMAGE(item); HippoCanvasBox *box = HIPPO_CANVAS_BOX(item); HippoCanvasContext *old = box->context; item_parent_class->set_context(item, context); if (old != box->context && image->image_name != NULL) set_surface_from_name(image); } static void hippo_canvas_image_paint_below_children(HippoCanvasBox *box, cairo_t *cr, GdkRegion *damaged_region) { HippoCanvasImage *image = HIPPO_CANVAS_IMAGE(box); int x, y, w, h; int image_width, image_height; double xscale; double yscale; if (image->surface == NULL) return; image_width = cairo_image_surface_get_width(image->surface); image_height = cairo_image_surface_get_height(image->surface); /* Immediately short-circuit 0-sized image or scaled image, * which saves special cases in the math later on, in addition * to saving work */ if (image_width == 0 || image_height == 0 || image->scale_width == 0 || image->scale_height == 0) return; if (image->scale_width >= 0) { xscale = image->scale_width / (double) image_width; image_width = image->scale_width; } else { xscale = 1.0; } if (image->scale_height >= 0) { yscale = image->scale_height / (double) image_height; image_height = image->scale_height; } else { yscale = 1.0; } /* note that if an alignment is FILL the w/h will be increased * beyond the image's natural size, which will result in * a tiled image */ hippo_canvas_box_align(box, image_width, image_height, &x, &y, &w, &h); if (w != image_width || h != image_height) { cairo_rectangle(cr, x, y, w, h); cairo_clip(cr); } cairo_translate (cr, x, y); cairo_scale (cr, xscale, yscale); cairo_set_source_surface(cr, image->surface, 0, 0); if (w > image_width || h > image_height) cairo_pattern_set_extend(cairo_get_source(cr), CAIRO_EXTEND_REPEAT); cairo_paint(cr); /* g_debug("cairo status %s", cairo_status_to_string(cairo_status(cr))); */ } static void hippo_canvas_image_get_content_width_request(HippoCanvasBox *box, int *min_width_p, int *natural_width_p) { HippoCanvasImage *image = HIPPO_CANVAS_IMAGE(box); int children_min_width, children_natural_width; int image_width; HIPPO_CANVAS_BOX_CLASS(hippo_canvas_image_parent_class)->get_content_width_request(box, &children_min_width, &children_natural_width); if (image->scale_width >= 0) image_width = image->scale_width; else image_width = image->surface ? cairo_image_surface_get_width(image->surface) : 0; if (min_width_p) *min_width_p = MAX(image_width, children_min_width); if (natural_width_p) *natural_width_p = MAX(image_width, children_natural_width); } static void hippo_canvas_image_get_content_height_request(HippoCanvasBox *box, int for_width, int *min_height_p, int *natural_height_p) { HippoCanvasImage *image = HIPPO_CANVAS_IMAGE(box); int children_min_height, children_natural_height; int image_height; /* get height of children and the box padding */ HIPPO_CANVAS_BOX_CLASS(hippo_canvas_image_parent_class)->get_content_height_request(box, for_width, &children_min_height, &children_natural_height); if (image->scale_height >= 0) image_height = image->scale_height; else image_height = image->surface ? cairo_image_surface_get_height(image->surface) : 0; if (min_height_p) *min_height_p = MAX(image_height, children_min_height); if (natural_height_p) *natural_height_p = MAX(image_height, children_natural_height); } hippo-canvas-0.3.1/common/hippo/hippo-animation.c0000664000076400007640000001460511366237063016722 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include "hippo-animation.h" #include "hippo-canvas-marshal.h" /* This defines the time before an event that counts as "in" the * event. The attempt here is to waking up fractionally early, then * sleeping again to get to the event */ #define FUZZ 0.01 typedef struct _AnimationEvent AnimationEvent; struct _AnimationEvent { int id; double when; double duration; }; #define EVENT(animation, id) ((AnimationEvent *)g_ptr_array_index((animation)->events, (id))) enum { EVENT, CANCEL, LAST_SIGNAL }; static int signals[LAST_SIGNAL]; G_DEFINE_TYPE(HippoAnimation, hippo_animation, G_TYPE_OBJECT) static void hippo_animation_finalize(GObject *object) { HippoAnimation *animation = HIPPO_ANIMATION(object); guint i; for (i = 0; i < animation->events->len; i++) { AnimationEvent *event = EVENT(animation, i); g_free(event); } g_ptr_array_free(animation->events, TRUE); G_OBJECT_CLASS(hippo_animation_parent_class)->finalize(object); } static void hippo_animation_init(HippoAnimation *animation) { animation->position = 0; animation->first_current = 0; animation->events = g_ptr_array_new(); } static void hippo_animation_class_init(HippoAnimationClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = hippo_animation_finalize; /** * HippoAnimation::event * * Signal emitted when the animation is advanced to a new position. */ signals[EVENT] = g_signal_new ("event", G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(HippoAnimationClass, event), NULL, NULL, hippo_canvas_marshal_VOID__INT_DOUBLE, G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_DOUBLE); /** * HippoAnimation::cancel * * Signal emitted when the animation is cancelled */ signals[CANCEL] = g_signal_new ("cancel", G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(HippoAnimationClass, event), NULL, NULL, hippo_canvas_marshal_VOID__NONE, G_TYPE_NONE, 0); } /** * hippo_animation_new: * * Return value: A newly created HippoAnimation object. Unref with g_object_unref() **/ HippoAnimation * hippo_animation_new(void) { return g_object_new(HIPPO_TYPE_ANIMATION, 0); } /** * hippo_animation_add_event: * @animation: the animation object * @when: time that this event starts, in seconds from the beginning of the animation * @duration: duration of the event, in seconds. If 0 or negative, the event is treated * as instantaneous. * * Adds an event to the animation object. * * Return value: the integer ID for the animation. Will be passed to the ::event signal. **/ int hippo_animation_add_event(HippoAnimation *animation, double when, double duration) { AnimationEvent *event; int id; g_return_val_if_fail(HIPPO_IS_ANIMATION(animation), -1); id = animation->events->len; if ((id == 0 && when < 0) || (id > 0 && when < EVENT(animation, id - 1)->when)) { g_warning("Events must be added in time order"); return -1; } event = g_new0(AnimationEvent, 1); event->id = id; event->when = when; event->duration = duration; g_ptr_array_add(animation->events, event); return event->id; } /** * hippo_animation_cancel: * @animation: the animation object * * Cancels the operation of the animation and removes it from the animation * manager it has been added to, if any. */ void hippo_animation_cancel(HippoAnimation *animation) { g_return_if_fail(HIPPO_IS_ANIMATION(animation)); g_signal_emit(animation, signals[CANCEL], 0); } /** * hippo_animation_advance * @animation: the animation object * @position: the new position, in seconds from the beginning of the animation * * Advances the animation to a new position. This is function is meant for * HippoAnimationManager and is likely not useful for applications. */ void hippo_animation_advance(HippoAnimation *animation, double position) { gboolean seen_current = FALSE; guint i; for (i = 0; i < animation->events->len; i++) { AnimationEvent *event = EVENT(animation, i); if (event->when + event->duration < position) { if (!seen_current) animation->first_current = i + 1; } else { seen_current = TRUE; } if (event->when - FUZZ > position) /* future events */ break; if (event->duration <= 0) { /* 1-time event */ if (event->when - FUZZ > animation->position && event->when - FUZZ <= position) g_signal_emit(animation, signals[EVENT], 0, event->id, 0); } else { /* Continuous event */ if (event->when <= position + FUZZ && event->when + event->duration >= position) { double fraction = MAX(0, (position - event->when) / event->duration); g_signal_emit(animation, signals[EVENT], 0, event->id, fraction); } else if (event->when + event->duration > animation->position && event->when + event->duration <= position) { /* Always give a final update at position 1.0 */ g_signal_emit(animation, signals[EVENT], 0, event->id, 1.0); } } } animation->position = position; } /** * hippo_animation_advance * @animation: the animation object * * Gets the start time of the first event that is not yet finished. * This is function is meant for HippoAnimationManager and is likely not * useful for applications. * * Return Value: time in seconds from the beginning of the start of the first * still-current event. This time may be earlier than than the current time, which * means that an event that started before the current time is still going on. **/ double hippo_animation_get_next_event_position(HippoAnimation *animation) { AnimationEvent *event; if (animation->first_current == animation->events->len) return -1.; event = EVENT(animation, animation->first_current); return event->when; } hippo-canvas-0.3.1/common/hippo/hippo-canvas-box.h0000664000076400007640000004003611403414535016777 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_CANVAS_BOX_H__ #define __HIPPO_CANVAS_BOX_H__ #include #include #include #include G_BEGIN_DECLS typedef enum /*< flags >*/ { HIPPO_PACK_EXPAND = 1, /**< This is equivalent to both EXPAND and FILL for GtkBox, * the way you'd get FILL=false is to set the alignment * on the child item */ HIPPO_PACK_END = 2, HIPPO_PACK_FIXED = 4, /**< Like position: absolute or GtkFixed */ HIPPO_PACK_IF_FITS = 8, /**< Can hide this child to make space if allocation is too small * for the child's width request. * Include child width in box's natural width but not box's request. * (doesn't work in vertical boxes for now) */ /* Floated children: only works with vertical box, and cannot be used in combination * with HIPPO_PACK_EXPAND or HIPPO_PACK_END */ HIPPO_PACK_FLOAT_LEFT = 16, /* Float to the left */ HIPPO_PACK_FLOAT_RIGHT = 32, /* Float to the right */ HIPPO_PACK_CLEAR_LEFT = 64, /* Pack below left-floated children */ HIPPO_PACK_CLEAR_RIGHT = 128, /* Pack below right-floated children */ HIPPO_PACK_CLEAR_BOTH = 192 /* Pack below left-and right floated children */ } HippoPackFlags; typedef int (* HippoCanvasCompareChildFunc) (HippoCanvasItem *child_a, HippoCanvasItem *child_b, void *data); typedef void (* HippoCanvasForeachChildFunc) (HippoCanvasItem *child, void *data); typedef struct _HippoCanvasBox HippoCanvasBox; typedef struct _HippoCanvasBoxClass HippoCanvasBoxClass; typedef struct _HippoCanvasBoxChild HippoCanvasBoxChild; /* Declare here to avoid circular header file dependency */ typedef struct _HippoCanvasLayout HippoCanvasLayout; #define HIPPO_TYPE_CANVAS_BOX (hippo_canvas_box_get_type ()) #define HIPPO_CANVAS_BOX(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_CANVAS_BOX, HippoCanvasBox)) #define HIPPO_CANVAS_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), HIPPO_TYPE_CANVAS_BOX, HippoCanvasBoxClass)) #define HIPPO_IS_CANVAS_BOX(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_CANVAS_BOX)) #define HIPPO_IS_CANVAS_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), HIPPO_TYPE_CANVAS_BOX)) #define HIPPO_CANVAS_BOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), HIPPO_TYPE_CANVAS_BOX, HippoCanvasBoxClass)) struct _HippoCanvasBox { GObject base; HippoCanvasContainer *parent; HippoCanvasContext *context; HippoCanvasStyle *style; /* may be NULL if no relevant props set */ HippoCanvasTheme *theme; GSList *children; char *element_id; char *element_class; HippoCanvasLayout *layout; char *tooltip; /* If set, we debug-spew about size allocation prefixed with this name */ char *debug_name; /* Cache of last requested sizes of content. This largely duplicates the caching * in HippoCanvasBoxChild; removing the caching in HippoCanvasBoxChild would * save 20 bytes per item at the expense of having to continually call into * the child and have the child add back on the padding border */ int content_min_width; /* -1 if invalid */ int content_natural_width; /* always valid and >= 0 when min_width is valid */ int content_min_height; /* -1 if invalid */ int content_natural_height; /* always valid and >= 0 when min_height is valid */ int content_height_request_for_width; /* width the height_request is valid for */ int allocated_width; int allocated_height; /* these are -1 if unset, which means use natural size request */ int box_width; int box_height; PangoFontDescription *font_desc; guint32 color_rgba; guint32 background_color_rgba; guint32 border_color_rgba; /* padding is empty space around all children with the * background color */ guint8 padding_top; guint8 padding_bottom; guint8 padding_left; guint8 padding_right; /* padding is empty space around the padding, with * the border color */ guint8 border_top; guint8 border_bottom; guint8 border_left; guint8 border_right; guint8 spacing; guint needs_width_request : 1; guint needs_height_request : 1; guint needs_allocate : 1; guint orientation : 2; /* enum only has 2 values so it fits with extra */ guint x_align : 3; /* enum only has 4 values so it fits with extra */ guint y_align : 3; /* enum only has 4 values so it fits with extra */ guint clickable : 1; /* show a hand pointer and emit activated signal */ guint link_type : 2; /* enum only has 3 values so it fits with extra */ guint hovering : 1; /* the box or some child contains the pointer (have gotten enter without leave) */ guint color_set : 1; guint background_color_set : 1; guint border_color_set : 1; guint border_top_set : 1; guint border_bottom_set : 1; guint border_left_set : 1; guint border_right_set : 1; guint padding_top_set : 1; guint padding_bottom_set : 1; guint padding_left_set : 1; guint padding_right_set : 1; }; struct _HippoCanvasBoxClass { GObjectClass base_class; void (* paint_background) (HippoCanvasBox *box, cairo_t *cr, GdkRegion *damaged_region); void (* paint_children) (HippoCanvasBox *box, cairo_t *cr, GdkRegion *damaged_region); void (* paint_below_children) (HippoCanvasBox *box, cairo_t *cr, GdkRegion *damaged_region); void (* paint_above_children) (HippoCanvasBox *box, cairo_t *cr, GdkRegion *damaged_region); void (* get_content_width_request) (HippoCanvasBox *box, int *min_width_p, int *natural_width_p); void (* get_content_height_request) (HippoCanvasBox *box, int for_width, int *min_height_p, int *natural_height_p); void (* hovering_changed) (HippoCanvasBox *box, gboolean hovering); }; GType hippo_canvas_box_get_type (void) G_GNUC_CONST; HippoCanvasItem* hippo_canvas_box_new (void); void hippo_canvas_box_prepend (HippoCanvasBox *box, HippoCanvasItem *child, HippoPackFlags flags); void hippo_canvas_box_append (HippoCanvasBox *box, HippoCanvasItem *child, HippoPackFlags flags); void hippo_canvas_box_move (HippoCanvasBox *box, HippoCanvasItem *child, HippoGravity gravity, int x, int y); void hippo_canvas_box_set_position (HippoCanvasBox *box, HippoCanvasItem *child, int x, int y); void hippo_canvas_box_get_position (HippoCanvasBox *box, HippoCanvasItem *child, int *x, int *y); void hippo_canvas_box_clear (HippoCanvasBox *box); void hippo_canvas_box_remove (HippoCanvasBox *box, HippoCanvasItem *child); void hippo_canvas_box_remove_all (HippoCanvasBox *box); GList* hippo_canvas_box_get_children (HippoCanvasBox *box); gboolean hippo_canvas_box_is_empty (HippoCanvasBox *box); void hippo_canvas_box_foreach (HippoCanvasBox *box, HippoCanvasForeachChildFunc func, void *data); void hippo_canvas_box_reverse (HippoCanvasBox *box); void hippo_canvas_box_sort (HippoCanvasBox *box, HippoCanvasCompareChildFunc compare_func, void *data); void hippo_canvas_box_insert_after (HippoCanvasBox *box, HippoCanvasItem *child, HippoCanvasItem *ref_child, HippoPackFlags flags); void hippo_canvas_box_insert_before (HippoCanvasBox *box, HippoCanvasItem *child, HippoCanvasItem *ref_child, HippoPackFlags flags); void hippo_canvas_box_insert_sorted (HippoCanvasBox *box, HippoCanvasItem *child, HippoPackFlags flags, HippoCanvasCompareChildFunc compare_func, void *data); void hippo_canvas_box_set_child_packing (HippoCanvasBox *box, HippoCanvasItem *child, HippoPackFlags flags); void hippo_canvas_box_set_theme (HippoCanvasBox *box, HippoCanvasTheme *theme); void hippo_canvas_box_set_layout(HippoCanvasBox *box, HippoCanvasLayout *layout); /* Protected accessors for subclasses */ void hippo_canvas_box_get_background_area (HippoCanvasBox *box, HippoRectangle *area); void hippo_canvas_box_align (HippoCanvasBox *box, int content_width, int content_height, int *x_p, int *y_p, int *width_p, int *height_p); void hippo_canvas_box_set_clickable (HippoCanvasBox *box, gboolean clickable); gboolean hippo_canvas_box_is_clickable (HippoCanvasBox *box); void hippo_canvas_box_set_link_type (HippoCanvasBox *box, HippoCanvasLinkType link_type); /* API for layout managers */ HippoCanvasBoxChild *hippo_canvas_box_find_box_child (HippoCanvasBox *box, HippoCanvasItem *item); GList *hippo_canvas_box_get_layout_children (HippoCanvasBox *box); #define HIPPO_TYPE_CANVAS_BOX_CHILD (hippo_canvas_box_child_get_type ()) #define HIPPO_CANVAS_BOX_CHILD(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_CANVAS_BOX_CHILD, HippoCanvasBoxChild)) /** * HippoCanvasBoxChild: * * #HippoCanvasBoxChild holds data associated with an item that has been * added to a canvas box. It is used by implementations of #HippoCanvasLayout * when implementing methods like get_width_request and size_allocate. * * The life-cycle of a #HippoCanvasBoxChild is effectively until the item * is removed from its parent. If a reference is held beyond that point, calling * methods on the box child is safe, but the methods will have no effect, * and defaults results will be returned. */ struct _HippoCanvasBoxChild { HippoCanvasItem *item; /* If this is false, layout managers should ignore this item */ guint in_layout : 1; guint expand : 1; guint end : 1; guint fixed : 1; guint if_fits : 1; guint float_left : 1; guint float_right : 1; guint clear_left : 1; guint clear_right : 1; guint visible : 1; }; GType hippo_canvas_box_child_get_type (void); HippoCanvasBoxChild *hippo_canvas_box_child_ref (HippoCanvasBoxChild *child); void hippo_canvas_box_child_unref (HippoCanvasBoxChild *child); void hippo_canvas_box_child_set_qdata (HippoCanvasBoxChild *child, GQuark key, gpointer data, GDestroyNotify notify); gpointer hippo_canvas_box_child_get_qdata (HippoCanvasBoxChild *child, GQuark key); void hippo_canvas_box_child_get_width_request (HippoCanvasBoxChild *child, int *min_width_p, int *natural_width_p); void hippo_canvas_box_child_get_height_request (HippoCanvasBoxChild *child, int for_width, int *min_height_p, int *natural_height_p); void hippo_canvas_box_child_allocate (HippoCanvasBoxChild *child, int x, int y, int width, int height, gboolean origin_changed); G_END_DECLS #endif /* __HIPPO_CANVAS_BOX_H__ */ hippo-canvas-0.3.1/common/hippo/hippo-canvas-layout.h0000664000076400007640000001077211366237063017537 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_CANVAS_LAYOUT_H__ #define __HIPPO_CANVAS_LAYOUT_H__ #include G_BEGIN_DECLS typedef struct _HippoCanvasLayoutIface HippoCanvasLayoutIface; #define HIPPO_TYPE_CANVAS_LAYOUT (hippo_canvas_layout_get_type ()) #define HIPPO_CANVAS_LAYOUT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_CANVAS_LAYOUT, HippoCanvasLayout)) #define HIPPO_IS_CANVAS_LAYOUT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_CANVAS_LAYOUT)) #define HIPPO_CANVAS_LAYOUT_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), HIPPO_TYPE_CANVAS_LAYOUT, HippoCanvasLayoutIface)) /** * HippoCanvasLayout: * * The #HippoCanvasLayout interface represents a custom layout strategy for * the contents of a #HippoCanvasBox. The implementor is responsible for * implementing the three basic operations get_width_request, get_height_request, * and allocate. In each case, the layout manager should loop over all children * returned by hippo_canvas_box_get_layout_children(), and call the corresponding * method on #HippoCanvasBoxChild for each child. (You must do this, even * if you aren't going to use the returned values to compute the returned values * from get_width_request or get_height_request.) * * The widths, heights, and positions referenced in the method parameters are the * widths, heights, and positions of the content area, after padding, border, * and alignment have already been dealt with. * * The box that the layout manager acts upon is passed to set_box when the user * calls hippo_canvas_box_set_layout(). set_box is called passing in %NULL when * the box is destroyed or a different layout manager set. * * The implementor should store the box for future reference, but does not need * to add an explicit reference. (If you do add an explicit reference, then there * is some danger of a memory leak if the box is unreferenced without being * explicitely destroyed with hippo_canvas_item_destroy().) */ struct _HippoCanvasLayoutIface { GTypeInterface base_iface; void (* set_box) (HippoCanvasLayout *layout, HippoCanvasBox *box); void (* get_width_request) (HippoCanvasLayout *layout, int *min_width_p, int *natural_width_p); void (* get_height_request) (HippoCanvasLayout *layout, int for_width, int *min_height_p, int *natural_height_p); void (* allocate) (HippoCanvasLayout *layout, int x, int y, int width, int height, int requested_width, int requested_height, gboolean origin_changed); }; GType hippo_canvas_layout_get_type(void); void hippo_canvas_layout_set_box (HippoCanvasLayout *layout, HippoCanvasBox *box); void hippo_canvas_layout_get_width_request (HippoCanvasLayout *layout, int *min_width_p, int *natural_width_p); void hippo_canvas_layout_get_height_request (HippoCanvasLayout *layout, int for_width, int *min_height_p, int *natural_height_p); void hippo_canvas_layout_allocate (HippoCanvasLayout *layout, int x, int y, int width, int height, int requested_width, int requested_height, gboolean origin_changed); G_END_DECLS #endif /* __HIPPO_CANVAS_LAYOUT_H__ */ hippo-canvas-0.3.1/common/hippo/hippo-animation-manager.h0000664000076400007640000000442511366237063020336 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_ANIMATION_MANAGER_H__ #define __HIPPO_ANIMATION_MANAGER_H__ #include G_BEGIN_DECLS /** * HippoAnimationManager:: * * The animation manager class takes care of running animations within a single canvas. * While there are active animations, the animation manager advances all the active * animations, then emits the ::after-frame signal. The canvas container (which will * create and own the animation manager) watches for that signal, and when it sees * it waits until all resizing and drawing is complete and calls * hippo_animation_manager_frame_complete(). (The frame serial from ::after-frame * should be passed to frame_complete() though the concept of frame serials isn't * really fully worked out here.) */ #define HIPPO_TYPE_ANIMATION_MANAGER (hippo_animation_manager_get_type ()) #define HIPPO_ANIMATION_MANAGER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_ANIMATION_MANAGER, HippoAnimationManager)) #define HIPPO_ANIMATION_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), HIPPO_TYPE_ANIMATION_MANAGER, HippoAnimationManagerClass)) #define HIPPO_IS_ANIMATION_MANAGER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_ANIMATION_MANAGER)) #define HIPPO_IS_ANIMATION_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), HIPPO_TYPE_ANIMATION_MANAGER)) #define HIPPO_ANIMATION_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), HIPPO_TYPE_ANIMATION_MANAGER, HippoAnimationManagerClass)) typedef struct _HippoAnimationManager HippoAnimationManager; typedef struct _HippoAnimationManagerClass HippoAnimationManagerClass; GType hippo_animation_manager_get_type (void) G_GNUC_CONST; HippoAnimationManager *hippo_animation_manager_new (void); void hippo_animation_manager_add_animation (HippoAnimationManager *manager, HippoAnimation *animation, double delay); void hippo_animation_manager_frame_complete (HippoAnimationManager *manager, guint frame_serial); G_END_DECLS #endif /* __HIPPO_ANIMATION_MANAGER_H__ */ hippo-canvas-0.3.1/common/hippo/hippo-canvas-type-builtins.h0000664000076400007640000000441111404421423021007 00000000000000 /* Generated data (by glib-mkenums) */ #ifndef HIPPO_CANVAS_TYPE_BUILTINS_H #define HIPPO_CANVAS_TYPE_BUILTINS_H 1 #include G_BEGIN_DECLS /* --- hippo/hippo-canvas-box.h --- */ #define HIPPO_TYPE_PACK_FLAGS hippo_pack_flags_get_type() GType hippo_pack_flags_get_type (void); /* --- hippo/hippo-canvas-context.h --- */ #define HIPPO_TYPE_STOCK_COLOR hippo_stock_color_get_type() GType hippo_stock_color_get_type (void); /* --- hippo/hippo-canvas-item.h --- */ #define HIPPO_TYPE_CANVAS_POINTER hippo_canvas_pointer_get_type() GType hippo_canvas_pointer_get_type (void); #define HIPPO_TYPE_ITEM_ALIGNMENT hippo_item_alignment_get_type() GType hippo_item_alignment_get_type (void); /* --- hippo/hippo-canvas-style.h --- */ #define HIPPO_TYPE_CANVAS_LINK_TYPE hippo_canvas_link_type_get_type() GType hippo_canvas_link_type_get_type (void); #define HIPPO_TYPE_CANVAS_SIDE hippo_canvas_side_get_type() GType hippo_canvas_side_get_type (void); #define HIPPO_TYPE_TEXT_DECORATION hippo_text_decoration_get_type() GType hippo_text_decoration_get_type (void); /* --- hippo/hippo-canvas-text.h --- */ #define HIPPO_TYPE_CANVAS_SIZE_MODE hippo_canvas_size_mode_get_type() GType hippo_canvas_size_mode_get_type (void); /* --- hippo/hippo-canvas-widgets.h --- */ #define HIPPO_TYPE_SCROLLBAR_POLICY hippo_scrollbar_policy_get_type() GType hippo_scrollbar_policy_get_type (void); /* --- hippo/hippo-event.h --- */ #define HIPPO_TYPE_EVENT_TYPE hippo_event_type_get_type() GType hippo_event_type_get_type (void); #define HIPPO_TYPE_MOTION_DETAIL hippo_motion_detail_get_type() GType hippo_motion_detail_get_type (void); #define HIPPO_TYPE_SCROLL_DIRECTION hippo_scroll_direction_get_type() GType hippo_scroll_direction_get_type (void); #define HIPPO_TYPE_KEY hippo_key_get_type() GType hippo_key_get_type (void); #define HIPPO_TYPE_MODIFIER hippo_modifier_get_type() GType hippo_modifier_get_type (void); /* --- hippo/hippo-graphics.h --- */ #define HIPPO_TYPE_ORIENTATION hippo_orientation_get_type() GType hippo_orientation_get_type (void); #define HIPPO_TYPE_SIDE hippo_side_get_type() GType hippo_side_get_type (void); #define HIPPO_TYPE_GRAVITY hippo_gravity_get_type() GType hippo_gravity_get_type (void); G_END_DECLS #endif /* HIPPO_CANVAS_TYPE_BUILTINS_H */ /* Generated data ends here */ hippo-canvas-0.3.1/common/hippo/hippo-event.h0000664000076400007640000000351211366237063016064 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_EVENT_H__ #define __HIPPO_EVENT_H__ #include #include G_BEGIN_DECLS #define HIPPO_TYPE_EVENT (hippo_event_get_type()) typedef enum { HIPPO_EVENT_BUTTON_PRESS, HIPPO_EVENT_BUTTON_RELEASE, HIPPO_EVENT_MOTION_NOTIFY, HIPPO_EVENT_KEY_PRESS, HIPPO_EVENT_SCROLL } HippoEventType; typedef enum { HIPPO_MOTION_DETAIL_ENTER, HIPPO_MOTION_DETAIL_LEAVE, HIPPO_MOTION_DETAIL_WITHIN } HippoMotionDetail; typedef enum { HIPPO_SCROLL_UP, HIPPO_SCROLL_DOWN, HIPPO_SCROLL_LEFT, HIPPO_SCROLL_RIGHT } HippoScrollDirection; typedef struct _HippoEvent HippoEvent; typedef enum { HIPPO_KEY_UNKNOWN, HIPPO_KEY_RETURN, HIPPO_KEY_ESCAPE, HIPPO_KEY_TAB, HIPPO_KEY_LEFTTAB } HippoKey; typedef enum { HIPPO_MODIFIER_SHIFT = 1 << 0, HIPPO_MODIFIER_CTRL = 1 << 1, HIPPO_MODIFIER_ALT = 1 << 2 } HippoModifier; struct _HippoEvent { HippoEventType type; int x; int y; union { struct { HippoMotionDetail detail; } motion; struct { int button; int count; /* we pass these through for gtk_window_begin_resize_drag() */ int x11_x_root; int x11_y_root; guint32 x11_time; guint modifiers; } button; struct { HippoKey key; gunichar character; /* 0 if no translation */ guint modifiers; } key; struct { HippoScrollDirection direction; } scroll; } u; }; GType hippo_event_get_type (void) G_GNUC_CONST; HippoEvent *hippo_event_copy (HippoEvent *event); void hippo_event_free (HippoRectangle *event); G_END_DECLS #endif /* __HIPPO_EVENT_H */ hippo-canvas-0.3.1/common/hippo/hippo-canvas-link.h0000664000076400007640000000247711366237063017162 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_CANVAS_LINK_H__ #define __HIPPO_CANVAS_LINK_H__ /* An href-link canvas item. */ #include "hippo-canvas-text.h" #include G_BEGIN_DECLS typedef struct _HippoCanvasLink HippoCanvasLink; typedef struct _HippoCanvasLinkClass HippoCanvasLinkClass; #define HIPPO_TYPE_CANVAS_LINK (hippo_canvas_link_get_type ()) #define HIPPO_CANVAS_LINK(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_CANVAS_LINK, HippoCanvasLink)) #define HIPPO_CANVAS_LINK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), HIPPO_TYPE_CANVAS_LINK, HippoCanvasLinkClass)) #define HIPPO_IS_CANVAS_LINK(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_CANVAS_LINK)) #define HIPPO_IS_CANVAS_LINK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), HIPPO_TYPE_CANVAS_LINK)) #define HIPPO_CANVAS_LINK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), HIPPO_TYPE_CANVAS_LINK, HippoCanvasLinkClass)) struct _HippoCanvasLink { HippoCanvasText text; gboolean visited; }; struct _HippoCanvasLinkClass { HippoCanvasTextClass parent_class; }; GType hippo_canvas_link_get_type (void) G_GNUC_CONST; HippoCanvasItem* hippo_canvas_link_new (void); G_END_DECLS #endif /* __HIPPO_CANVAS_LINK_H__ */ hippo-canvas-0.3.1/common/hippo/hippo-canvas-theme-engine.c0000664000076400007640000000341311366237063020554 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include #include "hippo-canvas-theme-engine.h" static void hippo_canvas_item_base_init (void *klass); #if 0 enum { LAST_SIGNAL }; static int signals[LAST_SIGNAL]; #endif GType hippo_canvas_theme_engine_get_type(void) { static GType type = 0; if (type == 0) { static const GTypeInfo info = { sizeof(HippoCanvasThemeEngineIface), hippo_canvas_item_base_init, NULL /* base_finalize */ }; type = g_type_register_static(G_TYPE_INTERFACE, "HippoCanvasThemeEngine", &info, 0); g_type_interface_add_prerequisite (type, G_TYPE_OBJECT); } return type; } static void hippo_canvas_item_base_init(void *klass) { static gboolean initialized = FALSE; if (!initialized) { /* create signals in here */ } } gboolean hippo_canvas_theme_engine_paint (HippoCanvasThemeEngine *engine, HippoCanvasStyle *style, cairo_t *cr, const char *name, double x, double y, double width, double height) { g_return_val_if_fail(HIPPO_IS_CANVAS_THEME_ENGINE(engine), FALSE); return HIPPO_CANVAS_THEME_ENGINE_GET_IFACE(engine)->paint(engine, style, cr, name, x, y, width, height); } hippo-canvas-0.3.1/common/hippo/hippo-canvas-container.c0000664000076400007640000000620711366237063020175 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include "hippo-canvas-internal.h" #include "hippo-canvas-container.h" #include "hippo-canvas-marshal.h" static void hippo_canvas_container_base_init (void *klass); /* enum { LAST_SIGNAL }; static int signals[LAST_SIGNAL]; */ GType hippo_canvas_container_get_type(void) { static GType type = 0; if (type == 0) { static const GTypeInfo info = { sizeof(HippoCanvasContainerIface), hippo_canvas_container_base_init, NULL /* base_finalize */ }; type = g_type_register_static(G_TYPE_INTERFACE, "HippoCanvasContainer", &info, 0); } return type; } static void hippo_canvas_container_base_init(void *klass) { static gboolean initialized = FALSE; if (!initialized) { /* create signals in here */ initialized = TRUE; } } gboolean hippo_canvas_container_get_child_visible(HippoCanvasContainer *container, HippoCanvasItem *child) { g_return_val_if_fail(HIPPO_IS_CANVAS_CONTAINER(container), FALSE); g_return_val_if_fail(HIPPO_IS_CANVAS_ITEM(child), FALSE); return HIPPO_CANVAS_CONTAINER_GET_IFACE(container)->get_child_visible(container, child) != FALSE; } /** * hippo_canvas_container_set_child_visible: * @container: the container item * @child: child that is inside the container * @visible: %FALSE if child should be given a 0x0 allocation and therefore be invisible * * * This is the equivalent of gtk_widget_show() and gtk_widget_hide() for #GtkWidget. * Unlike #GtkWidget, in #HippoCanvas visibility is a property of the container-child * pair rather than a property of the child itself. Thus, if you remove * a child from a container its visibility state is lost. * * Internally, invisible children are just allocated a 0x0 size; they are not * otherwise told they are invisible. * * Making this a "child property" on the container instead of a flag on * #HippoCanvasItem is perhaps a little surprising, but * is consistent with e.g. having the allocation origin in the container * also. The general theme is that #HippoCanvasItem has minimal knowledge * of its context - doesn't know its origin coords, parent item, * or whether it will be painted at all. Which makes it easier to * implement canvas items and easier to use them in different/multiple * contexts, but makes containers harder and more complex. * * An implementation convenience of this approach is that the * Windows and Linux canvas widgets need not handle the visibility * of their root items. */ void hippo_canvas_container_set_child_visible (HippoCanvasContainer *container, HippoCanvasItem *child, gboolean visible) { g_return_if_fail(HIPPO_IS_CANVAS_CONTAINER(container)); g_return_if_fail(HIPPO_IS_CANVAS_ITEM(child)); HIPPO_CANVAS_CONTAINER_GET_IFACE(container)->set_child_visible(container, child, visible != FALSE); } hippo-canvas-0.3.1/common/hippo/hippo-canvas-test.h0000664000076400007640000000043511366237063017174 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_CANVAS_TEST_H__ #define __HIPPO_CANVAS_TEST_H__ #include G_BEGIN_DECLS HippoCanvasItem* hippo_canvas_test_get_root(void); G_END_DECLS #endif /* __HIPPO_CANVAS_TEST_H__ */ hippo-canvas-0.3.1/common/hippo/hippo-canvas-test.c0000664000076400007640000004735111366237063017177 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include #include "hippo-canvas-test.h" #include "hippo-canvas-internal.h" #include #include #include #include typedef struct { int width; int height; guint32 color; HippoPackFlags flags; HippoItemAlignment alignment; } BoxAttrs; static BoxAttrs single_start[] = { { 40, 80, 0x0000ffff, 0, HIPPO_ALIGNMENT_FILL }, { 0, 0, 0, 0 } }; static BoxAttrs single_end[] = { { 100, 60, 0x00ff00ff, HIPPO_PACK_END, HIPPO_ALIGNMENT_FILL }, { 0, 0, 0, 0 } }; static BoxAttrs double_start[] = { { 50, 90, 0x0000ffff, 0, HIPPO_ALIGNMENT_FILL }, { 50, 90, 0xff000099, HIPPO_PACK_EXPAND, HIPPO_ALIGNMENT_FILL }, { 0, 0, 0, 0 } }; static BoxAttrs double_end[] = { { 45, 55, 0x00ff00ff, HIPPO_PACK_END, HIPPO_ALIGNMENT_FILL }, { 45, 55, 0x00ff0077, HIPPO_PACK_END, HIPPO_ALIGNMENT_FILL }, { 0, 0, 0, 0 } }; static BoxAttrs single_expand[] = { { 100, 60, 0x0000ffff, HIPPO_PACK_EXPAND, HIPPO_ALIGNMENT_FILL }, { 0, 0, 0, 0 } }; static BoxAttrs single_expand_end[] = { { 100, 60, 0x0000ffff, HIPPO_PACK_EXPAND | HIPPO_PACK_END, HIPPO_ALIGNMENT_FILL }, { 0, 0, 0, 0 } }; static BoxAttrs everything[] = { { 120, 50, 0x00ccccff, 0, HIPPO_ALIGNMENT_FILL }, { 120, 50, 0x00ccccff, HIPPO_PACK_END, HIPPO_ALIGNMENT_FILL }, { 120, 50, 0x00ccccff, HIPPO_PACK_EXPAND, HIPPO_ALIGNMENT_FILL }, { 120, 50, 0x00ccccff, HIPPO_PACK_EXPAND | HIPPO_PACK_END, HIPPO_ALIGNMENT_FILL }, { 0, 0, 0, 0 } }; static BoxAttrs alignments[] = { { 120, 50, 0x00ffcccc, HIPPO_PACK_EXPAND, HIPPO_ALIGNMENT_FILL }, { 120, 50, 0x00ccffcc, HIPPO_PACK_EXPAND, HIPPO_ALIGNMENT_START }, { 120, 50, 0x00cffffc, HIPPO_PACK_EXPAND, HIPPO_ALIGNMENT_CENTER }, { 120, 50, 0x00ccccff, HIPPO_PACK_EXPAND, HIPPO_ALIGNMENT_END }, { 0, 0, 0, 0 } }; static BoxAttrs* box_rows[] = { single_start, /* double_start,*/ single_end, /* double_end, */ single_expand, everything, alignments }; static HippoCanvasItem* create_row(BoxAttrs *boxes) { HippoCanvasItem *row; int i; row = g_object_new(HIPPO_TYPE_CANVAS_BOX, "orientation", HIPPO_ORIENTATION_HORIZONTAL, "spacing", 5, NULL); for (i = 0; boxes[i].width > 0; ++i) { BoxAttrs *attrs = &boxes[i]; HippoCanvasItem *shape; HippoCanvasItem *label; const char *flags_text; const char *align_text; char *s; shape = g_object_new(HIPPO_TYPE_CANVAS_BOX, /* "width", attrs->width, "height", attrs->height, */ /* "color", attrs->color, */ "background-color", 0xffffffff, "xalign", attrs->alignment, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(row), shape, attrs->flags); if (attrs->flags == (HIPPO_PACK_END | HIPPO_PACK_EXPAND)) flags_text = "END | EXPAND"; else if (attrs->flags == HIPPO_PACK_END) flags_text = "END"; else if (attrs->flags == HIPPO_PACK_EXPAND) flags_text = "EXPAND"; else flags_text = "0"; switch (attrs->alignment) { case HIPPO_ALIGNMENT_FILL: align_text = "FILL"; break; case HIPPO_ALIGNMENT_START: align_text = "START"; break; case HIPPO_ALIGNMENT_END: align_text = "END"; break; case HIPPO_ALIGNMENT_CENTER: align_text = "CENTER"; break; default: align_text = NULL; break; } s = g_strdup_printf("%s, %s", flags_text, align_text); label = g_object_new(HIPPO_TYPE_CANVAS_TEXT, "text", s, "background-color", 0x0000ff00, NULL); g_free(s); hippo_canvas_box_append(HIPPO_CANVAS_BOX(shape), label, HIPPO_PACK_EXPAND); } return row; } static void change_text_on_hovering(HippoCanvasItem *item, gboolean hovering, void *data) { g_object_set(G_OBJECT(item), "text", hovering ? "Hovering!" : "... not hovering ... looooooooooooooooooooooooooong", NULL); } static HippoCanvasItem* create_test_box_layout_root(void) { HippoCanvasItem *box; HippoCanvasItem *text; box = g_object_new(HIPPO_TYPE_CANVAS_BOX, "orientation", HIPPO_ORIENTATION_VERTICAL, "border", 4, "border-color", 0x000000ff, "padding", 10, "background-color", 0xffffffff, "spacing", 10, NULL); text = g_object_new(HIPPO_TYPE_CANVAS_TEXT, "size-mode", HIPPO_CANVAS_SIZE_ELLIPSIZE_END, "text", "expand=0 ellipsize=1", "background-color", 0xffaaaaff, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(box), text, 0); text = g_object_new(HIPPO_TYPE_CANVAS_TEXT, "size-mode", HIPPO_CANVAS_SIZE_ELLIPSIZE_END, "text", "expand=1 ellipsize=1", "background-color", 0xaaffaaff, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(box), text, HIPPO_PACK_EXPAND); text = g_object_new(HIPPO_TYPE_CANVAS_TEXT, "text", "expand=0 ellipsize=0", "background-color", 0xaaaaffff, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(box), text, 0); text = g_object_new(HIPPO_TYPE_CANVAS_TEXT, "text", "expand=1 ellipsize=0", "background-color", 0xaaffffff, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(box), text, HIPPO_PACK_EXPAND); text = g_object_new(HIPPO_TYPE_CANVAS_TEXT, "size-mode", HIPPO_CANVAS_SIZE_ELLIPSIZE_END, "text", "short ex=0 el=1", "background-color", 0xffffaaff, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(box), text, 0); text = g_object_new(HIPPO_TYPE_CANVAS_TEXT, "text", "expand=1 if_fits=1", "background-color", 0xaaffaaff, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(box), text, HIPPO_PACK_EXPAND | HIPPO_PACK_IF_FITS); text = g_object_new(HIPPO_TYPE_CANVAS_TEXT, "text", "expand=0 if_fits=1", "background-color", 0xffaaffaa, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(box), text, HIPPO_PACK_IF_FITS); return box; } static HippoCanvasItem* create_floated_box_layout_root(void) { HippoCanvasBox *box; HippoCanvasItem *text; box = g_object_new(HIPPO_TYPE_CANVAS_BOX, "orientation", HIPPO_ORIENTATION_VERTICAL, "border", 4, "border-color", 0x000000ff, "padding", 10, "background-color", 0xffffffff, "spacing", 5, NULL); text = g_object_new(HIPPO_TYPE_CANVAS_TEXT, "text", "LEFT\nFLOAT", "background-color", 0xaa0000ff, "border-color", 0x000000ff, "border", 1, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(box), text, HIPPO_PACK_FLOAT_LEFT); text = g_object_new(HIPPO_TYPE_CANVAS_TEXT, "text", "WIDER LEFT\nFLOAT", "background-color", 0xaa0000ff, "border-color", 0x000000ff, "border", 1, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(box), text, HIPPO_PACK_FLOAT_LEFT); text = g_object_new(HIPPO_TYPE_CANVAS_BOX, "background-color", 0x00aa00ff, "border-color", 0x000000ff, "box-width", 5, "box-height", 5, "border", 1, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(box), text, HIPPO_PACK_FLOAT_RIGHT); text = g_object_new(HIPPO_TYPE_CANVAS_TEXT, "text", "RIGHT", "background-color", 0x00aa00ff, "border-color", 0x000000ff, "border", 1, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(box), text, HIPPO_PACK_FLOAT_RIGHT); text = g_object_new(HIPPO_TYPE_CANVAS_TEXT, "text", "WIDER RIGHT", "background-color", 0x00aa00ff, "border-color", 0x000000ff, "border", 1, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(box), text, HIPPO_PACK_FLOAT_RIGHT); text = g_object_new(HIPPO_TYPE_CANVAS_TEXT, "text", "This is a normally flowed item", "size-mode", HIPPO_CANVAS_SIZE_WRAP_WORD, "background-color", 0x4444ffff, "border-color", 0x000000ff, "border", 1, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(box), text, 0); text = g_object_new(HIPPO_TYPE_CANVAS_TEXT, "text", "Two\nLines", "background-color", 0x4444ffff, "border-color", 0x000000ff, "border", 1, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(box), text, 0); text = g_object_new(HIPPO_TYPE_CANVAS_TEXT, "text", "This item is set to clear both left and right floats, so it " "will appear beneath them. It also has a lot of text in it " "to force it to wrap", "size-mode", HIPPO_CANVAS_SIZE_WRAP_WORD, "background-color", 0x4444ffff, "border-color", 0x000000ff, "border", 1, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(box), text, HIPPO_PACK_CLEAR_BOTH); text = g_object_new(HIPPO_TYPE_CANVAS_TEXT, "text", "After everything so below", "background-color", 0x00aa00ff, "border-color", 0x000000ff, "border", 1, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(box), text, HIPPO_PACK_FLOAT_RIGHT); return HIPPO_CANVAS_ITEM(box); } static void on_item_activated(HippoCanvasItem *item) { g_object_set(G_OBJECT(item), "text", "Foo", NULL); } static HippoCanvasItem* create_test_click_release_root(void) { HippoCanvasItem *box; HippoCanvasItem *text; box = g_object_new(HIPPO_TYPE_CANVAS_BOX, "orientation", HIPPO_ORIENTATION_HORIZONTAL, "border", 4, "border-color", 0x000000ff, "padding", 10, "background-color", 0xffffffff, "spacing", 10, NULL); text = g_object_new(HIPPO_TYPE_CANVAS_LINK, "size-mode", HIPPO_CANVAS_SIZE_ELLIPSIZE_END, "text", "Click Me!", "background-color", 0xffaaaaff, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(box), text, 0); g_signal_connect(G_OBJECT(text), "activated", G_CALLBACK(on_item_activated), NULL); text = g_object_new(HIPPO_TYPE_CANVAS_LINK, "size-mode", HIPPO_CANVAS_SIZE_ELLIPSIZE_END, "text", "Click Me!", "background-color", 0x00aaffff, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(box), text, 0); g_signal_connect(G_OBJECT(text), "activated", G_CALLBACK(on_item_activated), NULL); return box; } HippoCanvasItem* hippo_canvas_test_get_root(void) { HippoCanvasItem *root; HippoCanvasItem *shape2; HippoCanvasItem *text; #if 0 HippoCanvasItem *image; HippoCanvasItem *row; HippoCanvasItem *shape1; int i; root = g_object_new(HIPPO_TYPE_CANVAS_STACK, "box-width", 400, "spacing", 8, NULL); row = g_object_new(HIPPO_TYPE_CANVAS_BLOCK, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(root), row, 0); row = g_object_new(HIPPO_TYPE_CANVAS_BLOCK, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(root), row, 0); #if 0 #if 1 shape1 = g_object_new(HIPPO_TYPE_CANVAS_SHAPE, "width", 50, "height", 30, "color", 0xaeaeaeff, "padding", 20, NULL); shape2 = g_object_new(HIPPO_TYPE_CANVAS_SHAPE, "width", 50, "height", 30, "color", 0x00ff00ff, "padding", 10, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(root), shape1, 0); hippo_canvas_box_append(HIPPO_CANVAS_BOX(root), shape2, 0); #endif for (i = 0; i < (int) G_N_ELEMENTS(box_rows); ++i) { row = create_row(box_rows[i]); hippo_canvas_box_append(HIPPO_CANVAS_BOX(root), row, 0); } text = g_object_new(HIPPO_TYPE_CANVAS_LINK, "text", "Click here", "background-color", 0x990000ff, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(root), text, HIPPO_PACK_EXPAND); row = g_object_new(HIPPO_TYPE_CANVAS_BOX, "orientation", HIPPO_ORIENTATION_HORIZONTAL, "spacing", 5, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(root), row, HIPPO_PACK_EXPAND); image = g_object_new(HIPPO_TYPE_CANVAS_IMAGE, "image-name", "chaticon", "xalign", HIPPO_ALIGNMENT_START, "yalign", HIPPO_ALIGNMENT_END, "background-color", 0xffff00ff, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(row), image, 0); image = g_object_new(HIPPO_TYPE_CANVAS_IMAGE, "image-name", "ignoreicon", "xalign", HIPPO_ALIGNMENT_FILL, "yalign", HIPPO_ALIGNMENT_FILL, "background-color", 0x00ff00ff, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(row), image, HIPPO_PACK_EXPAND); text = g_object_new(HIPPO_TYPE_CANVAS_TEXT, "size-mode", HIPPO_CANVAS_SIZE_WRAP_WORD, "text", "This is some long text that may help in testing resize behavior. It goes " "on for a while, so don't get impatient. More and more and more text. " "Text text text. Lorem ipsum! Text! This is the story of text.", "background-color", 0x0000ff00, "yalign", HIPPO_ALIGNMENT_END, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(root), text, HIPPO_PACK_EXPAND); #endif #endif root = g_object_new(HIPPO_TYPE_CANVAS_BOX, "orientation", HIPPO_ORIENTATION_VERTICAL, "border", 15, "border-color", 0xff0000ff, "padding", 25, "background-color", 0x00ff00ff, NULL); #if 0 text = g_object_new(HIPPO_TYPE_CANVAS_TEXT, "text", "Click here", "color", 0xffffffff, "background-color", 0x0000ffff, NULL); #else text = g_object_new(HIPPO_TYPE_CANVAS_IMAGE, "image-name", "nophoto", "background-color", 0x0000ffff, "xalign", HIPPO_ALIGNMENT_CENTER, "yalign", HIPPO_ALIGNMENT_CENTER, NULL); #endif #if 0 { GtkWidget *widget = gtk_label_new("FOOO! GtkLabel"); gtk_widget_show(widget); shape1 = g_object_new(HIPPO_TYPE_CANVAS_WIDGET, "widget", widget, "background-color", 0x0000ffff, "xalign", HIPPO_ALIGNMENT_CENTER, "yalign", HIPPO_ALIGNMENT_CENTER, NULL); } hippo_canvas_box_append(HIPPO_CANVAS_BOX(root), shape1, HIPPO_PACK_EXPAND); text = g_object_new(HIPPO_TYPE_CANVAS_LINK, "text", "Fixed link inside label item", "background-color", 0xffffffff, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(shape1), text, HIPPO_PACK_FIXED); hippo_canvas_box_move(HIPPO_CANVAS_BOX(shape1), text, 50, 50); #endif #if 0 /* Item that changes on hover */ text = g_object_new(HIPPO_TYPE_CANVAS_TEXT, "text", "Text item packed end", "color", 0xffffffff, "background-color", 0x0000ffff, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(root), text, HIPPO_PACK_END); g_signal_connect(G_OBJECT(text), "hovering-changed", G_CALLBACK(change_text_on_hovering), NULL); #endif #if 0 /* Fixed items */ text = g_object_new(HIPPO_TYPE_CANVAS_LINK, "text", "Fixed position link item", "background-color", 0xffffffff, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(root), text, HIPPO_PACK_FIXED); hippo_canvas_box_move(HIPPO_CANVAS_BOX(root), text, HIPPO_GRAVITY_NORTH_WEST, 150, 150); #endif #if 1 /* For box layout testing */ shape2 = create_test_box_layout_root(); hippo_canvas_box_append(HIPPO_CANVAS_BOX(root), shape2, HIPPO_PACK_END | HIPPO_PACK_EXPAND); #endif #if 0 /* For float testing */ shape2 = create_floated_box_layout_root(); hippo_canvas_box_append(HIPPO_CANVAS_BOX(root), shape2, HIPPO_PACK_EXPAND); #endif #if 0 /* for click-release testing */ shape2 = create_test_click_release_root(); hippo_canvas_box_append(HIPPO_CANVAS_BOX(root), shape2, HIPPO_PACK_EXPAND); #endif #if 0 /* A box with nothing expandable in it */ shape2 = g_object_new(HIPPO_TYPE_CANVAS_BOX, "orientation", HIPPO_ORIENTATION_HORIZONTAL, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(root), shape2, HIPPO_PACK_END); text = g_object_new(HIPPO_TYPE_CANVAS_TEXT, "text", "No expand/ellipse", "background-color", 0xaaaaaaff, NULL); hippo_canvas_box_append(HIPPO_CANVAS_BOX(shape2), text, 0); #endif return root; } hippo-canvas-0.3.1/common/hippo/hippo-canvas-style.h0000664000076400007640000001322111366237063017352 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_CANVAS_STYLE_H__ #define __HIPPO_CANVAS_STYLE_H__ #include "hippo-canvas-context.h" #include "hippo-canvas-theme-image.h" G_BEGIN_DECLS #define HIPPO_TYPE_CANVAS_STYLE (hippo_canvas_style_get_type ()) #define HIPPO_CANVAS_STYLE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_CANVAS_STYLE, HippoCanvasStyle)) #define HIPPO_CANVAS_STYLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), HIPPO_TYPE_CANVAS_STYLE, HippoCanvasStyleClass)) #define HIPPO_IS_CANVAS_STYLE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_CANVAS_STYLE)) #define HIPPO_IS_CANVAS_STYLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), HIPPO_TYPE_CANVAS_STYLE)) #define HIPPO_CANVAS_STYLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), HIPPO_TYPE_CANVAS_STYLE, HippoCanvasStyleClass)) typedef enum { HIPPO_CANVAS_LINK_NONE, HIPPO_CANVAS_LINK_LINK, HIPPO_CANVAS_LINK_VISITED } HippoCanvasLinkType; typedef enum { HIPPO_CANVAS_SIDE_LEFT, HIPPO_CANVAS_SIDE_RIGHT, HIPPO_CANVAS_SIDE_TOP, HIPPO_CANVAS_SIDE_BOTTOM } HippoCanvasSide; /* These are the CSS values; that doesn't mean we have to implement blink... */ typedef enum { HIPPO_TEXT_DECORATION_UNDERLINE = 1 << 0, HIPPO_TEXT_DECORATION_OVERLINE = 1 << 1, HIPPO_TEXT_DECORATION_LINE_THROUGH = 1 << 2, HIPPO_TEXT_DECORATION_BLINK = 1 << 3 } HippoTextDecoration; GType hippo_canvas_style_get_type (void) G_GNUC_CONST; /* An element_type of G_TYPE_NONE means this style was created for the canvas root * element and matches a selector element name of 'canvas' */ HippoCanvasStyle *hippo_canvas_style_new (HippoCanvasContext *context, HippoCanvasStyle *parent_style, /* can be null */ HippoCanvasTheme *theme, /* can be null */ GType element_type, const char *element_id, const char *element_class); void hippo_canvas_style_set_link_type (HippoCanvasStyle *style, HippoCanvasLinkType link_type); HippoCanvasLinkType hippo_canvas_style_get_link_type (HippoCanvasStyle *style); HippoCanvasStyle *hippo_canvas_style_get_parent (HippoCanvasStyle *style); HippoCanvasTheme *hippo_canvas_style_get_theme (HippoCanvasStyle *style); GType hippo_canvas_style_get_element_type (HippoCanvasStyle *style); const char *hippo_canvas_style_get_element_id (HippoCanvasStyle *style); const char *hippo_canvas_style_get_element_class (HippoCanvasStyle *style); /* Generic getters ... these are not cached so are less efficient. The other * reason for adding the more specific version is that we can handle the * details of the actual CSS rules, which can be complicated, especially * for fonts */ gboolean hippo_canvas_style_get_color (HippoCanvasStyle *style, const char *property_name, gboolean inherit, guint32 *color); gboolean hippo_canvas_style_get_double (HippoCanvasStyle *style, const char *property_name, gboolean inherit, double *value); /* The length here is already resolved to pixels */ gboolean hippo_canvas_style_get_length (HippoCanvasStyle *style, const char *property_name, gboolean inherit, gdouble *length); /* Specific getters for particular properties: cached */ guint32 hippo_canvas_style_get_background_color (HippoCanvasStyle *style); guint32 hippo_canvas_style_get_foreground_color (HippoCanvasStyle *style); double hippo_canvas_style_get_border_width (HippoCanvasStyle *style, HippoCanvasSide side); guint32 hippo_canvas_style_get_border_color(HippoCanvasStyle *style, HippoCanvasSide side); double hippo_canvas_style_get_padding (HippoCanvasStyle *style, HippoCanvasSide side); HippoTextDecoration hippo_canvas_style_get_text_decoration (HippoCanvasStyle *style); /* Font rule processing is pretty complicated, so we just hardcode it * under the standard font/font-family/font-size/etc names. This means * you can't have multiple separate styled fonts for a single item, * but that should be OK. */ PangoFontDescription *hippo_canvas_style_get_font (HippoCanvasStyle *style); /* This is the getter for -hippo-background-image, which is different from * background-image in having provisions for unscaled borders. */ HippoCanvasThemeImage *hippo_canvas_style_get_background_theme_image (HippoCanvasStyle *style); gboolean hippo_canvas_style_paint (HippoCanvasStyle *style, cairo_t *cr, const char *name, double x, double y, double width, double height); G_END_DECLS #endif /* __HIPPO_CANVAS_STYLE_H__ */ hippo-canvas-0.3.1/common/hippo/hippo-canvas-util.c0000664000076400007640000000160711366237063017167 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include #include #include "hippo-canvas-util.h" /* * Box Cairo types to GObject types */ GType hippo_cairo_surface_get_type (void) { static GType hippo_cairo_surface_type = 0; if (hippo_cairo_surface_type == 0) hippo_cairo_surface_type = g_boxed_type_register_static ("HippoCairoSurface", (GBoxedCopyFunc) cairo_surface_reference, (GBoxedFreeFunc) cairo_surface_destroy); return hippo_cairo_surface_type; } #ifndef GDK_TYPE_REGION GType pygdk_region_get_type (void) { static GType our_type = 0; if (our_type == 0) /* GdkRegion is already taken by pygtk in its boxing of GdkRegion. */ our_type = g_boxed_type_register_static ("HippoGdkRegion", (GBoxedCopyFunc)gdk_region_copy, (GBoxedFreeFunc)gdk_region_destroy); return our_type; } #endif hippo-canvas-0.3.1/common/hippo/hippo-canvas-item.c0000664000076400007640000006125211403414603017137 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include #include #include "hippo-canvas-internal.h" #include "hippo-canvas-item.h" #include "hippo-canvas-container.h" #include "hippo-canvas-marshal.h" static void hippo_canvas_item_class_init (void *g_iface); enum { DESTROY, PAINT, REQUEST_CHANGED, /* The size we want to request may have changed */ PAINT_NEEDED, BUTTON_PRESS_EVENT, BUTTON_RELEASE_EVENT, MOTION_NOTIFY_EVENT, SCROLL_EVENT, KEY_PRESS_EVENT, ACTIVATED, TOOLTIP_CHANGED, LAST_SIGNAL }; static int signals[LAST_SIGNAL]; GType hippo_canvas_item_get_type(void) { static GType type = 0; if (type == 0) { type = g_type_register_static_simple (G_TYPE_INTERFACE, _("HippoCanvasItem"), sizeof (HippoCanvasItemIface), (GClassInitFunc) hippo_canvas_item_class_init, 0, NULL, 0); } return type; } static void hippo_canvas_item_class_init(void *g_iface) { /** * HippoCanvasItem::destroy * * This canvas item has explicitely been destroyed. All references it holds * to other objects will be dropped, and all signal handlers removed. */ signals[DESTROY] = g_signal_new ("destroy", HIPPO_TYPE_CANVAS_ITEM, G_SIGNAL_RUN_CLEANUP | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS, 0, /* No handler; in C implement cleanups in ->dispose() */ NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * HippoCanvasItem::paint * * All drawing of a canvas item happens in the handlers for * this signal. The rectangle is the bounding box of the * damage region. Most concrete items derive from #HippoCanvasBox, * whose default paint handler invokes a series of more fine-grained * paint handlers to paint the background, content, etc.; usually you * should override one of those fine-grained handlers rather than this * all-encompassing paint. */ signals[PAINT] = g_signal_new ("paint", HIPPO_TYPE_CANVAS_ITEM, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(HippoCanvasItemIface, paint), NULL, NULL, hippo_canvas_marshal_VOID__POINTER_BOXED, G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_POINTER); /** * HippoCanvasItem::request-changed * * Signal emitted when the natural or minimum size of the canvas item * may have changed. The parent canvas or parent canvas item will normally * need to recompute its layout in response. */ signals[REQUEST_CHANGED] = g_signal_new ("request-changed", HIPPO_TYPE_CANVAS_ITEM, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(HippoCanvasItemIface, request_changed), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * HippoCanvasItem::paint-needed * * Signal emitted when a canvas item needs to be repainted. The * rectangle is the bounding box of the areas that need repainting. */ signals[PAINT_NEEDED] = g_signal_new ("paint-needed", HIPPO_TYPE_CANVAS_ITEM, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(HippoCanvasItemIface, paint_needed), NULL, NULL, g_cclosure_marshal_VOID__BOXED, G_TYPE_NONE, 1, HIPPO_TYPE_RECTANGLE); /** * HippoCanvasItem::button-press-event * * Signal emitted when a mouse button is pressed down on the canvas item. */ signals[BUTTON_PRESS_EVENT] = g_signal_new ("button-press-event", HIPPO_TYPE_CANVAS_ITEM, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(HippoCanvasItemIface, button_press_event), g_signal_accumulator_true_handled, NULL, hippo_canvas_marshal_BOOLEAN__BOXED, G_TYPE_BOOLEAN, 1, HIPPO_TYPE_EVENT); /** * HippoCanvasItem::button-release-event * * Signal emitted when a mouse button is released on the canvas item. */ signals[BUTTON_RELEASE_EVENT] = g_signal_new ("button-release-event", HIPPO_TYPE_CANVAS_ITEM, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(HippoCanvasItemIface, button_release_event), g_signal_accumulator_true_handled, NULL, hippo_canvas_marshal_BOOLEAN__BOXED, G_TYPE_BOOLEAN, 1, HIPPO_TYPE_EVENT); /** * HippoCanvasItem::motion-notify-event * * Signal emitted when the mouse pointer enters, leaves, or moves within * a canvas item. Note that unlike #GtkWidget, there are not separate * events for enter and leave. */ signals[MOTION_NOTIFY_EVENT] = g_signal_new ("motion-notify-event", HIPPO_TYPE_CANVAS_ITEM, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(HippoCanvasItemIface, motion_notify_event), g_signal_accumulator_true_handled, NULL, hippo_canvas_marshal_BOOLEAN__BOXED, G_TYPE_BOOLEAN, 1, HIPPO_TYPE_EVENT); /** * HippoCanvasItem::scroll-event * * Signal emitted when the mouse wheel or other mechanism requests scrolling. */ signals[SCROLL_EVENT] = g_signal_new ("scroll-event", HIPPO_TYPE_CANVAS_ITEM, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(HippoCanvasItemIface, scroll_event), g_signal_accumulator_true_handled, NULL, hippo_canvas_marshal_BOOLEAN__BOXED, G_TYPE_BOOLEAN, 1, HIPPO_TYPE_EVENT); /** * HippoCanvasItem::key-press-event * * Signal emitted when a key is pressed while the canvas item is focused. */ signals[KEY_PRESS_EVENT] = g_signal_new ("key-press-event", HIPPO_TYPE_CANVAS_ITEM, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(HippoCanvasItemIface, key_press_event), g_signal_accumulator_true_handled, NULL, hippo_canvas_marshal_BOOLEAN__BOXED, G_TYPE_BOOLEAN, 1, HIPPO_TYPE_EVENT); /** * HippoCanvasItem::activated * * Signal emitted when the canvas item is "activated" (e.g. if a button is clicked or * an url is clicked). */ signals[ACTIVATED] = g_signal_new ("activated", HIPPO_TYPE_CANVAS_ITEM, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(HippoCanvasItemIface, activated), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * HippoCanvasItem::tooltip-changed * * Signal emitted when the canvas item's tooltip changes. The code displaying the * tooltip may need this signal in order to update in response to changes. */ signals[TOOLTIP_CHANGED] = g_signal_new ("tooltip-changed", HIPPO_TYPE_CANVAS_ITEM, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(HippoCanvasItemIface, tooltip_changed), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); /**** properties *****/ /** * HippoCanvasItem:id * * The ID of the element; this is used when matching a CSS rule selector against * the element tree. */ g_object_interface_install_property(g_iface, g_param_spec_string("id", _("ID"), _("ID of the item used for CSS rule matching"), NULL, G_PARAM_READABLE | G_PARAM_WRITABLE)); /** * HippoCanvasItem:classes * * Class names for the element; this is used when matching a CSS rule selector against * the element tree. Multiple classes can be specified, specified by spaces. (This property * is called 'classes' and not 'class' to avoid problems with language bindings.) */ g_object_interface_install_property(g_iface, g_param_spec_string("classes", _("Classes"), _("Class names for the item used for CSS rule matching"), NULL, G_PARAM_READABLE | G_PARAM_WRITABLE)); } /** * hippo_canvas_item_destroy: * @HippoCanvasItem: the canvas item * * Explicitly requests that the item be destroyed. This will cause item to * drop all references it holds to other objects, and also result in the * ::destroy signal being emitted. In response to the ::destroy signal, any * other objects that are holding on to references to the item should drop * the references they hold. In particular, the item will be removed from * its parent container. * * Note that this function doesn't directly cause the memory for the object * to be freed; the object will be freed only if the above actions cause all * references to it to be dropped. **/ void hippo_canvas_item_destroy(HippoCanvasItem *canvas_item) { g_return_if_fail(HIPPO_IS_CANVAS_ITEM(canvas_item)); g_object_run_dispose(G_OBJECT(canvas_item)); } HippoCanvasContext * hippo_canvas_item_get_context(HippoCanvasItem *canvas_item) { g_return_val_if_fail(HIPPO_IS_CANVAS_ITEM(canvas_item), NULL); return HIPPO_CANVAS_ITEM_GET_IFACE(canvas_item)->get_context(canvas_item); } /** * hippo_canvas_item_set_context: * @context: (allow-none): */ void hippo_canvas_item_set_context(HippoCanvasItem *canvas_item, HippoCanvasContext *context) { g_return_if_fail(HIPPO_IS_CANVAS_ITEM(canvas_item)); HIPPO_CANVAS_ITEM_GET_IFACE(canvas_item)->set_context(canvas_item, context); } void hippo_canvas_item_set_parent(HippoCanvasItem *canvas_item, HippoCanvasContainer *container) { g_return_if_fail(HIPPO_IS_CANVAS_ITEM(canvas_item)); HIPPO_CANVAS_ITEM_GET_IFACE(canvas_item)->set_parent(canvas_item, container); } HippoCanvasContainer* hippo_canvas_item_get_parent(HippoCanvasItem *canvas_item) { g_return_val_if_fail(HIPPO_IS_CANVAS_ITEM(canvas_item), NULL); return HIPPO_CANVAS_ITEM_GET_IFACE(canvas_item)->get_parent(canvas_item); } /* The natural width should be thought of as the width at which * alignment (HIPPO_ALIGNMENT_START etc.) makes no difference but at * which nothing will be chopped off or wrapped. There is no real * guarantee a container won't give an item more than the natural, * this is just a hint for containers that can do something useful * with it, like giving extra space to some other child that can use it. */ void hippo_canvas_item_get_width_request(HippoCanvasItem *canvas_item, int *min_width_p, int *natural_width_p) { g_return_if_fail(HIPPO_IS_CANVAS_ITEM(canvas_item)); HIPPO_CANVAS_ITEM_GET_IFACE(canvas_item)->get_width_request(canvas_item, min_width_p, natural_width_p); } void hippo_canvas_item_get_height_request(HippoCanvasItem *canvas_item, int for_width, int *min_height_p, int *natural_height_p) { g_return_if_fail(HIPPO_IS_CANVAS_ITEM(canvas_item)); HIPPO_CANVAS_ITEM_GET_IFACE(canvas_item)->get_height_request(canvas_item, for_width, min_height_p, natural_height_p); } void hippo_canvas_item_allocate(HippoCanvasItem *canvas_item, int width, int height, gboolean origin_changed) { g_return_if_fail(HIPPO_IS_CANVAS_ITEM(canvas_item)); HIPPO_CANVAS_ITEM_GET_IFACE(canvas_item)->allocate(canvas_item, width, height, origin_changed); } void hippo_canvas_item_get_allocation(HippoCanvasItem *canvas_item, int *width_p, int *height_p) { g_return_if_fail(HIPPO_IS_CANVAS_ITEM(canvas_item)); HIPPO_CANVAS_ITEM_GET_IFACE(canvas_item)->get_allocation(canvas_item, width_p, height_p); } gboolean hippo_canvas_item_get_needs_request(HippoCanvasItem *canvas_item) { g_return_val_if_fail(HIPPO_IS_CANVAS_ITEM(canvas_item), FALSE); return HIPPO_CANVAS_ITEM_GET_IFACE(canvas_item)->get_needs_request(canvas_item); } char* hippo_canvas_item_get_tooltip(HippoCanvasItem *canvas_item, int x, int y, HippoRectangle *for_area) { char *tip; g_return_val_if_fail(HIPPO_IS_CANVAS_ITEM(canvas_item), NULL); tip = HIPPO_CANVAS_ITEM_GET_IFACE(canvas_item)->get_tooltip(canvas_item, x, y, for_area); /* Supporting "" as a synonym for NULL is a convenience for pygtk, which * doesn't have support for NULL-returns from interface methods * at the moment. */ if (tip != NULL && strcmp(tip, "") == 0) { g_free(tip); tip = NULL; } return tip; } HippoCanvasPointer hippo_canvas_item_get_pointer(HippoCanvasItem *canvas_item, int x, int y) { g_return_val_if_fail(HIPPO_IS_CANVAS_ITEM(canvas_item), FALSE); return HIPPO_CANVAS_ITEM_GET_IFACE(canvas_item)->get_pointer(canvas_item, x, y); } gboolean hippo_canvas_item_get_visible(HippoCanvasItem *canvas_item) { HippoCanvasContainer *parent; g_return_val_if_fail(HIPPO_IS_CANVAS_ITEM(canvas_item), FALSE); parent = hippo_canvas_item_get_parent(canvas_item); if (parent == NULL) { g_warning("Visibility is a property of the container+item pair, not just the item; so you can't get visibility on an item that isn't in a container"); return FALSE; } return hippo_canvas_container_get_child_visible(parent, canvas_item); } void hippo_canvas_item_set_visible(HippoCanvasItem *canvas_item, gboolean visible) { HippoCanvasContainer *parent; g_return_if_fail(HIPPO_IS_CANVAS_ITEM(canvas_item)); parent = hippo_canvas_item_get_parent(canvas_item); if (parent == NULL) { g_warning("Visibility is a property of the container+item pair, not just the item; so you can't set visibility on an item that isn't in a container"); return; } hippo_canvas_container_set_child_visible(parent, canvas_item, visible != FALSE); } /** * hippo_canvas_item_emit_destroy * @canvas_item: the canvas item * * Emit the ::destroy signal on canvas_item. Note that this doesn't actually destroy * the item (see hippo_canvas_item()) for that. This function should be called at * the end of your implementation of dispose() before chaining up if you are implementing * HippoCanvasItem directly. If you derive from an implementation of HippoCanvasItem * like HippoCanvasBox, you need not and should not call this function. **/ void hippo_canvas_item_emit_destroy (HippoCanvasItem *canvas_item) { g_return_if_fail(HIPPO_IS_CANVAS_ITEM(canvas_item)); g_signal_emit(canvas_item, signals[DESTROY], 0); } gboolean hippo_canvas_item_emit_button_press_event (HippoCanvasItem *canvas_item, int x, int y, int button, int x11_x_root, int x11_y_root, guint32 x11_time, int count) { HippoEvent event; g_return_val_if_fail(HIPPO_IS_CANVAS_ITEM(canvas_item), FALSE); event.type = HIPPO_EVENT_BUTTON_PRESS; event.x = x; event.y = y; event.u.button.button = button; event.u.button.count = count; event.u.button.x11_x_root = x11_x_root; event.u.button.x11_y_root = x11_y_root; event.u.button.x11_time = x11_time; return hippo_canvas_item_process_event(canvas_item, &event, 0, 0); } gboolean hippo_canvas_item_emit_button_release_event(HippoCanvasItem *canvas_item, int x, int y, int button, int x11_x_root, int x11_y_root, guint32 x11_time) { HippoEvent event; g_return_val_if_fail(HIPPO_IS_CANVAS_ITEM(canvas_item), FALSE); event.type = HIPPO_EVENT_BUTTON_RELEASE; event.x = x; event.y = y; event.u.button.button = button; event.u.button.x11_x_root = x11_x_root; event.u.button.x11_y_root = x11_y_root; event.u.button.x11_time = x11_time; return hippo_canvas_item_process_event(canvas_item, &event, 0, 0); } gboolean hippo_canvas_item_emit_motion_notify_event (HippoCanvasItem *canvas_item, int x, int y, HippoMotionDetail detail) { HippoEvent event; gboolean result; g_return_val_if_fail(HIPPO_IS_CANVAS_ITEM(canvas_item), FALSE); event.type = HIPPO_EVENT_MOTION_NOTIFY; event.x = x; event.y = y; event.u.motion.detail = detail; result = hippo_canvas_item_process_event(canvas_item, &event, 0, 0); return result; } gboolean hippo_canvas_item_emit_scroll_event (HippoCanvasItem *canvas_item, int x, int y, HippoScrollDirection direction) { HippoEvent event; gboolean result; g_return_val_if_fail(HIPPO_IS_CANVAS_ITEM(canvas_item), FALSE); event.type = HIPPO_EVENT_SCROLL; event.x = x; event.y = y; event.u.scroll.direction = direction; result = hippo_canvas_item_process_event(canvas_item, &event, 0, 0); return result; } gboolean hippo_canvas_item_emit_key_press_event (HippoCanvasItem *canvas_item, HippoKey key, gunichar character, guint modifiers) { HippoEvent event; gboolean result; g_return_val_if_fail(HIPPO_IS_CANVAS_ITEM(canvas_item), FALSE); event.type = HIPPO_EVENT_KEY_PRESS; event.x = 0; event.y = 0; event.u.key.key = key; event.u.key.character = character; event.u.key.modifiers = modifiers; result = hippo_canvas_item_process_event(canvas_item, &event, 0, 0); return result; } void hippo_canvas_item_emit_activated(HippoCanvasItem *canvas_item) { g_signal_emit(canvas_item, signals[ACTIVATED], 0); } void hippo_canvas_item_emit_tooltip_changed(HippoCanvasItem *canvas_item) { g_signal_emit(canvas_item, signals[TOOLTIP_CHANGED], 0); } void hippo_canvas_item_emit_paint_needed(HippoCanvasItem *canvas_item, int x, int y, int width, int height) { HippoRectangle damage_box; damage_box.x = x; damage_box.y = y; damage_box.width = width; damage_box.height = height; if (width < 0 || height < 0) { int w, h; hippo_canvas_item_get_allocation(canvas_item, &w, &h); if (width < 0) damage_box.width = w; if (height < 0) damage_box.height = h; } /* Skip chaining signal emission up the tree if nothing to invalidate */ if (damage_box.width <= 0 || damage_box.height <= 0) return; g_signal_emit(canvas_item, signals[PAINT_NEEDED], 0, &damage_box); } void hippo_canvas_item_emit_request_changed(HippoCanvasItem *canvas_item) { if (!hippo_canvas_item_get_needs_request(canvas_item)) { #if 0 g_debug("Item %s %p now needs resize, emitting request-changed", g_type_name_from_instance((GTypeInstance*) canvas_item), canvas_item); #endif g_signal_emit(canvas_item, signals[REQUEST_CHANGED], 0); if (!hippo_canvas_item_get_needs_request(canvas_item)) g_warning("Item %s %p does not need resize after emitting request-changed", g_type_name_from_instance((GTypeInstance*) canvas_item), canvas_item); } else { #if 0 g_debug("Item %s %p already needs resize, not emitting request-changed", g_type_name_from_instance((GTypeInstance*) canvas_item), canvas_item); #endif } } gboolean hippo_canvas_item_process_event(HippoCanvasItem *canvas_item, HippoEvent *event, int allocation_x, int allocation_y) { gboolean handled; HippoEvent translated; translated = *event; translated.x -= allocation_x; translated.y -= allocation_y; handled = FALSE; switch (event->type) { case HIPPO_EVENT_BUTTON_PRESS: g_signal_emit(canvas_item, signals[BUTTON_PRESS_EVENT], 0, &translated, &handled); break; case HIPPO_EVENT_BUTTON_RELEASE: g_signal_emit(canvas_item, signals[BUTTON_RELEASE_EVENT], 0, &translated, &handled); break; case HIPPO_EVENT_MOTION_NOTIFY: g_signal_emit(canvas_item, signals[MOTION_NOTIFY_EVENT], 0, &translated, &handled); break; case HIPPO_EVENT_KEY_PRESS: g_signal_emit(canvas_item, signals[KEY_PRESS_EVENT], 0, &translated, &handled); break; case HIPPO_EVENT_SCROLL: g_signal_emit(canvas_item, signals[SCROLL_EVENT], 0, &translated, &handled); break; /* don't add a default, you'll break the compiler warnings */ } return handled; } // the cairo_t and damaged_region are in the coordinate system in which canvas_item // is at (allocation_x, allocation_y), so they are both translated before // passing them to the child void hippo_canvas_item_process_paint(HippoCanvasItem *canvas_item, cairo_t *cr, GdkRegion *damaged_region, int allocation_x, int allocation_y) { GdkRectangle item_box; /* HippoCanvasItem::paint() is guaranteed to not be called if an item has any 0 allocation, * that invariant should be maintained here. */ item_box.x = allocation_x; item_box.y = allocation_y; hippo_canvas_item_get_allocation(canvas_item, &item_box.width, &item_box.height); if (gdk_region_rect_in(damaged_region, &item_box) != GDK_OVERLAP_RECTANGLE_OUT) { GdkRegion *translated_region; translated_region = gdk_region_rectangle(&item_box); gdk_region_intersect(translated_region, damaged_region); gdk_region_offset(translated_region, -allocation_x, -allocation_y); cairo_save(cr); cairo_translate(cr, allocation_x, allocation_y); #if 0 hippo_cairo_set_source_rgba32(cr, 0x0000aa27); cairo_rectangle(cr, 0, 0, item_box.width, item_box.height); cairo_fill(cr); #endif g_signal_emit(canvas_item, signals[PAINT], 0, cr, translated_region); gdk_region_destroy(translated_region); cairo_restore(cr); } } hippo-canvas-0.3.1/common/hippo/hippo-event.c0000664000076400007640000000130311366237063016053 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include GType hippo_event_get_type (void) { static GType type = 0; if (G_UNLIKELY(type == 0)) { type = g_boxed_type_register_static("HippoEvent", (GBoxedCopyFunc)hippo_event_copy, (GBoxedFreeFunc)hippo_event_free); } return type; } HippoEvent * hippo_event_copy(HippoEvent *event) { g_return_val_if_fail(event != NULL, NULL); return (HippoEvent *)g_memdup(event, sizeof(HippoEvent)); } void hippo_event_free(HippoRectangle *event) { g_return_if_fail(event != NULL); g_free(event); } hippo-canvas-0.3.1/common/hippo/hippo-canvas-type-builtins.c0000664000076400007640000002325211404421423021006 00000000000000 /* Generated data (by glib-mkenums) */ #include "hippo-canvas-type-builtins.h" /* enumerations from "hippo/hippo-canvas-box.h" */ #include "hippo/hippo-canvas-box.h" const GFlagsValue _hippo_pack_flags_values[] = { { HIPPO_PACK_EXPAND, "HIPPO_PACK_EXPAND", "expand" }, { HIPPO_PACK_END, "HIPPO_PACK_END", "end" }, { HIPPO_PACK_FIXED, "HIPPO_PACK_FIXED", "fixed" }, { HIPPO_PACK_IF_FITS, "HIPPO_PACK_IF_FITS", "if-fits" }, { HIPPO_PACK_FLOAT_LEFT, "HIPPO_PACK_FLOAT_LEFT", "float-left" }, { HIPPO_PACK_FLOAT_RIGHT, "HIPPO_PACK_FLOAT_RIGHT", "float-right" }, { HIPPO_PACK_CLEAR_LEFT, "HIPPO_PACK_CLEAR_LEFT", "clear-left" }, { HIPPO_PACK_CLEAR_RIGHT, "HIPPO_PACK_CLEAR_RIGHT", "clear-right" }, { HIPPO_PACK_CLEAR_BOTH, "HIPPO_PACK_CLEAR_BOTH", "clear-both" }, { 0, NULL, NULL } }; GType hippo_pack_flags_get_type (void) { static GType type = 0; if (G_UNLIKELY (type == 0)) type = g_flags_register_static ("HippoPackFlags", _hippo_pack_flags_values); return type; } /* enumerations from "hippo/hippo-canvas-context.h" */ #include "hippo/hippo-canvas-context.h" const GEnumValue _hippo_stock_color_values[] = { { HIPPO_STOCK_COLOR_BG_NORMAL, "HIPPO_STOCK_COLOR_BG_NORMAL", "bg-normal" }, { HIPPO_STOCK_COLOR_BG_PRELIGHT, "HIPPO_STOCK_COLOR_BG_PRELIGHT", "bg-prelight" }, { HIPPO_STOCK_COLOR_FG, "HIPPO_STOCK_COLOR_FG", "fg" }, { 0, NULL, NULL } }; GType hippo_stock_color_get_type (void) { static GType type = 0; if (G_UNLIKELY (type == 0)) type = g_enum_register_static ("HippoStockColor", _hippo_stock_color_values); return type; } /* enumerations from "hippo/hippo-canvas-item.h" */ #include "hippo/hippo-canvas-item.h" const GEnumValue _hippo_canvas_pointer_values[] = { { HIPPO_CANVAS_POINTER_UNSET, "HIPPO_CANVAS_POINTER_UNSET", "unset" }, { HIPPO_CANVAS_POINTER_DEFAULT, "HIPPO_CANVAS_POINTER_DEFAULT", "default" }, { HIPPO_CANVAS_POINTER_HAND, "HIPPO_CANVAS_POINTER_HAND", "hand" }, { 0, NULL, NULL } }; GType hippo_canvas_pointer_get_type (void) { static GType type = 0; if (G_UNLIKELY (type == 0)) type = g_enum_register_static ("HippoCanvasPointer", _hippo_canvas_pointer_values); return type; } const GEnumValue _hippo_item_alignment_values[] = { { HIPPO_ALIGNMENT_FILL, "HIPPO_ALIGNMENT_FILL", "fill" }, { HIPPO_ALIGNMENT_START, "HIPPO_ALIGNMENT_START", "start" }, { HIPPO_ALIGNMENT_CENTER, "HIPPO_ALIGNMENT_CENTER", "center" }, { HIPPO_ALIGNMENT_END, "HIPPO_ALIGNMENT_END", "end" }, { 0, NULL, NULL } }; GType hippo_item_alignment_get_type (void) { static GType type = 0; if (G_UNLIKELY (type == 0)) type = g_enum_register_static ("HippoItemAlignment", _hippo_item_alignment_values); return type; } /* enumerations from "hippo/hippo-canvas-style.h" */ #include "hippo/hippo-canvas-style.h" const GEnumValue _hippo_canvas_link_type_values[] = { { HIPPO_CANVAS_LINK_NONE, "HIPPO_CANVAS_LINK_NONE", "none" }, { HIPPO_CANVAS_LINK_LINK, "HIPPO_CANVAS_LINK_LINK", "link" }, { HIPPO_CANVAS_LINK_VISITED, "HIPPO_CANVAS_LINK_VISITED", "visited" }, { 0, NULL, NULL } }; GType hippo_canvas_link_type_get_type (void) { static GType type = 0; if (G_UNLIKELY (type == 0)) type = g_enum_register_static ("HippoCanvasLinkType", _hippo_canvas_link_type_values); return type; } const GEnumValue _hippo_canvas_side_values[] = { { HIPPO_CANVAS_SIDE_LEFT, "HIPPO_CANVAS_SIDE_LEFT", "left" }, { HIPPO_CANVAS_SIDE_RIGHT, "HIPPO_CANVAS_SIDE_RIGHT", "right" }, { HIPPO_CANVAS_SIDE_TOP, "HIPPO_CANVAS_SIDE_TOP", "top" }, { HIPPO_CANVAS_SIDE_BOTTOM, "HIPPO_CANVAS_SIDE_BOTTOM", "bottom" }, { 0, NULL, NULL } }; GType hippo_canvas_side_get_type (void) { static GType type = 0; if (G_UNLIKELY (type == 0)) type = g_enum_register_static ("HippoCanvasSide", _hippo_canvas_side_values); return type; } const GFlagsValue _hippo_text_decoration_values[] = { { HIPPO_TEXT_DECORATION_UNDERLINE, "HIPPO_TEXT_DECORATION_UNDERLINE", "underline" }, { HIPPO_TEXT_DECORATION_OVERLINE, "HIPPO_TEXT_DECORATION_OVERLINE", "overline" }, { HIPPO_TEXT_DECORATION_LINE_THROUGH, "HIPPO_TEXT_DECORATION_LINE_THROUGH", "line-through" }, { HIPPO_TEXT_DECORATION_BLINK, "HIPPO_TEXT_DECORATION_BLINK", "blink" }, { 0, NULL, NULL } }; GType hippo_text_decoration_get_type (void) { static GType type = 0; if (G_UNLIKELY (type == 0)) type = g_flags_register_static ("HippoTextDecoration", _hippo_text_decoration_values); return type; } /* enumerations from "hippo/hippo-canvas-text.h" */ #include "hippo/hippo-canvas-text.h" const GEnumValue _hippo_canvas_size_mode_values[] = { { HIPPO_CANVAS_SIZE_FULL_WIDTH, "HIPPO_CANVAS_SIZE_FULL_WIDTH", "full-width" }, { HIPPO_CANVAS_SIZE_WRAP_WORD, "HIPPO_CANVAS_SIZE_WRAP_WORD", "wrap-word" }, { HIPPO_CANVAS_SIZE_ELLIPSIZE_END, "HIPPO_CANVAS_SIZE_ELLIPSIZE_END", "ellipsize-end" }, { 0, NULL, NULL } }; GType hippo_canvas_size_mode_get_type (void) { static GType type = 0; if (G_UNLIKELY (type == 0)) type = g_enum_register_static ("HippoCanvasSizeMode", _hippo_canvas_size_mode_values); return type; } /* enumerations from "hippo/hippo-canvas-widgets.h" */ #include "hippo/hippo-canvas-widgets.h" const GEnumValue _hippo_scrollbar_policy_values[] = { { HIPPO_SCROLLBAR_NEVER, "HIPPO_SCROLLBAR_NEVER", "never" }, { HIPPO_SCROLLBAR_AUTOMATIC, "HIPPO_SCROLLBAR_AUTOMATIC", "automatic" }, { HIPPO_SCROLLBAR_ALWAYS, "HIPPO_SCROLLBAR_ALWAYS", "always" }, { 0, NULL, NULL } }; GType hippo_scrollbar_policy_get_type (void) { static GType type = 0; if (G_UNLIKELY (type == 0)) type = g_enum_register_static ("HippoScrollbarPolicy", _hippo_scrollbar_policy_values); return type; } /* enumerations from "hippo/hippo-event.h" */ #include "hippo/hippo-event.h" const GEnumValue _hippo_event_type_values[] = { { HIPPO_EVENT_BUTTON_PRESS, "HIPPO_EVENT_BUTTON_PRESS", "button-press" }, { HIPPO_EVENT_BUTTON_RELEASE, "HIPPO_EVENT_BUTTON_RELEASE", "button-release" }, { HIPPO_EVENT_MOTION_NOTIFY, "HIPPO_EVENT_MOTION_NOTIFY", "motion-notify" }, { HIPPO_EVENT_KEY_PRESS, "HIPPO_EVENT_KEY_PRESS", "key-press" }, { HIPPO_EVENT_SCROLL, "HIPPO_EVENT_SCROLL", "scroll" }, { 0, NULL, NULL } }; GType hippo_event_type_get_type (void) { static GType type = 0; if (G_UNLIKELY (type == 0)) type = g_enum_register_static ("HippoEventType", _hippo_event_type_values); return type; } const GEnumValue _hippo_motion_detail_values[] = { { HIPPO_MOTION_DETAIL_ENTER, "HIPPO_MOTION_DETAIL_ENTER", "enter" }, { HIPPO_MOTION_DETAIL_LEAVE, "HIPPO_MOTION_DETAIL_LEAVE", "leave" }, { HIPPO_MOTION_DETAIL_WITHIN, "HIPPO_MOTION_DETAIL_WITHIN", "within" }, { 0, NULL, NULL } }; GType hippo_motion_detail_get_type (void) { static GType type = 0; if (G_UNLIKELY (type == 0)) type = g_enum_register_static ("HippoMotionDetail", _hippo_motion_detail_values); return type; } const GEnumValue _hippo_scroll_direction_values[] = { { HIPPO_SCROLL_UP, "HIPPO_SCROLL_UP", "up" }, { HIPPO_SCROLL_DOWN, "HIPPO_SCROLL_DOWN", "down" }, { HIPPO_SCROLL_LEFT, "HIPPO_SCROLL_LEFT", "left" }, { HIPPO_SCROLL_RIGHT, "HIPPO_SCROLL_RIGHT", "right" }, { 0, NULL, NULL } }; GType hippo_scroll_direction_get_type (void) { static GType type = 0; if (G_UNLIKELY (type == 0)) type = g_enum_register_static ("HippoScrollDirection", _hippo_scroll_direction_values); return type; } const GEnumValue _hippo_key_values[] = { { HIPPO_KEY_UNKNOWN, "HIPPO_KEY_UNKNOWN", "unknown" }, { HIPPO_KEY_RETURN, "HIPPO_KEY_RETURN", "return" }, { HIPPO_KEY_ESCAPE, "HIPPO_KEY_ESCAPE", "escape" }, { HIPPO_KEY_TAB, "HIPPO_KEY_TAB", "tab" }, { HIPPO_KEY_LEFTTAB, "HIPPO_KEY_LEFTTAB", "lefttab" }, { 0, NULL, NULL } }; GType hippo_key_get_type (void) { static GType type = 0; if (G_UNLIKELY (type == 0)) type = g_enum_register_static ("HippoKey", _hippo_key_values); return type; } const GFlagsValue _hippo_modifier_values[] = { { HIPPO_MODIFIER_SHIFT, "HIPPO_MODIFIER_SHIFT", "shift" }, { HIPPO_MODIFIER_CTRL, "HIPPO_MODIFIER_CTRL", "ctrl" }, { HIPPO_MODIFIER_ALT, "HIPPO_MODIFIER_ALT", "alt" }, { 0, NULL, NULL } }; GType hippo_modifier_get_type (void) { static GType type = 0; if (G_UNLIKELY (type == 0)) type = g_flags_register_static ("HippoModifier", _hippo_modifier_values); return type; } /* enumerations from "hippo/hippo-graphics.h" */ #include "hippo/hippo-graphics.h" const GEnumValue _hippo_orientation_values[] = { { HIPPO_ORIENTATION_VERTICAL, "HIPPO_ORIENTATION_VERTICAL", "vertical" }, { HIPPO_ORIENTATION_HORIZONTAL, "HIPPO_ORIENTATION_HORIZONTAL", "horizontal" }, { 0, NULL, NULL } }; GType hippo_orientation_get_type (void) { static GType type = 0; if (G_UNLIKELY (type == 0)) type = g_enum_register_static ("HippoOrientation", _hippo_orientation_values); return type; } const GEnumValue _hippo_side_values[] = { { HIPPO_SIDE_TOP, "HIPPO_SIDE_TOP", "top" }, { HIPPO_SIDE_BOTTOM, "HIPPO_SIDE_BOTTOM", "bottom" }, { HIPPO_SIDE_LEFT, "HIPPO_SIDE_LEFT", "left" }, { HIPPO_SIDE_RIGHT, "HIPPO_SIDE_RIGHT", "right" }, { 0, NULL, NULL } }; GType hippo_side_get_type (void) { static GType type = 0; if (G_UNLIKELY (type == 0)) type = g_enum_register_static ("HippoSide", _hippo_side_values); return type; } const GEnumValue _hippo_gravity_values[] = { { HIPPO_GRAVITY_NORTH_WEST, "HIPPO_GRAVITY_NORTH_WEST", "north-west" }, { HIPPO_GRAVITY_NORTH_EAST, "HIPPO_GRAVITY_NORTH_EAST", "north-east" }, { HIPPO_GRAVITY_SOUTH_EAST, "HIPPO_GRAVITY_SOUTH_EAST", "south-east" }, { HIPPO_GRAVITY_SOUTH_WEST, "HIPPO_GRAVITY_SOUTH_WEST", "south-west" }, { 0, NULL, NULL } }; GType hippo_gravity_get_type (void) { static GType type = 0; if (G_UNLIKELY (type == 0)) type = g_enum_register_static ("HippoGravity", _hippo_gravity_values); return type; } /* Generated data ends here */ hippo-canvas-0.3.1/common/hippo/hippo-canvas-theme-engine.h0000664000076400007640000000451211366237063020562 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_CANVAS_THEME_ENGINE_H__ #define __HIPPO_CANVAS_THEME_ENGINE_H__ #include #include #include #include G_BEGIN_DECLS typedef struct _HippoCanvasThemeEngine HippoCanvasThemeEngine; typedef struct _HippoCanvasThemeEngineIface HippoCanvasThemeEngineIface; #define HIPPO_TYPE_CANVAS_THEME_ENGINE (hippo_canvas_theme_engine_get_type ()) #define HIPPO_CANVAS_THEME_ENGINE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_CANVAS_THEME_ENGINE, HippoCanvasThemeEngine)) #define HIPPO_IS_CANVAS_THEME_ENGINE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_CANVAS_THEME_ENGINE)) #define HIPPO_CANVAS_THEME_ENGINE_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), HIPPO_TYPE_CANVAS_THEME_ENGINE, HippoCanvasThemeEngineIface)) struct _HippoCanvasThemeEngineIface { GTypeInterface base_iface; gboolean (* paint) (HippoCanvasThemeEngine *engine, HippoCanvasStyle *style, cairo_t *cr, const char *name, double x, double y, double width, double height); }; GType hippo_canvas_theme_engine_get_type (void) G_GNUC_CONST; gboolean hippo_canvas_theme_engine_paint (HippoCanvasThemeEngine *engine, HippoCanvasStyle *style, cairo_t *cr, const char *name, double x, double y, double width, double height); G_END_DECLS #endif /* __HIPPO_CANVAS_THEME_ENGINE_H__ */ hippo-canvas-0.3.1/common/hippo/hippo-canvas-context.h0000664000076400007640000001537611366237063017713 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_CANVAS_CONTEXT_H__ #define __HIPPO_CANVAS_CONTEXT_H__ /* * Setting a context is sort of like the GTK concept of "realization" * - it does not necessarily map to the item being in a container, and * in fact the root item has a context but would not have a parent * container, for example. Also an item can be in a container item and not * have a context if the container item does not have a context, for * example if the whole tree of items is not in a HippoCanvas widget. * * If for example we were printing a tree of canvas items, we * might have to temporarily set the context to a special print * context (though this has problems, such as temporarily unrealizing * any widget items; so print support may require larger changes than * just creating a print context). * */ #include #include #include #include G_BEGIN_DECLS typedef struct _HippoCanvasItem HippoCanvasItem; typedef struct _HippoCanvasItemIface HippoCanvasItemIface; typedef struct _HippoCanvasContainer HippoCanvasContainer; typedef struct _HippoCanvasContainerIface HippoCanvasContainerIface; typedef enum { HIPPO_STOCK_COLOR_BG_NORMAL, HIPPO_STOCK_COLOR_BG_PRELIGHT, HIPPO_STOCK_COLOR_FG } HippoStockColor; typedef struct _HippoCanvasStyle HippoCanvasStyle; typedef struct _HippoCanvasStyleClass HippoCanvasStyleClass; typedef struct _HippoCanvasTheme HippoCanvasTheme; typedef struct _HippoCanvasThemeClass HippoCanvasThemeClass; typedef struct _HippoCanvasContext HippoCanvasContext; typedef struct _HippoCanvasContextIface HippoCanvasContextIface; #define HIPPO_TYPE_CANVAS_CONTEXT (hippo_canvas_context_get_type ()) #define HIPPO_CANVAS_CONTEXT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_CANVAS_CONTEXT, HippoCanvasContext)) #define HIPPO_IS_CANVAS_CONTEXT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_CANVAS_CONTEXT)) #define HIPPO_CANVAS_CONTEXT_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), HIPPO_TYPE_CANVAS_CONTEXT, HippoCanvasContextIface)) struct _HippoCanvasContextIface { GTypeInterface base_iface; PangoLayout* (* create_layout) (HippoCanvasContext *context); cairo_surface_t* (* create_surface) (HippoCanvasContext *context, cairo_content_t content, int width, int height); cairo_surface_t* (* load_image) (HippoCanvasContext *context, const char *image_name); guint32 (* get_color) (HippoCanvasContext *context, HippoStockColor color); void (* register_widget_item) (HippoCanvasContext *context, HippoCanvasItem *item); void (* unregister_widget_item) (HippoCanvasContext *context, HippoCanvasItem *item); void (* translate_to_widget) (HippoCanvasContext *context, HippoCanvasItem *item, int *x_p, int *y_p); void (* translate_to_screen) (HippoCanvasContext *context, HippoCanvasItem *item, int *x_p, int *y_p); HippoCanvasStyle *(* get_style) (HippoCanvasContext *context); double (* get_resolution) (HippoCanvasContext *context); PangoFontDescription *(* get_font) (HippoCanvasContext *context); HippoAnimationManager *( *get_animation_manager) (HippoCanvasContext *context); /* Signals */ /* Inherited style properties (see affect_* methods) have changed. * resize_needed means the change needs a resize not just repaint. */ void (* style_changed) (HippoCanvasContext *context, gboolean resize_needed); }; GType hippo_canvas_context_get_type (void) G_GNUC_CONST; PangoLayout* hippo_canvas_context_create_layout (HippoCanvasContext *context); cairo_surface_t* hippo_canvas_context_create_surface (HippoCanvasContext *context, cairo_content_t content, int width, int height); cairo_surface_t* hippo_canvas_context_load_image (HippoCanvasContext *context, const char *image_name); guint32 hippo_canvas_context_get_color (HippoCanvasContext *context, HippoStockColor color); void hippo_canvas_context_register_widget_item (HippoCanvasContext *context, HippoCanvasItem *item); void hippo_canvas_context_unregister_widget_item (HippoCanvasContext *context, HippoCanvasItem *item); void hippo_canvas_context_translate_to_widget (HippoCanvasContext *context, HippoCanvasItem *item, int *x_p, int *y_p); void hippo_canvas_context_translate_to_screen (HippoCanvasContext *context, HippoCanvasItem *item, int *x_p, int *y_p); HippoCanvasStyle *hippo_canvas_context_get_style (HippoCanvasContext *context); double hippo_canvas_context_get_resolution (HippoCanvasContext *context); PangoFontDescription *hippo_canvas_context_get_font (HippoCanvasContext *context); HippoAnimationManager *hippo_canvas_context_get_animation_manager (HippoCanvasContext *context); void hippo_canvas_context_emit_style_changed(HippoCanvasContext *context, gboolean resize_needed); G_END_DECLS #endif /* __HIPPO_CANVAS_CONTEXT_H__ */ hippo-canvas-0.3.1/common/hippo/hippo-animation-manager.c0000664000076400007640000001647511366237063020341 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include "hippo-animation-manager.h" #include "hippo-canvas-marshal.h" #define EVENT(animation, id) ((AnimationEvent *)g_ptr_array_index((animation)->events, (id))) enum { AFTER_FRAME, LAST_SIGNAL }; static int signals[LAST_SIGNAL]; struct _HippoAnimationManager { GObject parent; GPtrArray *animations; GArray *animation_start; double last_frame_time; guint frame_serial; guint frame_timeout; guint frame_pending : 1; }; struct _HippoAnimationManagerClass { GObjectClass parent_clas; void (*after_frame) (HippoAnimationManager *animation, guint frame_serial); }; static void manager_remove_animation(HippoAnimationManager *manager, int index); G_DEFINE_TYPE(HippoAnimationManager, hippo_animation_manager, G_TYPE_OBJECT) #define ANIMATION(manager, i) ((HippoAnimation *)g_ptr_array_index((manager)->animations, (i))) #define ANIMATION_START(manager, i) (g_array_index((manager)->animation_start, double, (i))) static double current_time(void) { GTimeVal tv; g_get_current_time(&tv); return (double)tv.tv_sec + ((double)tv.tv_usec) / 1000000.; } static void hippo_animation_manager_finalize(GObject *object) { HippoAnimationManager *manager = HIPPO_ANIMATION_MANAGER(object); guint i; for (i = 0; i < manager->animations->len; i++) g_object_unref(ANIMATION(manager, i)); g_ptr_array_free(manager->animations, TRUE); g_array_free(manager->animation_start, TRUE); G_OBJECT_CLASS(hippo_animation_manager_parent_class)->finalize(object); } static void hippo_animation_manager_init(HippoAnimationManager *manager) { manager->animations = g_ptr_array_new(); manager->animation_start = g_array_new(FALSE, FALSE, sizeof(double)); } static void hippo_animation_manager_class_init(HippoAnimationManagerClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = hippo_animation_manager_finalize; /** * HippoAnimationManager::after-frame * * Signal emitted after advancing to a new frame of the animation */ signals[AFTER_FRAME] = g_signal_new ("after-frame", G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(HippoAnimationManagerClass, after_frame), NULL, NULL, hippo_canvas_marshal_VOID__UINT, G_TYPE_NONE, 1, G_TYPE_UINT); } static void animation_manager_do_frame(HippoAnimationManager *manager) { guint i; manager->last_frame_time = current_time(); manager->frame_pending = TRUE; for (i = 0; i < manager->animations->len; i++) { HippoAnimation *animation = ANIMATION(manager, i); hippo_animation_advance(animation, manager->last_frame_time - ANIMATION_START(manager, i)); } manager->frame_serial++; g_signal_emit(manager, signals[AFTER_FRAME], 0, manager->frame_serial); } static gboolean animation_manager_frame_timeout(gpointer data) { HippoAnimationManager *manager = data; manager->frame_timeout = 0; animation_manager_do_frame(manager); return FALSE; } static void animation_manager_update(HippoAnimationManager *manager) { double now; double min_next_time = -1.; guint i; if (manager->frame_pending) return; now = current_time(); i = 0; while (i < manager->animations->len) { HippoAnimation *animation = ANIMATION(manager, i); double start = ANIMATION_START(manager, i); double next_pos = hippo_animation_get_next_event_position(animation); if (next_pos < 0.) { manager_remove_animation(manager,i); } else { if (i == 0) min_next_time = start + next_pos; else min_next_time = MAX(min_next_time, start + next_pos); i++; } } if (i > 0) { /* At least one animation still activate */ double next_frame_time = manager->last_frame_time + 1/30.; double next_time = MAX(min_next_time, next_frame_time); if (manager->frame_timeout) { g_source_remove(manager->frame_timeout); manager->frame_timeout = 0; } /* g_print("%.5f\t%.5f\n", now - manager->last_frame_time, next_time - now); */ if (next_time <= now) { animation_manager_do_frame(manager); } else { manager->frame_timeout = g_timeout_add((int)(0.5 + 1000 * (next_time - now)), animation_manager_frame_timeout, manager); } } } static void on_animation_cancel(HippoAnimation *animation, HippoAnimationManager *manager) { guint i; for (i = 0; i < manager->animations->len; i++) { if (animation == ANIMATION(manager, i)) manager_remove_animation(manager, i); } } static void manager_remove_animation(HippoAnimationManager *manager, int index) { HippoAnimation *animation = ANIMATION(manager, index); g_ptr_array_remove_index(manager->animations, index); g_array_remove_index(manager->animation_start, index); g_signal_handlers_disconnect_by_func(animation, (gpointer)on_animation_cancel, manager); g_object_unref(animation); } HippoAnimationManager * hippo_animation_manager_new (void) { return g_object_new(HIPPO_TYPE_ANIMATION_MANAGER, NULL); } /** * hippo_animation_manager_add_animation: * @manager: the animation manager * @animation: the animation to add * @delay: time from the current time at which to start the animation, in seconds * * Add an animation to the animation manager. The animation starts at * 'delay' seconds fromthe current time. */ void hippo_animation_manager_add_animation (HippoAnimationManager *manager, HippoAnimation *animation, double delay) { double start_time; g_return_if_fail(HIPPO_IS_ANIMATION_MANAGER(manager)); start_time = current_time() + delay; g_object_ref(animation); g_ptr_array_add(manager->animations, animation); g_array_append_val(manager->animation_start, start_time); g_signal_connect(animation, "cancel", G_CALLBACK(on_animation_cancel), manager); animation_manager_update(manager); } /** * hippo_animation_manager_frame_complete: * @manager: the animation manager * @frame_serial: frame serial from the ::after-frame signal * * When the canvas container sees an ::after-frame signal from the animation * manager it should wait for all resizing and drawing in the canvas to be * complete (using whatever toolkit specific mechanisms are appropriate), and * then call this function. */ void hippo_animation_manager_frame_complete (HippoAnimationManager *manager, guint frame_serial) { g_return_if_fail(HIPPO_IS_ANIMATION_MANAGER(manager)); manager->frame_pending = FALSE; animation_manager_update(manager); } hippo-canvas-0.3.1/common/hippo/hippo-canvas-internal.h0000664000076400007640000000127111366237063020030 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_CANVAS_INTERNAL_H__ #define __HIPPO_CANVAS_INTERNAL_H__ #include G_BEGIN_DECLS /* we don't do i18n on Windows yet */ #ifndef G_OS_WIN32 #include #endif #ifdef GETTEXT_PACKAGE #include #else #define _(x) x #endif /* These don't really belong here, but whatever... */ #define HIPPO_ADD_WEAK(ptr) g_object_add_weak_pointer(G_OBJECT(*(ptr)), (void**) (char*) (ptr)) #define HIPPO_REMOVE_WEAK(ptr) do { if (*ptr) { g_object_remove_weak_pointer(G_OBJECT(*(ptr)), (void**) (char*) (ptr)); *ptr = NULL; } } while(0) G_END_DECLS #endif /* __HIPPO_CANVAS_INTERNAL_H__ */ hippo-canvas-0.3.1/python/0000775000076400007640000000000011404424207012435 500000000000000hippo-canvas-0.3.1/python/arg-types.py0000664000076400007640000000317711366237063014663 00000000000000from argtypes import ArgType, matcher import reversewrapper class CairoParam(reversewrapper.Parameter): def get_c_type(self): return self.props.get('c_type').replace('const-', 'const ') def convert_c2py(self): self.wrapper.add_declaration("PyObject *py_%s;" % self.name) self.wrapper.write_code( code=('py_%s = PycairoContext_FromContext(cairo_reference(%s), &PycairoContext_Type, NULL);' % (self.name, self.name)), cleanup=("Py_DECREF(py_%s);" % self.name), failure_expression=("!py_%s" % self.name)) self.wrapper.add_pyargv_item("py_%s" % self.name) matcher.register_reverse("cairo_t*", CairoParam) class CairoSurfaceArg(ArgType): before = (' %(name)s = &((PycairoSurface*)(py_%(name)s))->surface;\n') def write_param(self, ptype, pname, pdflt, pnull, info): info.varlist.add('PyObject', '*py_' + pname) info.varlist.add('cairo_surface_t', '*'+pname) info.add_parselist('O', ['&py_'+pname], [pname]) info.arglist.append(pname) info.codebefore.append (self.before % { 'name' : pname, 'namecopy' : 'NULL' }) def write_return(self, ptype, ownsreturn, info): info.varlist.add('cairo_surface_t', '*ret') info.codeafter.append(' if (ret)\n' ' return PycairoSurface_FromSurface(ret, NULL);\n' ' else {\n' ' Py_INCREF(Py_None);\n' ' return Py_None;\n' ' }'); matcher.register('cairo_surface_t*', CairoSurfaceArg()) hippo-canvas-0.3.1/python/hippomodule.c0000664000076400007640000000277611403414734015065 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifdef HAVE_CONFIG_H #include "config.h" #endif /* include this first, before NO_IMPORT_PYGOBJECT is defined */ #include #include Pycairo_CAPI_t *Pycairo_CAPI; #include #include #include #include void pyhippo_register_classes (PyObject *d); void pyhippo_add_constants(PyObject *module, const gchar *strip_prefix); extern PyMethodDef pyhippo_functions[]; static PyObject * _cairo_surface_from_gvalue(const GValue *value) { return PycairoSurface_FromSurface((cairo_surface_t *) g_value_get_boxed(value), NULL); } static int _cairo_surface_to_gvalue(GValue *value, PyObject *obj) { if (!(PyObject_TypeCheck(obj, &PycairoSurface_Type))) return -1; g_value_set_boxed(value, ((PycairoSurface*)(obj))->surface); return 0; } DL_EXPORT(void) inithippo(void) { PyObject *m, *d; init_pygobject (); Pycairo_IMPORT; m = Py_InitModule("hippo", pyhippo_functions); d = PyModule_GetDict(m); pyhippo_register_classes(d); pyhippo_add_constants(m, "HIPPO_"); PyModule_AddObject(m, "TYPE_CAIRO_SURFACE", pyg_type_wrapper_new(HIPPO_TYPE_CAIRO_SURFACE)); pyg_register_gtype_custom(HIPPO_TYPE_CAIRO_SURFACE, _cairo_surface_from_gvalue, _cairo_surface_to_gvalue); if (PyErr_Occurred ()) { Py_FatalError ("can't initialise module hippo"); } } hippo-canvas-0.3.1/python/hippo.override0000664000076400007640000010035411366237063015251 00000000000000/* -*- Mode: C; c-basic-offset: 4 -*- */ %% headers #include #include "pygobject.h" #include "canvas-box-child.h" #include "hippo/hippo-canvas-item.h" #include "hippo/hippo-canvas-container.h" #include "hippo/hippo-canvas-box.h" #include "hippo/hippo-canvas-image.h" #include "hippo/hippo-canvas-image-button.h" #include "hippo/hippo-canvas-text.h" #include "hippo/hippo-canvas-layout.h" #include "hippo/hippo-canvas-link.h" #include "hippo/hippo-canvas-gradient.h" #include "hippo/hippo-canvas.h" #include "hippo/hippo-canvas-test.h" #include "hippo/hippo-canvas-theme.h" #include "hippo/hippo-canvas-widget.h" #include "hippo/hippo-canvas-window.h" #include "hippo/hippo-canvas-widgets.h" #include "hippo/hippo-canvas-util.h" #include "hippo/hippo-canvas-type-builtins.h" #include "pycairo.h" #include extern Pycairo_CAPI_t *Pycairo_CAPI; static int marshal_compare_child_func(HippoCanvasItem *a, HippoCanvasItem *b, void *data) { PyObject *py_a, *py_b; PyObject *compare = (PyObject*) data; PyObject *retobj; PyGILState_STATE state; long retval = 0; state = pyg_gil_state_ensure(); py_a = pygobject_new(G_OBJECT(a)); if (py_a == NULL) { if (PyErr_Occurred()) PyErr_Print(); pyg_gil_state_release(state); return 0; } py_b = pygobject_new(G_OBJECT(b)); if (py_b == NULL) { if (PyErr_Occurred()) PyErr_Print(); Py_DECREF(py_a); pyg_gil_state_release(state); return 0; } retobj = PyEval_CallFunction(compare, "(OO)", py_a, py_b); Py_DECREF(py_a); Py_DECREF(py_b); if (retobj == NULL) { PyErr_Print(); } else { retval = PyInt_AsLong(retobj); if (retval == -1 && PyErr_Occurred()) PyErr_Print(); } Py_XDECREF(retobj); pyg_gil_state_release(state); return retval < 0 ? -1 : (retval == 0 ? 0 : 1); } %% modulename hippo %% import gobject.GObject as PyGObject_Type import gtk.Container as PyGtkContainer_Type import gtk.Window as PyGtkWindow_Type import gtk.gdk.Pixbuf as PyGdkPixbuf_Type %% ignore hippo_canvas_box_new hippo_canvas_gradient_new hippo_canvas_image_button_new hippo_canvas_image_new hippo_canvas_text_new hippo_canvas_link_new hippo_canvas_window_new hippo_canvas_widget_new hippo_canvas_entry_new hippo_canvas_button_new %% ignore-glob *_get_type _* %% override hippo_canvas_context_translate_to_widget kwargs static PyObject * _wrap_hippo_canvas_context_translate_to_widget(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "item", NULL }; PyGObject *item; int x_p = 0, y_p = 0; if (!PyArg_ParseTupleAndKeywords(args, kwargs,"O!:HippoCanvasContext.translate_to_widget", kwlist, &PyHippoCanvasItem_Type, &item)) return NULL; hippo_canvas_context_translate_to_widget(HIPPO_CANVAS_CONTEXT(self->obj), HIPPO_CANVAS_ITEM(item->obj), &x_p, &y_p); return Py_BuildValue("(ii)", x_p, y_p); } %% override hippo_canvas_context_translate_to_screen kwargs static PyObject * _wrap_hippo_canvas_context_translate_to_screen(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "item", NULL }; PyGObject *item; int x_p = 0, y_p = 0; if (!PyArg_ParseTupleAndKeywords(args, kwargs,"O!:HippoCanvasContext.translate_to_screen", kwlist, &PyHippoCanvasItem_Type, &item)) return NULL; hippo_canvas_context_translate_to_screen(HIPPO_CANVAS_CONTEXT(self->obj), HIPPO_CANVAS_ITEM(item->obj), &x_p, &y_p); return Py_BuildValue("(ii)", x_p, y_p); } %% override hippo_canvas_item_get_allocation noargs static PyObject * _wrap_hippo_canvas_item_get_allocation(PyGObject *self) { int x_p = 0; int y_p = 0; hippo_canvas_item_get_allocation(HIPPO_CANVAS_ITEM(self->obj), &x_p, &y_p); return Py_BuildValue("(ii)", x_p, y_p); } %% override hippo_canvas_item_get_height_request kwargs static PyObject * _wrap_hippo_canvas_item_get_height_request(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "for_width", NULL }; int min_height = 0; int natural_height = 0; int for_width; if (!PyArg_ParseTupleAndKeywords(args, kwargs,"i:HippoCanvasItem.get_height_request", kwlist, &for_width)) return NULL; hippo_canvas_item_get_height_request(HIPPO_CANVAS_ITEM(self->obj), for_width, &min_height, &natural_height); return Py_BuildValue("(ii)", min_height, natural_height); } %% override hippo_canvas_item_get_width_request noargs static PyObject * _wrap_hippo_canvas_item_get_width_request(PyGObject *self) { int min_width = 0; int natural_width = 0; hippo_canvas_item_get_width_request(HIPPO_CANVAS_ITEM(self->obj), &min_width, &natural_width); return Py_BuildValue("(ii)", min_width, natural_width); } %% override HippoCanvasItem__do_get_width_request kwargs static PyObject * _wrap_HippoCanvasItem__do_get_width_request(PyObject *cls, PyObject *args, PyObject *kwargs) { HippoCanvasItemIface *iface; static char *kwlist[] = { "self", NULL }; PyGObject *self; int min_width = 0; int natural_width = 0; if (!PyArg_ParseTupleAndKeywords(args, kwargs,"O!:HippoCanvasItem.get_width_request", kwlist, &PyHippoCanvasItem_Type, &self)) return NULL; iface = g_type_interface_peek(g_type_class_peek(pyg_type_from_object(cls)), HIPPO_TYPE_CANVAS_ITEM); if (iface->get_width_request) iface->get_width_request(HIPPO_CANVAS_ITEM(self->obj), &min_width, &natural_width); else { PyErr_SetString(PyExc_NotImplementedError, "interface method HippoCanvasItem.get_width_request not implemented"); return NULL; } return Py_BuildValue("(ii)", min_width, natural_width); } %% override HippoCanvasItem__do_get_height_request kwargs static PyObject * _wrap_HippoCanvasItem__do_get_height_request(PyObject *cls, PyObject *args, PyObject *kwargs) { HippoCanvasItemIface *iface; static char *kwlist[] = { "self", "for_width", NULL }; PyGObject *self; int for_width; int min_height = 0; int natural_height = 0; if (!PyArg_ParseTupleAndKeywords(args, kwargs,"O!i:HippoCanvasItem.get_height_request", kwlist, &PyHippoCanvasItem_Type, &self, &for_width)) return NULL; iface = g_type_interface_peek(g_type_class_peek(pyg_type_from_object(cls)), HIPPO_TYPE_CANVAS_ITEM); if (iface->get_height_request) iface->get_height_request(HIPPO_CANVAS_ITEM(self->obj), for_width, &min_height, &natural_height); else { PyErr_SetString(PyExc_NotImplementedError, "interface method HippoCanvasItem.get_height_request not implemented"); return NULL; } return Py_BuildValue("(ii)", min_height, natural_height); } %% override hippo_canvas_box_get_background_area noargs static PyObject * _wrap_hippo_canvas_box_get_background_area(PyGObject *self) { HippoRectangle *rect = g_new(HippoRectangle, 1); hippo_canvas_box_get_background_area(HIPPO_CANVAS_BOX(self->obj), rect); return pyg_boxed_new(HIPPO_TYPE_RECTANGLE, rect, TRUE, TRUE); } %% override hippo_canvas_box_insert_sorted kwargs static PyObject * _wrap_hippo_canvas_box_insert_sorted(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "child", "flags", "compare_func", NULL }; PyGObject *item; int flags = 0; PyObject *compare; if (!PyArg_ParseTupleAndKeywords(args, kwargs,"O!iO:HippoCanvasBox.insert_sorted", kwlist, &PyHippoCanvasItem_Type, &item, &flags, &compare)) return NULL; if (!PyCallable_Check(compare)) { PyErr_SetString(PyExc_TypeError, "parameter must be callable"); return NULL; } hippo_canvas_box_insert_sorted(HIPPO_CANVAS_BOX(self->obj), HIPPO_CANVAS_ITEM(item->obj), flags, marshal_compare_child_func, compare); Py_INCREF(Py_None); return Py_None; } %% override hippo_canvas_box_sort kwargs static PyObject * _wrap_hippo_canvas_box_sort(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "compare_func", NULL }; PyObject *compare; if (!PyArg_ParseTupleAndKeywords(args, kwargs,"O:HippoCanvasBox.sort", kwlist, &compare)) return NULL; if (!PyCallable_Check(compare)) { PyErr_SetString(PyExc_TypeError, "parameter must be callable"); return NULL; } hippo_canvas_box_sort(HIPPO_CANVAS_BOX(self->obj), marshal_compare_child_func, compare); Py_INCREF(Py_None); return Py_None; } %% override hippo_canvas_box_align kwargs static PyObject * _wrap_hippo_canvas_box_align(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "req_width", "req_height", NULL }; int req_width, req_height; int x,y,w,h; if (!PyArg_ParseTupleAndKeywords(args, kwargs,"ii:HippoCanvasBox.align", kwlist, &req_width, &req_height)) return NULL; hippo_canvas_box_align(HIPPO_CANVAS_BOX(self->obj), req_width, req_height, &x, &y, &w, &h); return Py_BuildValue("(iiii)", x, y, w, h); } %% override HippoCanvasBox__do_get_content_width_request kwargs static PyObject * _wrap_HippoCanvasBox__do_get_content_width_request(PyObject *cls, PyObject *args, PyObject *kwargs) { gpointer klass; static char *kwlist[] = { "self", NULL }; PyGObject *self; int min_width = 0; int natural_width = 0; if (!PyArg_ParseTupleAndKeywords(args, kwargs,"O!:HippoCanvasBox.get_content_width_request", kwlist, &PyHippoCanvasBox_Type, &self)) return NULL; klass = g_type_class_ref(pyg_type_from_object(cls)); if (HIPPO_CANVAS_BOX_CLASS(klass)->get_content_width_request) HIPPO_CANVAS_BOX_CLASS(klass)->get_content_width_request(HIPPO_CANVAS_BOX(self->obj), &min_width, &natural_width); else { PyErr_SetString(PyExc_NotImplementedError, "virtual method HippoCanvasBox.get_content_width_request not implemented"); g_type_class_unref(klass); return NULL; } g_type_class_unref(klass); return Py_BuildValue("(ii)", min_width, natural_width); } %% override HippoCanvasBox__do_get_content_height_request kwargs static PyObject * _wrap_HippoCanvasBox__do_get_content_height_request(PyObject *cls, PyObject *args, PyObject *kwargs) { gpointer klass; static char *kwlist[] = { "self", "for_width", NULL }; PyGObject *self; int for_width; int min_height = 0; int natural_height = 0; if (!PyArg_ParseTupleAndKeywords(args, kwargs,"O!i:HippoCanvasBox.get_content_height_request", kwlist, &PyHippoCanvasBox_Type, &self, &for_width)) return NULL; klass = g_type_class_ref(pyg_type_from_object(cls)); if (HIPPO_CANVAS_BOX_CLASS(klass)->get_content_height_request) HIPPO_CANVAS_BOX_CLASS(klass)->get_content_height_request(HIPPO_CANVAS_BOX(self->obj), for_width, &min_height, &natural_height); else { PyErr_SetString(PyExc_NotImplementedError, "virtual method HippoCanvasBox.get_content_height_request not implemented"); g_type_class_unref(klass); return NULL; } g_type_class_unref(klass); return Py_BuildValue("(ii)", min_height, natural_height); } %% override hippo_canvas_box_get_position kwargs static PyObject * _wrap_hippo_canvas_box_get_position(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "child", NULL }; PyGObject *child; int x = 0; int y = 0; if (!PyArg_ParseTupleAndKeywords(args, kwargs,"O!:HippoCanvasBox.get_position", kwlist, &PyHippoCanvasItem_Type, &child)) return NULL; hippo_canvas_box_get_position(HIPPO_CANVAS_BOX(self->obj), HIPPO_CANVAS_ITEM(child->obj), &x, &y); return Py_BuildValue("(ii)", x, y); } %% override hippo_canvas_box_find_box_child kwargs static PyObject * _wrap_hippo_canvas_box_find_box_child(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "child", NULL }; PyGObject *child; HippoCanvasBoxChild *box_child; if (!PyArg_ParseTupleAndKeywords(args, kwargs,"O!:HippoCanvasBox.find_box_child", kwlist, &PyHippoCanvasItem_Type, &child)) return NULL; box_child = hippo_canvas_box_find_box_child(HIPPO_CANVAS_BOX(self->obj), HIPPO_CANVAS_ITEM(child->obj)); if (box_child) return py_hippo_canvas_box_child_new(box_child); else { Py_INCREF(Py_None); return Py_None; } } %% override hippo_canvas_box_get_layout_children noargs static PyObject * _wrap_hippo_canvas_box_get_layout_children(PyGObject *self) { GSList *l; PyObject *py_list; HippoCanvasBox *box = HIPPO_CANVAS_BOX(self->obj); py_list = PyList_New(0); if (py_list == NULL) return NULL; for (l = box->children; l != NULL; l = l->next) { HippoCanvasBoxChild *child = l->data; if (child->in_layout) { PyObject *child_obj = py_hippo_canvas_box_child_new(child); if (child_obj == NULL) { Py_DECREF(py_list); return NULL; } PyList_Append(py_list, child_obj); Py_DECREF(child_obj); } } return py_list; } %% override HippoCanvasItem__proxy_do_get_width_request static void _wrap_HippoCanvasItem__proxy_do_get_width_request(HippoCanvasItem *self, int*min_width, int*natural_width) { PyGILState_STATE __py_state; PyObject *py_self; PyObject *py_retval; PyObject *py_method; int my_min_width = 0; int my_natural_width = 0; __py_state = pyg_gil_state_ensure(); py_self = pygobject_new((GObject *) self); if (!py_self) { if (PyErr_Occurred()) PyErr_Print(); pyg_gil_state_release(__py_state); return; } py_method = PyObject_GetAttrString(py_self, "do_get_width_request"); if (!py_method) { if (PyErr_Occurred()) PyErr_Print(); Py_DECREF(py_self); pyg_gil_state_release(__py_state); return; } py_retval = PyObject_CallObject(py_method, NULL); if (!py_retval) { if (PyErr_Occurred()) PyErr_Print(); Py_DECREF(py_method); Py_DECREF(py_self); pyg_gil_state_release(__py_state); return; } if (!PyArg_ParseTuple(py_retval, "ii", &my_min_width, &my_natural_width)) { if (PyErr_Occurred()) PyErr_Print(); Py_DECREF(py_retval); Py_DECREF(py_method); Py_DECREF(py_self); pyg_gil_state_release(__py_state); return; } if (min_width) *min_width = my_min_width; if (natural_width) *natural_width = my_natural_width; Py_DECREF(py_retval); Py_DECREF(py_method); Py_DECREF(py_self); pyg_gil_state_release(__py_state); } %% override HippoCanvasItem__proxy_do_get_height_request static void _wrap_HippoCanvasItem__proxy_do_get_height_request(HippoCanvasItem *self, int for_width, int*min_height, int*natural_height) { PyGILState_STATE __py_state; PyObject *py_self; PyObject *py_for_width; PyObject *py_retval; PyObject *py_args; PyObject *py_method; int my_min_height = 0; int my_natural_height = 0; __py_state = pyg_gil_state_ensure(); py_self = pygobject_new((GObject *) self); if (!py_self) { if (PyErr_Occurred()) PyErr_Print(); pyg_gil_state_release(__py_state); return; } py_for_width = PyInt_FromLong(for_width); py_args = PyTuple_New(1); PyTuple_SET_ITEM(py_args, 0, py_for_width); py_method = PyObject_GetAttrString(py_self, "do_get_height_request"); if (!py_method) { if (PyErr_Occurred()) PyErr_Print(); Py_DECREF(py_args); Py_DECREF(py_self); pyg_gil_state_release(__py_state); return; } py_retval = PyObject_CallObject(py_method, py_args); if (!py_retval) { if (PyErr_Occurred()) PyErr_Print(); Py_DECREF(py_method); Py_DECREF(py_args); Py_DECREF(py_self); pyg_gil_state_release(__py_state); return; } if (!PyArg_ParseTuple(py_retval, "ii", &my_min_height, &my_natural_height)) { if (PyErr_Occurred()) PyErr_Print(); Py_DECREF(py_retval); Py_DECREF(py_method); Py_DECREF(py_args); Py_DECREF(py_self); pyg_gil_state_release(__py_state); return; } if (min_height) *min_height = my_min_height; if (natural_height) *natural_height = my_natural_height; Py_DECREF(py_retval); Py_DECREF(py_method); Py_DECREF(py_args); Py_DECREF(py_self); pyg_gil_state_release(__py_state); } %% override HippoCanvasBox__proxy_do_get_content_width_request static void _wrap_HippoCanvasBox__proxy_do_get_content_width_request(HippoCanvasBox *self, int*min_width, int*natural_width) { PyGILState_STATE __py_state; PyObject *py_self; PyObject *py_retval; PyObject *py_method; int my_min_width = 0; int my_natural_width = 0; __py_state = pyg_gil_state_ensure(); py_self = pygobject_new((GObject *) self); if (!py_self) { if (PyErr_Occurred()) PyErr_Print(); pyg_gil_state_release(__py_state); return; } py_method = PyObject_GetAttrString(py_self, "do_get_content_width_request"); if (!py_method) { if (PyErr_Occurred()) PyErr_Print(); Py_DECREF(py_self); pyg_gil_state_release(__py_state); return; } py_retval = PyObject_CallObject(py_method, NULL); if (!py_retval) { if (PyErr_Occurred()) PyErr_Print(); Py_DECREF(py_method); Py_DECREF(py_self); pyg_gil_state_release(__py_state); return; } if (!PyArg_ParseTuple(py_retval, "ii", &my_min_width, &my_natural_width)) { if (PyErr_Occurred()) PyErr_Print(); Py_DECREF(py_retval); Py_DECREF(py_method); Py_DECREF(py_self); pyg_gil_state_release(__py_state); return; } if (min_width) *min_width = my_min_width; if (natural_width) *natural_width = my_natural_width; Py_DECREF(py_retval); Py_DECREF(py_method); Py_DECREF(py_self); pyg_gil_state_release(__py_state); } %% override HippoCanvasBox__proxy_do_get_content_height_request static void _wrap_HippoCanvasBox__proxy_do_get_content_height_request(HippoCanvasBox *self, int for_width, int*min_height, int*natural_height) { PyGILState_STATE __py_state; PyObject *py_self; PyObject *py_for_width; PyObject *py_retval; PyObject *py_args; PyObject *py_method; int my_min_height = 0; int my_natural_height = 0; __py_state = pyg_gil_state_ensure(); py_self = pygobject_new((GObject *) self); if (!py_self) { if (PyErr_Occurred()) PyErr_Print(); pyg_gil_state_release(__py_state); return; } py_for_width = PyInt_FromLong(for_width); py_args = PyTuple_New(1); PyTuple_SET_ITEM(py_args, 0, py_for_width); py_method = PyObject_GetAttrString(py_self, "do_get_content_height_request"); if (!py_method) { if (PyErr_Occurred()) PyErr_Print(); Py_DECREF(py_args); Py_DECREF(py_self); pyg_gil_state_release(__py_state); return; } py_retval = PyObject_CallObject(py_method, py_args); if (!py_retval) { if (PyErr_Occurred()) PyErr_Print(); Py_DECREF(py_method); Py_DECREF(py_args); Py_DECREF(py_self); pyg_gil_state_release(__py_state); return; } if (!PyArg_ParseTuple(py_retval, "ii", &my_min_height, &my_natural_height)) { if (PyErr_Occurred()) PyErr_Print(); Py_DECREF(py_retval); Py_DECREF(py_method); Py_DECREF(py_args); Py_DECREF(py_self); pyg_gil_state_release(__py_state); return; } if (min_height) *min_height = my_min_height; if (natural_height) *natural_height = my_natural_height; Py_DECREF(py_retval); Py_DECREF(py_method); Py_DECREF(py_args); Py_DECREF(py_self); pyg_gil_state_release(__py_state); } %% override hippo_canvas_box_get_children noargs static PyObject * _wrap_hippo_canvas_box_get_children(PyGObject *self) { GList *list, *tmp; PyObject *py_list; list = hippo_canvas_box_get_children(HIPPO_CANVAS_BOX(self->obj)); if ((py_list = PyList_New(0)) == NULL) { g_list_free(list); return NULL; } for (tmp = list; tmp != NULL; tmp = tmp->next) { PyObject *child_obj = pygobject_new(G_OBJECT(tmp->data)); if (child_obj == NULL) { g_list_free(list); Py_DECREF(py_list); return NULL; } PyList_Append(py_list, child_obj); Py_DECREF(child_obj); } g_list_free(list); return py_list; } %% override-slot HippoEvent.tp_getattr static PyObject * _wrap_hippo_event_tp_getattr(PyObject *self, char *attr) { HippoEvent *event = pyg_boxed_get(self, HippoEvent); if (!strcmp(attr, "type")) return pyg_enum_from_gtype(HIPPO_TYPE_EVENT_TYPE, event->type); else if (!strcmp(attr, "x")) return PyInt_FromLong(event->x); else if (!strcmp(attr, "y")) return PyInt_FromLong(event->y); switch(event->type) { case HIPPO_EVENT_MOTION_NOTIFY: if (!strcmp(attr, "__members__")) return Py_BuildValue("[ssss]", "type", "x", "y", "detail"); else if (!strcmp(attr, "detail")) return pyg_enum_from_gtype(HIPPO_TYPE_MOTION_DETAIL, event->u.motion.detail); break; case HIPPO_EVENT_BUTTON_PRESS: case HIPPO_EVENT_BUTTON_RELEASE: if (!strcmp(attr, "__members__")) return Py_BuildValue("[ssssssss]", "type", "x", "y", "button", "count", "x11_x_root", "x11_y_root", "x11_time"); else if (!strcmp(attr, "button")) return PyInt_FromLong(event->u.button.button); else if (!strcmp(attr, "count")) return PyInt_FromLong(event->u.button.count); else if (!strcmp(attr, "x11_x_root")) return PyInt_FromLong(event->u.button.x11_x_root); else if (!strcmp(attr, "x11_y_root")) return PyInt_FromLong(event->u.button.x11_y_root); else if (!strcmp(attr, "x11_time")) return PyInt_FromLong(event->u.button.x11_time); break; case HIPPO_EVENT_KEY_PRESS: if (!strcmp(attr, "__members__")) return Py_BuildValue("[sssss]", "type", "x", "y", "key", "character"); else if (!strcmp(attr, "key")) return pyg_enum_from_gtype(HIPPO_TYPE_KEY, event->u.key.key); else if (!strcmp(attr, "character")) return PyInt_FromLong(event->u.key.character); /* FIXME this should probably return a string? */ break; case HIPPO_EVENT_SCROLL: if (!strcmp(attr, "__members__")) return Py_BuildValue("[ssss]", "type", "x", "y", "direction"); else if (!strcmp(attr, "direction")) return pyg_enum_from_gtype(HIPPO_TYPE_SCROLL_DIRECTION, event->u.scroll.direction); break; /* No default, hides compiler warnings */ } Py_INCREF(Py_None); return Py_None; } %% override HippoCanvasLayout__proxy_do_get_width_request static void _wrap_HippoCanvasLayout__proxy_do_get_width_request(HippoCanvasLayout *self, int*min_width, int*natural_width) { PyGILState_STATE __py_state; PyObject *py_self; PyObject *py_retval; PyObject *py_method; int my_min_width = 0; int my_natural_width = 0; __py_state = pyg_gil_state_ensure(); py_self = pygobject_new((GObject *) self); if (!py_self) { if (PyErr_Occurred()) PyErr_Print(); pyg_gil_state_release(__py_state); return; } py_method = PyObject_GetAttrString(py_self, "do_get_width_request"); if (!py_method) { if (PyErr_Occurred()) PyErr_Print(); Py_DECREF(py_self); pyg_gil_state_release(__py_state); return; } py_retval = PyObject_CallObject(py_method, NULL); if (!py_retval) { if (PyErr_Occurred()) PyErr_Print(); Py_DECREF(py_method); Py_DECREF(py_self); pyg_gil_state_release(__py_state); return; } if (!PyArg_ParseTuple(py_retval, "ii", &my_min_width, &my_natural_width)) { if (PyErr_Occurred()) PyErr_Print(); Py_DECREF(py_retval); Py_DECREF(py_method); Py_DECREF(py_self); pyg_gil_state_release(__py_state); return; } if (min_width) *min_width = my_min_width; if (natural_width) *natural_width = my_natural_width; Py_DECREF(py_retval); Py_DECREF(py_method); Py_DECREF(py_self); pyg_gil_state_release(__py_state); } %% override HippoCanvasLayout__proxy_do_get_height_request static void _wrap_HippoCanvasLayout__proxy_do_get_height_request(HippoCanvasLayout *self, int for_width, int*min_height, int*natural_height) { PyGILState_STATE __py_state; PyObject *py_self; PyObject *py_for_width; PyObject *py_retval; PyObject *py_args; PyObject *py_method; int my_min_height = 0; int my_natural_height = 0; __py_state = pyg_gil_state_ensure(); py_self = pygobject_new((GObject *) self); if (!py_self) { if (PyErr_Occurred()) PyErr_Print(); pyg_gil_state_release(__py_state); return; } py_for_width = PyInt_FromLong(for_width); py_args = PyTuple_New(1); PyTuple_SET_ITEM(py_args, 0, py_for_width); py_method = PyObject_GetAttrString(py_self, "do_get_height_request"); if (!py_method) { if (PyErr_Occurred()) PyErr_Print(); Py_DECREF(py_args); Py_DECREF(py_self); pyg_gil_state_release(__py_state); return; } py_retval = PyObject_CallObject(py_method, py_args); if (!py_retval) { if (PyErr_Occurred()) PyErr_Print(); Py_DECREF(py_method); Py_DECREF(py_args); Py_DECREF(py_self); pyg_gil_state_release(__py_state); return; } if (!PyArg_ParseTuple(py_retval, "ii", &my_min_height, &my_natural_height)) { if (PyErr_Occurred()) PyErr_Print(); Py_DECREF(py_retval); Py_DECREF(py_method); Py_DECREF(py_args); Py_DECREF(py_self); pyg_gil_state_release(__py_state); return; } if (min_height) *min_height = my_min_height; if (natural_height) *natural_height = my_natural_height; Py_DECREF(py_retval); Py_DECREF(py_method); Py_DECREF(py_args); Py_DECREF(py_self); pyg_gil_state_release(__py_state); } %% override hippo_canvas_style_get_color kwargs static PyObject * _wrap_hippo_canvas_style_get_color(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "property_name", "inherit", NULL }; char *property_name; int inherit; guint32 color; PyObject *result; if (!PyArg_ParseTupleAndKeywords(args, kwargs,"si:HippoCanvasStyle.get_color", kwlist, &property_name, &inherit)) return NULL; if (hippo_canvas_style_get_color(HIPPO_CANVAS_STYLE(self->obj), property_name, inherit, &color)) { result = PyLong_FromUnsignedLong(color); } else { Py_INCREF(Py_None); result = Py_None; } return result; } %% override hippo_canvas_style_get_double kwargs static PyObject * _wrap_hippo_canvas_style_get_double(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "property_name", "inherit", NULL }; char *property_name; int inherit; double value; PyObject *result; if (!PyArg_ParseTupleAndKeywords(args, kwargs,"si:HippoCanvasStyle.get_double", kwlist, &property_name, &inherit)) return NULL; if (hippo_canvas_style_get_double(HIPPO_CANVAS_STYLE(self->obj), property_name, inherit, &value)) { result = PyFloat_FromDouble(value); } else { Py_INCREF(Py_None); result = Py_None; } return result; } %% override hippo_cairo_surface_from_gdk_pixbuf kwargs static cairo_surface_t* _cairo_surface_from_pixbuf (GdkPixbuf *pixbuf) { /* Ripped from GooCanvas */ gint width = gdk_pixbuf_get_width (pixbuf); gint height = gdk_pixbuf_get_height (pixbuf); guchar *gdk_pixels = gdk_pixbuf_get_pixels (pixbuf); int gdk_rowstride = gdk_pixbuf_get_rowstride (pixbuf); int n_channels = gdk_pixbuf_get_n_channels (pixbuf); guchar *cairo_pixels; cairo_format_t format; cairo_surface_t *surface; static const cairo_user_data_key_t key; int j; if (n_channels == 3) format = CAIRO_FORMAT_RGB24; else format = CAIRO_FORMAT_ARGB32; cairo_pixels = g_malloc (4 * width * height); surface = cairo_image_surface_create_for_data ((unsigned char *)cairo_pixels, format, width, height, 4 * width); cairo_surface_set_user_data (surface, &key, cairo_pixels, (cairo_destroy_func_t)g_free); for (j = height; j; j--) { guchar *p = gdk_pixels; guchar *q = cairo_pixels; if (n_channels == 3) { guchar *end = p + 3 * width; while (p < end) { #if G_BYTE_ORDER == G_LITTLE_ENDIAN q[0] = p[2]; q[1] = p[1]; q[2] = p[0]; #else q[1] = p[0]; q[2] = p[1]; q[3] = p[2]; #endif p += 3; q += 4; } } else { guchar *end = p + 4 * width; guint t1,t2,t3; #define MULT(d,c,a,t) G_STMT_START { t = c * a; d = ((t >> 8) + t) >> 8; } G_STMT_END while (p < end) { #if G_BYTE_ORDER == G_LITTLE_ENDIAN MULT(q[0], p[2], p[3], t1); MULT(q[1], p[1], p[3], t2); MULT(q[2], p[0], p[3], t3); q[3] = p[3]; #else q[0] = p[3]; MULT(q[1], p[0], p[3], t1); MULT(q[2], p[1], p[3], t2); MULT(q[3], p[2], p[3], t3); #endif p += 4; q += 4; } #undef MULT } gdk_pixels += gdk_rowstride; cairo_pixels += 4 * width; } return surface; } static PyObject * _wrap_hippo_cairo_surface_from_gdk_pixbuf(PyGObject *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "pixbuf", NULL }; PyGObject *child; cairo_surface_t *surface; if (!PyArg_ParseTupleAndKeywords(args, kwargs,"O!:hippo.cairo_surface_from_gdk_pixbuf", kwlist, &PyGdkPixbuf_Type, &child)) return NULL; surface = _cairo_surface_from_pixbuf(GDK_PIXBUF (child->obj)); if (surface == NULL) { PyErr_SetString(PyExc_RuntimeError, "pixbuf could not be converted"); return NULL; } return PycairoSurface_FromSurface(surface, NULL); } %% override hippo_canvas_set_load_image_hook kwargs static PyObject *_canvas_load_image_hook_cb = NULL; static cairo_surface_t* _canvas_load_image_hook(HippoCanvasContext *context, const char *image_name) { PyObject *arglist; PyObject *result; PycairoSurface *surface_result; cairo_surface_t *surface = NULL; PyGILState_STATE state; state = pyg_gil_state_ensure(); arglist = Py_BuildValue("(s)", image_name); result = PyEval_CallObject(_canvas_load_image_hook_cb, arglist); Py_DECREF(arglist); if (result == NULL || !PyObject_TypeCheck(result, &PycairoSurface_Type)) goto out; surface_result = (PycairoSurface*)result; surface = surface_result->surface; cairo_surface_reference(surface); Py_XDECREF(result); out: pyg_gil_state_release(state); return surface; } static PyObject * _wrap_hippo_canvas_set_load_image_hook(PyGObject *self, PyObject *args, PyObject *kwargs) { PyObject *result = NULL; PyObject *temp; if (PyArg_ParseTuple(args, "O:canvas_set_load_image_hook", &temp)) { if (!PyCallable_Check(temp)) { PyErr_SetString(PyExc_TypeError, "parameter must be callable"); return NULL; } Py_XINCREF(temp); Py_XDECREF(_canvas_load_image_hook_cb); _canvas_load_image_hook_cb = temp; hippo_canvas_set_load_image_hook(_canvas_load_image_hook); Py_INCREF(Py_None); result = Py_None; } return result; } %% override hippo_rectangle_new args static int _wrap_hippo_rectangle_new(PyGBoxed *self, PyObject *args, PyObject *kwargs) { HippoRectangle rect = { 0, 0, 0, 0 }; if (!PyArg_ParseTuple(args, "|iiii:HippoRectangle.__init__", &rect.x, &rect.y, &rect.width, &rect.height)) return -1; self->boxed = hippo_rectangle_copy(&rect); self->free_on_dealloc = TRUE; self->gtype = HIPPO_TYPE_RECTANGLE; return 0; } %% init if (PyType_Ready(&PyHippoCanvasBoxChild_Type) < 0) { g_warning("could not ready hippo.CanvasBoxChild"); return; } %% hippo-canvas-0.3.1/python/hippo.defs0000664000076400007640000011301711403415002014332 00000000000000; -*- scheme -*- ; object definitions ... (define-boxed Event (in-module "Hippo") (c-name "HippoEvent") (gtype-id "HIPPO_TYPE_EVENT") (copy-func "hippo_event_copy") (release-func "hippo_event_free") ) (define-boxed Rectangle (in-module "Hippo") (c-name "HippoRectangle") (gtype-id "HIPPO_TYPE_RECTANGLE") (copy-func "hippo_rectangle_copy") (release-func "hippo_rectangle_free") (fields '("int" "x") '("int" "y") '("int" "width") '("int" "height") ) ) (define-object Animation (in-module "Hippo") (parent "GObject") (c-name "HippoAnimation") (gtype-id "HIPPO_TYPE_ANIMATION") ) (define-object AnimationManager (in-module "Hippo") (parent "GObject") (c-name "HippoAnimationManager") (gtype-id "HIPPO_TYPE_ANIMATION_MANAGER") ) (define-object Canvas (in-module "Hippo") (parent "GtkContainer") (c-name "HippoCanvas") (gtype-id "HIPPO_TYPE_CANVAS") ) (define-object CanvasBox (in-module "Hippo") (parent "GObject") (implements "HippoCanvasItem") (implements "HippoCanvasContext") (c-name "HippoCanvasBox") (gtype-id "HIPPO_TYPE_CANVAS_BOX") ) (define-interface CanvasContext (in-module "Hippo") (c-name "HippoCanvasContext") (gtype-id "HIPPO_TYPE_CANVAS_CONTEXT") ) (define-interface CanvasContainer (in-module "Hippo") (c-name "HippoCanvasContainer") (gtype-id "HIPPO_TYPE_CANVAS_CONTAINER") ) (define-object CanvasImage (in-module "Hippo") (parent "HippoCanvasBox") (c-name "HippoCanvasImage") (gtype-id "HIPPO_TYPE_CANVAS_IMAGE") ) (define-object CanvasImageButton (in-module "Hippo") (parent "HippoCanvasImage") (c-name "HippoCanvasImageButton") (gtype-id "HIPPO_TYPE_CANVAS_IMAGE_BUTTON") ) (define-interface CanvasItem (in-module "Hippo") (c-name "HippoCanvasItem") (gtype-id "HIPPO_TYPE_CANVAS_ITEM") ) (define-object CanvasText (in-module "Hippo") (parent "HippoCanvasBox") (c-name "HippoCanvasText") (gtype-id "HIPPO_TYPE_CANVAS_TEXT") ) (define-object CanvasLink (in-module "Hippo") (parent "HippoCanvasText") (c-name "HippoCanvasLink") (gtype-id "HIPPO_TYPE_CANVAS_LINK") ) (define-object CanvasStyle (in-module "Hippo") (parent "GObject") (c-name "HippoCanvasStyle") (gtype-id "HIPPO_TYPE_CANVAS_STYLE") ) (define-object CanvasTheme (in-module "Hippo") (parent "GObject") (c-name "HippoCanvasTheme") (gtype-id "HIPPO_TYPE_CANVAS_THEME") ) (define-interface CanvasThemeEngine (in-module "Hippo") (c-name "HippoCanvasThemeEngine") (gtype-id "HIPPO_TYPE_CANVAS_THEME_ENGINE") ) (define-object CanvasThemeImage (in-module "Hippo") (parent "GObject") (c-name "HippoCanvasThemeImage") (gtype-id "HIPPO_TYPE_CANVAS_THEME_IMAGE") ) (define-object CanvasWidget (in-module "Hippo") (parent "HippoCanvasBox") (c-name "HippoCanvasWidget") (gtype-id "HIPPO_TYPE_CANVAS_WIDGET") ) (define-object CanvasWindow (in-module "Hippo") (parent "GtkWindow") (c-name "HippoCanvasWindow") (gtype-id "HIPPO_TYPE_CANVAS_WINDOW") ) (define-object CanvasGradient (in-module "Hippo") (parent "HippoCanvasBox") (c-name "HippoCanvasGradient") (gtype-id "HIPPO_TYPE_CANVAS_GRADIENT") ) (define-object CanvasButton (in-module "Hippo") (parent "HippoCanvasWidget") (c-name "HippoCanvasButton") (gtype-id "HIPPO_TYPE_CANVAS_BUTTON") ) (define-object CanvasScrollbars (in-module "Hippo") (parent "HippoCanvasWidget") (c-name "HippoCanvasScrollbars") (gtype-id "HIPPO_TYPE_CANVAS_SCROLLBARS") ) (define-object CanvasEntry (in-module "Hippo") (parent "HippoCanvasWidget") (c-name "HippoCanvasEntry") (gtype-id "HIPPO_TYPE_CANVAS_ENTRY") ) ;; Enumerations and flags ... (define-flags PackFlags (in-module "Hippo") (c-name "HippoPackFlags") (gtype-id "HIPPO_TYPE_PACK_FLAGS") (values '("expand" "HIPPO_PACK_EXPAND") '("end" "HIPPO_PACK_END") '("fixed" "HIPPO_PACK_FIXED") '("if-fits" "HIPPO_PACK_IF_FITS") '("float-left" "HIPPO_PACK_FLOAT_LEFT") '("float-right" "HIPPO_PACK_FLOAT_RIGHT") '("clear-left" "HIPPO_PACK_CLEAR_LEFT") '("clear-right" "HIPPO_PACK_CLEAR_RIGHT") '("clear-both" "HIPPO_PACK_CLEAR_BOTH") ) ) (define-enum StockColor (in-module "Hippo") (c-name "HippoStockColor") (gtype-id "HIPPO_TYPE_STOCK_COLOR") (values '("normal" "HIPPO_STOCK_COLOR_BG_NORMAL") '("prelight" "HIPPO_STOCK_COLOR_BG_PRELIGHT") ) ) (define-enum CanvasPointer (in-module "Hippo") (c-name "HippoCanvasPointer") (gtype-id "HIPPO_TYPE_CANVAS_POINTER") (values '("unset" "HIPPO_CANVAS_POINTER_UNSET") '("default" "HIPPO_CANVAS_POINTER_DEFAULT") '("hand" "HIPPO_CANVAS_POINTER_HAND") ) ) (define-enum ItemAlignment (in-module "Hippo") (c-name "HippoItemAlignment") (gtype-id "HIPPO_TYPE_ITEM_ALIGNMENT") (values '("fill" "HIPPO_ALIGNMENT_FILL") '("start" "HIPPO_ALIGNMENT_START") '("center" "HIPPO_ALIGNMENT_CENTER") '("end" "HIPPO_ALIGNMENT_END") ) ) (define-enum CanvasSizeMode (in-module "Hippo") (c-name "HippoCanvasSizeMode") (gtype-id "HIPPO_TYPE_CANVAS_SIZE_MODE") (values '("full-width" "HIPPO_CANVAS_SIZE_FULL_WIDTH") '("wrap-word" "HIPPO_CANVAS_SIZE_WRAP_WORD") '("ellipsize-end" "HIPPO_CANVAS_SIZE_ELLIPSIZE_END") ) ) (define-enum ScrollbarPolicy (in-module "Hippo") (c-name "HippoScrollbarPolicy") (gtype-id "HIPPO_TYPE_SCROLLBAR_POLICY") (values '("never" "HIPPO_SCROLLBAR_NEVER") '("automatic" "HIPPO_SCROLLBAR_AUTOMATIC") '("always" "HIPPO_SCROLLBAR_ALWAYS") ) ) (define-enum EventType (in-module "Hippo") (c-name "HippoEventType") (gtype-id "HIPPO_TYPE_EVENT_TYPE") (values '("button-press" "HIPPO_EVENT_BUTTON_PRESS") '("button-release" "HIPPO_EVENT_BUTTON_RELEASE") '("motion-notify" "HIPPO_EVENT_MOTION_NOTIFY") '("key-press" "HIPPO_EVENT_KEY_PRESS") '("scroll" "HIPPO_EVENT_SCROLL") ) ) (define-enum MotionDetail (in-module "Hippo") (c-name "HippoMotionDetail") (gtype-id "HIPPO_TYPE_MOTION_DETAIL") (values '("enter" "HIPPO_MOTION_DETAIL_ENTER") '("leave" "HIPPO_MOTION_DETAIL_LEAVE") '("within" "HIPPO_MOTION_DETAIL_WITHIN") ) ) (define-enum ScrollDirection (in-module "Hippo") (c-name "HippoScrollDirection") (gtype-id "HIPPO_TYPE_SCROLL_DIRECTION") (values '("up" "HIPPO_SCROLL_UP") '("down" "HIPPO_SCROLL_DOWN") '("left" "HIPPO_SCROLL_LEFT") '("right" "HIPPO_SCROLL_RIGHT") ) ) (define-enum Key (in-module "Hippo") (c-name "HippoKey") (gtype-id "HIPPO_TYPE_KEY") (values '("unknown" "HIPPO_KEY_UNKNOWN") '("return" "HIPPO_KEY_RETURN") '("escape" "HIPPO_KEY_ESCAPE") '("tab" "HIPPO_KEY_TAB") '("lefttab" "HIPPO_KEY_LEFTTAB") ) ) (define-flags Modifier (in-module "Hippo") (c-name "HippoModifier") (gtype-id "HIPPO_TYPE_MODIFIER") (values '("shift" "HIPPO_MODIFIER_ALT") '("ctrl" "HIPPO_MODIFIER_ALT") '("alt" "HIPPO_MODIFIER_ALT") ) ) (define-enum Orientation (in-module "Hippo") (c-name "HippoOrientation") (gtype-id "HIPPO_TYPE_ORIENTATION") (values '("vertical" "HIPPO_ORIENTATION_VERTICAL") '("horizontal" "HIPPO_ORIENTATION_HORIZONTAL") ) ) (define-enum Side (in-module "Hippo") (c-name "HippoSide") (gtype-id "HIPPO_TYPE_SIDE") (values '("top" "HIPPO_SIDE_TOP") '("bottom" "HIPPO_SIDE_BOTTOM") '("left" "HIPPO_SIDE_LEFT") '("right" "HIPPO_SIDE_RIGHT") ) ) (define-enum Gravity (in-module "Hippo") (c-name "HippoGravity") (gtype-id "HIPPO_TYPE_GRAVITY") (values '("north-west" "HIPPO_GRAVITY_NORTH_WEST") '("north-east" "HIPPO_GRAVITY_NORTH_EAST") '("south-east" "HIPPO_GRAVITY_SOUTH_EAST") '("south-west" "HIPPO_GRAVITY_SOUTH_WEST") ) ) ;; From hippo-animation.h (define-function animation_get_type (c-name "hippo_animation_get_type") (return-type "GType") ) (define-function animation_new (c-name "hippo_animation_new") (is-constructor-of "HippoAnimation") (return-type "HippoAnimation*") ) (define-method add_event (of-object "HippoAnimation") (c-name "hippo_animation_add_event") (return-type "int") (parameters '("double" "when") '("double" "duration" (default "-1")) ) ) (define-method cancel (of-object "HippoAnimation") (c-name "hippo_animation_cancel") (return-type "none") ) (define-method advance (of-object "HippoAnimation") (c-name "hippo_animation_advance") (return-type "none") (parameters '("double" "position") ) ) (define-method get_next_event_position (of-object "HippoAnimation") (c-name "hippo_animation_get_next_event_position") (return-type "double") ) (define-virtual event (of-object "HippoAnimation") (return-type "none") (parameters '("int" "event_id") '("double" "fraction") ) ) (define-virtual cancel (of-object "HippoAnimation") (return-type "none") ) ;; From hippo-animation-manager.h (define-function animation_manager_get_type (c-name "hippo_animation_manager_get_type") (return-type "GType") ) (define-function animation_manager_new (c-name "hippo_animation_manager_new") (is-constructor-of "HippoAnimationManager") (return-type "HippoAnimationManager*") ) (define-method add_animation (of-object "HippoAnimationManager") (c-name "hippo_animation_manager_add_animation") (return-type "none") (parameters '("HippoAnimation*" "animation") '("double" "delay" (default "0")) ) ) (define-method frame_complete (of-object "HippoAnimationManager") (c-name "hippo_animation_manager_frame_complete") (return-type "none") (parameters '("guint" "frame_serial") ) ) ;; From hippo-canvas.h (define-function canvas_get_type (c-name "hippo_canvas_get_type") (return-type "GType") ) (define-function canvas_new (c-name "hippo_canvas_new") (is-constructor-of "HippoCanvas") (return-type "GtkWidget*") ) (define-method set_root (of-object "HippoCanvas") (c-name "hippo_canvas_set_root") (return-type "none") (parameters '("HippoCanvasItem*" "root") ) ) (define-method set_theme (of-object "HippoCanvas") (c-name "hippo_canvas_set_theme") (return-type "none") (parameters '("HippoCanvasTheme*" "theme") ) ) (define-method get_context (of-object "HippoCanvas") (c-name "hippo_canvas_get_context") (return-type "HippoCanvasContext*") ) (define-function canvas_set_load_image_hook (c-name "hippo_canvas_set_load_image_hook") (return-type "none") (parameters '("HippoCanvasLoadImageHook" "hook") ) ) (define-function canvas_open_test_window (c-name "hippo_canvas_open_test_window") (return-type "none") ) ;; From hippo-canvas-widget.h (define-function canvas_widget_get_type (c-name "hippo_canvas_widget_get_type") (return-type "GType") ) (define-function canvas_widget_new (c-name "hippo_canvas_widget_new") (is-constructor-of "HippoCanvasWidget") (return-type "HippoCanvasItem*") ) ;; From hippo-canvas-window-child.h (define-function canvas_window_child_get_type (c-name "hippo_canvas_window_child_get_type") (return-type "GType") ) (define-function canvas_window_child_new (c-name "hippo_canvas_window_child_new") (is-constructor-of "HippoCanvasWindowChild") (return-type "GtkWidget*") ) (define-method get_helper (of-object "HippoCanvasWindowChild") (c-name "hippo_canvas_window_child_get_helper") (return-type "HippoCanvasHelper*") ) ;; From hippo-canvas-window.h (define-function canvas_window_get_type (c-name "hippo_canvas_window_get_type") (return-type "GType") ) (define-function canvas_window_new (c-name "hippo_canvas_window_new") (is-constructor-of "HippoCanvasWindow") (return-type "GtkWidget*") (properties '("type" (optional)) ) ) (define-method set_root (of-object "HippoCanvasWindow") (c-name "hippo_canvas_window_set_root") (return-type "none") (parameters '("HippoCanvasItem*" "item") ) ) (define-method set_theme (of-object "HippoCanvasWindow") (c-name "hippo_canvas_window_set_theme") (return-type "none") (parameters '("HippoCanvasTheme*" "theme") ) ) (define-method get_context (of-object "HippoCanvasWindow") (c-name "hippo_canvas_window_get_context") (return-type "HippoCanvasContext*") ) ;; From hippo-canvas-box.h (define-function canvas_box_get_type (c-name "hippo_canvas_box_get_type") (return-type "GType") ) (define-function canvas_box_new (c-name "hippo_canvas_box_new") (is-constructor-of "HippoCanvasBox") (return-type "HippoCanvasItem*") ) (define-method prepend (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_prepend") (return-type "none") (parameters '("HippoCanvasItem*" "child") '("HippoPackFlags" "flags" (default "0")) ) ) (define-method append (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_append") (return-type "none") (parameters '("HippoCanvasItem*" "child") '("HippoPackFlags" "flags" (default "0")) ) ) (define-method move (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_move") (return-type "none") (parameters '("HippoCanvasItem*" "child") '("HippoGravity" "gravity") '("int" "x") '("int" "y") ) ) (define-method set_position (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_set_position") (return-type "none") (parameters '("HippoCanvasItem*" "child") '("int" "x") '("int" "y") ) ) (define-method get_position (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_get_position") (return-type "none") (parameters '("HippoCanvasItem*" "child") '("int*" "x" (direction "out")) '("int*" "y" (direction "out")) ) ) (define-method clear (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_clear") (return-type "none") ) (define-method remove (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_remove") (return-type "none") (parameters '("HippoCanvasItem*" "child") ) ) (define-method remove_all (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_remove_all") (return-type "none") ) (define-method get_children (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_get_children") (return-type "GList*") ) (define-method is_empty (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_is_empty") (return-type "gboolean") ) (define-method foreach (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_foreach") (return-type "none") (parameters '("HippoCanvasForeachChildFunc" "func") '("void*" "data") ) ) (define-method reverse (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_reverse") (return-type "none") ) (define-method sort (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_sort") (return-type "none") (parameters '("HippoCanvasCompareChildFunc" "compare_func") '("void*" "data") ) ) (define-method insert_sorted (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_insert_sorted") (return-type "none") (parameters '("HippoCanvasItem*" "child") '("HippoPackFlags" "flags") '("HippoCanvasCompareChildFunc" "compare_func") '("void*" "data") ) ) (define-method get_child_visible (of-object "HippoCanvasContainer") (c-name "hippo_canvas_container_get_child_visible") (return-type "gboolean") (parameters '("HippoCanvasItem*" "child") ) ) (define-method set_child_visible (of-object "HippoCanvasContainer") (c-name "hippo_canvas_container_set_child_visible") (return-type "none") (parameters '("HippoCanvasItem*" "child") '("gboolean" "visible") ) ) (define-method set_child_packing (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_set_child_packing") (return-type "none") (parameters '("HippoCanvasItem*" "child") '("HippoPackFlags" "flags") ) ) (define-method get_background_area (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_get_background_area") (return-type "none") (parameters '("HippoRectangle*" "area") ) ) (define-method align (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_align") (return-type "none") (parameters '("int" "requested_content_width") '("int" "requested_content_height") '("int*" "x_p") '("int*" "y_p") '("int*" "width_p") '("int*" "height_p") ) ) (define-virtual paint_below_children (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_paint_below_children") (return-type "none") (parameters '("cairo_t*" "cr") '("GdkRegion*" "damaged_region") ) ) (define-virtual paint_above_children (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_paint_above_children") (return-type "none") (parameters '("cairo_t*" "cr") '("GdkRegion*" "damaged_region") ) ) (define-virtual paint_background (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_paint_background") (return-type "none") (parameters '("cairo_t*" "cr") '("GdkRegion*" "damaged_region") ) ) (define-virtual paint_children (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_paint_children") (return-type "none") (parameters '("cairo_t*" "cr") '("GdkRegion*" "damaged_region") ) ) (define-method get_position (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_get_position") (return-type "none") (parameters '("HippoCanvasItem*" "child") '("int*" "x") '("int*" "y") ) ) (define-method get_children (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_get_children") (return-type "GList*") ) (define-method set_clickable (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_set_clickable") (return-type "none") (parameters '("gboolean" "clickable") ) ) (define-method is_clickable (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_is_clickable") (return-type "gboolean") ) (define-method insert_before (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_insert_before") (return-type "none") (parameters '("HippoCanvasItem*" "child") '("HippoCanvasItem*" "ref_child") '("HippoPackFlags" "flags" (default "0")) ) ) (define-method insert_after (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_insert_after") (return-type "none") (parameters '("HippoCanvasItem*" "child") '("HippoCanvasItem*" "ref_child") '("HippoPackFlags" "flags" (default "0")) ) ) (define-virtual get_content_width_request (of-object "HippoCanvasBox") (c-name "hippo_canvas_item_get_content_width_request") (return-type "none") (parameters '("int*" "min_width" (direction "out")) '("int*" "natural_width" (direction "out")) ) ) (define-virtual get_content_height_request (of-object "HippoCanvasBox") (c-name "hippo_canvas_item_get_content_height_request") (return-type "none") (parameters '("int" "for_width") '("int*" "min_height" (direction "out")) '("int*" "natural_height" (direction "out")) ) ) (define-method set_layout (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_set_layout") (parameters '("HippoCanvasLayout*" "layout") ) (return-type "none") ) (define-method find_box_child (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_find_box_child") (parameters '("HippoCanvasItem*" "child") ) (return-type "HippoCanvasBoxChild*") ) (define-method get_layout_children (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_get_layout_children") (return-type "GSList*") ) (define-method set_theme (of-object "HippoCanvasBox") (c-name "hippo_canvas_box_set_theme") (parameters '("HippoCanvasTheme*" "theme") ) ) ;; From hippo-canvas-context.h (define-function canvas_context_get_type (c-name "hippo_canvas_context_get_type") (return-type "GType") ) (define-method create_layout (of-object "HippoCanvasContext") (c-name "hippo_canvas_context_create_layout") (return-type "PangoLayout*") ) (define-method create_surface (of-object "HippoCanvasContext") (c-name "hippo_canvas_context_create_surface") (return-type "cairo_surface_t*") (parameters '("int" "content") '("int" "width") '("int" "height") ) ) (define-method load_image (of-object "HippoCanvasContext") (c-name "hippo_canvas_context_load_image") (return-type "cairo_surface_t*") (parameters '("const-char*" "image_name") ) ) (define-method get_color (of-object "HippoCanvasContext") (c-name "hippo_canvas_context_get_color") (return-type "guint32") (parameters '("HippoStockColor" "color") ) ) (define-method get_style (of-object "HippoCanvasContext") (c-name "hippo_canvas_context_get_style") (return-type "HippoCanvasStyle*") ) (define-method get_animation_manager (of-object "HippoCanvasContext") (c-name "hippo_canvas_context_get_animation_manager") (return-type "HippoAnimationManager*") ) (define-method register_widget_item (of-object "HippoCanvasContext") (c-name "hippo_canvas_context_register_widget_item") (return-type "none") (parameters '("HippoCanvasItem*" "item") ) ) (define-method unregister_widget_item (of-object "HippoCanvasContext") (c-name "hippo_canvas_context_unregister_widget_item") (return-type "none") (parameters '("HippoCanvasItem*" "item") ) ) (define-method translate_to_widget (of-object "HippoCanvasContext") (c-name "hippo_canvas_context_translate_to_widget") (return-type "none") (parameters '("HippoCanvasItem*" "item") '("int*" "x_p") '("int*" "y_p") ) ) (define-method translate_to_screen (of-object "HippoCanvasContext") (c-name "hippo_canvas_context_translate_to_screen") (return-type "none") (parameters '("HippoCanvasItem*" "item") '("int*" "x_p") '("int*" "y_p") ) ) (define-method emit_style_changed (of-object "HippoCanvasContext") (c-name "hippo_canvas_context_emit_style_changed") (return-type "none") (parameters '("gboolean" "resize_needed") ) ) ;; From hippo-canvas-gradient.h (define-function canvas_gradient_get_type (c-name "hippo_canvas_gradient_get_type") (return-type "GType") ) (define-function canvas_gradient_new (c-name "hippo_canvas_gradient_new") (is-constructor-of "HippoCanvasGradient") (return-type "HippoCanvasItem*") ) ;; From hippo-canvas-image-button.h (define-function canvas_image_button_get_type (c-name "hippo_canvas_image_button_get_type") (return-type "GType") ) (define-function canvas_image_button_new (c-name "hippo_canvas_image_button_new") (is-constructor-of "HippoCanvasImageButton") (return-type "HippoCanvasItem*") ) ;; From hippo-canvas-image.h (define-function canvas_image_get_type (c-name "hippo_canvas_image_get_type") (return-type "GType") ) (define-function canvas_image_new (c-name "hippo_canvas_image_new") (is-constructor-of "HippoCanvasImage") (return-type "HippoCanvasItem*") ) ;; From hippo-canvas-internal.h ;; From hippo-canvas-item.h (define-function canvas_item_get_type (c-name "hippo_canvas_item_get_type") (return-type "GType") ) (define-method destroy (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_destroy") (return-type "none") ) (define-method get_context (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_get_context") (return-type "HippoCanvasContext*") ) (define-method set_context (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_set_context") (return-type "none") (parameters '("HippoCanvasContext*" "context") ) ) (define-method set_parent (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_set_parent") (return-type "none") (parameters '("HippoCanvasContainer*" "container") ) ) (define-method get_parent (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_get_parent") (return-type "HippoCanvasContainer*") ) (define-method get_width_request (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_get_width_request") (return-type "none") (parameters '("int*" "min_width" (direction "out")) '("int*" "natural_width" (direction "out")) ) ) (define-method get_height_request (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_get_height_request") (return-type "none") (parameters '("int" "for_width") '("int*" "min_height" (direction "out")) '("int*" "natural_height" (direction "out")) ) ) (define-method allocate (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_allocate") (return-type "none") (parameters '("int" "width") '("int" "height") '("gboolean" "origin_changed") ) ) (define-virtual get_width_request (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_get_width_request") (return-type "none") (parameters '("int*" "min_width" (direction "out")) '("int*" "natural_width" (direction "out")) ) ) (define-virtual get_height_request (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_get_height_request") (return-type "none") (parameters '("int" "for_width") '("int*" "min_height" (direction "out")) '("int*" "natural_height" (direction "out")) ) ) (define-virtual allocate (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_allocate") (return-type "none") (parameters '("int" "width") '("int" "height") '("gboolean" "origin_changed") ) ) (define-virtual get_tooltip (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_get_tooltip") (return-type "char*") (parameters '("int" "x") '("int" "y") '("HippoRectangle*" "for_area") ) ) (define-virtual paint (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_paint") (return-type "none") (parameters '("cairo_t*" "cr") '("GdkRegion*" "damaged_region") ) ) (define-method get_allocation (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_get_allocation") (return-type "none") (parameters '("int*" "width_p") '("int*" "height_p") ) ) (define-method get_needs_request (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_get_needs_request") (return-type "gboolean") ) (define-method get_tooltip (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_get_tooltip") (return-type "char*") (parameters '("int" "x") '("int" "y") '("HippoRectangle*" "for_area") ) ) (define-method get_pointer (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_get_pointer") (return-type "HippoCanvasPointer") (parameters '("int" "x") '("int" "y") ) ) (define-method get_visible (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_get_visible") (return-type "gboolean") ) (define-method set_visible (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_set_visible") (return-type "none") (parameters '("gboolean" "visible") ) ) (define-method emit_destroy (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_emit_destroy") (return-type "none") ) (define-method emit_button_press_event (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_emit_button_press_event") (return-type "gboolean") (parameters '("int" "x") '("int" "y") '("int" "button") '("int" "x11_x_root") '("int" "x11_y_root") '("guint32" "x11_time") '("int" "count") ) ) (define-method emit_button_release_event (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_emit_button_release_event") (return-type "gboolean") (parameters '("int" "x") '("int" "y") '("int" "button") '("int" "x11_x_root") '("int" "x11_y_root") '("guint32" "x11_time") ) ) (define-method emit_motion_notify_event (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_emit_motion_notify_event") (return-type "gboolean") (parameters '("int" "x") '("int" "y") '("HippoMotionDetail" "detail") ) ) (define-method emit_key_press_event (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_emit_key_press_event") (return-type "gboolean") (parameters '("HippoKey" "key") '("gunichar" "character") '("guint" "modifiers") ) ) (define-method emit_activated (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_emit_activated") (return-type "none") ) (define-method emit_paint_needed (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_emit_paint_needed") (return-type "none") (parameters '("int" "x") '("int" "y") '("int" "width") '("int" "height") ) ) (define-method emit_tooltip_changed (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_emit_tooltip_changed") (return-type "none") ) (define-method emit_request_changed (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_emit_request_changed") (return-type "none") ) (define-method process_event (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_process_event") (return-type "gboolean") (parameters '("HippoEvent*" "event") '("int" "allocation_x") '("int" "allocation_y") ) ) (define-method process_paint (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_process_paint") (return-type "none") (parameters '("cairo_t*" "cr") '("GdkRegion*" "damaged_region") '("int" "allocation_x") '("int" "allocation_y") ) ) (define-virtual button_press_event (of-object "HippoCanvasItem") (return-type "gboolean") (parameters '("HippoEvent*" "event") ) ) (define-virtual button_release_event (of-object "HippoCanvasItem") (return-type "gboolean") (parameters '("HippoEvent*" "event") ) ) (define-virtual scroll_event (of-object "HippoCanvasItem") (return-type "gboolean") (parameters '("HippoEvent*" "event") ) ) (define-virtual motion_notify_event (of-object "HippoCanvasItem") (return-type "gboolean") (parameters '("HippoEvent*" "event") ) ) (define-virtual get_context (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_get_context") (return-type "HippoCanvasContext*") ) (define-virtual set_context (of-object "HippoCanvasItem") (c-name "hippo_canvas_item_set_context") (return-type "none") (parameters '("HippoCanvasContext*" "context") ) ) ;; From hippo-canvas-layout.h (define-interface CanvasLayout (in-module "Hippo") (c-name "HippoCanvasLayout") (gtype-id "HIPPO_TYPE_CANVAS_LAYOUT") ) (define-virtual set_box (of-object "HippoCanvasLayout") (c-name "hippo_canvas_layout_set_box") (return-type "none") (parameters '("HippoCanvasBox*" "box") ) ) (define-virtual get_width_request (of-object "HippoCanvasLayout") (c-name "hippo_canvas_layout_get_width_request") (return-type "none") (parameters '("int*" "min_width" (direction "out")) '("int*" "natural_width" (direction "out")) ) ) (define-virtual get_height_request (of-object "HippoCanvasLayout") (c-name "hippo_canvas_layout_get_height_request") (return-type "none") (parameters '("int" "for_width") '("int*" "min_height" (direction "out")) '("int*" "natural_height" (direction "out")) ) ) (define-virtual allocate (of-object "HippoCanvasLayout") (c-name "hippo_canvas_layout_allocate") (return-type "none") (parameters '("int" "x") '("int" "y") '("int" "width") '("int" "height") '("int" "requested_width") '("int" "requested_height") '("gboolean" "origin_changed") ) ) ;; From hippo-canvas-link.h (define-function canvas_link_get_type (c-name "hippo_canvas_link_get_type") (return-type "GType") ) (define-function canvas_link_new (c-name "hippo_canvas_link_new") (is-constructor-of "HippoCanvasLink") (return-type "HippoCanvasItem*") ) ;; From hippo-canvas-style.h (define-function canvas_style_get_type (c-name "hippo_canvas_style_get_type") (return-type "GType") ) (define-method get_theme (of-object "HippoCanvasStyle") (c-name "hippo_canvas_style_get_theme") (return-type "HippoCanvasTheme*") ) (define-method get_color (of-object "HippoCanvasStyle") (c-name "hippo_canvas_style_get_color") (return-type "gboolean") (parameters '("const-char*" "property_name") '("gboolean" "inherit") '("guint32*" "color") ) ) (define-method get_foreground_color (of-object "HippoCanvasStyle") (c-name "hippo_canvas_style_get_foreground_color") (return-type "guint32") ) (define-method get_background_color (of-object "HippoCanvasStyle") (c-name "hippo_canvas_style_get_background_color") (return-type "guint32") ) (define-method get_background_theme_image (of-object "HippoCanvasStyle") (c-name "hippo_canvas_style_get_background_theme_image") (return-type "HippoCanvasThemeImage*") ) (define-method get_double (of-object "HippoCanvasStyle") (c-name "hippo_canvas_style_get_double") (return-type "gboolean") (parameters '("const-char*" "property_name") '("gboolean" "inherit") '("double*" "color") ) ) (define-method get_font (of-object "HippoCanvasStyle") (c-name "hippo_canvas_style_get_font") (return-type "PangoFontDescription*") ) (define-method paint (of-object "HippoCanvasStyle") (c-name "hippo_canvas_style_paint") (return-type "gboolean") (parameters '("cairo_t*" "cr") '("const-char*" "name") '("double" "x") '("double" "y") '("double" "width") '("double" "height") ) ) ;; From hippo-canvas-test.h (define-function canvas_test_get_root (c-name "hippo_canvas_test_get_root") (return-type "HippoCanvasItem*") ) ;; From hippo-canvas-text.h (define-function canvas_text_get_type (c-name "hippo_canvas_text_get_type") (return-type "GType") ) (define-function canvas_text_new (c-name "hippo_canvas_text_new") (is-constructor-of "HippoCanvasText") (return-type "HippoCanvasItem*") ) ;; From hippo-canvas-theme-engine.h (define-function canvas_theme_engine_get_type (c-name "hippo_canvas_theme_engine_get_type") (return-type "GType") ) (define-virtual paint (of-object "HippoCanvasThemeEngine") (return-type "gboolean") (parameters '("HippoCanvasStyle*" "style") '("cairo_t*" "cr") '("const-char*" "name") '("double" "x") '("double" "y") '("double" "width") '("double" "height") ) ) ;; From hippo-canvas-theme.h (define-function canvas_theme_get_type (c-name "hippo_canvas_theme_get_type") (return-type "GType") ) (define-function canvas_theme_new (c-name "hippo_canvas_theme_new") (is-constructor-of "HippoCanvasTheme") (return-type "HippoCanvasTheme*") (properties '("theme_engine" (optional)) '("application_stylesheet" (optional)) '("theme_stylesheet" (optional)) '("default_stylesheet" (optional)) ) ) (define-method get_theme_engine (of-object "HippoCanvasTheme") (c-name "hippo_canvas_theme_get_theme_engine") (return-type "HippoCanvasThemeEngine*") ) ;; From hippo-canvas-theme-image.h (define-method render (of-object "HippoCanvasThemeImage") (c-name "hippo_canvas_theme_image_render") (return-type "none") (parameters '("cairo_t*" "cr") '("int" "x") '("int" "y") '("int" "width") '("int" "height") ) ) ;; From hippo-canvas-widgets.h (define-function button_get_type (c-name "hippo_button_get_type") (return-type "GType") ) (define-function entry_get_type (c-name "hippo_entry_get_type") (return-type "GType") ) (define-function scrollbars_get_type (c-name "hippo_scrollbars_get_type") (return-type "GType") ) (define-function canvas_button_new (c-name "hippo_canvas_button_new") (is-constructor-of "HippoCanvasButton") (return-type "HippoCanvasItem*") ) (define-function canvas_entry_new (c-name "hippo_canvas_entry_new") (is-constructor-of "HippoCanvasEntry") (return-type "HippoCanvasItem*") ) (define-method get_position (of-object "HippoCanvasEntry") (c-name "hippo_canvas_entry_get_position") (return-type "guint") ) (define-method set_position (of-object "HippoCanvasEntry") (c-name "hippo_canvas_entry_set_position") (return-type "none") (parameters '("guint" "pos") ) ) (define-function canvas_scrollbars_new (c-name "hippo_canvas_scrollbars_new") (is-constructor-of "HippoCanvasScrollbars") (return-type "HippoCanvasItem*") ) (define-method set_root (of-object "HippoCanvasScrollbars") (c-name "hippo_canvas_scrollbars_set_root") (return-type "none") (parameters '("HippoCanvasItem*" "item") ) ) (define-method set_policy (of-object "HippoCanvasScrollbars") (c-name "hippo_canvas_scrollbars_set_policy") (return-type "none") (parameters '("HippoOrientation" "orientation") '("HippoScrollbarPolicy" "policy") ) ) ;; From hippo-event.h (define-function event_get_type (c-name "hippo_event_get_type") (return-type "GType") ) (define-method copy (of-object "HippoEvent") (c-name "hippo_event_copy") (return-type "HippoEvent*") ) (define-function event_free (c-name "hippo_event_free") (return-type "none") (parameters '("HippoRectangle*" "event") ) ) ;; From hippo-graphics.h (define-function rectangle_get_type (c-name "hippo_rectangle_get_type") (return-type "GType") ) (define-function rectangle_new (c-name "hippo_rectangle_new") (is-constructor-of "HippoRectangle") (return-type "HippoRectangle*") ) (define-method intersect (of-object "HippoRectangle") (c-name "hippo_rectangle_intersect") (return-type "gboolean") (parameters '("const-HippoRectangle*" "src2") '("HippoRectangle*" "dest") ) ) (define-method equal (of-object "HippoRectangle") (c-name "hippo_rectangle_equal") (return-type "gboolean") (parameters '("const-HippoRectangle*" "r2") ) ) (define-method copy (of-object "HippoRectangle") (c-name "hippo_rectangle_copy") (return-type "HippoRectangle*") ) (define-method free (of-object "HippoRectangle") (c-name "hippo_rectangle_free") (return-type "none") ) (define-function cairo_set_source_rgba32 (c-name "hippo_cairo_set_source_rgba32") (return-type "none") (parameters '("cairo_t*" "cr") '("guint32" "color") ) ) (define-function cairo_pattern_add_stop_rgba32 (c-name "hippo_cairo_pattern_add_stop_rgba32") (return-type "none") (parameters '("cairo_pattern_t*" "pattern") '("double" "offset") '("guint32" "color") ) ) (define-function cairo_surface_from_gdk_pixbuf (c-name "hippo_cairo_surface_from_gdk_pixbuf") (return-type "cairo_surface_t*") (parameters '("GdkPixbuf*" "pixbuf") ) ) (define-function get_canvas_for_item (c-name "hippo_canvas_get_canvas_for_item") (return-type "GtkWidget*") (parameters '("HippoCanvasItem*" "item") ) ) hippo-canvas-0.3.1/python/canvas-box-child.c0000664000076400007640000001643711366237063015667 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include "canvas-box-child.h" typedef struct { PyObject_HEAD HippoCanvasBoxChild *child; PyObject *dict; } PyHippoCanvasBoxChild; static int no_constructor(PyObject *self, PyObject *args, PyObject *kwargs) { PyErr_SetString(PyExc_NotImplementedError, "Cannot create a new HippoCanvasBoxChild"); return -1; } static GQuark pyhippo_proxy_quark(void) { static GQuark quark = 0; if (quark == 0) quark = g_quark_from_static_string("pyhippo-proxy"); return quark; } static void py_hippo_canvas_box_child_dealloc(PyHippoCanvasBoxChild* self) { if (self->child != NULL) { g_warning("Python proxy freed before box child"); hippo_canvas_box_child_set_qdata(self->child, pyhippo_proxy_quark(), NULL, NULL); } Py_CLEAR(self->dict); self->ob_type->tp_free(self); } static PyObject * _wrap_hippo_canvas_box_child_get_width_request(PyHippoCanvasBoxChild *self) { int min_width = 0; int natural_width = 0; if (self->child == NULL) { PyErr_SetString(PyExc_RuntimeError, "HippoCanvasBoxChild is destroyed"); return NULL; } hippo_canvas_box_child_get_width_request(self->child, &min_width, &natural_width); return Py_BuildValue("(ii)", min_width, natural_width); } static PyObject * _wrap_hippo_canvas_box_child_get_height_request(PyHippoCanvasBoxChild *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "for_width", NULL }; int min_height = 0; int natural_height = 0; int for_width; if (self->child == NULL) { PyErr_SetString(PyExc_RuntimeError, "HippoCanvasBoxChild is destroyed"); return NULL; } if (!PyArg_ParseTupleAndKeywords(args, kwargs,"i:HippoCanvasBoxChild.get_height_request", kwlist, &for_width)) return NULL; hippo_canvas_box_child_get_height_request(self->child, for_width, &min_height, &natural_height); return Py_BuildValue("(ii)", min_height, natural_height); } static PyObject * _wrap_hippo_canvas_box_child_allocate(PyHippoCanvasBoxChild *self, PyObject *args, PyObject *kwargs) { static char *kwlist[] = { "x", "y", "width", "height", "origin_changed", NULL }; int x, y, width, height, origin_changed; if (self->child == NULL) { PyErr_SetString(PyExc_RuntimeError, "HippoCanvasBoxChild is destroyed"); return NULL; } if (!PyArg_ParseTupleAndKeywords(args, kwargs,"iiiii:HippoCanvasBoxChild.allocate", kwlist, &x, &y, &width, &height, &origin_changed)) return NULL; hippo_canvas_box_child_allocate(self->child, x, y, width, height, origin_changed); Py_INCREF(Py_None); return Py_None; } static const PyMethodDef _PyHippoCanvasBoxChild_methods[] = { { "get_width_request", (PyCFunction)_wrap_hippo_canvas_box_child_get_width_request, METH_NOARGS, NULL }, { "get_height_request", (PyCFunction)_wrap_hippo_canvas_box_child_get_height_request, METH_VARARGS|METH_KEYWORDS, NULL }, { "allocate", (PyCFunction)_wrap_hippo_canvas_box_child_allocate, METH_VARARGS|METH_KEYWORDS, NULL }, { NULL, NULL, 0, NULL } }; static PyObject * _wrap_hippo_canvas_box_child__get_item(PyObject *self, void *closure) { PyHippoCanvasBoxChild *py_child; py_child = (PyHippoCanvasBoxChild*) self; g_assert(py_child->child); /* pygobject_new handles NULL checking */ return pygobject_new((GObject*) py_child->child->item); } static PyObject * _wrap_hippo_canvas_box_child__get_visible(PyObject *self, void *closure) { PyHippoCanvasBoxChild *py_child; py_child = (PyHippoCanvasBoxChild*) self; g_assert(py_child->child); return PyBool_FromLong(py_child->child->visible); } static const PyGetSetDef hippo_canvas_box_child_getsets[] = { { "item", (getter)_wrap_hippo_canvas_box_child__get_item, (setter)0 }, { "visible", (getter)_wrap_hippo_canvas_box_child__get_visible, (setter)0 }, { NULL, (getter)0, (setter)0 }, }; PyTypeObject G_GNUC_INTERNAL PyHippoCanvasBoxChild_Type = { PyObject_HEAD_INIT(NULL) 0, /* ob_size */ "hippo.CanvasBoxChild", /* tp_name */ sizeof(PyHippoCanvasBoxChild), /* tp_basicsize */ 0, /* tp_itemsize */ /* methods */ (destructor)py_hippo_canvas_box_child_dealloc, /* tp_dealloc */ (printfunc)0, /* tp_print */ (getattrfunc)0, /* tp_getattr */ (setattrfunc)0, /* tp_setattr */ (cmpfunc)0, /* tp_compare */ (reprfunc)0, /* tp_repr */ (PyNumberMethods*)0, /* tp_as_number */ (PySequenceMethods*)0, /* tp_as_sequence */ (PyMappingMethods*)0, /* tp_as_mapping */ (hashfunc)0, /* tp_hash */ (ternaryfunc)0, /* tp_call */ (reprfunc)0, /* tp_str */ (getattrofunc)0, /* tp_getattro */ (setattrofunc)0, /* tp_setattro */ (PyBufferProcs*)0, /* tp_as_buffer */ Py_TPFLAGS_HAVE_CLASS, /* 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 */ (struct PyMethodDef*)_PyHippoCanvasBoxChild_methods, /* tp_methods */ (struct PyMemberDef*)0, /* tp_members */ (struct PyGetSetDef*)hippo_canvas_box_child_getsets, /* tp_getset */ NULL, /* tp_base */ NULL, /* tp_dict */ (descrgetfunc)0, /* tp_descr_get */ (descrsetfunc)0, /* tp_descr_set */ offsetof(PyHippoCanvasBoxChild, dict), /* tp_dictoffset */ (initproc)no_constructor, /* tp_init */ (allocfunc)0, /* tp_alloc */ (newfunc)0, /* tp_new */ (freefunc)0, /* tp_free */ (inquiry)0 /* tp_is_gc */ }; static void free_python_proxy(void *data) { PyGILState_STATE state = pyg_gil_state_ensure(); PyHippoCanvasBoxChild *obj = data; obj->child = NULL; Py_DECREF(obj); pyg_gil_state_release(state); } PyObject * py_hippo_canvas_box_child_new(HippoCanvasBoxChild *child) { PyHippoCanvasBoxChild *obj = hippo_canvas_box_child_get_qdata(child, pyhippo_proxy_quark()); if (obj == NULL) { obj = PyObject_NEW(PyHippoCanvasBoxChild, &PyHippoCanvasBoxChild_Type); obj->child = child; obj->dict = NULL; hippo_canvas_box_child_set_qdata(child, pyhippo_proxy_quark(), obj, free_python_proxy); } Py_INCREF(obj); return (PyObject *)obj; } hippo-canvas-0.3.1/python/canvas-box-child.h0000664000076400007640000000060711366237063015664 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __CANVAS_BOX_CHILD_H__ #define __CANVAS_BOX_CHILD_H__ #include #include "pygobject.h" #include G_BEGIN_DECLS extern PyTypeObject PyHippoCanvasBoxChild_Type; PyObject *py_hippo_canvas_box_child_new(HippoCanvasBoxChild *child); G_END_DECLS #endif /* __CANVAS_BOX_CHILD_H__ */ hippo-canvas-0.3.1/ChangeLog0000664000076400007640000000015711366237063012622 000000000000002007-06-06 Havoc Pennington * Makefile.am: add gtk-doc build stuff, patch from Matthias hippo-canvas-0.3.1/COPYING0000664000076400007640000000002311366237063012073 00000000000000Please see LICENSE hippo-canvas-0.3.1/INSTALL0000644000076400007640000003633211366237216012103 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. hippo-canvas-0.3.1/TODO0000664000076400007640000000574111366237063011544 00000000000000List of possible future enhancements / likely directions, we are doing these "as needed" - Avoid having to always align images image item should maybe default to center alignment instead of fill like most items do - Allow composite items to be activated/prelighted e.g. in one place in mugshot we have a CLOSE link and then an X icon next to it; should be able to make the box containing those two a composite button, where the whole thing prelights as a whole, and you can connect to "activated" on the whole thing. One way to do this would be to make HippoCanvasBox::clickable into a settable property; and if a box is clickable, do not forward click events to its children, instead just activate the parent. This doesn't address prelighting the composite as a whole though. - Clean up cascading styles Right now affect_font_desc / affect_color / get_color are on HippoCanvasContext, they should probably all be on a separate interface (HippoStylist?) or something like that. Then HippoStyle would also implement this interface perhaps. Or maybe these go on HippoCanvasContainer somehow? - Set class-default font and colors if you allow setting a box to "gray 11px" for example, then the CanvasLink items in there will override the gray with blue, since links default to blue. So each item should first use its own props, then its context's props, then its class props, then its parent class props. There's a little hack around this right now with HippoCanvasBoxClass::default_color - The return value of button press event needs to be known by the parent in advance. If the parent is going to handle the click if the child doesn't, then it needs to be able to display prelights and change the mouse cursor and so forth. One approach might be to generalize get_pointer to return some kind of "what-this-item-handles-info" (and enforce it by not delivering events the item doesn't say it will handle) Or get_pointer and get_tooltip could be merged into a sort of "hover state" indicating info about the hover point. The "handles click" flag is probably per-mouse-button. - To handle tooltips correctly, a widget or CanvasBox displaying a canvas item really needs a unique ID for a each different logical zone that's returned. Both the tooltip text and the for_area can change while the pointer is still inside the same logical element of the display. This could be done by having in a "hover state" the desired mouse pointer, tooltip text, tooltip area, and an "owner" made up of a pointer (usually a canvas item pointer) and an integer id. - Summarizing the last two ideas, an ugly version might be: struct { HippoCanvasPointer pointer; char *tooltip; HippoRectangle area; void *owner_id_pointer_part; int owner_id_int_part; } ButtonOneHandlerInfo; /* returns true if it handles */ gboolean (* get_button_one_handling) (HippoCanvasItem *item, ButtonOneHandlingInfo *info_p); hippo-canvas-0.3.1/LICENSE0000664000076400007640000006131411366237063012057 00000000000000 GNU LIBRARY GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 library GPL. It is numbered 2 because it goes with version 2 of the ordinary GPL.] 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 Library General Public License, applies to some specially designated Free Software Foundation software, and to any other libraries whose authors decide to use it. You can use it for your libraries, too. When we speak of free software, we are referring to freedom, 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 or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the 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 a program 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. Our method of protecting your rights has two steps: (1) copyright the library, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the library. Also, for each distributor's protection, we want to make certain that everyone understands that there is no warranty for this free library. If the library is modified by someone else and passed on, we want its recipients to know that what they have is not the original version, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that companies distributing free software will individually obtain patent licenses, thus in effect transforming the program into proprietary software. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License, which was designed for utility programs. This license, the GNU Library General Public License, applies to certain designated libraries. This license is quite different from the ordinary one; be sure to read it in full, and don't assume that anything in it is the same as in the ordinary license. The reason we have a separate public license for some libraries is that they blur the distinction we usually make between modifying or adding to a program and simply using it. Linking a program with a library, without changing the library, is in some sense simply using the library, and is analogous to running a utility program or application program. However, in a textual and legal sense, the linked executable is a combined work, a derivative of the original library, and the ordinary General Public License treats it as such. Because of this blurred distinction, using the ordinary General Public License for libraries did not effectively promote software sharing, because most developers did not use the libraries. We concluded that weaker conditions might promote sharing better. However, unrestricted linking of non-free programs would deprive the users of those programs of all benefit from the free status of the libraries themselves. This Library General Public License is intended to permit developers of non-free programs to use free libraries, while preserving your freedom as a user of such programs to change the free libraries that are incorporated in them. (We have not seen how to achieve this as regards changes in header files, but we have achieved it as regards changes in the actual functions of the Library.) The hope is that this will lead to faster development of free libraries. 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, while the latter only works together with the library. Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one. GNU LIBRARY GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Library 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 compile 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) 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. c) 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. d) 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 source code 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 to 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 Library 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 Library General Public License as published by the Free Software Foundation; either version 2 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 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! hippo-canvas-0.3.1/NEWS0000664000076400007640000000004511366237063011543 00000000000000See http://live.gnome.org/HippoCanvashippo-canvas-0.3.1/hippo-canvas-1.pc.in0000664000076400007640000000036711366237063014532 00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: hippo-canvas Description: Crossplatform canvas Version: @VERSION@ Requires: gtk+-2.0 Libs: -L${libdir} -lhippocanvas-1 Cflags: -I${includedir}/hippo-canvas-1 hippo-canvas-0.3.1/Makefile.in0000664000076400007640000027101611404424200013101 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@ # This file is included both by the Mugshot client and by the stand-alone Mugshot # library to avoid listing files in duplicate places # 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@ target_triplet = @target@ DIST_COMMON = README $(am__configure_deps) \ $(libhippocanvasinclude_HEADERS) \ $(srcdir)/Makefile-canvas-sources.am \ $(srcdir)/Makefile-introspection.am \ $(srcdir)/Makefile-python.am $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/hippo-canvas-1.pc.in \ $(top_srcdir)/config/config.h.in $(top_srcdir)/configure \ AUTHORS COPYING ChangeLog INSTALL NEWS TODO \ config/config.guess config/config.sub config/depcomp \ config/install-sh config/ltmain.sh config/missing @HAVE_PYTHON_TRUE@am__append_1 = hippo.c @HAVE_PYTHON_TRUE@am__append_2 = $(PYTHONDEFS_FILES) @HAVE_INTROSPECTION_TRUE@am__append_3 = $(gir_DATA) $(typelib_DATA) subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(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 = $(top_builddir)/config/config.h CONFIG_CLEAN_FILES = hippo-canvas-1.pc 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)$(libdir)" "$(DESTDIR)$(pyhippodir)" \ "$(DESTDIR)$(girdir)" "$(DESTDIR)$(pkgconfigdir)" \ "$(DESTDIR)$(typelibdir)" \ "$(DESTDIR)$(libhippocanvasincludedir)" LTLIBRARIES = $(lib_LTLIBRARIES) $(pyhippo_LTLIBRARIES) am__DEPENDENCIES_1 = @HAVE_PYTHON_TRUE@hippo_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ @HAVE_PYTHON_TRUE@ $(am__DEPENDENCIES_1) \ @HAVE_PYTHON_TRUE@ $(top_builddir)/libhippocanvas-1.la am__hippo_la_SOURCES_DIST = $(PYTHONSRCDIR)/canvas-box-child.c \ $(PYTHONSRCDIR)/canvas-box-child.h \ $(PYTHONSRCDIR)/hippomodule.c @HAVE_PYTHON_TRUE@am_hippo_la_OBJECTS = hippo_la-canvas-box-child.lo \ @HAVE_PYTHON_TRUE@ hippo_la-hippomodule.lo @HAVE_PYTHON_TRUE@nodist_hippo_la_OBJECTS = hippo_la-hippo.lo hippo_la_OBJECTS = $(am_hippo_la_OBJECTS) $(nodist_hippo_la_OBJECTS) hippo_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(hippo_la_LDFLAGS) \ $(LDFLAGS) -o $@ @HAVE_PYTHON_TRUE@am_hippo_la_rpath = -rpath $(pyhippodir) libhippocanvas_1_la_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_1 = am__objects_2 = $(am__objects_1) \ libhippocanvas_1_la-hippo-animation.lo \ libhippocanvas_1_la-hippo-animation-manager.lo \ libhippocanvas_1_la-hippo-canvas-box.lo \ libhippocanvas_1_la-hippo-canvas-container.lo \ libhippocanvas_1_la-hippo-canvas-context.lo \ libhippocanvas_1_la-hippo-canvas-gradient.lo \ libhippocanvas_1_la-hippo-canvas-image.lo \ libhippocanvas_1_la-hippo-canvas-image-button.lo \ libhippocanvas_1_la-hippo-canvas-item.lo \ libhippocanvas_1_la-hippo-canvas-layout.lo \ libhippocanvas_1_la-hippo-canvas-link.lo \ libhippocanvas_1_la-hippo-canvas-style.lo \ libhippocanvas_1_la-hippo-canvas-text.lo \ libhippocanvas_1_la-hippo-canvas-test.lo \ libhippocanvas_1_la-hippo-canvas-theme.lo \ libhippocanvas_1_la-hippo-canvas-theme-engine.lo \ libhippocanvas_1_la-hippo-canvas-theme-image.lo \ libhippocanvas_1_la-hippo-canvas-util.lo \ libhippocanvas_1_la-hippo-event.lo \ libhippocanvas_1_la-hippo-graphics.lo am__objects_3 = $(am__objects_1) libhippocanvas_1_la-hippo-canvas.lo \ libhippocanvas_1_la-hippo-canvas-window.lo \ libhippocanvas_1_la-hippo-canvas-helper.lo \ libhippocanvas_1_la-hippo-canvas-window-child.lo \ libhippocanvas_1_la-hippo-canvas-widget.lo \ libhippocanvas_1_la-hippo-canvas-widgets.lo am_libhippocanvas_1_la_OBJECTS = $(am__objects_2) $(am__objects_3) am__objects_4 = libhippocanvas_1_la-hippo-canvas-marshal.lo am__objects_5 = libhippocanvas_1_la-hippo-canvas-type-builtins.lo am__objects_6 = $(am__objects_1) $(am__objects_4) $(am__objects_1) \ $(am__objects_5) nodist_libhippocanvas_1_la_OBJECTS = $(am__objects_6) libhippocanvas_1_la_OBJECTS = $(am_libhippocanvas_1_la_OBJECTS) \ $(nodist_libhippocanvas_1_la_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/config depcomp = $(SHELL) $(top_srcdir)/config/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 = $(hippo_la_SOURCES) $(nodist_hippo_la_SOURCES) \ $(libhippocanvas_1_la_SOURCES) \ $(nodist_libhippocanvas_1_la_SOURCES) DIST_SOURCES = $(am__hippo_la_SOURCES_DIST) \ $(libhippocanvas_1_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 = $(gir_DATA) $(pkgconfig_DATA) $(typelib_DATA) HEADERS = $(libhippocanvasinclude_HEADERS) 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 = $(SUBDIRS) 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@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_MKENUMS = @GLIB_MKENUMS@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBHIPPOCANVAS_CFLAGS = @LIBHIPPOCANVAS_CFLAGS@ LIBHIPPOCANVAS_LIBS = @LIBHIPPOCANVAS_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ 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_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PYGTK_CODEGEN = @PYGTK_CODEGEN@ PYGTK_DEFSDIR = @PYGTK_DEFSDIR@ PYTHON = @PYTHON@ PYTHON_BINDINGS_CFLAGS = @PYTHON_BINDINGS_CFLAGS@ PYTHON_BINDINGS_LIBS = @PYTHON_BINDINGS_LIBS@ 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@ VERSION = @VERSION@ 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 = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = . docs CANVASSRCDIR = $(top_srcdir) CANVASCOMMONSRCDIR = $(top_srcdir)/common/hippo LINUXSRCDIR = $(top_srcdir)/linux/hippo pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = hippo-canvas-1.pc # note that target-specific CPPFLAGS will REPLACE # not augment these default flags by default, # so we manually put AM_CPPFLAGS in the target flags AM_CPPFLAGS = -DHIPPO_COMPILATION -DHIPPO_OS_LINUX -I$(top_builddir)/config -I$(CANVASSRCDIR) -I$(CANVASCOMMONSRCDIR) -I$(LINUXSRCDIR) # the "config" dir seems like a convenient place that's already # in everyone's include path ... I dunno BUILT_SRC_DIR = $(top_builddir)/config/hippo-canvas # Generated marshallers and enums go into this directory as well MARSHAL_DIR = $(BUILT_SRC_DIR) EXTRA_DIST = LICENSE hippo-canvas-1.pc.in docs/Makefile.am \ $(CANVAS_MARSHAL_LIST) $(CANVAS_ENUMS_HEADER) \ $(CANVAS_ENUMS_BODY) $(am__append_2) # These are added to using += in the included files lib_LTLIBRARIES = libhippocanvas-1.la CLEANFILES = $(am__append_1) $(am__append_3) DISTCLEANFILES = MAINTAINERCLEANFILES = $(CANVAS_BUILT_SOURCEFILES) $(STAMPS) BUILT_SOURCES = $(CANVAS_BUILT_SOURCEFILES) libhippocanvas_1_la_CPPFLAGS = \ $(AM_CPPFLAGS) \ -I $(MARSHAL_DIR) \ -I $(top_srcdir)/common \ -I $(top_srcdir)/linux \ -I common/hippo \ $(LIBHIPPOCANVAS_CFLAGS) libhippocanvas_1_la_LIBADD = \ $(LIBHIPPOCANVAS_LIBS) CANVAS_MARSHAL_LIST = $(CANVASSRCDIR)/common/hippo/hippo-canvas-marshal.list CANVAS_MARSHAL_HEADER = $(MARSHAL_DIR)/hippo-canvas-marshal.h CANVAS_MARSHAL_BODY = $(MARSHAL_DIR)/hippo-canvas-marshal.c CANVAS_ENUMS_HEADER = $(CANVASSRCDIR)/common/hippo/hippo-canvas-type-builtins.h CANVAS_ENUMS_BODY = $(CANVASSRCDIR)/common/hippo/hippo-canvas-type-builtins.c CANVAS_ENUMS_HEADER_STAMP = $(CANVASSRCDIR)/common/hippo/stamp-hippo-canvas-type-builtins.h CANVAS_ENUMS_BODY_STAMP = $(CANVASSRCDIR)/common/hippo/stamp-hippo-canvas-type-builtins.c STAMPS = \ $(CANVAS_ENUMS_BODY_STAMP) \ $(CANVAS_ENUMS_HEADER_STAMP) COMMON_CANVAS_HEADERFILES = \ $(CANVASSRCDIR)/common/hippo/hippo-animation.h \ $(CANVASSRCDIR)/common/hippo/hippo-animation-manager.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-box.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-container.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-context.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-gradient.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-image.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-image-button.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-item.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-layout.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-link.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-style.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-text.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-theme.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-theme-engine.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-theme-image.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-widgets.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-util.h \ $(CANVASSRCDIR)/common/hippo/hippo-event.h \ $(CANVASSRCDIR)/common/hippo/hippo-graphics.h LINUX_CANVAS_HEADERFILES = \ $(CANVASSRCDIR)/linux/hippo/hippo-canvas.h \ $(CANVASSRCDIR)/linux/hippo/hippo-canvas-window.h \ $(CANVASSRCDIR)/linux/hippo/hippo-canvas-widget.h COMMON_CANVAS_SOURCEFILES = \ $(COMMON_CANVAS_HEADERFILES) \ $(CANVASSRCDIR)/common/hippo/hippo-animation.c \ $(CANVASSRCDIR)/common/hippo/hippo-animation-manager.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-internal.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-box.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-container.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-context.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-gradient.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-image.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-image-button.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-item.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-layout.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-link.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-style.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-text.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-test.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-test.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-theme.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-theme-engine.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-theme-image.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-theme-internal.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-util.c \ $(CANVASSRCDIR)/common/hippo/hippo-event.c \ $(CANVASSRCDIR)/common/hippo/hippo-graphics.c LINUX_CANVAS_SOURCEFILES = \ $(LINUX_CANVAS_HEADERFILES) \ $(CANVASSRCDIR)/linux/hippo/hippo-canvas.c \ $(CANVASSRCDIR)/linux/hippo/hippo-canvas-window.c \ $(CANVASSRCDIR)/linux/hippo/hippo-canvas-helper.c \ $(CANVASSRCDIR)/linux/hippo/hippo-canvas-helper.h \ $(CANVASSRCDIR)/linux/hippo/hippo-canvas-window-child.c \ $(CANVASSRCDIR)/linux/hippo/hippo-canvas-window-child.h \ $(CANVASSRCDIR)/linux/hippo/hippo-canvas-widget.c \ $(CANVASSRCDIR)/linux/hippo/hippo-canvas-widgets.c CANVAS_BUILT_SOURCEFILES = \ $(CANVAS_MARSHAL_HEADER) \ $(CANVAS_MARSHAL_BODY) \ $(CANVAS_ENUMS_HEADER) \ $(CANVAS_ENUMS_BODY) libhippocanvasincludedir = $(includedir)/hippo-canvas-1/hippo libhippocanvasinclude_HEADERS = $(COMMON_CANVAS_HEADERFILES) $(LINUX_CANVAS_HEADERFILES) libhippocanvas_1_la_SOURCES = $(COMMON_CANVAS_SOURCEFILES) $(LINUX_CANVAS_SOURCEFILES) nodist_libhippocanvas_1_la_SOURCES = $(CANVAS_BUILT_SOURCEFILES) @HAVE_PYTHON_TRUE@hippo_la_CPPFLAGS = \ @HAVE_PYTHON_TRUE@ $(AM_CPPFLAGS) \ @HAVE_PYTHON_TRUE@ -I $(top_srcdir)/common \ @HAVE_PYTHON_TRUE@ -I $(top_srcdir)/linux \ @HAVE_PYTHON_TRUE@ -I $(top_srcdir)/python \ @HAVE_PYTHON_TRUE@ $(PYTHON_INCLUDES) \ @HAVE_PYTHON_TRUE@ $(PYTHON_BINDINGS_CFLAGS) \ @HAVE_PYTHON_TRUE@ $(PYCAIRO_CFLAGS) \ @HAVE_PYTHON_TRUE@ $(LIBHIPPOCANVAS_CFLAGS) @HAVE_PYTHON_TRUE@PYTHONSRCDIR = $(top_srcdir)/python @HAVE_PYTHON_TRUE@pyhippodir = $(pyexecdir) @HAVE_PYTHON_TRUE@pyhippo_LTLIBRARIES = hippo.la @HAVE_PYTHON_TRUE@hippo_la_LDFLAGS = -module -avoid-version @HAVE_PYTHON_TRUE@hippo_la_LIBADD = \ @HAVE_PYTHON_TRUE@ $(PYTHON_BINDINGS_LIBS) \ @HAVE_PYTHON_TRUE@ $(LIBHIPPOCANVAS_LIBS) \ @HAVE_PYTHON_TRUE@ $(top_builddir)/libhippocanvas-1.la @HAVE_PYTHON_TRUE@hippo_la_SOURCES = \ @HAVE_PYTHON_TRUE@ $(PYTHONSRCDIR)/canvas-box-child.c \ @HAVE_PYTHON_TRUE@ $(PYTHONSRCDIR)/canvas-box-child.h \ @HAVE_PYTHON_TRUE@ $(PYTHONSRCDIR)/hippomodule.c @HAVE_PYTHON_TRUE@nodist_hippo_la_SOURCES = \ @HAVE_PYTHON_TRUE@ hippo.c @HAVE_PYTHON_TRUE@PYTHONDEFS_FILES = \ @HAVE_PYTHON_TRUE@ $(PYTHONSRCDIR)/hippo.defs \ @HAVE_PYTHON_TRUE@ $(PYTHONSRCDIR)/hippo.override \ @HAVE_PYTHON_TRUE@ $(PYTHONSRCDIR)/arg-types.py @HAVE_INTROSPECTION_TRUE@girdir = $(datadir)/gir @HAVE_INTROSPECTION_TRUE@gir_DATA = Hippo-1.0.gir @HAVE_INTROSPECTION_TRUE@typelibdir = $(INTROSPECTION_TYPELIBDIR) @HAVE_INTROSPECTION_TRUE@typelib_DATA = $(gir_DATA:.gir=.typelib) DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: .SUFFIXES: .c .lo .o .obj am--refresh: @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Makefile-canvas-sources.am $(srcdir)/Makefile-python.am $(srcdir)/Makefile-introspection.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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config/config.h: config/stamp-h1 @if test ! -f $@; then \ rm -f config/stamp-h1; \ $(MAKE) $(AM_MAKEFLAGS) config/stamp-h1; \ else :; fi config/stamp-h1: $(top_srcdir)/config/config.h.in $(top_builddir)/config.status @rm -f config/stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config/config.h $(top_srcdir)/config/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f config/stamp-h1 touch $@ distclean-hdr: -rm -f config/config.h config/stamp-h1 hippo-canvas-1.pc: $(top_builddir)/config.status $(srcdir)/hippo-canvas-1.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || 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)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_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 install-pyhippoLTLIBRARIES: $(pyhippo_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(pyhippodir)" || $(MKDIR_P) "$(DESTDIR)$(pyhippodir)" @list='$(pyhippo_LTLIBRARIES)'; test -n "$(pyhippodir)" || 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)$(pyhippodir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pyhippodir)"; \ } uninstall-pyhippoLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pyhippo_LTLIBRARIES)'; test -n "$(pyhippodir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pyhippodir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pyhippodir)/$$f"; \ done clean-pyhippoLTLIBRARIES: -test -z "$(pyhippo_LTLIBRARIES)" || rm -f $(pyhippo_LTLIBRARIES) @list='$(pyhippo_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 hippo.la: $(hippo_la_OBJECTS) $(hippo_la_DEPENDENCIES) $(hippo_la_LINK) $(am_hippo_la_rpath) $(hippo_la_OBJECTS) $(hippo_la_LIBADD) $(LIBS) libhippocanvas-1.la: $(libhippocanvas_1_la_OBJECTS) $(libhippocanvas_1_la_DEPENDENCIES) $(LINK) -rpath $(libdir) $(libhippocanvas_1_la_OBJECTS) $(libhippocanvas_1_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hippo_la-canvas-box-child.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hippo_la-hippo.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hippo_la-hippomodule.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-animation-manager.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-animation.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-canvas-box.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-canvas-container.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-canvas-context.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-canvas-gradient.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-canvas-helper.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-canvas-image-button.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-canvas-image.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-canvas-item.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-canvas-layout.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-canvas-link.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-canvas-marshal.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-canvas-style.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-canvas-test.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-canvas-text.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-canvas-theme-engine.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-canvas-theme-image.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-canvas-theme.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-canvas-type-builtins.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-canvas-util.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-canvas-widget.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-canvas-widgets.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-canvas-window-child.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-canvas-window.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-canvas.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-event.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhippocanvas_1_la-hippo-graphics.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 $@ $< hippo_la-canvas-box-child.lo: $(PYTHONSRCDIR)/canvas-box-child.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hippo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hippo_la-canvas-box-child.lo -MD -MP -MF $(DEPDIR)/hippo_la-canvas-box-child.Tpo -c -o hippo_la-canvas-box-child.lo `test -f '$(PYTHONSRCDIR)/canvas-box-child.c' || echo '$(srcdir)/'`$(PYTHONSRCDIR)/canvas-box-child.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/hippo_la-canvas-box-child.Tpo $(DEPDIR)/hippo_la-canvas-box-child.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(PYTHONSRCDIR)/canvas-box-child.c' object='hippo_la-canvas-box-child.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) $(hippo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hippo_la-canvas-box-child.lo `test -f '$(PYTHONSRCDIR)/canvas-box-child.c' || echo '$(srcdir)/'`$(PYTHONSRCDIR)/canvas-box-child.c hippo_la-hippomodule.lo: $(PYTHONSRCDIR)/hippomodule.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hippo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hippo_la-hippomodule.lo -MD -MP -MF $(DEPDIR)/hippo_la-hippomodule.Tpo -c -o hippo_la-hippomodule.lo `test -f '$(PYTHONSRCDIR)/hippomodule.c' || echo '$(srcdir)/'`$(PYTHONSRCDIR)/hippomodule.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/hippo_la-hippomodule.Tpo $(DEPDIR)/hippo_la-hippomodule.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(PYTHONSRCDIR)/hippomodule.c' object='hippo_la-hippomodule.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) $(hippo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hippo_la-hippomodule.lo `test -f '$(PYTHONSRCDIR)/hippomodule.c' || echo '$(srcdir)/'`$(PYTHONSRCDIR)/hippomodule.c hippo_la-hippo.lo: hippo.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hippo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hippo_la-hippo.lo -MD -MP -MF $(DEPDIR)/hippo_la-hippo.Tpo -c -o hippo_la-hippo.lo `test -f 'hippo.c' || echo '$(srcdir)/'`hippo.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/hippo_la-hippo.Tpo $(DEPDIR)/hippo_la-hippo.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='hippo.c' object='hippo_la-hippo.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) $(hippo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hippo_la-hippo.lo `test -f 'hippo.c' || echo '$(srcdir)/'`hippo.c libhippocanvas_1_la-hippo-animation.lo: $(CANVASSRCDIR)/common/hippo/hippo-animation.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-animation.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-animation.Tpo -c -o libhippocanvas_1_la-hippo-animation.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-animation.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-animation.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-animation.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-animation.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/common/hippo/hippo-animation.c' object='libhippocanvas_1_la-hippo-animation.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-animation.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-animation.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-animation.c libhippocanvas_1_la-hippo-animation-manager.lo: $(CANVASSRCDIR)/common/hippo/hippo-animation-manager.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-animation-manager.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-animation-manager.Tpo -c -o libhippocanvas_1_la-hippo-animation-manager.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-animation-manager.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-animation-manager.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-animation-manager.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-animation-manager.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/common/hippo/hippo-animation-manager.c' object='libhippocanvas_1_la-hippo-animation-manager.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-animation-manager.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-animation-manager.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-animation-manager.c libhippocanvas_1_la-hippo-canvas-box.lo: $(CANVASSRCDIR)/common/hippo/hippo-canvas-box.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-canvas-box.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-box.Tpo -c -o libhippocanvas_1_la-hippo-canvas-box.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-box.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-box.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-box.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-box.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/common/hippo/hippo-canvas-box.c' object='libhippocanvas_1_la-hippo-canvas-box.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-canvas-box.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-box.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-box.c libhippocanvas_1_la-hippo-canvas-container.lo: $(CANVASSRCDIR)/common/hippo/hippo-canvas-container.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-canvas-container.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-container.Tpo -c -o libhippocanvas_1_la-hippo-canvas-container.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-container.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-container.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-container.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-container.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/common/hippo/hippo-canvas-container.c' object='libhippocanvas_1_la-hippo-canvas-container.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-canvas-container.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-container.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-container.c libhippocanvas_1_la-hippo-canvas-context.lo: $(CANVASSRCDIR)/common/hippo/hippo-canvas-context.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-canvas-context.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-context.Tpo -c -o libhippocanvas_1_la-hippo-canvas-context.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-context.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-context.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-context.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-context.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/common/hippo/hippo-canvas-context.c' object='libhippocanvas_1_la-hippo-canvas-context.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-canvas-context.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-context.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-context.c libhippocanvas_1_la-hippo-canvas-gradient.lo: $(CANVASSRCDIR)/common/hippo/hippo-canvas-gradient.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-canvas-gradient.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-gradient.Tpo -c -o libhippocanvas_1_la-hippo-canvas-gradient.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-gradient.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-gradient.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-gradient.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-gradient.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/common/hippo/hippo-canvas-gradient.c' object='libhippocanvas_1_la-hippo-canvas-gradient.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-canvas-gradient.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-gradient.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-gradient.c libhippocanvas_1_la-hippo-canvas-image.lo: $(CANVASSRCDIR)/common/hippo/hippo-canvas-image.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-canvas-image.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-image.Tpo -c -o libhippocanvas_1_la-hippo-canvas-image.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-image.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-image.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-image.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-image.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/common/hippo/hippo-canvas-image.c' object='libhippocanvas_1_la-hippo-canvas-image.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-canvas-image.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-image.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-image.c libhippocanvas_1_la-hippo-canvas-image-button.lo: $(CANVASSRCDIR)/common/hippo/hippo-canvas-image-button.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-canvas-image-button.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-image-button.Tpo -c -o libhippocanvas_1_la-hippo-canvas-image-button.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-image-button.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-image-button.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-image-button.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-image-button.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/common/hippo/hippo-canvas-image-button.c' object='libhippocanvas_1_la-hippo-canvas-image-button.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-canvas-image-button.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-image-button.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-image-button.c libhippocanvas_1_la-hippo-canvas-item.lo: $(CANVASSRCDIR)/common/hippo/hippo-canvas-item.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-canvas-item.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-item.Tpo -c -o libhippocanvas_1_la-hippo-canvas-item.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-item.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-item.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-item.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-item.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/common/hippo/hippo-canvas-item.c' object='libhippocanvas_1_la-hippo-canvas-item.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-canvas-item.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-item.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-item.c libhippocanvas_1_la-hippo-canvas-layout.lo: $(CANVASSRCDIR)/common/hippo/hippo-canvas-layout.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-canvas-layout.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-layout.Tpo -c -o libhippocanvas_1_la-hippo-canvas-layout.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-layout.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-layout.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-layout.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-layout.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/common/hippo/hippo-canvas-layout.c' object='libhippocanvas_1_la-hippo-canvas-layout.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-canvas-layout.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-layout.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-layout.c libhippocanvas_1_la-hippo-canvas-link.lo: $(CANVASSRCDIR)/common/hippo/hippo-canvas-link.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-canvas-link.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-link.Tpo -c -o libhippocanvas_1_la-hippo-canvas-link.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-link.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-link.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-link.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-link.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/common/hippo/hippo-canvas-link.c' object='libhippocanvas_1_la-hippo-canvas-link.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-canvas-link.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-link.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-link.c libhippocanvas_1_la-hippo-canvas-style.lo: $(CANVASSRCDIR)/common/hippo/hippo-canvas-style.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-canvas-style.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-style.Tpo -c -o libhippocanvas_1_la-hippo-canvas-style.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-style.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-style.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-style.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-style.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/common/hippo/hippo-canvas-style.c' object='libhippocanvas_1_la-hippo-canvas-style.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-canvas-style.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-style.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-style.c libhippocanvas_1_la-hippo-canvas-text.lo: $(CANVASSRCDIR)/common/hippo/hippo-canvas-text.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-canvas-text.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-text.Tpo -c -o libhippocanvas_1_la-hippo-canvas-text.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-text.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-text.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-text.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-text.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/common/hippo/hippo-canvas-text.c' object='libhippocanvas_1_la-hippo-canvas-text.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-canvas-text.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-text.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-text.c libhippocanvas_1_la-hippo-canvas-test.lo: $(CANVASSRCDIR)/common/hippo/hippo-canvas-test.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-canvas-test.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-test.Tpo -c -o libhippocanvas_1_la-hippo-canvas-test.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-test.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-test.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-test.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-test.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/common/hippo/hippo-canvas-test.c' object='libhippocanvas_1_la-hippo-canvas-test.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-canvas-test.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-test.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-test.c libhippocanvas_1_la-hippo-canvas-theme.lo: $(CANVASSRCDIR)/common/hippo/hippo-canvas-theme.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-canvas-theme.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-theme.Tpo -c -o libhippocanvas_1_la-hippo-canvas-theme.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-theme.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-theme.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-theme.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-theme.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/common/hippo/hippo-canvas-theme.c' object='libhippocanvas_1_la-hippo-canvas-theme.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-canvas-theme.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-theme.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-theme.c libhippocanvas_1_la-hippo-canvas-theme-engine.lo: $(CANVASSRCDIR)/common/hippo/hippo-canvas-theme-engine.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-canvas-theme-engine.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-theme-engine.Tpo -c -o libhippocanvas_1_la-hippo-canvas-theme-engine.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-theme-engine.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-theme-engine.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-theme-engine.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-theme-engine.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/common/hippo/hippo-canvas-theme-engine.c' object='libhippocanvas_1_la-hippo-canvas-theme-engine.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-canvas-theme-engine.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-theme-engine.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-theme-engine.c libhippocanvas_1_la-hippo-canvas-theme-image.lo: $(CANVASSRCDIR)/common/hippo/hippo-canvas-theme-image.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-canvas-theme-image.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-theme-image.Tpo -c -o libhippocanvas_1_la-hippo-canvas-theme-image.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-theme-image.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-theme-image.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-theme-image.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-theme-image.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/common/hippo/hippo-canvas-theme-image.c' object='libhippocanvas_1_la-hippo-canvas-theme-image.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-canvas-theme-image.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-theme-image.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-theme-image.c libhippocanvas_1_la-hippo-canvas-util.lo: $(CANVASSRCDIR)/common/hippo/hippo-canvas-util.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-canvas-util.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-util.Tpo -c -o libhippocanvas_1_la-hippo-canvas-util.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-util.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-util.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-util.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-util.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/common/hippo/hippo-canvas-util.c' object='libhippocanvas_1_la-hippo-canvas-util.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-canvas-util.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-util.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-util.c libhippocanvas_1_la-hippo-event.lo: $(CANVASSRCDIR)/common/hippo/hippo-event.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-event.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-event.Tpo -c -o libhippocanvas_1_la-hippo-event.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-event.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-event.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-event.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-event.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/common/hippo/hippo-event.c' object='libhippocanvas_1_la-hippo-event.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-event.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-event.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-event.c libhippocanvas_1_la-hippo-graphics.lo: $(CANVASSRCDIR)/common/hippo/hippo-graphics.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-graphics.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-graphics.Tpo -c -o libhippocanvas_1_la-hippo-graphics.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-graphics.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-graphics.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-graphics.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-graphics.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/common/hippo/hippo-graphics.c' object='libhippocanvas_1_la-hippo-graphics.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-graphics.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-graphics.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-graphics.c libhippocanvas_1_la-hippo-canvas.lo: $(CANVASSRCDIR)/linux/hippo/hippo-canvas.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-canvas.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-canvas.Tpo -c -o libhippocanvas_1_la-hippo-canvas.lo `test -f '$(CANVASSRCDIR)/linux/hippo/hippo-canvas.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/linux/hippo/hippo-canvas.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-canvas.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-canvas.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/linux/hippo/hippo-canvas.c' object='libhippocanvas_1_la-hippo-canvas.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-canvas.lo `test -f '$(CANVASSRCDIR)/linux/hippo/hippo-canvas.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/linux/hippo/hippo-canvas.c libhippocanvas_1_la-hippo-canvas-window.lo: $(CANVASSRCDIR)/linux/hippo/hippo-canvas-window.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-canvas-window.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-window.Tpo -c -o libhippocanvas_1_la-hippo-canvas-window.lo `test -f '$(CANVASSRCDIR)/linux/hippo/hippo-canvas-window.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/linux/hippo/hippo-canvas-window.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-window.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-window.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/linux/hippo/hippo-canvas-window.c' object='libhippocanvas_1_la-hippo-canvas-window.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-canvas-window.lo `test -f '$(CANVASSRCDIR)/linux/hippo/hippo-canvas-window.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/linux/hippo/hippo-canvas-window.c libhippocanvas_1_la-hippo-canvas-helper.lo: $(CANVASSRCDIR)/linux/hippo/hippo-canvas-helper.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-canvas-helper.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-helper.Tpo -c -o libhippocanvas_1_la-hippo-canvas-helper.lo `test -f '$(CANVASSRCDIR)/linux/hippo/hippo-canvas-helper.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/linux/hippo/hippo-canvas-helper.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-helper.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-helper.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/linux/hippo/hippo-canvas-helper.c' object='libhippocanvas_1_la-hippo-canvas-helper.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-canvas-helper.lo `test -f '$(CANVASSRCDIR)/linux/hippo/hippo-canvas-helper.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/linux/hippo/hippo-canvas-helper.c libhippocanvas_1_la-hippo-canvas-window-child.lo: $(CANVASSRCDIR)/linux/hippo/hippo-canvas-window-child.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-canvas-window-child.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-window-child.Tpo -c -o libhippocanvas_1_la-hippo-canvas-window-child.lo `test -f '$(CANVASSRCDIR)/linux/hippo/hippo-canvas-window-child.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/linux/hippo/hippo-canvas-window-child.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-window-child.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-window-child.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/linux/hippo/hippo-canvas-window-child.c' object='libhippocanvas_1_la-hippo-canvas-window-child.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-canvas-window-child.lo `test -f '$(CANVASSRCDIR)/linux/hippo/hippo-canvas-window-child.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/linux/hippo/hippo-canvas-window-child.c libhippocanvas_1_la-hippo-canvas-widget.lo: $(CANVASSRCDIR)/linux/hippo/hippo-canvas-widget.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-canvas-widget.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-widget.Tpo -c -o libhippocanvas_1_la-hippo-canvas-widget.lo `test -f '$(CANVASSRCDIR)/linux/hippo/hippo-canvas-widget.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/linux/hippo/hippo-canvas-widget.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-widget.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-widget.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/linux/hippo/hippo-canvas-widget.c' object='libhippocanvas_1_la-hippo-canvas-widget.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-canvas-widget.lo `test -f '$(CANVASSRCDIR)/linux/hippo/hippo-canvas-widget.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/linux/hippo/hippo-canvas-widget.c libhippocanvas_1_la-hippo-canvas-widgets.lo: $(CANVASSRCDIR)/linux/hippo/hippo-canvas-widgets.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-canvas-widgets.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-widgets.Tpo -c -o libhippocanvas_1_la-hippo-canvas-widgets.lo `test -f '$(CANVASSRCDIR)/linux/hippo/hippo-canvas-widgets.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/linux/hippo/hippo-canvas-widgets.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-widgets.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-widgets.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/linux/hippo/hippo-canvas-widgets.c' object='libhippocanvas_1_la-hippo-canvas-widgets.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-canvas-widgets.lo `test -f '$(CANVASSRCDIR)/linux/hippo/hippo-canvas-widgets.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/linux/hippo/hippo-canvas-widgets.c libhippocanvas_1_la-hippo-canvas-marshal.lo: $(MARSHAL_DIR)/hippo-canvas-marshal.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-canvas-marshal.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-marshal.Tpo -c -o libhippocanvas_1_la-hippo-canvas-marshal.lo `test -f '$(MARSHAL_DIR)/hippo-canvas-marshal.c' || echo '$(srcdir)/'`$(MARSHAL_DIR)/hippo-canvas-marshal.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-marshal.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-marshal.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(MARSHAL_DIR)/hippo-canvas-marshal.c' object='libhippocanvas_1_la-hippo-canvas-marshal.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-canvas-marshal.lo `test -f '$(MARSHAL_DIR)/hippo-canvas-marshal.c' || echo '$(srcdir)/'`$(MARSHAL_DIR)/hippo-canvas-marshal.c libhippocanvas_1_la-hippo-canvas-type-builtins.lo: $(CANVASSRCDIR)/common/hippo/hippo-canvas-type-builtins.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhippocanvas_1_la-hippo-canvas-type-builtins.lo -MD -MP -MF $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-type-builtins.Tpo -c -o libhippocanvas_1_la-hippo-canvas-type-builtins.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-type-builtins.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-type-builtins.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-type-builtins.Tpo $(DEPDIR)/libhippocanvas_1_la-hippo-canvas-type-builtins.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(CANVASSRCDIR)/common/hippo/hippo-canvas-type-builtins.c' object='libhippocanvas_1_la-hippo-canvas-type-builtins.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) $(libhippocanvas_1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhippocanvas_1_la-hippo-canvas-type-builtins.lo `test -f '$(CANVASSRCDIR)/common/hippo/hippo-canvas-type-builtins.c' || echo '$(srcdir)/'`$(CANVASSRCDIR)/common/hippo/hippo-canvas-type-builtins.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt install-girDATA: $(gir_DATA) @$(NORMAL_INSTALL) test -z "$(girdir)" || $(MKDIR_P) "$(DESTDIR)$(girdir)" @list='$(gir_DATA)'; test -n "$(girdir)" || 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)$(girdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(girdir)" || exit $$?; \ done uninstall-girDATA: @$(NORMAL_UNINSTALL) @list='$(gir_DATA)'; test -n "$(girdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(girdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(girdir)" && 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 install-typelibDATA: $(typelib_DATA) @$(NORMAL_INSTALL) test -z "$(typelibdir)" || $(MKDIR_P) "$(DESTDIR)$(typelibdir)" @list='$(typelib_DATA)'; test -n "$(typelibdir)" || 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)$(typelibdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(typelibdir)" || exit $$?; \ done uninstall-typelibDATA: @$(NORMAL_UNINSTALL) @list='$(typelib_DATA)'; test -n "$(typelibdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(typelibdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(typelibdir)" && rm -f $$files install-libhippocanvasincludeHEADERS: $(libhippocanvasinclude_HEADERS) @$(NORMAL_INSTALL) test -z "$(libhippocanvasincludedir)" || $(MKDIR_P) "$(DESTDIR)$(libhippocanvasincludedir)" @list='$(libhippocanvasinclude_HEADERS)'; test -n "$(libhippocanvasincludedir)" || 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_HEADER) $$files '$(DESTDIR)$(libhippocanvasincludedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(libhippocanvasincludedir)" || exit $$?; \ done uninstall-libhippocanvasincludeHEADERS: @$(NORMAL_UNINSTALL) @list='$(libhippocanvasinclude_HEADERS)'; test -n "$(libhippocanvasincludedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(libhippocanvasincludedir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(libhippocanvasincludedir)" && 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) $(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) $(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) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) 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; }; }'`; \ 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 -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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-recursive all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pyhippodir)" "$(DESTDIR)$(girdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(typelibdir)" "$(DESTDIR)$(libhippocanvasincludedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) 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) -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) -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-recursive clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ clean-pyhippoLTLIBRARIES 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-girDATA install-libhippocanvasincludeHEADERS \ install-pkgconfigDATA install-pyhippoLTLIBRARIES \ install-typelibDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-libLTLIBRARIES 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-girDATA uninstall-libLTLIBRARIES \ uninstall-libhippocanvasincludeHEADERS uninstall-pkgconfigDATA \ uninstall-pyhippoLTLIBRARIES uninstall-typelibDATA .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \ ctags-recursive install 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-libLTLIBRARIES clean-libtool clean-pyhippoLTLIBRARIES \ ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ 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-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-girDATA install-html install-html-am \ install-info install-info-am install-libLTLIBRARIES \ install-libhippocanvasincludeHEADERS install-man install-pdf \ install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ install-pyhippoLTLIBRARIES install-strip install-typelibDATA \ 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-girDATA uninstall-libLTLIBRARIES \ uninstall-libhippocanvasincludeHEADERS uninstall-pkgconfigDATA \ uninstall-pyhippoLTLIBRARIES uninstall-typelibDATA # if srcdir!=builddir, clean out maintainer-clean files from builddir # this allows dist to pass. distclean-local: if test $(srcdir) != . ; then \ rm -f $(MAINTAINERCLEANFILES) ; \ rmdir $(BUILT_SRC_DIR) ; \ fi $(CANVAS_MARSHAL_HEADER): $(CANVAS_MARSHAL_LIST) mkdir $(MARSHAL_DIR) || true $(GLIB_GENMARSHAL) --prefix=hippo_canvas_marshal $(CANVAS_MARSHAL_LIST) --header > $(CANVAS_MARSHAL_HEADER) $(CANVAS_MARSHAL_BODY): $(CANVAS_MARSHAL_LIST) mkdir $(MARSHAL_DIR) || true (echo "#include \"hippo-canvas-marshal.h\""; $(GLIB_GENMARSHAL) --prefix=hippo_canvas_marshal $(CANVAS_MARSHAL_LIST) --body) > $(CANVAS_MARSHAL_BODY) $(CANVAS_ENUMS_BODY): $(CANVAS_ENUMS_BODY_STAMP) @true $(CANVAS_ENUMS_BODY_STAMP): $(COMMON_CANVAS_HEADERFILES) mkdir $(MARSHAL_DIR) || true (cd $(CANVASSRCDIR)/common && $(GLIB_MKENUMS) \ --fhead "#include \"hippo-canvas-type-builtins.h\"\n\n" \ --fprod "\n/* enumerations from \"@filename@\" */" \ --fprod "\n#include \"@filename@\"" \ --vhead "const G@Type@Value _@enum_name@_values[] = {" \ --vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \ --vtail " { 0, NULL, NULL }\n};\n\n" \ --vtail "GType\n@enum_name@_get_type (void)\n{\n" \ --vtail " static GType type = 0;\n\n" \ --vtail " if (G_UNLIKELY (type == 0))\n" \ --vtail " type = g_@type@_register_static (\"@EnumName@\", _@enum_name@_values);\n\n" \ --vtail " return type;\n}\n\n" \ $(^F:%=hippo/%)) > xgen-$(@F) \ && ( cmp -s xgen-$(@F) $(CANVAS_ENUMS_BODY) || cp xgen-$(@F) $(CANVAS_ENUMS_BODY)) \ && rm -f xgen-$(@F) \ && echo timestamp > $(CANVAS_ENUMS_BODY_STAMP) $(CANVAS_ENUMS_HEADER): $(CANVAS_ENUMS_HEADER_STAMP) @true $(CANVAS_ENUMS_HEADER_STAMP): $(COMMON_CANVAS_HEADERFILES) mkdir $(MARSHAL_DIR) || true (cd $(CANVASSRCDIR)/common && $(GLIB_MKENUMS) \ --fhead "#ifndef HIPPO_CANVAS_TYPE_BUILTINS_H\n" \ --fhead "#define HIPPO_CANVAS_TYPE_BUILTINS_H 1\n\n" \ --fhead "#include \n\n" \ --fhead "G_BEGIN_DECLS\n\n" \ --ftail "G_END_DECLS\n\n" \ --ftail "#endif /* HIPPO_CANVAS_TYPE_BUILTINS_H */\n" \ --fprod "\n/* --- @filename@ --- */" \ --eprod "#define HIPPO_TYPE_@ENUMSHORT@ @enum_name@_get_type()\n" \ --eprod "GType @enum_name@_get_type (void);\n" \ $(^F:%=hippo/%)) > xgen-$(@F) \ && ( cmp -s xgen-$(@F) $(CANVAS_ENUMS_HEADER) || cp xgen-$(@F) $(CANVAS_ENUMS_HEADER)) \ && rm -f xgen-$(@F) \ && echo timestamp > $(CANVAS_ENUMS_HEADER_STAMP) @HAVE_PYTHON_TRUE@hippo.c: $(PYTHONDEFS_FILES) @HAVE_PYTHON_TRUE@ ($(PYGTK_CODEGEN) \ @HAVE_PYTHON_TRUE@ --load-types $(PYTHONSRCDIR)/arg-types.py \ @HAVE_PYTHON_TRUE@ --register $(PYGTK_DEFSDIR)/pango.defs \ @HAVE_PYTHON_TRUE@ --register $(PYGTK_DEFSDIR)/gtk-types.defs \ @HAVE_PYTHON_TRUE@ --register $(PYGTK_DEFSDIR)/gdk-types.defs \ @HAVE_PYTHON_TRUE@ --override $(PYTHONSRCDIR)/hippo.override \ @HAVE_PYTHON_TRUE@ --prefix pyhippo $(PYTHONSRCDIR)/hippo.defs) > gen-hippo.c \ @HAVE_PYTHON_TRUE@ && cp gen-hippo.c $*.c \ @HAVE_PYTHON_TRUE@ && rm -f gen-hippo.c @HAVE_INTROSPECTION_TRUE@Hippo-1.0.gir: $(libhippocanvas_1_la_SOURCES) $(nodist_libhippocanvas_1_la_SOURCES) libhippocanvas-1.la Makefile @HAVE_INTROSPECTION_TRUE@ libtool --mode=execute $(INTROSPECTION_SCANNER) -v --namespace Hippo --nsversion=1.0 \ @HAVE_INTROSPECTION_TRUE@ --strip-prefix=Hippo \ @HAVE_INTROSPECTION_TRUE@ --include=Gtk-2.0 \ @HAVE_INTROSPECTION_TRUE@ --library=hippocanvas-1 \ @HAVE_INTROSPECTION_TRUE@ --output $@ \ @HAVE_INTROSPECTION_TRUE@ --pkg hippo-canvas-1 \ @HAVE_INTROSPECTION_TRUE@ $(libhippocanvas_1_la_CPPFLAGS) \ @HAVE_INTROSPECTION_TRUE@ $(nodist_libhippocanvas_1_la_SOURCES) \ @HAVE_INTROSPECTION_TRUE@ $(libhippocanvasinclude_HEADERS) \ @HAVE_INTROSPECTION_TRUE@ $(libhippocanvas_1_la_SOURCES) @HAVE_INTROSPECTION_TRUE@%.typelib: %.gir Makefile @HAVE_INTROSPECTION_TRUE@ $(DEBUG) $(INTROSPECTION_COMPILER) $< -o $@ .PHONY: tag tag: @(svn status | grep '^[MA]' > /dev/null && echo "Uncommitted changes, can't tag") || \ (V=`echo $(VERSION) | sed s/\\\\./_/g` && \ URL=`svn info --xml | grep '' | sed 's@@@g'` && \ PACKAGE=`echo $$URL | perl -pe 's@.*/(.*)/.*@$$1@; tr/a-z-/A-Z_/;'` && \ TAGURL=`echo $$URL | sed "s@trunk@tags/$${PACKAGE}_$$V@"` && \ echo Tagging as $$TAGURL && \ svn cp -m "Tag as $${PACKAGE}_$$V" $$URL $$TAGURL) # 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: hippo-canvas-0.3.1/linux/0000775000076400007640000000000011404424207012253 500000000000000hippo-canvas-0.3.1/linux/hippo/0000775000076400007640000000000011404424207013372 500000000000000hippo-canvas-0.3.1/linux/hippo/hippo-canvas-helper.h0000664000076400007640000001211311366237063017337 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_CANVAS_HELPER_H__ #define __HIPPO_CANVAS_HELPER_H__ /* A helper object for hooking up a canvas to a widget */ #include #include #include #include #include G_BEGIN_DECLS #define HIPPO_CANVAS_EVENT_MASK (GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | \ GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | \ GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_SCROLL_MASK) typedef struct _HippoCanvasHelper HippoCanvasHelper; typedef struct _HippoCanvasHelperClass HippoCanvasHelperClass; #define HIPPO_TYPE_CANVAS_HELPER (hippo_canvas_helper_get_type ()) #define HIPPO_CANVAS_HELPER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_CANVAS_HELPER, HippoCanvasHelper)) #define HIPPO_CANVAS_HELPER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), HIPPO_TYPE_CANVAS_HELPER, HippoCanvasHelperClass)) #define HIPPO_IS_CANVAS_HELPER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_CANVAS_HELPER)) #define HIPPO_IS_CANVAS_HELPER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), HIPPO_TYPE_CANVAS_HELPER)) #define HIPPO_CANVAS_HELPER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), HIPPO_TYPE_CANVAS_HELPER, HippoCanvasHelperClass)) GType hippo_canvas_helper_get_type (void) G_GNUC_CONST; HippoCanvasHelper* hippo_canvas_helper_new (GtkContainer *base_container); void hippo_canvas_helper_set_root (HippoCanvasHelper *helper, HippoCanvasItem *root); void hippo_canvas_helper_set_theme(HippoCanvasHelper *canvas_helper, HippoCanvasTheme *theme); GtkWidget *hippo_canvas_helper_get_widget(HippoCanvasHelper *helper); /* Set an explicit width on the helper; this will be used instead of the minimum * width when computing the required height */ void hippo_canvas_helper_set_width (HippoCanvasHelper *helper, int width); void hippo_canvas_helper_set_load_image_hook(HippoCanvasLoadImageHook hook); /* Caller must chain up to GtkContainer::expose after calling */ gboolean hippo_canvas_helper_expose_event (HippoCanvasHelper *widget, GdkEventExpose *event); void hippo_canvas_helper_size_request (HippoCanvasHelper *widget, GtkRequisition *requisition); /* Caller should set widget->allocation and move windows before calling */ void hippo_canvas_helper_size_allocate (HippoCanvasHelper *widget, GtkAllocation *allocation); gboolean hippo_canvas_helper_button_press (HippoCanvasHelper *widget, GdkEventButton *event); gboolean hippo_canvas_helper_button_release (HippoCanvasHelper *widget, GdkEventButton *event); gboolean hippo_canvas_helper_enter_notify (HippoCanvasHelper *widget, GdkEventCrossing *event); gboolean hippo_canvas_helper_leave_notify (HippoCanvasHelper *widget, GdkEventCrossing *event); gboolean hippo_canvas_helper_motion_notify (HippoCanvasHelper *widget, GdkEventMotion *event); gboolean hippo_canvas_helper_scroll (HippoCanvasHelper *widget, GdkEventScroll *event); void hippo_canvas_helper_realize (HippoCanvasHelper *widget); /* Caller should chain up to GtkContainer::unmap after calling */ void hippo_canvas_helper_unmap (HippoCanvasHelper *widget); /* Caller should chain up to GtkContainer::hierarchy_changed after calling */ void hippo_canvas_helper_hierarchy_changed (HippoCanvasHelper *helper, GtkWidget *old_toplevel); void hippo_canvas_helper_set_window_background (HippoCanvasHelper *helper, GdkWindow *window); void hippo_canvas_helper_add (HippoCanvasHelper *helper, GtkWidget *widget); void hippo_canvas_helper_remove (HippoCanvasHelper *helper, GtkWidget *widget); void hippo_canvas_helper_forall (HippoCanvasHelper *helper, gboolean include_internals, GtkCallback callback, gpointer callback_data); GType hippo_canvas_helper_child_type (HippoCanvasHelper *helper); G_END_DECLS #endif /* __HIPPO_CANVAS_HELPER_H__ */ hippo-canvas-0.3.1/linux/hippo/hippo-canvas-window-child.h0000664000076400007640000000277511366237063020465 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_CANVAS_WINDOW_CHILD_H__ #define __HIPPO_CANVAS_WINDOW_CHILD_H__ /* Internal, non-exposed child for HoppoCanvasWindow */ #include #include #include G_BEGIN_DECLS typedef struct _HippoCanvasWindowChild HippoCanvasWindowChild; typedef struct _HippoCanvasWindowChildClass HippoCanvasWindowChildClass; #define HIPPO_TYPE_CANVAS_WINDOW_CHILD (hippo_canvas_window_child_get_type ()) #define HIPPO_CANVAS_WINDOW_CHILD(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_CANVAS_WINDOW_CHILD, HippoCanvasWindowChild)) #define HIPPO_CANVAS_WINDOW_CHILD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), HIPPO_TYPE_CANVAS_WINDOW_CHILD, HippoCanvasWindowChildClass)) #define HIPPO_IS_CANVAS_WINDOW_CHILD(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_CANVAS_WINDOW_CHILD)) #define HIPPO_IS_CANVAS_WINDOW_CHILD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), HIPPO_TYPE_CANVAS_WINDOW_CHILD)) #define HIPPO_CANVAS_WINDOW_CHILD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), HIPPO_TYPE_CANVAS_WINDOW_CHILD, HippoCanvasWindowChildClass)) GType hippo_canvas_window_child_get_type (void) G_GNUC_CONST; GtkWidget* hippo_canvas_window_child_new(void); HippoCanvasHelper *hippo_canvas_window_child_get_helper(HippoCanvasWindowChild *window_child); G_END_DECLS #endif /* __HIPPO_CANVAS_WINDOW_CHILD_H__ */ hippo-canvas-0.3.1/linux/hippo/hippo-canvas-window-child.c0000664000076400007640000002077711366237063020462 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include #include #include "hippo-canvas-window-child.h" #include "hippo-canvas-helper.h" #include #include #include #include static void hippo_canvas_window_child_init (HippoCanvasWindowChild *canvas); static void hippo_canvas_window_child_class_init (HippoCanvasWindowChildClass *klass); static void hippo_canvas_window_child_dispose (GObject *object); static void hippo_canvas_window_child_finalize (GObject *object); static gboolean hippo_canvas_window_child_expose_event (GtkWidget *widget, GdkEventExpose *event); static void hippo_canvas_window_child_size_request (GtkWidget *widget, GtkRequisition *requisition); static void hippo_canvas_window_child_size_allocate (GtkWidget *widget, GtkAllocation *allocation); static void hippo_canvas_window_child_realize (GtkWidget *widget); static void hippo_canvas_window_child_unmap (GtkWidget *widget); static void hippo_canvas_window_child_hierarchy_changed (GtkWidget *widget, GtkWidget *old_toplevel); static void hippo_canvas_window_child_add (GtkContainer *container, GtkWidget *widget); static void hippo_canvas_window_child_remove (GtkContainer *container, GtkWidget *widget); static void hippo_canvas_window_child_forall (GtkContainer *container, gboolean include_internals, GtkCallback callback, gpointer callback_data); static GType hippo_canvas_window_child_child_type (GtkContainer *container); struct _HippoCanvasWindowChild { GtkContainer parent; HippoCanvasHelper *helper; }; struct _HippoCanvasWindowChildClass { GtkContainerClass parent_class; }; enum { NO_SIGNALS_YET, LAST_SIGNAL }; /* static int signals[LAST_SIGNAL]; */ enum { PROP_0 }; G_DEFINE_TYPE(HippoCanvasWindowChild, hippo_canvas_window_child, GTK_TYPE_CONTAINER) static void hippo_canvas_window_child_init(HippoCanvasWindowChild *window_child) { window_child->helper = hippo_canvas_helper_new(GTK_CONTAINER(window_child)); GTK_WIDGET_SET_FLAGS(window_child, GTK_NO_WINDOW); } static void hippo_canvas_window_child_class_init(HippoCanvasWindowChildClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass); GtkContainerClass *container_class = GTK_CONTAINER_CLASS(klass); object_class->dispose = hippo_canvas_window_child_dispose; object_class->finalize = hippo_canvas_window_child_finalize; widget_class->expose_event = hippo_canvas_window_child_expose_event; widget_class->size_request = hippo_canvas_window_child_size_request; widget_class->size_allocate = hippo_canvas_window_child_size_allocate; widget_class->realize = hippo_canvas_window_child_realize; widget_class->unmap = hippo_canvas_window_child_unmap; widget_class->hierarchy_changed = hippo_canvas_window_child_hierarchy_changed; container_class->add = hippo_canvas_window_child_add; container_class->remove = hippo_canvas_window_child_remove; container_class->forall = hippo_canvas_window_child_forall; container_class->child_type = hippo_canvas_window_child_child_type; } static void hippo_canvas_window_child_dispose(GObject *object) { HippoCanvasWindowChild *window_child = HIPPO_CANVAS_WINDOW_CHILD(object); if (window_child->helper) { g_object_unref(window_child->helper); window_child->helper = NULL; } G_OBJECT_CLASS(hippo_canvas_window_child_parent_class)->dispose(object); } static void hippo_canvas_window_child_finalize(GObject *object) { /* HippoCanvasWindowChild *window_child = HIPPO_CANVAS_WINDOW_CHILD(object); */ G_OBJECT_CLASS(hippo_canvas_window_child_parent_class)->finalize(object); } GtkWidget* hippo_canvas_window_child_new(void) { HippoCanvasWindowChild *window_child; window_child = g_object_new(HIPPO_TYPE_CANVAS_WINDOW_CHILD, NULL); return GTK_WIDGET(window_child); } HippoCanvasHelper * hippo_canvas_window_child_get_helper(HippoCanvasWindowChild *window_child) { g_return_val_if_fail(HIPPO_IS_CANVAS_WINDOW_CHILD(window_child), NULL); return window_child->helper; } static gboolean hippo_canvas_window_child_expose_event(GtkWidget *widget, GdkEventExpose *event) { HippoCanvasWindowChild *window_child = HIPPO_CANVAS_WINDOW_CHILD(widget); if (window_child->helper == NULL) return FALSE; /* we've already been destroyed */ if (event->window == widget->window) hippo_canvas_helper_expose_event(window_child->helper, event); return GTK_WIDGET_CLASS(hippo_canvas_window_child_parent_class)->expose_event(widget, event); } static void hippo_canvas_window_child_size_request(GtkWidget *widget, GtkRequisition *requisition) { HippoCanvasWindowChild *window_child = HIPPO_CANVAS_WINDOW_CHILD(widget); hippo_canvas_helper_size_request(window_child->helper, requisition); } static void hippo_canvas_window_child_size_allocate(GtkWidget *widget, GtkAllocation *allocation) { HippoCanvasWindowChild *window_child = HIPPO_CANVAS_WINDOW_CHILD(widget); /* g_debug("gtk allocate on canvas root %p canvas %p", window_child->root, canvas); */ widget->allocation = *allocation; hippo_canvas_helper_size_allocate(window_child->helper, allocation); } static void hippo_canvas_window_child_realize(GtkWidget *widget) { HippoCanvasWindowChild *window_child = HIPPO_CANVAS_WINDOW_CHILD(widget); GTK_WIDGET_CLASS(hippo_canvas_window_child_parent_class)->realize(widget); hippo_canvas_helper_realize(window_child->helper); } static void hippo_canvas_window_child_unmap(GtkWidget *widget) { HippoCanvasWindowChild *window_child = HIPPO_CANVAS_WINDOW_CHILD(widget); hippo_canvas_helper_unmap(window_child->helper); GTK_WIDGET_CLASS(hippo_canvas_window_child_parent_class)->unmap(widget); } static void hippo_canvas_window_child_hierarchy_changed (GtkWidget *widget, GtkWidget *old_toplevel) { HippoCanvasWindowChild *window_child = HIPPO_CANVAS_WINDOW_CHILD(widget); if (window_child->helper) /* hierarchy changed can happen during dispose */ hippo_canvas_helper_hierarchy_changed(window_child->helper, old_toplevel); if (GTK_WIDGET_CLASS(hippo_canvas_window_child_parent_class)->hierarchy_changed) GTK_WIDGET_CLASS(hippo_canvas_window_child_parent_class)->hierarchy_changed(widget, old_toplevel); } static void hippo_canvas_window_child_add(GtkContainer *container, GtkWidget *widget) { HippoCanvasWindowChild *window_child = HIPPO_CANVAS_WINDOW_CHILD(container); hippo_canvas_helper_add(window_child->helper, widget); } static void hippo_canvas_window_child_remove(GtkContainer *container, GtkWidget *widget) { HippoCanvasWindowChild *window_child = HIPPO_CANVAS_WINDOW_CHILD(container); hippo_canvas_helper_remove(window_child->helper, widget); } static void hippo_canvas_window_child_forall(GtkContainer *container, gboolean include_internals, GtkCallback callback, gpointer callback_data) { HippoCanvasWindowChild *window_child = HIPPO_CANVAS_WINDOW_CHILD(container); if (window_child->helper) /* can happen during dispose */ hippo_canvas_helper_forall(window_child->helper, include_internals, callback, callback_data); } static GType hippo_canvas_window_child_child_type(GtkContainer *container) { HippoCanvasWindowChild *window_child = HIPPO_CANVAS_WINDOW_CHILD(container); return hippo_canvas_helper_child_type(window_child->helper); } hippo-canvas-0.3.1/linux/hippo/hippo-canvas.c0000664000076400007640000004242611366237063016067 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include #include #include "hippo-canvas.h" #include "hippo-canvas-helper.h" #include #include #include #include static void hippo_canvas_init (HippoCanvas *canvas); static void hippo_canvas_class_init (HippoCanvasClass *klass); static void hippo_canvas_dispose (GObject *object); static void hippo_canvas_finalize (GObject *object); static void hippo_canvas_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); static void hippo_canvas_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); static gboolean hippo_canvas_expose_event (GtkWidget *widget, GdkEventExpose *event); static void hippo_canvas_size_request (GtkWidget *widget, GtkRequisition *requisition); static void hippo_canvas_size_allocate (GtkWidget *widget, GtkAllocation *allocation); static gboolean hippo_canvas_button_press (GtkWidget *widget, GdkEventButton *event); static gboolean hippo_canvas_button_release (GtkWidget *widget, GdkEventButton *event); static gboolean hippo_canvas_enter_notify (GtkWidget *widget, GdkEventCrossing *event); static gboolean hippo_canvas_leave_notify (GtkWidget *widget, GdkEventCrossing *event); static gboolean hippo_canvas_motion_notify (GtkWidget *widget, GdkEventMotion *event); static gboolean hippo_canvas_scroll (GtkWidget *widget, GdkEventScroll *event); static void hippo_canvas_realize (GtkWidget *widget); static void hippo_canvas_style_set (GtkWidget *widget, GtkStyle *previous_style); static void hippo_canvas_unmap (GtkWidget *widget); static void hippo_canvas_hierarchy_changed (GtkWidget *widget, GtkWidget *old_toplevel); static void hippo_canvas_add (GtkContainer *container, GtkWidget *widget); static void hippo_canvas_remove (GtkContainer *container, GtkWidget *widget); static void hippo_canvas_forall (GtkContainer *container, gboolean include_internals, GtkCallback callback, gpointer callback_data); static GType hippo_canvas_child_type (GtkContainer *container); struct _HippoCanvas { GtkContainer parent; HippoCanvasHelper *helper; }; struct _HippoCanvasClass { GtkContainerClass parent_class; }; enum { NO_SIGNALS_YET, LAST_SIGNAL }; /* static int signals[LAST_SIGNAL]; */ enum { PROP_0 }; G_DEFINE_TYPE(HippoCanvas, hippo_canvas, GTK_TYPE_CONTAINER) static void hippo_canvas_init(HippoCanvas *canvas) { GtkWidget *widget = GTK_WIDGET(canvas); canvas->helper = hippo_canvas_helper_new(GTK_CONTAINER(canvas)); gtk_widget_add_events(widget, HIPPO_CANVAS_EVENT_MASK); gtk_widget_set_redraw_on_allocate(widget, FALSE); } static void hippo_canvas_class_init(HippoCanvasClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass); GtkContainerClass *container_class = GTK_CONTAINER_CLASS(klass); object_class->set_property = hippo_canvas_set_property; object_class->get_property = hippo_canvas_get_property; object_class->dispose = hippo_canvas_dispose; object_class->finalize = hippo_canvas_finalize; widget_class->expose_event = hippo_canvas_expose_event; widget_class->size_request = hippo_canvas_size_request; widget_class->size_allocate = hippo_canvas_size_allocate; widget_class->button_press_event = hippo_canvas_button_press; widget_class->button_release_event = hippo_canvas_button_release; widget_class->motion_notify_event = hippo_canvas_motion_notify; widget_class->enter_notify_event = hippo_canvas_enter_notify; widget_class->leave_notify_event = hippo_canvas_leave_notify; widget_class->scroll_event = hippo_canvas_scroll; widget_class->realize = hippo_canvas_realize; widget_class->style_set = hippo_canvas_style_set; widget_class->unmap = hippo_canvas_unmap; widget_class->hierarchy_changed = hippo_canvas_hierarchy_changed; container_class->add = hippo_canvas_add; container_class->remove = hippo_canvas_remove; container_class->forall = hippo_canvas_forall; container_class->child_type = hippo_canvas_child_type; } static void hippo_canvas_dispose(GObject *object) { HippoCanvas *canvas = HIPPO_CANVAS(object); if (canvas->helper) { g_object_run_dispose(G_OBJECT(canvas->helper)); g_object_unref(canvas->helper); canvas->helper = NULL; } G_OBJECT_CLASS(hippo_canvas_parent_class)->dispose(object); } static void hippo_canvas_finalize(GObject *object) { /* HippoCanvas *canvas = HIPPO_CANVAS(object); */ G_OBJECT_CLASS(hippo_canvas_parent_class)->finalize(object); } static void hippo_canvas_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { HippoCanvas *canvas; canvas = HIPPO_CANVAS(object); switch (prop_id) { default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } } static void hippo_canvas_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { HippoCanvas *canvas; canvas = HIPPO_CANVAS (object); switch (prop_id) { default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } } /** * hippo_canvas_new: * * A #HippoCanvas is simply a #GtkWidget that displays a single #HippoCanvasItem. * The single #HippoCanvasItem is normally a container item that serves as a root, * and contains a number of other canvas items. * * The size of the #HippoCanvas will match the size of its contained canvas items. * * You can place a #HippoCanvas inside a #GtkScrolledWindow. * * * Return value: the new canvas widget */ GtkWidget* hippo_canvas_new(void) { HippoCanvas *canvas; canvas = g_object_new(HIPPO_TYPE_CANVAS, NULL); return GTK_WIDGET(canvas); } static gboolean hippo_canvas_expose_event(GtkWidget *widget, GdkEventExpose *event) { HippoCanvas *canvas = HIPPO_CANVAS(widget); if (canvas->helper == NULL) return FALSE; /* we've already been destroyed */ if (event->window == widget->window) hippo_canvas_helper_expose_event(canvas->helper, event); return GTK_WIDGET_CLASS(hippo_canvas_parent_class)->expose_event(widget, event); } static void hippo_canvas_size_request(GtkWidget *widget, GtkRequisition *requisition) { HippoCanvas *canvas = HIPPO_CANVAS(widget); hippo_canvas_helper_size_request(canvas->helper, requisition); } static void hippo_canvas_size_allocate(GtkWidget *widget, GtkAllocation *allocation) { HippoCanvas *canvas = HIPPO_CANVAS(widget); /* g_debug("gtk allocate on canvas root %p canvas %p", canvas->root, canvas); */ widget->allocation = *allocation; if (GTK_WIDGET_REALIZED(widget)) gdk_window_move_resize(widget->window, allocation->x, allocation->y, allocation->width, allocation->height); hippo_canvas_helper_size_allocate(canvas->helper, allocation); } static gboolean hippo_canvas_button_press(GtkWidget *widget, GdkEventButton *event) { HippoCanvas *canvas = HIPPO_CANVAS(widget); if (canvas->helper == NULL) return FALSE; /* we've already been destroyed */ if (event->window == widget->window) return hippo_canvas_helper_button_press(canvas->helper, event); else return FALSE; } static gboolean hippo_canvas_button_release(GtkWidget *widget, GdkEventButton *event) { HippoCanvas *canvas = HIPPO_CANVAS(widget); if (canvas->helper == NULL) return FALSE; /* we've already been destroyed */ if (event->window == widget->window) return hippo_canvas_helper_button_release(canvas->helper, event); else return FALSE; } static gboolean hippo_canvas_enter_notify(GtkWidget *widget, GdkEventCrossing *event) { HippoCanvas *canvas = HIPPO_CANVAS(widget); if (canvas->helper == NULL) return FALSE; /* we've already been destroyed */ if (event->window == widget->window) return hippo_canvas_helper_enter_notify(canvas->helper, event); else return FALSE; } static gboolean hippo_canvas_leave_notify(GtkWidget *widget, GdkEventCrossing *event) { HippoCanvas *canvas = HIPPO_CANVAS(widget); if (canvas->helper == NULL) return FALSE; /* we've already been destroyed */ if (event->window == widget->window) return hippo_canvas_helper_leave_notify(canvas->helper, event); else return FALSE; } static gboolean hippo_canvas_motion_notify(GtkWidget *widget, GdkEventMotion *event) { HippoCanvas *canvas = HIPPO_CANVAS(widget); if (canvas->helper == NULL) return FALSE; /* we've already been destroyed */ if (event->window == widget->window) return hippo_canvas_helper_motion_notify(canvas->helper, event); else return FALSE; } static gboolean hippo_canvas_scroll(GtkWidget *widget, GdkEventScroll *event) { HippoCanvas *canvas = HIPPO_CANVAS(widget); if (canvas->helper == NULL) return FALSE; /* we've already been destroyed */ if (event->window == widget->window) return hippo_canvas_helper_scroll(canvas->helper, event); else return FALSE; } static void hippo_canvas_realize(GtkWidget *widget) { HippoCanvas *canvas = HIPPO_CANVAS(widget); GdkWindowAttr attributes; gint attributes_mask; GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED); attributes.window_type = GDK_WINDOW_CHILD; attributes.x = widget->allocation.x; attributes.y = widget->allocation.y; attributes.width = widget->allocation.width; attributes.height = widget->allocation.height; attributes.wclass = GDK_INPUT_OUTPUT; attributes.visual = gtk_widget_get_visual (widget); attributes.colormap = gtk_widget_get_colormap (widget); attributes.event_mask = gtk_widget_get_events (widget); attributes.event_mask |= GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK; attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; widget->window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, attributes_mask); gdk_window_set_user_data (widget->window, widget); widget->style = gtk_style_attach (widget->style, widget->window); hippo_canvas_helper_set_window_background(canvas->helper, widget->window); hippo_canvas_helper_realize(canvas->helper); } static void hippo_canvas_style_set (GtkWidget *widget, GtkStyle *previous_style) { if (GTK_WIDGET_REALIZED (widget)) { HippoCanvas *canvas = HIPPO_CANVAS(widget); hippo_canvas_helper_set_window_background(canvas->helper, widget->window); } } static void hippo_canvas_unmap(GtkWidget *widget) { HippoCanvas *canvas = HIPPO_CANVAS(widget); hippo_canvas_helper_unmap(canvas->helper); GTK_WIDGET_CLASS(hippo_canvas_parent_class)->unmap(widget); } static void hippo_canvas_hierarchy_changed (GtkWidget *widget, GtkWidget *old_toplevel) { HippoCanvas *canvas = HIPPO_CANVAS(widget); if (canvas->helper) /* hierarchy changed can happen during dispose */ hippo_canvas_helper_hierarchy_changed(canvas->helper, old_toplevel); if (GTK_WIDGET_CLASS(hippo_canvas_parent_class)->hierarchy_changed) GTK_WIDGET_CLASS(hippo_canvas_parent_class)->hierarchy_changed(widget, old_toplevel); } static void hippo_canvas_add(GtkContainer *container, GtkWidget *widget) { HippoCanvas *canvas = HIPPO_CANVAS(container); hippo_canvas_helper_add(canvas->helper, widget); } static void hippo_canvas_remove(GtkContainer *container, GtkWidget *widget) { HippoCanvas *canvas = HIPPO_CANVAS(container); hippo_canvas_helper_remove(canvas->helper, widget); } static void hippo_canvas_forall(GtkContainer *container, gboolean include_internals, GtkCallback callback, gpointer callback_data) { HippoCanvas *canvas = HIPPO_CANVAS(container); if (canvas->helper) /* can happen during dispose */ hippo_canvas_helper_forall(canvas->helper, include_internals, callback, callback_data); } static GType hippo_canvas_child_type(GtkContainer *container) { HippoCanvas *canvas = HIPPO_CANVAS(container); return hippo_canvas_helper_child_type(canvas->helper); } void hippo_canvas_set_load_image_hook(HippoCanvasLoadImageHook hook) { hippo_canvas_helper_set_load_image_hook(hook); } void hippo_canvas_set_root(HippoCanvas *canvas, HippoCanvasItem *root) { g_return_if_fail(HIPPO_IS_CANVAS(canvas)); g_return_if_fail(root == NULL || HIPPO_IS_CANVAS_ITEM(root)); hippo_canvas_helper_set_root(canvas->helper, root); } void hippo_canvas_set_theme(HippoCanvas *canvas, HippoCanvasTheme *theme) { g_return_if_fail(HIPPO_IS_CANVAS(canvas)); hippo_canvas_helper_set_theme(canvas->helper, theme); if (GTK_WIDGET_REALIZED(canvas)) hippo_canvas_helper_set_window_background(canvas->helper, GTK_WIDGET(canvas)->window); } void hippo_canvas_set_width(HippoCanvas *canvas, int width) { g_return_if_fail(HIPPO_IS_CANVAS(canvas)); hippo_canvas_helper_set_width(canvas->helper, width); } HippoCanvasContext * hippo_canvas_get_context(HippoCanvas *canvas) { g_return_val_if_fail(HIPPO_IS_CANVAS(canvas), NULL); return HIPPO_CANVAS_CONTEXT(canvas->helper); } GtkWidget * hippo_canvas_get_canvas_for_item(HippoCanvasItem *item) { HippoCanvasContainer *parent; HippoCanvasContext *context; g_return_val_if_fail(HIPPO_IS_CANVAS_ITEM(item), NULL); while ((parent = hippo_canvas_item_get_parent(item)) != NULL) { g_return_val_if_fail(HIPPO_IS_CANVAS_ITEM(item), NULL); item = HIPPO_CANVAS_ITEM(parent); } context = hippo_canvas_item_get_context(item); if (HIPPO_IS_CANVAS_HELPER(context)) return hippo_canvas_helper_get_widget(HIPPO_CANVAS_HELPER(context)); else return NULL; } /* TEST CODE */ #if 1 #include #include void hippo_canvas_open_test_window(void) { GtkWidget *window; GtkWidget *scrolled; GtkWidget *canvas; HippoCanvasItem *root; window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_container_set_border_width(GTK_CONTAINER(window), 10); canvas = hippo_canvas_new(); gtk_widget_show(canvas); scrolled = gtk_scrolled_window_new(NULL,NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled), GTK_SHADOW_NONE); gtk_container_add(GTK_CONTAINER(window), scrolled); gtk_widget_show(scrolled); gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled), canvas); gtk_viewport_set_shadow_type(GTK_VIEWPORT(gtk_bin_get_child(GTK_BIN(scrolled))), GTK_SHADOW_NONE); root = hippo_canvas_test_get_root(); hippo_canvas_set_root(HIPPO_CANVAS(canvas), root); gtk_window_set_default_size(GTK_WINDOW(window), 300, 300); gtk_widget_show(window); } #endif /* test code */ hippo-canvas-0.3.1/linux/hippo/hippo-canvas-window.h0000664000076400007640000000312211366237063017367 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_CANVAS_WINDOW_H__ #define __HIPPO_CANVAS_WINDOW_H__ /* A window that contains only a root HippoCanvasItem */ #include #include G_BEGIN_DECLS typedef struct _HippoCanvasWindow HippoCanvasWindow; typedef struct _HippoCanvasWindowClass HippoCanvasWindowClass; #define HIPPO_TYPE_CANVAS_WINDOW (hippo_canvas_window_get_type ()) #define HIPPO_CANVAS_WINDOW(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_CANVAS_WINDOW, HippoCanvasWindow)) #define HIPPO_CANVAS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), HIPPO_TYPE_CANVAS_WINDOW, HippoCanvasWindowClass)) #define HIPPO_IS_CANVAS_WINDOW(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_CANVAS_WINDOW)) #define HIPPO_IS_CANVAS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), HIPPO_TYPE_CANVAS_WINDOW)) #define HIPPO_CANVAS_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), HIPPO_TYPE_CANVAS_WINDOW, HippoCanvasWindowClass)) GType hippo_canvas_window_get_type (void) G_GNUC_CONST; GtkWidget* hippo_canvas_window_new (void); void hippo_canvas_window_set_root(HippoCanvasWindow *canvas_window, HippoCanvasItem *item); void hippo_canvas_window_set_theme(HippoCanvasWindow *canvas_window, HippoCanvasTheme *theme); HippoCanvasContext *hippo_canvas_window_get_context(HippoCanvasWindow *canvas_window); G_END_DECLS #endif /* __HIPPO_CANVAS_WINDOW_H__ */ hippo-canvas-0.3.1/linux/hippo/hippo-canvas-widget.c0000664000076400007640000003351011366237063017342 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include #include #include #include #include "hippo-canvas-widget.h" #include "hippo-canvas-style.h" static void hippo_canvas_widget_init (HippoCanvasWidget *widget); static void hippo_canvas_widget_class_init (HippoCanvasWidgetClass *klass); static void hippo_canvas_widget_iface_init (HippoCanvasItemIface *item_class); static void hippo_canvas_widget_dispose (GObject *object); static void hippo_canvas_widget_finalize (GObject *object); static void hippo_canvas_widget_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); static void hippo_canvas_widget_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); /* Canvas item methods */ static void hippo_canvas_widget_set_context (HippoCanvasItem *item, HippoCanvasContext *context); static void hippo_canvas_widget_allocate (HippoCanvasItem *item, int width, int height, gboolean origin_changed); /* Canvas box methods */ static void hippo_canvas_widget_paint_below_children (HippoCanvasBox *box, cairo_t *cr, GdkRegion *damaged_region); static void hippo_canvas_widget_get_content_width_request (HippoCanvasBox *box, int *min_width_p, int *natural_width_p); static void hippo_canvas_widget_get_content_height_request (HippoCanvasBox *box, int for_width, int *min_height_p, int *natural_height_p); enum { NO_SIGNALS_YET, LAST_SIGNAL }; /* static int signals[LAST_SIGNAL]; */ enum { PROP_0, PROP_WIDGET }; G_DEFINE_TYPE_WITH_CODE(HippoCanvasWidget, hippo_canvas_widget, HIPPO_TYPE_CANVAS_BOX, G_IMPLEMENT_INTERFACE(HIPPO_TYPE_CANVAS_ITEM, hippo_canvas_widget_iface_init)); static void hippo_canvas_widget_init(HippoCanvasWidget *widget) { } static HippoCanvasItemIface *item_parent_class; static void hippo_canvas_widget_iface_init(HippoCanvasItemIface *item_class) { item_parent_class = g_type_interface_peek_parent(item_class); item_class->set_context = hippo_canvas_widget_set_context; item_class->allocate = hippo_canvas_widget_allocate; } static void hippo_canvas_widget_class_init(HippoCanvasWidgetClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); HippoCanvasBoxClass *box_class = HIPPO_CANVAS_BOX_CLASS(klass); object_class->set_property = hippo_canvas_widget_set_property; object_class->get_property = hippo_canvas_widget_get_property; object_class->dispose = hippo_canvas_widget_dispose; object_class->finalize = hippo_canvas_widget_finalize; box_class->paint_below_children = hippo_canvas_widget_paint_below_children; box_class->get_content_width_request = hippo_canvas_widget_get_content_width_request; box_class->get_content_height_request = hippo_canvas_widget_get_content_height_request; g_object_class_install_property(object_class, PROP_WIDGET, g_param_spec_object("widget", _("Widget"), _("Widget to put in the canvas item"), GTK_TYPE_WIDGET, G_PARAM_READABLE | G_PARAM_WRITABLE)); } static void hippo_canvas_widget_dispose(GObject *object) { HippoCanvasWidget *widget = HIPPO_CANVAS_WIDGET(object); if (widget->widget) { g_object_unref(widget->widget); widget->widget = NULL; g_object_notify(object, "widget"); } G_OBJECT_CLASS(hippo_canvas_widget_parent_class)->dispose(object); } static void hippo_canvas_widget_finalize(GObject *object) { /* HippoCanvasWidget *widget = HIPPO_CANVAS_WIDGET(object); */ G_OBJECT_CLASS(hippo_canvas_widget_parent_class)->finalize(object); } HippoCanvasItem* hippo_canvas_widget_new(void) { HippoCanvasWidget *widget = g_object_new(HIPPO_TYPE_CANVAS_WIDGET, NULL); return HIPPO_CANVAS_ITEM(widget); } static void update_widget_visibility(HippoCanvasWidget *widget) { int w, h; if (widget->widget == NULL) return; hippo_canvas_item_get_allocation(HIPPO_CANVAS_ITEM(widget), &w, &h); if (w == 0 || h == 0) gtk_widget_hide(widget->widget); else gtk_widget_show(widget->widget); } static void hippo_canvas_widget_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { HippoCanvasWidget *widget; widget = HIPPO_CANVAS_WIDGET(object); switch (prop_id) { case PROP_WIDGET: { GtkWidget *w = (GtkWidget*) g_value_get_object(value); if (widget->widget != w) { if (w) { gtk_object_ref(GTK_OBJECT(w)); gtk_object_sink(GTK_OBJECT(w)); } if (widget->widget) g_object_unref(widget->widget); widget->widget = w; update_widget_visibility(widget); hippo_canvas_item_emit_request_changed(HIPPO_CANVAS_ITEM(widget)); } } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } } static void hippo_canvas_widget_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { HippoCanvasWidget *widget; widget = HIPPO_CANVAS_WIDGET (object); switch (prop_id) { case PROP_WIDGET: g_value_set_object(value, widget->widget); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } } static void on_context_style_changed(HippoCanvasContext *context, gboolean resize_needed, HippoCanvasWidget *widget) { HippoCanvasStyle *style = NULL; HippoCanvasTheme *theme = NULL; if (context != NULL) style = hippo_canvas_context_get_style(context); if (style != NULL) theme = hippo_canvas_style_get_theme(style); if (theme != widget->theme) { widget->theme = theme; if (HIPPO_CANVAS_WIDGET_GET_CLASS(widget)->theme_changed) HIPPO_CANVAS_WIDGET_GET_CLASS(widget)->theme_changed(widget); } } static void hippo_canvas_widget_set_context(HippoCanvasItem *item, HippoCanvasContext *context) { HippoCanvasBox *box = HIPPO_CANVAS_BOX(item); if (context == box->context) return; if (box->context) { hippo_canvas_context_unregister_widget_item(box->context, item); g_signal_handlers_disconnect_by_func(box->context, (gpointer)on_context_style_changed, item); } /* chain up, which invalidates our old context */ item_parent_class->set_context(item, context); if (box->context) { hippo_canvas_context_register_widget_item(box->context, item); g_signal_connect(box->context, "style-changed", G_CALLBACK(on_context_style_changed), item); } on_context_style_changed(context, TRUE, HIPPO_CANVAS_WIDGET(item)); } static void hippo_canvas_widget_allocate(HippoCanvasItem *item, int width, int height, gboolean origin_changed) { int x, y, w, h; int widget_x, widget_y; GtkAllocation child_allocation; HippoCanvasWidget *widget; HippoCanvasBox *box; widget = HIPPO_CANVAS_WIDGET(item); box = HIPPO_CANVAS_BOX(item); /* get the box set up */ item_parent_class->allocate(item, width, height, origin_changed); if (widget->widget == NULL) return; /* this probably queues a resize, which is not ideal */ update_widget_visibility(widget); /* Now do the GTK allocation for the child widget */ w = widget->widget->requisition.width; h = widget->widget->requisition.height; hippo_canvas_box_align(box, w, h, &x, &y, &w, &h); widget_x = 0; widget_y = 0; if (box->context) hippo_canvas_context_translate_to_widget(box->context, item, &widget_x, &widget_y); child_allocation.x = widget_x + x; child_allocation.y = widget_y + y; child_allocation.width = MAX(w, 1); child_allocation.height = MAX(h, 1); gtk_widget_size_allocate(widget->widget, &child_allocation); } static void hippo_canvas_widget_paint_below_children(HippoCanvasBox *box, cairo_t *cr, GdkRegion *damaged_region) { HippoCanvasWidget *widget = HIPPO_CANVAS_WIDGET(box); if (widget->widget == NULL) return; /* For now the HippoCanvas is responsible for drawing all widgets; it * plops them all on top, after rending all canvas items. * * For no-window widgets, adding a canvas_context_paint_widget_item() to * call right here * is a simple way to get them in the right z-order, if we ever * need it. */ } static void hippo_canvas_widget_get_content_width_request(HippoCanvasBox *box, int *min_width_p, int *natural_width_p) { HippoCanvasWidget *widget = HIPPO_CANVAS_WIDGET(box); int children_min_width, children_natural_width; int widget_width; GtkRequisition req; HIPPO_CANVAS_BOX_CLASS(hippo_canvas_widget_parent_class)->get_content_width_request(box, &children_min_width, &children_natural_width); /* Note that we get the widget's size request even if the GTK widget visibility flag is * false; that's because we are slaving GTK visibility to whether we have a nonzero * allocation (canvas item visibility), so it would make a circular mess if * our size request depended on visibility. This means you can't set visibility * on the underlying GtkWidget and expect anything sensible to happen. */ if (widget->widget) { gtk_widget_size_request(widget->widget, &req); widget_width = req.width; } else { widget_width = 0; } if (min_width_p) *min_width_p = MAX(widget_width, children_min_width); if (natural_width_p) *natural_width_p = MAX(widget_width, children_natural_width); } static void hippo_canvas_widget_get_content_height_request(HippoCanvasBox *box, int for_width, int *min_height_p, int *natural_height_p) { HippoCanvasWidget *widget = HIPPO_CANVAS_WIDGET(box); int children_min_height, children_natural_height; int widget_height; GtkRequisition req; /* get height of children and the box padding */ HIPPO_CANVAS_BOX_CLASS(hippo_canvas_widget_parent_class)->get_content_height_request(box, for_width, &children_min_height, &children_natural_height); /* Note that we get the widget's size request even if the GTK widget visibility flag is * false; that's because we are slaving GTK visibility to whether we have a nonzero * allocation (canvas item visibility), so it would make a circular mess if * our size request depended on visibility. This means you can't set visibility * on the underlying GtkWidget and expect anything sensible to happen. */ if (widget->widget) { /* We know a get_height_request was done first, so we can * just get widget->requisition instead of doing the size request * computation again. */ gtk_widget_get_child_requisition(widget->widget, &req); widget_height = req.height; } else { widget_height = 0; } if (min_height_p) *min_height_p = MAX(widget_height, children_min_height); if (natural_height_p) *natural_height_p = MAX(widget_height, children_natural_height); } hippo-canvas-0.3.1/linux/hippo/hippo-canvas-widget.h0000664000076400007640000000305111366237063017344 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_CANVAS_WIDGET_H__ #define __HIPPO_CANVAS_WIDGET_H__ /* A canvas item that holds a spot in the canvas for a widget */ #include #include #include #include G_BEGIN_DECLS typedef struct _HippoCanvasWidget HippoCanvasWidget; typedef struct _HippoCanvasWidgetClass HippoCanvasWidgetClass; #define HIPPO_TYPE_CANVAS_WIDGET (hippo_canvas_widget_get_type ()) #define HIPPO_CANVAS_WIDGET(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_CANVAS_WIDGET, HippoCanvasWidget)) #define HIPPO_CANVAS_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), HIPPO_TYPE_CANVAS_WIDGET, HippoCanvasWidgetClass)) #define HIPPO_IS_CANVAS_WIDGET(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_CANVAS_WIDGET)) #define HIPPO_IS_CANVAS_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), HIPPO_TYPE_CANVAS_WIDGET)) #define HIPPO_CANVAS_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), HIPPO_TYPE_CANVAS_WIDGET, HippoCanvasWidgetClass)) struct _HippoCanvasWidget { HippoCanvasBox box; HippoCanvasTheme *theme; GtkWidget *widget; }; struct _HippoCanvasWidgetClass { HippoCanvasBoxClass parent_class; void (*theme_changed) (HippoCanvasWidget *widget); }; GType hippo_canvas_widget_get_type (void) G_GNUC_CONST; HippoCanvasItem* hippo_canvas_widget_new (void); G_END_DECLS #endif /* __HIPPO_CANVAS_WIDGET_H__ */ hippo-canvas-0.3.1/linux/hippo/hippo-canvas-helper.c0000664000076400007640000014070111403414667017336 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include #include #include #include #include #include #include "hippo-canvas-widget.h" #include "hippo-canvas-helper.h" #include /* for GTK_WIDGET_ALLOC_NEEDED */ #include #include #include #include /* Gap between the area we are tipping and the tooltip */ #define TOOLTIP_PADDING 4 /* Maximum width of a tippable area before we position the tooltip by the pointer */ #define MAX_TOOLTIP_AREA_WIDTH 400 /* Maximum height of a tippable area before we position the tooltip by the pointer */ #define MAX_TOOLTIP_AREA_HEIGHT 40 /* When positioning by the pointer, X/Y offset */ #define TOOLTIP_OFFSET 15 typedef struct { HippoCanvasItem *item; GtkWidget *widget; } RegisteredWidgetItem; static void hippo_canvas_helper_init (HippoCanvasHelper *helper); static void hippo_canvas_helper_class_init (HippoCanvasHelperClass *klass); static void hippo_canvas_helper_dispose (GObject *object); static void hippo_canvas_helper_finalize (GObject *object); static void hippo_canvas_helper_iface_init (HippoCanvasContextIface *klass); static void hippo_canvas_helper_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); static void hippo_canvas_helper_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); static PangoLayout* hippo_canvas_helper_create_layout (HippoCanvasContext *context); static cairo_surface_t* hippo_canvas_helper_create_surface (HippoCanvasContext *context, cairo_content_t content, int width, int height); static cairo_surface_t* hippo_canvas_helper_load_image (HippoCanvasContext *context, const char *image_name); static guint32 hippo_canvas_helper_get_color (HippoCanvasContext *context, HippoStockColor color); static void hippo_canvas_helper_register_widget_item (HippoCanvasContext *context, HippoCanvasItem *item); static void hippo_canvas_helper_unregister_widget_item (HippoCanvasContext *context, HippoCanvasItem *item); static void hippo_canvas_helper_translate_to_widget (HippoCanvasContext *context, HippoCanvasItem *item, int *x_p, int *y_p); static void hippo_canvas_helper_translate_to_screen (HippoCanvasContext *context, HippoCanvasItem *item, int *x_p, int *y_p); HippoCanvasStyle * hippo_canvas_helper_get_style (HippoCanvasContext *context); double hippo_canvas_helper_get_resolution (HippoCanvasContext *context); PangoFontDescription *hippo_canvas_helper_get_font (HippoCanvasContext *context); HippoAnimationManager *hippo_canvas_helper_get_animation_manager (HippoCanvasContext *context); static void hippo_canvas_helper_fixup_resize_state (HippoCanvasHelper *canvas); static void on_animation_manager_after_frame (HippoAnimationManager *manager, guint frame_serial, HippoCanvasHelper *helper); static void tooltip_window_update (GtkWidget *tip, GdkScreen *screen, int mouse_x, int mouse_y, HippoRectangle *for_area, const char *text); static GtkWidget* tooltip_window_new (void); struct _HippoCanvasHelper { GObject parent; GtkWidget *widget; HippoCanvasTheme *theme; HippoCanvasStyle *style; HippoCanvasItem *root; HippoCanvasPointer pointer; GtkWidget *tooltip_window; int width; guint tooltip_timeout_id; int last_window_x; int last_window_y; int last_allocated_border; GSList *widget_items; HippoAnimationManager *animation_manager; guint frame_serial; unsigned int root_hovering : 1; unsigned int fixing_up_resize_state : 1; unsigned int need_background_paint : 1; unsigned int frame_pending : 1; }; struct _HippoCanvasHelperClass { GObjectClass parent_class; }; enum { NO_SIGNALS_YET, LAST_SIGNAL }; /* static int signals[LAST_SIGNAL]; */ enum { PROP_0 }; G_DEFINE_TYPE_WITH_CODE(HippoCanvasHelper, hippo_canvas_helper, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE(HIPPO_TYPE_CANVAS_CONTEXT, hippo_canvas_helper_iface_init)); static void hippo_canvas_helper_init(HippoCanvasHelper *helper) { helper->width = -1; helper->pointer = HIPPO_CANVAS_POINTER_UNSET; helper->last_window_x = -1; helper->last_window_y = -1; helper->animation_manager = hippo_animation_manager_new(); g_signal_connect(helper->animation_manager, "after-frame", G_CALLBACK(on_animation_manager_after_frame), helper); } static void hippo_canvas_helper_class_init(HippoCanvasHelperClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->set_property = hippo_canvas_helper_set_property; object_class->get_property = hippo_canvas_helper_get_property; object_class->dispose = hippo_canvas_helper_dispose; object_class->finalize = hippo_canvas_helper_finalize; } static void hippo_canvas_helper_iface_init (HippoCanvasContextIface *klass) { klass->create_layout = hippo_canvas_helper_create_layout; klass->create_surface = hippo_canvas_helper_create_surface; klass->load_image = hippo_canvas_helper_load_image; klass->get_color = hippo_canvas_helper_get_color; klass->register_widget_item = hippo_canvas_helper_register_widget_item; klass->unregister_widget_item = hippo_canvas_helper_unregister_widget_item; klass->translate_to_widget = hippo_canvas_helper_translate_to_widget; klass->translate_to_screen = hippo_canvas_helper_translate_to_screen; klass->get_style = hippo_canvas_helper_get_style; klass->get_resolution = hippo_canvas_helper_get_resolution; klass->get_font = hippo_canvas_helper_get_font; klass->get_animation_manager = hippo_canvas_helper_get_animation_manager; } static void cancel_tooltip(HippoCanvasHelper *helper) { if (helper->tooltip_timeout_id) { g_source_remove(helper->tooltip_timeout_id); helper->tooltip_timeout_id = 0; } if (helper->tooltip_window) gtk_widget_hide(helper->tooltip_window); } static void hippo_canvas_helper_dispose(GObject *object) { HippoCanvasHelper *helper = HIPPO_CANVAS_HELPER(object); if (helper->root != NULL) { HippoCanvasItem *old_root = g_object_ref(helper->root); hippo_canvas_helper_set_root(helper, NULL); hippo_canvas_helper_set_theme(helper, NULL); hippo_canvas_item_destroy(old_root); g_object_unref(old_root); } g_assert(helper->widget_items == NULL); cancel_tooltip(helper); if (helper->tooltip_window) { gtk_object_destroy(GTK_OBJECT(helper->tooltip_window)); helper->tooltip_window = NULL; } if (helper->animation_manager) { g_signal_handlers_disconnect_by_func(helper->animation_manager, (gpointer)on_animation_manager_after_frame, helper); g_object_unref(helper->animation_manager); helper->animation_manager = NULL; } G_OBJECT_CLASS(hippo_canvas_helper_parent_class)->dispose(object); } static void hippo_canvas_helper_finalize(GObject *object) { /* HippoCanvasHelper *helper = HIPPO_CANVAS_HELPER(object); */ G_OBJECT_CLASS(hippo_canvas_helper_parent_class)->finalize(object); } static void hippo_canvas_helper_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { #if 0 HippoCanvasHelper *helper = HIPPO_CANVAS_HELPER(object); #endif switch (prop_id) { default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } } static void hippo_canvas_helper_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { #if 0 HippoCanvasHelper *helper = HIPPO_CANVAS_HELPER(object); #endif switch (prop_id) { default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } } HippoCanvasHelper* hippo_canvas_helper_new(GtkContainer *base_container) { HippoCanvasHelper *helper; g_return_val_if_fail(GTK_IS_CONTAINER(base_container), NULL); helper = g_object_new(HIPPO_TYPE_CANVAS_HELPER, NULL); helper->widget = GTK_WIDGET(base_container); return helper; } static void set_pointer(HippoCanvasHelper *helper, HippoCanvasPointer pointer) { GdkCursor *cursor; GtkWidget *widget; GdkWindow *event_window; /* important optimization since we do this on all motion notify */ if (helper->pointer == pointer) return; widget = helper->widget; helper->pointer = pointer; if (pointer == HIPPO_CANVAS_POINTER_UNSET || pointer == HIPPO_CANVAS_POINTER_DEFAULT) cursor = NULL; else { GdkCursorType type = GDK_X_CURSOR; switch (pointer) { case HIPPO_CANVAS_POINTER_HAND: type = GDK_HAND2; break; case HIPPO_CANVAS_POINTER_UNSET: case HIPPO_CANVAS_POINTER_DEFAULT: g_assert_not_reached(); break; /* don't add a default, breaks compiler warnings */ } cursor = gdk_cursor_new_for_display(gtk_widget_get_display(widget), type); } event_window = widget->window; gdk_window_set_cursor(event_window, cursor); gdk_display_flush(gtk_widget_get_display(widget)); if (cursor != NULL) gdk_cursor_unref(cursor); } static void get_root_item_window_coords(HippoCanvasHelper *helper, int *x_p, int *y_p) { GtkWidget *widget = helper->widget; if (x_p) *x_p = GTK_CONTAINER(widget)->border_width; if (y_p) *y_p = GTK_CONTAINER(widget)->border_width; if (GTK_WIDGET_NO_WINDOW(widget)) { if (x_p) *x_p += widget->allocation.x; if (y_p) *y_p += widget->allocation.y; } } static void update_tooltip(HippoCanvasHelper *helper, gboolean show_if_not_already) { char *tip; HippoRectangle for_area; GtkWidget *toplevel; int mouse_x; int mouse_y; if ((helper->tooltip_window == NULL || !GTK_WIDGET_VISIBLE(helper->tooltip_window)) && !show_if_not_already) return; toplevel = gtk_widget_get_ancestor(helper->widget, GTK_TYPE_WINDOW); tip = NULL; if (helper->root != NULL && toplevel && GTK_WIDGET_VISIBLE(toplevel) && GTK_WIDGET_VISIBLE(helper->widget)) { int window_x, window_y; get_root_item_window_coords(helper, &window_x, &window_y); mouse_x = helper->last_window_x - window_x; mouse_y = helper->last_window_y - window_y; tip = hippo_canvas_item_get_tooltip(helper->root, mouse_x, mouse_y, &for_area); for_area.x += window_x; for_area.y += window_y; } if (tip != NULL) { int screen_x, screen_y; if (helper->tooltip_window == NULL) { helper->tooltip_window = tooltip_window_new(); } gdk_window_get_origin(helper->widget->window, &screen_x, &screen_y); for_area.x += screen_x; for_area.y += screen_y; mouse_x += screen_x; mouse_y += screen_y; tooltip_window_update(helper->tooltip_window, gtk_widget_get_screen(helper->widget), mouse_x, mouse_y, &for_area, tip); gtk_widget_show(helper->tooltip_window); g_free(tip); } } static gboolean allocate_pending_on_widget(GtkWidget *widget) { return GTK_WIDGET_ALLOC_NEEDED(widget); } static gboolean expose_pending_on_window(GdkWindow *window) { /* This will not work properly for the OS X port of GTK+ */ return ((GdkWindowObject *)window)->update_area != NULL; } static void on_animation_manager_after_frame (HippoAnimationManager *manager, guint frame_serial, HippoCanvasHelper *helper) { /* A frame has finished; we now need to wait until all resizing * and redrawing and then call * hippo_animation_manager_frame_complete(). */ if (!allocate_pending_on_widget(helper->widget) && !expose_pending_on_window(helper->widget->window)) { /* Nothing to do, we can call frame_complete() immediately */ hippo_animation_manager_frame_complete(manager, frame_serial); } else { helper->frame_serial = frame_serial; helper->frame_pending = TRUE; } } gboolean hippo_canvas_helper_expose_event(HippoCanvasHelper *helper, GdkEventExpose *event) { cairo_t *cr; cr = gdk_cairo_create(event->window); if (helper->need_background_paint) { HippoCanvasStyle *style = hippo_canvas_context_get_style(HIPPO_CANVAS_CONTEXT(helper)); guint32 color = hippo_canvas_style_get_background_color(style); cairo_save(cr); cairo_set_source_rgba(cr, ((color & 0xFF000000) >> 24) / 255., ((color & 0x00FF0000) >> 16) / 255., ((color & 0x0000FF00) >> 8) / 255., ((color & 0x000000FF)) / 255.); cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE); cairo_paint(cr); cairo_restore(cr); } if (helper->root != NULL) { int window_x, window_y; get_root_item_window_coords(helper, &window_x, &window_y); hippo_canvas_item_process_paint(helper->root, cr, event->region, window_x, window_y); } cairo_destroy(cr); if (helper->frame_pending) { /* Resize occurs before redraw, so when we are done redrawing, we know we are * done with the frame */ /* In theory, we should actually wait for the frame to paint on the X server; * we could do this by changing a property and watching for the PropertyNotify * event or by using the XSync extension. Even better would be to communicate * with the compositing manager and wait until a frame containing the new * contents of our window has been drawn to the front buffer. * * In practice, the difference between that and just going ahead and starting * the next frame is going to be pretty small unless the balance * of server vs. client side efficiency changes a lot for cairo... the client * side of cairo currently doesn't keep up with the server. */ helper->frame_pending = FALSE; hippo_animation_manager_frame_complete(helper->animation_manager, helper->frame_serial); } return FALSE; } void hippo_canvas_helper_size_request(HippoCanvasHelper *helper, GtkRequisition *requisition) { /* g_debug("gtk request on canvas root %p canvas %p", helper->root, canvas); */ hippo_canvas_helper_fixup_resize_state(helper); requisition->width = 0; requisition->height = 0; if (helper->root != NULL) { int min_width, min_height; hippo_canvas_item_get_width_request(helper->root, &min_width, NULL); hippo_canvas_item_get_height_request(helper->root, MAX(helper->width, min_width), &min_height, NULL); requisition->width = min_width; requisition->height = min_height; } requisition->width += GTK_CONTAINER(helper->widget)->border_width * 2; requisition->height += GTK_CONTAINER(helper->widget)->border_width * 2; } void hippo_canvas_helper_size_allocate(HippoCanvasHelper *helper, GtkAllocation *allocation) { /* g_debug("gtk allocate on canvas root %p canvas %p", helper->root, canvas); */ if (helper->root != NULL) { int border_width = GTK_CONTAINER(helper->widget)->border_width; int child_width = allocation->width - border_width * 2; int child_height = allocation->height - border_width * 2; gboolean border_changed; border_changed = border_width = helper->last_allocated_border; helper->last_allocated_border = border_width; if (border_changed) gtk_widget_queue_draw(helper->widget); hippo_canvas_item_allocate(helper->root, child_width, child_height, border_changed); /* Tooltip might be in the wrong place now */ update_tooltip(helper, FALSE); } if (helper->frame_pending) { if (!helper->widget->window || !expose_pending_on_window(helper->widget->window)) { /* We resized, and there was nothing to draw, we can can call frame_complete() */ helper->frame_pending = FALSE; hippo_animation_manager_frame_complete(helper->animation_manager, helper->frame_serial); } } } gboolean hippo_canvas_helper_button_press(HippoCanvasHelper *helper, GdkEventButton *event) { int window_x, window_y; int count; if (helper->root == NULL) return FALSE; get_root_item_window_coords(helper, &window_x, &window_y); /* g_debug("canvas button press at %d,%d allocation %d,%d", (int) event->x, (int) event->y, widget->allocation.x, widget->allocation.y); */ count = 1; if (event->type == GDK_2BUTTON_PRESS) count = 2; else if (event->type == GDK_3BUTTON_PRESS) count = 3; hippo_canvas_item_emit_button_press_event(helper->root, event->x - window_x, event->y - window_y, event->button, event->x_root, event->y_root, event->time, count); return TRUE; } gboolean hippo_canvas_helper_button_release(HippoCanvasHelper *helper, GdkEventButton *event) { int window_x, window_y; if (helper->root == NULL) return FALSE; get_root_item_window_coords(helper, &window_x, &window_y); /* g_debug("canvas button release at %d,%d allocation %d,%d", (int) event->x, (int) event->y, widget->allocation.x, widget->allocation.y); */ hippo_canvas_item_emit_button_release_event(helper->root, event->x - window_x, event->y - window_y, event->button, event->x_root, event->y_root, event->time); return TRUE; } static gboolean tooltip_timeout(void *data) { HippoCanvasHelper *helper = HIPPO_CANVAS_HELPER(data); update_tooltip(helper, TRUE); helper->tooltip_timeout_id = 0; return FALSE; } #define TIP_DELAY (1000*1.5) static void add_tooltip_timeout(HippoCanvasHelper *helper, int delay) { if (helper->tooltip_timeout_id != 0) g_source_remove(helper->tooltip_timeout_id); helper->tooltip_timeout_id = g_timeout_add(delay, tooltip_timeout, helper); } static void handle_new_mouse_location(HippoCanvasHelper *helper, GdkWindow *event_window, HippoMotionDetail detail) { int mouse_x, mouse_y; int root_x_origin, root_y_origin; int root_x, root_y; int w, h; gboolean was_hovering; if (event_window != helper->widget->window) return; gdk_window_get_pointer(event_window, &mouse_x, &mouse_y, NULL); if (detail == HIPPO_MOTION_DETAIL_LEAVE) { cancel_tooltip(helper); } else if (mouse_x != helper->last_window_x || mouse_y != helper->last_window_y) { cancel_tooltip(helper); helper->last_window_x = mouse_x; helper->last_window_y = mouse_y; add_tooltip_timeout(helper, TIP_DELAY); } get_root_item_window_coords(helper, &root_x_origin, &root_y_origin); root_x = mouse_x - root_x_origin; root_y = mouse_y - root_y_origin; hippo_canvas_item_get_allocation(helper->root, &w, &h); #if 0 g_debug("%p mouse %d,%d root origin %d,%d root %d,%d root size %dx%d", helper->root, mouse_x, mouse_y, root_x_origin, root_y_origin, root_x, root_y, w, h); #endif was_hovering = helper->root_hovering; if (detail == HIPPO_MOTION_DETAIL_LEAVE) helper->root_hovering = FALSE; else helper->root_hovering = TRUE; /* g_debug(" was_hovering %d root_hovering %d", was_hovering, helper->root_hovering); */ if (was_hovering && !helper->root_hovering) { set_pointer(helper, HIPPO_CANVAS_POINTER_UNSET); hippo_canvas_item_emit_motion_notify_event(helper->root, root_x, root_y, HIPPO_MOTION_DETAIL_LEAVE); } else { HippoCanvasPointer pointer; pointer = hippo_canvas_item_get_pointer(helper->root, root_x, root_y); set_pointer(helper, pointer); if (helper->root_hovering && !was_hovering) { hippo_canvas_item_emit_motion_notify_event(helper->root, root_x, root_y, HIPPO_MOTION_DETAIL_ENTER); } else if (helper->root_hovering) { hippo_canvas_item_emit_motion_notify_event(helper->root, root_x, root_y, HIPPO_MOTION_DETAIL_WITHIN); } } } gboolean hippo_canvas_helper_enter_notify(HippoCanvasHelper *helper, GdkEventCrossing *event) { HippoMotionDetail detail; /* g_debug("motion notify GDK ENTER on %p root %p root_hovering %d", widget, helper->root, helper->root_hovering); */ if (helper->root == NULL) return FALSE; if (event->detail == GDK_NOTIFY_INFERIOR || event->window != helper->widget->window) detail = HIPPO_MOTION_DETAIL_WITHIN; else detail = HIPPO_MOTION_DETAIL_ENTER; handle_new_mouse_location(helper, event->window, detail); return FALSE; } gboolean hippo_canvas_helper_leave_notify(HippoCanvasHelper *helper, GdkEventCrossing *event) { HippoMotionDetail detail; /* g_debug("motion notify GDK LEAVE on %p root %p root_hovering %d", widget, helper->root, helper->root_hovering); */ if (helper->root == NULL) return FALSE; if (event->detail == GDK_NOTIFY_INFERIOR || event->window != helper->widget->window) detail = HIPPO_MOTION_DETAIL_WITHIN; else detail = HIPPO_MOTION_DETAIL_LEAVE; handle_new_mouse_location(helper, event->window, detail); return FALSE; } gboolean hippo_canvas_helper_motion_notify(HippoCanvasHelper *helper, GdkEventMotion *event) { /* g_debug("motion notify GDK MOTION on %p root %p root_hovering %d", widget, helper->root, helper->root_hovering); */ if (helper->root == NULL) return FALSE; handle_new_mouse_location(helper, event->window, HIPPO_MOTION_DETAIL_WITHIN); return FALSE; } gboolean hippo_canvas_helper_scroll (HippoCanvasHelper *helper, GdkEventScroll *event) { int window_x, window_y; if (helper->root == NULL) return FALSE; get_root_item_window_coords(helper, &window_x, &window_y); g_assert(GDK_SCROLL_UP == HIPPO_SCROLL_UP); g_assert(GDK_SCROLL_DOWN == HIPPO_SCROLL_DOWN); g_assert(GDK_SCROLL_LEFT == HIPPO_SCROLL_LEFT); g_assert(GDK_SCROLL_RIGHT == HIPPO_SCROLL_RIGHT); hippo_canvas_item_emit_scroll_event(helper->root, event->x - window_x, event->y - window_y, event->direction); return FALSE; } void hippo_canvas_helper_realize(HippoCanvasHelper *helper) { } void hippo_canvas_helper_unmap(HippoCanvasHelper *helper) { /* This is actually unnecessary and not useful, though harmless ... we don't * reliably get an unmap if some ancestor is hidden, but we do reliably * get a leave event, which we handle elsewhere. */ cancel_tooltip(helper); } void hippo_canvas_helper_hierarchy_changed (HippoCanvasHelper *helper, GtkWidget *old_toplevel) { cancel_tooltip(helper); } static int premultiply(int component, int alpha) { int temp = component * alpha + 0x80; return ((temp >> 8) + temp) >> 8; } void hippo_canvas_helper_set_window_background (HippoCanvasHelper *helper, GdkWindow *window) { HippoCanvasStyle *style = hippo_canvas_context_get_style(HIPPO_CANVAS_CONTEXT(helper)); guint32 color; helper->need_background_paint = FALSE; /* We don't use hippo_canvas_style_get_background_color() here because we treat * background-color: transparent on the canvas as being different from * not specifying it ... which should give us the theme color. Perhaps * a cleaner thing to do would be to support the CSS2 system colors * and have a default stylesheet with canvas { background-color: Window; } */ if (hippo_canvas_style_get_color(style, "background-color", FALSE, &color)) { GdkColormap *colormap = gdk_window_get_colormap(window); GdkVisual *visual = gdk_colormap_get_visual(colormap); GdkColor color_gdk; /* Special-case the RGBA visual. If visuals other than ARGB32 were in use * (say ABGR32) then we should support them here as well. */ if (visual->depth == 32 && visual->red_mask == 0xff0000 && visual->green_mask == 0x00ff00 && visual->blue_mask == 0x0000ff) { int alpha = color & 0x000000FF; if (alpha != 0xFF) /* GTK+ (as of 2.12) doesn't handle clearing to a RGBA color correctly * so we'll need to fix up the double-buffer pixmap ourself. */ helper->need_background_paint = TRUE; color_gdk.pixel = ((alpha << 24) | (premultiply((color & 0xFF000000) >> 24, alpha) << 16) | (premultiply((color & 0x00FF0000) >> 16, alpha) << 8) | (premultiply((color & 0x0000FF00) >> 8, alpha))); } else { color_gdk.red = (color & 0xFF000000) >> 24; color_gdk.red = color_gdk.red * 0x101; color_gdk.green = (color & 0x00FF0000) >> 16; color_gdk.green = color_gdk.green * 0x101; color_gdk.blue = (color & 0x0000FF00) >> 8; color_gdk.blue = color_gdk.blue * 0x101; gdk_rgb_find_color(colormap, &color_gdk); } gdk_window_set_background(window, &color_gdk); } else { gtk_style_set_background (helper->widget->style, window, GTK_STATE_NORMAL); } } void hippo_canvas_helper_add(HippoCanvasHelper *helper, GtkWidget *widget) { g_warning("hippo_canvas_add called, you have to just add an item with a widget in it, you can't do gtk_container_add directly"); } void hippo_canvas_helper_remove(HippoCanvasHelper *helper, GtkWidget *widget) { GSList *link; /* We go a little roundabout here - we remove the widget from the canvas * item, which causes us to remove it from ourselves. * The only time we expect gtk_container_remove to be called is from * gtk_object_destroy on e.g. the toplevel window, or something of * that nature. */ for (link = helper->widget_items; link != NULL; link = link->next) { RegisteredWidgetItem *witem = link->data; if (witem->widget == widget) { g_object_set(G_OBJECT(witem->item), "widget", NULL, NULL); return; } } g_warning("tried to remove widget %p that is not in the canvas", widget); } void hippo_canvas_helper_forall(HippoCanvasHelper *helper, gboolean include_internals, GtkCallback callback, gpointer callback_data) { GSList *link; for (link = helper->widget_items; link != NULL; link = link->next) { RegisteredWidgetItem *witem = link->data; if (witem->widget) (* callback) (witem->widget, callback_data); } } GType hippo_canvas_helper_child_type(HippoCanvasHelper *helper) { /* FIXME: this is wrong, since you can't call add() */ return GTK_TYPE_WIDGET; } static PangoLayout* hippo_canvas_helper_create_layout(HippoCanvasContext *context) { HippoCanvasHelper *helper = HIPPO_CANVAS_HELPER(context); return gtk_widget_create_pango_layout(helper->widget, NULL); } static cairo_surface_t* hippo_canvas_helper_create_surface(HippoCanvasContext *context, cairo_content_t content, int width, int height) { /* This feels like a really round-about way of doing things, but * I can't think of a better way. There's no way to get a cairo * xlib surface without a visual other than create_similar(), and * no visual for CAIRO_FORMAT_ALPHA. */ HippoCanvasHelper *helper = HIPPO_CANVAS_HELPER(context); GdkScreen *screen = gtk_widget_get_screen(helper->widget); GdkDisplay *display = gdk_screen_get_display(screen); GdkWindow *root = gdk_screen_get_root_window(screen); GdkVisual *visual = gdk_drawable_get_visual(root); cairo_surface_t *root_surface; cairo_surface_t *surface; root_surface = cairo_xlib_surface_create(GDK_DISPLAY_XDISPLAY(display), GDK_DRAWABLE_XID(root), GDK_VISUAL_XVISUAL(visual), gdk_screen_get_width(screen), gdk_screen_get_height(screen)); surface = cairo_surface_create_similar(root_surface, content, width, height); cairo_surface_destroy(root_surface); return surface; } static HippoCanvasLoadImageHook hippo_canvas_helper_load_image_hook = NULL; void hippo_canvas_helper_set_load_image_hook(HippoCanvasLoadImageHook hook) { hippo_canvas_helper_load_image_hook = hook; } static cairo_surface_t* hippo_canvas_helper_load_image(HippoCanvasContext *context, const char *image_name) { if (hippo_canvas_helper_load_image_hook) { return hippo_canvas_helper_load_image_hook(context, image_name); } else { return NULL; } } static guint32 convert_color(GdkColor *gdk_color) { guint32 rgba; rgba = gdk_color->red / 256; rgba <<= 8; rgba |= gdk_color->green / 256; rgba <<= 8; rgba |= gdk_color->blue / 256; rgba <<= 8; rgba |= 0xff; /* alpha */ return rgba; } static guint32 hippo_canvas_helper_get_color(HippoCanvasContext *context, HippoStockColor color) { HippoCanvasHelper *helper = HIPPO_CANVAS_HELPER(context); GtkWidget *widget = helper->widget; GtkStyle *style = gtk_widget_get_style(widget); if (style == NULL) /* not realized yet, should not happen really */ return 0; switch (color) { case HIPPO_STOCK_COLOR_BG_NORMAL: return convert_color(&style->bg[GTK_STATE_NORMAL]); break; case HIPPO_STOCK_COLOR_BG_PRELIGHT: return convert_color(&style->bg[GTK_STATE_PRELIGHT]); break; case HIPPO_STOCK_COLOR_FG: return convert_color(&style->fg[GTK_STATE_NORMAL]); break; } g_warning("unknown stock color %d", color); return 0; } static void update_widget(HippoCanvasHelper *helper, RegisteredWidgetItem *witem) { GtkWidget *new_widget; new_widget = NULL; g_object_get(G_OBJECT(witem->item), "widget", &new_widget, NULL); if (new_widget == witem->widget) { if (new_widget) g_object_unref(new_widget); return; } if (new_widget) { /* note that this ref/sinks the widget */ gtk_widget_set_parent(new_widget, helper->widget); } if (witem->widget) { /* and this unrefs the widget */ gtk_widget_unparent(witem->widget); } witem->widget = new_widget; if (new_widget) g_object_unref(new_widget); } static void on_item_widget_changed(HippoCanvasItem *item, GParamSpec *arg, void *data) { HippoCanvasHelper *helper = HIPPO_CANVAS_HELPER(data); RegisteredWidgetItem *witem; GSList *link; witem = NULL; for (link = helper->widget_items; link != NULL; link = link->next) { witem = link->data; if (witem->item == item) { update_widget(helper, witem); return; } } g_warning("got widget changed for an unregistered widget item"); } static void add_widget_item(HippoCanvasHelper *helper, HippoCanvasItem *item) { RegisteredWidgetItem *witem = g_new0(RegisteredWidgetItem, 1); witem->item = item; g_object_ref(witem->item); helper->widget_items = g_slist_prepend(helper->widget_items, witem); update_widget(helper, witem); g_signal_connect(G_OBJECT(item), "notify::widget", G_CALLBACK(on_item_widget_changed), helper); } static void remove_widget_item(HippoCanvasHelper *helper, HippoCanvasItem *item) { RegisteredWidgetItem *witem; GSList *link; witem = NULL; for (link = helper->widget_items; link != NULL; link = link->next) { witem = link->data; if (witem->item == item) break; } if (link == NULL) { g_warning("removing a not-registered widget item"); return; } helper->widget_items = g_slist_remove(helper->widget_items, witem); g_signal_handlers_disconnect_by_func(G_OBJECT(witem->item), G_CALLBACK(on_item_widget_changed), helper); if (witem->widget) { gtk_widget_unparent(witem->widget); witem->widget = NULL; } g_object_unref(witem->item); g_free(witem); } static void hippo_canvas_helper_register_widget_item(HippoCanvasContext *context, HippoCanvasItem *item) { HippoCanvasHelper *helper = HIPPO_CANVAS_HELPER(context); add_widget_item(helper, item); } static void hippo_canvas_helper_unregister_widget_item (HippoCanvasContext *context, HippoCanvasItem *item) { HippoCanvasHelper *helper = HIPPO_CANVAS_HELPER(context); remove_widget_item(helper, item); } static void hippo_canvas_helper_translate_to_widget(HippoCanvasContext *context, HippoCanvasItem *item, int *x_p, int *y_p) { HippoCanvasHelper *helper = HIPPO_CANVAS_HELPER(context); GtkWidget *widget = helper->widget; /* convert coords of root canvas item to coords of * widget->window */ if (GTK_WIDGET_NO_WINDOW(widget)) { if (x_p) *x_p += widget->allocation.x; if (y_p) *y_p += widget->allocation.y; } if (x_p) *x_p += GTK_CONTAINER(widget)->border_width; if (y_p) *y_p += GTK_CONTAINER(widget)->border_width; } static void hippo_canvas_helper_translate_to_screen(HippoCanvasContext *context, HippoCanvasItem *item, int *x_p, int *y_p) { HippoCanvasHelper *helper = HIPPO_CANVAS_HELPER(context); GtkWidget *widget = helper->widget; GdkWindow *window = widget->window; gint window_x, window_y; g_assert(window != NULL); /* convert coords of root canvas item to coords of * widget->window */ if (GTK_WIDGET_NO_WINDOW(widget)) { if (x_p) *x_p += widget->allocation.x; if (y_p) *y_p += widget->allocation.y; } gdk_window_get_origin(window, &window_x, &window_y); if (x_p) *x_p += window_x; if (y_p) *y_p += window_y; } HippoCanvasStyle * hippo_canvas_helper_get_style (HippoCanvasContext *context) { HippoCanvasHelper *helper = HIPPO_CANVAS_HELPER(context); if (helper->style == NULL) { helper->style = hippo_canvas_style_new(context, NULL, helper->theme, G_TYPE_NONE, NULL, NULL); } return helper->style; } double hippo_canvas_helper_get_resolution (HippoCanvasContext *context) { HippoCanvasHelper *helper = HIPPO_CANVAS_HELPER(context); return gdk_screen_get_resolution(gtk_widget_get_screen(helper->widget)); } PangoFontDescription * hippo_canvas_helper_get_font (HippoCanvasContext *context) { HippoCanvasHelper *helper = HIPPO_CANVAS_HELPER(context); return helper->widget->style->font_desc; } HippoAnimationManager * hippo_canvas_helper_get_animation_manager (HippoCanvasContext *context) { HippoCanvasHelper *helper = HIPPO_CANVAS_HELPER(context); return helper->animation_manager; } static void canvas_root_destroy(HippoCanvasItem *root, HippoCanvasHelper *helper) { hippo_canvas_helper_set_root(helper, NULL); } static void canvas_root_request_changed(HippoCanvasItem *root, HippoCanvasHelper *helper) { /* g_debug("queuing resize on canvas root %p canvas %p canvas container %p", root, canvas, helper->widget->parent); */ if (!helper->fixing_up_resize_state) gtk_widget_queue_resize_no_redraw(helper->widget); } static void canvas_root_paint_needed(HippoCanvasItem *root, const HippoRectangle *damage_box, HippoCanvasHelper *helper) { GtkWidget *widget = helper->widget; int window_x, window_y; get_root_item_window_coords(helper, &window_x, &window_y); gtk_widget_queue_draw_area(widget, damage_box->x + window_x, damage_box->y + window_y, damage_box->width, damage_box->height); } static void canvas_root_tooltip_changed(HippoCanvasItem *root, HippoCanvasHelper *helper) { update_tooltip(helper, FALSE); } void hippo_canvas_helper_set_root(HippoCanvasHelper *helper, HippoCanvasItem *root) { GtkWidget *widget; gboolean was_hovering = FALSE; g_return_if_fail(HIPPO_IS_CANVAS_HELPER(helper)); g_return_if_fail(root == NULL || HIPPO_IS_CANVAS_ITEM(root)); widget = helper->widget; if (root == helper->root) return; if (helper->root != NULL) { g_signal_handlers_disconnect_by_func(helper->root, G_CALLBACK(canvas_root_destroy), helper); g_signal_handlers_disconnect_by_func(helper->root, G_CALLBACK(canvas_root_request_changed), helper); g_signal_handlers_disconnect_by_func(helper->root, G_CALLBACK(canvas_root_paint_needed), helper); g_signal_handlers_disconnect_by_func(helper->root, G_CALLBACK(canvas_root_tooltip_changed), helper); hippo_canvas_item_set_context(helper->root, NULL); g_object_unref(helper->root); helper->root = NULL; was_hovering = helper->root_hovering; helper->root_hovering = FALSE; } if (root != NULL) { g_object_ref_sink(root); helper->root = root; g_signal_connect(root, "destroy", G_CALLBACK(canvas_root_destroy), helper); g_signal_connect(root, "request-changed", G_CALLBACK(canvas_root_request_changed), helper); g_signal_connect(root, "paint-needed", G_CALLBACK(canvas_root_paint_needed), helper); g_signal_connect(root, "tooltip-changed", G_CALLBACK(canvas_root_tooltip_changed), helper); hippo_canvas_item_set_context(helper->root, HIPPO_CANVAS_CONTEXT(helper)); if (was_hovering) handle_new_mouse_location(helper, widget->window, HIPPO_MOTION_DETAIL_ENTER); } gtk_widget_queue_resize(widget); } void hippo_canvas_helper_set_theme(HippoCanvasHelper *canvas_helper, HippoCanvasTheme *theme) { g_return_if_fail(HIPPO_IS_CANVAS_HELPER(canvas_helper)); g_return_if_fail(theme == NULL || HIPPO_IS_CANVAS_THEME(theme)); if (theme == canvas_helper->theme) return; if (canvas_helper->theme) g_object_unref(canvas_helper->theme); canvas_helper->theme = theme; if (canvas_helper->theme) g_object_ref(canvas_helper->theme); if (canvas_helper->style) { g_object_unref(canvas_helper->style); canvas_helper->style = NULL; } hippo_canvas_context_emit_style_changed(HIPPO_CANVAS_CONTEXT(canvas_helper), TRUE); } GtkWidget * hippo_canvas_helper_get_widget(HippoCanvasHelper *helper) { g_return_val_if_fail(HIPPO_IS_CANVAS_HELPER(helper), NULL); return helper->widget; } void hippo_canvas_helper_set_width(HippoCanvasHelper *helper, int width) { g_return_if_fail(HIPPO_IS_CANVAS_HELPER(helper)); if (helper->width == width) return; helper->width = width; gtk_widget_queue_resize_no_redraw(helper->widget); } /* * This is a bad hack because GTK does not have a "resize queued" signal * like our request-changed; this means that if a widget inside a HippoCanvasWidget * queues a resize, the HippoCanvasWidget does not emit request-changed. * * Because all canvas widget items are registered with the HippoCanvas widget * they are inside, when we get the GTK size_request or size_allocate, * we go through and emit the missing request-changed before we request/allocate * the root canvas item. */ static void hippo_canvas_helper_fixup_resize_state(HippoCanvasHelper *helper) { RegisteredWidgetItem *witem; GSList *link; if (helper->fixing_up_resize_state) { g_warning("Recursion in %s", G_GNUC_PRETTY_FUNCTION); return; } helper->fixing_up_resize_state = TRUE; witem = NULL; for (link = helper->widget_items; link != NULL; link = link->next) { witem = link->data; if (witem->widget && (GTK_WIDGET_REQUEST_NEEDED(witem->widget) || GTK_WIDGET_ALLOC_NEEDED(witem->widget))) { hippo_canvas_item_emit_request_changed(witem->item); } } helper->fixing_up_resize_state = FALSE; } static gint tooltip_expose_handler(GtkWidget *tip, GdkEventExpose *event, void *data) { gtk_paint_flat_box(tip->style, tip->window, GTK_STATE_NORMAL, GTK_SHADOW_OUT, &event->area, tip, "tooltip", 0, 0, -1, -1); return FALSE; } static gint tooltip_motion_handler(GtkWidget *tip, GdkEventMotion *event, void *data) { gtk_widget_hide(tip); return FALSE; } static void tooltip_window_update(GtkWidget *tip, GdkScreen *gdk_screen, int mouse_x, int mouse_y, HippoRectangle *for_area, const char *text) { GdkRectangle monitor; gint mon_num; int x, y; int w, h; GtkWidget *label; int screen_right_edge; int screen_bottom_edge; gtk_window_set_screen(GTK_WINDOW(tip), gdk_screen); mon_num = gdk_screen_get_monitor_at_point(gdk_screen, mouse_x, mouse_y); gdk_screen_get_monitor_geometry(gdk_screen, mon_num, &monitor); screen_right_edge = monitor.x + monitor.width; screen_bottom_edge = monitor.y + monitor.height; label = GTK_BIN(tip)->child; gtk_label_set(GTK_LABEL(label), text); gtk_window_get_size(GTK_WINDOW(tip), &w, &h); if (for_area->width < MAX_TOOLTIP_AREA_WIDTH) { /* Center on the area horizontally */ x = for_area->x + (for_area->width - w) / 2; } else { x = mouse_x + TOOLTIP_OFFSET; } /* Clamp onscreen */ if (x + w > screen_right_edge) x = screen_right_edge - w; if (x < 0) x = 0; if (for_area->height < MAX_TOOLTIP_AREA_HEIGHT) { /* And place it below if there is enough space, otherwise place it above */ y = for_area->y + for_area->height + TOOLTIP_PADDING; if (y + h > screen_bottom_edge) y = for_area->y - h - TOOLTIP_PADDING; } else { y = mouse_y + TOOLTIP_OFFSET; } /* Clamp onscreen */ if (y + h > screen_bottom_edge) y = screen_bottom_edge - h; if (y < 0) y = 0; gtk_window_move(GTK_WINDOW(tip), x, y); } static GtkWidget* tooltip_window_new(void) { GtkWidget *tip; GtkWidget *label; tip = gtk_window_new(GTK_WINDOW_POPUP); gtk_widget_set_app_paintable(tip, TRUE); gtk_window_set_policy(GTK_WINDOW(tip), FALSE, FALSE, TRUE); gtk_widget_set_name(tip, "gtk-tooltips"); gtk_container_set_border_width(GTK_CONTAINER(tip), 4); g_signal_connect(tip, "expose-event", G_CALLBACK(tooltip_expose_handler), NULL); g_signal_connect(tip, "motion-notify-event", G_CALLBACK(tooltip_motion_handler), NULL); label = gtk_label_new(NULL); gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); gtk_misc_set_alignment(GTK_MISC(label), 0.5, 0.5); gtk_widget_show(label); gtk_container_add(GTK_CONTAINER(tip), label); return tip; } hippo-canvas-0.3.1/linux/hippo/hippo-canvas.h0000664000076400007640000000404111366237063016063 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #ifndef __HIPPO_CANVAS_H__ #define __HIPPO_CANVAS_H__ /* A widget that contains a root HippoCanvasItem */ #include #include G_BEGIN_DECLS /* this is a small hack; requiring a canvas subclass would be cleaner. But, not worth it * unless the subclass would have a little more stuff than it would right now. */ typedef cairo_surface_t* (* HippoCanvasLoadImageHook) (HippoCanvasContext *context, const char *image_name); typedef struct _HippoCanvas HippoCanvas; typedef struct _HippoCanvasClass HippoCanvasClass; #define HIPPO_TYPE_CANVAS (hippo_canvas_get_type ()) #define HIPPO_CANVAS(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_CANVAS, HippoCanvas)) #define HIPPO_CANVAS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), HIPPO_TYPE_CANVAS, HippoCanvasClass)) #define HIPPO_IS_CANVAS(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_CANVAS)) #define HIPPO_IS_CANVAS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), HIPPO_TYPE_CANVAS)) #define HIPPO_CANVAS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), HIPPO_TYPE_CANVAS, HippoCanvasClass)) GType hippo_canvas_get_type (void) G_GNUC_CONST; GtkWidget* hippo_canvas_new (void); void hippo_canvas_set_root (HippoCanvas *canvas, HippoCanvasItem *root); void hippo_canvas_set_theme(HippoCanvas *canvas, HippoCanvasTheme *theme); void hippo_canvas_set_width (HippoCanvas *canvas, int width); void hippo_canvas_set_load_image_hook(HippoCanvasLoadImageHook hook); HippoCanvasContext *hippo_canvas_get_context(HippoCanvas *canvas); GtkWidget *hippo_canvas_get_canvas_for_item(HippoCanvasItem *item); void hippo_canvas_open_test_window(void); G_END_DECLS #endif /* __HIPPO_CANVAS_H__ */ hippo-canvas-0.3.1/linux/hippo/hippo-canvas-widgets.c0000664000076400007640000003621011366237063017525 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include #include #include #include #include #include #include #include #include "hippo-canvas-widget.h" #include "hippo-canvas.h" #define HIPPO_DEFINE_WIDGET_ITEM(lower, Camel) \ struct _HippoCanvas##Camel { HippoCanvasWidget parent; }; \ struct _HippoCanvas##Camel##Class { HippoCanvasWidgetClass parent; }; \ G_DEFINE_TYPE(HippoCanvas##Camel, hippo_canvas_##lower, HIPPO_TYPE_CANVAS_WIDGET) HIPPO_DEFINE_WIDGET_ITEM(button, Button); HIPPO_DEFINE_WIDGET_ITEM(scrollbars, Scrollbars); HIPPO_DEFINE_WIDGET_ITEM(entry, Entry); enum { BUTTON_PROP_0, BUTTON_PROP_TEXT } ; static void on_canvas_button_clicked(GtkButton *button, HippoCanvasButton *canvas_button) { hippo_canvas_item_emit_activated(HIPPO_CANVAS_ITEM(canvas_button)); } static void hippo_canvas_button_dispose(GObject *object) { HippoCanvasButton *canvas_button = HIPPO_CANVAS_BUTTON (object); GtkWidget *button = HIPPO_CANVAS_WIDGET(object)->widget; if (button) { g_signal_handlers_disconnect_by_func(button, (void *)on_canvas_button_clicked, canvas_button); } G_OBJECT_CLASS(hippo_canvas_button_parent_class)->dispose(object); } static void hippo_canvas_button_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { /* HippoCanvasButton *canvas_button = HIPPO_CANVAS_BUTTON(object); */ GtkWidget *button = HIPPO_CANVAS_WIDGET(object)->widget; switch (prop_id) { case BUTTON_PROP_TEXT: gtk_button_set_label(GTK_BUTTON(button), g_value_get_string(value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } } static void hippo_canvas_button_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { /* HippoCanvasButton *canvas_button = HIPPO_CANVAS_BUTTON (object); */ GtkWidget *button = HIPPO_CANVAS_WIDGET(object)->widget; switch (prop_id) { case BUTTON_PROP_TEXT: g_value_set_string(value, gtk_button_get_label(GTK_BUTTON(button))); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } } static void hippo_canvas_button_class_init(HippoCanvasButtonClass *class) { GObjectClass *object_class = G_OBJECT_CLASS(class); object_class->dispose = hippo_canvas_button_dispose; object_class->set_property = hippo_canvas_button_set_property; object_class->get_property = hippo_canvas_button_get_property; g_object_class_install_property(object_class, BUTTON_PROP_TEXT, g_param_spec_string("text", _("Text"), _("Text in the button"), NULL, G_PARAM_READABLE | G_PARAM_WRITABLE)); } static void hippo_canvas_button_init(HippoCanvasButton * button) { GtkWidget *gtk_button; gtk_button = gtk_button_new(); g_object_set(button, "widget", gtk_button, NULL); g_signal_connect(gtk_button, "clicked", G_CALLBACK(on_canvas_button_clicked), button); } HippoCanvasItem* hippo_canvas_button_new(void) { return g_object_new(HIPPO_TYPE_CANVAS_BUTTON, NULL); } /* Hack to work-around GtkViewport bug http://bugzilla.gnome.org/show_bug.cgi?id=361781 * * That bug wasn't actually causing the problem the scrollbar misbehavior that I thought it * was, so this workaround is very low priortiy ... but it does save us from an extra stray * 2 pixels to the right of the list of items. */ static void suppress_shadow_width(GtkWidget *widget) { static gboolean parsed_rc = FALSE; if (!parsed_rc) { gtk_rc_parse_string("style \"hippo-no-shadow-style\" {\n" " xthickness = 0\n" " ythickness = 0\n" "}\n" "widget \"*.hippo-no-shadow-widget\" style : highest \"hippo-no-shadow-style\"\n"); parsed_rc = TRUE; } gtk_widget_set_name(widget, "hippo-no-shadow-widget"); } /* We want height-for-width behavior when we have a vertical scrollbar * but no horizontal scrollbar. We hack this in by queuing a new * request each time we are allocated with a different width. We can * be pretty sure this won't cause infinite loops because of two * things: 1) hippo_canvas_helper_set_width() short-circuits when * setting the same width and doesn't queue a new size. 2) the * presence of a vertical scrollbar means that the height request of * the scrolled window won't depend on the height request of the * viewport, reducing the chance of getting into a loop with some other * part of the user interface that might also be queuing a resize * on allocate in similar circumstance. */ static void on_viewport_size_allocate(GtkWidget *viewport, GdkRectangle *allocation) { GtkWidget *scrolled_window = viewport->parent; GtkPolicyType hscrollbar_policy; GtkPolicyType vscrollbar_policy; gtk_scrolled_window_get_policy(GTK_SCROLLED_WINDOW(scrolled_window), &hscrollbar_policy, &vscrollbar_policy); if (hscrollbar_policy == GTK_POLICY_NEVER && vscrollbar_policy != GTK_POLICY_NEVER) { GtkWidget *viewport = GTK_BIN(scrolled_window)->child; GtkWidget *canvas = GTK_BIN(viewport)->child; hippo_canvas_set_width(HIPPO_CANVAS(canvas), allocation->width); } } static void hippo_canvas_scrollbars_theme_changed(HippoCanvasWidget *widget_item) { GtkWidget *viewport = gtk_bin_get_child(GTK_BIN(widget_item->widget)); GtkWidget *canvas = gtk_bin_get_child(GTK_BIN(viewport)); hippo_canvas_set_theme(HIPPO_CANVAS(canvas), widget_item->theme); } static void hippo_canvas_scrollbars_class_init(HippoCanvasScrollbarsClass *class) { HippoCanvasWidgetClass *widget_class = HIPPO_CANVAS_WIDGET_CLASS(class); widget_class->theme_changed = hippo_canvas_scrollbars_theme_changed; } static void hippo_canvas_scrollbars_init(HippoCanvasScrollbars *scrollbars) { GtkWidget *widget; GtkWidget *canvas; GtkWidget *viewport; widget = gtk_scrolled_window_new(NULL,NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(widget), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(widget), GTK_SHADOW_NONE); canvas = hippo_canvas_new(); gtk_widget_show(canvas); gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(widget), canvas); viewport = GTK_BIN(widget)->child; g_signal_connect(viewport, "size-allocate", G_CALLBACK(on_viewport_size_allocate), NULL); gtk_viewport_set_shadow_type(GTK_VIEWPORT(gtk_bin_get_child(GTK_BIN(widget))), GTK_SHADOW_NONE); suppress_shadow_width(gtk_bin_get_child(GTK_BIN(widget))); g_object_set(scrollbars, "widget", widget, NULL); } HippoCanvasItem* hippo_canvas_scrollbars_new(void) { return g_object_new(HIPPO_TYPE_CANVAS_SCROLLBARS, NULL); } void hippo_canvas_scrollbars_set_root(HippoCanvasScrollbars *scrollbars, HippoCanvasItem *item) { GtkWidget *sw; HippoCanvas *canvas; GtkWidget *viewport; g_return_if_fail(HIPPO_IS_CANVAS_SCROLLBARS(scrollbars)); sw = NULL; g_object_get(G_OBJECT(scrollbars), "widget", &sw, NULL); g_return_if_fail(GTK_IS_SCROLLED_WINDOW(sw)); viewport = gtk_bin_get_child(GTK_BIN(sw)); canvas = HIPPO_CANVAS(gtk_bin_get_child(GTK_BIN(viewport))); hippo_canvas_set_root(canvas, item); g_object_unref(sw); } void hippo_canvas_scrollbars_set_policy (HippoCanvasScrollbars *scrollbars, HippoOrientation orientation, HippoScrollbarPolicy policy) { GtkWidget *sw; GtkPolicyType gtk_policy; const char *property; g_return_if_fail(HIPPO_IS_CANVAS_SCROLLBARS(scrollbars)); sw = NULL; g_object_get(G_OBJECT(scrollbars), "widget", &sw, NULL); g_return_if_fail(GTK_IS_SCROLLED_WINDOW(sw)); switch (policy) { default: g_critical("Bad value for HippoScrollbarPolicy"); case HIPPO_SCROLLBAR_NEVER: gtk_policy = GTK_POLICY_NEVER; break; case HIPPO_SCROLLBAR_AUTOMATIC: gtk_policy = GTK_POLICY_AUTOMATIC; break; case HIPPO_SCROLLBAR_ALWAYS: gtk_policy = GTK_POLICY_ALWAYS; break; } property = orientation == HIPPO_ORIENTATION_VERTICAL ? "vscrollbar-policy" : "hscrollbar-policy"; g_object_set(G_OBJECT(sw), property, gtk_policy, NULL); g_object_unref(sw); } enum { ENTRY_PROP_0, ENTRY_PROP_TEXT, ENTRY_PROP_PASSWORD_MODE }; static void on_canvas_entry_changed(GtkEditable *editable, HippoCanvasEntry *canvas_entry) { g_object_notify(G_OBJECT(canvas_entry), "text"); } static gboolean on_canvas_entry_key_press_event(GtkWidget *widget, GdkEventKey *event, HippoCanvasEntry *canvas_entry) { HippoKey key; gunichar character; switch (event->keyval) { case GDK_Return: case GDK_KP_Enter: key = HIPPO_KEY_RETURN; break; case GDK_Escape: key = HIPPO_KEY_ESCAPE; break; case GDK_Tab: key = HIPPO_KEY_TAB; break; case GDK_ISO_Left_Tab: key = HIPPO_KEY_LEFTTAB; break; default: key = HIPPO_KEY_UNKNOWN; break; } character = gdk_keyval_to_unicode(event->keyval); return hippo_canvas_item_emit_key_press_event(HIPPO_CANVAS_ITEM(canvas_entry), key, character, (event->state & GDK_SHIFT_MASK ? HIPPO_MODIFIER_SHIFT : 0) + (event->state & GDK_CONTROL_MASK ? HIPPO_MODIFIER_CTRL : 0) + (event->state & GDK_MOD1_MASK ? HIPPO_MODIFIER_ALT : 0)); } static void hippo_canvas_entry_dispose(GObject *object) { HippoCanvasEntry *canvas_entry = HIPPO_CANVAS_ENTRY (object); GtkWidget *entry = HIPPO_CANVAS_WIDGET(object)->widget; if (entry) { g_signal_handlers_disconnect_by_func(entry, (void *)on_canvas_entry_changed, canvas_entry); g_signal_handlers_disconnect_by_func(entry, (void *)on_canvas_entry_key_press_event, canvas_entry); } G_OBJECT_CLASS(hippo_canvas_entry_parent_class)->dispose(object); } static void hippo_canvas_entry_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { /* HippoCanvasEntry *canvas_entry = HIPPO_CANVAS_ENTRY(object); */ GtkWidget *entry = HIPPO_CANVAS_WIDGET(object)->widget; switch (prop_id) { case ENTRY_PROP_TEXT: gtk_entry_set_text(GTK_ENTRY(entry), g_value_get_string(value)); break; case ENTRY_PROP_PASSWORD_MODE: gtk_entry_set_visibility(GTK_ENTRY(entry), !g_value_get_boolean(value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } } static void hippo_canvas_entry_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { /* HippoCanvasEntry *canvas_entry = HIPPO_CANVAS_ENTRY (object); */ GtkWidget *entry = HIPPO_CANVAS_WIDGET(object)->widget; switch (prop_id) { case ENTRY_PROP_TEXT: g_value_set_string(value, gtk_entry_get_text(GTK_ENTRY(entry))); break; case ENTRY_PROP_PASSWORD_MODE: g_value_set_boolean(value, !gtk_entry_get_visibility(GTK_ENTRY(entry))); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } } static void hippo_canvas_entry_class_init(HippoCanvasEntryClass *class) { GObjectClass *object_class = G_OBJECT_CLASS(class); object_class->dispose = hippo_canvas_entry_dispose; object_class->set_property = hippo_canvas_entry_set_property; object_class->get_property = hippo_canvas_entry_get_property; g_object_class_install_property(object_class, ENTRY_PROP_TEXT, g_param_spec_string("text", _("Text"), _("Text in the entry"), NULL, G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property(object_class, ENTRY_PROP_PASSWORD_MODE, g_param_spec_boolean("password-mode", _("Password mode"), _("Show text as bullets/stars"), FALSE, G_PARAM_READABLE | G_PARAM_WRITABLE)); } static void hippo_canvas_entry_init(HippoCanvasEntry *entry) { GtkWidget *gtk_entry; gtk_entry = gtk_entry_new(); /* GTK forces a min width of 150, which is often too big for our canvas layouts */ gtk_widget_set_size_request(gtk_entry, 60, -1); g_object_set(entry, "widget", gtk_entry, NULL); g_signal_connect(gtk_entry, "changed", G_CALLBACK(on_canvas_entry_changed), entry); g_signal_connect(gtk_entry, "key-press-event", G_CALLBACK(on_canvas_entry_key_press_event), entry); } HippoCanvasItem* hippo_canvas_entry_new(void) { return g_object_new(HIPPO_TYPE_CANVAS_ENTRY, NULL); } guint hippo_canvas_entry_get_position(HippoCanvasEntry *entry) { GtkEntry *gtk_entry; guint pos; g_object_get(entry, "widget", >k_entry, NULL); pos = gtk_editable_get_position(GTK_EDITABLE(gtk_entry)); g_object_unref(gtk_entry); return pos; } void hippo_canvas_entry_set_position(HippoCanvasEntry *entry, guint pos) { GtkEntry *gtk_entry; g_object_get(entry, "widget", >k_entry, NULL); gtk_editable_set_position(GTK_EDITABLE(gtk_entry), pos); g_object_unref(gtk_entry); } hippo-canvas-0.3.1/linux/hippo/hippo-canvas-window.c0000664000076400007640000002422711366237063017373 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #include #include #include "hippo-canvas-helper.h" #include "hippo-canvas-window.h" #include "hippo-canvas-window-child.h" #include #include #include static void hippo_canvas_window_init (HippoCanvasWindow *canvas_window); static void hippo_canvas_window_class_init (HippoCanvasWindowClass *klass); static void hippo_canvas_window_dispose (GObject *object); static void hippo_canvas_window_finalize (GObject *object); static void hippo_canvas_window_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); static void hippo_canvas_window_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); static void hippo_canvas_window_realize (GtkWidget *widget); static void hippo_canvas_window_style_set (GtkWidget *widget, GtkStyle *previous_style); static gboolean hippo_canvas_window_button_press (GtkWidget *widget, GdkEventButton *event); static gboolean hippo_canvas_window_button_release (GtkWidget *widget, GdkEventButton *event); static gboolean hippo_canvas_window_enter_notify (GtkWidget *widget, GdkEventCrossing *event); static gboolean hippo_canvas_window_leave_notify (GtkWidget *widget, GdkEventCrossing *event); static gboolean hippo_canvas_window_motion_notify (GtkWidget *widget, GdkEventMotion *event); static gboolean hippo_canvas_window_scroll (GtkWidget *widget, GdkEventScroll *event); struct _HippoCanvasWindow { GtkWindow parent; HippoCanvasHelper *helper; }; struct _HippoCanvasWindowClass { GtkWindowClass parent_class; }; enum { NO_SIGNALS_YET, LAST_SIGNAL }; /* static int signals[LAST_SIGNAL]; */ enum { PROP_0, }; G_DEFINE_TYPE(HippoCanvasWindow, hippo_canvas_window, GTK_TYPE_WINDOW); static void hippo_canvas_window_class_init(HippoCanvasWindowClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->set_property = hippo_canvas_window_set_property; object_class->get_property = hippo_canvas_window_get_property; object_class->dispose = hippo_canvas_window_dispose; object_class->finalize = hippo_canvas_window_finalize; widget_class->realize = hippo_canvas_window_realize; widget_class->style_set = hippo_canvas_window_style_set; widget_class->button_press_event = hippo_canvas_window_button_press; widget_class->button_release_event = hippo_canvas_window_button_release; widget_class->motion_notify_event = hippo_canvas_window_motion_notify; widget_class->enter_notify_event = hippo_canvas_window_enter_notify; widget_class->leave_notify_event = hippo_canvas_window_leave_notify; widget_class->scroll_event = hippo_canvas_window_scroll; } static void hippo_canvas_window_init(HippoCanvasWindow *canvas_window) { GtkWidget *widget = GTK_WIDGET(canvas_window); GtkWidget *window_child; gtk_widget_set_app_paintable(widget, TRUE); gtk_widget_set_redraw_on_allocate(widget, FALSE); gtk_widget_add_events(widget, HIPPO_CANVAS_EVENT_MASK); window_child = hippo_canvas_window_child_new(); canvas_window->helper = hippo_canvas_window_child_get_helper(HIPPO_CANVAS_WINDOW_CHILD(window_child)); g_object_ref(canvas_window->helper); gtk_widget_show(window_child); gtk_container_add(GTK_CONTAINER(canvas_window), window_child); } static void hippo_canvas_window_dispose(GObject *object) { HippoCanvasWindow *canvas_window = HIPPO_CANVAS_WINDOW(object); if (canvas_window->helper) { g_object_run_dispose(G_OBJECT(canvas_window->helper)); g_object_unref(canvas_window->helper); canvas_window->helper = NULL; } G_OBJECT_CLASS(hippo_canvas_window_parent_class)->dispose(object); } static void hippo_canvas_window_finalize(GObject *object) { /* HippoCanvasWindow *canvas_window = HIPPO_CANVAS_WINDOW(object); */ G_OBJECT_CLASS(hippo_canvas_window_parent_class)->finalize(object); } GtkWidget * hippo_canvas_window_new(void) { HippoCanvasWindow *canvas_window; canvas_window = g_object_new(HIPPO_TYPE_CANVAS_WINDOW, NULL); return GTK_WIDGET(canvas_window); } static void hippo_canvas_window_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { #if 0 HippoCanvasWindow *canvas_window = HIPPO_CANVAS_WINDOW (object); #endif switch (prop_id) { default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } } static void hippo_canvas_window_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { #if 0 HippoCanvasWindow *canvas_window = HIPPO_CANVAS_WINDOW (object); #endif switch (prop_id) { default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } } static void hippo_canvas_window_realize (GtkWidget *widget) { HippoCanvasWindow *canvas_window = HIPPO_CANVAS_WINDOW(widget); GTK_WIDGET_CLASS(hippo_canvas_window_parent_class)->realize(widget); hippo_canvas_helper_set_window_background(canvas_window->helper, widget->window); } static void hippo_canvas_window_style_set (GtkWidget *widget, GtkStyle *previous_style) { if (GTK_WIDGET_REALIZED (widget)) { HippoCanvasWindow *canvas_window = HIPPO_CANVAS_WINDOW(widget); hippo_canvas_helper_set_window_background(canvas_window->helper, widget->window); } } static gboolean hippo_canvas_window_button_press(GtkWidget *widget, GdkEventButton *event) { HippoCanvasWindow *canvas_window = HIPPO_CANVAS_WINDOW(widget); if (canvas_window->helper == NULL) return FALSE; /* we've already been destroyed */ if (event->window == widget->window) return hippo_canvas_helper_button_press(canvas_window->helper, event); else return FALSE; } static gboolean hippo_canvas_window_button_release(GtkWidget *widget, GdkEventButton *event) { HippoCanvasWindow *canvas_window = HIPPO_CANVAS_WINDOW(widget); if (canvas_window->helper == NULL) return FALSE; /* we've already been destroyed */ if (event->window == widget->window) return hippo_canvas_helper_button_release(canvas_window->helper, event); else return FALSE; } static gboolean hippo_canvas_window_enter_notify(GtkWidget *widget, GdkEventCrossing *event) { HippoCanvasWindow *canvas_window = HIPPO_CANVAS_WINDOW(widget); if (canvas_window->helper == NULL) return FALSE; /* we've already been destroyed */ if (event->window == widget->window) return hippo_canvas_helper_enter_notify(canvas_window->helper, event); else return FALSE; } static gboolean hippo_canvas_window_leave_notify(GtkWidget *widget, GdkEventCrossing *event) { HippoCanvasWindow *canvas_window = HIPPO_CANVAS_WINDOW(widget); if (canvas_window->helper == NULL) return FALSE; /* we've already been destroyed */ if (event->window == widget->window) return hippo_canvas_helper_leave_notify(canvas_window->helper, event); else return FALSE; } static gboolean hippo_canvas_window_motion_notify(GtkWidget *widget, GdkEventMotion *event) { HippoCanvasWindow *canvas_window = HIPPO_CANVAS_WINDOW(widget); if (canvas_window->helper == NULL) return FALSE; /* we've already been destroyed */ if (event->window == widget->window) return hippo_canvas_helper_motion_notify(canvas_window->helper, event); else return FALSE; } static gboolean hippo_canvas_window_scroll(GtkWidget *widget, GdkEventScroll *event) { HippoCanvasWindow *canvas_window = HIPPO_CANVAS_WINDOW(widget); if (canvas_window->helper == NULL) return FALSE; /* we've already been destroyed */ if (event->window == widget->window) return hippo_canvas_helper_scroll(canvas_window->helper, event); else return FALSE; } void hippo_canvas_window_set_root(HippoCanvasWindow *canvas_window, HippoCanvasItem *item) { g_return_if_fail(HIPPO_IS_CANVAS_WINDOW(canvas_window)); hippo_canvas_helper_set_root(canvas_window->helper, item); } void hippo_canvas_window_set_theme(HippoCanvasWindow *canvas_window, HippoCanvasTheme *theme) { g_return_if_fail(HIPPO_IS_CANVAS_WINDOW(canvas_window)); hippo_canvas_helper_set_theme(canvas_window->helper, theme); if (GTK_WIDGET_REALIZED(canvas_window)) hippo_canvas_helper_set_window_background(canvas_window->helper, GTK_WIDGET(canvas_window)->window); } HippoCanvasContext * hippo_canvas_window_get_context(HippoCanvasWindow *canvas_window) { g_return_val_if_fail(HIPPO_IS_CANVAS_WINDOW(canvas_window), NULL); return HIPPO_CANVAS_CONTEXT(canvas_window->helper); } hippo-canvas-0.3.1/config/0000775000076400007640000000000011404424207012361 500000000000000hippo-canvas-0.3.1/config/depcomp0000755000076400007640000004426711366237216013702 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: hippo-canvas-0.3.1/config/ltmain.sh0000755000076400007640000073306011366237207014144 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 # automake: $automake_version # autoconf: $autoconf_version # # Report bugs to . PROGRAM=ltmain.sh PACKAGE=libtool VERSION=2.2.6b 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% $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" elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi 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 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 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 ;; 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 hippo-canvas-0.3.1/config/install-sh0000755000076400007640000003253711366237216014326 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2009-04-28.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then trap '(exit $?); exit' 1 2 13 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names starting with `-'. case $src in -*) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # Protect names starting with `-'. case $dst in -*) dst=./$dst;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; -*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test -z "$d" && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # 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: hippo-canvas-0.3.1/config/config.h.in0000664000076400007640000000320711404424207014326 00000000000000/* config/config.h.in. Generated from configure.ac by autoheader. */ /* The name of the gettext domain */ #undef GETTEXT_PACKAGE /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define if you have librsvg */ #undef HAVE_LIBRSVG /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* 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 version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION hippo-canvas-0.3.1/config/config.sub0000755000076400007640000010316711366237216014303 00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 # Free Software Foundation, Inc. timestamp='2009-11-20' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # 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. # Please send patches to . Submit a context # diff and a properly formatted GNU ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. 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.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 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." 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" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nios | nios2 \ | ns16k | ns32k \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | ubicom32 \ | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | picochip) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze) basic_machine=microblaze-xilinx ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; tile*) basic_machine=tile-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: hippo-canvas-0.3.1/config/config.guess0000755000076400007640000012761511366237216014644 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 # Free Software Foundation, Inc. timestamp='2009-11-20' # 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 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: hippo-canvas-0.3.1/config/missing0000755000076400007640000002623311366237216013715 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: hippo-canvas-0.3.1/Makefile.am0000664000076400007640000000446511366237063013112 00000000000000SUBDIRS=. docs CANVASSRCDIR=$(top_srcdir) CANVASCOMMONSRCDIR=$(top_srcdir)/common/hippo LINUXSRCDIR=$(top_srcdir)/linux/hippo pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = hippo-canvas-1.pc # note that target-specific CPPFLAGS will REPLACE # not augment these default flags by default, # so we manually put AM_CPPFLAGS in the target flags AM_CPPFLAGS=-DHIPPO_COMPILATION -DHIPPO_OS_LINUX -I$(top_builddir)/config -I$(CANVASSRCDIR) -I$(CANVASCOMMONSRCDIR) -I$(LINUXSRCDIR) # the "config" dir seems like a convenient place that's already # in everyone's include path ... I dunno BUILT_SRC_DIR=$(top_builddir)/config/hippo-canvas # Generated marshallers and enums go into this directory as well MARSHAL_DIR=$(BUILT_SRC_DIR) EXTRA_DIST = LICENSE hippo-canvas-1.pc.in docs/Makefile.am # if srcdir!=builddir, clean out maintainer-clean files from builddir # this allows dist to pass. distclean-local: if test $(srcdir) != . ; then \ rm -f $(MAINTAINERCLEANFILES) ; \ rmdir $(BUILT_SRC_DIR) ; \ fi # These are added to using += in the included files lib_LTLIBRARIES = CLEANFILES= DISTCLEANFILES = MAINTAINERCLEANFILES = BUILT_SOURCES = lib_LTLIBRARIES += libhippocanvas-1.la libhippocanvas_1_la_CPPFLAGS = \ $(AM_CPPFLAGS) \ -I $(MARSHAL_DIR) \ -I $(top_srcdir)/common \ -I $(top_srcdir)/linux \ -I common/hippo \ $(LIBHIPPOCANVAS_CFLAGS) libhippocanvas_1_la_LIBADD = \ $(LIBHIPPOCANVAS_LIBS) include Makefile-canvas-sources.am libhippocanvasincludedir = $(includedir)/hippo-canvas-1/hippo libhippocanvasinclude_HEADERS=$(COMMON_CANVAS_HEADERFILES) $(LINUX_CANVAS_HEADERFILES) libhippocanvas_1_la_SOURCES=$(COMMON_CANVAS_SOURCEFILES) $(LINUX_CANVAS_SOURCEFILES) nodist_libhippocanvas_1_la_SOURCES=$(CANVAS_BUILT_SOURCEFILES) if HAVE_PYTHON include Makefile-python.am endif if HAVE_INTROSPECTION include Makefile-introspection.am endif DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc .PHONY: tag tag: @(svn status | grep '^[MA]' > /dev/null && echo "Uncommitted changes, can't tag") || \ (V=`echo $(VERSION) | sed s/\\\\./_/g` && \ URL=`svn info --xml | grep '' | sed 's@@@g'` && \ PACKAGE=`echo $$URL | perl -pe 's@.*/(.*)/.*@$$1@; tr/a-z-/A-Z_/;'` && \ TAGURL=`echo $$URL | sed "s@trunk@tags/$${PACKAGE}_$$V@"` && \ echo Tagging as $$TAGURL && \ svn cp -m "Tag as $${PACKAGE}_$$V" $$URL $$TAGURL) hippo-canvas-0.3.1/Makefile-canvas-sources.am0000664000076400007640000001450111366237063016034 00000000000000# This file is included both by the Mugshot client and by the stand-alone Mugshot # library to avoid listing files in duplicate places # CANVAS_MARSHAL_LIST=$(CANVASSRCDIR)/common/hippo/hippo-canvas-marshal.list CANVAS_MARSHAL_HEADER=$(MARSHAL_DIR)/hippo-canvas-marshal.h CANVAS_MARSHAL_BODY=$(MARSHAL_DIR)/hippo-canvas-marshal.c EXTRA_DIST += $(CANVAS_MARSHAL_LIST) $(CANVAS_MARSHAL_HEADER): $(CANVAS_MARSHAL_LIST) mkdir $(MARSHAL_DIR) || true $(GLIB_GENMARSHAL) --prefix=hippo_canvas_marshal $(CANVAS_MARSHAL_LIST) --header > $(CANVAS_MARSHAL_HEADER) $(CANVAS_MARSHAL_BODY): $(CANVAS_MARSHAL_LIST) mkdir $(MARSHAL_DIR) || true (echo "#include \"hippo-canvas-marshal.h\""; $(GLIB_GENMARSHAL) --prefix=hippo_canvas_marshal $(CANVAS_MARSHAL_LIST) --body) > $(CANVAS_MARSHAL_BODY) CANVAS_ENUMS_HEADER=$(CANVASSRCDIR)/common/hippo/hippo-canvas-type-builtins.h CANVAS_ENUMS_BODY=$(CANVASSRCDIR)/common/hippo/hippo-canvas-type-builtins.c CANVAS_ENUMS_HEADER_STAMP=$(CANVASSRCDIR)/common/hippo/stamp-hippo-canvas-type-builtins.h CANVAS_ENUMS_BODY_STAMP=$(CANVASSRCDIR)/common/hippo/stamp-hippo-canvas-type-builtins.c EXTRA_DIST += $(CANVAS_ENUMS_HEADER) $(CANVAS_ENUMS_BODY) $(CANVAS_ENUMS_BODY): $(CANVAS_ENUMS_BODY_STAMP) @true $(CANVAS_ENUMS_BODY_STAMP): $(COMMON_CANVAS_HEADERFILES) mkdir $(MARSHAL_DIR) || true (cd $(CANVASSRCDIR)/common && $(GLIB_MKENUMS) \ --fhead "#include \"hippo-canvas-type-builtins.h\"\n\n" \ --fprod "\n/* enumerations from \"@filename@\" */" \ --fprod "\n#include \"@filename@\"" \ --vhead "const G@Type@Value _@enum_name@_values[] = {" \ --vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \ --vtail " { 0, NULL, NULL }\n};\n\n" \ --vtail "GType\n@enum_name@_get_type (void)\n{\n" \ --vtail " static GType type = 0;\n\n" \ --vtail " if (G_UNLIKELY (type == 0))\n" \ --vtail " type = g_@type@_register_static (\"@EnumName@\", _@enum_name@_values);\n\n" \ --vtail " return type;\n}\n\n" \ $(^F:%=hippo/%)) > xgen-$(@F) \ && ( cmp -s xgen-$(@F) $(CANVAS_ENUMS_BODY) || cp xgen-$(@F) $(CANVAS_ENUMS_BODY)) \ && rm -f xgen-$(@F) \ && echo timestamp > $(CANVAS_ENUMS_BODY_STAMP) $(CANVAS_ENUMS_HEADER): $(CANVAS_ENUMS_HEADER_STAMP) @true $(CANVAS_ENUMS_HEADER_STAMP): $(COMMON_CANVAS_HEADERFILES) mkdir $(MARSHAL_DIR) || true (cd $(CANVASSRCDIR)/common && $(GLIB_MKENUMS) \ --fhead "#ifndef HIPPO_CANVAS_TYPE_BUILTINS_H\n" \ --fhead "#define HIPPO_CANVAS_TYPE_BUILTINS_H 1\n\n" \ --fhead "#include \n\n" \ --fhead "G_BEGIN_DECLS\n\n" \ --ftail "G_END_DECLS\n\n" \ --ftail "#endif /* HIPPO_CANVAS_TYPE_BUILTINS_H */\n" \ --fprod "\n/* --- @filename@ --- */" \ --eprod "#define HIPPO_TYPE_@ENUMSHORT@ @enum_name@_get_type()\n" \ --eprod "GType @enum_name@_get_type (void);\n" \ $(^F:%=hippo/%)) > xgen-$(@F) \ && ( cmp -s xgen-$(@F) $(CANVAS_ENUMS_HEADER) || cp xgen-$(@F) $(CANVAS_ENUMS_HEADER)) \ && rm -f xgen-$(@F) \ && echo timestamp > $(CANVAS_ENUMS_HEADER_STAMP) STAMPS = \ $(CANVAS_ENUMS_BODY_STAMP) \ $(CANVAS_ENUMS_HEADER_STAMP) COMMON_CANVAS_HEADERFILES = \ $(CANVASSRCDIR)/common/hippo/hippo-animation.h \ $(CANVASSRCDIR)/common/hippo/hippo-animation-manager.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-box.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-container.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-context.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-gradient.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-image.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-image-button.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-item.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-layout.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-link.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-style.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-text.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-theme.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-theme-engine.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-theme-image.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-widgets.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-util.h \ $(CANVASSRCDIR)/common/hippo/hippo-event.h \ $(CANVASSRCDIR)/common/hippo/hippo-graphics.h LINUX_CANVAS_HEADERFILES = \ $(CANVASSRCDIR)/linux/hippo/hippo-canvas.h \ $(CANVASSRCDIR)/linux/hippo/hippo-canvas-window.h \ $(CANVASSRCDIR)/linux/hippo/hippo-canvas-widget.h COMMON_CANVAS_SOURCEFILES = \ $(COMMON_CANVAS_HEADERFILES) \ $(CANVASSRCDIR)/common/hippo/hippo-animation.c \ $(CANVASSRCDIR)/common/hippo/hippo-animation-manager.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-internal.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-box.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-container.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-context.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-gradient.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-image.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-image-button.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-item.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-layout.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-link.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-style.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-text.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-test.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-test.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-theme.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-theme-engine.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-theme-image.c \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-theme-internal.h \ $(CANVASSRCDIR)/common/hippo/hippo-canvas-util.c \ $(CANVASSRCDIR)/common/hippo/hippo-event.c \ $(CANVASSRCDIR)/common/hippo/hippo-graphics.c LINUX_CANVAS_SOURCEFILES = \ $(LINUX_CANVAS_HEADERFILES) \ $(CANVASSRCDIR)/linux/hippo/hippo-canvas.c \ $(CANVASSRCDIR)/linux/hippo/hippo-canvas-window.c \ $(CANVASSRCDIR)/linux/hippo/hippo-canvas-helper.c \ $(CANVASSRCDIR)/linux/hippo/hippo-canvas-helper.h \ $(CANVASSRCDIR)/linux/hippo/hippo-canvas-window-child.c \ $(CANVASSRCDIR)/linux/hippo/hippo-canvas-window-child.h \ $(CANVASSRCDIR)/linux/hippo/hippo-canvas-widget.c \ $(CANVASSRCDIR)/linux/hippo/hippo-canvas-widgets.c CANVAS_BUILT_SOURCEFILES = \ $(CANVAS_MARSHAL_HEADER) \ $(CANVAS_MARSHAL_BODY) \ $(CANVAS_ENUMS_HEADER) \ $(CANVAS_ENUMS_BODY) MAINTAINERCLEANFILES += $(CANVAS_BUILT_SOURCEFILES) $(STAMPS) BUILT_SOURCES += $(CANVAS_BUILT_SOURCEFILES) hippo-canvas-0.3.1/acinclude.m40000664000076400007640000000453411366237063013244 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"` 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 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" ]) 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]) hippo-canvas-0.3.1/docs/0000775000076400007640000000000011404424207012044 500000000000000hippo-canvas-0.3.1/docs/hippo-canvas.xml0000664000076400007640000000305511366237063015112 00000000000000 ]> Hippo-Canvas Reference Manual The Hippo Canvas &hippo-canvas-box; &hippo-canvas-container; &hippo-canvas-context; &hippo-canvas-gradient; &hippo-canvas-image-button; &hippo-canvas-image; &hippo-canvas-item; &hippo-canvas-link; &hippo-canvas-style; &hippo-canvas-text; &hippo-canvas-util; &hippo-canvas-widgets; &hippo-event; &hippo-graphics; hippo-canvas-0.3.1/docs/hippo-canvas-overrides.txt0000664000076400007640000000000011366237063017114 00000000000000hippo-canvas-0.3.1/docs/html/0000775000076400007640000000000011404424207013010 500000000000000hippo-canvas-0.3.1/docs/html/hippo-canvas.devhelp0000664000076400007640000005441011404424207016675 00000000000000 hippo-canvas-0.3.1/docs/html/index.html0000664000076400007640000000562211404424207014732 00000000000000 Hippo-Canvas Reference Manual hippo-canvas-0.3.1/docs/html/hippo-canvas-Widgets.html0000664000076400007640000004411211404424207017614 00000000000000 Widgets

Widgets

Widgets

Synopsis

#include <hippo/hippo-canvas-widgets.h>

#define             HIPPO_DECLARE_WIDGET_ITEM           (lower,
                                                         Camel)
#define             HIPPO_TYPE_CANVAS_SCROLLBARS
#define             HIPPO_CANVAS_SCROLLBARS             (object)
#define             HIPPO_CANVAS_SCROLLBARS_CLASS       (klass)
#define             HIPPO_IS_CANVAS_SCROLLBARS          (object)
#define             HIPPO_IS_CANVAS_SCROLLBARS_CLASS    (klass)
#define             HIPPO_CANVAS_SCROLLBARS_GET_CLASS   (obj)
#define             HIPPO_TYPE_CANVAS_ENTRY
#define             HIPPO_CANVAS_ENTRY                  (object)
#define             HIPPO_CANVAS_ENTRY_CLASS            (klass)
#define             HIPPO_IS_CANVAS_ENTRY               (object)
#define             HIPPO_IS_CANVAS_ENTRY_CLASS         (klass)
#define             HIPPO_CANVAS_ENTRY_GET_CLASS        (obj)
void                hippo_canvas_scrollbars_set_root    (HippoCanvasScrollbars *scrollbars,
                                                         HippoCanvasItem *item);
enum                HippoScrollbarPolicy;
void                hippo_canvas_scrollbars_set_policy  (HippoCanvasScrollbars *scrollbars,
                                                         HippoOrientation orientation,
                                                         HippoScrollbarPolicy policy);
guint               hippo_canvas_entry_get_position     (HippoCanvasEntry *entry);
void                hippo_canvas_entry_set_position     (HippoCanvasEntry *entry,
                                                         guint pos);

Description

Details

HIPPO_DECLARE_WIDGET_ITEM()

#define             HIPPO_DECLARE_WIDGET_ITEM(lower, Camel)

lower :

Camel :


HIPPO_TYPE_CANVAS_SCROLLBARS

#define HIPPO_TYPE_CANVAS_SCROLLBARS              (hippo_canvas_scrollbars_get_type ())


HIPPO_CANVAS_SCROLLBARS()

#define HIPPO_CANVAS_SCROLLBARS(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_CANVAS_SCROLLBARS, HippoCanvasScrollbars))

object :


HIPPO_CANVAS_SCROLLBARS_CLASS()

#define HIPPO_CANVAS_SCROLLBARS_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), HIPPO_TYPE_CANVAS_SCROLLBARS, HippoCanvasScrollbarsClass))

klass :


HIPPO_IS_CANVAS_SCROLLBARS()

#define HIPPO_IS_CANVAS_SCROLLBARS(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_CANVAS_SCROLLBARS))

object :


HIPPO_IS_CANVAS_SCROLLBARS_CLASS()

#define HIPPO_IS_CANVAS_SCROLLBARS_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), HIPPO_TYPE_CANVAS_SCROLLBARS))

klass :


HIPPO_CANVAS_SCROLLBARS_GET_CLASS()

#define HIPPO_CANVAS_SCROLLBARS_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), HIPPO_TYPE_CANVAS_SCROLLBARS, HippoCanvasScrollbarsClass))

obj :


HIPPO_TYPE_CANVAS_ENTRY

#define HIPPO_TYPE_CANVAS_ENTRY              (hippo_canvas_entry_get_type ())


HIPPO_CANVAS_ENTRY()

#define HIPPO_CANVAS_ENTRY(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_CANVAS_ENTRY, HippoCanvasEntry))

object :


HIPPO_CANVAS_ENTRY_CLASS()

#define HIPPO_CANVAS_ENTRY_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), HIPPO_TYPE_CANVAS_ENTRY, HippoCanvasEntryClass))

klass :


HIPPO_IS_CANVAS_ENTRY()

#define HIPPO_IS_CANVAS_ENTRY(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_CANVAS_ENTRY))

object :


HIPPO_IS_CANVAS_ENTRY_CLASS()

#define HIPPO_IS_CANVAS_ENTRY_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), HIPPO_TYPE_CANVAS_ENTRY))

klass :


HIPPO_CANVAS_ENTRY_GET_CLASS()

#define HIPPO_CANVAS_ENTRY_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), HIPPO_TYPE_CANVAS_ENTRY, HippoCanvasEntryClass))

obj :


hippo_canvas_scrollbars_set_root ()

void                hippo_canvas_scrollbars_set_root    (HippoCanvasScrollbars *scrollbars,
                                                         HippoCanvasItem *item);

scrollbars :

item :


enum HippoScrollbarPolicy

typedef enum {
    HIPPO_SCROLLBAR_NEVER,
    HIPPO_SCROLLBAR_AUTOMATIC,
    HIPPO_SCROLLBAR_ALWAYS
} HippoScrollbarPolicy;


hippo_canvas_scrollbars_set_policy ()

void                hippo_canvas_scrollbars_set_policy  (HippoCanvasScrollbars *scrollbars,
                                                         HippoOrientation orientation,
                                                         HippoScrollbarPolicy policy);

scrollbars :

orientation :

policy :


hippo_canvas_entry_get_position ()

guint               hippo_canvas_entry_get_position     (HippoCanvasEntry *entry);

entry :

Returns :


hippo_canvas_entry_set_position ()

void                hippo_canvas_entry_set_position     (HippoCanvasEntry *entry,
                                                         guint pos);

entry :

pos :

hippo-canvas-0.3.1/docs/html/index.sgml0000664000076400007640000007724011404424207014735 00000000000000 hippo-canvas-0.3.1/docs/html/left.png0000644000076400007640000000071311404424207014367 00000000000000‰PNG  IHDRàw=øbKGDÿÿÿ ½§“ pHYs  ÒÝ~ütIMEÒ1&¹³[(XIDATxœµ•!OÃPEïÛ*ˆ‰ŠID%~ꊯ˜ÄÕ"pæ'öŘ`sÜ–¥rKf–´‚¤â h—mi—ÇIžz}÷ܯIû¤–.pÚö\“`xä‹ ˆl‡?l·[²,H¬‡¯×k<Ï#Žcþ%\’AUx[S³7–n6ù¾¯år¹ßèõzE‰‡’s’žŒ1³ºö“²æÅj@œ—NL$ݤiª0 ¿5/ð}¿²\E‡Ž¤KIo¥Í“$a0üjÞdF£bŠkIê„‹æAh>ŸW¶lC'?“tk;|/t*I»ÝN«ÕÊZø^`Œy•4ë÷ûšN§r]×® çJÒÌó<«’½À“Út»Ýú€à`±Xàºî1@p´ä€¸d½÷ŽZ')høÖÚK¬ ª$V?%Å]€­+³L’sgUKà"ÿw5â3O·•ÜòIEND®B`‚hippo-canvas-0.3.1/docs/html/HippoCanvasImageButton.html0000664000076400007640000002057311404424207020177 00000000000000 HippoCanvasImageButton

HippoCanvasImageButton

HippoCanvasImageButton

Synopsis

#include <hippo/hippo-canvas-image-button.h>

                    HippoCanvasImageButton;
HippoCanvasItem*    hippo_canvas_image_button_new       (void);

Object Hierarchy

  GObject
   +----HippoCanvasBox
         +----HippoCanvasImage
               +----HippoCanvasImageButton

Implemented Interfaces

HippoCanvasImageButton implements HippoCanvasItem, HippoCanvasContext and HippoCanvasContainer.

Properties

  "normal-image"             HippoCairoSurface*    : Read / Write
  "normal-image-name"        gchar*                : Read / Write
  "prelight-image"           HippoCairoSurface*    : Read / Write
  "prelight-image-name"      gchar*                : Read / Write

Description

Details

HippoCanvasImageButton

typedef struct _HippoCanvasImageButton HippoCanvasImageButton;


hippo_canvas_image_button_new ()

HippoCanvasItem*    hippo_canvas_image_button_new       (void);

Returns :

Property Details

The "normal-image" property

  "normal-image"             HippoCairoSurface*    : Read / Write

normal image as cairo_surface_t.


The "normal-image-name" property

  "normal-image-name"        gchar*                : Read / Write

Name of normal image to be loaded into the item.

Default value: NULL


The "prelight-image" property

  "prelight-image"           HippoCairoSurface*    : Read / Write

prelight image as cairo_surface_t.


The "prelight-image-name" property

  "prelight-image-name"      gchar*                : Read / Write

Name of prelight image to be loaded into the item.

Default value: NULL

hippo-canvas-0.3.1/docs/html/HippoCanvasContainer.html0000664000076400007640000002573511404424207017710 00000000000000 HippoCanvasContainer

HippoCanvasContainer

HippoCanvasContainer

Object Hierarchy

  GInterface
   +----HippoCanvasContainer

Known Implementations

HippoCanvasContainer is implemented by HippoCanvasBox, HippoCanvasGradient, HippoCanvasImage, HippoCanvasImageButton, HippoCanvasLink and HippoCanvasText.

Description

Details

HippoCanvasContainer

typedef struct _HippoCanvasContainer HippoCanvasContainer;


HippoCanvasContainerIface

typedef struct {
    GTypeInterface base_iface;

    gboolean (* get_child_visible) (HippoCanvasContainer        *container,
                                    HippoCanvasItem             *child);
    void     (* set_child_visible) (HippoCanvasContainer        *container,
                                    HippoCanvasItem             *child,
                                    gboolean                     visible);
} HippoCanvasContainerIface;


hippo_canvas_container_get_child_visible ()

gboolean            hippo_canvas_container_get_child_visible
                                                        (HippoCanvasContainer *container,
                                                         HippoCanvasItem *child);

container :

child :

Returns :


hippo_canvas_container_set_child_visible ()

void                hippo_canvas_container_set_child_visible
                                                        (HippoCanvasContainer *container,
                                                         HippoCanvasItem *child,
                                                         gboolean visible);

This is the equivalent of gtk_widget_show() and gtk_widget_hide() for GtkWidget. Unlike GtkWidget, in HippoCanvas visibility is a property of the container-child pair rather than a property of the child itself. Thus, if you remove a child from a container its visibility state is lost.

Internally, invisible children are just allocated a 0x0 size; they are not otherwise told they are invisible.

Making this a "child property" on the container instead of a flag on HippoCanvasItem is perhaps a little surprising, but is consistent with e.g. having the allocation origin in the container also. The general theme is that HippoCanvasItem has minimal knowledge of its context - doesn't know its origin coords, parent item, or whether it will be painted at all. Which makes it easier to implement canvas items and easier to use them in different/multiple contexts, but makes containers harder and more complex.

An implementation convenience of this approach is that the Windows and Linux canvas widgets need not handle the visibility of their root items.

container :

the container item

child :

child that is inside the container

visible :

FALSE if child should be given a 0x0 allocation and therefore be invisible
hippo-canvas-0.3.1/docs/html/hippo-canvas.devhelp20000664000076400007640000006164511404424207016767 00000000000000 hippo-canvas-0.3.1/docs/html/hippo-canvas-Graphics.html0000664000076400007640000003656711404424207017765 00000000000000 Graphics

Graphics

Graphics

Synopsis

#include <hippo/hippo-graphics.h>

#define             HIPPO_TYPE_RECTANGLE
enum                HippoOrientation;
enum                HippoSide;
enum                HippoGravity;
                    HippoRectangle;
GType               hippo_rectangle_get_type            (void);
gboolean            hippo_rectangle_intersect           (const HippoRectangle *src1,
                                                         const HippoRectangle *src2,
                                                         HippoRectangle *dest);
gboolean            hippo_rectangle_equal               (const HippoRectangle *r1,
                                                         const HippoRectangle *r2);
HippoRectangle *    hippo_rectangle_copy                (HippoRectangle *r);
void                hippo_rectangle_free                (HippoRectangle *r);
void                hippo_cairo_set_source_rgba32       (cairo_t *cr,
                                                         guint32 color);
void                hippo_cairo_pattern_add_stop_rgba32 (cairo_pattern_t *pattern,
                                                         double offset,
                                                         guint32 color);

Description

Details

HIPPO_TYPE_RECTANGLE

#define HIPPO_TYPE_RECTANGLE (hippo_rectangle_get_type())


enum HippoOrientation

typedef enum
{
    HIPPO_ORIENTATION_VERTICAL,
    HIPPO_ORIENTATION_HORIZONTAL
} HippoOrientation;


enum HippoSide

typedef enum
{
    HIPPO_SIDE_TOP,
    HIPPO_SIDE_BOTTOM,
    HIPPO_SIDE_LEFT,
    HIPPO_SIDE_RIGHT
} HippoSide;


enum HippoGravity

typedef enum{
    HIPPO_GRAVITY_NORTH_WEST,
    HIPPO_GRAVITY_NORTH_EAST,
    HIPPO_GRAVITY_SOUTH_EAST,
    HIPPO_GRAVITY_SOUTH_WEST
} HippoGravity;


HippoRectangle

typedef struct {
    int x;
    int y;
    int width;
    int height;
} HippoRectangle;


hippo_rectangle_get_type ()

GType               hippo_rectangle_get_type            (void);

Returns :


hippo_rectangle_intersect ()

gboolean            hippo_rectangle_intersect           (const HippoRectangle *src1,
                                                         const HippoRectangle *src2,
                                                         HippoRectangle *dest);

src1 :

src2 :

dest :

Returns :


hippo_rectangle_equal ()

gboolean            hippo_rectangle_equal               (const HippoRectangle *r1,
                                                         const HippoRectangle *r2);

r1 :

r2 :

Returns :


hippo_rectangle_copy ()

HippoRectangle *    hippo_rectangle_copy                (HippoRectangle *r);

r :

Returns :


hippo_rectangle_free ()

void                hippo_rectangle_free                (HippoRectangle *r);

r :


hippo_cairo_set_source_rgba32 ()

void                hippo_cairo_set_source_rgba32       (cairo_t *cr,
                                                         guint32 color);

cr :

color :


hippo_cairo_pattern_add_stop_rgba32 ()

void                hippo_cairo_pattern_add_stop_rgba32 (cairo_pattern_t *pattern,
                                                         double offset,
                                                         guint32 color);

pattern :

offset :

color :

hippo-canvas-0.3.1/docs/html/HippoCanvasContext.html0000664000076400007640000006011211404424207017376 00000000000000 HippoCanvasContext

HippoCanvasContext

HippoCanvasContext

Object Hierarchy

  GInterface
   +----HippoCanvasContext

Known Implementations

HippoCanvasContext is implemented by HippoCanvasBox, HippoCanvasGradient, HippoCanvasImage, HippoCanvasImageButton, HippoCanvasLink and HippoCanvasText.

Signals

  "style-changed"                                  : Run Last

Description

Details

enum HippoStockColor

typedef enum {
    HIPPO_STOCK_COLOR_BG_NORMAL,
    HIPPO_STOCK_COLOR_BG_PRELIGHT,
    HIPPO_STOCK_COLOR_FG
} HippoStockColor;


HippoCanvasContext

typedef struct _HippoCanvasContext HippoCanvasContext;


HippoCanvasContextIface

typedef struct {
    GTypeInterface base_iface;

    PangoLayout*     (* create_layout)  (HippoCanvasContext  *context);
    cairo_surface_t* (* create_surface) (HippoCanvasContext  *context,
                                         cairo_content_t      content,
                                         int                  width,
                                         int                  height);

    cairo_surface_t* (* load_image)     (HippoCanvasContext  *context,
                                         const char          *image_name);

    guint32          (* get_color)      (HippoCanvasContext  *context,
                                         HippoStockColor      color);

    void             (* register_widget_item)   (HippoCanvasContext *context,
                                                 HippoCanvasItem    *item);
    void             (* unregister_widget_item) (HippoCanvasContext *context,
                                                 HippoCanvasItem    *item);    
    void             (* translate_to_widget)    (HippoCanvasContext *context,
                                                 HippoCanvasItem    *item,
                                                 int                *x_p,
                                                 int                *y_p);
    void             (* translate_to_screen)    (HippoCanvasContext *context,
                                                 HippoCanvasItem    *item,
                                                 int                *x_p,
                                                 int                *y_p);
    HippoCanvasStyle *(* get_style)             (HippoCanvasContext *context);
    double            (* get_resolution)        (HippoCanvasContext *context);
    PangoFontDescription *(* get_font)          (HippoCanvasContext *context);
    
    HippoAnimationManager *( *get_animation_manager) (HippoCanvasContext *context);

    /* Signals */

    /* Inherited style properties (see affect_* methods) have changed.
     * resize_needed means the change needs a resize not just repaint.
     */
    void             (* style_changed)    (HippoCanvasContext *context,
                                           gboolean            resize_needed);
} HippoCanvasContextIface;


hippo_canvas_context_create_layout ()

PangoLayout*        hippo_canvas_context_create_layout  (HippoCanvasContext *context);

context :

Returns :


hippo_canvas_context_load_image ()

cairo_surface_t*    hippo_canvas_context_load_image     (HippoCanvasContext *context,
                                                         const char *image_name);

context :

image_name :

Returns :


hippo_canvas_context_get_color ()

guint32             hippo_canvas_context_get_color      (HippoCanvasContext *context,
                                                         HippoStockColor color);

context :

color :

Returns :


hippo_canvas_context_register_widget_item ()

void                hippo_canvas_context_register_widget_item
                                                        (HippoCanvasContext *context,
                                                         HippoCanvasItem *item);

context :

item :


hippo_canvas_context_unregister_widget_item ()

void                hippo_canvas_context_unregister_widget_item
                                                        (HippoCanvasContext *context,
                                                         HippoCanvasItem *item);

context :

item :


hippo_canvas_context_translate_to_widget ()

void                hippo_canvas_context_translate_to_widget
                                                        (HippoCanvasContext *context,
                                                         HippoCanvasItem *item,
                                                         int *x_p,
                                                         int *y_p);

context :

item :

x_p :

y_p :


hippo_canvas_context_translate_to_screen ()

void                hippo_canvas_context_translate_to_screen
                                                        (HippoCanvasContext *context,
                                                         HippoCanvasItem *item,
                                                         int *x_p,
                                                         int *y_p);

context :

item :

x_p :

y_p :


hippo_canvas_context_emit_style_changed ()

void                hippo_canvas_context_emit_style_changed
                                                        (HippoCanvasContext *context,
                                                         gboolean resize_needed);

context :

resize_needed :

Signal Details

The "style-changed" signal

void                user_function                      (HippoCanvasContext *hippocanvascontext,
                                                        gboolean            arg1,
                                                        gpointer            user_data)               : Run Last

hippocanvascontext :

the object which received the signal.

arg1 :

user_data :

user data set when the signal handler was connected.
hippo-canvas-0.3.1/docs/html/hippo-canvas-Utilitites.html0000664000076400007640000000772711404424207020360 00000000000000 Utilitites

Utilitites

Utilitites

Synopsis

#include <hippo/hippo-canvas-util.h>

#define             HIPPO_TYPE_CAIRO_SURFACE
GType               hippo_cairo_surface_get_type        (void);

Description

Details

HIPPO_TYPE_CAIRO_SURFACE

#define HIPPO_TYPE_CAIRO_SURFACE           (hippo_cairo_surface_get_type ())


hippo_cairo_surface_get_type ()

GType               hippo_cairo_surface_get_type        (void);

Returns :

hippo-canvas-0.3.1/docs/html/HippoCanvasText.html0000664000076400007640000002517711404424207016712 00000000000000 HippoCanvasText

HippoCanvasText

HippoCanvasText

Synopsis

#include <hippo/hippo-canvas-text.h>

enum                HippoCanvasSizeMode;
                    HippoCanvasText;
HippoCanvasItem*    hippo_canvas_text_new               (void);

Object Hierarchy

  GObject
   +----HippoCanvasBox
         +----HippoCanvasText
               +----HippoCanvasLink

Implemented Interfaces

HippoCanvasText implements HippoCanvasItem, HippoCanvasContext and HippoCanvasContainer.

Properties

  "attributes"               PangoAttrList*        : Read / Write
  "font-scale"               gdouble               : Read / Write
  "markup"                   gchar*                : Write
  "size-mode"                HippoCanvasSizeMode   : Read / Write
  "text"                     gchar*                : Read / Write

Description

Details

enum HippoCanvasSizeMode

typedef enum {
    HIPPO_CANVAS_SIZE_FULL_WIDTH,
    HIPPO_CANVAS_SIZE_WRAP_WORD,
    HIPPO_CANVAS_SIZE_ELLIPSIZE_END
} HippoCanvasSizeMode;


HippoCanvasText

typedef struct _HippoCanvasText HippoCanvasText;


hippo_canvas_text_new ()

HippoCanvasItem*    hippo_canvas_text_new               (void);

Returns :

Property Details

The "attributes" property

  "attributes"               PangoAttrList*        : Read / Write

The Pango attributes of the text; usually it is more convenient to use the 'markup' property than to do the attributes by hand.


The "font-scale" property

  "font-scale"               gdouble               : Read / Write

A scale factor for the font; Pango exports constants for common factors, such as PANGO_SCALE_LARGE, PANGO_SCALE_X_SMALL and so forth. If you want to set an absolute font size, use the 'font' or 'font-desc' properties which are introduced in the HippoCanvasBox base class.

Allowed values: [0,100]

Default value: 1


The "markup" property

  "markup"                   gchar*                : Write

The text to display in Pango markup format, allowing you to do bold and other text styles. This is a shortcut way to set the 'text' and 'attributes' properties.

Default value: NULL


The "size-mode" property

  "size-mode"                HippoCanvasSizeMode   : Read / Write

Three "size modes" are available. In HIPPO_CANVAS_SIZE_FULL_WIDTH mode, the text item will give the width of its text as its minimum size. In HIPPO_CANVAS_SIZE_WRAP_WORD, the text item will wrap to fit available space - its minimum width will be pretty small, but as the width decreases its height will increase. In HIPPO_CANVAS_SIZE_ELLIPSIZE_END mode, the width of the text will be the natural width of the item, but the minimum width will be small. If the item gets less than its natural width, it will ellipsize the text in order to fit in available space.

If none of that made sense, just decide whether you want to always display all the text without wrapping, want to be able to wrap as the available space shrinks, or want to ellipsize the text as the available space shrinks.

Default value: HIPPO_CANVAS_SIZE_FULL_WIDTH


The "text" property

  "text"                     gchar*                : Read / Write

The text to display.

Default value: NULL

hippo-canvas-0.3.1/docs/html/hippo-canvas-HippoEvent.html0000664000076400007640000002140711404424207020271 00000000000000 HippoEvent

HippoEvent

HippoEvent

Synopsis

#include <hippo/hippo-event.h>

#define             HIPPO_TYPE_EVENT
enum                HippoEventType;
enum                HippoMotionDetail;
                    HippoEvent;
enum                HippoKey;
enum                HippoModifier;
GType               hippo_event_get_type                (void);
HippoEvent *        hippo_event_copy                    (HippoEvent *event);
void                hippo_event_free                    (HippoRectangle *event);

Description

Details

HIPPO_TYPE_EVENT

#define HIPPO_TYPE_EVENT (hippo_event_get_type())


enum HippoEventType

typedef enum {
    HIPPO_EVENT_BUTTON_PRESS,
    HIPPO_EVENT_BUTTON_RELEASE,
    HIPPO_EVENT_MOTION_NOTIFY,
    HIPPO_EVENT_KEY_PRESS,
    HIPPO_EVENT_SCROLL
} HippoEventType;


enum HippoMotionDetail

typedef enum {
    HIPPO_MOTION_DETAIL_ENTER,
    HIPPO_MOTION_DETAIL_LEAVE,
    HIPPO_MOTION_DETAIL_WITHIN
} HippoMotionDetail;


HippoEvent

typedef struct {
    HippoEventType type;
    int x;
    int y;
    union {
        struct {
            HippoMotionDetail detail;
        } motion;
        struct {
            int button;
            int count;

            /* we pass these through for gtk_window_begin_resize_drag() */
            int x11_x_root;
            int x11_y_root;
            guint32 x11_time;
            guint modifiers;
        } button;
        struct {
            HippoKey key;
            gunichar character; /* 0 if no translation */
            guint modifiers;
        } key;
        struct {
            HippoScrollDirection direction;
        } scroll;
    } u;
} HippoEvent;


enum HippoKey

typedef enum {
    HIPPO_KEY_UNKNOWN, 
    HIPPO_KEY_RETURN,
    HIPPO_KEY_ESCAPE,
    HIPPO_KEY_TAB,
    HIPPO_KEY_LEFTTAB
} HippoKey;


enum HippoModifier

typedef enum {
    HIPPO_MODIFIER_SHIFT = 1 << 0,
    HIPPO_MODIFIER_CTRL = 1 << 1,
    HIPPO_MODIFIER_ALT = 1 << 2
} HippoModifier;


hippo_event_get_type ()

GType               hippo_event_get_type                (void);

Returns :


hippo_event_copy ()

HippoEvent *        hippo_event_copy                    (HippoEvent *event);

event :

Returns :


hippo_event_free ()

void                hippo_event_free                    (HippoRectangle *event);

event :

hippo-canvas-0.3.1/docs/html/HippoCanvasStyle.html0000664000076400007640000000633411404424207017060 00000000000000 HippoCanvasStyle

HippoCanvasStyle

HippoCanvasStyle

Synopsis

#include <hippo/hippo-canvas-style.h>

                    HippoCanvasStyle;

Object Hierarchy

  GObject
   +----HippoCanvasStyle

Description

Details

HippoCanvasStyle

typedef struct _HippoCanvasStyle HippoCanvasStyle;

hippo-canvas-0.3.1/docs/html/HippoCanvasGradient.html0000664000076400007640000001561611404424207017520 00000000000000 HippoCanvasGradient

HippoCanvasGradient

HippoCanvasGradient

Synopsis

#include <hippo/hippo-canvas-gradient.h>

                    HippoCanvasGradient;
HippoCanvasItem*    hippo_canvas_gradient_new           (void);

Object Hierarchy

  GObject
   +----HippoCanvasBox
         +----HippoCanvasGradient

Implemented Interfaces

HippoCanvasGradient implements HippoCanvasItem, HippoCanvasContext and HippoCanvasContainer.

Properties

  "end-color"                guint                 : Read / Write
  "start-color"              guint                 : Read / Write

Description

Details

HippoCanvasGradient

typedef struct _HippoCanvasGradient HippoCanvasGradient;


hippo_canvas_gradient_new ()

HippoCanvasItem*    hippo_canvas_gradient_new           (void);

Returns :

Property Details

The "end-color" property

  "end-color"                guint                 : Read / Write

Last color in the gradient.

Default value: 0


The "start-color" property

  "start-color"              guint                 : Read / Write

First color in the gradient.

Default value: 0

hippo-canvas-0.3.1/docs/html/HippoCanvasImage.html0000664000076400007640000002066311404424207017003 00000000000000 HippoCanvasImage

HippoCanvasImage

HippoCanvasImage

Synopsis

#include <hippo/hippo-canvas-image.h>

                    HippoCanvasImage;
HippoCanvasItem*    hippo_canvas_image_new              (void);

Object Hierarchy

  GObject
   +----HippoCanvasBox
         +----HippoCanvasImage
               +----HippoCanvasImageButton

Implemented Interfaces

HippoCanvasImage implements HippoCanvasItem, HippoCanvasContext and HippoCanvasContainer.

Properties

  "image"                    HippoCairoSurface*    : Read / Write
  "image-name"               gchar*                : Read / Write
  "scale-height"             gint                  : Read / Write
  "scale-width"              gint                  : Read / Write

Description

Details

HippoCanvasImage

typedef struct _HippoCanvasImage HippoCanvasImage;


hippo_canvas_image_new ()

HippoCanvasItem*    hippo_canvas_image_new              (void);

Returns :

Property Details

The "image" property

  "image"                    HippoCairoSurface*    : Read / Write

Specifies the Cairo surface to display.


The "image-name" property

  "image-name"               gchar*                : Read / Write

Specifies an image name to display; with GTK+ the image name is an image name registered with the GTK+ theme system.

Default value: NULL


The "scale-height" property

  "scale-height"             gint                  : Read / Write

A height in pixels to scale the image to, or -1 to use the image's original height.

Allowed values: >= -1

Default value: -1


The "scale-width" property

  "scale-width"              gint                  : Read / Write

A width in pixels to scale the image to, or -1 to use the image's original width.

Allowed values: >= -1

Default value: -1

hippo-canvas-0.3.1/docs/html/up.png0000644000076400007640000000062611404424207014064 00000000000000‰PNG  IHDRàw=øbKGDÿÿÿ ½§“ pHYs  ÒÝ~ütIMEÒ2.œE€Ù#IDATxœí“=JÄ@F¿o‰] !+¤œ2…Å[ZÌ<@/á<€¥…XÛ Ú­20v±³ˆÂ…Ïj0»lþvV°ðA`˜ ïÍ ð—t*iùâHÒ­~xR~'IUUÉ9ç#OÁ‘my–eJÓTeY†GvÉ@x¤O#ß;2E>9²|t$DÞ9nnBäíÈjµò‘BRIsIªë:HîŸ8ŽU…œùëùPÖÚN™1fc­sNÎ95Mã§–ɵ¤ ׿ŸØŒ1~¸pEòe$ïIž°€Ç î7nrDòf!;Ã`¨çÝ'äykíÎI’øáû䲤sI_]ÿÇy—‡‘€ÅÀ^^I>O>Á¡ø­§²š?YBIEND®B`‚hippo-canvas-0.3.1/docs/html/home.png0000644000076400007640000000121611404424207014364 00000000000000‰PNG  IHDRàw=øbKGDÿÿÿ ½§“ pHYs  ÒÝ~ütIMEÒ1õÚKvIDATxœÕ•±kqÅ?ßrC‡ßàpà ~C„np¼¡CAAJ .B-\'G‡]:Ü “‚ƒCÇ -(ˆ8´à Ô€!…fD°€…çÒ“klbRÛÁoyüxïûîËïwpðIJº<°of_®-@ÒððçRH•´ÏfÖŸtèÂü¤^¯×ÓÚÚš’$Q«ÕÒ|“ôpâ’¶€gív;X^^&Ïs¢(bww—Z­F£ÑÀ9Çææ&Þû3à¶™ Æ’^IRµZUE.0Z]]Uš¦ ÃPY–Mü8óHÒGIÚÙÙÑìììæeŸkqqñÒ€™!ó  $ÛÛÛ¬¯¯3Œn eýþ{-/seeeìÔÃŒãXóóóåO‡Í·$ý8==UÇS™—é½×ÑÑQòRR€¤'ã–9-sÚÛÛ+B^ éC·Û•sîŸÍËÂ+%À°<7³ŸWô˜¿ õâ:™2IEND®B`‚hippo-canvas-0.3.1/docs/html/right.png0000644000076400007640000000073011404424207014551 00000000000000‰PNG  IHDRàw=øbKGDÿÿÿ ½§“ pHYs  ÒÝ~ütIMEÒ2 I%Á=eIDATxœ­”!oÂ@†Ÿ.'**M0$ÄÁ$¿?1~¢vIeEuLlÉ&–Ô4‚ä Í¶B»Ý›œ¹|÷>ï—ûî …$ݶ©oc<”´ÑA©¤×€X’ò HippoCanvasBox

HippoCanvasBox

HippoCanvasBox

Synopsis

#include <hippo/hippo-canvas-box.h>

enum                HippoPackFlags;
int                 (*HippoCanvasCompareChildFunc)      (HippoCanvasItem *child_a,
                                                         HippoCanvasItem *child_b,
                                                         void *data);
void                (*HippoCanvasForeachChildFunc)      (HippoCanvasItem *child,
                                                         void *data);
                    HippoCanvasBox;
HippoCanvasItem*    hippo_canvas_box_new                (void);
void                hippo_canvas_box_prepend            (HippoCanvasBox *box,
                                                         HippoCanvasItem *child,
                                                         HippoPackFlags flags);
void                hippo_canvas_box_append             (HippoCanvasBox *box,
                                                         HippoCanvasItem *child,
                                                         HippoPackFlags flags);
void                hippo_canvas_box_move               (HippoCanvasBox *box,
                                                         HippoCanvasItem *child,
                                                         HippoGravity gravity,
                                                         int x,
                                                         int y);
void                hippo_canvas_box_set_position       (HippoCanvasBox *box,
                                                         HippoCanvasItem *child,
                                                         int x,
                                                         int y);
void                hippo_canvas_box_get_position       (HippoCanvasBox *box,
                                                         HippoCanvasItem *child,
                                                         int *x,
                                                         int *y);
void                hippo_canvas_box_clear              (HippoCanvasBox *box);
void                hippo_canvas_box_remove             (HippoCanvasBox *box,
                                                         HippoCanvasItem *child);
void                hippo_canvas_box_remove_all         (HippoCanvasBox *box);
GList*              hippo_canvas_box_get_children       (HippoCanvasBox *box);
gboolean            hippo_canvas_box_is_empty           (HippoCanvasBox *box);
void                hippo_canvas_box_foreach            (HippoCanvasBox *box,
                                                         HippoCanvasForeachChildFunc func,
                                                         void *data);
void                hippo_canvas_box_reverse            (HippoCanvasBox *box);
void                hippo_canvas_box_sort               (HippoCanvasBox *box,
                                                         HippoCanvasCompareChildFunc compare_func,
                                                         void *data);
void                hippo_canvas_box_insert_after       (HippoCanvasBox *box,
                                                         HippoCanvasItem *child,
                                                         HippoCanvasItem *ref_child,
                                                         HippoPackFlags flags);
void                hippo_canvas_box_insert_before      (HippoCanvasBox *box,
                                                         HippoCanvasItem *child,
                                                         HippoCanvasItem *ref_child,
                                                         HippoPackFlags flags);
void                hippo_canvas_box_insert_sorted      (HippoCanvasBox *box,
                                                         HippoCanvasItem *child,
                                                         HippoPackFlags flags,
                                                         HippoCanvasCompareChildFunc compare_func,
                                                         void *data);
void                hippo_canvas_box_set_child_packing  (HippoCanvasBox *box,
                                                         HippoCanvasItem *child,
                                                         HippoPackFlags flags);
void                hippo_canvas_box_get_background_area
                                                        (HippoCanvasBox *box,
                                                         HippoRectangle *area);
void                hippo_canvas_box_align              (HippoCanvasBox *box,
                                                         int content_width,
                                                         int content_height,
                                                         int *x_p,
                                                         int *y_p,
                                                         int *width_p,
                                                         int *height_p);
void                hippo_canvas_box_set_clickable      (HippoCanvasBox *box,
                                                         gboolean clickable);
gboolean            hippo_canvas_box_is_clickable       (HippoCanvasBox *box);
void                hippo_canvas_box_set_layout         (HippoCanvasBox *box,
                                                         HippoCanvasLayout *layout);
HippoCanvasBoxChild * hippo_canvas_box_find_box_child   (HippoCanvasBox *box,
                                                         HippoCanvasItem *item);
GList *             hippo_canvas_box_get_layout_children
                                                        (HippoCanvasBox *box);

                    HippoCanvasBoxChild;
HippoCanvasBoxChild * hippo_canvas_box_child_ref        (HippoCanvasBoxChild *child);
void                hippo_canvas_box_child_unref        (HippoCanvasBoxChild *child);
gpointer            hippo_canvas_box_child_get_qdata    (HippoCanvasBoxChild *child,
                                                         GQuark key);
void                hippo_canvas_box_child_set_qdata    (HippoCanvasBoxChild *child,
                                                         GQuark key,
                                                         gpointer data,
                                                         GDestroyNotify notify);
void                hippo_canvas_box_child_get_width_request
                                                        (HippoCanvasBoxChild *child,
                                                         int *min_width_p,
                                                         int *natural_width_p);
void                hippo_canvas_box_child_get_height_request
                                                        (HippoCanvasBoxChild *child,
                                                         int for_width,
                                                         int *min_height_p,
                                                         int *natural_height_p);
void                hippo_canvas_box_child_allocate     (HippoCanvasBoxChild *child,
                                                         int x,
                                                         int y,
                                                         int width,
                                                         int height,
                                                         gboolean origin_changed);

Object Hierarchy

  GObject
   +----HippoCanvasBox
         +----HippoCanvasImage
         +----HippoCanvasText
         +----HippoCanvasGradient

Implemented Interfaces

HippoCanvasBox implements HippoCanvasItem, HippoCanvasContext and HippoCanvasContainer.

Properties

  "background-color"         guint                 : Read / Write
  "background-color-set"     gboolean              : Read / Write
  "border"                   gint                  : Write
  "border-bottom"            gint                  : Read / Write
  "border-color"             guint                 : Read / Write
  "border-color-set"         gboolean              : Read / Write
  "border-left"              gint                  : Read / Write
  "border-right"             gint                  : Read / Write
  "border-top"               gint                  : Read / Write
  "box-height"               gint                  : Read / Write
  "box-width"                gint                  : Read / Write
  "color"                    guint                 : Read / Write
  "color-set"                gboolean              : Read / Write
  "debug-name"               gchar*                : Read / Write
  "font"                     gchar*                : Read / Write
  "font-desc"                PangoFontDescription*  : Read / Write
  "orientation"              HippoOrientation      : Read / Write
  "padding"                  gint                  : Write
  "padding-bottom"           gint                  : Read / Write
  "padding-left"             gint                  : Read / Write
  "padding-right"            gint                  : Read / Write
  "padding-top"              gint                  : Read / Write
  "spacing"                  gint                  : Read / Write
  "tooltip"                  gchar*                : Read / Write
  "xalign"                   HippoItemAlignment    : Read / Write
  "yalign"                   HippoItemAlignment    : Read / Write

Signals

  "hovering-changed"                               : Run Last

Description

Details

enum HippoPackFlags

typedef enum /*< flags >*/
{
    HIPPO_PACK_EXPAND = 1,  /**< This is equivalent to both EXPAND and FILL for GtkBox,
                             * the way you'd get FILL=false is to set the alignment
                             * on the child item
                             */
    HIPPO_PACK_END = 2,
    HIPPO_PACK_FIXED = 4,   /**< Like position: absolute or GtkFixed */
    HIPPO_PACK_IF_FITS = 8, /**< Can hide this child to make space if allocation is too small
                             * for the child's width request. 
                             * Include child width in box's natural width but not box's request.
                             * (doesn't work in vertical boxes for now)
                             */
    /* Floated children: only works with vertical box, and cannot be used in combination
     * with HIPPO_PACK_EXPAND or HIPPO_PACK_END
     */
    HIPPO_PACK_FLOAT_LEFT = 16,   /* Float to the left */
    HIPPO_PACK_FLOAT_RIGHT = 32,  /* Float to the right */
    HIPPO_PACK_CLEAR_LEFT = 64,   /* Pack below left-floated children */
    HIPPO_PACK_CLEAR_RIGHT = 128, /* Pack below right-floated children */
    HIPPO_PACK_CLEAR_BOTH = 192   /* Pack below left-and right floated children */
} HippoPackFlags;


HippoCanvasCompareChildFunc ()

int                 (*HippoCanvasCompareChildFunc)      (HippoCanvasItem *child_a,
                                                         HippoCanvasItem *child_b,
                                                         void *data);

child_a :

child_b :

data :

Returns :


HippoCanvasForeachChildFunc ()

void                (*HippoCanvasForeachChildFunc)      (HippoCanvasItem *child,
                                                         void *data);

child :

data :


HippoCanvasBox

typedef struct _HippoCanvasBox HippoCanvasBox;


hippo_canvas_box_new ()

HippoCanvasItem*    hippo_canvas_box_new                (void);

Returns :


hippo_canvas_box_prepend ()

void                hippo_canvas_box_prepend            (HippoCanvasBox *box,
                                                         HippoCanvasItem *child,
                                                         HippoPackFlags flags);

See hippo_canvas_box_append() for all the details.

box :

the canvas box

child :

the child to prepend

flags :

flags for how to layout the child

hippo_canvas_box_append ()

void                hippo_canvas_box_append             (HippoCanvasBox *box,
                                                         HippoCanvasItem *child,
                                                         HippoPackFlags flags);

Adds a child item to the box. HIPPO_PACK_END means the child should be added at the end of the box while normally the child would be added at the start of the box. This is just like the "pack end" concept in GtkBox. HIPPO_PACK_FIXED means the child is not included in the layout algorithm, you have to set its position manually with hippo_canvas_box_set_position(). HIPPO_PACK_IF_FITS means the child is "all or nothing"; if there isn't room to give all children their natural width, then the "if fits" children can be dropped. Dropping some children is often nicer than having all the children squished or forcing the entire box to be too big.

If you are familiar with GTK+ widget layout, note that GtkMisc functionality (alignment and padding) are incorporated into the items themselves in the form of the alignment and border/padding properties. GtkFixed functionality is part of HippoCanvasBox because children can be packed HIPPO_PACK_FIXED. HippoCanvasBox has an orientation property, rather than two subclasses for horizontal and vertical. And HIPPO_PACK_IF_FITS is not available in GTK+ because it requires the "natural size" vs. "minimum size" distinction that GTK+ lacks.

box :

the canvas box

child :

the child to append

flags :

flags for how to layout the child

hippo_canvas_box_move ()

void                hippo_canvas_box_move               (HippoCanvasBox *box,
                                                         HippoCanvasItem *child,
                                                         HippoGravity gravity,
                                                         int x,
                                                         int y);

box :

child :

gravity :

x :

y :


hippo_canvas_box_set_position ()

void                hippo_canvas_box_set_position       (HippoCanvasBox *box,
                                                         HippoCanvasItem *child,
                                                         int x,
                                                         int y);

box :

child :

x :

y :


hippo_canvas_box_get_position ()

void                hippo_canvas_box_get_position       (HippoCanvasBox *box,
                                                         HippoCanvasItem *child,
                                                         int *x,
                                                         int *y);

box :

child :

x :

y :


hippo_canvas_box_clear ()

void                hippo_canvas_box_clear              (HippoCanvasBox *box);

Removes all children from the box and calls hippo_canvas_item_destroy() on them.

box :

the canvas box

hippo_canvas_box_remove ()

void                hippo_canvas_box_remove             (HippoCanvasBox *box,
                                                         HippoCanvasItem *child);

box :

child :


hippo_canvas_box_remove_all ()

void                hippo_canvas_box_remove_all         (HippoCanvasBox *box);

Removes all children from the box without destroying them. You probably want hipppo_canvas_box_clear() instead unless you have a particular reason to preserve the children. The explicit destroy added by hipppo_canvas_box_clear() will make your application more robust against memory leaks.

box :

the canvas box

hippo_canvas_box_get_children ()

GList*              hippo_canvas_box_get_children       (HippoCanvasBox *box);

box :

Returns :

. [element-type CanvasBoxChild*][transfer container CanvasBoxChild*]

hippo_canvas_box_is_empty ()

gboolean            hippo_canvas_box_is_empty           (HippoCanvasBox *box);

box :

Returns :


hippo_canvas_box_foreach ()

void                hippo_canvas_box_foreach            (HippoCanvasBox *box,
                                                         HippoCanvasForeachChildFunc func,
                                                         void *data);

box :

func :

data :


hippo_canvas_box_reverse ()

void                hippo_canvas_box_reverse            (HippoCanvasBox *box);

box :


hippo_canvas_box_sort ()

void                hippo_canvas_box_sort               (HippoCanvasBox *box,
                                                         HippoCanvasCompareChildFunc compare_func,
                                                         void *data);

box :

compare_func :

data :


hippo_canvas_box_insert_after ()

void                hippo_canvas_box_insert_after       (HippoCanvasBox *box,
                                                         HippoCanvasItem *child,
                                                         HippoCanvasItem *ref_child,
                                                         HippoPackFlags flags);

box :

child :

ref_child :

flags :


hippo_canvas_box_insert_before ()

void                hippo_canvas_box_insert_before      (HippoCanvasBox *box,
                                                         HippoCanvasItem *child,
                                                         HippoCanvasItem *ref_child,
                                                         HippoPackFlags flags);

box :

child :

ref_child :

flags :


hippo_canvas_box_insert_sorted ()

void                hippo_canvas_box_insert_sorted      (HippoCanvasBox *box,
                                                         HippoCanvasItem *child,
                                                         HippoPackFlags flags,
                                                         HippoCanvasCompareChildFunc compare_func,
                                                         void *data);

box :

child :

flags :

compare_func :

data :


hippo_canvas_box_set_child_packing ()

void                hippo_canvas_box_set_child_packing  (HippoCanvasBox *box,
                                                         HippoCanvasItem *child,
                                                         HippoPackFlags flags);

box :

child :

flags :


hippo_canvas_box_get_background_area ()

void                hippo_canvas_box_get_background_area
                                                        (HippoCanvasBox *box,
                                                         HippoRectangle *area);

box :

area :


hippo_canvas_box_align ()

void                hippo_canvas_box_align              (HippoCanvasBox *box,
                                                         int content_width,
                                                         int content_height,
                                                         int *x_p,
                                                         int *y_p,
                                                         int *width_p,
                                                         int *height_p);

This is a "protected" method intended for use by HippoCanvasBox subclasses (basically all items are box subclasses right now). Pass in a size request, and have it converted to the right place to actually draw, with padding/border removed and alignment performed. In other words this sorts out the padding, border, and xalign/yalign properties for you.

box :

content_width :

width of the content of your item (text, image, children, whatever)

content_height :

height of the content

x_p :

output the X origin where you should put your content

y_p :

output the Y origin where you should put your content

width_p :

output the width of your content (may exceed the passed-in width/height if alignment mode is HIPPO_ALIGNMENT_FILL for example)

height_p :

output the height of your content

hippo_canvas_box_set_clickable ()

void                hippo_canvas_box_set_clickable      (HippoCanvasBox *box,
                                                         gboolean clickable);

box :

clickable :


hippo_canvas_box_is_clickable ()

gboolean            hippo_canvas_box_is_clickable       (HippoCanvasBox *box);

box :

Returns :


hippo_canvas_box_set_layout ()

void                hippo_canvas_box_set_layout         (HippoCanvasBox *box,
                                                         HippoCanvasLayout *layout);

Sets the layout manager to use for the box. A layout manager provides an alternate method of laying out the children of a box. Once you set a layout manager for the box, you will typically want to add children to the box using the methods of the layout manager, rather than the methods of the box, so that you can specify packing options that are specific to the layout manager.

box :

a HippoCanvasBox

layout :

the layout manager to set on the box or NULL to use the default box layout manager.

hippo_canvas_box_find_box_child ()

HippoCanvasBoxChild * hippo_canvas_box_find_box_child   (HippoCanvasBox *box,
                                                         HippoCanvasItem *item);

box :

item :

Returns :


hippo_canvas_box_get_layout_children ()

GList *             hippo_canvas_box_get_layout_children
                                                        (HippoCanvasBox *box);

Return the list of children that a layout manager should manage. As compared to hippo_canvas_box_get_children() this list omits widgets that are not visible, positioned at a fixed position, or not geometry managed for some other reason. It also returns a list of HippoCanvasBoxChild rather than a list of HippoCanvasItem.

If you are implementing a layout manager that iterates over the box's child list directly (to save creating the list, say), you should check the 'in_layout' property of each child before laying it out.

box :

a HippoCanvasBox

Returns :

a list of HippoCanvasBoxChild. The list should be freed with g_list_free(), but the members don't have to be freed. (No reference count is added to them.). [element-type CanvasBoxChild*][transfer container CanvasBoxChild*]

HippoCanvasBoxChild

typedef struct {
    HippoCanvasItem *item;

    /* If this is false, layout managers should ignore this item */
    guint            in_layout : 1;

    guint            expand : 1;
    guint            end : 1;
    guint            fixed : 1;
    guint            if_fits : 1;
    guint            float_left : 1;
    guint            float_right : 1;
    guint            clear_left : 1;
    guint            clear_right : 1;
    guint            visible : 1;
} HippoCanvasBoxChild;

HippoCanvasBoxChild holds data associated with an item that has been added to a canvas box. It is used by implementations of HippoCanvasLayout when implementing methods like get_width_request and size_allocate.

The life-cycle of a HippoCanvasBoxChild is effectively until the item is removed from its parent. If a reference is held beyond that point, calling methods on the box child is safe, but the methods will have no effect, and defaults results will be returned.


hippo_canvas_box_child_ref ()

HippoCanvasBoxChild * hippo_canvas_box_child_ref        (HippoCanvasBoxChild *child);

Release a reference previously added to a HippoCanvasBoxChild. If ther are no more outstanding references to the box child (including references held by the parent box), the child and associated data will be freed.

child :

a HippoCanvasBoxChild

Returns :


hippo_canvas_box_child_unref ()

void                hippo_canvas_box_child_unref        (HippoCanvasBoxChild *child);

child :


hippo_canvas_box_child_get_qdata ()

gpointer            hippo_canvas_box_child_get_qdata    (HippoCanvasBoxChild *child,
                                                         GQuark key);

Retrieves data previously stored with hippo_canvas_box_child_set_qdata()

child :

a HippoCanvasBoxChild

key :

a GQuark identifying the data to retrieve

Returns :

the data previously stored, or NULL if data was not previously stored for the given key.

hippo_canvas_box_child_set_qdata ()

void                hippo_canvas_box_child_set_qdata    (HippoCanvasBoxChild *child,
                                                         GQuark key,
                                                         gpointer data,
                                                         GDestroyNotify notify);

Associates data with a HippoCanvasBoxChild object

child :

a HippoCanvasBoxChild

key :

a GQuark identifying the data to store

data :

the data to store

notify :

a function to call when the data is replaced or the box child is freed

hippo_canvas_box_child_get_width_request ()

void                hippo_canvas_box_child_get_width_request
                                                        (HippoCanvasBoxChild *child,
                                                         int *min_width_p,
                                                         int *natural_width_p);

child :

min_width_p :

natural_width_p :


hippo_canvas_box_child_get_height_request ()

void                hippo_canvas_box_child_get_height_request
                                                        (HippoCanvasBoxChild *child,
                                                         int for_width,
                                                         int *min_height_p,
                                                         int *natural_height_p);

child :

for_width :

min_height_p :

natural_height_p :


hippo_canvas_box_child_allocate ()

void                hippo_canvas_box_child_allocate     (HippoCanvasBoxChild *child,
                                                         int x,
                                                         int y,
                                                         int width,
                                                         int height,
                                                         gboolean origin_changed);

child :

x :

y :

width :

height :

origin_changed :

Property Details

The "background-color" property

  "background-color"         guint                 : Read / Write

Sets an RGBA background color (pack the color into 32-bit unsigned int, just type "0xff0000ff" for example for opaque red). The background color covers the padding but not the border of the box.

This property is ignored if the background-color-set property is FALSE.

Default value: 4294967040


The "background-color-set" property

  "background-color-set"     gboolean              : Read / Write

Determines whether the background-color property is used, or whether the color is determined from the item's style. This flag gets set automatically if you write to the background-color property.

Default value: FALSE


The "border" property

  "border"                   gint                  : Write

Write-only convenience property to set border-top, border-bottom, border-left, and border-right all at once.

Allowed values: [0,255]

Default value: 0


The "border-bottom" property

  "border-bottom"            gint                  : Read / Write

Space outside the background color, on the bottom edge. Contrast with the padding, which is inside the background color.

Allowed values: [0,255]

Default value: 0


The "border-color" property

  "border-color"             guint                 : Read / Write

Sets an RGBA border color (pack the color into 32-bit unsigned int, just type "0xff0000ff" for example for opaque red). The border color covers the border of the box; you have to set the border to a nonzero size with the border property.

Frequently, the border is transparent and just used for spacing.

Default value: 4294967040


The "border-color-set" property

  "border-color-set"         gboolean              : Read / Write

Determines whether the border-color property is used, or whether the color is determined from the item's style. This flag gets set automatically if you write to the border-color property.

Default value: FALSE


The "border-left" property

  "border-left"              gint                  : Read / Write

Space outside the background color, on the left edge. Contrast with the padding, which is inside the background color.

Allowed values: [0,255]

Default value: 0


The "border-right" property

  "border-right"             gint                  : Read / Write

Space outside the background color, on the right edge. Contrast with the padding, which is inside the background color.

Allowed values: [0,255]

Default value: 0


The "border-top" property

  "border-top"               gint                  : Read / Write

Space outside the background color, on the top edge. Contrast with the padding, which is inside the background color.

Allowed values: [0,255]

Default value: 0


The "box-height" property

  "box-height"               gint                  : Read / Write

This forces both the natural and minimum height (for the entire box, including border and padding). It should probably be deprecated in favor of separate natural-height and min-height properties, and potentially those properties should not include the border and/or padding. Feel free to analyze and then resolve the issue and send us a patch!

Allowed values: >= -1

Default value: -1


The "box-width" property

  "box-width"                gint                  : Read / Write

This forces both the natural and minimum width (for the entire box, including border and padding). It should probably be deprecated in favor of separate natural-width and min-width properties, and potentially those properties should not include the border and/or padding. Feel free to analyze and then resolve the issue and send us a patch!

Allowed values: >= -1

Default value: -1


The "color" property

  "color"                    guint                 : Read / Write

This property only matters if the subclass of HippoCanvasBox you are using supports it. Specifically text items use this color for the text color.

The value is an RGBA color, i.e. a 32-bit unsigned int, "0xff0000ff" for example for opaque red.

This property is ignored if the color-set property is FALSE.

Default value: 255


The "color-set" property

  "color-set"                gboolean              : Read / Write

Determines whether the color property is used, or whether the color is determined from the item's style. This flag gets set automatically if you write to the color property.

Default value: FALSE


The "debug-name" property

  "debug-name"               gchar*                : Read / Write

If set, debug-spew detailed information about size negotiation, prefixed with this name

Default value: NULL


The "font" property

  "font"                     gchar*                : Read / Write

The font to use as a Pango font description string. Only matters for text items, or for boxes that contain text items, overriding any font from the item's style. The font will not be inherited by child items.

This property is just a way to set the font-desc property, using a string instead of a PangoFontDescription object.

Default value: NULL


The "font-desc" property

  "font-desc"                PangoFontDescription*  : Read / Write

The font to use for text in the item, overriding any font from the style. The font will not be inherited by child items.


The "orientation" property

  "orientation"              HippoOrientation      : Read / Write

A box can stack items vertically HIPPO_ORIENTATION_VERTICAL, like GtkVBox, or put them in a horizontal row, HIPPO_ORIENTATION_HORIZONTAL, like GtkHBox.

Default value: HIPPO_ORIENTATION_VERTICAL


The "padding" property

  "padding"                  gint                  : Write

Write-only convenience property to set padding-top, padding-bottom, padding-left, and padding-right all at once.

Allowed values: [0,255]

Default value: 0


The "padding-bottom" property

  "padding-bottom"           gint                  : Read / Write

Space inside the background color, on the bottom edge. Contrast with the border, which is outside the background color.

Allowed values: [0,255]

Default value: 0


The "padding-left" property

  "padding-left"             gint                  : Read / Write

Space inside the background color, on the left edge. Contrast with the border, which is outside the background color.

Allowed values: [0,255]

Default value: 0


The "padding-right" property

  "padding-right"            gint                  : Read / Write

Space inside the background color, on the right edge. Contrast with the border, which is outside the background color.

Allowed values: [0,255]

Default value: 0


The "padding-top" property

  "padding-top"              gint                  : Read / Write

Space inside the background color, on the top edge. Contrast with the border, which is outside the background color.

Allowed values: [0,255]

Default value: 0


The "spacing" property

  "spacing"                  gint                  : Read / Write

The spacing is a gap to leave between all child items in the box. If you want a gap in only one place, try setting a transparent border on one side of the child, rather than setting the spacing.

Allowed values: [0,255]

Default value: 0


The "tooltip" property

  "tooltip"                  gchar*                : Read / Write

A string to display as a tooltip on this canvas item.

Default value: NULL


The "xalign" property

  "xalign"                   HippoItemAlignment    : Read / Write

Remember that most canvas items, including text and image items, derive from HippoCanvasBox. The alignment properties determine whether the "content" of the box - which may be the child items, image, text, or other main point of the canvas item you're using - will be aligned start (left/top), aligned center, aligned end (right/bottom), or stretched to fill the whole box.

Alignment only matters if the box gets extra space (more space than the natural size of the item).

Default value: HIPPO_ALIGNMENT_FILL


The "yalign" property

  "yalign"                   HippoItemAlignment    : Read / Write

Remember that most canvas items, including text and image items, derive from HippoCanvasBox. The alignment properties determine whether the "content" of the box - which may be the child items, image, text, or other main point of the canvas item you're using - will be aligned start (left/top), aligned center, aligned end (right/bottom), or stretched to fill the whole box.

Alignment only matters if the box gets extra space (more space than the natural size of the item).

Default value: HIPPO_ALIGNMENT_FILL

Signal Details

The "hovering-changed" signal

void                user_function                      (HippoCanvasBox *hippocanvasbox,
                                                        gboolean        arg1,
                                                        gpointer        user_data)           : Run Last

hippocanvasbox :

the object which received the signal.

arg1 :

user_data :

user data set when the signal handler was connected.
hippo-canvas-0.3.1/docs/html/HippoCanvasLink.html0000664000076400007640000001407411404424207016655 00000000000000 HippoCanvasLink

HippoCanvasLink

HippoCanvasLink

Synopsis

#include <hippo/hippo-canvas-link.h>

                    HippoCanvasLink;
HippoCanvasItem*    hippo_canvas_link_new               (void);

Object Hierarchy

  GObject
   +----HippoCanvasBox
         +----HippoCanvasText
               +----HippoCanvasLink

Implemented Interfaces

HippoCanvasLink implements HippoCanvasItem, HippoCanvasContext and HippoCanvasContainer.

Properties

  "visited"                  gboolean              : Read / Write

Description

Details

HippoCanvasLink

typedef struct _HippoCanvasLink HippoCanvasLink;


hippo_canvas_link_new ()

HippoCanvasItem*    hippo_canvas_link_new               (void);

Returns :

Property Details

The "visited" property

  "visited"                  gboolean              : Read / Write

Whether or not link was visited.

Default value: FALSE

hippo-canvas-0.3.1/docs/html/style.css0000644000076400007640000001205611404424207014604 00000000000000.synopsis, .classsynopsis { /* tango:aluminium 1/2 */ background: #eeeeec; border: solid 1px #d3d7cf; padding: 0.5em; } .programlisting { /* tango:sky blue 0/1 */ background: #e6f3ff; border: solid 1px #729fcf; padding: 0.5em; } .variablelist { padding: 4px; margin-left: 3em; } .variablelist td:first-child { vertical-align: top; } @media screen { sup a.footnote { position: relative; top: 0em ! important; } /* this is needed so that the local anchors are displayed below the naviagtion */ div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name] { position: relative; padding-top:4.5em; } /* this seems to be a bug in the xsl style sheets when generating indexes */ div.index div.index { top: 0em; } /* make space for the fixed navigation bar and add space at the bottom so that * link targets appear somewhat close to top */ body { padding-top: 3.2em; padding-bottom: 20em; } /* style and size the navigation bar */ table.navigation#top { position: fixed; /* tango:scarlet red 0/1 */ background: #ffe6e6; border: solid 1px #ef2929; margin-top: 0; margin-bottom: 0; top: 0; left: 0; height: 3em; z-index: 10; } .navigation a, .navigation a:visited { /* tango:scarlet red 3 */ color: #a40000; } .navigation a:hover { /* tango:scarlet red 1 */ color: #ef2929; } td.shortcuts { /* tango:scarlet red 1 */ color: #ef2929; font-size: 80%; white-space: nowrap; } } @media print { table.navigation { visibility: collapse; display: none; } div.titlepage table.navigation { visibility: visible; display: table; /* tango:scarlet red 0/1 */ background: #ffe6e6; border: solid 1px #ef2929; margin-top: 0; margin-bottom: 0; top: 0; left: 0; height: 3em; } } .navigation .title { font-size: 200%; } div.gallery-float { float: left; padding: 10px; } div.gallery-float img { border-style: none; } div.gallery-spacer { clear: both; } a, a:visited { text-decoration: none; /* tango:sky blue 2 */ color: #3465a4; } a:hover { text-decoration: underline; /* tango:sky blue 1 */ color: #729fcf; } div.table table { border-collapse: collapse; border-spacing: 0px; /* tango:aluminium 3 */ border: solid 1px #babdb6; } div.table table td, div.table table th { /* tango:aluminium 3 */ border: solid 1px #babdb6; padding: 3px; vertical-align: top; } div.table table th { /* tango:aluminium 2 */ background-color: #d3d7cf; } hr { /* tango:aluminium 3 */ color: #babdb6; background: #babdb6; border: none 0px; height: 1px; clear: both; } .footer { padding-top: 3.5em; /* tango:aluminium 3 */ color: #babdb6; text-align: center; font-size: 80%; } .warning { /* tango:orange 0/1 */ background: #ffeed9; border-color: #ffb04f; } .note { /* tango:chameleon 0/0.5 */ background: #d8ffb2; border-color: #abf562; } .note, .warning { padding: 0.5em; border-width: 1px; border-style: solid; } .note h3, .warning h3 { margin-top: 0.0em } .note p, .warning p { margin-bottom: 0.0em } /* blob links */ h2 .extralinks, h3 .extralinks { float: right; /* tango:aluminium 3 */ color: #babdb6; font-size: 80%; font-weight: normal; } .annotation { /* tango:aluminium 5 */ color: #555753; font-size: 80%; font-weight: normal; } /* code listings */ .listing_code .programlisting .cbracket { color: #a40000; } /* tango: scarlet red 3 */ .listing_code .programlisting .comment { color: #a1a39d; } /* tango: aluminium 4 */ .listing_code .programlisting .function { color: #000000; font-weight: bold; } .listing_code .programlisting .function a { color: #11326b; font-weight: bold; } /* tango: sky blue 4 */ .listing_code .programlisting .keyword { color: #4e9a06; } /* tango: chameleon 3 */ .listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */ .listing_code .programlisting .normal { color: #000000; } .listing_code .programlisting .number { color: #75507b; } /* tango: plum 2 */ .listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */ .listing_code .programlisting .string { color: #c17d11; } /* tango: chocolate 2 */ .listing_code .programlisting .type { color: #000000; } .listing_code .programlisting .type a { color: #11326b; } /* tango: sky blue 4 */ .listing_code .programlisting .symbol { color: #ce5c00; } /* tango: orange 3 */ .listing_frame { /* tango:sky blue 1 */ border: solid 1px #729fcf; padding: 0px; } .listing_lines, .listing_code { margin-top: 0px; margin-bottom: 0px; padding: 0.5em; } .listing_lines { /* tango:sky blue 0.5 */ background: #a6c5e3; /* tango:aluminium 6 */ color: #2e3436; } .listing_code { /* tango:sky blue 0 */ background: #e6f3ff; } .listing_code .programlisting { /* override from previous */ border: none 0px; padding: 0px; } .listing_lines pre, .listing_code pre { margin: 0px; } hippo-canvas-0.3.1/docs/html/ch01.html0000664000076400007640000000657511404424207014366 00000000000000 The Hippo Canvas hippo-canvas-0.3.1/docs/html/HippoCanvasItem.html0000664000076400007640000023431611404424207016661 00000000000000 HippoCanvasItem

HippoCanvasItem

HippoCanvasItem

Synopsis

#include <hippo/hippo-canvas-item.h>

                    HippoCanvasItem;
                    HippoCanvasItemIface;
enum                HippoCanvasPointer;
enum                HippoItemAlignment;
void                hippo_canvas_item_destroy           (HippoCanvasItem *canvas_item);
void                hippo_canvas_item_set_context       (HippoCanvasItem *canvas_item,
                                                         HippoCanvasContext *context);
void                hippo_canvas_item_set_parent        (HippoCanvasItem *canvas_item,
                                                         HippoCanvasContainer *container);
HippoCanvasContainer* hippo_canvas_item_get_parent      (HippoCanvasItem *canvas_item);
void                hippo_canvas_item_get_width_request (HippoCanvasItem *canvas_item,
                                                         int *min_width_p,
                                                         int *natural_width_p);
void                hippo_canvas_item_get_height_request
                                                        (HippoCanvasItem *canvas_item,
                                                         int for_width,
                                                         int *min_height_p,
                                                         int *natural_height_p);
void                hippo_canvas_item_allocate          (HippoCanvasItem *canvas_item,
                                                         int width,
                                                         int height,
                                                         gboolean origin_changed);
void                hippo_canvas_item_get_allocation    (HippoCanvasItem *canvas_item,
                                                         int *width_p,
                                                         int *height_p);
gboolean            hippo_canvas_item_get_needs_request (HippoCanvasItem *canvas_item);
char*               hippo_canvas_item_get_tooltip       (HippoCanvasItem *canvas_item,
                                                         int x,
                                                         int y,
                                                         HippoRectangle *for_area);
HippoCanvasPointer  hippo_canvas_item_get_pointer       (HippoCanvasItem *canvas_item,
                                                         int x,
                                                         int y);
gboolean            hippo_canvas_item_get_visible       (HippoCanvasItem *canvas_item);
void                hippo_canvas_item_set_visible       (HippoCanvasItem *canvas_item,
                                                         gboolean visible);
void                hippo_canvas_item_emit_destroy      (HippoCanvasItem *canvas_item);
gboolean            hippo_canvas_item_emit_button_press_event
                                                        (HippoCanvasItem *canvas_item,
                                                         int x,
                                                         int y,
                                                         int button,
                                                         int x11_x_root,
                                                         int x11_y_root,
                                                         guint32 x11_time,
                                                         int count);
gboolean            hippo_canvas_item_emit_button_release_event
                                                        (HippoCanvasItem *canvas_item,
                                                         int x,
                                                         int y,
                                                         int button,
                                                         int x11_x_root,
                                                         int x11_y_root,
                                                         guint32 x11_time);
gboolean            hippo_canvas_item_emit_motion_notify_event
                                                        (HippoCanvasItem *canvas_item,
                                                         int x,
                                                         int y,
                                                         HippoMotionDetail detail);
gboolean            hippo_canvas_item_emit_key_press_event
                                                        (HippoCanvasItem *canvas_item,
                                                         HippoKey key,
                                                         gunichar character,
                                                         guint modifiers);
void                hippo_canvas_item_emit_activated    (HippoCanvasItem *canvas_item);
void                hippo_canvas_item_emit_paint_needed (HippoCanvasItem *canvas_item,
                                                         int x,
                                                         int y,
                                                         int width,
                                                         int height);
void                hippo_canvas_item_emit_tooltip_changed
                                                        (HippoCanvasItem *canvas_item);
void                hippo_canvas_item_emit_request_changed
                                                        (HippoCanvasItem *canvas_item);
gboolean            hippo_canvas_item_process_event     (HippoCanvasItem *canvas_item,
                                                         HippoEvent *event,
                                                         int allocation_x,
                                                         int allocation_y);
void                hippo_canvas_item_process_paint     (HippoCanvasItem *canvas_item,
                                                         cairo_t *cr,
                                                         GdkRegion *damaged_region,
                                                         int allocation_x,
                                                         int allocation_y);

Object Hierarchy

  GInterface
   +----HippoCanvasItem

Known Implementations

HippoCanvasItem is implemented by HippoCanvasBox, HippoCanvasGradient, HippoCanvasImage, HippoCanvasImageButton, HippoCanvasLink and HippoCanvasText.

Properties

  "classes"                  gchar*                : Read / Write
  "id"                       gchar*                : Read / Write

Signals

  "activated"                                      : Run Last
  "button-press-event"                             : Run Last
  "button-release-event"                           : Run Last
  "destroy"                                        : Cleanup / No Recursion / No Hooks
  "key-press-event"                                : Run Last
  "motion-notify-event"                            : Run Last
  "paint"                                          : Run Last
  "paint-needed"                                   : Run Last
  "request-changed"                                : Run Last
  "scroll-event"                                   : Run Last
  "tooltip-changed"                                : Run Last

Description

Details

HippoCanvasItem

typedef struct _HippoCanvasItem HippoCanvasItem;


HippoCanvasItemIface

typedef struct {
    GTypeInterface base_iface;

    HippoCanvasContext*    (* get_context)          (HippoCanvasItem *canvas_item);
    void                   (* set_context)          (HippoCanvasItem      *canvas_item,
                                                     HippoCanvasContext   *context);
    void                   (* set_parent)           (HippoCanvasItem      *canvas_item,
                                                     HippoCanvasContainer *container);
    HippoCanvasContainer*  (* get_parent)           (HippoCanvasItem *canvas_item);
    void                   (* paint)                (HippoCanvasItem *canvas_item,
                                                     cairo_t         *cr,
                                                     GdkRegion       *damaged_region);
    void                   (* get_width_request)    (HippoCanvasItem *canvas_item,
                                                     int             *min_width_p,
                                                     int             *natural_width_p);
    void                   (* get_height_request)   (HippoCanvasItem *canvas_item,
                                                     int              for_width,
                                                     int             *min_height_p,
                                                     int             *natural_height_p);
    
    /* The origin changed flag indicates that the position of the item with respect to the
     * canvas root changed. The item must then call allocate on it's children passing
     * TRUE for origin_changed as well. */
    void                   (* allocate)             (HippoCanvasItem *canvas_item,
                                                     int              width,
                                                     int              height,
                                                     gboolean         origin_changed);
    void                   (* get_allocation)       (HippoCanvasItem *canvas_item,
                                                     int             *width_p,
                                                     int             *height_p);
    gboolean               (* button_press_event)   (HippoCanvasItem *canvas_item,
                                                     HippoEvent      *event);
    gboolean               (* button_release_event) (HippoCanvasItem *canvas_item,
                                                     HippoEvent      *event);
    gboolean               (* motion_notify_event)  (HippoCanvasItem *canvas_item,
                                                     HippoEvent      *event);
    gboolean               (* key_press_event)      (HippoCanvasItem *canvas_item,
                                                     HippoEvent      *event);
    void                   (* activated)            (HippoCanvasItem *canvas_item);
    void                   (* request_changed)      (HippoCanvasItem *canvas_item);
    void                   (* paint_needed)         (HippoCanvasItem *canvas_item,
                                                     const HippoRectangle *damage_box);
    gboolean               (* get_needs_request)    (HippoCanvasItem *canvas_item);
    char*                  (* get_tooltip)          (HippoCanvasItem *canvas_item,
                                                     int              x,
                                                     int              y,
                                                     HippoRectangle  *for_area);
    void                   (* tooltip_changed)      (HippoCanvasItem *canvas_item);
    HippoCanvasPointer     (* get_pointer)          (HippoCanvasItem *canvas_item,
                                                     int              x,
                                                     int              y);
    gboolean               (* scroll_event)         (HippoCanvasItem *canvas_item,
                                                     HippoEvent      *event);    
} HippoCanvasItemIface;


enum HippoCanvasPointer

typedef enum {
    HIPPO_CANVAS_POINTER_UNSET,
    HIPPO_CANVAS_POINTER_DEFAULT,
    HIPPO_CANVAS_POINTER_HAND
} HippoCanvasPointer;


enum HippoItemAlignment

typedef enum {
    HIPPO_ALIGNMENT_FILL,
    HIPPO_ALIGNMENT_START, /* left or top */
    HIPPO_ALIGNMENT_CENTER,
    HIPPO_ALIGNMENT_END    /* right or bottom */
} HippoItemAlignment;


hippo_canvas_item_destroy ()

void                hippo_canvas_item_destroy           (HippoCanvasItem *canvas_item);

Explicitly requests that the item be destroyed. This will cause item to drop all references it holds to other objects, and also result in the ::destroy signal being emitted. In response to the ::destroy signal, any other objects that are holding on to references to the item should drop the references they hold. In particular, the item will be removed from its parent container.

Note that this function doesn't directly cause the memory for the object to be freed; the object will be freed only if the above actions cause all references to it to be dropped.

canvas_item :


hippo_canvas_item_set_context ()

void                hippo_canvas_item_set_context       (HippoCanvasItem *canvas_item,
                                                         HippoCanvasContext *context);

canvas_item :

context :

. [allow-none]

hippo_canvas_item_set_parent ()

void                hippo_canvas_item_set_parent        (HippoCanvasItem *canvas_item,
                                                         HippoCanvasContainer *container);

canvas_item :

container :


hippo_canvas_item_get_parent ()

HippoCanvasContainer* hippo_canvas_item_get_parent      (HippoCanvasItem *canvas_item);

canvas_item :

Returns :


hippo_canvas_item_get_width_request ()

void                hippo_canvas_item_get_width_request (HippoCanvasItem *canvas_item,
                                                         int *min_width_p,
                                                         int *natural_width_p);

canvas_item :

min_width_p :

natural_width_p :


hippo_canvas_item_get_height_request ()

void                hippo_canvas_item_get_height_request
                                                        (HippoCanvasItem *canvas_item,
                                                         int for_width,
                                                         int *min_height_p,
                                                         int *natural_height_p);

canvas_item :

for_width :

min_height_p :

natural_height_p :


hippo_canvas_item_allocate ()

void                hippo_canvas_item_allocate          (HippoCanvasItem *canvas_item,
                                                         int width,
                                                         int height,
                                                         gboolean origin_changed);

canvas_item :

width :

height :

origin_changed :


hippo_canvas_item_get_allocation ()

void                hippo_canvas_item_get_allocation    (HippoCanvasItem *canvas_item,
                                                         int *width_p,
                                                         int *height_p);

canvas_item :

width_p :

height_p :


hippo_canvas_item_get_needs_request ()

gboolean            hippo_canvas_item_get_needs_request (HippoCanvasItem *canvas_item);

canvas_item :

Returns :


hippo_canvas_item_get_tooltip ()

char*               hippo_canvas_item_get_tooltip       (HippoCanvasItem *canvas_item,
                                                         int x,
                                                         int y,
                                                         HippoRectangle *for_area);

canvas_item :

x :

y :

for_area :

Returns :


hippo_canvas_item_get_pointer ()

HippoCanvasPointer  hippo_canvas_item_get_pointer       (HippoCanvasItem *canvas_item,
                                                         int x,
                                                         int y);

canvas_item :

x :

y :

Returns :


hippo_canvas_item_get_visible ()

gboolean            hippo_canvas_item_get_visible       (HippoCanvasItem *canvas_item);

canvas_item :

Returns :


hippo_canvas_item_set_visible ()

void                hippo_canvas_item_set_visible       (HippoCanvasItem *canvas_item,
                                                         gboolean visible);

canvas_item :

visible :


hippo_canvas_item_emit_destroy ()

void                hippo_canvas_item_emit_destroy      (HippoCanvasItem *canvas_item);

Emit the ::destroy signal on canvas_item. Note that this doesn't actually destroy the item (see hippo_canvas_item()) for that. This function should be called at the end of your implementation of dispose() before chaining up if you are implementing HippoCanvasItem directly. If you derive from an implementation of HippoCanvasItem like HippoCanvasBox, you need not and should not call this function.

canvas_item :

the canvas item

hippo_canvas_item_emit_button_press_event ()

gboolean            hippo_canvas_item_emit_button_press_event
                                                        (HippoCanvasItem *canvas_item,
                                                         int x,
                                                         int y,
                                                         int button,
                                                         int x11_x_root,
                                                         int x11_y_root,
                                                         guint32 x11_time,
                                                         int count);

canvas_item :

x :

y :

button :

x11_x_root :

x11_y_root :

x11_time :

count :

Returns :


hippo_canvas_item_emit_button_release_event ()

gboolean            hippo_canvas_item_emit_button_release_event
                                                        (HippoCanvasItem *canvas_item,
                                                         int x,
                                                         int y,
                                                         int button,
                                                         int x11_x_root,
                                                         int x11_y_root,
                                                         guint32 x11_time);

canvas_item :

x :

y :

button :

x11_x_root :

x11_y_root :

x11_time :

Returns :


hippo_canvas_item_emit_motion_notify_event ()

gboolean            hippo_canvas_item_emit_motion_notify_event
                                                        (HippoCanvasItem *canvas_item,
                                                         int x,
                                                         int y,
                                                         HippoMotionDetail detail);

canvas_item :

x :

y :

detail :

Returns :


hippo_canvas_item_emit_key_press_event ()

gboolean            hippo_canvas_item_emit_key_press_event
                                                        (HippoCanvasItem *canvas_item,
                                                         HippoKey key,
                                                         gunichar character,
                                                         guint modifiers);

canvas_item :

key :

character :

modifiers :

Returns :


hippo_canvas_item_emit_activated ()

void                hippo_canvas_item_emit_activated    (HippoCanvasItem *canvas_item);

canvas_item :


hippo_canvas_item_emit_paint_needed ()

void                hippo_canvas_item_emit_paint_needed (HippoCanvasItem *canvas_item,
                                                         int x,
                                                         int y,
                                                         int width,
                                                         int height);

canvas_item :

x :

y :

width :

height :


hippo_canvas_item_emit_tooltip_changed ()

void                hippo_canvas_item_emit_tooltip_changed
                                                        (HippoCanvasItem *canvas_item);

canvas_item :


hippo_canvas_item_emit_request_changed ()

void                hippo_canvas_item_emit_request_changed
                                                        (HippoCanvasItem *canvas_item);

canvas_item :


hippo_canvas_item_process_event ()

gboolean            hippo_canvas_item_process_event     (HippoCanvasItem *canvas_item,
                                                         HippoEvent *event,
                                                         int allocation_x,
                                                         int allocation_y);

canvas_item :

event :

allocation_x :

allocation_y :

Returns :


hippo_canvas_item_process_paint ()

void                hippo_canvas_item_process_paint     (HippoCanvasItem *canvas_item,
                                                         cairo_t *cr,
                                                         GdkRegion *damaged_region,
                                                         int allocation_x,
                                                         int allocation_y);

canvas_item :

cr :

damaged_region :

allocation_x :

allocation_y :

Property Details

The "classes" property

  "classes"                  gchar*                : Read / Write

Class names for the element; this is used when matching a CSS rule selector against the element tree. Multiple classes can be specified, specified by spaces. (This property is called 'classes' and not 'class' to avoid problems with language bindings.)

Default value: NULL


The "id" property

  "id"                       gchar*                : Read / Write

The ID of the element; this is used when matching a CSS rule selector against the element tree.

Default value: NULL

Signal Details

The "activated" signal

void                user_function                      (HippoCanvasItem *arg0,
                                                        gpointer         user_data)      : Run Last

Signal emitted when the canvas item is "activated" (e.g. if a button is clicked or an url is clicked).

user_data :

user data set when the signal handler was connected.

The "button-press-event" signal

gboolean            user_function                      (HippoCanvasItem *arg0,
                                                        HippoEvent      *arg1,
                                                        gpointer         user_data)      : Run Last

Signal emitted when a mouse button is pressed down on the canvas item.

user_data :

user data set when the signal handler was connected.

The "button-release-event" signal

gboolean            user_function                      (HippoCanvasItem *arg0,
                                                        HippoEvent      *arg1,
                                                        gpointer         user_data)      : Run Last

Signal emitted when a mouse button is released on the canvas item.

user_data :

user data set when the signal handler was connected.

The "destroy" signal

void                user_function                      (HippoCanvasItem *arg0,
                                                        gpointer         user_data)      : Cleanup / No Recursion / No Hooks

This canvas item has explicitely been destroyed. All references it holds to other objects will be dropped, and all signal handlers removed.

user_data :

user data set when the signal handler was connected.

The "key-press-event" signal

gboolean            user_function                      (HippoCanvasItem *arg0,
                                                        HippoEvent      *arg1,
                                                        gpointer         user_data)      : Run Last

Signal emitted when a key is pressed while the canvas item is focused.

user_data :

user data set when the signal handler was connected.

The "motion-notify-event" signal

gboolean            user_function                      (HippoCanvasItem *arg0,
                                                        HippoEvent      *arg1,
                                                        gpointer         user_data)      : Run Last

Signal emitted when the mouse pointer enters, leaves, or moves within a canvas item. Note that unlike GtkWidget, there are not separate events for enter and leave.

user_data :

user data set when the signal handler was connected.

The "paint" signal

void                user_function                      (HippoCanvasItem *arg0,
                                                        gpointer         arg1,
                                                        gpointer         arg2,
                                                        gpointer         user_data)      : Run Last

All drawing of a canvas item happens in the handlers for this signal. The rectangle is the bounding box of the damage region. Most concrete items derive from HippoCanvasBox, whose default paint handler invokes a series of more fine-grained paint handlers to paint the background, content, etc.; usually you should override one of those fine-grained handlers rather than this all-encompassing paint.

user_data :

user data set when the signal handler was connected.

The "paint-needed" signal

void                user_function                      (HippoCanvasItem *arg0,
                                                        HippoRectangle  *arg1,
                                                        gpointer         user_data)      : Run Last

Signal emitted when a canvas item needs to be repainted. The rectangle is the bounding box of the areas that need repainting.

user_data :

user data set when the signal handler was connected.

The "request-changed" signal

void                user_function                      (HippoCanvasItem *arg0,
                                                        gpointer         user_data)      : Run Last

Signal emitted when the natural or minimum size of the canvas item may have changed. The parent canvas or parent canvas item will normally need to recompute its layout in response.

user_data :

user data set when the signal handler was connected.

The "scroll-event" signal

gboolean            user_function                      (HippoCanvasItem *arg0,
                                                        HippoEvent      *arg1,
                                                        gpointer         user_data)      : Run Last

Signal emitted when the mouse wheel or other mechanism requests scrolling.

user_data :

user data set when the signal handler was connected.

The "tooltip-changed" signal

void                user_function                      (HippoCanvasItem *arg0,
                                                        gpointer         user_data)      : Run Last

Signal emitted when the canvas item's tooltip changes. The code displaying the tooltip may need this signal in order to update in response to changes.

user_data :

user data set when the signal handler was connected.
hippo-canvas-0.3.1/docs/hippo-canvas-sections.txt0000664000076400007640000002051711404424207016747 00000000000000
hippo/hippo-canvas-style.h hippo-canvas-style HippoCanvasStyle HippoCanvasStyle HIPPO_CANVAS_DEFAULT_COLOR HIPPO_CANVAS_DEFAULT_BACKGROUND_COLOR hippo_canvas_style_affect_color hippo_canvas_style_affect_font_desc HippoCanvasStyleClass HippoCanvasStyleClass HIPPO_CANVAS_STYLE HIPPO_IS_CANVAS_STYLE HIPPO_TYPE_CANVAS_STYLE hippo_canvas_style_get_type HIPPO_CANVAS_STYLE_CLASS HIPPO_IS_CANVAS_STYLE_CLASS HIPPO_CANVAS_STYLE_GET_CLASS
hippo/hippo-canvas-box.h hippo-canvas-box HippoCanvasBox HippoPackFlags HippoCascadeMode HippoCanvasCompareChildFunc HippoCanvasForeachChildFunc HippoCanvasBox hippo_canvas_box_new hippo_canvas_box_prepend hippo_canvas_box_append hippo_canvas_box_move hippo_canvas_box_set_position hippo_canvas_box_get_position hippo_canvas_box_clear hippo_canvas_box_remove hippo_canvas_box_remove_all hippo_canvas_box_get_children hippo_canvas_box_is_empty hippo_canvas_box_foreach hippo_canvas_box_reverse hippo_canvas_box_sort hippo_canvas_box_insert_after hippo_canvas_box_insert_before hippo_canvas_box_insert_sorted hippo_canvas_box_set_child_packing hippo_canvas_box_get_context hippo_canvas_box_get_background_area hippo_canvas_box_align hippo_canvas_box_set_clickable hippo_canvas_box_is_clickable hippo_canvas_box_set_layout hippo_canvas_box_find_box_child hippo_canvas_box_get_layout_children HippoCanvasBoxChild hippo_canvas_box_child_ref hippo_canvas_box_child_unref hippo_canvas_box_child_get_qdata hippo_canvas_box_child_set_qdata hippo_canvas_box_child_get_width_request hippo_canvas_box_child_get_height_request hippo_canvas_box_child_allocate HippoCanvasBoxClass HIPPO_CANVAS_BOX HIPPO_IS_CANVAS_BOX HIPPO_TYPE_CANVAS_BOX hippo_canvas_box_get_type HIPPO_CANVAS_BOX_CLASS HIPPO_IS_CANVAS_BOX_CLASS HIPPO_CANVAS_BOX_GET_CLASS HIPPO_TYPE_CANVAS_BOX_CHILD hippo_canvas_box_child_get_type
hippo/hippo-canvas-image.h hippo-canvas-image HippoCanvasImage HippoCanvasImage hippo_canvas_image_new HippoCanvasImageClass HIPPO_CANVAS_IMAGE HIPPO_IS_CANVAS_IMAGE HIPPO_TYPE_CANVAS_IMAGE hippo_canvas_image_get_type HIPPO_CANVAS_IMAGE_CLASS HIPPO_IS_CANVAS_IMAGE_CLASS HIPPO_CANVAS_IMAGE_GET_CLASS
hippo/hippo-canvas-container.h hippo-canvas-container HippoCanvasContainer HippoCanvasContainer HippoCanvasContainerIface hippo_canvas_container_get_child_visible hippo_canvas_container_set_child_visible HIPPO_CANVAS_CONTAINER HIPPO_IS_CANVAS_CONTAINER HIPPO_TYPE_CANVAS_CONTAINER hippo_canvas_container_get_type HIPPO_CANVAS_CONTAINER_GET_IFACE
hippo/hippo-canvas-context.h hippo-canvas-context HippoCanvasContext HippoStockColor HippoCanvasContext HippoCanvasContextIface hippo_canvas_context_create_layout hippo_canvas_context_load_image hippo_canvas_context_get_color hippo_canvas_context_register_widget_item hippo_canvas_context_unregister_widget_item hippo_canvas_context_translate_to_widget hippo_canvas_context_translate_to_screen hippo_canvas_context_affect_color hippo_canvas_context_affect_font_desc hippo_canvas_context_emit_style_changed HIPPO_CANVAS_CONTEXT HIPPO_IS_CANVAS_CONTEXT HIPPO_TYPE_CANVAS_CONTEXT hippo_canvas_context_get_type HIPPO_CANVAS_CONTEXT_GET_IFACE
hippo/hippo-canvas-text.h hippo-canvas-text HippoCanvasText HippoCanvasSizeMode HippoCanvasText hippo_canvas_text_new HippoCanvasTextClass HIPPO_CANVAS_TEXT HIPPO_IS_CANVAS_TEXT HIPPO_TYPE_CANVAS_TEXT hippo_canvas_text_get_type HIPPO_CANVAS_TEXT_CLASS HIPPO_IS_CANVAS_TEXT_CLASS HIPPO_CANVAS_TEXT_GET_CLASS
hippo/hippo-canvas-link.h hippo-canvas-link HippoCanvasLink HippoCanvasLink hippo_canvas_link_new HippoCanvasLinkClass HIPPO_CANVAS_LINK HIPPO_IS_CANVAS_LINK HIPPO_TYPE_CANVAS_LINK hippo_canvas_link_get_type HIPPO_CANVAS_LINK_CLASS HIPPO_IS_CANVAS_LINK_CLASS HIPPO_CANVAS_LINK_GET_CLASS
hippo/hippo-canvas-image-button.h hippo-canvas-image-button HippoCanvasImageButton HippoCanvasImageButton hippo_canvas_image_button_new HippoCanvasImageButtonClass HIPPO_CANVAS_IMAGE_BUTTON HIPPO_IS_CANVAS_IMAGE_BUTTON HIPPO_TYPE_CANVAS_IMAGE_BUTTON hippo_canvas_image_button_get_type HIPPO_CANVAS_IMAGE_BUTTON_CLASS HIPPO_IS_CANVAS_IMAGE_BUTTON_CLASS HIPPO_CANVAS_IMAGE_BUTTON_GET_CLASS
hippo/hippo-canvas-item.h hippo-canvas-item HippoCanvasItem HippoCanvasItem HippoCanvasItemIface HippoCanvasPointer HippoItemAlignment HippoCanvasItemIface hippo_canvas_item_destroy hippo_canvas_item_set_context hippo_canvas_item_set_parent hippo_canvas_item_get_parent hippo_canvas_item_get_width_request hippo_canvas_item_get_height_request hippo_canvas_item_allocate hippo_canvas_item_get_allocation hippo_canvas_item_get_needs_request hippo_canvas_item_get_tooltip hippo_canvas_item_get_pointer hippo_canvas_item_get_visible hippo_canvas_item_set_visible hippo_canvas_item_emit_destroy hippo_canvas_item_emit_button_press_event hippo_canvas_item_emit_button_release_event hippo_canvas_item_emit_motion_notify_event hippo_canvas_item_emit_key_press_event hippo_canvas_item_emit_activated hippo_canvas_item_emit_paint_needed hippo_canvas_item_emit_tooltip_changed hippo_canvas_item_emit_request_changed hippo_canvas_item_process_event hippo_canvas_item_process_paint HIPPO_CANVAS_ITEM HIPPO_IS_CANVAS_ITEM HIPPO_TYPE_CANVAS_ITEM hippo_canvas_item_get_type HIPPO_CANVAS_ITEM_GET_IFACE
hippo/hippo-canvas-gradient.h hippo-canvas-gradient HippoCanvasGradient HippoCanvasGradient hippo_canvas_gradient_new HippoCanvasGradientClass HIPPO_CANVAS_GRADIENT HIPPO_IS_CANVAS_GRADIENT HIPPO_TYPE_CANVAS_GRADIENT hippo_canvas_gradient_get_type HIPPO_CANVAS_GRADIENT_CLASS HIPPO_IS_CANVAS_GRADIENT_CLASS HIPPO_CANVAS_GRADIENT_GET_CLASS
hippo/hippo-canvas-layout.h hippo-canvas-layout HippoCanvasLayout HippoCanvasLayout HippoCanvasLayoutIface hippo_canvas_layout_allocate hippo_canvas_layout_get_height_request hippo_canvas_layout_get_type hippo_canvas_layout_get_width_request hippo_canvas_layout_set_box HIPPO_CANVAS_LAYOUT HIPPO_IS_CANVAS_LAYOUT HIPPO_TYPE_CANVAS_LAYOUT hippo_canvas_layout_get_type HIPPO_CANVAS_LAYOUT_GET_IFACE
hippo/hippo-canvas-widgets.h hippo-canvas-widgets Widgets HIPPO_DECLARE_WIDGET_ITEM HIPPO_TYPE_CANVAS_SCROLLBARS HIPPO_CANVAS_SCROLLBARS HIPPO_CANVAS_SCROLLBARS_CLASS HIPPO_IS_CANVAS_SCROLLBARS HIPPO_IS_CANVAS_SCROLLBARS_CLASS HIPPO_CANVAS_SCROLLBARS_GET_CLASS HIPPO_TYPE_CANVAS_ENTRY HIPPO_CANVAS_ENTRY HIPPO_CANVAS_ENTRY_CLASS HIPPO_IS_CANVAS_ENTRY HIPPO_IS_CANVAS_ENTRY_CLASS HIPPO_CANVAS_ENTRY_GET_CLASS hippo_canvas_scrollbars_set_root HippoScrollbarPolicy hippo_canvas_scrollbars_set_policy hippo_canvas_entry_get_position hippo_canvas_entry_set_position HIPPO_CANVAS_BUTTON HIPPO_IS_CANVAS_BUTTON HIPPO_TYPE_CANVAS_BUTTON HIPPO_CANVAS_BUTTON_CLASS HIPPO_IS_CANVAS_BUTTON_CLASS HIPPO_CANVAS_BUTTON_GET_CLASS
hippo/hippo-graphics.h hippo-graphics Graphics HIPPO_TYPE_RECTANGLE HippoOrientation HippoSide HippoGravity HippoRectangle hippo_rectangle_get_type hippo_rectangle_intersect hippo_rectangle_equal hippo_rectangle_copy hippo_rectangle_free hippo_cairo_set_source_rgba32 hippo_cairo_pattern_add_stop_rgba32
hippo/hippo-canvas-util.h hippo-canvas-util Utilitites HIPPO_TYPE_CAIRO_SURFACE hippo_cairo_surface_get_type
hippo/hippo-event.h hippo-event HippoEvent HIPPO_TYPE_EVENT HippoEventType HippoMotionDetail HippoEvent HippoKey HippoModifier hippo_event_get_type hippo_event_copy hippo_event_free
hippo-canvas-0.3.1/docs/tmpl/0000775000076400007640000000000011404424207013020 500000000000000hippo-canvas-0.3.1/docs/tmpl/hippo-canvas-util.sgml0000664000076400007640000000072211404424207017170 00000000000000 Utilitites @void: @Returns: hippo-canvas-0.3.1/docs/tmpl/hippo-canvas-unused.sgml0000664000076400007640000000242211404424207017515 00000000000000 @HIPPO_CASCADE_MODE_NONE: @HIPPO_CASCADE_MODE_INHERIT: @box: @Returns: @context: @color_rgba_p: @context: @font_desc: @canvas_item: @style: @color_rgba_p: @style: @font_desc: hippo-canvas-0.3.1/docs/tmpl/hippo-canvas-context.sgml0000664000076400007640000000357011404424207017703 00000000000000 HippoCanvasContext @HIPPO_STOCK_COLOR_BG_NORMAL: @HIPPO_STOCK_COLOR_BG_PRELIGHT: @HIPPO_STOCK_COLOR_FG: @hippocanvascontext: the object which received the signal. @arg1: @base_iface: @create_layout: @create_surface: @load_image: @get_color: @register_widget_item: @unregister_widget_item: @translate_to_widget: @translate_to_screen: @get_style: @get_resolution: @get_font: @get_animation_manager: @style_changed: @context: @Returns: @context: @image_name: @Returns: @context: @color: @Returns: @context: @item: @context: @item: @context: @item: @x_p: @y_p: @context: @item: @x_p: @y_p: @context: @resize_needed: hippo-canvas-0.3.1/docs/tmpl/hippo-canvas-link.sgml0000664000076400007640000000101111404424207017140 00000000000000 HippoCanvasLink @void: @Returns: hippo-canvas-0.3.1/docs/tmpl/hippo-canvas-image.sgml0000664000076400007640000000134011404424207017272 00000000000000 HippoCanvasImage @void: @Returns: hippo-canvas-0.3.1/docs/tmpl/hippo-canvas-container.sgml0000664000076400007640000000135511404424207020200 00000000000000 HippoCanvasContainer @base_iface: @get_child_visible: @set_child_visible: @container: @child: @Returns: @container: @child: @visible: hippo-canvas-0.3.1/docs/tmpl/hippo-canvas-style.sgml0000664000076400007640000000055711404424207017361 00000000000000 HippoCanvasStyle hippo-canvas-0.3.1/docs/tmpl/hippo-graphics.sgml0000664000076400007640000000301011404424207016533 00000000000000 Graphics @HIPPO_ORIENTATION_VERTICAL: @HIPPO_ORIENTATION_HORIZONTAL: @HIPPO_SIDE_TOP: @HIPPO_SIDE_BOTTOM: @HIPPO_SIDE_LEFT: @HIPPO_SIDE_RIGHT: @HIPPO_GRAVITY_NORTH_WEST: @HIPPO_GRAVITY_NORTH_EAST: @HIPPO_GRAVITY_SOUTH_EAST: @HIPPO_GRAVITY_SOUTH_WEST: @x: @y: @width: @height: @void: @Returns: @src1: @src2: @dest: @Returns: @r1: @r2: @Returns: @r: @Returns: @r: @cr: @color: @pattern: @offset: @color: hippo-canvas-0.3.1/docs/tmpl/hippo-canvas-widgets.sgml0000664000076400007640000000360111404424207017660 00000000000000 Widgets @lower: @Camel: @object: @klass: @object: @klass: @obj: @object: @klass: @object: @klass: @obj: @scrollbars: @item: @HIPPO_SCROLLBAR_NEVER: @HIPPO_SCROLLBAR_AUTOMATIC: @HIPPO_SCROLLBAR_ALWAYS: @scrollbars: @orientation: @policy: @entry: @Returns: @entry: @pos: hippo-canvas-0.3.1/docs/tmpl/hippo-canvas-item.sgml0000664000076400007640000001416011404424207017152 00000000000000 HippoCanvasItem @hippocanvasitem: the object which received the signal. @hippocanvasitem: the object which received the signal. @arg1: @Returns: @hippocanvasitem: the object which received the signal. @arg1: @Returns: @hippocanvasitem: the object which received the signal. @hippocanvasitem: the object which received the signal. @arg1: @Returns: @hippocanvasitem: the object which received the signal. @arg1: @Returns: @hippocanvasitem: the object which received the signal. @arg1: @arg2: @hippocanvasitem: the object which received the signal. @arg1: @hippocanvasitem: the object which received the signal. @hippocanvasitem: the object which received the signal. @arg1: @Returns: @hippocanvasitem: the object which received the signal. @base_iface: @get_context: @set_context: @set_parent: @get_parent: @paint: @get_width_request: @get_height_request: @allocate: @get_allocation: @button_press_event: @button_release_event: @motion_notify_event: @key_press_event: @activated: @request_changed: @paint_needed: @get_needs_request: @get_tooltip: @tooltip_changed: @get_pointer: @scroll_event: @HIPPO_CANVAS_POINTER_UNSET: @HIPPO_CANVAS_POINTER_DEFAULT: @HIPPO_CANVAS_POINTER_HAND: @HIPPO_ALIGNMENT_FILL: @HIPPO_ALIGNMENT_START: @HIPPO_ALIGNMENT_CENTER: @HIPPO_ALIGNMENT_END: @base_iface: @get_context: @set_context: @set_parent: @get_parent: @paint: @get_width_request: @get_height_request: @allocate: @get_allocation: @button_press_event: @button_release_event: @motion_notify_event: @key_press_event: @activated: @request_changed: @paint_needed: @get_needs_request: @get_tooltip: @tooltip_changed: @get_pointer: @scroll_event: @canvas_item: @canvas_item: @context: @canvas_item: @container: @canvas_item: @Returns: @canvas_item: @min_width_p: @natural_width_p: @canvas_item: @for_width: @min_height_p: @natural_height_p: @canvas_item: @width: @height: @origin_changed: @canvas_item: @width_p: @height_p: @canvas_item: @Returns: @canvas_item: @x: @y: @for_area: @Returns: @canvas_item: @x: @y: @Returns: @canvas_item: @Returns: @canvas_item: @visible: @canvas_item: @canvas_item: @x: @y: @button: @x11_x_root: @x11_y_root: @x11_time: @count: @Returns: @canvas_item: @x: @y: @button: @x11_x_root: @x11_y_root: @x11_time: @Returns: @canvas_item: @x: @y: @detail: @Returns: @canvas_item: @key: @character: @modifiers: @Returns: @canvas_item: @canvas_item: @x: @y: @width: @height: @canvas_item: @canvas_item: @canvas_item: @event: @allocation_x: @allocation_y: @Returns: @canvas_item: @cr: @damaged_region: @allocation_x: @allocation_y: hippo-canvas-0.3.1/docs/tmpl/hippo-canvas-box.sgml0000664000076400007640000001430511404424207017005 00000000000000 HippoCanvasBox @HIPPO_PACK_EXPAND: @HIPPO_PACK_END: @HIPPO_PACK_FIXED: @HIPPO_PACK_IF_FITS: @HIPPO_PACK_FLOAT_LEFT: @HIPPO_PACK_FLOAT_RIGHT: @HIPPO_PACK_CLEAR_LEFT: @HIPPO_PACK_CLEAR_RIGHT: @HIPPO_PACK_CLEAR_BOTH: @child_a: @child_b: @data: @Returns: @child: @data: @hippocanvasbox: the object which received the signal. @arg1: @void: @Returns: @box: @child: @flags: @box: @child: @flags: @box: @child: @gravity: @x: @y: @box: @child: @x: @y: @box: @child: @x: @y: @box: @box: @child: @box: @box: @Returns: @box: @Returns: @box: @func: @data: @box: @box: @compare_func: @data: @box: @child: @ref_child: @flags: @box: @child: @ref_child: @flags: @box: @child: @flags: @compare_func: @data: @box: @child: @flags: @box: @area: @box: @content_width: @content_height: @x_p: @y_p: @width_p: @height_p: @box: @clickable: @box: @Returns: @box: @layout: @box: @item: @Returns: @box: @Returns: @item: @in_layout: @expand: @end: @fixed: @if_fits: @float_left: @float_right: @clear_left: @clear_right: @visible: @child: @Returns: @child: @child: @key: @Returns: @child: @key: @data: @notify: @child: @min_width_p: @natural_width_p: @child: @for_width: @min_height_p: @natural_height_p: @child: @x: @y: @width: @height: @origin_changed: hippo-canvas-0.3.1/docs/tmpl/hippo-canvas-image-button.sgml0000664000076400007640000000144311404424207020607 00000000000000 HippoCanvasImageButton @void: @Returns: hippo-canvas-0.3.1/docs/tmpl/hippo-event.sgml0000664000076400007640000000243411404424207016065 00000000000000 HippoEvent @HIPPO_EVENT_BUTTON_PRESS: @HIPPO_EVENT_BUTTON_RELEASE: @HIPPO_EVENT_MOTION_NOTIFY: @HIPPO_EVENT_KEY_PRESS: @HIPPO_EVENT_SCROLL: @HIPPO_MOTION_DETAIL_ENTER: @HIPPO_MOTION_DETAIL_LEAVE: @HIPPO_MOTION_DETAIL_WITHIN: @type: @x: @y: @HIPPO_KEY_UNKNOWN: @HIPPO_KEY_RETURN: @HIPPO_KEY_ESCAPE: @HIPPO_KEY_TAB: @HIPPO_KEY_LEFTTAB: @HIPPO_MODIFIER_SHIFT: @HIPPO_MODIFIER_CTRL: @HIPPO_MODIFIER_ALT: @void: @Returns: @event: @Returns: @event: hippo-canvas-0.3.1/docs/tmpl/hippo-canvas-gradient.sgml0000664000076400007640000000114511404424207020010 00000000000000 HippoCanvasGradient @void: @Returns: hippo-canvas-0.3.1/docs/tmpl/hippo-canvas-layout.sgml0000664000076400007640000000221111404424207017523 00000000000000 HippoCanvasLayout @base_iface: @set_box: @get_width_request: @get_height_request: @allocate: @layout: @x: @y: @width: @height: @requested_width: @requested_height: @origin_changed: @layout: @for_width: @min_height_p: @natural_height_p: @void: @Returns: @layout: @min_width_p: @natural_width_p: @layout: @box: hippo-canvas-0.3.1/docs/tmpl/hippo-canvas-text.sgml0000664000076400007640000000166711404424207017210 00000000000000 HippoCanvasText @HIPPO_CANVAS_SIZE_FULL_WIDTH: @HIPPO_CANVAS_SIZE_WRAP_WORD: @HIPPO_CANVAS_SIZE_ELLIPSIZE_END: @void: @Returns: hippo-canvas-0.3.1/docs/Makefile.in0000664000076400007640000004532611404424200014034 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@ ### Begin cut-and-paste from the toplevel Makefile.am (this is all screwy because ### the gtk-docs.make is not intended to work with our nonrecursive build setup) # -*- mode: makefile -*- #################################### # Everything below here is generic # #################################### 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@ target_triplet = @target@ DIST_COMMON = $(srcdir)/../gtk-doc.make $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in subdir = docs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_MKENUMS = @GLIB_MKENUMS@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBHIPPOCANVAS_CFLAGS = @LIBHIPPOCANVAS_CFLAGS@ LIBHIPPOCANVAS_LIBS = @LIBHIPPOCANVAS_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ 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_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PYGTK_CODEGEN = @PYGTK_CODEGEN@ PYGTK_DEFSDIR = @PYGTK_DEFSDIR@ PYTHON = @PYTHON@ PYTHON_BINDINGS_CFLAGS = @PYTHON_BINDINGS_CFLAGS@ PYTHON_BINDINGS_LIBS = @PYTHON_BINDINGS_LIBS@ 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@ VERSION = @VERSION@ 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 = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ COMMONSRCDIR = $(top_srcdir)/common LINUXSRCDIR = $(top_srcdir)/linux AM_CPPFLAGS = -DHIPPO_COMPILATION -DHIPPO_OS_LINUX -I$(top_builddir)/config -I$(COMMONSRCDIR) -I$(LINUXSRCDIR) ### End cut-and-paste DOC_MODULE = hippo-canvas DOC_MAIN_SGML_FILE = hippo-canvas.xml SCAN_OPTIONS = # The directory containing the source code. Relative to $(srcdir) DOC_SOURCE_DIR = ../common/hippo HFILE_GLOB = CFILE_GLOB = IGNORE_HFILES = INCLUDES = \ $(AM_CPPFLAGS) \ $(LIBHIPPOCANVAS_CFLAGS) GTKDOC_LIBS = $(top_builddir)/libhippocanvas-1.la MKDB_OPTIONS = --sgml-mode --outputformat=xml content_files = HTML_IMAGES = FIXXREF_OPTIONS = @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_RUN = @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_RUN = $(LIBTOOL) --mode=execute # We set GPATH here; this gives us semantics for GNU make # which are more like other make's VPATH, when it comes to # whether a source that is a target of one rule is then # searched for in VPATH/GPATH. # GPATH = $(srcdir) TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE) EXTRA_DIST = \ $(content_files) \ $(HTML_IMAGES) \ $(DOC_MAIN_SGML_FILE) \ $(DOC_MODULE)-sections.txt \ $(DOC_MODULE)-overrides.txt DOC_STAMPS = scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp \ pdf-build.stamp \ $(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp \ $(srcdir)/pdf.stamp SCANOBJ_FILES = \ $(DOC_MODULE).args \ $(DOC_MODULE).hierarchy \ $(DOC_MODULE).interfaces \ $(DOC_MODULE).prerequisites \ $(DOC_MODULE).signals REPORT_FILES = \ $(DOC_MODULE)-undocumented.txt \ $(DOC_MODULE)-undeclared.txt \ $(DOC_MODULE)-unused.txt CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_HTML_FALSE@HTML_BUILD_STAMP = @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_HTML_TRUE@HTML_BUILD_STAMP = html-build.stamp @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_PDF_FALSE@PDF_BUILD_STAMP = @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_PDF_TRUE@PDF_BUILD_STAMP = pdf-build.stamp all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/../gtk-doc.make $(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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(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 $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-am all-am: Makefile all-local 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: -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 clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-local dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local 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 \ maintainer-clean-local mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-local .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ clean-libtool clean-local dist-hook distclean \ distclean-generic distclean-libtool distclean-local distdir \ dvi dvi-am html html-am info info-am install install-am \ install-data install-data-am 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 \ maintainer-clean-local mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-local @ENABLE_GTK_DOC_TRUE@all-local: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) @ENABLE_GTK_DOC_FALSE@all-local: docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) $(REPORT_FILES): sgml-build.stamp #### scan #### scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB) @echo 'gtk-doc: Scanning header files' @-chmod -R u+w $(srcdir) @_source_dir='' ; for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ cd $(srcdir) && \ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) @if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null 2>&1 ; then \ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \ else \ cd $(srcdir) ; \ for i in $(SCANOBJ_FILES) ; do \ test -f $$i || touch $$i ; \ done \ fi @touch scan-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp @true #### templates #### tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt @echo 'gtk-doc: Rebuilding template files' @-chmod -R u+w $(srcdir) @cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS) @touch tmpl-build.stamp tmpl.stamp: tmpl-build.stamp @true $(srcdir)/tmpl/*.sgml: @true #### xml #### sgml-build.stamp: tmpl.stamp $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files) @echo 'gtk-doc: Building XML' @-chmod -R u+w $(srcdir) @_source_dir='' ; for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ cd $(srcdir) && \ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) @touch sgml-build.stamp sgml.stamp: sgml-build.stamp @true #### html #### html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) @echo 'gtk-doc: Building HTML' @-chmod -R u+w $(srcdir) @rm -rf $(srcdir)/html @mkdir $(srcdir)/html @mkhtml_options=""; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \ if test "$(?)" = "0"; then \ mkhtml_options=--path="$(srcdir)"; \ fi; \ cd $(srcdir)/html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) @test "x$(HTML_IMAGES)" = "x" || ( cd $(srcdir) && cp $(HTML_IMAGES) html ) @echo 'gtk-doc: Fixing cross-references' @cd $(srcdir) && gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) @touch html-build.stamp #### pdf #### pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) @echo 'gtk-doc: Building PDF' @-chmod -R u+w $(srcdir) @rm -rf $(srcdir)/$(DOC_MODULE).pdf @mkpdf_imgdirs=""; \ if test "x$(HTML_IMAGES)" != "x"; then \ for img in $(HTML_IMAGES); do \ part=`dirname $$img`; \ echo $$mkpdf_imgdirs | grep >/dev/null "\-\-imgdir=$$part "; \ if test $$? != 0; then \ mkpdf_imgdirs="$$mkpdf_imgdirs --imgdir=$$part"; \ fi; \ done; \ fi; \ cd $(srcdir) && gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_imgdirs $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) @touch pdf-build.stamp ############## clean-local: rm -f *~ *.bak rm -rf .libs distclean-local: cd $(srcdir) && \ rm -rf xml $(REPORT_FILES) $(DOC_MODULE).pdf \ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt maintainer-clean-local: clean cd $(srcdir) && rm -rf xml html install-data-local: @installfiles=`echo $(srcdir)/html/*`; \ if test "$$installfiles" = '$(srcdir)/html/*'; \ then echo '-- Nothing to install' ; \ else \ if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ $(mkinstalldirs) $${installdir} ; \ for i in $$installfiles; do \ echo '-- Installing '$$i ; \ $(INSTALL_DATA) $$i $${installdir}; \ done; \ if test -n "$(DOC_MODULE_VERSION)"; then \ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ mv -f $${installdir}/$(DOC_MODULE).devhelp \ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp; \ fi; \ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ fi uninstall-local: @if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ rm -rf $${installdir} # # Require gtk-doc when making dist # @ENABLE_GTK_DOC_TRUE@dist-check-gtkdoc: @ENABLE_GTK_DOC_FALSE@dist-check-gtkdoc: @ENABLE_GTK_DOC_FALSE@ @echo "*** gtk-doc must be installed and enabled in order to make dist" @ENABLE_GTK_DOC_FALSE@ @false dist-hook: dist-check-gtkdoc dist-hook-local mkdir $(distdir)/tmpl mkdir $(distdir)/html -cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl cp $(srcdir)/html/* $(distdir)/html -cp $(srcdir)/$(DOC_MODULE).pdf $(distdir)/ -cp $(srcdir)/$(DOC_MODULE).types $(distdir)/ -cp $(srcdir)/$(DOC_MODULE)-sections.txt $(distdir)/ cd $(distdir) && rm -f $(DISTCLEANFILES) $(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html .PHONY : dist-hook-local docs # 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: hippo-canvas-0.3.1/docs/Makefile.am0000664000076400007640000000146211366237063014034 00000000000000### Begin cut-and-paste from the toplevel Makefile.am (this is all screwy because ### the gtk-docs.make is not intended to work with our nonrecursive build setup) COMMONSRCDIR=$(top_srcdir)/common LINUXSRCDIR=$(top_srcdir)/linux AM_CPPFLAGS=-DHIPPO_COMPILATION -DHIPPO_OS_LINUX -I$(top_builddir)/config -I$(COMMONSRCDIR) -I$(LINUXSRCDIR) ### End cut-and-paste DOC_MODULE=hippo-canvas DOC_MAIN_SGML_FILE=hippo-canvas.xml SCAN_OPTIONS= # The directory containing the source code. Relative to $(srcdir) DOC_SOURCE_DIR=../common/hippo HFILE_GLOB= CFILE_GLOB= IGNORE_HFILES= INCLUDES= \ $(AM_CPPFLAGS) \ $(LIBHIPPOCANVAS_CFLAGS) GTKDOC_LIBS=$(top_builddir)/libhippocanvas-1.la MKDB_OPTIONS=--sgml-mode --outputformat=xml content_files= HTML_IMAGES= FIXXREF_OPTIONS= include ../gtk-doc.make hippo-canvas-0.3.1/docs/hippo-canvas.types0000664000076400007640000000131411404424207015441 00000000000000#include #include #include #include #include #include #include #include #include #include hippo_canvas_style_get_type hippo_canvas_box_get_type hippo_canvas_image_get_type hippo_rectangle_get_type hippo_canvas_container_get_type hippo_event_get_type hippo_canvas_context_get_type hippo_canvas_text_get_type hippo_canvas_link_get_type hippo_canvas_image_button_get_type hippo_canvas_item_get_type hippo_canvas_gradient_get_type