And to go back to my original point: If I use CMake (with any version of
1.8.x) I get undefined externals for functions with _shared_ in the middle
of their names.


Looking closer -- it appears that there's a number of functions defined I
H5Oshared.h that get renamed using the C Preprocessor.

Looking at the pre-processed source code, I'd say there's actually a
bug/feature in the OS X linker that's causing this problem. A method is
defined static in H5Oshared.h, and then a pointer to the function is used
to initialize a structure member.

This problem goes away if I remove the 'static H5_inline' from the
function definitions in H5Oshared.h

As it happens it seems like there were some contradictory things going on
here:

1. If you declare a function 'inline' and then use it's address, it can't
be inlined.
2. If the function is static, there is no need to rename it in separate
compilation units. If you go to the trouble of renaming it, it doesn't
need to be static.

If I remove the 'static H5_inline' from the function definitions in
H5Oshared.h, the library builds on OS X with CMake.

This doesn't explain why it DOES build if you use the autoconf-generated
Makefiles.

My brain hurts!

On 3/15/11 2:08 PM, "Williams, Norman K" <[email protected]>
wrote:

>
>./src/H5Osdspace.c:#define H5O_SHARED_ENCODE  H5O_sdspace_shared_encode
>./src/H5Osdspace.c:    H5O_sdspace_shared_encode, /* encode message */
>
>
>What gives?
>
>Linking C shared library ../bin/libhdf5.dylib
>Undefined symbols:
>  "_H5O_sdspace_shared_encode", referenced from:
>      _H5O_MSG_SDSPACE in H5Osdspace.c.o



________________________________
Notice: This UI Health Care e-mail (including attachments) is covered by the 
Electronic Communications Privacy Act, 18 U.S.C. 2510-2521, is confidential and 
may be legally privileged.  If you are not the intended recipient, you are 
hereby notified that any retention, dissemination, distribution, or copying of 
this communication is strictly prohibited.  Please reply to the sender that you 
have received the message in error, then delete it.  Thank you.
________________________________

_______________________________________________
Hdf-forum is for HDF software users discussion.
[email protected]
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org

Reply via email to