alloca cleanup: always include <alloca.h>.
[gnulib.git] / m4 / fnmatch.m4
index 708f9e6..ba2a88f 100644 (file)
@@ -1,9 +1,9 @@
 # Check for fnmatch.
 
 # This is a modified version of autoconf's AC_FUNC_FNMATCH.
-# This file should be removed after Autoconf 2.54 is required.
+# This file should be simplified after Autoconf 2.57 is required.
 
-# Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+# Copyright (C) 2000-2003 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -34,7 +34,9 @@ AC_DEFUN([_AC_FUNC_FNMATCH_IF],
    # Thanks to John Oleynick, Franc,ois Pinard, and Paul Eggert for this test.
    AC_RUN_IFELSE(
       [AC_LANG_PROGRAM(
-        [#include <fnmatch.h>
+        [
+#         include <stdlib.h>
+#         include <fnmatch.h>
 #         define y(a, b, c) (fnmatch (a, b, c) == 0)
 #         define n(a, b, c) (fnmatch (a, b, c) == FNM_NOMATCH)
          ],
@@ -71,17 +73,42 @@ AC_CHECK_DECLS([getenv])
 AC_CHECK_FUNCS([btowc mbsrtowcs mempcpy wmempcpy])
 AC_CHECK_HEADERS([wchar.h wctype.h])
 AC_LIBOBJ([fnmatch])
-AC_CONFIG_LINKS([lib/fnmatch.h:lib/fnmatch_.h])
-AC_DEFINE(fnmatch, rpl_fnmatch,
-          [Define to rpl_fnmatch if the replacement function should be used.])
+FNMATCH_H=fnmatch.h
 ])# _AC_LIBOBJ_FNMATCH
 
 
-# AC_FUNC_FNMATCH_GNU
-# -------------------
-AC_DEFUN([AC_FUNC_FNMATCH_GNU],
-[AC_REQUIRE([AC_GNU_SOURCE])
-_AC_FUNC_FNMATCH_IF([GNU], [ac_cv_func_fnmatch_gnu],
-                    [rm -f lib/fnmatch.h],
-                    [_AC_LIBOBJ_FNMATCH])
-])# AC_FUNC_FNMATCH_GNU
+AC_DEFUN([gl_FUNC_FNMATCH_POSIX],
+[
+  FNMATCH_H=
+  _AC_FUNC_FNMATCH_IF([POSIX], [ac_cv_func_fnmatch_posix],
+                      [rm -f lib/fnmatch.h],
+                      [_AC_LIBOBJ_FNMATCH])
+  if test $ac_cv_func_fnmatch_posix != yes; then
+    dnl We must choose a different name for our function, since on ELF systems
+    dnl a broken fnmatch() in libc.so would override our fnmatch() if it is
+    dnl compiled into a shared library.
+    AC_DEFINE([fnmatch], [posix_fnmatch],
+      [Define to a replacement function name for fnmatch().])
+  fi
+  AC_SUBST([FNMATCH_H])
+])
+
+
+AC_DEFUN([gl_FUNC_FNMATCH_GNU],
+[
+  dnl Persuade glibc <fnmatch.h> to declare FNM_CASEFOLD etc.
+  AC_REQUIRE([AC_GNU_SOURCE])
+
+  FNMATCH_H=
+  _AC_FUNC_FNMATCH_IF([GNU], [ac_cv_func_fnmatch_gnu],
+                      [rm -f lib/fnmatch.h],
+                      [_AC_LIBOBJ_FNMATCH])
+  if test $ac_cv_func_fnmatch_gnu != yes; then
+    dnl We must choose a different name for our function, since on ELF systems
+    dnl a broken fnmatch() in libc.so would override our fnmatch() if it is
+    dnl compiled into a shared library.
+    AC_DEFINE([fnmatch], [gnu_fnmatch],
+      [Define to a replacement function name for fnmatch().])
+  fi
+  AC_SUBST([FNMATCH_H])
+])