udvlpr / alembic

Automatically exported from code.google.com/p/alembic
Other
0 stars 0 forks source link

Cross compile alembic for arm achitecture #325

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Hello ,

I know that is it not officially supported but we are trying to cross compile 
Alembic 1.5.1 for Android and IOS arm architectures. It seems the only obstacle 
is partially the Ilmbase toFloat and HDF5. I can compile everything without any 
problems but they both run a helper applications on the target architecture 
during building. We need Alembic only as static library and just to read files 
with Ogawa. Is there anyway to set HDF5 to optional while building Alembic also 
we couldn't find any read examples that don't require HDF5 for reading alembic 
files. I have attached a full log with the errors for i386 IphoneSimulator . I 
also attached the compiled static libs for x86_64 OSX 10.9 , armv7 IOS 7.0 , 
armv7s IOS 7.0, i386 iphone simulator IOS 7.0.

Original issue reported on code.google.com by sabotag...@gmail.com on 30 Nov 2013 at 11:43

GoogleCodeExporter commented 9 years ago
I made a test with the Example1_MeshIn() provided in the wiki. For x86_64 OSX 
10.9 I can read a simple abc file. For the Iphone simulator IOS 7.0 I get a few 
linking warnings. And then it crashes.

DF5-DIAG: Error detected in HDF5 (1.8.12) thread 0:
  #000: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5T.c line 4492 in H5T_path_find(): unable to initialize conversion function
    major: Datatype
    minor: Unable to initialize object
  #001: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5Tconv.c line 8622 in H5T__conv_double_ulong(): disagreement about datatype size
    major: Datatype
    minor: Unable to initialize object
  #002: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5T.c line 2337 in H5T_register(): unable to locate/allocate conversion path
    major: Datatype
    minor: Unable to initialize object
  #003: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5T.c line 4492 in H5T_path_find(): unable to initialize conversion function
    major: Datatype
    minor: Unable to initialize object
  #004: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5Tconv.c line 8568 in H5T__conv_float_ulong(): disagreement about datatype size
    major: Datatype
    minor: Unable to initialize object
  #005: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5T.c line 2337 in H5T_register(): unable to locate/allocate conversion path
    major: Datatype
    minor: Unable to initialize object
  #006: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5T.c line 4492 in H5T_path_find(): unable to initialize conversion function
    major: Datatype
    minor: Unable to initialize object
  #007: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5Tconv.c line 8650 in H5T__conv_ldouble_long(): disagreement about datatype size
    major: Datatype
    minor: Unable to initialize object
  #008: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5T.c line 2337 in H5T_register(): unable to locate/allocate conversion path
    major: Datatype
    minor: Unable to initialize object
  #009: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5T.c line 4492 in H5T_path_find(): unable to initialize conversion function
    major: Datatype
    minor: Unable to initialize object
  #010: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5Tconv.c line 8595 in H5T__conv_double_long(): disagreement about datatype size
    major: Datatype
    minor: Unable to initialize object
  #011: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5T.c line 2337 in H5T_register(): unable to locate/allocate conversion path
    major: Datatype
    minor: Unable to initialize object
  #012: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5T.c line 4492 in H5T_path_find(): unable to initialize conversion function
    major: Datatype
    minor: Unable to initialize object
  #013: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5Tconv.c line 8541 in H5T__conv_float_long(): disagreement about datatype size
    major: Datatype
    minor: Unable to initialize object
  #014: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5T.c line 2337 in H5T_register(): unable to locate/allocate conversion path
    major: Datatype
    minor: Unable to initialize object
  #015: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5T.c line 4492 in H5T_path_find(): unable to initialize conversion function
    major: Datatype
    minor: Unable to initialize object
  #016: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5Tconv.c line 7858 in H5T__conv_ulong_ldouble(): disagreement about datatype size
    major: Datatype
    minor: Unable to initialize object
  #017: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5T.c line 2337 in H5T_register(): unable to locate/allocate conversion path
    major: Datatype
    minor: Unable to initialize object
  #018: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5T.c line 4492 in H5T_path_find(): unable to initialize conversion function
    major: Datatype
    minor: Unable to initialize object
  #019: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5Tconv.c line 7831 in H5T__conv_ulong_double(): disagreement about datatype size
    major: Datatype
    minor: Unable to initialize object
  #020: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5T.c line 2337 in H5T_register(): unable to locate/allocate conversion path
    major: Datatype
    minor: Unable to initialize object
  #021: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5T.c line 4492 in H5T_path_find(): unable to initialize conversion function
    major: Datatype
    minor: Unable to initialize object
  #022: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5Tconv.c line 7804 in H5T__conv_ulong_float(): disagreement about datatype size
    major: Datatype
    minor: Unable to initialize object
  #023: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5T.c line 2337 in H5T_register(): unable to locate/allocate conversion path
    major: Datatype
    minor: Unable to initialize object
  #024: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5T.c line 4492 in H5T_path_find(): unable to initialize conversion function
    major: Datatype
    minor: Unable to initialize object
  #025: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5Tconv.c line 7777 in H5T__conv_long_ldouble(): disagreement about datatype size
    major: Datatype
    minor: Unable to initialize object
  #026: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5T.c line 2337 in H5T_register(): unable to locate/allocate conversion path
    major: Datatype
    minor: Unable to initialize object
  #027: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5T.c line 4492 in H5T_path_find(): unable to initialize conversion function
    major: Datatype
    minor: Unable to initialize object
  #028: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5Tconv.c line 7751 in H5T__conv_long_double(): disagreement about datatype size
    major: Datatype
    minor: Unable to initialize object
  #029: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5T.c line 2337 in H5T_register(): unable to locate/allocate conversion path
    major: Datatype
    minor: Unable to initialize object
  #030: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5T.c line 4492 in H5T_path_find(): unable to initialize conversion function
    major: Datatype
    minor: Unable to initialize object
  #031: /Users/sabotage3d/DEV/libs/hdf5-1.8.12/src/H5Tconv.c line 7726 in H5T__conv_long_float(): disagreement about datatype size
    major: Datatype
    minor: Unable to initialize object
