Re: AC_FUNC_FSEEKO and optional execution

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

According to Russ Allbery on 3/22/2009 1:18 PM:
> Currently, this is done with:
> 
>     AC_FUNC_FSEEKO
>     if test x"$ac_cv_func_fseeko" != xyes ; then
>         INN_TYPE_FPOS_T_LARGE
>         AC_CHECK_DECLS([fseeko, ftello])
>         AC_LIBOBJ([fseeko])
>         AC_LIBOBJ([ftello])
>     fi
> 
> This stopped working with recent Autoconf (I think around 2.62, but I
> could be wrong).  AC_FUNC_FSEEKO used to set ac_cv_func_fseeko but
> stopped; now ac_cv_sys_largefile_source is set instead (and not to
> something as simple as yes or no).

AC_FUNC_FSEEKO was rewritten for 2.61, but a typo rendered it broken in
that release, so it didn't work again until 2.62.

> 
> This is exactly why I hate relying on cache variables.  :)

Relying on documented cache variables is fine.  But you are correct that
relying on undocumented cache variables tends to be problematic.

> 
> Could AC_FUNC_FSEEKO acquire ACTION_IF_FOUND and ACTION_IF_NOT_FOUND
> arguments so that I can implement this conditional probing and AC_LIBOBJ
> calls in a sane fashion without relying on undocumented and unsupported
> macro internals?

Why not ditch AC_FUNC_FSEEKO, and write a portable variant yourself?

AC_DEFUN([INN_FSEEKO],
[AC_REQUIRE([AC_SYS_LARGEFILE])dnl
AC_CACHE_CHECK([for fseeko], [inn_cv_func_fseeko],
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <sys/types.h> /* for off_t */
#include <stdio.h>
]], [[int (*fp) (FILE *, off_t, int) = fseeko;
      return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);]])]
  [inn_cv_func_fseeko=yes], [inn_cv_func_fseeko=no])])
if test x"$inn_cv_func_fseeko" != xyes ; then
  INN_TYPE_FPOS_T_LARGE
  AC_CHECK_DECLS([fseeko, ftello])
  AC_LIBOBJ([fseeko])
  AC_LIBOBJ([ftello])
fi
])

That said, if others agree with you that exporting ac_cv_func_fseeko for
compatibility is still worthwhile (it was dropped in commit 90fcd46
autoconf 2.60a-37), then we could probably modify AC_FUNC_FSEEKO to once
again set that variable to yes or no for 2.64 and beyond.

- --
Don't work too hard, make some time for fun as well!

Eric Blake             ebb9@xxxxxxx
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAknHbh8ACgkQ84KuGfSFAYA6OwCfeVoku0/b2IEcg8rVqY8Ha6zW
Mr8AoKx/OPW3jJJ5t4xsHZr1wk3wyE6b
=iKXx
-----END PGP SIGNATURE-----


_______________________________________________
Autoconf mailing list
Autoconf@xxxxxxx
http://lists.gnu.org/mailman/listinfo/autoconf

[Index of Archives]     [GCC Help]     [Kernel Discussion]     [RPM Discussion]     [Red Hat Development]     [Yosemite News]     [Linux USB]     [Samba]

  Powered by Linux