On Fri, Feb 22, 2013 at 02:31:05PM -0500, John Goodyear wrote:
> sh ./makedepend MAKE=make
> ...
> ...
> perl.c
> Finding dependencies for perl.o.
> WARNING CCN3296 ./patchlevel.h:132 #include file "git_version.h" not
> found.
> ERROR CCN3198 perl.c:535 #if, #else, #elif, #ifdef, #ifndef block must
> be ended with #endif.
> FSUM3065 The COMPILE step ended with return code 12.
> FSUM3017 Could not compile .83952605.c. Correct the errors and try
> again.
>
> Where does git_version.h come from? I don't have it.
It's generated later on by the build. The code in makedepend differs quite
markedly between os390 and everything else.
Everything else does this, capturing stderr too, then processes it
$cppstdin $finc -I. $cppflags $cppminus <UU/$file.c >.cout 2>.cerr
$sed \
...
-e '/^# *[0-9][0-9]* *[".\/]/!d' \
-e 's|\.c\.c|.c|' $uwinfix .cout .cerr| \
$uniq | $sort | $uniq >> .deptmp
As best I can work out, that expression I left in deletes *every* line that
doesn't match something like # 999 "file.h"
so eats all the error messages.
The os390 code is this:
$cppstdin $finc -I. $cppflags $cppminus <UU/$file.c |
$sed \
...
-e 's|\.c\.c|.c|' $uwinfix | \
$uniq | $sort | $uniq >> .deptmp
ie stderr is still visible. I think that this is why you're seeing error
messages.
> Not sure why the compiler is issuing the coplaint about 535. Is it
> possibly 535 of the preprocessor expanded version of perl.c ??
>
> 533 destruct_level = PL_perl_destruct_level;
> 534 #if defined(DEBUGGING) || defined(PERL_TRACK_MEMPOOL)
> 535 {
This complaint doesn't make sense to me There are plenty of other lines
with similar #if defined(XXX) || defined (YYY)
> ...
> ...
>
> perly.c
> Same issue for perly.c. complaint at line 82 does not make sense
>
> ERROR CCN3202 perly.c:82 #endif can only appear at the end of a #if,
> #elif, #ifdef or #ifndef block.
> FSUM3065 The COMPILE step ended with return code 12.
> FSUM3017 Could not compile .83952612.c. Correct the errors and try
> again.
I think that you're going to have to look at the output of pre-processor
to figure out why it's confused. There is a hack in makedepend.SH that
might be relevant. Using the git blame view:
http://perl5.git.perl.org/perl.git/blame/HEAD:/makedepend.SH
I find this:
commit 4902b9ac34817bed7eedc3956f985e2d5ded090e
Author: Jarkko Hietaniemi <[email protected]>
Date: Thu Jun 5 16:58:23 2003 +0000
z/OS makedepend fix from Peter Prymmer;
still needed as reported by Brian De Pradine.
p4raw-id: //depot/perl@19692
diff --git a/makedepend.SH b/makedepend.SH
index c1d880d..688f656 100755
--- a/makedepend.SH
+++ b/makedepend.SH
@@ -141,6 +141,11 @@ for file in `$cat .clist`; do
-e 's|\\$||' \
-e p \
-e '}' ) >UU/$file.c
+
+ if [ "$osname" = os390 -a "$file" = perly.c ]; then
+ $echo '#endif' >>UU/$file.c
+ fi
+
if [ "$osname" = os390 ]; then
$cppstdin $finc -I. $cppflags $cppminus <UU/$file.c |
$sed \
I don't know if Peter Prymmer remembers what that was about, and why it was
needed.
> Other makedepend output indicating problems
> ...
> ...
>
> Finding dependencies for pp_sys.o.
> ERROR CCN3010 ./time64.c:478 Macro PeRl_CaTiFy invoked with a null
> argument for parameter a.
> ERROR CCN3010 ./time64.c:478 Macro PeRl_CaTiFy invoked with a null
> argument for parameter a.
That's very strange. The macro PeRl_CaTiFy is defined in config.h, probably
looking like this:
#define PeRl_CaTiFy(a, b) a ## b
Line 478 of time64.c is this:
if( SHOULD_USE_SYSTEM_LOCALTIME(*time) ) {
and that's defined earlier like this:
#ifdef USE_SYSTEM_LOCALTIME
# define SHOULD_USE_SYSTEM_LOCALTIME(a) ( \
(a) <= SYSTEM_LOCALTIME_MAX && \
(a) >= SYSTEM_LOCALTIME_MIN \
)
#else
# define SHOULD_USE_SYSTEM_LOCALTIME(a) (0)
#endif
So how come it thinks that the two are even remotely connected?
> Finding dependencies for globals.o.
> WARNING CCN3296 ./perl.h:4331 #include file "uudmap.h" not found.
> WARNING CCN3296 ./perl.h:4338 #include file "bitcount.h" not found.
> WARNING CCN3296 ./perl.h:5203 #include file "mg_data.h" not found.
> FSUM3065 The COMPILE step ended with return code 4.
These error messages will be ignored on platforms other than os390, due to
the differing sed shown above.
> Finding dependencies for pp_pack.o.
> ERROR CCN3294 pp_pack.c:115 Syntax error in expression on #if directive.
> FSUM3065 The COMPILE step ended with return code 12.
> FSUM3017 Could not compile .67174450.c. Correct the errors and try again.
It's objecting to this?
#define SIZE32 4
> Does configure usually notice errors from makedepend and indicate something
> needs to be fixed before running make, or is this normal
It doesn't hit problems on non EBCDIC systems. Some of the (lack of) error
messages are explained by the different code in makedepend. But the others
seem really strange.
Nicholas Clark