changeset 6007:5b580599ba01

Add support to getopt for Emacs, which doesn't use LIBOBJS in the normal way. * getopt.m4 (gl_GETOPT_SUBSTITUTE_HEADER): New macro. (gl_GETOPT_SUBSTITUTE): Use it. Invoke gl_PREREQ_GETOPT. (gl_GETOPT_IFELSE, gl_GETOPT_CHECK_HEADERS): New macros. (gl_GETOPT): Use the new macros. Most of the implementation is moved to the new macros. This is for programs like Emacs that don't want all the functionality of gl_GETOPT.
author Paul Eggert <eggert@cs.ucla.edu>
date Tue, 26 Jul 2005 21:55:31 +0000
parents 6d62795799c2
children 47323bc9321f
files m4/ChangeLog m4/getopt.m4
diffstat 2 files changed, 51 insertions(+), 34 deletions(-) [+]
line wrap: on
line diff
--- a/m4/ChangeLog
+++ b/m4/ChangeLog
@@ -1,3 +1,14 @@
+2005-07-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+	Add support to getopt for Emacs, which doesn't use LIBOBJS in the
+	normal way.
+	* getopt.m4 (gl_GETOPT_SUBSTITUTE_HEADER): New macro.
+	(gl_GETOPT_SUBSTITUTE): Use it.  Invoke gl_PREREQ_GETOPT.
+	(gl_GETOPT_IFELSE, gl_GETOPT_CHECK_HEADERS): New macros.
+	(gl_GETOPT): Use the new macros.  Most of the implementation
+	is moved to the new macros.  This is for programs like Emacs
+	that don't want all the functionality of gl_GETOPT.
+
 2005-07-26  Bruno Haible  <bruno@clisp.org>
 
 	* lock.m4: Update from GNU gettext.
--- a/m4/getopt.m4
+++ b/m4/getopt.m4
@@ -1,4 +1,4 @@
-# getopt.m4 serial 9
+# getopt.m4 serial 10
 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,
@@ -10,63 +10,69 @@
 
 AC_DEFUN([gl_GETOPT_SUBSTITUTE],
 [
-  GETOPT_H=getopt.h
   AC_LIBOBJ([getopt])
   AC_LIBOBJ([getopt1])
+  gl_GETOPT_SUBSTITUTE_HEADER
+  gl_PREREQ_GETOPT
+])
+
+AC_DEFUN([gl_GETOPT_SUBSTITUTE_HEADER],
+[
+  GETOPT_H=getopt.h
   AC_DEFINE([__GETOPT_PREFIX], [[rpl_]],
     [Define to rpl_ if the getopt replacement functions and variables
      should be used.])
   AC_SUBST([GETOPT_H])
 ])
 
-AC_DEFUN([gl_GETOPT],
+AC_DEFUN([gl_GETOPT_CHECK_HEADERS],
 [
-  gl_PREREQ_GETOPT
-
+  GETOPT_H=
+  AC_CHECK_HEADERS([getopt.h], [], [GETOPT_H=getopt.h])
   if test -z "$GETOPT_H"; then
-    GETOPT_H=
-    AC_CHECK_HEADERS([getopt.h], [], [GETOPT_H=getopt.h])
-    if test -z "$GETOPT_H"; then
-      AC_CHECK_FUNCS([getopt_long_only], [], [GETOPT_H=getopt.h])
-    fi
+    AC_CHECK_FUNCS([getopt_long_only], [], [GETOPT_H=getopt.h])
+  fi
 
-    dnl BSD getopt_long uses an incompatible method to reset option processing,
-    dnl and (as of 2004-10-15) mishandles optional option-arguments.
-    if test -z "$GETOPT_H"; then
-      AC_CHECK_DECL([optreset], [GETOPT_H=getopt.h], [], [#include <getopt.h>])
-    fi
+  dnl BSD getopt_long uses an incompatible method to reset option processing,
+  dnl and (as of 2004-10-15) mishandles optional option-arguments.
+  if test -z "$GETOPT_H"; then
+    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_CACHE_CHECK([for working GNU getopt function], [gl_cv_func_gnu_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_CACHE_CHECK([for working GNU getopt function], [gl_cv_func_gnu_getopt],
       [AC_RUN_IFELSE(
-        [AC_LANG_PROGRAM([#include <getopt.h>],
+	[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=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
-      gl_GETOPT_SUBSTITUTE
+    if test "$gl_cv_func_gnu_getopt" = "no"; then
+      GETOPT_H=getopt.h
     fi
   fi
 ])
 
+AC_DEFUN([gl_GETOPT_IFELSE],
+[
+  AC_REQUIRE([gl_GETOPT_CHECK_HEADERS])
+  AS_IF([test -n "$GETOPT_H"], [$1], [$2])
+])
+
+AC_DEFUN([gl_GETOPT], [gl_GETOPT_IFELSE([gl_GETOPT_SUBSTITUTE])])
+
 # Prerequisites of lib/getopt*.
 AC_DEFUN([gl_PREREQ_GETOPT], [:])