On Sat, Mar 06, 2021 at 10:20:59PM -0000, yla...@apache.org wrote:
> Author: ylavic
> Date: Sat Mar  6 22:20:59 2021
> New Revision: 1887279
> 
> URL: http://svn.apache.org/viewvc?rev=1887279&view=rev
> Log:
> build/apr_common.m4: avoid explicit inclusion of "confdefs.h"
> 
> The failure is observed on `autoconf-2.69d` (soon to be released
> as `autoconf-2.70`). There `int64_t` detection fails as:
> 
> $ autoreconf && ./configure
> checking whether int64_t and int use fmt %d... no
> checking whether int64_t and long use fmt %ld... no
> checking whether int64_t and long long use fmt %lld... no
> configure: error: could not determine the string function for int64_t
> ```

This now fails for me in exactly the same way when using ./configure 
--enable-maintainer-mode on autoconf 2.69, both in Fedora 33 and in 
Ubuntu: https://travis-ci.com/github/apache/apr/jobs/492824241

config.log says the program it tries is:

| int
| main ()
| {
| 
...
|   return 0;
| }

which always fails because of the maintainer-mode args:

configure:25300: gcc -c -g -O2 -Wall -Wmissing-prototypes -Wstrict-prototypes 
-Wmissing-declarations -pthread  -Werror -DLINUX -D_REENTRANT -D_GNU_SOURCE 
-DAPR_POOL_DEBUG=1 -DAPR_THREAD_DEBUG=1 conftest.c >&5
conftest.c:166:1: error: function declaration isn't a prototype 
[-Werror=strict-prototypes]
  166 | main ()
      | ^~~~

I can fix that by adjusting NOTEST_CFLAGS, as in:

https://github.com/apache/apr/commit/74ce8717319e28a9f5d52602b75258bdebf91708.patch

which seems probably right, except it maybe will affect what is exported 
in the apr-N-config script (etc)?

Regards, Joe


> 
> This happens because `./configure` always stumbles on warning:
> 
> configure:3350: gcc -c -g -O2 -Werror  conftest.c >&5
> In file included from conftest.c:31:
> confdefs.h:22: error: "__STDC_WANT_IEC_60559_ATTRIBS_EXT__" redefined 
> [-Werror]
>    22 | #define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1
>       |
> 
> It's triggered by double inclusion of `"confdefs.h"` contents:
> explicitly in `APR_TRY_COMPILE_NO_WARNING` macro and implicitly
> via `AC_LANG_SOURCE` use.
> 
> To fix it and avoid having to define `main()` declaration the change
> uses `AC_LANG_PROGRAM` instead.
> 
> Tested on both `autoconf-2.69` and `autoconf-2.69d`.
> 
> 
> Github: closes #25
> Submitted by: Sergei Trofimovich <slyfox gentoo.org>
> Reviewed by: ylavic
> 
> Modified:
>     apr/apr/trunk/build/apr_common.m4
> 
> Modified: apr/apr/trunk/build/apr_common.m4
> URL: 
> http://svn.apache.org/viewvc/apr/apr/trunk/build/apr_common.m4?rev=1887279&r1=1887278&r2=1887279&view=diff
> ==============================================================================
> --- apr/apr/trunk/build/apr_common.m4 (original)
> +++ apr/apr/trunk/build/apr_common.m4 Sat Mar  6 22:20:59 2021
> @@ -467,13 +467,9 @@ AC_DEFUN([APR_TRY_COMPILE_NO_WARNING],
>     CFLAGS="$CFLAGS -Werror"
>   fi
>   AC_COMPILE_IFELSE(
> -  [AC_LANG_SOURCE(
> -   [#include "confdefs.h"
> -   ]
> -   [[$1]]
> -   [int main(int argc, const char *const *argv) {]
> +  [AC_LANG_PROGRAM(
> +   [[$1]],
>     [[$2]]
> -   [   return 0; }]
>    )], [CFLAGS=$apr_save_CFLAGS
>  $3],  [CFLAGS=$apr_save_CFLAGS
>  $4])
> 
> 

Reply via email to