We check for all the available reals in Fortran and if 16 byte real is available in Fortran and not in C then we disable the 16 byte real in Fortran. Also added the test for 12 byte real in Fortran so that it can match the 12 byte float in C if available. Note: if KIND=10 and KIND=16 are both avaiable as when using g95, then it may be the case on some systems that the size of KIND=10 and KIND=16 are both 16 bytes, so the program will print twice in H5fort_type_defines.h
#define H5_FORTRAN_HAS_REAL_16
which should not cause any errors.
Removed refences to "double" so that we don't distinguish between writeDoubleToFiles and writeFloatToFiles such that we match the definitions of c_float_4, c_float_8, and c_float_16 in H5f90i_gen.h
Changed the datatype test programs such that we don't distinguish between writeDoubleToFiles and writeFloatToFiles so that we only define c_float_4, c_float_8, and c_float_16 in H5f90i_gen.h
Added the definition of real_4_f, real_8_f, real_16_f depending on if they are available, also in H5f90i_gen.h
The custom rules for installing h5cc, h5fc, and the fortran modules in fortran
and in hl/fortran don't use $(DESTDIR). Added it to all those rules.
Tested: kagiso both serial and parallel with fortran and cxx enabled.
Tested by:
make install
make DESTDIR=/tmp/acheng install
diff -r /tmp/acheng/.../hdf5 hdf5
Description:
We recently moved the Windows-specific fortran source code into a separate file for specifying DLL exports. However there were a couple definitions missing in the port from 1.8 to the trunk branch. This checkin correctly includes the .def file into our Windows project, and adds the missing definitions to hdf5_fortrandll.def.
Tested:
VS2005 on WinXP
In nh5tget_offset_c:
(1) The return value type of H5Tget_offset was set to size_t where
it should be of type int.
(2) Was if offset was equal to 0 it returned the error code of -1 back to
Fortran, this was changed to return an error code of -1 when the
offset value is < 0.
In h5tget_norm_c:
(1) was if the return value of H5Tget_norm = 0 it would return an error
code to Fortran, but from enum of the return value:
typedef enum H5T_norm_t {
H5T_NORM_ERROR = -1, /*error */
H5T_NORM_IMPLIED = 0, /*msb of mantissa isn't stored, always 1 */
H5T_NORM_MSBSET = 1, /*msb of mantissa is always 1 */
H5T_NORM_NONE = 2 /*not normalized */
/*H5T_NORM_NONE must be last */
} H5T_norm_t;
only when -1 is returned is there an error, changed it to return an error
only if the value of H5T_NORM_ERROR = -1.
Remove trailing whitespace from C/C++ source files, with the following
script:
foreach f (*.[ch] *.cpp)
sed 's/[[:blank:]]*$//' $f > sed.out && mv sed.out $f
end
Tested on:
Mac OS X/32 10.5.5 (amazon)
No need for h5committest, just whitespace changes...
Compiles either H5test_kind.f90 or H5test_kind_SIZEOF.f90 depending on the availability of intrinsic Fortran function SIZEOF (indicated by the status of FORTRAN_HAVE_SIZEOF).
Was not returning the correct fortran types when -i8 and -r8 flag was specified, fixed. This code is now depreciated and only used when SIZEOF function is not available, H5test_kind_SIZEOF.f90 should be used instead.
H5test_kind_SIZEOF.f90 is the preferred portable program used for Fortran type detection. It uses the intrinsic Fortran function SIZEOF. This program should be used instead of H5test_kind.f90 if the SIZEOF function is available. Most of the newer Fortran compilers support SIZEOF.
Put the DOUBLE PRECISION interfaces in a separate module and added a USE statement for the module. The interfaces are included/excluded depending on
the state of FORTRAN_DEFAULT_REALisDBLE_F which detects if the default REAL is DOUBLE PRECISION. This allows the library to be compiled with -r8 Fortran flag without the user needing to change the source code.
Put the DOUBLE PRECISION interfaces in a separate module. The interfaces are included/excluded depending on
the state of FORTRAN_DEFAULT_REALisDBLE_F which detects if the default REAL is DOUBLE PRECISION. This allows the library to be compiled with -r8 Fortran flag without the user needing to change the source code.
Added missing comma, i.e.
WRITE(*, "("" subroutine i"" i2.2,""()"")") j
should be
WRITE(*, "("" subroutine i"", i2.2,""()"")") j
etc...
as noted in bug 1251 and NAG compiler.
Checked the write fix using Sun f95, g95, pgf90, gfortran, ifort, absoft and all gave the correct write output.
Description:
As part of our Windows cleanup, we try to remove windows-specific tweaks in the source code. There are many instances where Windows code is introduces via ifdef's. We re-evaluate whether they are still required, and found that many of them are not. Others we change to "feature"-specific code, rather than Windows-specific.
Tested:
VS2005 on WinXP
VS.NET on WinXP
h5committest (kagisopp, smirom, linew)
Changed the error output formatting so that the
test status writes to standard out looks correct when using the
sun compiler (it did not correctly tab the output).
Uninstall target had non-existant file to remove; error_handler module triggered
a race condition for parallel make with Intel and PGI compilers, therefore we
removed the module and created a subroutine instead.
Platforms tested: kagiso with GNU, Intel and PGI compilers.
Added code to remove module files when make clean
Description:
The module files were not being removed when make clean
and caused compiling errors. fixed.