You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by ja...@apache.org on 2001/11/03 03:55:34 UTC
cvs commit: xml-xerces/perl/hints aix.pl
jasons 01/11/02 18:55:34
Added: perl/hints aix.pl
Log:
new hint
Revision Changes Path
1.1 xml-xerces/perl/hints/aix.pl
Index: aix.pl
===================================================================
$self->{macro}= "-DHAS_BOOL -Dbool=int";
__END__
This was derived from the following email:
From: "Derek Fountain" <fo...@hursley.ibm.com>
Subject: Re: Xerces Perl on AIX
To: xerces-p-dev@xml.apache.org
Date: Mon, 23 Jul 2001 11:22:39 +0100
> Good detective work, derek. This is most definately the problem. Perl
> thinks your bool's should be char's, and Xerces-C thinks they should
> be int's. Try adding -Dbool=int to the CFLAGS in your Makefile.PL and
> recompile Xerces.pm.
>
> You want to convince them to both use the same encoding, so you either
> get Xerces-C to accept bool=char, or the other way 'round.
Ah-ha! I've got it working! The samples work! The job's not done yet, but the
end is in sight...
Setting -Dbool=int in the Makefile.PL didn't help. The compiler issues a
warning about the value being redefined, then uses the new value. The new
value appears to come from my perl-5.6.1/lib/5.6.1/aix/CORE/handy.h file,
which resets bool=char. I forced a fix by going into this file and changing
the line there before doing the compile of Xerces for Perl. Specifically:
===
#ifndef HAS_BOOL
# if defined(UTS) || defined(VMS)
# define bool int
# else
// # define bool char
# define bool int
# endif
# define HAS_BOOL 1
#endif
===
Of course, this isn't the real solution. I've had to change the file back to
prevent breakage in anything else I try to compile. I had a look in the
xerces library code and found this in src/util/Transcoders/Iconv400/utypes.h:
===
#if ! HAVE_BOOL_T
typedef int8_t bool_t;
#endif
===
I'm not sure if that's the right file, but clearly the intention in the
xerces code is for integer type booleans.
So, if my assessment is right, the xerces library code wants ints, and the
Perl library code wants chars, which means the Xerces-Perl code is going to
have to bend around the issue, probably by ignoring the Perl header file and
defining bool to be an int itself when compiled under AIX (or, presumably,
any UNIX platform which Perl thinks should have char based bools).
Quite how to sort this one out is, I think, a job for someone who has a
better idea of how things fit together. :P
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-p-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-p-dev-help@xml.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org