libc++abi.dylib: terminating with uncaught exception of type 
Alembic::Util::v6::Exception: IArchive::IArchive( iFileName )
ERROR: EXCEPTION:
Nonexistent or not an Alembic file: /Users/sabotage3d/Downloads/polyMesh1.abc

The linker warnings:

ld: warning: direct access in 
Alembic::Abc::v6::IBasePropertyT<boost::shared_ptr<Alembic::AbcCoreAbstract::v6:
:ArrayPropertyReader> >::getHeader() const to global weak symbol 
Alembic::AbcCoreAbstract::v6::PropertyHeader::~PropertyHeader() means the weak 
symbol cannot be overridden at runtime. This was likely caused by different 
translation units being compiled with different visibility settings.
ld: warning: direct access in 
Alembic::Abc::v6::ISchemaObject<Alembic::AbcGeom::v6::IPolyMeshSchema>::ISchemaO
bject<Alembic::Abc::v6::IObject>(Alembic::Abc::v6::IObject, 
std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, Alembic::Abc::v6::Argument const&, 
Alembic::Abc::v6::Argument const&) to global weak symbol typeinfo for 
Alembic::Util::v6::Exception means the weak symbol cannot be overridden at 
runtime. This was likely caused by different translation units being compiled 
with different visibility settings.
ld: warning: direct access in 
Alembic::Abc::v6::ISchemaObject<Alembic::AbcGeom::v6::IPolyMeshSchema>::ISchemaO
bject<Alembic::Abc::v6::IObject>(Alembic::Abc::v6::IObject, 
std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, Alembic::Abc::v6::Argument const&, 
Alembic::Abc::v6::Argument const&) to global weak symbol 
Alembic::Util::v6::Exception::~Exception() means the weak symbol cannot be 
overridden at runtime. This was likely caused by different translation units 
being compiled with different visibility settings.
ld: warning: direct access in 
Alembic::Abc::v6::ISchemaObject<Alembic::AbcGeom::v6::IFaceSetSchema>::~ISchemaO
bject() to global weak symbol vtable for 
Alembic::Abc::v6::ISchemaObject<Alembic::AbcGeom::v6::IFaceSetSchema> means the 
weak symbol cannot be overridden at runtime. This was likely caused by 
different translation units being compiled with different visibility settings.
ld: warning: direct access in 
Alembic::AbcGeom::v6::IGeomBaseSchema<Alembic::AbcGeom::v6::FaceSetSchemaInfo>::
~IGeomBaseSchema() to global weak symbol vtable for 
Alembic::AbcGeom::v6::IGeomBaseSchema<Alembic::AbcGeom::v6::FaceSetSchemaInfo> 
means the weak symbol cannot be overridden at runtime. This was likely caused 
by different translation units being compiled with different visibility 
settings.
ld: warning: direct access in 
Alembic::Abc::v6::ITypedScalarProperty<Alembic::Abc::v6::Box3dTPTraits>::getInte
rpretation() to global weak symbol guard variable for 
Alembic::Abc::v6::ITypedScalarProperty<Alembic::Abc::v6::Box3dTPTraits>::getInte
rpretation()::sInterpretation means the weak symbol cannot be overridden at 
runtime. This was likely caused by different translation units being compiled 
with different visibility settings.
ld: warning: direct access in 
Alembic::Abc::v6::ITypedScalarProperty<Alembic::Abc::v6::Box3dTPTraits>::getInte
rpretation() to global weak symbol 
Alembic::Abc::v6::ITypedScalarProperty<Alembic::Abc::v6::Box3dTPTraits>::getInte
rpretation()::sInterpretation means the weak symbol cannot be overridden at 
runtime. This was likely caused by different translation units being compiled 
with different visibility settings.
ld: warning: direct access in 
Alembic::Abc::v6::ITypedScalarProperty<Alembic::Abc::v6::Box3dTPTraits>::getInte
rpretation() to global weak symbol guard variable for 
Alembic::Abc::v6::ITypedScalarProperty<Alembic::Abc::v6::Box3dTPTraits>::getInte
rpretation()::sInterpretation means the weak symbol cannot be overridden at 
runtime. This was likely caused by different translation units being compiled 
with different visibility settings.
ld: warning: direct access in 
Alembic::Abc::v6::ITypedScalarProperty<Alembic::Abc::v6::Box3dTPTraits>::getInte
rpretation() to global weak symbol 
Alembic::Abc::v6::ITypedScalarProperty<Alembic::Abc::v6::Box3dTPTraits>::getInte
rpretation()::sInterpretation means the weak symbol cannot be overridden at 
runtime. This was likely caused by different translation units being compiled 
with different visibility settings.
ld: warning: direct access in 
Alembic::Abc::v6::ITypedScalarProperty<Alembic::Abc::v6::Box3dTPTraits>::getInte
rpretation() to global weak symbol 
Alembic::Abc::v6::ITypedScalarProperty<Alembic::Abc::v6::Box3dTPTraits>::getInte
rpretation()::sInterpretation means the weak symbol cannot be overridden at 
runtime. This was likely caused by different translation units being compiled 
with different visibility settings.
ld: warning: direct access in 
Alembic::Abc::v6::ITypedScalarProperty<Alembic::Abc::v6::Box3dTPTraits>::getInte
rpretation() to global weak symbol guard variable for 
Alembic::Abc::v6::ITypedScalarProperty<Alembic::Abc::v6::Box3dTPTraits>::getInte
rpretation()::sInterpretation means the weak symbol cannot be overridden at 
runtime. This was likely caused by different translation units being compiled 
with different visibility settings.
ld: warning: direct access in 
Alembic::Abc::v6::ITypedScalarProperty<Alembic::Abc::v6::Box3dTPTraits>::getInte
rpretation() to global weak symbol guard variable for 
Alembic::Abc::v6::ITypedScalarProperty<Alembic::Abc::v6::Box3dTPTraits>::getInte
rpretation()::sInterpretation means the weak symbol cannot be overridden at 
runtime. This was likely caused by different translation units being compiled 
with different visibility settings.
ld: warning: direct access in void 
Alembic::Abc::v6::ISchema<Alembic::AbcGeom::v6::PolyMeshSchemaInfo>::init<boost:
:shared_ptr<Alembic::AbcCoreAbstract::v6::CompoundPropertyReader> 
>(boost::shared_ptr<Alembic::AbcCoreAbstract::v6::CompoundPropertyReader>, 
std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, Alembic::Abc::v6::Argument const&, 
Alembic::Abc::v6::Argument const&) to global weak symbol typeinfo for 
Alembic::Util::v6::Exception means the weak symbol cannot be overridden at 
runtime. This was likely caused by different translation units being compiled 
with different visibility settings.
ld: warning: direct access in void 
Alembic::Abc::v6::ISchema<Alembic::AbcGeom::v6::PolyMeshSchemaInfo>::init<boost:
:shared_ptr<Alembic::AbcCoreAbstract::v6::CompoundPropertyReader> 
>(boost::shared_ptr<Alembic::AbcCoreAbstract::v6::CompoundPropertyReader>, 
std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, Alembic::Abc::v6::Argument const&, 
Alembic::Abc::v6::Argument const&) to global weak symbol 
Alembic::Util::v6::Exception::~Exception() means the weak symbol cannot be 
overridden at runtime. This was likely caused by different translation units 
being compiled with different visibility settings.
ld: warning: direct access in void 
Alembic::Abc::v6::ISchema<Alembic::AbcGeom::v6::PolyMeshSchemaInfo>::init<boost:
:shared_ptr<Alembic::AbcCoreAbstract::v6::CompoundPropertyReader> 
>(boost::shared_ptr<Alembic::AbcCoreAbstract::v6::CompoundPropertyReader>, 
std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, Alembic::Abc::v6::Argument const&, 
Alembic::Abc::v6::Argument const&) to global weak symbol typeinfo for 
Alembic::Util::v6::Exception means the weak symbol cannot be overridden at 
runtime. This was likely caused by different translation units being compiled 
with different visibility settings.
ld: warning: direct access in void 
Alembic::Abc::v6::ISchema<Alembic::AbcGeom::v6::PolyMeshSchemaInfo>::init<boost:
:shared_ptr<Alembic::AbcCoreAbstract::v6::CompoundPropertyReader> 
>(boost::shared_ptr<Alembic::AbcCoreAbstract::v6::CompoundPropertyReader>, 
std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, Alembic::Abc::v6::Argument const&, 
Alembic::Abc::v6::Argument const&) to global weak symbol 
Alembic::Util::v6::Exception::~Exception() means the weak symbol cannot be 
overridden at runtime. This was likely caused by different translation units 
being compiled with different visibility settings.
ld: warning: direct access in void 
Alembic::Abc::v6::ISchema<Alembic::AbcGeom::v6::PolyMeshSchemaInfo>::init<boost:
:shared_ptr<Alembic::AbcCoreAbstract::v6::CompoundPropertyReader> 
>(boost::shared_ptr<Alembic::AbcCoreAbstract::v6::CompoundPropertyReader>, 
std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, Alembic::Abc::v6::Argument const&, 
Alembic::Abc::v6::Argument const&) to global weak symbol typeinfo for 
Alembic::Util::v6::Exception means the weak symbol cannot be overridden at 
runtime. This was likely caused by different translation units being compiled 
with different visibility settings.
ld: warning: direct access in void 
Alembic::Abc::v6::ISchema<Alembic::AbcGeom::v6::PolyMeshSchemaInfo>::init<boost:
:shared_ptr<Alembic::AbcCoreAbstract::v6::CompoundPropertyReader> 
>(boost::shared_ptr<Alembic::AbcCoreAbstract::v6::CompoundPropertyReader>, 
std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, Alembic::Abc::v6::Argument const&, 
Alembic::Abc::v6::Argument const&) to global weak symbol 
Alembic::Util::v6::Exception::~Exception() means the weak symbol cannot be 
overridden at runtime. This was likely caused by different translation units 
being compiled with different visibility settings.
ld: warning: direct access in void 
Alembic::Abc::v6::ISchema<Alembic::AbcGeom::v6::PolyMeshSchemaInfo>::init<boost:
:shared_ptr<Alembic::AbcCoreAbstract::v6::CompoundPropertyReader> 
>(boost::shared_ptr<Alembic::AbcCoreAbstract::v6::CompoundPropertyReader>, 
std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, Alembic::Abc::v6::Argument const&, 
Alembic::Abc::v6::Argument const&) to global weak symbol typeinfo for 
Alembic::Util::v6::Exception means the weak symbol cannot be overridden at 
runtime. This was likely caused by different translation units being compiled 
with different visibility settings.
ld: warning: direct access in void 
Alembic::Abc::v6::ISchema<Alembic::AbcGeom::v6::PolyMeshSchemaInfo>::init<boost:
:shared_ptr<Alembic::AbcCoreAbstract::v6::CompoundPropertyReader> 
>(boost::shared_ptr<Alembic::AbcCoreAbstract::v6::CompoundPropertyReader>, 
std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&, Alembic::Abc::v6::Argument const&, 
Alembic::Abc::v6::Argument const&) to global weak symbol 
Alembic::Util::v6::Exception::~Exception() means the weak symbol cannot be 
overridden at runtime. This was likely caused by different translation units 
being compiled with different visibility settings.
ld: warning: direct access in 
Alembic::Util::v6::Exception::Exception(Alembic::Util::v6::Exception const&) to 
global weak symbol vtable for Alembic::Util::v6::Exception means the weak 
symbol cannot be overridden at runtime. This was likely caused by different 
translation units being compiled with different visibility settings.
ld: warning: direct access in 
Alembic::Util::v6::Exception::Exception(std::__1::basic_string<char, 
std::__1::char_traits<char>, std::__1::allocator<char> > const&) to global weak 
symbol vtable for Alembic::Util::v6::Exception means the weak symbol cannot be 
overridden at runtime. This was likely caused by different translation units 
being compiled with different visibility settings.

