* backupfile.c, dirfd.h, fts.c, getcwd.c, glob.c, glob_.h:
[gnulib.git] / m4 / glob.m4
1 # glob.m4 serial 5
2 dnl Copyright (C) 2005, 2006 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 # The glob module assumes you want GNU glob, with glob_pattern_p etc,
8 # rather than vanilla POSIX glob.  This means your code should
9 # always include <glob.h> for the glob prototypes.
10
11 AC_DEFUN([gl_GLOB_SUBSTITUTE],
12 [
13   gl_PREREQ_GLOB
14
15   GLOB_H=glob.h
16   AC_LIBSOURCES([glob.c, glob_.h, glob-libc.h])
17   AC_LIBOBJ([glob])
18   AC_SUBST([GLOB_H])
19 ])
20
21 AC_DEFUN([gl_GLOB],
22 [ GLOB_H=
23   AC_CHECK_HEADERS([glob.h], [], [GLOB_H=glob.h])
24
25   if test -z "$GLOB_H"; then
26     AC_CACHE_CHECK([for GNU glob interface version 1],
27       [gl_cv_gnu_glob_interface_version_1],
28 [     AC_COMPILE_IFELSE(
29 [[#include <gnu-versions.h>
30 char a[_GNU_GLOB_INTERFACE_VERSION == 1 ? 1 : -1];]],
31         [gl_cv_gnu_glob_interface_version_1=yes],
32         [gl_cv_gnu_glob_interface_version_1=no])])
33
34     if test "$gl_cv_gnu_glob_interface_version_1" = "no"; then
35       GLOB_H=glob.h
36     fi
37   fi
38
39   if test -z "$GLOB_H"; then
40     AC_CACHE_CHECK([whether glob lists broken symlinks],
41                    [gl_cv_glob_lists_symlinks],
42 [     if ln -s conf-doesntexist conf$$-globtest 2>/dev/null; then
43         gl_cv_glob_lists_symlinks=maybe
44       else
45         # If we can't make a symlink, then we cannot test this issue.  Be
46         # pessimistic about this.
47         gl_cv_glob_lists_symlinks=no
48       fi
49
50       if test $gl_cv_glob_lists_symlinks = maybe; then
51         AC_RUN_IFELSE(
52 AC_LANG_PROGRAM(
53 [[#include <stddef.h>
54 #include <glob.h>]],
55 [[glob_t found;
56 if (glob ("conf*-globtest", 0, NULL, &found) == GLOB_NOMATCH) return 1;]]),
57           [gl_cv_glob_lists_symlinks=yes],
58           [gl_cv_glob_lists_symlinks=no], [gl_cv_glob_lists_symlinks=no])
59       fi])
60
61     if test $gl_cv_glob_lists_symlinks = no; then
62       GLOB_H=glob.h
63     fi
64   fi
65
66   rm -f conf$$-globtest
67
68   if test -n "$GLOB_H"; then
69     gl_GLOB_SUBSTITUTE
70   fi
71 ])
72
73 # Prerequisites of lib/glob.*.
74 AC_DEFUN([gl_PREREQ_GLOB],
75 [ AC_REQUIRE([gl_CHECK_TYPE_STRUCT_DIRENT_D_TYPE])dnl
76   AC_REQUIRE([AC_GNU_SOURCE])dnl
77   AC_CHECK_HEADERS_ONCE([sys/cdefs.h unistd.h])dnl
78   AC_CHECK_FUNCS_ONCE([getlogin_r getpwnam_r])dnl
79   :])