[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#14830: [PATCH] * configure.ac (HAVE_W32): Avoid nested functions
From: |
Peter Rosin |
Subject: |
bug#14830: [PATCH] * configure.ac (HAVE_W32): Avoid nested functions |
Date: |
Tue, 09 Jul 2013 08:53:30 +0200 |
User-agent: |
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130620 Thunderbird/17.0.7 |
On 2013-07-09 08:27, Peter Rosin wrote:
> On 2013-07-09 04:41, Eli Zaretskii wrote:
>>> Date: Tue, 09 Jul 2013 00:49:43 +0200
>>> From: Peter Rosin <peda@lysator.liu.se>
>>>
>>> diff --git a/ChangeLog b/ChangeLog
>>> index 220cffb..03011cf 100644
>>> --- a/ChangeLog
>>> +++ b/ChangeLog
>>> @@ -1,3 +1,8 @@
>>> +2013-07-09 Peter Rosin <peda@lysator.liu.se> (tiny change>
>>> +
>>> + * configure.ac (HAVE_W32): Avoid nested functions (the second
>>> + argument of AC_LANG_PROGRAM is expanded inside a function).
>>> +
>>> 2013-07-08 Magnus Henoch <magnus.henoch@gmail.com> (tiny change)
>>>
>>> * configure.ac (HAVE_IMAGEMAGICK): Check on NS also (Bug#14798).
>>> diff --git a/configure.ac b/configure.ac
>>> index 3830ee3..1188f1b 100644
>>> --- a/configure.ac
>>> +++ b/configure.ac
>>> @@ -1632,10 +1632,10 @@ fi
>>>
>>> if test "${opsys}" = "mingw32"; then
>>> AC_MSG_CHECKING([whether Windows API headers are recent enough])
>>> - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
>>> + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
>>> #include <windows.h>
>>> - #include <usp10.h>]],
>>> - [[void test(PIMAGE_NT_HEADERS pHeader)
>>> + #include <usp10.h>
>>> + void test(PIMAGE_NT_HEADERS pHeader)
>>> {PIMAGE_SECTION_HEADER pSection = IMAGE_FIRST_SECTION(pHeader);}]])],
>>> [emacs_cv_w32api=yes
>>> HAVE_W32=yes],
>>
>> Sorry, I don't follow: what is the problem with the current code?
>>
>
> AC_LANG_PROGRAM([[
> #include <windows.h>
> #include <usp10.h>]],
> [[void test(PIMAGE_NT_HEADERS pHeader)
> {PIMAGE_SECTION_HEADER pSection = IMAGE_FIRST_SECTION(pHeader);}]])
>
> is expanded into the following program (enhanced whitespace):
>
> #include <windows.h>
> #include <usp10.h>
>
> int
> main ()
> {
> void test(PIMAGE_NT_HEADERS pHeader)
> {
> PIMAGE_SECTION_HEADER pSection = IMAGE_FIRST_SECTION(pHeader);
> }
> ;
> return 0;
> }
>
> My fixed version with AC_LANG_SOURCE will not emit the main() function
> and thus avoids nested functions and instead generates this source (again
> with enhanced whitespace):
>
> #include <windows.h>
> #include <usp10.h>
>
> void
> test(PIMAGE_NT_HEADERS pHeader)
> {
> PIMAGE_SECTION_HEADER pSection = IMAGE_FIRST_SECTION(pHeader);
> }
>
> The background is that when trying to configure with an unsupported
> compiler, MSVC in this case, it errors out with "the Windows API
> headers are too old to support this build", which is a bogus error
> message.
>
> Agreed, it doesn't really change anything for supported configurations,
> but being able to nest functions has nothing to do with the test at
> hand.
Hmm, the below variant is perhaps clearer?
It expands into:
#include <windows.h>
#include <usp10.h>
int
main ()
{
PIMAGE_SECTION_HEADER pSection = IMAGE_FIRST_SECTION(pHeader);
return 0;
}
Cheers,
Peter
diff --git a/ChangeLog b/ChangeLog
index 220cffb..3ba3093 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2013-07-09 Peter Rosin <peda@lysator.liu.se> (tiny change>
+
+ * configure.ac (HAVE_W32): Avoid nested functions (the second
+ argument of AC_LANG_PROGRAM is already expanded inside a function).
+
2013-07-08 Magnus Henoch <magnus.henoch@gmail.com> (tiny change)
* configure.ac (HAVE_IMAGEMAGICK): Check on NS also (Bug#14798).
diff --git a/configure.ac b/configure.ac
index 3830ee3..ddfef68 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1635,8 +1635,7 @@ if test "${opsys}" = "mingw32"; then
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <windows.h>
#include <usp10.h>]],
- [[void test(PIMAGE_NT_HEADERS pHeader)
- {PIMAGE_SECTION_HEADER pSection = IMAGE_FIRST_SECTION(pHeader);}]])],
+ [[PIMAGE_SECTION_HEADER pSection = IMAGE_FIRST_SECTION(pHeader)]])],
[emacs_cv_w32api=yes
HAVE_W32=yes],
emacs_cv_w32api=no)
--
1.7.9