From 7c5e60b5f47d725036a72162f136272bc407e3a1 Mon Sep 17 00:00:00 2001 From: Anthony Green Date: Thu, 29 Mar 2012 08:48:22 -0400 Subject: [PATCH] Rebase on fixed GCC sources --- .pc/aix-fix/ChangeLog | 28 + .pc/mint/ChangeLog | 28 + .pc/stand-alone/aclocal.m4 | 1038 ++++++++++++++++++++++++++++++++++ .pc/vararg_float_test_fix/ChangeLog | 28 + .pc/win32/ChangeLog | 28 + .pc/win32/src/x86/win32.S | 30 +- .pc/win32_tests/ChangeLog | 28 + ChangeLog | 28 + configure | 6 +- patches/stand-alone | 1041 ++++++++++++++++++++++++++++++++++- src/sparc/v9.S | 2 +- src/x86/ffi.c | 25 +- src/x86/win32.S | 30 +- 13 files changed, 2318 insertions(+), 22 deletions(-) create mode 100644 .pc/stand-alone/aclocal.m4 diff --git a/.pc/aix-fix/ChangeLog b/.pc/aix-fix/ChangeLog index 216a142..6df2662 100644 --- a/.pc/aix-fix/ChangeLog +++ b/.pc/aix-fix/ChangeLog @@ -32,11 +32,28 @@ windows-like hosts. * configure: Rebuilt. +2012-02-27 Mikael Pettersson + + PR libffi/52223 + * Makefile.am (FLAGS_TO_PASS): Define. + * Makefile.in: Regenerate. + 2012-02-23 Anthony Green * src/*/ffitarget.h: Ensure that users never include ffitarget.h directly. +2012-02-23 Kai Tietz + + PR libffi/52221 + * src/x86/ffi.c (ffi_closure_raw_THISCALL): New + prototype. + (ffi_prep_raw_closure_loc): Use ffi_closure_raw_THISCALL for + thiscall-convention. + (ffi_raw_call): Use ffi_prep_args_raw. + * src/x86/win32.S (ffi_closure_raw_THISCALL): Add + implementation for stub. + 2012-02-10 Kai Tietz * configure.ac (AM_LTLDFLAGS): Add -no-undefine for x64 @@ -262,6 +279,10 @@ * src/sparc/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test, just return FFI_BAD_ABI when things are wrong. +2012-02-11 Eric Botcazou + + * src/sparc/v9.S (STACKFRAME): Bump to 176. + 2011-02-09 Stuart Shelton http://bugs.gentoo.org/show_bug.cgi?id=286911 @@ -790,6 +811,13 @@ * src/pa/ffi.c (ffi_closure_inner_pa32): Handle FFI_TYPE_LONGDOUBLE type on HP-UX. +2012-02-13 Kai Tietz + + PR libffi/52221 + * src/x86/ffi.c (ffi_prep_raw_closure_loc): Add thiscall + support for X86_WIN32. + (FFI_INIT_TRAMPOLINE_THISCALL): Fix displacement. + 2009-12-11 Eric Botcazou * src/sparc/ffi.c (ffi_closure_sparc_inner_v9): Properly align 'long diff --git a/.pc/mint/ChangeLog b/.pc/mint/ChangeLog index 7310dd1..367ac87 100644 --- a/.pc/mint/ChangeLog +++ b/.pc/mint/ChangeLog @@ -37,11 +37,28 @@ windows-like hosts. * configure: Rebuilt. +2012-02-27 Mikael Pettersson + + PR libffi/52223 + * Makefile.am (FLAGS_TO_PASS): Define. + * Makefile.in: Regenerate. + 2012-02-23 Anthony Green * src/*/ffitarget.h: Ensure that users never include ffitarget.h directly. +2012-02-23 Kai Tietz + + PR libffi/52221 + * src/x86/ffi.c (ffi_closure_raw_THISCALL): New + prototype. + (ffi_prep_raw_closure_loc): Use ffi_closure_raw_THISCALL for + thiscall-convention. + (ffi_raw_call): Use ffi_prep_args_raw. + * src/x86/win32.S (ffi_closure_raw_THISCALL): Add + implementation for stub. + 2012-02-10 Kai Tietz * configure.ac (AM_LTLDFLAGS): Add -no-undefine for x64 @@ -267,6 +284,10 @@ * src/sparc/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test, just return FFI_BAD_ABI when things are wrong. +2012-02-11 Eric Botcazou + + * src/sparc/v9.S (STACKFRAME): Bump to 176. + 2011-02-09 Stuart Shelton http://bugs.gentoo.org/show_bug.cgi?id=286911 @@ -795,6 +816,13 @@ * src/pa/ffi.c (ffi_closure_inner_pa32): Handle FFI_TYPE_LONGDOUBLE type on HP-UX. +2012-02-13 Kai Tietz + + PR libffi/52221 + * src/x86/ffi.c (ffi_prep_raw_closure_loc): Add thiscall + support for X86_WIN32. + (FFI_INIT_TRAMPOLINE_THISCALL): Fix displacement. + 2009-12-11 Eric Botcazou * src/sparc/ffi.c (ffi_closure_sparc_inner_v9): Properly align 'long diff --git a/.pc/stand-alone/aclocal.m4 b/.pc/stand-alone/aclocal.m4 new file mode 100644 index 0000000..9d6a669 --- /dev/null +++ b/.pc/stand-alone/aclocal.m4 @@ -0,0 +1,1038 @@ +# 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.64],, +[m4_warning([this file was generated for autoconf 2.64. +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]))]) + +# Figure out how to run the assembler. -*- Autoconf -*- + +# Copyright (C) 2001, 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. + +# serial 5 + +# AM_PROG_AS +# ---------- +AC_DEFUN([AM_PROG_AS], +[# By default we simply use the C compiler to build assembly code. +AC_REQUIRE([AC_PROG_CC]) +test "${CCAS+set}" = set || CCAS=$CC +test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS +AC_ARG_VAR([CCAS], [assembler compiler command (defaults to CC)]) +AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)]) +_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl +]) + +# 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"]) +]) + +# 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)]) + +# 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 +]) + +# Copyright (C) 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_PROG_CC_C_O +# -------------- +# Like AC_PROG_CC_C_O, but changed for automake. +AC_DEFUN([AM_PROG_CC_C_O], +[AC_REQUIRE([AC_PROG_CC_C_O])dnl +AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +# FIXME: we rely on the cache variable name because +# there is no other way. +set dummy $CC +am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']` +eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o +if test "$am_t" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +dnl Make sure AC_PROG_CC is never called again, or it will override our +dnl setting of CC. +m4_define([AC_PROG_CC], + [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])]) +]) + +# 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])]) + +# 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 + +m4_include([../config/asmcfi.m4]) +m4_include([../config/depstand.m4]) +m4_include([../config/lead-dot.m4]) +m4_include([../config/multi.m4]) +m4_include([../config/override.m4]) +m4_include([../libtool.m4]) +m4_include([../ltoptions.m4]) +m4_include([../ltsugar.m4]) +m4_include([../ltversion.m4]) +m4_include([../lt~obsolete.m4]) +m4_include([acinclude.m4]) diff --git a/.pc/vararg_float_test_fix/ChangeLog b/.pc/vararg_float_test_fix/ChangeLog index 771d2b7..668341b 100644 --- a/.pc/vararg_float_test_fix/ChangeLog +++ b/.pc/vararg_float_test_fix/ChangeLog @@ -55,11 +55,28 @@ windows-like hosts. * configure: Rebuilt. +2012-02-27 Mikael Pettersson + + PR libffi/52223 + * Makefile.am (FLAGS_TO_PASS): Define. + * Makefile.in: Regenerate. + 2012-02-23 Anthony Green * src/*/ffitarget.h: Ensure that users never include ffitarget.h directly. +2012-02-23 Kai Tietz + + PR libffi/52221 + * src/x86/ffi.c (ffi_closure_raw_THISCALL): New + prototype. + (ffi_prep_raw_closure_loc): Use ffi_closure_raw_THISCALL for + thiscall-convention. + (ffi_raw_call): Use ffi_prep_args_raw. + * src/x86/win32.S (ffi_closure_raw_THISCALL): Add + implementation for stub. + 2012-02-10 Kai Tietz * configure.ac (AM_LTLDFLAGS): Add -no-undefine for x64 @@ -285,6 +302,10 @@ * src/sparc/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test, just return FFI_BAD_ABI when things are wrong. +2012-02-11 Eric Botcazou + + * src/sparc/v9.S (STACKFRAME): Bump to 176. + 2011-02-09 Stuart Shelton http://bugs.gentoo.org/show_bug.cgi?id=286911 @@ -813,6 +834,13 @@ * src/pa/ffi.c (ffi_closure_inner_pa32): Handle FFI_TYPE_LONGDOUBLE type on HP-UX. +2012-02-13 Kai Tietz + + PR libffi/52221 + * src/x86/ffi.c (ffi_prep_raw_closure_loc): Add thiscall + support for X86_WIN32. + (FFI_INIT_TRAMPOLINE_THISCALL): Fix displacement. + 2009-12-11 Eric Botcazou * src/sparc/ffi.c (ffi_closure_sparc_inner_v9): Properly align 'long diff --git a/.pc/win32/ChangeLog b/.pc/win32/ChangeLog index bcb76a3..b12184c 100644 --- a/.pc/win32/ChangeLog +++ b/.pc/win32/ChangeLog @@ -42,11 +42,28 @@ windows-like hosts. * configure: Rebuilt. +2012-02-27 Mikael Pettersson + + PR libffi/52223 + * Makefile.am (FLAGS_TO_PASS): Define. + * Makefile.in: Regenerate. + 2012-02-23 Anthony Green * src/*/ffitarget.h: Ensure that users never include ffitarget.h directly. +2012-02-23 Kai Tietz + + PR libffi/52221 + * src/x86/ffi.c (ffi_closure_raw_THISCALL): New + prototype. + (ffi_prep_raw_closure_loc): Use ffi_closure_raw_THISCALL for + thiscall-convention. + (ffi_raw_call): Use ffi_prep_args_raw. + * src/x86/win32.S (ffi_closure_raw_THISCALL): Add + implementation for stub. + 2012-02-10 Kai Tietz * configure.ac (AM_LTLDFLAGS): Add -no-undefine for x64 @@ -272,6 +289,10 @@ * src/sparc/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test, just return FFI_BAD_ABI when things are wrong. +2012-02-11 Eric Botcazou + + * src/sparc/v9.S (STACKFRAME): Bump to 176. + 2011-02-09 Stuart Shelton http://bugs.gentoo.org/show_bug.cgi?id=286911 @@ -800,6 +821,13 @@ * src/pa/ffi.c (ffi_closure_inner_pa32): Handle FFI_TYPE_LONGDOUBLE type on HP-UX. +2012-02-13 Kai Tietz + + PR libffi/52221 + * src/x86/ffi.c (ffi_prep_raw_closure_loc): Add thiscall + support for X86_WIN32. + (FFI_INIT_TRAMPOLINE_THISCALL): Fix displacement. + 2009-12-11 Eric Botcazou * src/sparc/ffi.c (ffi_closure_sparc_inner_v9): Properly align 'long diff --git a/.pc/win32/src/x86/win32.S b/.pc/win32/src/x86/win32.S index e5c93ecf..deb4a03 100644 --- a/.pc/win32/src/x86/win32.S +++ b/.pc/win32/src/x86/win32.S @@ -264,6 +264,18 @@ ffi_closure_SYSV ENDP #define RAW_CLOSURE_USER_DATA_OFFSET (RAW_CLOSURE_FUN_OFFSET + 4) #define CIF_FLAGS_OFFSET 20 +ffi_closure_raw_THISCALL PROC NEAR + push ebp + mov ebp, esp + push esi + sub esp, 36 + mov esi, [eax + RAW_CLOSURE_CIF_OFFSET] ;; closure->cif + mov edx, [eax + RAW_CLOSURE_USER_DATA_OFFSET] ;; closure->user_data + mov [esp + 12], edx + lea edx, [ebp + 12], edx + jmp stubraw +ffi_closure_raw_SYSV ENDP + ffi_closure_raw_SYSV PROC NEAR USES esi ;; the ffi_closure ctx is passed in eax by the trampoline. @@ -272,6 +284,7 @@ ffi_closure_raw_SYSV PROC NEAR USES esi mov edx, [eax + RAW_CLOSURE_USER_DATA_OFFSET] ;; closure->user_data mov [esp + 12], edx ;; user_data lea edx, [ebp + 8] +stubraw: mov [esp + 8], edx ;; raw_args lea edx, [ebp - 24] mov [esp + 4], edx ;; &res @@ -722,7 +735,21 @@ _ffi_closure_SYSV: #define RAW_CLOSURE_FUN_OFFSET (RAW_CLOSURE_CIF_OFFSET + 4) #define RAW_CLOSURE_USER_DATA_OFFSET (RAW_CLOSURE_FUN_OFFSET + 4) #define CIF_FLAGS_OFFSET 20 - + .balign 16 + .globl _ffi_closure_raw_THISCALL +#ifndef __OS2__ + .def _ffi_closure_raw_THISCALL; .scl 2; .type 32; .endef +#endif +_ffi_closure_raw_THISCALL: + pushl %ebp + movl %esp, %ebp + pushl %esi + subl $36, %esp + movl RAW_CLOSURE_CIF_OFFSET(%eax), %esi /* closure->cif */ + movl RAW_CLOSURE_USER_DATA_OFFSET(%eax), %edx /* closure->user_data */ + movl %edx, 12(%esp) /* user_data */ + leal 12(%ebp), %edx /* __builtin_dwarf_cfa () */ + jmp .stubraw # This assumes we are using gas. .balign 16 .globl _ffi_closure_raw_SYSV @@ -742,6 +769,7 @@ _ffi_closure_raw_SYSV: movl RAW_CLOSURE_USER_DATA_OFFSET(%eax), %edx /* closure->user_data */ movl %edx, 12(%esp) /* user_data */ leal 8(%ebp), %edx /* __builtin_dwarf_cfa () */ +.stubraw: movl %edx, 8(%esp) /* raw_args */ leal -24(%ebp), %edx movl %edx, 4(%esp) /* &res */ diff --git a/.pc/win32_tests/ChangeLog b/.pc/win32_tests/ChangeLog index c10ebd4..95b7137 100644 --- a/.pc/win32_tests/ChangeLog +++ b/.pc/win32_tests/ChangeLog @@ -48,11 +48,28 @@ windows-like hosts. * configure: Rebuilt. +2012-02-27 Mikael Pettersson + + PR libffi/52223 + * Makefile.am (FLAGS_TO_PASS): Define. + * Makefile.in: Regenerate. + 2012-02-23 Anthony Green * src/*/ffitarget.h: Ensure that users never include ffitarget.h directly. +2012-02-23 Kai Tietz + + PR libffi/52221 + * src/x86/ffi.c (ffi_closure_raw_THISCALL): New + prototype. + (ffi_prep_raw_closure_loc): Use ffi_closure_raw_THISCALL for + thiscall-convention. + (ffi_raw_call): Use ffi_prep_args_raw. + * src/x86/win32.S (ffi_closure_raw_THISCALL): Add + implementation for stub. + 2012-02-10 Kai Tietz * configure.ac (AM_LTLDFLAGS): Add -no-undefine for x64 @@ -278,6 +295,10 @@ * src/sparc/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test, just return FFI_BAD_ABI when things are wrong. +2012-02-11 Eric Botcazou + + * src/sparc/v9.S (STACKFRAME): Bump to 176. + 2011-02-09 Stuart Shelton http://bugs.gentoo.org/show_bug.cgi?id=286911 @@ -806,6 +827,13 @@ * src/pa/ffi.c (ffi_closure_inner_pa32): Handle FFI_TYPE_LONGDOUBLE type on HP-UX. +2012-02-13 Kai Tietz + + PR libffi/52221 + * src/x86/ffi.c (ffi_prep_raw_closure_loc): Add thiscall + support for X86_WIN32. + (FFI_INIT_TRAMPOLINE_THISCALL): Fix displacement. + 2009-12-11 Eric Botcazou * src/sparc/ffi.c (ffi_closure_sparc_inner_v9): Properly align 'long diff --git a/ChangeLog b/ChangeLog index 32577f1..7b8e2e9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -61,11 +61,28 @@ windows-like hosts. * configure: Rebuilt. +2012-02-27 Mikael Pettersson + + PR libffi/52223 + * Makefile.am (FLAGS_TO_PASS): Define. + * Makefile.in: Regenerate. + 2012-02-23 Anthony Green * src/*/ffitarget.h: Ensure that users never include ffitarget.h directly. +2012-02-23 Kai Tietz + + PR libffi/52221 + * src/x86/ffi.c (ffi_closure_raw_THISCALL): New + prototype. + (ffi_prep_raw_closure_loc): Use ffi_closure_raw_THISCALL for + thiscall-convention. + (ffi_raw_call): Use ffi_prep_args_raw. + * src/x86/win32.S (ffi_closure_raw_THISCALL): Add + implementation for stub. + 2012-02-10 Kai Tietz * configure.ac (AM_LTLDFLAGS): Add -no-undefine for x64 @@ -291,6 +308,10 @@ * src/sparc/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test, just return FFI_BAD_ABI when things are wrong. +2012-02-11 Eric Botcazou + + * src/sparc/v9.S (STACKFRAME): Bump to 176. + 2011-02-09 Stuart Shelton http://bugs.gentoo.org/show_bug.cgi?id=286911 @@ -819,6 +840,13 @@ * src/pa/ffi.c (ffi_closure_inner_pa32): Handle FFI_TYPE_LONGDOUBLE type on HP-UX. +2012-02-13 Kai Tietz + + PR libffi/52221 + * src/x86/ffi.c (ffi_prep_raw_closure_loc): Add thiscall + support for X86_WIN32. + (FFI_INIT_TRAMPOLINE_THISCALL): Fix displacement. + 2009-12-11 Eric Botcazou * src/sparc/ffi.c (ffi_closure_sparc_inner_v9): Properly align 'long diff --git a/configure b/configure index cec095b..08abce4 100755 --- a/configure +++ b/configure @@ -14245,10 +14245,10 @@ if ${libffi_cv_as_x86_pcrel+:} false; then : $as_echo_n "(cached) " >&6 else - libffi_cv_as_x86_pcrel=no + libffi_cv_as_x86_pcrel=yes echo '.text; foo: nop; .data; .long foo-.; .text' > conftest.s - if $CC $CFLAGS -c conftest.s > /dev/null; then - libffi_cv_as_x86_pcrel=yes + if $CC $CFLAGS -c conftest.s 2>&1 | $EGREP -i 'illegal|warning' > /dev/null; then + libffi_cv_as_x86_pcrel=no fi fi diff --git a/patches/stand-alone b/patches/stand-alone index 6b810fc..2cde601 100644 --- a/patches/stand-alone +++ b/patches/stand-alone @@ -5661,7 +5661,7 @@ Index: libffi/configure $as_echo_n "(cached) " >&6 else -@@ -12403,14 +14241,14 @@ fi +@@ -12403,7 +14241,7 @@ fi if test x$TARGET = xX86 || test x$TARGET = xX86_WIN32 || test x$TARGET = xX86_64; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler supports pc related relocs" >&5 $as_echo_n "checking assembler supports pc related relocs... " >&6; } @@ -5670,16 +5670,6 @@ Index: libffi/configure $as_echo_n "(cached) " >&6 else -- libffi_cv_as_x86_pcrel=yes -+ libffi_cv_as_x86_pcrel=no - echo '.text; foo: nop; .data; .long foo-.; .text' > conftest.s -- if $CC $CFLAGS -c conftest.s 2>&1 | $EGREP -i 'illegal|warning' > /dev/null; then -- libffi_cv_as_x86_pcrel=no -+ if $CC $CFLAGS -c conftest.s > /dev/null; then -+ libffi_cv_as_x86_pcrel=yes - fi - - fi @@ -12424,7 +14262,7 @@ $as_echo "#define HAVE_AS_X86_PCREL 1" > { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .ascii pseudo-op support" >&5 @@ -19344,3 +19334,1032 @@ Index: libffi/config.sub os=-mmixware ;; *-wec) +Index: libffi/aclocal.m4 +=================================================================== +--- libffi.orig/aclocal.m4 ++++ libffi/aclocal.m4 +@@ -13,12 +13,966 @@ + + m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.64],, +-[m4_warning([this file was generated for autoconf 2.64. ++m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],, ++[m4_warning([this file was generated for autoconf 2.68. + 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'.])]) + ++# =========================================================================== ++# http://www.gnu.org/software/autoconf-archive/ax_append_flag.html ++# =========================================================================== ++# ++# SYNOPSIS ++# ++# AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE]) ++# ++# DESCRIPTION ++# ++# FLAG is appended to the FLAGS-VARIABLE shell variable, with a space ++# added in between. ++# ++# If FLAGS-VARIABLE is not specified, the current language's flags (e.g. ++# CFLAGS) is used. FLAGS-VARIABLE is not changed if it already contains ++# FLAG. If FLAGS-VARIABLE is unset in the shell, it is set to exactly ++# FLAG. ++# ++# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. ++# ++# LICENSE ++# ++# Copyright (c) 2008 Guido U. Draheim ++# Copyright (c) 2011 Maarten Bosmans ++# ++# 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 3 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, see . ++# ++# As a special exception, the respective Autoconf Macro's copyright owner ++# gives unlimited permission to copy, distribute and modify the configure ++# scripts that are the output of Autoconf when processing the Macro. You ++# need not follow the terms of the GNU General Public License when using ++# or distributing such scripts, even though portions of the text of the ++# Macro appear in them. The GNU General Public License (GPL) does govern ++# all other use of the material that constitutes the Autoconf Macro. ++# ++# This special exception to the GPL applies to versions of the Autoconf ++# Macro released by the Autoconf Archive. When you make and distribute a ++# modified version of the Autoconf Macro, you may extend this special ++# exception to the GPL to apply to your modified version as well. ++ ++#serial 2 ++ ++AC_DEFUN([AX_APPEND_FLAG], ++[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX ++AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])])dnl ++AS_VAR_SET_IF(FLAGS, ++ [case " AS_VAR_GET(FLAGS) " in ++ *" $1 "*) ++ AC_RUN_LOG([: FLAGS already contains $1]) ++ ;; ++ *) ++ AC_RUN_LOG([: FLAGS="$FLAGS $1"]) ++ AS_VAR_SET(FLAGS, ["AS_VAR_GET(FLAGS) $1"]) ++ ;; ++ esac], ++ [AS_VAR_SET(FLAGS,["$1"])]) ++AS_VAR_POPDEF([FLAGS])dnl ++])dnl AX_APPEND_FLAG ++ ++# =========================================================================== ++# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html ++# =========================================================================== ++# ++# SYNOPSIS ++# ++# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS]) ++# ++# DESCRIPTION ++# ++# Check whether the given FLAG works with the current language's compiler ++# or gives an error. (Warnings, however, are ignored) ++# ++# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on ++# success/failure. ++# ++# If EXTRA-FLAGS is defined, it is added to the current language's default ++# flags (e.g. CFLAGS) when the check is done. The check is thus made with ++# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to ++# force the compiler to issue an error when a bad flag is given. ++# ++# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this ++# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG. ++# ++# LICENSE ++# ++# Copyright (c) 2008 Guido U. Draheim ++# Copyright (c) 2011 Maarten Bosmans ++# ++# 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 3 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, see . ++# ++# As a special exception, the respective Autoconf Macro's copyright owner ++# gives unlimited permission to copy, distribute and modify the configure ++# scripts that are the output of Autoconf when processing the Macro. You ++# need not follow the terms of the GNU General Public License when using ++# or distributing such scripts, even though portions of the text of the ++# Macro appear in them. The GNU General Public License (GPL) does govern ++# all other use of the material that constitutes the Autoconf Macro. ++# ++# This special exception to the GPL applies to versions of the Autoconf ++# Macro released by the Autoconf Archive. When you make and distribute a ++# modified version of the Autoconf Macro, you may extend this special ++# exception to the GPL to apply to your modified version as well. ++ ++#serial 2 ++ ++AC_DEFUN([AX_CHECK_COMPILE_FLAG], ++[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX ++AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl ++AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ ++ ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS ++ _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1" ++ AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], ++ [AS_VAR_SET(CACHEVAR,[yes])], ++ [AS_VAR_SET(CACHEVAR,[no])]) ++ _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) ++AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes], ++ [m4_default([$2], :)], ++ [m4_default([$3], :)]) ++AS_VAR_POPDEF([CACHEVAR])dnl ++])dnl AX_CHECK_COMPILE_FLAGS ++ ++# ltdl.m4 - Configure ltdl for the target system. -*-Autoconf-*- ++# ++# Copyright (C) 1999-2006, 2007, 2008 Free Software Foundation, Inc. ++# Written by Thomas Tanner, 1999 ++# ++# 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 18 LTDL_INIT ++ ++# LT_CONFIG_LTDL_DIR(DIRECTORY, [LTDL-MODE]) ++# ------------------------------------------ ++# DIRECTORY contains the libltdl sources. It is okay to call this ++# function multiple times, as long as the same DIRECTORY is always given. ++AC_DEFUN([LT_CONFIG_LTDL_DIR], ++[AC_BEFORE([$0], [LTDL_INIT]) ++_$0($*) ++])# LT_CONFIG_LTDL_DIR ++ ++# We break this out into a separate macro, so that we can call it safely ++# internally without being caught accidentally by the sed scan in libtoolize. ++m4_defun([_LT_CONFIG_LTDL_DIR], ++[dnl remove trailing slashes ++m4_pushdef([_ARG_DIR], m4_bpatsubst([$1], [/*$])) ++m4_case(_LTDL_DIR, ++ [], [dnl only set lt_ltdl_dir if _ARG_DIR is not simply `.' ++ m4_if(_ARG_DIR, [.], ++ [], ++ [m4_define([_LTDL_DIR], _ARG_DIR) ++ _LT_SHELL_INIT([lt_ltdl_dir=']_ARG_DIR['])])], ++ [m4_if(_ARG_DIR, _LTDL_DIR, ++ [], ++ [m4_fatal([multiple libltdl directories: `]_LTDL_DIR[', `]_ARG_DIR['])])]) ++m4_popdef([_ARG_DIR]) ++])# _LT_CONFIG_LTDL_DIR ++ ++# Initialise: ++m4_define([_LTDL_DIR], []) ++ ++ ++# _LT_BUILD_PREFIX ++# ---------------- ++# If Autoconf is new enough, expand to `${top_build_prefix}', otherwise ++# to `${top_builddir}/'. ++m4_define([_LT_BUILD_PREFIX], ++[m4_ifdef([AC_AUTOCONF_VERSION], ++ [m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.62]), ++ [-1], [m4_ifdef([_AC_HAVE_TOP_BUILD_PREFIX], ++ [${top_build_prefix}], ++ [${top_builddir}/])], ++ [${top_build_prefix}])], ++ [${top_builddir}/])[]dnl ++]) ++ ++ ++# LTDL_CONVENIENCE ++# ---------------- ++# sets LIBLTDL to the link flags for the libltdl convenience library and ++# LTDLINCL to the include flags for the libltdl header and adds ++# --enable-ltdl-convenience to the configure arguments. Note that ++# AC_CONFIG_SUBDIRS is not called here. LIBLTDL will be prefixed with ++# '${top_build_prefix}' if available, otherwise with '${top_builddir}/', ++# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single ++# quotes!). If your package is not flat and you're not using automake, ++# define top_build_prefix, top_builddir, and top_srcdir appropriately ++# in your Makefiles. ++AC_DEFUN([LTDL_CONVENIENCE], ++[AC_BEFORE([$0], [LTDL_INIT])dnl ++dnl Although the argument is deprecated and no longer documented, ++dnl LTDL_CONVENIENCE used to take a DIRECTORY orgument, if we have one ++dnl here make sure it is the same as any other declaration of libltdl's ++dnl location! This also ensures lt_ltdl_dir is set when configure.ac is ++dnl not yet using an explicit LT_CONFIG_LTDL_DIR. ++m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl ++_$0() ++])# LTDL_CONVENIENCE ++ ++# AC_LIBLTDL_CONVENIENCE accepted a directory argument in older libtools, ++# now we have LT_CONFIG_LTDL_DIR: ++AU_DEFUN([AC_LIBLTDL_CONVENIENCE], ++[_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) ++_LTDL_CONVENIENCE]) ++ ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([AC_LIBLTDL_CONVENIENCE], []) ++ ++ ++# _LTDL_CONVENIENCE ++# ----------------- ++# Code shared by LTDL_CONVENIENCE and LTDL_INIT([convenience]). ++m4_defun([_LTDL_CONVENIENCE], ++[case $enable_ltdl_convenience in ++ no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; ++ "") enable_ltdl_convenience=yes ++ ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; ++esac ++LIBLTDL='_LT_BUILD_PREFIX'"${lt_ltdl_dir+$lt_ltdl_dir/}libltdlc.la" ++LTDLDEPS=$LIBLTDL ++LTDLINCL='-I${top_srcdir}'"${lt_ltdl_dir+/$lt_ltdl_dir}" ++ ++AC_SUBST([LIBLTDL]) ++AC_SUBST([LTDLDEPS]) ++AC_SUBST([LTDLINCL]) ++ ++# For backwards non-gettext consistent compatibility... ++INCLTDL="$LTDLINCL" ++AC_SUBST([INCLTDL]) ++])# _LTDL_CONVENIENCE ++ ++ ++# LTDL_INSTALLABLE ++# ---------------- ++# sets LIBLTDL to the link flags for the libltdl installable library ++# and LTDLINCL to the include flags for the libltdl header and adds ++# --enable-ltdl-install to the configure arguments. Note that ++# AC_CONFIG_SUBDIRS is not called from here. If an installed libltdl ++# is not found, LIBLTDL will be prefixed with '${top_build_prefix}' if ++# available, otherwise with '${top_builddir}/', and LTDLINCL will be ++# prefixed with '${top_srcdir}/' (note the single quotes!). If your ++# package is not flat and you're not using automake, define top_build_prefix, ++# top_builddir, and top_srcdir appropriately in your Makefiles. ++# In the future, this macro may have to be called after LT_INIT. ++AC_DEFUN([LTDL_INSTALLABLE], ++[AC_BEFORE([$0], [LTDL_INIT])dnl ++dnl Although the argument is deprecated and no longer documented, ++dnl LTDL_INSTALLABLE used to take a DIRECTORY orgument, if we have one ++dnl here make sure it is the same as any other declaration of libltdl's ++dnl location! This also ensures lt_ltdl_dir is set when configure.ac is ++dnl not yet using an explicit LT_CONFIG_LTDL_DIR. ++m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl ++_$0() ++])# LTDL_INSTALLABLE ++ ++# AC_LIBLTDL_INSTALLABLE accepted a directory argument in older libtools, ++# now we have LT_CONFIG_LTDL_DIR: ++AU_DEFUN([AC_LIBLTDL_INSTALLABLE], ++[_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) ++_LTDL_INSTALLABLE]) ++ ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([AC_LIBLTDL_INSTALLABLE], []) ++ ++ ++# _LTDL_INSTALLABLE ++# ----------------- ++# Code shared by LTDL_INSTALLABLE and LTDL_INIT([installable]). ++m4_defun([_LTDL_INSTALLABLE], ++[if test -f $prefix/lib/libltdl.la; then ++ lt_save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="-L$prefix/lib $LDFLAGS" ++ AC_CHECK_LIB([ltdl], [lt_dlinit], [lt_lib_ltdl=yes]) ++ LDFLAGS="$lt_save_LDFLAGS" ++ if test x"${lt_lib_ltdl-no}" = xyes; then ++ if test x"$enable_ltdl_install" != xyes; then ++ # Don't overwrite $prefix/lib/libltdl.la without --enable-ltdl-install ++ AC_MSG_WARN([not overwriting libltdl at $prefix, force with `--enable-ltdl-install']) ++ enable_ltdl_install=no ++ fi ++ elif test x"$enable_ltdl_install" = xno; then ++ AC_MSG_WARN([libltdl not installed, but installation disabled]) ++ fi ++fi ++ ++# If configure.ac declared an installable ltdl, and the user didn't override ++# with --disable-ltdl-install, we will install the shipped libltdl. ++case $enable_ltdl_install in ++ no) ac_configure_args="$ac_configure_args --enable-ltdl-install=no" ++ LIBLTDL="-lltdl" ++ LTDLDEPS= ++ LTDLINCL= ++ ;; ++ *) enable_ltdl_install=yes ++ ac_configure_args="$ac_configure_args --enable-ltdl-install" ++ LIBLTDL='_LT_BUILD_PREFIX'"${lt_ltdl_dir+$lt_ltdl_dir/}libltdl.la" ++ LTDLDEPS=$LIBLTDL ++ LTDLINCL='-I${top_srcdir}'"${lt_ltdl_dir+/$lt_ltdl_dir}" ++ ;; ++esac ++ ++AC_SUBST([LIBLTDL]) ++AC_SUBST([LTDLDEPS]) ++AC_SUBST([LTDLINCL]) ++ ++# For backwards non-gettext consistent compatibility... ++INCLTDL="$LTDLINCL" ++AC_SUBST([INCLTDL]) ++])# LTDL_INSTALLABLE ++ ++ ++# _LTDL_MODE_DISPATCH ++# ------------------- ++m4_define([_LTDL_MODE_DISPATCH], ++[dnl If _LTDL_DIR is `.', then we are configuring libltdl itself: ++m4_if(_LTDL_DIR, [], ++ [], ++ dnl if _LTDL_MODE was not set already, the default value is `subproject': ++ [m4_case(m4_default(_LTDL_MODE, [subproject]), ++ [subproject], [AC_CONFIG_SUBDIRS(_LTDL_DIR) ++ _LT_SHELL_INIT([lt_dlopen_dir="$lt_ltdl_dir"])], ++ [nonrecursive], [_LT_SHELL_INIT([lt_dlopen_dir="$lt_ltdl_dir"; lt_libobj_prefix="$lt_ltdl_dir/"])], ++ [recursive], [], ++ [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])])dnl ++dnl Be careful not to expand twice: ++m4_define([$0], []) ++])# _LTDL_MODE_DISPATCH ++ ++ ++# _LT_LIBOBJ(MODULE_NAME) ++# ----------------------- ++# Like AC_LIBOBJ, except that MODULE_NAME goes into _LT_LIBOBJS instead ++# of into LIBOBJS. ++AC_DEFUN([_LT_LIBOBJ], [ ++ m4_pattern_allow([^_LT_LIBOBJS$]) ++ _LT_LIBOBJS="$_LT_LIBOBJS $1.$ac_objext" ++])# _LT_LIBOBJS ++ ++ ++# LTDL_INIT([OPTIONS]) ++# -------------------- ++# Clients of libltdl can use this macro to allow the installer to ++# choose between a shipped copy of the ltdl sources or a preinstalled ++# version of the library. If the shipped ltdl sources are not in a ++# subdirectory named libltdl, the directory name must be given by ++# LT_CONFIG_LTDL_DIR. ++AC_DEFUN([LTDL_INIT], ++[dnl Parse OPTIONS ++_LT_SET_OPTIONS([$0], [$1]) ++ ++dnl We need to keep our own list of libobjs separate from our parent project, ++dnl and the easiest way to do that is redefine the AC_LIBOBJs macro while ++dnl we look for our own LIBOBJs. ++m4_pushdef([AC_LIBOBJ], m4_defn([_LT_LIBOBJ])) ++m4_pushdef([AC_LIBSOURCES]) ++ ++dnl If not otherwise defined, default to the 1.5.x compatible subproject mode: ++m4_if(_LTDL_MODE, [], ++ [m4_define([_LTDL_MODE], m4_default([$2], [subproject])) ++ m4_if([-1], [m4_bregexp(_LTDL_MODE, [\(subproject\|\(non\)?recursive\)])], ++ [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])]) ++ ++AC_ARG_WITH([included_ltdl], ++ [AS_HELP_STRING([--with-included-ltdl], ++ [use the GNU ltdl sources included here])]) ++ ++if test "x$with_included_ltdl" != xyes; then ++ # We are not being forced to use the included libltdl sources, so ++ # decide whether there is a useful installed version we can use. ++ AC_CHECK_HEADER([ltdl.h], ++ [AC_CHECK_DECL([lt_dlinterface_register], ++ [AC_CHECK_LIB([ltdl], [lt_dladvise_preload], ++ [with_included_ltdl=no], ++ [with_included_ltdl=yes])], ++ [with_included_ltdl=yes], ++ [AC_INCLUDES_DEFAULT ++ #include ])], ++ [with_included_ltdl=yes], ++ [AC_INCLUDES_DEFAULT] ++ ) ++fi ++ ++dnl If neither LT_CONFIG_LTDL_DIR, LTDL_CONVENIENCE nor LTDL_INSTALLABLE ++dnl was called yet, then for old times' sake, we assume libltdl is in an ++dnl eponymous directory: ++AC_PROVIDE_IFELSE([LT_CONFIG_LTDL_DIR], [], [_LT_CONFIG_LTDL_DIR([libltdl])]) ++ ++AC_ARG_WITH([ltdl_include], ++ [AS_HELP_STRING([--with-ltdl-include=DIR], ++ [use the ltdl headers installed in DIR])]) ++ ++if test -n "$with_ltdl_include"; then ++ if test -f "$with_ltdl_include/ltdl.h"; then : ++ else ++ AC_MSG_ERROR([invalid ltdl include directory: `$with_ltdl_include']) ++ fi ++else ++ with_ltdl_include=no ++fi ++ ++AC_ARG_WITH([ltdl_lib], ++ [AS_HELP_STRING([--with-ltdl-lib=DIR], ++ [use the libltdl.la installed in DIR])]) ++ ++if test -n "$with_ltdl_lib"; then ++ if test -f "$with_ltdl_lib/libltdl.la"; then : ++ else ++ AC_MSG_ERROR([invalid ltdl library directory: `$with_ltdl_lib']) ++ fi ++else ++ with_ltdl_lib=no ++fi ++ ++case ,$with_included_ltdl,$with_ltdl_include,$with_ltdl_lib, in ++ ,yes,no,no,) ++ m4_case(m4_default(_LTDL_TYPE, [convenience]), ++ [convenience], [_LTDL_CONVENIENCE], ++ [installable], [_LTDL_INSTALLABLE], ++ [m4_fatal([unknown libltdl build type: ]_LTDL_TYPE)]) ++ ;; ++ ,no,no,no,) ++ # If the included ltdl is not to be used, then use the ++ # preinstalled libltdl we found. ++ AC_DEFINE([HAVE_LTDL], [1], ++ [Define this if a modern libltdl is already installed]) ++ LIBLTDL=-lltdl ++ LTDLDEPS= ++ LTDLINCL= ++ ;; ++ ,no*,no,*) ++ AC_MSG_ERROR([`--with-ltdl-include' and `--with-ltdl-lib' options must be used together]) ++ ;; ++ *) with_included_ltdl=no ++ LIBLTDL="-L$with_ltdl_lib -lltdl" ++ LTDLDEPS= ++ LTDLINCL="-I$with_ltdl_include" ++ ;; ++esac ++INCLTDL="$LTDLINCL" ++ ++# Report our decision... ++AC_MSG_CHECKING([where to find libltdl headers]) ++AC_MSG_RESULT([$LTDLINCL]) ++AC_MSG_CHECKING([where to find libltdl library]) ++AC_MSG_RESULT([$LIBLTDL]) ++ ++_LTDL_SETUP ++ ++dnl restore autoconf definition. ++m4_popdef([AC_LIBOBJ]) ++m4_popdef([AC_LIBSOURCES]) ++ ++AC_CONFIG_COMMANDS_PRE([ ++ _ltdl_libobjs= ++ _ltdl_ltlibobjs= ++ if test -n "$_LT_LIBOBJS"; then ++ # Remove the extension. ++ _lt_sed_drop_objext='s/\.o$//;s/\.obj$//' ++ for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$_lt_sed_drop_objext" | sort -u`; do ++ _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext" ++ _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo" ++ done ++ fi ++ AC_SUBST([ltdl_LIBOBJS], [$_ltdl_libobjs]) ++ AC_SUBST([ltdl_LTLIBOBJS], [$_ltdl_ltlibobjs]) ++]) ++ ++# Only expand once: ++m4_define([LTDL_INIT]) ++])# LTDL_INIT ++ ++# Old names: ++AU_DEFUN([AC_LIB_LTDL], [LTDL_INIT($@)]) ++AU_DEFUN([AC_WITH_LTDL], [LTDL_INIT($@)]) ++AU_DEFUN([LT_WITH_LTDL], [LTDL_INIT($@)]) ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([AC_LIB_LTDL], []) ++dnl AC_DEFUN([AC_WITH_LTDL], []) ++dnl AC_DEFUN([LT_WITH_LTDL], []) ++ ++ ++# _LTDL_SETUP ++# ----------- ++# Perform all the checks necessary for compilation of the ltdl objects ++# -- including compiler checks and header checks. This is a public ++# interface mainly for the benefit of libltdl's own configure.ac, most ++# other users should call LTDL_INIT instead. ++AC_DEFUN([_LTDL_SETUP], ++[AC_REQUIRE([AC_PROG_CC])dnl ++AC_REQUIRE([LT_SYS_MODULE_EXT])dnl ++AC_REQUIRE([LT_SYS_MODULE_PATH])dnl ++AC_REQUIRE([LT_SYS_DLSEARCH_PATH])dnl ++AC_REQUIRE([LT_LIB_DLLOAD])dnl ++AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl ++AC_REQUIRE([LT_FUNC_DLSYM_USCORE])dnl ++AC_REQUIRE([LT_SYS_DLOPEN_DEPLIBS])dnl ++AC_REQUIRE([gl_FUNC_ARGZ])dnl ++ ++m4_require([_LT_CHECK_OBJDIR])dnl ++m4_require([_LT_HEADER_DLFCN])dnl ++m4_require([_LT_CHECK_DLPREOPEN])dnl ++m4_require([_LT_DECL_SED])dnl ++ ++dnl Don't require this, or it will be expanded earlier than the code ++dnl that sets the variables it relies on: ++_LT_ENABLE_INSTALL ++ ++dnl _LTDL_MODE specific code must be called at least once: ++_LTDL_MODE_DISPATCH ++ ++# In order that ltdl.c can compile, find out the first AC_CONFIG_HEADERS ++# the user used. This is so that ltdl.h can pick up the parent projects ++# config.h file, The first file in AC_CONFIG_HEADERS must contain the ++# definitions required by ltdl.c. ++# FIXME: Remove use of undocumented AC_LIST_HEADERS (2.59 compatibility). ++AC_CONFIG_COMMANDS_PRE([dnl ++m4_pattern_allow([^LT_CONFIG_H$])dnl ++m4_ifset([AH_HEADER], ++ [LT_CONFIG_H=AH_HEADER], ++ [m4_ifset([AC_LIST_HEADERS], ++ [LT_CONFIG_H=`echo "AC_LIST_HEADERS" | $SED 's,^[[ ]]*,,;s,[[ :]].*$,,'`], ++ [])])]) ++AC_SUBST([LT_CONFIG_H]) ++ ++AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h], ++ [], [], [AC_INCLUDES_DEFAULT]) ++ ++AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])]) ++AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])]) ++ ++m4_pattern_allow([LT_LIBEXT])dnl ++AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension]) ++ ++name= ++eval "lt_libprefix=\"$libname_spec\"" ++m4_pattern_allow([LT_LIBPREFIX])dnl ++AC_DEFINE_UNQUOTED([LT_LIBPREFIX],["$lt_libprefix"],[The archive prefix]) ++ ++name=ltdl ++eval "LTDLOPEN=\"$libname_spec\"" ++AC_SUBST([LTDLOPEN]) ++])# _LTDL_SETUP ++ ++ ++# _LT_ENABLE_INSTALL ++# ------------------ ++m4_define([_LT_ENABLE_INSTALL], ++[AC_ARG_ENABLE([ltdl-install], ++ [AS_HELP_STRING([--enable-ltdl-install], [install libltdl])]) ++ ++case ,${enable_ltdl_install},${enable_ltdl_convenience} in ++ *yes*) ;; ++ *) enable_ltdl_convenience=yes ;; ++esac ++ ++m4_ifdef([AM_CONDITIONAL], ++[AM_CONDITIONAL(INSTALL_LTDL, test x"${enable_ltdl_install-no}" != xno) ++ AM_CONDITIONAL(CONVENIENCE_LTDL, test x"${enable_ltdl_convenience-no}" != xno)]) ++])# _LT_ENABLE_INSTALL ++ ++ ++# LT_SYS_DLOPEN_DEPLIBS ++# --------------------- ++AC_DEFUN([LT_SYS_DLOPEN_DEPLIBS], ++[AC_REQUIRE([AC_CANONICAL_HOST])dnl ++AC_CACHE_CHECK([whether deplibs are loaded by dlopen], ++ [lt_cv_sys_dlopen_deplibs], ++ [# PORTME does your system automatically load deplibs for dlopen? ++ # or its logical equivalent (e.g. shl_load for HP-UX < 11) ++ # For now, we just catch OSes we know something about -- in the ++ # future, we'll try test this programmatically. ++ lt_cv_sys_dlopen_deplibs=unknown ++ case $host_os in ++ aix3*|aix4.1.*|aix4.2.*) ++ # Unknown whether this is true for these versions of AIX, but ++ # we want this `case' here to explicitly catch those versions. ++ lt_cv_sys_dlopen_deplibs=unknown ++ ;; ++ aix[[4-9]]*) ++ lt_cv_sys_dlopen_deplibs=yes ++ ;; ++ amigaos*) ++ case $host_cpu in ++ powerpc) ++ lt_cv_sys_dlopen_deplibs=no ++ ;; ++ esac ++ ;; ++ darwin*) ++ # Assuming the user has installed a libdl from somewhere, this is true ++ # If you are looking for one http://www.opendarwin.org/projects/dlcompat ++ lt_cv_sys_dlopen_deplibs=yes ++ ;; ++ freebsd* | dragonfly*) ++ lt_cv_sys_dlopen_deplibs=yes ++ ;; ++ gnu* | linux* | k*bsd*-gnu | kopensolaris*-gnu) ++ # GNU and its variants, using gnu ld.so (Glibc) ++ lt_cv_sys_dlopen_deplibs=yes ++ ;; ++ hpux10*|hpux11*) ++ lt_cv_sys_dlopen_deplibs=yes ++ ;; ++ interix*) ++ lt_cv_sys_dlopen_deplibs=yes ++ ;; ++ irix[[12345]]*|irix6.[[01]]*) ++ # Catch all versions of IRIX before 6.2, and indicate that we don't ++ # know how it worked for any of those versions. ++ lt_cv_sys_dlopen_deplibs=unknown ++ ;; ++ irix*) ++ # The case above catches anything before 6.2, and it's known that ++ # at 6.2 and later dlopen does load deplibs. ++ lt_cv_sys_dlopen_deplibs=yes ++ ;; ++ netbsd*) ++ lt_cv_sys_dlopen_deplibs=yes ++ ;; ++ openbsd*) ++ lt_cv_sys_dlopen_deplibs=yes ++ ;; ++ osf[[1234]]*) ++ # dlopen did load deplibs (at least at 4.x), but until the 5.x series, ++ # it did *not* use an RPATH in a shared library to find objects the ++ # library depends on, so we explicitly say `no'. ++ lt_cv_sys_dlopen_deplibs=no ++ ;; ++ osf5.0|osf5.0a|osf5.1) ++ # dlopen *does* load deplibs and with the right loader patch applied ++ # it even uses RPATH in a shared library to search for shared objects ++ # that the library depends on, but there's no easy way to know if that ++ # patch is installed. Since this is the case, all we can really ++ # say is unknown -- it depends on the patch being installed. If ++ # it is, this changes to `yes'. Without it, it would be `no'. ++ lt_cv_sys_dlopen_deplibs=unknown ++ ;; ++ osf*) ++ # the two cases above should catch all versions of osf <= 5.1. Read ++ # the comments above for what we know about them. ++ # At > 5.1, deplibs are loaded *and* any RPATH in a shared library ++ # is used to find them so we can finally say `yes'. ++ lt_cv_sys_dlopen_deplibs=yes ++ ;; ++ qnx*) ++ lt_cv_sys_dlopen_deplibs=yes ++ ;; ++ solaris*) ++ lt_cv_sys_dlopen_deplibs=yes ++ ;; ++ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ libltdl_cv_sys_dlopen_deplibs=yes ++ ;; ++ esac ++ ]) ++if test "$lt_cv_sys_dlopen_deplibs" != yes; then ++ AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1], ++ [Define if the OS needs help to load dependent libraries for dlopen().]) ++fi ++])# LT_SYS_DLOPEN_DEPLIBS ++ ++# Old name: ++AU_ALIAS([AC_LTDL_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS]) ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], []) ++ ++ ++# LT_SYS_MODULE_EXT ++# ----------------- ++AC_DEFUN([LT_SYS_MODULE_EXT], ++[m4_require([_LT_SYS_DYNAMIC_LINKER])dnl ++AC_CACHE_CHECK([which extension is used for runtime loadable modules], ++ [libltdl_cv_shlibext], ++[ ++module=yes ++eval libltdl_cv_shlibext=$shrext_cmds ++ ]) ++if test -n "$libltdl_cv_shlibext"; then ++ m4_pattern_allow([LT_MODULE_EXT])dnl ++ AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"], ++ [Define to the extension used for runtime loadable modules, say, ".so".]) ++fi ++])# LT_SYS_MODULE_EXT ++ ++# Old name: ++AU_ALIAS([AC_LTDL_SHLIBEXT], [LT_SYS_MODULE_EXT]) ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([AC_LTDL_SHLIBEXT], []) ++ ++ ++# LT_SYS_MODULE_PATH ++# ------------------ ++AC_DEFUN([LT_SYS_MODULE_PATH], ++[m4_require([_LT_SYS_DYNAMIC_LINKER])dnl ++AC_CACHE_CHECK([which variable specifies run-time module search path], ++ [lt_cv_module_path_var], [lt_cv_module_path_var="$shlibpath_var"]) ++if test -n "$lt_cv_module_path_var"; then ++ m4_pattern_allow([LT_MODULE_PATH_VAR])dnl ++ AC_DEFINE_UNQUOTED([LT_MODULE_PATH_VAR], ["$lt_cv_module_path_var"], ++ [Define to the name of the environment variable that determines the run-time module search path.]) ++fi ++])# LT_SYS_MODULE_PATH ++ ++# Old name: ++AU_ALIAS([AC_LTDL_SHLIBPATH], [LT_SYS_MODULE_PATH]) ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([AC_LTDL_SHLIBPATH], []) ++ ++ ++# LT_SYS_DLSEARCH_PATH ++# -------------------- ++AC_DEFUN([LT_SYS_DLSEARCH_PATH], ++[m4_require([_LT_SYS_DYNAMIC_LINKER])dnl ++AC_CACHE_CHECK([for the default library search path], ++ [lt_cv_sys_dlsearch_path], ++ [lt_cv_sys_dlsearch_path="$sys_lib_dlsearch_path_spec"]) ++if test -n "$lt_cv_sys_dlsearch_path"; then ++ sys_dlsearch_path= ++ for dir in $lt_cv_sys_dlsearch_path; do ++ if test -z "$sys_dlsearch_path"; then ++ sys_dlsearch_path="$dir" ++ else ++ sys_dlsearch_path="$sys_dlsearch_path$PATH_SEPARATOR$dir" ++ fi ++ done ++ m4_pattern_allow([LT_DLSEARCH_PATH])dnl ++ AC_DEFINE_UNQUOTED([LT_DLSEARCH_PATH], ["$sys_dlsearch_path"], ++ [Define to the system default library search path.]) ++fi ++])# LT_SYS_DLSEARCH_PATH ++ ++# Old name: ++AU_ALIAS([AC_LTDL_SYSSEARCHPATH], [LT_SYS_DLSEARCH_PATH]) ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([AC_LTDL_SYSSEARCHPATH], []) ++ ++ ++# _LT_CHECK_DLPREOPEN ++# ------------------- ++m4_defun([_LT_CHECK_DLPREOPEN], ++[m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl ++AC_CACHE_CHECK([whether libtool supports -dlopen/-dlpreopen], ++ [libltdl_cv_preloaded_symbols], ++ [if test -n "$lt_cv_sys_global_symbol_pipe"; then ++ libltdl_cv_preloaded_symbols=yes ++ else ++ libltdl_cv_preloaded_symbols=no ++ fi ++ ]) ++if test x"$libltdl_cv_preloaded_symbols" = xyes; then ++ AC_DEFINE([HAVE_PRELOADED_SYMBOLS], [1], ++ [Define if libtool can extract symbol lists from object files.]) ++fi ++])# _LT_CHECK_DLPREOPEN ++ ++ ++# LT_LIB_DLLOAD ++# ------------- ++AC_DEFUN([LT_LIB_DLLOAD], ++[m4_pattern_allow([^LT_DLLOADERS$]) ++LT_DLLOADERS= ++AC_SUBST([LT_DLLOADERS]) ++ ++AC_LANG_PUSH([C]) ++ ++LIBADD_DLOPEN= ++AC_SEARCH_LIBS([dlopen], [dl], ++ [AC_DEFINE([HAVE_LIBDL], [1], ++ [Define if you have the libdl library or equivalent.]) ++ if test "$ac_cv_search_dlopen" != "none required" ; then ++ LIBADD_DLOPEN="-ldl" ++ fi ++ libltdl_cv_lib_dl_dlopen="yes" ++ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"], ++ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if HAVE_DLFCN_H ++# include ++#endif ++ ]], [[dlopen(0, 0);]])], ++ [AC_DEFINE([HAVE_LIBDL], [1], ++ [Define if you have the libdl library or equivalent.]) ++ libltdl_cv_func_dlopen="yes" ++ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"], ++ [AC_CHECK_LIB([svld], [dlopen], ++ [AC_DEFINE([HAVE_LIBDL], [1], ++ [Define if you have the libdl library or equivalent.]) ++ LIBADD_DLOPEN="-lsvld" libltdl_cv_func_dlopen="yes" ++ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"])])]) ++if test x"$libltdl_cv_func_dlopen" = xyes || test x"$libltdl_cv_lib_dl_dlopen" = xyes ++then ++ lt_save_LIBS="$LIBS" ++ LIBS="$LIBS $LIBADD_DLOPEN" ++ AC_CHECK_FUNCS([dlerror]) ++ LIBS="$lt_save_LIBS" ++fi ++AC_SUBST([LIBADD_DLOPEN]) ++ ++LIBADD_SHL_LOAD= ++AC_CHECK_FUNC([shl_load], ++ [AC_DEFINE([HAVE_SHL_LOAD], [1], ++ [Define if you have the shl_load function.]) ++ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"], ++ [AC_CHECK_LIB([dld], [shl_load], ++ [AC_DEFINE([HAVE_SHL_LOAD], [1], ++ [Define if you have the shl_load function.]) ++ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la" ++ LIBADD_SHL_LOAD="-ldld"])]) ++AC_SUBST([LIBADD_SHL_LOAD]) ++ ++case $host_os in ++darwin[[1567]].*) ++# We only want this for pre-Mac OS X 10.4. ++ AC_CHECK_FUNC([_dyld_func_lookup], ++ [AC_DEFINE([HAVE_DYLD], [1], ++ [Define if you have the _dyld_func_lookup function.]) ++ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dyld.la"]) ++ ;; ++beos*) ++ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}load_add_on.la" ++ ;; ++cygwin* | mingw* | os2* | pw32*) ++ AC_CHECK_DECLS([cygwin_conv_path], [], [], [[#include ]]) ++ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}loadlibrary.la" ++ ;; ++esac ++ ++AC_CHECK_LIB([dld], [dld_link], ++ [AC_DEFINE([HAVE_DLD], [1], ++ [Define if you have the GNU dld library.]) ++ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dld_link.la"]) ++AC_SUBST([LIBADD_DLD_LINK]) ++ ++m4_pattern_allow([^LT_DLPREOPEN$]) ++LT_DLPREOPEN= ++if test -n "$LT_DLLOADERS" ++then ++ for lt_loader in $LT_DLLOADERS; do ++ LT_DLPREOPEN="$LT_DLPREOPEN-dlpreopen $lt_loader " ++ done ++ AC_DEFINE([HAVE_LIBDLLOADER], [1], ++ [Define if libdlloader will be built on this platform]) ++fi ++AC_SUBST([LT_DLPREOPEN]) ++ ++dnl This isn't used anymore, but set it for backwards compatibility ++LIBADD_DL="$LIBADD_DLOPEN $LIBADD_SHL_LOAD" ++AC_SUBST([LIBADD_DL]) ++ ++AC_LANG_POP ++])# LT_LIB_DLLOAD ++ ++# Old name: ++AU_ALIAS([AC_LTDL_DLLIB], [LT_LIB_DLLOAD]) ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([AC_LTDL_DLLIB], []) ++ ++ ++# LT_SYS_SYMBOL_USCORE ++# -------------------- ++# does the compiler prefix global symbols with an underscore? ++AC_DEFUN([LT_SYS_SYMBOL_USCORE], ++[m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl ++AC_CACHE_CHECK([for _ prefix in compiled symbols], ++ [lt_cv_sys_symbol_underscore], ++ [lt_cv_sys_symbol_underscore=no ++ cat > conftest.$ac_ext <<_LT_EOF ++void nm_test_func(){} ++int main(){nm_test_func;return 0;} ++_LT_EOF ++ if AC_TRY_EVAL(ac_compile); then ++ # Now try to grab the symbols. ++ ac_nlist=conftest.nm ++ if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then ++ # See whether the symbols have a leading underscore. ++ if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then ++ lt_cv_sys_symbol_underscore=yes ++ else ++ if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then ++ : ++ else ++ echo "configure: cannot find nm_test_func in $ac_nlist" >&AS_MESSAGE_LOG_FD ++ fi ++ fi ++ else ++ echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD ++ fi ++ else ++ echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD ++ cat conftest.c >&AS_MESSAGE_LOG_FD ++ fi ++ rm -rf conftest* ++ ]) ++ sys_symbol_underscore=$lt_cv_sys_symbol_underscore ++ AC_SUBST([sys_symbol_underscore]) ++])# LT_SYS_SYMBOL_USCORE ++ ++# Old name: ++AU_ALIAS([AC_LTDL_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE]) ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([AC_LTDL_SYMBOL_USCORE], []) ++ ++ ++# LT_FUNC_DLSYM_USCORE ++# -------------------- ++AC_DEFUN([LT_FUNC_DLSYM_USCORE], ++[AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl ++if test x"$lt_cv_sys_symbol_underscore" = xyes; then ++ if test x"$libltdl_cv_func_dlopen" = xyes || ++ test x"$libltdl_cv_lib_dl_dlopen" = xyes ; then ++ AC_CACHE_CHECK([whether we have to add an underscore for dlsym], ++ [libltdl_cv_need_uscore], ++ [libltdl_cv_need_uscore=unknown ++ save_LIBS="$LIBS" ++ LIBS="$LIBS $LIBADD_DLOPEN" ++ _LT_TRY_DLOPEN_SELF( ++ [libltdl_cv_need_uscore=no], [libltdl_cv_need_uscore=yes], ++ [], [libltdl_cv_need_uscore=cross]) ++ LIBS="$save_LIBS" ++ ]) ++ fi ++fi ++ ++if test x"$libltdl_cv_need_uscore" = xyes; then ++ AC_DEFINE([NEED_USCORE], [1], ++ [Define if dlsym() requires a leading underscore in symbol names.]) ++fi ++])# LT_FUNC_DLSYM_USCORE ++ ++# Old name: ++AU_ALIAS([AC_LTDL_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE]) ++dnl aclocal-1.4 backwards compatibility: ++dnl AC_DEFUN([AC_LTDL_DLSYM_USCORE], []) ++ + # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation +@@ -588,6 +1542,27 @@ if test x"${install_sh}" != xset; then + 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 + +@@ -1025,14 +2000,17 @@ AC_SUBST([am__tar]) + AC_SUBST([am__untar]) + ]) # _AM_PROG_TAR + +-m4_include([../config/asmcfi.m4]) +-m4_include([../config/depstand.m4]) +-m4_include([../config/lead-dot.m4]) +-m4_include([../config/multi.m4]) +-m4_include([../config/override.m4]) +-m4_include([../libtool.m4]) +-m4_include([../ltoptions.m4]) +-m4_include([../ltsugar.m4]) +-m4_include([../ltversion.m4]) +-m4_include([../lt~obsolete.m4]) ++m4_include([m4/asmcfi.m4]) ++m4_include([m4/ax_cc_maxopt.m4]) ++m4_include([m4/ax_cflags_warn_all.m4]) ++m4_include([m4/ax_compiler_vendor.m4]) ++m4_include([m4/ax_configure_args.m4]) ++m4_include([m4/ax_enable_builddir.m4]) ++m4_include([m4/ax_gcc_archflag.m4]) ++m4_include([m4/ax_gcc_x86_cpuid.m4]) ++m4_include([m4/libtool.m4]) ++m4_include([m4/ltoptions.m4]) ++m4_include([m4/ltsugar.m4]) ++m4_include([m4/ltversion.m4]) ++m4_include([m4/lt~obsolete.m4]) + m4_include([acinclude.m4]) diff --git a/src/sparc/v9.S b/src/sparc/v9.S index 489ff02..bf31a2b 100644 --- a/src/sparc/v9.S +++ b/src/sparc/v9.S @@ -32,7 +32,7 @@ /* Only compile this in for 64bit builds, because otherwise the object file will have inproper architecture due to used instructions. */ -#define STACKFRAME 128 /* Minimum stack framesize for SPARC */ +#define STACKFRAME 176 /* Minimum stack framesize for SPARC 64-bit */ #define STACK_BIAS 2047 #define ARGS (128) /* Offset of register area in frame */ diff --git a/src/x86/ffi.c b/src/x86/ffi.c index 9343c26..f643b34 100644 --- a/src/x86/ffi.c +++ b/src/x86/ffi.c @@ -426,6 +426,8 @@ unsigned int FFI_HIDDEN ffi_closure_SYSV_inner (ffi_closure *, void **, void *) void FFI_HIDDEN ffi_closure_raw_SYSV (ffi_raw_closure *) __attribute__ ((regparm(1))); #ifdef X86_WIN32 +void FFI_HIDDEN ffi_closure_raw_THISCALL (ffi_raw_closure *) + __attribute__ ((regparm(1))); void FFI_HIDDEN ffi_closure_STDCALL (ffi_closure *) __attribute__ ((regparm(1))); void FFI_HIDDEN ffi_closure_THISCALL (ffi_closure *) @@ -593,7 +595,7 @@ ffi_prep_incoming_args_SYSV(char *stack, void **rvalue, void **avalue, { unsigned char *__tramp = (unsigned char*)(TRAMP); \ unsigned int __fun = (unsigned int)(FUN); \ unsigned int __ctx = (unsigned int)(CTX); \ - unsigned int __dis = __fun - (__ctx + 22); \ + unsigned int __dis = __fun - (__ctx + 49); \ unsigned short __size = (unsigned short)(SIZE); \ *(unsigned int *) &__tramp[0] = 0x8324048b; /* mov (%esp), %eax */ \ *(unsigned int *) &__tramp[4] = 0x4c890cec; /* sub $12, %esp */ \ @@ -699,6 +701,9 @@ ffi_prep_raw_closure_loc (ffi_raw_closure* closure, int i; if (cif->abi != FFI_SYSV) { +#ifdef X86_WIN32 + if (cif->abi != FFI_THISCALL) +#endif return FFI_BAD_ABI; } @@ -713,10 +718,20 @@ ffi_prep_raw_closure_loc (ffi_raw_closure* closure, FFI_ASSERT (cif->arg_types[i]->type != FFI_TYPE_LONGDOUBLE); } - +#ifdef X86_WIN32 + if (cif->abi == FFI_SYSV) + { +#endif FFI_INIT_TRAMPOLINE (&closure->tramp[0], &ffi_closure_raw_SYSV, codeloc); - +#ifdef X86_WIN32 + } + else if (cif->abi == FFI_THISCALL) + { + FFI_INIT_TRAMPOLINE_THISCALL (&closure->tramp[0], &ffi_closure_raw_THISCALL, + codeloc, cif->bytes); + } +#endif closure->cif = cif; closure->user_data = user_data; closure->fun = fun; @@ -761,7 +776,7 @@ ffi_raw_call(ffi_cif *cif, void (*fn)(void), void *rvalue, ffi_raw *fake_avalue) #ifdef X86_WIN32 case FFI_SYSV: case FFI_STDCALL: - ffi_call_win32(ffi_prep_args, &ecif, cif->abi, cif->bytes, cif->flags, + ffi_call_win32(ffi_prep_args_raw, &ecif, cif->abi, cif->bytes, cif->flags, ecif.rvalue, fn); break; case FFI_THISCALL: @@ -789,7 +804,7 @@ ffi_raw_call(ffi_cif *cif, void (*fn)(void), void *rvalue, ffi_raw *fake_avalue) cif->abi = abi = FFI_THISCALL; if (passed_regs < 1 && abi == FFI_THISCALL) cif->abi = abi = FFI_STDCALL; - ffi_call_win32(ffi_prep_args, &ecif, abi, cif->bytes, cif->flags, + ffi_call_win32(ffi_prep_args_raw, &ecif, abi, cif->bytes, cif->flags, ecif.rvalue, fn); } break; diff --git a/src/x86/win32.S b/src/x86/win32.S index 47629fe..7eec4f3 100644 --- a/src/x86/win32.S +++ b/src/x86/win32.S @@ -264,6 +264,18 @@ ffi_closure_SYSV ENDP #define RAW_CLOSURE_USER_DATA_OFFSET (RAW_CLOSURE_FUN_OFFSET + 4) #define CIF_FLAGS_OFFSET 20 +ffi_closure_raw_THISCALL PROC NEAR + push ebp + mov ebp, esp + push esi + sub esp, 36 + mov esi, [eax + RAW_CLOSURE_CIF_OFFSET] ;; closure->cif + mov edx, [eax + RAW_CLOSURE_USER_DATA_OFFSET] ;; closure->user_data + mov [esp + 12], edx + lea edx, [ebp + 12], edx + jmp stubraw +ffi_closure_raw_SYSV ENDP + ffi_closure_raw_SYSV PROC NEAR USES esi ;; the ffi_closure ctx is passed in eax by the trampoline. @@ -272,6 +284,7 @@ ffi_closure_raw_SYSV PROC NEAR USES esi mov edx, [eax + RAW_CLOSURE_USER_DATA_OFFSET] ;; closure->user_data mov [esp + 12], edx ;; user_data lea edx, [ebp + 8] +stubraw: mov [esp + 8], edx ;; raw_args lea edx, [ebp - 24] mov [esp + 4], edx ;; &res @@ -722,7 +735,21 @@ _ffi_closure_SYSV: #define RAW_CLOSURE_FUN_OFFSET (RAW_CLOSURE_CIF_OFFSET + 4) #define RAW_CLOSURE_USER_DATA_OFFSET (RAW_CLOSURE_FUN_OFFSET + 4) #define CIF_FLAGS_OFFSET 20 - + .balign 16 + .globl _ffi_closure_raw_THISCALL +#ifndef __OS2__ + .def _ffi_closure_raw_THISCALL; .scl 2; .type 32; .endef +#endif +_ffi_closure_raw_THISCALL: + pushl %ebp + movl %esp, %ebp + pushl %esi + subl $36, %esp + movl RAW_CLOSURE_CIF_OFFSET(%eax), %esi /* closure->cif */ + movl RAW_CLOSURE_USER_DATA_OFFSET(%eax), %edx /* closure->user_data */ + movl %edx, 12(%esp) /* user_data */ + leal 12(%ebp), %edx /* __builtin_dwarf_cfa () */ + jmp .stubraw # This assumes we are using gas. .balign 16 .globl _ffi_closure_raw_SYSV @@ -742,6 +769,7 @@ _ffi_closure_raw_SYSV: movl RAW_CLOSURE_USER_DATA_OFFSET(%eax), %edx /* closure->user_data */ movl %edx, 12(%esp) /* user_data */ leal 8(%ebp), %edx /* __builtin_dwarf_cfa () */ +.stubraw: movl %edx, 8(%esp) /* raw_args */ leal -24(%ebp), %edx movl %edx, 4(%esp) /* &res */ -- 2.7.4