-AC_INIT(libsysio, 0.1)
+AC_INIT(libsysio, 1.2)
-AC_CANONICAL_HOST
+AC_CANONICAL_SYSTEM
case "$host_os" in
+ aix*)
+ ;;
linux*)
;;
*)
;;
esac
-AM_INIT_AUTOMAKE([subdir-objects])
+AM_INIT_AUTOMAKE([subdir-objects 1.9 tar-ustar])
+AC_PROG_CC
AM_PROG_CC_C_O
-AC_PROG_CC
AC_PROG_RANLIB
AC_PROG_MAKE_SET
AC_HEADER_STDC
AC_HEADER_STAT
AC_HEADER_TIME
+if test ${target_cpu} == "powerpc64"; then
+ AC_MSG_WARN([set compiler with -m64])
+ CC="$CC -m64"
+fi
+
have_lib_dir=yes;
AC_ARG_WITH(lib-dir,
AC_HELP_STRING([--with-lib-dir=<sysio lib build directory>],
[with_defer_init_cwd=no])
AC_SUBST(DEFER_INIT_CWD)
+AC_ARG_WITH(tracing,
+ AC_HELP_STRING([--with-tracing],
+ [enable tracing support]),
+ [ case "${withval}" in
+ yes) TRACING=-DSYSIO_TRACING=1 ;;
+ no) ;;
+ *) AC_MSG_ERROR(bad value ${withval} for --with-tracing) ;;
+ esac],
+ [TRACING=-DSYSIO_TRACING=1])
+AC_SUBST(TRACING)
+
AC_ARG_WITH(cplant_yod,
AC_HELP_STRING([--with-cplant-yod],[build cplant yod I/O driver]),
[ case "${withval}" in
AC_DEFINE(HAVE_LUSTRE_HACK)
fi
+AC_ARG_WITH(alternate-symbols,
+ AC_HELP_STRING([--with-alternate-symbols@<:@=<qualifier>@:>@],
+ [Prepend standard, public, symbols with a unique qualifer]),
+ [ case "${withval}" in
+ yes) SYSIO_LABEL_NAMES=-DSYSIO_LABEL_NAMES=sysio_ ;;
+ no) ;;
+ *) SYSIO_LABEL_NAMES=-DSYSIO_LABEL_NAMES="${withval}" ;;
+ esac])
+AC_SUBST(SYSIO_LABEL_NAMES)
+
# We keep the original values in `$config_*' and never modify them, so we
# can write them unchanged into config.make. Everything else uses
# $machine, $vendor, and $os, and changes them whenever convenient.
machine="powerpc"
fi
-AC_MSG_CHECKING(if readlink returns ssize_t)
+case "$host_os" in
+ gnu* | linux*)
+ AC_DEFINE(_XOPEN_SOURCE, 600)
+ ;;
+ aix*)
+ # ... and always needed...
+ AC_DEFINE(__USE_LARGEFILE64)
+ AC_DEFINE(_LARGE_FILES)
+ AC_DEFINE(_LARGE_FILE_API)
+ AC_DEFINE(_ALL_SOURCE)
+ AC_DEFINE(_XOPEN_SOURCE_EXTENDED)
+ ;;
+esac
+
+AC_MSG_CHECKING(for symlink support)
AC_TRY_COMPILE([
- include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
],[
- ssize_t readlink(const char *, char *, size_t);
+#ifndef S_ISLNK
+#error
+#endif
],
- readlink_returns_ssize_t="yes",
- readlink_returns_ssize_t="yes"
+ symlink_support="yes",
+ symlink_support="no"
)
-AC_MSG_RESULT($readlink_returns_ssize_t)
-if test x$readlink_returns_ssize_t = xyes; then
- AC_DEFINE(HAVE_POSIX_1003_READLINK, 1, [readlink returns ssize_t])
+AC_MSG_RESULT($symlink_support)
+
+if test x$symlink_support = xyes; then
+ AC_MSG_CHECKING(if readlink returns int)
+ AC_TRY_COMPILE([
+#include <unistd.h>
+ ],[
+ extern int readlink(const char *, char *, size_t);
+ ],
+ readlink_returns_int="yes",
+ readlink_returns_int="no"
+ )
+ AC_MSG_RESULT($readlink_returns_int)
+ if test x$readlink_returns_int = no; then
+ AC_DEFINE(HAVE_POSIX_1003_READLINK,
+ 1,
+ [readlink returns ssize_t])
+ fi
fi
+AC_MSG_CHECKING(if readlink returns ssize_t)
+AC_TRY_COMPILE([
+ #include <unistd.h>
+],[
+ ssize_t readlink(const char *, char *, size_t);
+],[
+ AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_POSIX_1003_READLINK, 1, [readlink returns ssize_t])
+],[
+ AC_MSG_RESULT([no])
+])
+
# If we can't provoke the declaration of stat64 then we assume the
# environment supports 64-bit file support naturally. Beware!
AC_MSG_CHECKING(whether _LARGEFILE64_SOURCE definition is required)
AC_DEFINE(HAVE_GENERATION)
fi
+AC_MSG_CHECKING(for POSIX 2008 preadv)
+tmp_flags="$CFLAGS"
+CFLAGS="$CFLAGS -Wall -Werror"
+AC_TRY_COMPILE([
+#include <sys/uio.h>
+ssize_t preadv (int __fd, const struct iovec *__iovec,
+ int __count, off_t off)
+{
+ return 0;
+}
+],[
+],[
+AC_DEFINE(HAVE_POSIX2008_PREADV, 1, [POSIX 2008 preadv])
+AC_MSG_RESULT(yes)
+],[
+AC_MSG_RESULT(no)
+])
+CFLAGS="$tmp_flags"
+
+AC_MSG_CHECKING(for POSIX 2008 scandir)
+tmp_flags="$CFLAGS"
+CFLAGS="$CFLAGS -Wall -Werror"
+AC_TRY_COMPILE([
+#define _BSD_SOURCE
+
+#include <stdio.h>
+#include <dirent.h>
+
+int scandir(const char *dir,
+ struct dirent ***namelist,
+ int(*filter)(const struct dirent *),
+ int(*compar)(const struct dirent **,
+ const struct dirent **)
+ );
+
+],[
+], [
+AC_DEFINE(HAVE_POSIX2008_SCANDIR, 1, [POSIX 2008 scandir])
+AC_MSG_RESULT(yes)
+],[
+AC_MSG_RESULT(no)
+])
+CFLAGS="$tmp_flags"
+
+
+AC_MSG_CHECKING(for POSIX 2008 preadv)
+tmp_flags="$CFLAGS"
+CFLAGS="$CFLAGS -Wall -Werror"
+AC_TRY_COMPILE([
+#include <sys/uio.h>
+ssize_t preadv (int __fd, const struct iovec *__iovec,
+ int __count, off_t off)
+{
+ return 0;
+}
+],[
+],[
+AC_DEFINE(HAVE_POSIX2008_PREADV, 1, [POSIX 2008 preadv])
+AC_MSG_RESULT(yes)
+],[
+AC_MSG_RESULT(no)
+])
+CFLAGS="$tmp_flags"
+
+AC_MSG_CHECKING(for POSIX 2008 scandir)
+tmp_flags="$CFLAGS"
+CFLAGS="$CFLAGS -Wall -Werror"
+AC_TRY_COMPILE([
+#define _BSD_SOURCE
+
+#include <stdio.h>
+#include <dirent.h>
+
+int scandir(const char *dir,
+ struct dirent ***namelist,
+ int(*filter)(const struct dirent *),
+ int(*compar)(const struct dirent **,
+ const struct dirent **)
+ );
+
+],[
+], [
+AC_DEFINE(HAVE_POSIX2008_SCANDIR, 1, [POSIX 2008 scandir])
+AC_MSG_RESULT(yes)
+],[
+AC_MSG_RESULT(no)
+])
+CFLAGS="$tmp_flags"
+
+
AC_MSG_CHECKING(whether .text pseudo-op must be used)
-AC_CACHE_VAL(sysio_asm_dot_text, [dnl
+AC_CACHE_VAL(am_cv_sysio_asm_dot_text, [dnl
cat > conftest.s <<EOF
.text
EOF
- sysio_asm_dot_text=
+ am_cv_sysio_asm_dot_text=
if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
- sysio_asm_dot_text=.text
+ am_cv_sysio_asm_dot_text=.text
fi
rm -f conftest*])
-if test -z "$sysio_dot_text"; then
+if test -z "$am_cv_sysio_asm_dot_text"; then
AC_MSG_RESULT(no)
else
AC_MSG_RESULT(yes)
fi
AC_CACHE_CHECK(for assembler global-symbol directive,
- sysio_asm_global_directive, [dnl
-sysio_asm_global_directive=UNKNOWN
+ am_cv_sysio_asm_global_directive, [dnl
+am_cv_sysio_asm_global_directive=UNKNOWN
for ac_globl in .globl .global .EXPORT; do
cat > conftest.s <<EOF
- ${sysio_asm_dot_text}
+ ${am_cv_sysio_asm_dot_text}
${ac_globl} foo
foo:
EOF
if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
- sysio_asm_global_directive=${ac_globl}
+ am_cv_sysio_asm_global_directive=${ac_globl}
fi
rm -f conftest*
- test $sysio_asm_global_directive != UNKNOWN && break
+ test $am_cv_sysio_asm_global_directive != UNKNOWN && break
done])
-if test $sysio_asm_global_directive = UNKNOWN; then
+if test $am_cv_sysio_asm_global_directive = UNKNOWN; then
AC_MSG_ERROR(cannot determine asm global directive)
#else
-# AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${sysio_asm_global_directive})
+# AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${am_cv_sysio_asm_global_directive})
fi
AC_CACHE_CHECK(for .set assembler directive,
- sysio_asm_set_directive, [dnl
+ am_cv_sysio_asm_set_directive, [dnl
cat > conftest.s<<EOF
-${sysio_asm_dot_text}
+${am_cv_sysio_asm_dot_text}
foo:
.set bar, foo
-${sysio_asm_global_directive} bar
+${am_cv_sysio_asm_global_directive} bar
EOF
# The alpha-dec-osf1 assembler gives only a warning for `.set'
# (but it doesn't work), so we must do a linking check to be sure.
EOF
if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
-o conftest conftest.s conftest1.c 1>&AC_FD_CC 2>&AC_FD_CC; then
- sysio_asm_set_directive=yes
+ am_cv_sysio_asm_set_directive=yes
else
- sysio_asm_set_directive=no
+ am_cv_sysio_asm_set_directive=no
fi
rm -f conftest*])
-#if test $sysio_asm_set_directive = yes; then
+#if test $am_cv_sysio_asm_set_directive = yes; then
# AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
#fi
-AC_CACHE_CHECK(for assembler .weak directive, sysio_asm_weak_directive,
+AC_CACHE_CHECK(for assembler .weak directive, am_cv_sysio_asm_weak_directive,
[dnl
cat > conftest.s <<EOF
-${sysio_dot_text}
+${am_cv_sysio_asm_dot_text}
foo:
.weak foo
EOF
if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
- sysio_asm_weak_directive=yes
+ am_cv_sysio_asm_weak_directive=yes
else
- sysio_asm_weak_directive=no
+ am_cv_sysio_asm_weak_directive=no
fi
rm -f conftest*])
-if test $sysio_asm_weak_directive = no; then
+if test $am_cv_sysio_asm_weak_directive = no; then
AC_CACHE_CHECK(for assembler .weakext directive,
- sysio_asm_weakext_directive, [dnl
+ am_cv_sysio_asm_weakext_directive, [dnl
cat > conftest.s <<EOF
-${sysio_dot_text}
-${sysio_asm_global_directive} foo
+${am_cv_sysio_asm_dot_text}
+${am_cv_sysio_asm_global_directive} foo
foo:
.weakext bar foo
.weakext baz
-${sysio_asm_global_directive} baz
+${am_cv_sysio_asm_global_directive} baz
baz:
EOF
if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
- sysio_asm_weakext_directive=yes
+ am_cv_sysio_asm_weakext_directive=yes
else
- sysio_asm_weakext_directive=no
+ am_cv_sysio_asm_weakext_directive=no
fi
rm -f conftest*])
fi # no .weak
-if test x$sysio_asm_weak_directive = xyes; then
+if test x$am_cv_sysio_asm_weak_directive = xyes; then
AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
fi
-if test x$sysio_asm_weakext_directive = xyes; then
+if test x$am_cv_sysio_asm_weakext_directive = xyes; then
AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
fi