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

m4/ChangeLog
m4/getopt.m4

index f24f558..74f758d 100644 (file)
@@ -1,3 +1,8 @@
+2005-05-10  Derek Price  <derek@ximbiot.com>
+
+       * getopt.m4 (gl_GETOPT): Check for Solaris 10 bug, not decl, when
+       possible.
+
 2005-05-10  Simon Josefsson  <jas@extundo.com>
 
        * getaddrinfo.m4: Look in libnsl/libsocket for getaddrinfo, from
index d7bd319..79c6991 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