(gl_GETOPT): Check for Solaris 10 bug, not decl, when possible.
authorPaul Eggert <eggert@cs.ucla.edu>
Tue, 10 May 2005 19:09:23 +0000 (19:09 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 10 May 2005 19:09:23 +0000 (19:09 +0000)
m4/getopt.m4

index d7bd3191cfd5f61f1579455e8b6ccbc8cc3683d2..79c699162e4a0147b72cdae5c2311c3f1c5d1363 100644 (file)
@@ -1,4 +1,4 @@
-# getopt.m4 serial 8
+# getopt.m4 serial 9
 dnl Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -39,8 +39,27 @@ AC_DEFUN([gl_GETOPT],
     dnl Solaris 10 getopt doesn't handle `+' as a leading character in an
     dnl option string (as of 2005-05-05).
     if test -z "$GETOPT_H"; then
-      AC_CHECK_DECL([getopt_clip], [GETOPT_H=getopt.h], [],
-       [#include <getopt.h>])
+      AC_CACHE_CHECK([for working GNU getopt function], [gl_cv_func_gnu_getopt],
+      [AC_RUN_IFELSE(
+        [AC_LANG_PROGRAM([#include <getopt.h>],
+          [[
+            char *myargv[3];
+            myargv[0] = "conftest";
+            myargv[1] = "-+";
+            myargv[2] = 0;
+            return getopt (2, myargv, "+a") != '?';
+           ]])],
+        [gl_cv_func_gnu_getopt=yes],
+        [gl_cv_func_gnu_getopt=no],
+        [dnl cross compiling - pessimistically guess based on decls
+         dnl Solaris 10 getopt doesn't handle `+' as a leading character in an
+         dnl option string (as of 2005-05-05).
+         AC_CHECK_DECL([getopt_clip],
+          [gl_cv_func_gnu_getopt=no], [gl_cv_func_gnu_getopt=yes],
+          [#include <getopt.h>])])])
+      if test "$gl_cv_func_gnu_getopt" = "no"; then
+       GETOPT_H=getopt.h
+      fi
     fi
 
     if test -n "$GETOPT_H"; then