Folks,

I am responsible for the software called areaDetector which provides control of 
2-D detectors and other devices for the EPICS control system.

http://cars.uchicago.edu/software/epics/areaDetector.html
http://www.aps.anl.gov/epics/

One of the things I have done recently is to add a new repository where the 
HDF5 source code is packaged in a way that allows it to be built with the EPICS 
build system.

https://github.com/areaDetector/ADSupport

This allows us to build it from source code on any platform that EPICS 
supports, including Windows (Visual Studio or MinGW), Linux, and vxWorks.  For 
vxWorks this is really the only practical mechanism, since it requires 
cross-compiling and the normal Linux "configure" scripts won't work.  The 
README.epics file in that repository explains exactly what I did for each 
platform to support this build mechanism.  Supporting HDF5 on vxWorks is really 
desirable because that is the real-time operating system that is used in many 
EPICS installations for controlling VME data acquisition devices.

On vxWorks it is working in the sense that I have successfully saved HDF5 files 
and verified that they can be read using the h5dump utility on Linux.  It is 
working for uncompressed files, and files with szip and zlib compression.

However, I am having one problem building H5T.c which I wonder if you might be 
able to help me with.  If I build the unmodified version of H5T.c I get the 
following errors:

../H5T.c: In function 'H5T__init_package':
../H5T.c:931: error: 'H5T_INIT_TYPE_ULONG_CORE' undeclared (first use in this 
function)
../H5T.c:931: error: (Each undeclared identifier is reported only once
../H5T.c:931: error: for each function it appears in.)
../H5T.c:931: error: expected ';' before 'if'
../H5T.c:934: error: expected ';' before 'if'
../H5T.c:937: error: expected ';' before 'if'
../H5T.c:940: error: expected ';' before 'if'
../H5T.c: In function 'H5T_path_find':
../H5T.c:4497: warning: passing argument 1 of 'H5T_copy' discards qualifiers 
from pointer target type
../H5T.c:4499: warning: passing argument 1 of 'H5T_copy' discards qualifiers 
from pointer target type
make[1]: *** [H5T.o] Error 1
make[1]: Leaving directory 
`/home/epics/devel/areaDetector-2-5/ADSupport/supportApp/hdf5Src/O.vxWorks-ppc32'
make: *** [install.vxWorks-ppc32] Error 2

However, if I don't compile these 4 lines on vxWorks it builds fine:

#ifndef H5_HAVE_VXWORKS
/* These functions are not working on vxWorks, need to figure out why */
    /* Little-endian 32-bit UNIX time_t */
    H5T_INIT_TYPE(TIME, H5T_UNIX_D32LE_g, COPY, std_u32le, NOSET, -)

    /* Big-endian 32-bit UNIX time_t */
    H5T_INIT_TYPE(TIME, H5T_UNIX_D32BE_g, COPY, std_u32be, NOSET, -)

    /* Little-endian 64-bit UNIX time_t */
    H5T_INIT_TYPE(TIME, H5T_UNIX_D64LE_g, COPY, std_u64le, NOSET, -)

    /* Big-endian 64-bit UNIX time_t */
    H5T_INIT_TYPE(TIME, H5T_UNIX_D64BE_g, COPY, std_u64be, NOSET, -)
#endif

The vxWorks cross-compiler version is:

ccppc (Wind River VxWorks G++ 4.3-315) 4.3.3.

I suspect the problem is that some data type is not correctly defined on 
vxWorks, but I have not been able to figure out exactly what is wrong.  The 
H5T_INIT_TYPE macro is quite deeply nested, and I am stumped.

I am hoping you might be able to tell me what would cause these 4 lines to fail 
to compile.

Thanks very much,
Mark






_______________________________________________
Hdf-forum is for HDF software users discussion.
[email protected]
http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
Twitter: https://twitter.com/hdf5

Reply via email to