Boost logo

Boost :

Subject: Re: [boost] [1.44][Serialization] fails to compile on OSX universal
From: Marshall Clow (mclow.lists_at_[hidden])
Date: 2010-08-20 12:47:17


On Aug 20, 2010, at 10:38 AM, Robert Ramey wrote:
> Jeff Flinn wrote:
>> Building boost 1.44 on Mac OSX generating universal binaries fails to
>> compile serialization lib, due to static asserts in
>> basic_binary_?archive.hpp's at:
>>
>> BOOST_STATIC_ASSERT(sizeof(tracking_type) == sizeof(char));
>>
>> It appears that this fails for the ppc architecture.
>>
>> Robert, Any ideas on fixing this?
>>
>> Thanks, Jeff
>>
>> _______________________________________________
>> Unsubscribe & other changes:
>> http://lists.boost.org/mailman/listinfo.cgi/boost
>
>
> I included these asserts to trap any future change in the size of these
> types.
> Accidently changing these sizes silently breaks previous archives which is
> a major pain.
>
> boost/archive/tracking_type is actually a bool - which I had assumed would
> be a char in all machines. So I guess that correct way to express this
> would be:
>
> BOOST_STATIC_ASSERT(sizeof(tracking_type) == sizeof(bool));
>
> Try making this change and verify that it fixes the problem and I'll check
> in the change.

Tests done on my Mac running 10.6.4:

$ g++ --version
i686-apple-darwin10-g++-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5664)

$ cat junk.cpp
#include <iostream>

int main ( int argc, char *argv[] ) {
        std::cout << "sizeof (bool) = " << sizeof (bool) << std::endl;
        return 0;
        }

$ g++ -arch i386 junk.cpp && ./a.out
sizeof (bool) = 1

$ g++ -arch x86_64 junk.cpp && ./a.out
sizeof (bool) = 1

$ g++ -arch ppc junk.cpp && ./a.out
sizeof (bool) = 4

-- Marshall


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk