Home | History | Annotate | Line # | Download | only in m4
readlink.m4 revision 1.1.1.1
      1 # readlink.m4 serial 15
      2 dnl Copyright (C) 2003, 2007, 2009-2020 Free Software Foundation, Inc.
      3 dnl This file is free software; the Free Software Foundation
      4 dnl gives unlimited permission to copy and/or distribute it,
      5 dnl with or without modifications, as long as this notice is preserved.
      6 
      7 AC_DEFUN([gl_FUNC_READLINK],
      8 [
      9   AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
     10   AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
     11   AC_CHECK_FUNCS_ONCE([readlink])
     12   if test $ac_cv_func_readlink = no; then
     13     HAVE_READLINK=0
     14   else
     15     AC_CACHE_CHECK([whether readlink signature is correct],
     16       [gl_cv_decl_readlink_works],
     17       [AC_COMPILE_IFELSE(
     18          [AC_LANG_PROGRAM(
     19            [[#include <unistd.h>
     20       /* Cause compilation failure if original declaration has wrong type.  */
     21       ssize_t readlink (const char *, char *, size_t);]])],
     22          [gl_cv_decl_readlink_works=yes], [gl_cv_decl_readlink_works=no])])
     23     dnl Solaris 9 ignores trailing slash.
     24     dnl FreeBSD 7.2 dereferences only one level of links with trailing slash.
     25     AC_CACHE_CHECK([whether readlink handles trailing slash correctly],
     26       [gl_cv_func_readlink_works],
     27       [# We have readlink, so assume ln -s works.
     28        ln -s conftest.no-such conftest.link
     29        ln -s conftest.link conftest.lnk2
     30        AC_RUN_IFELSE(
     31          [AC_LANG_PROGRAM(
     32            [[#include <unistd.h>
     33 ]], [[char buf[20];
     34       return readlink ("conftest.lnk2/", buf, sizeof buf) != -1;]])],
     35          [gl_cv_func_readlink_works=yes], [gl_cv_func_readlink_works=no],
     36          [case "$host_os" in
     37                              # Guess yes on Linux systems.
     38             linux-* | linux) gl_cv_func_readlink_works="guessing yes" ;;
     39                              # Guess yes on glibc systems.
     40             *-gnu* | gnu*)   gl_cv_func_readlink_works="guessing yes" ;;
     41                              # If we don't know, obey --enable-cross-guesses.
     42             *)               gl_cv_func_readlink_works="$gl_cross_guess_normal" ;;
     43           esac
     44          ])
     45       rm -f conftest.link conftest.lnk2])
     46     case "$gl_cv_func_readlink_works" in
     47       *yes)
     48         if test "$gl_cv_decl_readlink_works" != yes; then
     49           REPLACE_READLINK=1
     50         fi
     51         ;;
     52       *)
     53         AC_DEFINE([READLINK_TRAILING_SLASH_BUG], [1], [Define to 1 if readlink
     54           fails to recognize a trailing slash.])
     55         REPLACE_READLINK=1
     56         ;;
     57     esac
     58   fi
     59 ])
     60 
     61 # Like gl_FUNC_READLINK, except prepare for separate compilation
     62 # (no REPLACE_READLINK, no AC_LIBOBJ).
     63 AC_DEFUN([gl_FUNC_READLINK_SEPARATE],
     64 [
     65   AC_CHECK_FUNCS_ONCE([readlink])
     66   gl_PREREQ_READLINK
     67 ])
     68 
     69 # Prerequisites of lib/readlink.c.
     70 AC_DEFUN([gl_PREREQ_READLINK],
     71 [
     72   :
     73 ])
     74