Matthias Kurz wrote: >On Thu, May 05, 2005, Paul Eggert wrote: > > > >>Derek Price <[EMAIL PROTECTED]> writes: >> >> >> >>>I prefer door #2. Trivial patch attached: >>> >>> >>Thanks, but I'd rather use AC_CHECK_DECL, so I installed this instead, >>into both coreutils and gnulib. Does it work? >> >>2005-05-05 Paul Eggert <[EMAIL PROTECTED]> >> >> * lib/getopt.m4 (gl_GETOPT): Check for Solaris 10 getopt, and >> avoid needless checks. >> >> > >Yes, this also works for me. > >
Okay, one more revision, to actually check if the -+ registers as an option or not. This fits the autoconf paradigm of testing for the bug, even if it is using AC_TRY_RUN. This way, if Sun fixes the problem in a later Solaris release, we shouldn't need to change anything. When cross-compiling, I fall back on looking for the odd Solaris decl to decide whether to use the GNULIB version of getopt or not. If we wanted to be really pessimistic, we could always use the GNULIB getopt when cross-compiling, but I thought this could wait at least until we get a report of similar behavior from some system other than Solaris 10. Matthias, would you mind testing this version out? If you could send me your config.log when you are done building, that would be helpful as well. 2005-05-09 Derek Price <[EMAIL PROTECTED]> * m4/getopt.m4: Check for Solaris 10 bug, not decl, when possible. Cheers, Derek
Index: m4/getopt.m4 =================================================================== RCS file: /cvs/ccvs/m4/getopt.m4,v retrieving revision 1.7 diff -u -p -r1.7 getopt.m4 --- m4/getopt.m4 6 May 2005 15:50:05 -0000 1.7 +++ m4/getopt.m4 9 May 2005 14:47:15 -0000 @@ -36,11 +36,26 @@ AC_DEFUN([gl_GETOPT], AC_CHECK_DECL([optreset], [GETOPT_H=getopt.h], [], [#include <getopt.h>]) fi - 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[[2]]; + myargv[[0]] = "conftest"; + myargv[[1]] = "-+"; + 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
_______________________________________________ Bug-cvs mailing list Bug-cvs@gnu.org http://lists.gnu.org/mailman/listinfo/bug-cvs