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.
Made reporting of the test status global by handling the output
via a module. Cleaned-up output to the terminal.
Description:
Put writing the test status as a call to a subroutine
instead of on a per account basis.
Added the dependency of compiling in the correct order
in the Makefiles for use of the Module.
Description:
The fortran Makefile.am used HDF_FORTRAN to indicate it is part of the
Fortran API source so that conclude.am will give fortran api prefix in the
test output. The symbox HDF_FORTRAN is also used in configure for a different
purpose (indicated --enable-fortran). They conflicted.
Similar problem for the symbol HDF_CXX.
Solution:
Changed all the involved Makefile.am to use "FORTRAN_API" instead. It is
a more appropriate name. Same for CXX_API.
Along the way, discovered that the Makefile.am of hl/fortran/test and
hl/cxx/test did not have those symbols at all. Added them in.
Platform tested:
Kagiso only. It is a trivia change.
Cleaned up unused code (i.e. commented out) and removed extraneous output to standard out.
Tested:
N/A - No critical executable source lines were modified, only comments and write statements.
Fixed validation failure when compiled with -i8 and the g95 compiler
Description:
Fixed "off by one error" when converting C character buffer
into fortran character buffer in h5aget_name_by_idx_c