Mail Archives: cygwin/2002/11/22/03:27:47
> -----Original Message-----
> From: Christopher Faylor [mailto:cgf AT redhat DOT com]
> Sent: Tuesday, November 19, 2002 5:02 PM
> To: cygwin AT cygwin DOT com
> Subject: Re: gcc-3.2-3: bootstrap build fails (HAVE_DECL_GETOPT not in
> config.h?)
>
>
> On Wed, Nov 20, 2002 at 10:14:59AM +1100, Nigel Stewart & Fiona
> Smith wrote:
> >Michael,
> >
> >I have encountered the same problem on my setup.
> >
> >Regards,
>
> I have not encountered the same problem in my setup.
You may have something wrong with your setup, i.e. you may have other
changes besides what's in gcc-3.2-3.
I looked at the gcc/include/getopt.h in CVS at gcc.gnu.org and they have the
following change (which is
basically what I came up with also):
===================================================================
RCS file: /cvs/gcc/gcc/include/getopt.h,v
retrieving revision 1.6
retrieving revision 1.6.30.1
diff -u -r1.6 -r1.6.30.1
--- gcc/include/getopt.h 2001/03/14 19:44:38 1.6
+++ gcc/include/getopt.h 2002/11/09 18:12:56 1.6.30.1
@@ -111,7 +111,7 @@
errors, only prototype getopt for the GNU C library. */
extern int getopt (int argc, char *const *argv, const char *shortopts);
#else /* not __GNU_LIBRARY__ */
-# if !defined (HAVE_DECL_GETOPT)
+# if !defined (HAVE_DECL_GETOPT) && !defined (__cplusplus)
extern int getopt ();
# endif
#endif /* __GNU_LIBRARY__ */
===================================================================
Although there still maybe a more general problem with the way GCC's cpp
finds header files.
The compile of pure.cc is finding the <unistd.h> in /usr/include which
includes <getopt.h>, but
instead of getting the getopt.h in /usr/include, it's grabbing the one in
./gcc/include. I
vaguely remember something in the ISO C standard regarding C pre-processing
that states all
angle-bracket includes strictly search for files in the "standard
directories" before searching
in the "" include directories. Therefore the ./gcc/include/getopt.h
shouldn't come into play.
In addition to the change shown above, to make the file more portable, line
102
#if defined (__STDC__) && __STDC__
should be changed to
#if (defined (__STDC__) && __STDC__) || defined (__cplusplus)
since ISO C++ Appendix C.1.9 Clause 16.8.1 says that "Whether __STDC__ is
defined and if so, what its
value is, are implementation-defined". G++ defines it, but doesn't have to.
If getopt.h was compiled
with a C++ compiler that chose not to define/set __STDC__, the build would
again break.
Mike
>
> HTH,
> cgf
>
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -