summaryrefslogtreecommitdiff
path: root/m4
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>1999-04-21 02:21:47 +0000
committerJim Meyering <jim@meyering.net>1999-04-21 02:21:47 +0000
commitc4a52014f7c9dfa4ff50c6fb05418d71219fd3cf (patch)
treee4dcae5701b44a3373b9cbfb0fa091868abf1d33 /m4
parentc7a0b8f429915148db0774bea09e37053bbac4f0 (diff)
downloadcoreutils-c4a52014f7c9dfa4ff50c6fb05418d71219fd3cf.tar.xz
Port to AIX and HP-UX. Support cross-compilation.
Diffstat (limited to 'm4')
-rw-r--r--m4/lfs.m4143
1 files changed, 96 insertions, 47 deletions
diff --git a/m4/lfs.m4 b/m4/lfs.m4
index 2a7a4fc62..5c7c7ee16 100644
--- a/m4/lfs.m4
+++ b/m4/lfs.m4
@@ -1,4 +1,4 @@
-#serial 2
+#serial 3
dnl The problem is that the default compilation flags in Solaris 2.6 won't
dnl let programs access large files; you need to tell the compiler that
@@ -8,50 +8,99 @@ dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html
dnl Written by Paul Eggert <eggert@twinsun.com>.
+dnl Internal subroutine of AC_LFS.
+dnl AC_LFS_FLAGS(FLAGSNAME)
+AC_DEFUN(AC_LFS_FLAGS,
+ [AC_CACHE_CHECK([for $1 value to request large file support], ac_cv_lfs_$1,
+ [ac_cv_lfs_$1=`($GETCONF LFS_$1) 2>/dev/null` || {
+ ac_cv_lfs_$1=no
+ ifelse($1, CFLAGS,
+ [case "$host_os" in
+ # IRIX 6.2 and later
+ irix6.[[2-9]]* | irix6.1[[0-9]]* | irix[[7-9]].* | irix[[1-9]][[0-9]]*)
+ if test "$GCC" != yes; then
+ ac_cv_lfs_CFLAGS=-n32
+ fi
+ ac_save_CC="$CC"
+ CC="$ac_save_CC $ac_cv_lfs_CFLAGS"
+ AC_TRY_LINK(, , , ac_cv_lfs_CFLAGS=no)
+ CC="$ac_save_CC"
+ esac])
+ }])])
+
+dnl Internal subroutine of AC_LFS.
+dnl AC_LFS_SPACE_APPEND(VAR, VAL)
+AC_DEFUN(AC_LFS_SPACE_APPEND,
+ [case $2 in
+ no) ;;
+ ?*)
+ case "[$]$1" in
+ '') $1=$2 ;;
+ *) $1=[$]$1' '$2 ;;
+ esac ;;
+ esac])
+
+dnl Internal subroutine of AC_LFS.
+dnl AC_LFS_MACRO_VALUE(C-MACRO, CACHE-VAR, COMMENT, CODE-TO-SET-DEFAULT)
+AC_DEFUN(AC_LFS_MACRO_VALUE,
+ [AC_CACHE_CHECK([for $1], $2,
+ [[$2=no
+ $4
+ for ac_flag in $ac_cv_lfs_CFLAGS no; do
+ case "$ac_flag" in
+ -D$1)
+ $2=1 ;;
+ -D$1=*)
+ $2=`expr " $ac_flag" : '[^=]*=\(.*\)'` ;;
+ esac
+ done]])
+ if test "[$]$2" != no; then
+ AC_DEFINE_UNQUOTED([$1], [$]$2, [$3])
+ fi])
+
AC_DEFUN(AC_LFS,
-[dnl
- # If available, prefer support for large files unless the user specified
- # one of the CPPFLAGS, LDFLAGS, or LIBS variables.
- AC_MSG_CHECKING(whether large file support needs explicit enabling)
- ac_getconfs=''
- ac_result=yes
- ac_set=''
- ac_shellvars='CPPFLAGS LDFLAGS LIBS'
- for ac_shellvar in $ac_shellvars; do
- case $ac_shellvar in
- CPPFLAGS) ac_lfsvar=LFS_CFLAGS ;;
- *) ac_lfsvar=LFS_$ac_shellvar ;;
- esac
- eval test '"${'$ac_shellvar'+set}"' = set && ac_set=$ac_shellvar
- (getconf $ac_lfsvar) >/dev/null 2>&1 || { ac_result=no; break; }
- ac_getconf=`getconf $ac_lfsvar`
- ac_getconfs=$ac_getconfs$ac_getconf
- eval ac_test_$ac_shellvar=\$ac_getconf
- done
- case "$ac_result" in
- no)
- case "`(uname -s -r) 2>/dev/null`" in
- HP-UX' '?.10.[[2-9]][[0-9]]* | HP-UX' '?.1[[1-9]]* | HP-UX' '?.[[2-9]][[0-9]]*)
- # HP-UX 10.20 and later support large files,
- # but do not support `getconf LFS_CFLAGS'.
- ac_test_CPPFLAGS='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
- ac_test_LDFLAGS=
- ac_test_LIBS=
- ac_getconfs=nonempty
- ac_result=yes ;;
- esac ;;
- esac
- case "$ac_result$ac_getconfs" in
- yes) ac_result=no ;;
- esac
- case "$ac_result$ac_set" in
- yes?*) ac_result="yes, but $ac_set is already set, so use its settings"
- esac
- AC_MSG_RESULT($ac_result)
- case $ac_result in
- yes)
- for ac_shellvar in $ac_shellvars; do
- eval $ac_shellvar=\$ac_test_$ac_shellvar
- done ;;
- esac
-])
+ [AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_ARG_ENABLE(lfs,
+ [ --disable-lfs omit Large File Support])
+ if test "$enable_lfs" != no; then
+ AC_CHECK_TOOL(GETCONF, getconf)
+ AC_LFS_FLAGS(CFLAGS)
+ AC_LFS_FLAGS(LDFLAGS)
+ AC_LFS_FLAGS(LIBS)
+ for ac_flag in $ac_cv_lfs_CFLAGS no; do
+ case "$ac_flag" in
+ no) ;;
+ -D_FILE_OFFSET_BITS=*) ;;
+ -D_LARGEFILE_SOURCE | -D_LARGEFILE_SOURCE=*) ;;
+ -D_LARGE_FILES | -D_LARGE_FILES=*) ;;
+ -[[DI]]?* | -[[no]]32 | -n64)
+ AC_LFS_SPACE_APPEND(CPPFLAGS, "$ac_flag") ;;
+ *)
+ AC_LFS_SPACE_APPEND(CFLAGS, "$ac_flag") ;;
+ esac
+ done
+ AC_LFS_SPACE_APPEND(LDFLAGS, "$ac_cv_lfs_LDFLAGS")
+ AC_LFS_SPACE_APPEND(LIBS, "$ac_cv_lfs_LIBS")
+ AC_LFS_MACRO_VALUE(_FILE_OFFSET_BITS, ac_cv_file_offset_bits,
+ [Number of bits in a file offset, on hosts where this is settable. ],
+ [case "$host_os" in
+ # HP-UX 10.20 and later
+ hpux10.[2-9][0-9]* | hpux1[1-9]* | hpux[2-9][0-9]*)
+ ac_cv_file_offset_bits=64 ;;
+ esac])
+ AC_LFS_MACRO_VALUE(_LARGEFILE_SOURCE, ac_cv_largefile_source,
+ [Define to make fseeko etc. visible, on some hosts. ],
+ [case "$host_os" in
+ # HP-UX 10.20 and later
+ hpux10.[2-9][0-9]* | hpux1[1-9]* | hpux[2-9][0-9]*)
+ ac_cv_largefile_source=1 ;;
+ esac])
+ AC_LFS_MACRO_VALUE(_LARGE_FILES, ac_cv_large_files,
+ [Define for large files, on AIX-style hosts. ],
+ [case "$host_os" in
+ # AIX 4.2 and later
+ aix4.[2-9]* | aix4.1[0-9]* | aix[5-9].* | aix[1-9][0-9]*)
+ ac_cv_large_files=1 ;;
+ esac])
+ fi
+ ])