Original comment by sabotag...@gmail.com on 1 Dec 2013 at 2:11

GoogleCodeExporter commented 9 years ago
There isn't a way yet to turn off HDF5 support via the build system.
It shouldn't be too hard to leave off AbcCoreHDF5 from compiling, but 
AbcCoreFactory would need some light modification so it doesn't try to use 
AbcCoreHDF5.

Are all the architectures you are testing on all little-endian?
Ogawa is explicitly little-endian, and support for reading and writing from 
big-endian archictectures have yet to be implemented. (an exception will be 
thrown)

Original comment by miller.lucas on 2 Dec 2013 at 7:35

GoogleCodeExporter commented 9 years ago

Original comment by miller.lucas on 2 Dec 2013 at 7:50

GoogleCodeExporter commented 9 years ago
Hello thank you for your reply. I tested only on the IOS 7.0 simulators at the 
moment which are i386 and x86_64. And Ogawa is working fine I can read a simple 
abc file. 
We need only reading with Ogawa. We haven't yet tested on a device and I guess 
arm64 will be the trickiest architecture to pursue. I will test on a arm7 in 
the next few days. Will it be hard to get Ogawa reading from little-endian 
architecture ?

Original comment by sabotag...@gmail.com on 3 Dec 2013 at 9:12

GoogleCodeExporter commented 9 years ago
Arm is biendian and usually defaults to little-endian so you should be ok.

Original comment by miller.lucas on 3 Dec 2013 at 6:04

GoogleCodeExporter commented 9 years ago
Thanks a lot I will try it out

Original comment by sabotag...@gmail.com on 3 Dec 2013 at 6:41

GoogleCodeExporter commented 9 years ago
How did it go?

Original comment by miller.lucas on 9 Dec 2013 at 6:57

GoogleCodeExporter commented 9 years ago
I am still waiting for the developer license. But so far everything works good 
on the simulator. I will post my results when I get it.

Original comment by sabotag...@gmail.com on 9 Dec 2013 at 7:37

GoogleCodeExporter commented 9 years ago

Original comment by miller.lucas on 11 Dec 2013 at 12:46

GoogleCodeExporter commented 9 years ago
I can confirm it works on armv7 without a single problem, I have tested and run 
it on Iphone 4. I don't have access to arm64 but I think it should work.

Original comment by sabotag...@gmail.com on 15 Dec 2013 at 2:43

GoogleCodeExporter commented 9 years ago

Original comment by miller.lucas on 25 Jun 2014 at 9:55