Martin, >we have a large number of #ifdef conditions throughout the code, which >must work on many platforms (and some of the code on realtime systems >such as VxWorks.) This is not a problem for CINT. CINT can handle #ifdefs without preprocessor. >In addition, there are situations where actual >keywords such as inline, const, or static are #define'd to allow >compilation especially with cross-compilers. This one, you are likely needing preprocessor. In many cases, using #define for inline causes problem. >Sun-Solaris is the only platform where rootcint has problems; on Linux, >SGI, and I believe on DEC Unix (where I didn't do the test myself) it >works fine with the -p option. Now if I had to work around that for the >benefit of the Sun compiler that would be a lot of work. In this case, for Linux, SGI and DEC, you do not have ROOT special symbols derived from ClassDef. I think it is fine for you. Anyway, I understand that you have problem only on Solaris. >I wonder. So Cint in the end calls compiled code. But if the >rootcint-generated glue code uses a different set of header files for >its thing, isn't there the possibility of a mismatch between how >rootcint believes a function is prototyped and what the compiler thinks? >Maybe I got lucky and rootcint's headers are basically the same for GNU >on Linux so that it doesn't show? Again, I build the shared libs fine >with preprocessing there. This is completely different issue. You do not have mismatch within a single platform. Cint sees the same header file for glue code and the real thing. I do not explain the detail here, this is the magic of rootcint. >That's the situation... Did I mention that Sun/Solaris is one the two >main computing platforms in the PHENIX experiment (the other one is >Linux)? I hope there is a somewhat simple solution. My recommendation is as follows. First, please try to eliminate #defines uses in place of inline functions and string constant. Cint accepts #defines as integer or floating number constant. Other #defines are likely to cause some problems. It is the best practice to avoid such #defines and build dictionary without preprocessor . If this is impossible, things can be tricky. Please send me a part of preprocessed header file which causes the problem. I'll try to find a solution . Masaharu Goto
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:29 MET