Blame m4/symlink.m4

Packit Service fdd496
# serial 6
Packit Service fdd496
# See if we need to provide symlink replacement.
Packit Service fdd496
Packit Service fdd496
dnl Copyright (C) 2009-2017 Free Software Foundation, Inc.
Packit Service fdd496
dnl This file is free software; the Free Software Foundation
Packit Service fdd496
dnl gives unlimited permission to copy and/or distribute it,
Packit Service fdd496
dnl with or without modifications, as long as this notice is preserved.
Packit Service fdd496
Packit Service fdd496
# Written by Eric Blake.
Packit Service fdd496
Packit Service fdd496
AC_DEFUN([gl_FUNC_SYMLINK],
Packit Service fdd496
[
Packit Service fdd496
  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
Packit Service fdd496
  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
Packit Service fdd496
  AC_CHECK_FUNCS_ONCE([symlink])
Packit Service fdd496
  dnl The best we can do on mingw is provide a dummy that always fails, so
Packit Service fdd496
  dnl that compilation can proceed with fewer ifdefs.  On FreeBSD 7.2, AIX 7.1,
Packit Service fdd496
  dnl and Solaris 9, we want to fix a bug with trailing slash handling.
Packit Service fdd496
  if test $ac_cv_func_symlink = no; then
Packit Service fdd496
    HAVE_SYMLINK=0
Packit Service fdd496
  else
Packit Service fdd496
    AC_CACHE_CHECK([whether symlink handles trailing slash correctly],
Packit Service fdd496
      [gl_cv_func_symlink_works],
Packit Service fdd496
      [AC_RUN_IFELSE(
Packit Service fdd496
         [AC_LANG_PROGRAM(
Packit Service fdd496
           [[#include <unistd.h>
Packit Service fdd496
           ]],
Packit Service fdd496
           [[int result = 0;
Packit Service fdd496
             if (!symlink ("a", "conftest.link/"))
Packit Service fdd496
               result |= 1;
Packit Service fdd496
             if (symlink ("conftest.f", "conftest.lnk2"))
Packit Service fdd496
               result |= 2;
Packit Service fdd496
             else if (!symlink ("a", "conftest.lnk2/"))
Packit Service fdd496
               result |= 4;
Packit Service fdd496
             return result;
Packit Service fdd496
           ]])],
Packit Service fdd496
         [gl_cv_func_symlink_works=yes], [gl_cv_func_symlink_works=no],
Packit Service fdd496
         [case "$host_os" in
Packit Service fdd496
                    # Guess yes on glibc systems.
Packit Service fdd496
            *-gnu*) gl_cv_func_symlink_works="guessing yes" ;;
Packit Service fdd496
                    # If we don't know, assume the worst.
Packit Service fdd496
            *)      gl_cv_func_symlink_works="guessing no" ;;
Packit Service fdd496
          esac
Packit Service fdd496
         ])
Packit Service fdd496
      rm -f conftest.f conftest.link conftest.lnk2])
Packit Service fdd496
    case "$gl_cv_func_symlink_works" in
Packit Service fdd496
      *yes) ;;
Packit Service fdd496
      *)
Packit Service fdd496
        REPLACE_SYMLINK=1
Packit Service fdd496
        ;;
Packit Service fdd496
    esac
Packit Service fdd496
  fi
Packit Service fdd496
])