You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by Christopher Schultz <ch...@christopherschultz.net> on 2015/01/07 00:25:23 UTC

[mod_jk] Modify how common/config.h gets built

All,

I give up. I can't seem to figure out exactly how common/config.h comes
into existence during the "configure" process.

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"
        ^
/usr/include/apache2/ap_config_auto.h:213:9: note: previous definition
is here
#define 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?

Thanks,
-chris


Re: [mod_jk] Modify how common/config.h gets built

Posted by Rainer Jung <ra...@kippdata.de>.
Am 07.01.2015 um 15:05 schrieb Christopher Schultz:
> 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
>>> <ch...@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 don't really know, but I expect no easy way to fine-tune the file. It 
is meant to be generated by autoconf and contain the configure detection 
results in the form of defines.

>> 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.

Which IMHO is harder or impossible to do.

>> 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!

Great, thanks for checking.

Regards,

Rainer


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: [mod_jk] Modify how common/config.h gets built

Posted by Christopher Schultz <ch...@christopherschultz.net>.
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
>> <ch...@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


Re: [mod_jk] Modify how common/config.h gets built

Posted by Rainer Jung <ra...@kippdata.de>.
Am 07.01.2015 um 03:15 schrieb Konstantin Kolinko:
> 2015-01-07 2:25 GMT+03:00 Christopher Schultz <ch...@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])

> 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.

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

Regards,

Rainer

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: [mod_jk] Modify how common/config.h gets built

Posted by Konstantin Kolinko <kn...@gmail.com>.
2015-01-07 2:25 GMT+03:00 Christopher Schultz <ch...@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.

Hi!

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?

Best regards,
Konstantin Kolinko

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org