tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christopher Schultz <ch...@christopherschultz.net>
Subject Re: [mod_jk] Modify how common/config.h gets built
Date Wed, 07 Jan 2015 14:05:55 GMT
Rainer,

On 1/7/15 6:24 AM, Rainer Jung wrote:
> Am 07.01.2015 um 03:15 schrieb Konstantin Kolinko:
>> 2015-01-07 2:25 GMT+03:00 Christopher Schultz
>> <chris@christopherschultz.net>:
>>> All,
>>>
>>> I give up. I can't seem to figure out exactly how common/config.h comes
>>> into existence during the "configure" process.
> 
> It is created from common/config.h.in. Whereas most of the .in-based
> files are created by configure (see configure.ac) in
> 
> AC_OUTPUT([
>     Makefile
>     apache-1.3/Makefile
>     apache-1.3/Makefile.apxs
>     apache-2.0/Makefile
>     apache-2.0/Makefile.apxs
>     common/Makefile
>     common/list.mk
>     common/jk_types.h
> ])
> 
> the config.h is handled by
> 
> AC_CONFIG_HEADER(common/config.h)
> 
> and the PACKAGE variable values come from
> 
> AC_INIT([mod_jk], [1.2.41])

Okay, but how can we tweak what comes out into common/config.h?

>> I have never built mod_jk, but here are some thoughts
>>
>>> When compiling on Mac OS X, I get the following irritating warning:
>>>
>>> In file included from mod_jk.c:89:
>>> In file included from ../common/jk_global.h:29:
>>> ../common/config.h:81:9: warning: 'PACKAGE_NAME' macro redefined
>>> #define PACKAGE_NAME "mod_jk"
>>>          ^
>>
>> 1. I think that the PACKAGE_NAME define is generated by the following
>> macro in native/configure.ac:
>>
>> dnl package and version.
>> dnl synchronization with common/jk_version.h ?
>> AC_INIT([mod_jk], [1.2.41])
>>
>>
>>> /usr/include/apache2/ap_config_auto.h:213:9: note: previous definition
>>> is here
>>> #define PACKAGE_NAME ""
>>>          ^
>>
>> 2. From the path and file name, I think that the above header file
>> belongs to Apache HTTPD, not mod_jk.  It is no wonder that it has a
>> different PACKAGE_NAME.
>>
>>> There are 3 others like it for a few other #defines. I would like to
>>> clean these up, but I can't just commit changes to common/config.h
>>> because it's auto-generated.
>>>
>>> Can anyone shed some light on where I can modify what gets dumped into
>>> common/config.h? I see some stuff in config.status, but that in turn
>>> gets generated by configure.
>>>
>>> Any suggestions?
> 
> Yes, those errors are annoying. The problem is, that the Apache web
> server and also mod_jk use autoconf/automake and both include the
> generated defines for PACKAGE_NAME etc. in their header files.
> Officially those vars should not get published by Apache but instead be
> kept in private header files.
> 
> During mod_jk build that generates these redefine warnings. Currently
> that does not pose a real problem, since the mod_jk defines win and we
> don't need the Apache defines.
> 
> In Apache land the defines are in ap_config_auto.h, which is included in
> ap_config.h. I don't expect that not including Apache ap_config.h is an
> option. It is included itself in to many other Apache include files.
> 
> So I applied a workaround in r1650036, that can be found in other
> modules as well, namely undefining those vars before including our own
> config.h.

That's exactly what I was going to do... just in config.h.

> Thanks for the heads up. I found it annoying as well and simply needed a
> kick to look for a solution.

:)

I was going to take a look at all our native components to see if I
could get rid of all warnings on both Linux and Mac OS X (environments
to which I have easy access).

It looks like mod_jk builds on Mac OS X now with no warnings or anything
when using "-Wall -pedantic". Yay!

Thanks,
-chris


Mime
View raw message