[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [bug-gnulib] gcc -Wall warning for minmax.h
From: |
Derek Price |
Subject: |
Re: [bug-gnulib] gcc -Wall warning for minmax.h |
Date: |
Sun, 15 May 2005 14:41:49 -0400 |
User-agent: |
Mozilla Thunderbird 1.0.2 (Windows/20050317) |
Paul Eggert wrote:
>Derek Price <address@hidden> writes:
>
>
>
>>minmax was so nice and small, but would you be willing to add an m4 file
>>which called AC_CHECK_HEADERS([sys/param.h]) and the following lines to
>>the beginning of minmax.h?
>>
>>#ifdef HAVE_SYS_PARAM_H
>># include <sys/param.h>
>>#endif
>>
>>
>
>Better yet, why not have "configure" check whether <sys/param.h>
>defines MIN and MAX, and include <sys/param.h> only if that's true?
>Similarly for <limits.h>. That way, minmax.h will include these other
>files only on broken systems.
>
>
>
>>I'll send the complete patch if you approve.
>>
>>
>
>Could you please implement something along those lines? Thanks.
>
>
Okay, I've attached the patch you suggested, though I am still using the
AC_EGREP_CPP construct you mentioned you disliked in our glob
discussion. Since this method works when cross-compiling and I've yet
to be convinced it is fragile, I'm going to hold off on a rewrite until
we settle the other discussion.
2005-05-15 Derek Price <address@hidden>
* lib/minmax.h: Only include <limits.h> and <sys/param.h> when needed.
* m4/minmax.m4: New file.
* modules/minmax: Add minmax.m4.
Cheers,
Derek
Index: lib/minmax.h
===================================================================
RCS file: /cvsroot/gnulib/gnulib/lib/minmax.h,v
retrieving revision 1.4
diff -u -p -r1.4 minmax.h
--- lib/minmax.h 14 May 2005 06:03:58 -0000 1.4
+++ lib/minmax.h 15 May 2005 18:22:52 -0000
@@ -23,9 +23,14 @@
MIN, MAX macro redefinitions on some systems; the workaround is to
#include this file as the last one among the #include list. */
-/* Before we define the following symbols we get the <limits.h> file
- since otherwise we get redefinitions on some systems. */
-#include <limits.h>
+/* Before we define the following symbols we try to get the <limits.h>
+ or <sys/param.h> files since otherwise we get redefinitions on some
+ systems. */
+#ifdef LIMITS_H_HAS_MINMAX
+# include <limits.h>
+#elif SYS_PARAM_H_HAS_MINMAX
+# include <sys/param.h>
+#endif
/* Note: MIN and MAX should be used with two arguments of the
same type. They might not return the minimum and maximum of their two
Index: m4/minmax.m4
===================================================================
RCS file: m4/minmax.m4
diff -N m4/minmax.m4
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ m4/minmax.m4 15 May 2005 18:22:52 -0000
@@ -0,0 +1,34 @@
+# minmax.m4 serial 1
+dnl Copyright (C) 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,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_MINMAX], [gl_PREREQ_MINMAX])
+
+# Prerequisites of minmax.h.
+AC_DEFUN([gl_PREREQ_MINMAX],
+[ dnl This really calls AC_REQUIRE, so just put it first.
+ AC_CHECK_HEADERS_ONCE([sys/param.h],
+ [gl_have_sys_param_h=:], [gl_have_sys_param_h=false])dnl
+
+ AC_EGREP_CPP([gl_minmax_test = MIN],
+[#include <limits.h>
+gl_minmax_test = MIN (xxx, yyy)],
+ [gl_limits_h_has_minmax=false], [gl_limits_h_has_minmax=:])
+
+ if $gl_limits_h_has_minmax; then
+ AC_DEFINE(LIMITS_H_HAS_MINMAX, 1,
+ [Define to 1 if <limits.h> defines the MIN and MAX macros.])
+ elif $gl_have_sys_param_h; then
+ AC_EGREP_CPP([gl_minmax_test = MIN],
+[#include <sys/param.h>
+gl_minmax_test = MIN (xxx, yyy)],
+ [gl_sys_param_h_has_minmax=false], [gl_sys_param_h_has_minmax=:])
+
+ if $gl_sys_param_h_has_minmax; then
+ AC_DEFINE(SYS_PARAM_H_HAS_MINMAX, 1,
+ [Define to 1 if <sys/param.h> defines the MIN and MAX macros.])
+ fi
+ fi
+ :])
Index: modules/minmax
===================================================================
RCS file: /cvsroot/gnulib/gnulib/modules/minmax,v
retrieving revision 1.3
diff -u -p -r1.3 minmax
--- modules/minmax 28 Sep 2004 20:15:39 -0000 1.3
+++ modules/minmax 15 May 2005 18:22:52 -0000
@@ -3,10 +3,12 @@ MIN, MAX macros.
Files:
lib/minmax.h
+m4/minmax.m4
Depends-on:
configure.ac:
+gl_MINMAX
Makefile.am:
lib_SOURCES += minmax.h
- [bug-gnulib] gcc -Wall warning for minmax.h, Derek Price, 2005/05/13
- Re: [bug-gnulib] gcc -Wall warning for minmax.h, Oskar Liljeblad, 2005/05/13
- Re: [bug-gnulib] gcc -Wall warning for minmax.h, Paul Eggert, 2005/05/13
- Re: [bug-gnulib] gcc -Wall warning for minmax.h,
Derek Price <=
- Re: [bug-gnulib] gcc -Wall warning for minmax.h, Paul Eggert, 2005/05/17
- Re: [bug-gnulib] gcc -Wall warning for minmax.h, Derek Price, 2005/05/17
- Re: [bug-gnulib] gcc -Wall warning for minmax.h, Paul Eggert, 2005/05/18
- Re: [bug-gnulib] gcc -Wall warning for minmax.h, Derek Price, 2005/05/18
- Re: [bug-gnulib] gcc -Wall warning for minmax.h, Paul Eggert, 2005/05/18
- [bug-gnulib] Re: gcc -Wall warning for minmax.h, Bruno Haible, 2005/05/23
- [bug-gnulib] Re: gcc -Wall warning for minmax.h, Bruno Haible, 2005/05/23
- [bug-gnulib] Re: gcc -Wall warning for minmax.h, Derek Price, 2005/05/23