You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Nikola Milutinovic <Ni...@ev.co.yu> on 2001/10/03 15:04:29 UTC
Noted a problem with configure on mod_webapp
Hi all.
This is more for developers, but here goes. OS is Tru64 UNIX 4.0F (a.k.a. Digital UNIX (a.k.a. DEC OSF/1)). I'm using native CC of Tru64. "configure" script in APR erroneously detects the presence of <stdint.h> on the system and that consequently bugs the whole mod_webapp.so.
mod_webapp.so, although built wouldn't load with a message:
Legba:/usr/local/apache/conf# /usr/local/apache/bin/apachectl configtest
Syntax error on line 218 of /usr/local/apache/conf/httpd.conf:
Cannot load /usr/local/apache/libexec/mod_webapp.so into server: Unresolved symbol in /usr/local/apache/libexec/mod_webapp.so: INT64_C
I have run the portion which detects "INT64_C in stdint.h" of the "configure" manually and it produces a wrong conclusion.
THE PROBLEM is in this:
cat >conftest.$ac_ext <<_ACEOF
#line 18159 "configure"
#include "confdefs.h"
#include <stdint.h>
#ifdef INT64_C
YES_IS_DEFINED
#endif
_ACEOF
Please note that the portion of CPP directives (those three in the middle) is *indented*.
Well, this is not supported in Tru64's CC and frankly I don't know of a C language specification which allows it. To make myself perfectly clear, all C language specifications I've seen (K&R C and ANSI C), insist on "#" sign of the CPP directive being in the first column or the first character on the line. You can indent the directive itself, but the "#" MUST be in the first column. DEC CC insists on this and ignores lines that have whitespace before "#". So, something like this would be correct:
cat >conftest.$ac_ext <<_ACEOF
#line 18159 "configure"
#include "confdefs.h"
# include <stdint.h>
# ifdef INT64_C
YES_IS_DEFINED
# endif
_ACEOF
I'm guessing that GCC allows for indentation of CPP lines, but I still think it is against the specification. Reasoning like "GCC is the major CC in the world, comply with it" is something I would expect from Microsoft - and not from GCC, Apache or Tomcat supporters.
I know I could build GCC for Tru64 UNIX and "save myself a lot of trouble in the future", but that would be 50-th "meander" in building some final-stage product on my machine, which is not only time-, but also nerve-consuming, as well.
For the time being I'll manually "weed out all of you non-hackers, who are not fit to serve in my beloved corps" ("Full metal jacket"-Stanley Kubrick). Of course, untaring sources from scratch...
Nix.
Re: Noted a problem with configure on mod_webapp
Posted by jean-frederic clere <jf...@fujitsu-siemens.com>.
I have forwarded this issue to APR - That looks like an APR problem -
Nikola Milutinovic wrote:
>
> Hi all.
>
> This is more for developers, but here goes. OS is Tru64 UNIX 4.0F (a.k.a. Digital UNIX (a.k.a. DEC OSF/1)). I'm using native CC of Tru64. "configure" script in APR erroneously detects the presence of <stdint.h> on the system and that consequently bugs the whole mod_webapp.so.
>
> mod_webapp.so, although built wouldn't load with a message:
>
> Legba:/usr/local/apache/conf# /usr/local/apache/bin/apachectl configtest
> Syntax error on line 218 of /usr/local/apache/conf/httpd.conf:
> Cannot load /usr/local/apache/libexec/mod_webapp.so into server: Unresolved symbol in /usr/local/apache/libexec/mod_webapp.so: INT64_C
>
> I have run the portion which detects "INT64_C in stdint.h" of the "configure" manually and it produces a wrong conclusion.
>
> THE PROBLEM is in this:
>
> cat >conftest.$ac_ext <<_ACEOF
> #line 18159 "configure"
> #include "confdefs.h"
>
> #include <stdint.h>
> #ifdef INT64_C
> YES_IS_DEFINED
> #endif
>
> _ACEOF
>
> Please note that the portion of CPP directives (those three in the middle) is *indented*.
>
> Well, this is not supported in Tru64's CC and frankly I don't know of a C language specification which allows it. To make myself perfectly clear, all C language specifications I've seen (K&R C and ANSI C), insist on "#" sign of the CPP directive being in the first column or the first character on the line. You can indent the directive itself, but the "#" MUST be in the first column. DEC CC insists on this and ignores lines that have whitespace before "#". So, something like this would be correct:
>
> cat >conftest.$ac_ext <<_ACEOF
> #line 18159 "configure"
> #include "confdefs.h"
>
> # include <stdint.h>
> # ifdef INT64_C
> YES_IS_DEFINED
> # endif
>
> _ACEOF
>
> I'm guessing that GCC allows for indentation of CPP lines, but I still think it is against the specification. Reasoning like "GCC is the major CC in the world, comply with it" is something I would expect from Microsoft - and not from GCC, Apache or Tomcat supporters.
>
> I know I could build GCC for Tru64 UNIX and "save myself a lot of trouble in the future", but that would be 50-th "meander" in building some final-stage product on my machine, which is not only time-, but also nerve-consuming, as well.
>
> For the time being I'll manually "weed out all of you non-hackers, who are not fit to serve in my beloved corps" ("Full metal jacket"-Stanley Kubrick). Of course, untaring sources from scratch...
>
> Nix.