Rootcint on OS X 10.9 and stdint.h

Hi,

I have a problem with rootcint and stdint.h since moving to OS X 10.9. Here is a simple example:

VDis.h:
#include <stdint.h>

class VDis
{
VDis() {}
~VDis() {}
};

VDisLinkDef.h :
#ifdef CINT
#pragma link C++ class VDis+;
#endif

rootcint -f VDis_Dic.cpp -c -p VDis.h VDisLinkDef.h
Error: class,struct,union or type __signed not defined /usr/include/sys/_types/_int8_t.h:30:
Error: class,struct,union or type int8_t not defined /usr/include/stdint.h:29:
Error: class,struct,union or type int8_t not defined /usr/include/stdint.h:40:
Warning: Error occurred during reading source files
Warning: Error occurred during dictionary source generation
!!!Removing VDis_Dic.cpp VDis_Dic.h !!!
Error: rootcint: error loading headers…

I’ve tried it on a sl6 linux box and it works without problems there.

best regards,

Gernot

Hi Gernot,

Did you find a solution to this problem? I have 10.9 Mac Os, Xcode 5.02 and the mac command tools as of Oct 22. My root version is 5.34.12 and I still see the same error as you do unsung CINT.

We also saw a problem with the library stdint.h in compiled code and we have to move all our variable types to root native ones and away from stdint.h types for our code to compile. I don’t think this is a CINT error but maybe a clang problem or a problem with the new _types libraries in the Mac.
What is your take?

Thanks

Berta

Hi Berta,

I still have the same problem - need some help from the experts.

best regards,

Gernot

Hi Rooters,

I am having the same issue. Is there any solution to this?

Cheers,

H

The stdint.h of OSX 10.9 is too complex for CINT to process. Please don’t use types or constants from this header in your own header in ROOT 5. In ROOT 6 there is no header complexity limitation and there is will work fine.

Cheers, Fons.

Has anyone found a work around on this? Is this a problem with 10.10 as well?

Cheers,
Chris

Hi,

The workarounds are: hide stdint.h from the interpreter / I/O or use ROOT 6.

Cheers, Axel.

There is also another workaround which have worked for me. Instead of including stdint.h include only the header files you really need. In my case I need only the definitions of some integer types. Please find below my include statements. Maybe thsi helps to overcome the problem.

Ciao

Florian

#ifdef APPLE
#include <_types/_uint8_t.h>
#include <_types/_uint16_t.h>
#include <_types/_uint32_t.h>
#include <_types/_uint64_t.h>
#else
#include <stdint.h>
#endif