autoconf
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: _AC_PROG_CXX_EXIT_DECLARATION: don't `#include <stdlib.h>'


From: Ralf Wildenhues
Subject: Re: _AC_PROG_CXX_EXIT_DECLARATION: don't `#include <stdlib.h>'
Date: Thu, 5 Jan 2006 10:44:15 +0100
User-agent: Mutt/1.5.11

Hi David,

Sorry for the late reply.

* David Thompson wrote on Thu, Nov 24, 2005 at 12:05:43AM CET:
> Looking into this further. Here is the problem I'm seeing. (Autoconf 
> 2.5.9 on cygwin).
> 
> The function is defined as:
> 
> m4_define([_AC_PROG_CXX_EXIT_DECLARATION],
> [for ac_declaration in \
>    '' \
>    'extern "C" void std::exit (int) throw (); using std::exit;' \
*snip*

> But it appears that the #include <stdlib.h> is not used when 
> ac_declaration is set to ''. I don't quite understand the syntax
> 
> $ac_declaration
> @%:@include <stdlib.h>

`$ac_declaration' just expands into one of the declarations listed in
the macro.  address@hidden:@' is a quadrigraph (documented in Autoconf manual) 
and
expands into `#'.

> Here is my output from the configure run: as you can see the include 
> is listed for the second option just not the first. Why? Shouldn't 
> the first option for ac_declaration produce just the #include 
> <stdlib.h>?

This was with MSVC, right?  Does it help if you add a declaration like
in the patch below (completely untested; you might have to tune it a
bit)?  Note for testing you need to either rebuild and reinstall
autoconf from source, or remove the frozen file
$prefix/share/autoconf/autoconf/autoconf.m4f to pick up the changes.

Cheers,
Ralf


Index: lib/autoconf/c.m4
===================================================================
RCS file: /cvsroot/autoconf/autoconf/lib/autoconf/c.m4,v
retrieving revision 1.208
diff -u -r1.208 c.m4
--- lib/autoconf/c.m4   1 Nov 2005 07:26:52 -0000       1.208
+++ lib/autoconf/c.m4   5 Jan 2006 09:43:31 -0000
@@ -783,6 +783,7 @@
    'extern "C" void std::exit (int); using std::exit;' \
    'extern "C" void exit (int) throw ();' \
    'extern "C" void exit (int);' \
+   'extern "C" void exit (int) __declspec(noreturn);' \
    'void exit (int);'
 do
   _AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$ac_declaration




reply via email to

[Prev in Thread] Current Thread [Next in Thread]