summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScot Breitenfeld <brtnfld@hdfgroup.org>2015-06-04 20:26:02 (GMT)
committerScot Breitenfeld <brtnfld@hdfgroup.org>2015-06-04 20:26:02 (GMT)
commit043173a689015960758c0276486eca9e7a223366 (patch)
treea46d5a93e1bad794cf8bac37f1e4b41a5e200b98
parent4d500d49023156f1f8ef60375e63ac22e79e1749 (diff)
downloadhdf5-043173a689015960758c0276486eca9e7a223366.zip
hdf5-043173a689015960758c0276486eca9e7a223366.tar.gz
hdf5-043173a689015960758c0276486eca9e7a223366.tar.bz2
[svn-r27151] fixed __float128 errors
-rw-r--r--Makefile.in1
-rw-r--r--c++/Makefile.in1
-rw-r--r--c++/examples/Makefile.in1
-rw-r--r--c++/src/Makefile.in1
-rw-r--r--c++/test/Makefile.in1
-rw-r--r--config/cmake/ConfigureChecks.cmake5
-rwxr-xr-xconfigure170
-rw-r--r--configure.ac25
-rw-r--r--examples/Makefile.in1
-rw-r--r--fortran/Makefile.in1
-rw-r--r--fortran/examples/Makefile.in1
-rw-r--r--fortran/src/CMakeLists.txt6
-rw-r--r--fortran/src/H5_ff.F902
-rw-r--r--fortran/src/H5config_f.inc.cmake2
-rw-r--r--fortran/src/H5config_f.inc.in4
-rw-r--r--fortran/src/H5fort_type_defines.h.in1
-rw-r--r--fortran/src/H5match_types.c34
-rw-r--r--fortran/src/Makefile.in1
-rw-r--r--fortran/test/Makefile.in1
-rw-r--r--fortran/testpar/Makefile.in1
-rw-r--r--hl/Makefile.in1
-rw-r--r--hl/c++/Makefile.in1
-rw-r--r--hl/c++/examples/Makefile.in1
-rw-r--r--hl/c++/src/Makefile.in1
-rw-r--r--hl/c++/test/Makefile.in1
-rw-r--r--hl/examples/Makefile.in1
-rw-r--r--hl/fortran/Makefile.in1
-rw-r--r--hl/fortran/examples/Makefile.in1
-rw-r--r--hl/fortran/src/Makefile.in1
-rw-r--r--hl/fortran/test/Makefile.in1
-rw-r--r--hl/src/Makefile.in1
-rw-r--r--hl/test/Makefile.in1
-rw-r--r--hl/tools/Makefile.in1
-rw-r--r--hl/tools/gif2h5/Makefile.in1
-rw-r--r--m4/aclocal_fc.m4114
-rw-r--r--src/Makefile.in1
-rw-r--r--test/Makefile.in1
-rw-r--r--testpar/Makefile.in1
-rw-r--r--tools/Makefile.in1
-rw-r--r--tools/h5copy/Makefile.in1
-rw-r--r--tools/h5diff/Makefile.in1
-rw-r--r--tools/h5dump/Makefile.in1
-rw-r--r--tools/h5import/Makefile.in1
-rw-r--r--tools/h5jam/Makefile.in1
-rw-r--r--tools/h5ls/Makefile.in1
-rw-r--r--tools/h5repack/Makefile.in1
-rw-r--r--tools/h5stat/Makefile.in1
-rw-r--r--tools/lib/Makefile.in1
-rw-r--r--tools/misc/Makefile.in1
-rw-r--r--tools/perform/Makefile.in1
50 files changed, 278 insertions, 125 deletions
diff --git a/Makefile.in b/Makefile.in
index 09c161c..10e9d76 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -356,6 +356,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/c++/Makefile.in b/c++/Makefile.in
index 7390f73..96c1a36 100644
--- a/c++/Makefile.in
+++ b/c++/Makefile.in
@@ -516,6 +516,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/c++/examples/Makefile.in b/c++/examples/Makefile.in
index aa77f81..3b82177 100644
--- a/c++/examples/Makefile.in
+++ b/c++/examples/Makefile.in
@@ -464,6 +464,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/c++/src/Makefile.in b/c++/src/Makefile.in
index e637d93..69e8abd 100644
--- a/c++/src/Makefile.in
+++ b/c++/src/Makefile.in
@@ -527,6 +527,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/c++/test/Makefile.in b/c++/test/Makefile.in
index ef150e0..147a31a 100644
--- a/c++/test/Makefile.in
+++ b/c++/test/Makefile.in
@@ -518,6 +518,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/config/cmake/ConfigureChecks.cmake b/config/cmake/ConfigureChecks.cmake
index e223553..4edec03 100644
--- a/config/cmake/ConfigureChecks.cmake
+++ b/config/cmake/ConfigureChecks.cmake
@@ -197,6 +197,11 @@ MACRO (H5MiscConversionTest VAR TEST msg)
ENDMACRO (H5MiscConversionTest)
#-----------------------------------------------------------------------------
+# Check if C has __float128 extension
+#-----------------------------------------------------------------------------
+CHECK_TYPE_SIZE("__float128" _FLOAT128)
+
+#-----------------------------------------------------------------------------
# Check various conversion capabilities
#-----------------------------------------------------------------------------
diff --git a/configure b/configure
index b6bf787..69dee64 100755
--- a/configure
+++ b/configure
@@ -729,6 +729,7 @@ PAC_FORTRAN_NATIVE_INTEGER_KIND
PAC_FC_ALL_INTEGER_KINDS_SIZEOF
PAC_FC_ALL_REAL_KINDS_SIZEOF
PAC_FC_ALL_INTEGER_KINDS
+PAC_FC_MAX_REAL_PRECISION
PAC_FC_ALL_REAL_KINDS
FCLIBS
F9XMODEXT
@@ -6969,6 +6970,24 @@ rm -f core conftest.err conftest.$ac_objext \
+
+ ## Set the sizeof function for use later in the fortran tests
+ if test "X$HAVE_STORAGE_SIZE_FORTRAN" = "Xyes";then
+ FC_SIZEOF_A="STORAGE_SIZE(a, c_size_t)/STORAGE_SIZE(c_char_'a',c_size_t)"
+ FC_SIZEOF_B="STORAGE_SIZE(b, c_size_t)/STORAGE_SIZE(c_char_'a',c_size_t)"
+ FC_SIZEOF_C="STORAGE_SIZE(c, c_size_t)/STORAGE_SIZE(c_char_'a',c_size_t)"
+ else
+ if test "X$HAVE_SIZEOF_FORTRAN" = "Xyes";then
+ FC_SIZEOF_A="SIZEOF(a)"
+ FC_SIZEOF_B="SIZEOF(a)"
+ FC_SIZEOF_C="SIZEOF(a)"
+ else
+ ## If neither intrinsic functions SIZEOF or STORAGE_SIZE is available then stop configure with an error
+ as_fn_error $? "Fortran compiler requires either intrinsic functions SIZEOF or STORAGE_SIZE" "$LINENO" 5
+ fi
+ fi
+
+
## See if C_LONG_DOUBLE is available, and if it is different from C_DOUBLE
FORTRAN_HAVE_C_LONG_DOUBLE="no"
@@ -7052,31 +7071,43 @@ else
PROGRAM main
IMPLICIT NONE
- INTEGER :: ik, k, lastkind
+ INTEGER :: ik, k, lastkind, max_decimal_prec
lastkind=SELECTED_INT_KIND(1)
- OPEN(8, FILE="pac_fconftest.out", form="formatted")
- WRITE(8,'("ik:")',ADVANCE='NO') ! Find integer KINDs
- DO ik=2,30
+ OPEN(8, FILE='pac_fconftest.out', form='formatted')
+ WRITE(8,'(A)',ADVANCE='NO') 'A' ! Find integer KINDs
+ DO ik=2,36
k = SELECTED_INT_KIND(ik)
IF (k .NE. lastkind) THEN
- WRITE(8,'(I0,A)',ADVANCE='NO') lastkind," "
+ WRITE(8,'(I0)',ADVANCE='NO') lastkind
lastkind = k
+ IF(k.GT.0) WRITE(8,'(A)',ADVANCE='NO') ' '
ENDIF
IF (k .LE. 0) EXIT
ENDDO
- IF (lastkind.NE.-1) WRITE(8,'(I0,A)',ADVANCE='NO') lastkind, " "
- WRITE(8,'(/)')
- WRITE(8,'("rk:")',ADVANCE='NO') ! Find real KINDs
+ IF (lastkind.NE.-1) THEN
+ WRITE(8,'(I0,A)',ADVANCE='NO') lastkind, 'B '
+ ELSE
+ WRITE(8,'(A)',ADVANCE='NO') 'B '
+ ENDIF
+ WRITE(8,'(A)',ADVANCE='NO') 'C' ! Find real KINDs
lastkind=SELECTED_REAL_KIND(1)
- DO ik=2,30
+ max_decimal_prec = 1
+ DO ik=2,36
k = SELECTED_REAL_KIND(ik)
IF (k .NE. lastkind) THEN
- WRITE(8,'(I0,A)',ADVANCE='NO') lastkind," "
+ WRITE(8,'(I0)',ADVANCE='NO') lastkind
lastkind = k
+ IF(k.GT.0) WRITE(8,'(A)',ADVANCE='NO') ' '
+ max_decimal_prec = ik
ENDIF
IF (k .LE. 0) EXIT
ENDDO
- IF (lastkind.NE.-1) WRITE(8,'(I0,A)',ADVANCE='NO') lastkind, " "
+ IF (lastkind.NE.-1)THEN
+ WRITE(8,'(I0,A)',ADVANCE='NO') lastkind, 'D'
+ ELSE
+ WRITE(8,'(A)',ADVANCE='NO') 'D'
+ ENDIF
+ WRITE(8,'(A,I0,A)',ADVANCE='NO') ' E',max_decimal_prec,'F'
END
@@ -7086,8 +7117,11 @@ if ac_fn_fc_try_run "$LINENO"; then :
if test -s pac_fconftest.out ; then
- pac_validIntKinds="`sed -n -e 's/^.*ik://p' pac_fconftest.out`"
- pac_validRealKinds="`sed -n -e 's/^.*rk://p' pac_fconftest.out`"
+
+ tmp="`cat pac_fconftest.out`"
+ pac_validIntKinds="`echo $tmp | sed -e 's/.*A\(.*\)B.*/\1/'`"
+ pac_validRealKinds="`echo $tmp | sed -e 's/.*C\(.*\)D.*/\1/'`"
+ PAC_FC_MAX_REAL_PRECISION="`echo $tmp | sed -e 's/.*E\(.*\)F.*/\1/'`"
PAC_FC_ALL_INTEGER_KINDS="{`echo $pac_validIntKinds | sed -e 's/ /,/g'`}"
PAC_FC_ALL_REAL_KINDS="{`echo $pac_validRealKinds | sed -e 's/ /,/g'`}"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran INTEGER KINDs" >&5
@@ -7098,6 +7132,10 @@ $as_echo "$PAC_FC_ALL_INTEGER_KINDS" >&6; }
$as_echo_n "checking for Fortran REAL KINDs... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $PAC_FC_ALL_REAL_KINDS" >&5
$as_echo "$PAC_FC_ALL_REAL_KINDS" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran REALs maximum decimal precision" >&5
+$as_echo_n "checking for Fortran REALs maximum decimal precision... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PAC_FC_MAX_REAL_PRECISION" >&5
+$as_echo "$PAC_FC_MAX_REAL_PRECISION" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Error" >&5
$as_echo "Error" >&6; }
@@ -7137,19 +7175,21 @@ rm -f pac_fconftest.out
cat > conftest.$ac_ext <<_ACEOF
- program main
- integer a
- real b
- double precision c
- open(8, file="pac_fconftest.out", form="formatted")
- write(8,*) sizeof(a)
- write(8,*) kind(a)
- write(8,*) sizeof(b)
- write(8,*) kind(b)
- write(8,*) sizeof(c)
- write(8,*) kind(c)
- close(8)
- end
+ PROGRAM main
+ USE ISO_C_BINDING
+ IMPLICIT NONE
+ INTEGER a
+ REAL b
+ DOUBLE PRECISION c
+ OPEN(8, FILE="pac_fconftest.out", FORM="formatted")
+ WRITE(8,*) $FC_SIZEOF_A
+ WRITE(8,*) kind(a)
+ WRITE(8,*) $FC_SIZEOF_B
+ WRITE(8,*) kind(b)
+ WRITE(8,*) $FC_SIZEOF_C
+ WRITE(8,*) kind(c)
+ CLOSE(8)
+ END
_ACEOF
@@ -7208,31 +7248,43 @@ else
PROGRAM main
IMPLICIT NONE
- INTEGER :: ik, k, lastkind
+ INTEGER :: ik, k, lastkind, max_decimal_prec
lastkind=SELECTED_INT_KIND(1)
- OPEN(8, FILE="pac_fconftest.out", form="formatted")
- WRITE(8,'("ik:")',ADVANCE='NO') ! Find integer KINDs
- DO ik=2,30
+ OPEN(8, FILE='pac_fconftest.out', form='formatted')
+ WRITE(8,'(A)',ADVANCE='NO') 'A' ! Find integer KINDs
+ DO ik=2,36
k = SELECTED_INT_KIND(ik)
IF (k .NE. lastkind) THEN
- WRITE(8,'(I0,A)',ADVANCE='NO') lastkind," "
+ WRITE(8,'(I0)',ADVANCE='NO') lastkind
lastkind = k
+ IF(k.GT.0) WRITE(8,'(A)',ADVANCE='NO') ' '
ENDIF
IF (k .LE. 0) EXIT
ENDDO
- IF (lastkind.NE.-1) WRITE(8,'(I0,A)',ADVANCE='NO') lastkind, " "
- WRITE(8,'(/)')
- WRITE(8,'("rk:")',ADVANCE='NO') ! Find real KINDs
+ IF (lastkind.NE.-1) THEN
+ WRITE(8,'(I0,A)',ADVANCE='NO') lastkind, 'B '
+ ELSE
+ WRITE(8,'(A)',ADVANCE='NO') 'B '
+ ENDIF
+ WRITE(8,'(A)',ADVANCE='NO') 'C' ! Find real KINDs
lastkind=SELECTED_REAL_KIND(1)
- DO ik=2,30
+ max_decimal_prec = 1
+ DO ik=2,36
k = SELECTED_REAL_KIND(ik)
IF (k .NE. lastkind) THEN
- WRITE(8,'(I0,A)',ADVANCE='NO') lastkind," "
+ WRITE(8,'(I0)',ADVANCE='NO') lastkind
lastkind = k
+ IF(k.GT.0) WRITE(8,'(A)',ADVANCE='NO') ' '
+ max_decimal_prec = ik
ENDIF
IF (k .LE. 0) EXIT
ENDDO
- IF (lastkind.NE.-1) WRITE(8,'(I0,A)',ADVANCE='NO') lastkind, " "
+ IF (lastkind.NE.-1)THEN
+ WRITE(8,'(I0,A)',ADVANCE='NO') lastkind, 'D'
+ ELSE
+ WRITE(8,'(A)',ADVANCE='NO') 'D'
+ ENDIF
+ WRITE(8,'(A,I0,A)',ADVANCE='NO') ' E',max_decimal_prec,'F'
END
@@ -7242,8 +7294,11 @@ if ac_fn_fc_try_run "$LINENO"; then :
if test -s pac_fconftest.out ; then
- pac_validIntKinds="`sed -n -e 's/^.*ik://p' pac_fconftest.out`"
- pac_validRealKinds="`sed -n -e 's/^.*rk://p' pac_fconftest.out`"
+
+ tmp="`cat pac_fconftest.out`"
+ pac_validIntKinds="`echo $tmp | sed -e 's/.*A\(.*\)B.*/\1/'`"
+ pac_validRealKinds="`echo $tmp | sed -e 's/.*C\(.*\)D.*/\1/'`"
+ PAC_FC_MAX_REAL_PRECISION="`echo $tmp | sed -e 's/.*E\(.*\)F.*/\1/'`"
PAC_FC_ALL_INTEGER_KINDS="{`echo $pac_validIntKinds | sed -e 's/ /,/g'`}"
PAC_FC_ALL_REAL_KINDS="{`echo $pac_validRealKinds | sed -e 's/ /,/g'`}"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran INTEGER KINDs" >&5
@@ -7254,6 +7309,10 @@ $as_echo "$PAC_FC_ALL_INTEGER_KINDS" >&6; }
$as_echo_n "checking for Fortran REAL KINDs... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $PAC_FC_ALL_REAL_KINDS" >&5
$as_echo "$PAC_FC_ALL_REAL_KINDS" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran REALs maximum decimal precision" >&5
+$as_echo_n "checking for Fortran REALs maximum decimal precision... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PAC_FC_MAX_REAL_PRECISION" >&5
+$as_echo "$PAC_FC_MAX_REAL_PRECISION" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Error" >&5
$as_echo "Error" >&6; }
@@ -7294,12 +7353,14 @@ for kind in $pac_validIntKinds; do
cat > conftest.$ac_ext <<_ACEOF
- program main
- integer (kind=$kind) a
- open(8, file="pac_fconftest.out", form="formatted")
- write(8,'(I0)') sizeof(a)
- close(8)
- end
+ PROGRAM main
+ USE ISO_C_BINDING
+ IMPLICIT NONE
+ INTEGER (KIND=$kind) a
+ OPEN(8, FILE="pac_fconftest.out", FORM="formatted")
+ WRITE(8,'(I0)') $FC_SIZEOF_A
+ CLOSE(8)
+ END
_ACEOF
@@ -7354,12 +7415,14 @@ for kind in $pac_validRealKinds; do
cat > conftest.$ac_ext <<_ACEOF
- program main
- REAL (kind=$kind) :: a
- open(8, file="pac_fconftest.out", form="formatted")
- write(8,'(I0)') sizeof(a)
- close(8)
- end
+ PROGRAM main
+ USE ISO_C_BINDING
+ IMPLICIT NONE
+ REAL (KIND=$kind) :: a
+ OPEN(8, FILE="pac_fconftest.out", FORM="formatted")
+ WRITE(8,'(I0)') $FC_SIZEOF_A
+ CLOSE(8)
+ END
_ACEOF
@@ -7412,6 +7475,7 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
## Setting definition if there is a 16 byte fortran integer
if `echo $PAC_FC_ALL_INTEGER_KINDS_SIZEOF | grep '16' >/dev/null`; then
HAVE_Fortran_INTEGER_SIZEOF_16="1"
@@ -7431,10 +7495,6 @@ $as_echo "#define HAVE_Fortran_INTEGER_SIZEOF_16 0" >>confdefs.h
##PAC_FC_AVAIL_INTEGER_MODELS
- ## If neither intrinsic functions SIZEOF or STORAGE_SIZE is available then stop configure with an error
- if test "X$HAVE_SIZEOF_FORTRAN" = "Xno" && test "X$HAVE_STORAGE_SIZE_FORTRAN" = "Xno"; then
- as_fn_error $? "Fortran compiler requires either intrinsic functions SIZEOF or STORAGE_SIZE" "$LINENO" 5
- fi
if test "X$HAVE_STORAGE_SIZE_FORTRAN" = "Xyes"; then
diff --git a/configure.ac b/configure.ac
index d5e0919..ce5c8cd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -429,6 +429,24 @@ if test "X$HDF_FORTRAN" = "Xyes"; then
## See if the fortran compiler supports the intrinsic function "STORAGE_SIZE"
PAC_PROG_FC_STORAGE_SIZE
+
+ ## Set the sizeof function for use later in the fortran tests
+ if test "X$HAVE_STORAGE_SIZE_FORTRAN" = "Xyes";then
+ FC_SIZEOF_A="STORAGE_SIZE(a, c_size_t)/STORAGE_SIZE(c_char_'a',c_size_t)"
+ FC_SIZEOF_B="STORAGE_SIZE(b, c_size_t)/STORAGE_SIZE(c_char_'a',c_size_t)"
+ FC_SIZEOF_C="STORAGE_SIZE(c, c_size_t)/STORAGE_SIZE(c_char_'a',c_size_t)"
+ else
+ if test "X$HAVE_SIZEOF_FORTRAN" = "Xyes";then
+ FC_SIZEOF_A="SIZEOF(a)"
+ FC_SIZEOF_B="SIZEOF(a)"
+ FC_SIZEOF_C="SIZEOF(a)"
+ else
+ ## If neither intrinsic functions SIZEOF or STORAGE_SIZE is available then stop configure with an error
+ AC_MSG_ERROR([Fortran compiler requires either intrinsic functions SIZEOF or STORAGE_SIZE])
+ fi
+ fi
+
+
## See if C_LONG_DOUBLE is available, and if it is different from C_DOUBLE
PAC_PROG_FC_HAVE_C_LONG_DOUBLE
@@ -442,6 +460,7 @@ if test "X$HDF_FORTRAN" = "Xyes"; then
PAC_FC_SIZEOF_REAL_KINDS
AC_SUBST([PAC_FC_ALL_REAL_KINDS])
+ AC_SUBST([PAC_FC_MAX_REAL_PRECISION])
AC_SUBST([PAC_FC_ALL_INTEGER_KINDS])
AC_SUBST([PAC_FC_ALL_REAL_KINDS_SIZEOF])
AC_SUBST([PAC_FC_ALL_INTEGER_KINDS_SIZEOF])
@@ -467,11 +486,7 @@ if test "X$HDF_FORTRAN" = "Xyes"; then
##fi
##PAC_FC_AVAIL_INTEGER_MODELS
-
- ## If neither intrinsic functions SIZEOF or STORAGE_SIZE is available then stop configure with an error
- if test "X$HAVE_SIZEOF_FORTRAN" = "Xno" && test "X$HAVE_STORAGE_SIZE_FORTRAN" = "Xno"; then
- AC_MSG_ERROR([Fortran compiler requires either intrinsic functions SIZEOF or STORAGE_SIZE])
- fi
+
if test "X$HAVE_STORAGE_SIZE_FORTRAN" = "Xyes"; then
AC_DEFINE([FORTRAN_HAVE_STORAGE_SIZE], [1], [Define if we have Fortran intrinsic STORAGE_SIZE])
diff --git a/examples/Makefile.in b/examples/Makefile.in
index 3140a07..29e414b 100644
--- a/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -464,6 +464,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/fortran/Makefile.in b/fortran/Makefile.in
index 8359314..5fd05e7 100644
--- a/fortran/Makefile.in
+++ b/fortran/Makefile.in
@@ -520,6 +520,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/fortran/examples/Makefile.in b/fortran/examples/Makefile.in
index bc82f9f..5db1685 100644
--- a/fortran/examples/Makefile.in
+++ b/fortran/examples/Makefile.in
@@ -464,6 +464,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/fortran/src/CMakeLists.txt b/fortran/src/CMakeLists.txt
index 03db548..5317346 100644
--- a/fortran/src/CMakeLists.txt
+++ b/fortran/src/CMakeLists.txt
@@ -27,7 +27,13 @@ if (H5_HAVE_PARALLEL)
set (CMAKE_H5_HAVE_PARALLEL 1)
endif (H5_HAVE_PARALLEL)
+set (CMAKE_H5_HAVE_FLOAT128 0)
+if (HAVE_FLOAT128)
+ set (CMAKE_H5_HAVE_FLOAT128 1)
+endif(HAVE_FLOAT128)
+
configure_file (${HDF5_F90_SRC_SOURCE_DIR}/H5config_f.inc.cmake ${CMAKE_BINARY_DIR}/H5config_f.inc @ONLY)
+configure_file (${HDF5_F90_SRC_SOURCE_DIR}/H5fort_type_defines.h.in ${HDF5_F90_BINARY_DIR}/H5fort_type_defines.h @ONLY)
#-----------------------------------------------------------------------------
# Setup the Fortran auto-detection utilities
diff --git a/fortran/src/H5_ff.F90 b/fortran/src/H5_ff.F90
index f4090cc..aba9d1b 100644
--- a/fortran/src/H5_ff.F90
+++ b/fortran/src/H5_ff.F90
@@ -391,7 +391,7 @@ CONTAINS
h5_type = H5T_NATIVE_REAL_C_DOUBLE
ELSE IF(kind.EQ.Fortran_REAL_C_LONG_DOUBLE)THEN
h5_type = H5T_NATIVE_REAL_C_LONG_DOUBLE
-#if H5_HAVE_FLOAT128!=0
+#if H5_PAC_FC_MAX_REAL_PRECISION > 28
ELSE IF(kind.EQ.Fortran_REAL_C_FLOAT128)THEN
h5_type = H5T_NATIVE_FLOAT_128
#endif
diff --git a/fortran/src/H5config_f.inc.cmake b/fortran/src/H5config_f.inc.cmake
index cb1d9e8..9fbc987 100644
--- a/fortran/src/H5config_f.inc.cmake
+++ b/fortran/src/H5config_f.inc.cmake
@@ -28,7 +28,7 @@
#undef H5_FORTRAN_HAVE_C_SIZEOF
#endif
-! Define if the intrinsic function FORTRAN_HAVE_C_LONG_DOUBLE exists
+! Define if the intrinsic C_LONG_DOUBLE exists
#define H5_FORTRAN_HAVE_C_LONG_DOUBLE @FORTRAN_HAVE_C_LONG_DOUBLE@
#if H5_FORTRAN_HAVE_C_LONG_DOUBLE==0
diff --git a/fortran/src/H5config_f.inc.in b/fortran/src/H5config_f.inc.in
index b227c13..a28480c 100644
--- a/fortran/src/H5config_f.inc.in
+++ b/fortran/src/H5config_f.inc.in
@@ -24,8 +24,8 @@
! Define the size of C's long double
#undef SIZEOF_LONG_DOUBLE
-! Define if the C intrinsic __FLOAT128 exists
-#undef HAVE_FLOAT128
+! Define the maximum decimal precision for reals
+#undef PAC_FC_MAX_REAL_PRECISION
! Define if INTEGER*16 is available
#undef HAVE_Fortran_INTEGER_SIZEOF_16
diff --git a/fortran/src/H5fort_type_defines.h.in b/fortran/src/H5fort_type_defines.h.in
index 9e8015c..dc2fc94 100644
--- a/fortran/src/H5fort_type_defines.h.in
+++ b/fortran/src/H5fort_type_defines.h.in
@@ -11,6 +11,7 @@
#define H5_FORTRAN_INTEGER_KINDS_SIZEOF @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
#define H5_FORTRAN_REAL_KINDS @PAC_FC_ALL_REAL_KINDS@
#define H5_FORTRAN_REAL_KINDS_SIZEOF @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+#define H5_PAC_FC_MAX_REAL_PRECISION @PAC_FC_MAX_REAL_PRECISION@
#define H5_HAVE_Fortran_INTEGER_SIZEOF_16 @HAVE_Fortran_INTEGER_SIZEOF_16@
#define C_LONG_DOUBLE_KIND 10
#define C_LONG_DOUBLE_SIZEOF 12
diff --git a/fortran/src/H5match_types.c b/fortran/src/H5match_types.c
index 2067f60..5ac5c80 100644
--- a/fortran/src/H5match_types.c
+++ b/fortran/src/H5match_types.c
@@ -206,28 +206,28 @@ int main(void)
/* (b) Define c_float_x */
- /* make sure we find long double first before checking for __float128
- * ideally we need to match precision instead of matching sizeof */
-
- int found_longdb = 0;
+ int found_long_double = 0;
for(i=0;i< H5_FORTRAN_NUM_REAL_KINDS;i++) {
+
+ if (sizeof(float) == RealKinds_SizeOf[i]) {
+ writeTypedef("float", "float", RealKinds[i]);
+ strcpy(Real_C_TYPES[i], "C_FLOAT");
+ } else if(sizeof(double) == RealKinds_SizeOf[i]) {
+ writeTypedef("float", "double", RealKinds[i]);
+ strcpy(Real_C_TYPES[i], "C_DOUBLE");
+ } else if(sizeof(long double) == RealKinds_SizeOf[i] && found_long_double == 0) {
+ writeTypedef("float", "long double", RealKinds[i]);
+ strcpy(Real_C_TYPES[i], "C_LONG_DOUBLE");
+ found_long_double = 1;
+ }
#ifdef H5_HAVE_FLOAT128
- if(sizeof(__float128) == RealKinds_SizeOf[i] && found_longdb == 1) {
+ /* Don't select a higher precision than Fortran can support */
+ else if(sizeof(__float128) == RealKinds_SizeOf[i] && found_long_double == 1 && H5_PAC_FC_MAX_REAL_PRECISION > 28) {
writeTypedef("float", "__float128", RealKinds[i]);
strcpy(Real_C_TYPES[i], "C_FLOAT128");
- } else
+ }
#endif
- if(sizeof(long double) == RealKinds_SizeOf[i]) {
- found_longdb = 1;
- writeTypedef("float", "long double", RealKinds[i]);
- strcpy(Real_C_TYPES[i], "C_LONG_DOUBLE");
- } else if(sizeof(double) == RealKinds_SizeOf[i]) {
- writeTypedef("float", "double", RealKinds[i]);
- strcpy(Real_C_TYPES[i], "C_DOUBLE");
- } else if(sizeof(float) == RealKinds_SizeOf[i]) {
- writeTypedef("float", "float", RealKinds[i]);
- strcpy(Real_C_TYPES[i], "C_FLOAT");
- } else {
+ else {
printf(" **** HDF5 WARNING ****/n");
printf("Fortran REAL is %d bytes, but no corresponding C floating type exists\n",RealKinds_SizeOf[i]);
printf("Fortran Interfaces for Fortran REALs of %d bytes will not exist\n",RealKinds_SizeOf[i]);
diff --git a/fortran/src/Makefile.in b/fortran/src/Makefile.in
index 8aea063..eaf0244 100644
--- a/fortran/src/Makefile.in
+++ b/fortran/src/Makefile.in
@@ -565,6 +565,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/fortran/test/Makefile.in b/fortran/test/Makefile.in
index a8a207e..eb132fb 100644
--- a/fortran/test/Makefile.in
+++ b/fortran/test/Makefile.in
@@ -576,6 +576,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/fortran/testpar/Makefile.in b/fortran/testpar/Makefile.in
index 000d2f0..3b924f2 100644
--- a/fortran/testpar/Makefile.in
+++ b/fortran/testpar/Makefile.in
@@ -516,6 +516,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/hl/Makefile.in b/hl/Makefile.in
index b9291d0..b845fbf 100644
--- a/hl/Makefile.in
+++ b/hl/Makefile.in
@@ -520,6 +520,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/hl/c++/Makefile.in b/hl/c++/Makefile.in
index 8593085..cc05017 100644
--- a/hl/c++/Makefile.in
+++ b/hl/c++/Makefile.in
@@ -516,6 +516,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/hl/c++/examples/Makefile.in b/hl/c++/examples/Makefile.in
index 6633339..2867e2b 100644
--- a/hl/c++/examples/Makefile.in
+++ b/hl/c++/examples/Makefile.in
@@ -463,6 +463,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/hl/c++/src/Makefile.in b/hl/c++/src/Makefile.in
index 1377756..50e3d3f 100644
--- a/hl/c++/src/Makefile.in
+++ b/hl/c++/src/Makefile.in
@@ -519,6 +519,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/hl/c++/test/Makefile.in b/hl/c++/test/Makefile.in
index cae4d25..9ef27d1 100644
--- a/hl/c++/test/Makefile.in
+++ b/hl/c++/test/Makefile.in
@@ -516,6 +516,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/hl/examples/Makefile.in b/hl/examples/Makefile.in
index b21c80d..fe03288 100644
--- a/hl/examples/Makefile.in
+++ b/hl/examples/Makefile.in
@@ -463,6 +463,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/hl/fortran/Makefile.in b/hl/fortran/Makefile.in
index 192b062..296d21a 100644
--- a/hl/fortran/Makefile.in
+++ b/hl/fortran/Makefile.in
@@ -520,6 +520,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/hl/fortran/examples/Makefile.in b/hl/fortran/examples/Makefile.in
index f974fad..c905cb0 100644
--- a/hl/fortran/examples/Makefile.in
+++ b/hl/fortran/examples/Makefile.in
@@ -463,6 +463,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/hl/fortran/src/Makefile.in b/hl/fortran/src/Makefile.in
index eb8865e..9a6511a 100644
--- a/hl/fortran/src/Makefile.in
+++ b/hl/fortran/src/Makefile.in
@@ -540,6 +540,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/hl/fortran/test/Makefile.in b/hl/fortran/test/Makefile.in
index 1a06949..7d41c72 100644
--- a/hl/fortran/test/Makefile.in
+++ b/hl/fortran/test/Makefile.in
@@ -528,6 +528,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/hl/src/Makefile.in b/hl/src/Makefile.in
index 0f6187d..6d40b4f 100644
--- a/hl/src/Makefile.in
+++ b/hl/src/Makefile.in
@@ -518,6 +518,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/hl/test/Makefile.in b/hl/test/Makefile.in
index dc63ead..b73370c 100644
--- a/hl/test/Makefile.in
+++ b/hl/test/Makefile.in
@@ -555,6 +555,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/hl/tools/Makefile.in b/hl/tools/Makefile.in
index d133ddb..9322ef4 100644
--- a/hl/tools/Makefile.in
+++ b/hl/tools/Makefile.in
@@ -517,6 +517,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/hl/tools/gif2h5/Makefile.in b/hl/tools/gif2h5/Makefile.in
index 7213967..4373a06 100644
--- a/hl/tools/gif2h5/Makefile.in
+++ b/hl/tools/gif2h5/Makefile.in
@@ -531,6 +531,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/m4/aclocal_fc.m4 b/m4/aclocal_fc.m4
index ea773b8..35e55f0 100644
--- a/m4/aclocal_fc.m4
+++ b/m4/aclocal_fc.m4
@@ -310,48 +310,69 @@ AC_RUN_IFELSE([
AC_LANG_SOURCE([
PROGRAM main
IMPLICIT NONE
- INTEGER :: ik, k, lastkind
+ INTEGER :: ik, k, lastkind, max_decimal_prec
lastkind=SELECTED_INT_KIND(1)
- OPEN(8, FILE="pac_fconftest.out", form="formatted")
- WRITE(8,'("ik:")',ADVANCE='NO') ! Find integer KINDs
- DO ik=2,30
+ OPEN(8, FILE='pac_fconftest.out', form='formatted')
+ WRITE(8,'(A)',ADVANCE='NO') 'A' ! Find integer KINDs
+ DO ik=2,36
k = SELECTED_INT_KIND(ik)
IF (k .NE. lastkind) THEN
- WRITE(8,'(I0,A)',ADVANCE='NO') lastkind," "
+ WRITE(8,'(I0)',ADVANCE='NO') lastkind
lastkind = k
+ IF(k.GT.0) WRITE(8,'(A)',ADVANCE='NO') ' '
ENDIF
IF (k .LE. 0) EXIT
ENDDO
- dnl IF (k.NE.lastkind) WRITE(8,'(I0,A)',ADVANCE='NO') k, " "
- IF (lastkind.NE.-1) WRITE(8,'(I0,A)',ADVANCE='NO') lastkind, " "
- WRITE(8,'(/)')
- WRITE(8,'("rk:")',ADVANCE='NO') ! Find real KINDs
+ IF (lastkind.NE.-1) THEN
+ WRITE(8,'(I0,A)',ADVANCE='NO') lastkind, 'B '
+ ELSE
+ WRITE(8,'(A)',ADVANCE='NO') 'B '
+ ENDIF
+ WRITE(8,'(A)',ADVANCE='NO') 'C' ! Find real KINDs
lastkind=SELECTED_REAL_KIND(1)
- DO ik=2,30
+ max_decimal_prec = 1
+ DO ik=2,36
k = SELECTED_REAL_KIND(ik)
IF (k .NE. lastkind) THEN
- WRITE(8,'(I0,A)',ADVANCE='NO') lastkind," "
+ WRITE(8,'(I0)',ADVANCE='NO') lastkind
lastkind = k
+ IF(k.GT.0) WRITE(8,'(A)',ADVANCE='NO') ' '
+ max_decimal_prec = ik
ENDIF
IF (k .LE. 0) EXIT
ENDDO
- IF (lastkind.NE.-1) WRITE(8,'(I0,A)',ADVANCE='NO') lastkind, " "
- dnl IF (k.NE.lastkind) WRITE(8,'(I0,A)',ADVANCE='NO') k, " "
-
+ IF (lastkind.NE.-1)THEN
+ WRITE(8,'(I0,A)',ADVANCE='NO') lastkind, 'D'
+ ELSE
+ WRITE(8,'(A)',ADVANCE='NO') 'D'
+ ENDIF
+ WRITE(8,'(A,I0,A)',ADVANCE='NO') ' E',max_decimal_prec,'F'
+
END
])
],[
if test -s pac_fconftest.out ; then
-
- dnl pac_flag="`sed -e 's/ */ /g' pac_fconftest.out | tr '\012' ','`"
- pac_validIntKinds="`sed -n -e 's/^.*ik://p' pac_fconftest.out`"
- pac_validRealKinds="`sed -n -e 's/^.*rk://p' pac_fconftest.out`"
+
+ dnl The output from the above program will be something like
+ dnl A1 4 8 16B C4 8 10D E30F where:
+ dnl - valid integer kinds are the numbers between A and B
+ dnl - valid real kinds are the numbers between A and B
+ dnl - max decimal precision for reals is the number between E and F
+
+ dnl pac_validIntKinds="`sed -n -e 's/^.*ik://p' pac_fconftest.out`"
+ dnl pac_validRealKinds="`sed -n -e 's/^.*rk://p' pac_fconftest.out`"
+ tmp="`cat pac_fconftest.out`"
+ pac_validIntKinds="`echo $tmp | sed -e 's/.*A\(.*\)B.*/\1/'`"
+ pac_validRealKinds="`echo $tmp | sed -e 's/.*C\(.*\)D.*/\1/'`"
+ PAC_FC_MAX_REAL_PRECISION="`echo $tmp | sed -e 's/.*E\(.*\)F.*/\1/'`"
PAC_FC_ALL_INTEGER_KINDS="{`echo $pac_validIntKinds | sed -e 's/ /,/g'`}"
PAC_FC_ALL_REAL_KINDS="{`echo $pac_validRealKinds | sed -e 's/ /,/g'`}"
AC_MSG_CHECKING([for Fortran INTEGER KINDs])
AC_MSG_RESULT([$PAC_FC_ALL_INTEGER_KINDS])
AC_MSG_CHECKING([for Fortran REAL KINDs])
AC_MSG_RESULT([$PAC_FC_ALL_REAL_KINDS])
+ AC_MSG_CHECKING([for Fortran REALs maximum decimal precision])
+ AC_MSG_RESULT([$PAC_FC_MAX_REAL_PRECISION])
else
AC_MSG_RESULT([Error])
AC_MSG_WARN([No output from test program!])
@@ -369,7 +390,6 @@ AC_RUN_IFELSE([
])
AC_LANG_POP([Fortran])
])
-
AC_DEFUN([PAC_FC_SIZEOF_INT_KINDS],[
AC_REQUIRE([PAC_FC_AVAIL_KINDS])
AC_MSG_CHECKING([sizeof of available INTEGER KINDs])
@@ -379,12 +399,14 @@ rm -f pac_fconftest.out
for kind in $pac_validIntKinds; do
AC_LANG_CONFTEST([
AC_LANG_SOURCE([
- program main
- integer (kind=$kind) a
- open(8, file="pac_fconftest.out", form="formatted")
- write(8,'(I0)') sizeof(a)
- close(8)
- end
+ PROGRAM main
+ USE ISO_C_BINDING
+ IMPLICIT NONE
+ INTEGER (KIND=$kind) a
+ OPEN(8, FILE="pac_fconftest.out", FORM="formatted")
+ WRITE(8,'(I0)') $FC_SIZEOF_A
+ CLOSE(8)
+ END
])
])
AC_RUN_IFELSE([],[
@@ -415,12 +437,14 @@ rm -f pac_fconftest.out
for kind in $pac_validRealKinds; do
AC_LANG_CONFTEST([
AC_LANG_SOURCE([
- program main
- REAL (kind=$kind) :: a
- open(8, file="pac_fconftest.out", form="formatted")
- write(8,'(I0)') sizeof(a)
- close(8)
- end
+ PROGRAM main
+ USE ISO_C_BINDING
+ IMPLICIT NONE
+ REAL (KIND=$kind) :: a
+ OPEN(8, FILE="pac_fconftest.out", FORM="formatted")
+ WRITE(8,'(I0)') $FC_SIZEOF_A
+ CLOSE(8)
+ END
])
])
AC_RUN_IFELSE([],[
@@ -450,19 +474,21 @@ pack_int_sizeof=""
rm -f pac_fconftest.out
AC_LANG_CONFTEST([
AC_LANG_SOURCE([
- program main
- integer a
- real b
- double precision c
- open(8, file="pac_fconftest.out", form="formatted")
- write(8,*) sizeof(a)
- write(8,*) kind(a)
- write(8,*) sizeof(b)
- write(8,*) kind(b)
- write(8,*) sizeof(c)
- write(8,*) kind(c)
- close(8)
- end
+ PROGRAM main
+ USE ISO_C_BINDING
+ IMPLICIT NONE
+ INTEGER a
+ REAL b
+ DOUBLE PRECISION c
+ OPEN(8, FILE="pac_fconftest.out", FORM="formatted")
+ WRITE(8,*) $FC_SIZEOF_A
+ WRITE(8,*) kind(a)
+ WRITE(8,*) $FC_SIZEOF_B
+ WRITE(8,*) kind(b)
+ WRITE(8,*) $FC_SIZEOF_C
+ WRITE(8,*) kind(c)
+ CLOSE(8)
+ END
])
])
AC_RUN_IFELSE([],[
diff --git a/src/Makefile.in b/src/Makefile.in
index 80cfc82..4e9445a 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -579,6 +579,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/test/Makefile.in b/test/Makefile.in
index 579252a..06cd5c4 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -923,6 +923,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/testpar/Makefile.in b/testpar/Makefile.in
index 8229729..79d0844 100644
--- a/testpar/Makefile.in
+++ b/testpar/Makefile.in
@@ -546,6 +546,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/tools/Makefile.in b/tools/Makefile.in
index e101d75..b404903 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -517,6 +517,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/tools/h5copy/Makefile.in b/tools/h5copy/Makefile.in
index a6dd483..01e1393 100644
--- a/tools/h5copy/Makefile.in
+++ b/tools/h5copy/Makefile.in
@@ -525,6 +525,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/tools/h5diff/Makefile.in b/tools/h5diff/Makefile.in
index ff49111..9dffa38 100644
--- a/tools/h5diff/Makefile.in
+++ b/tools/h5diff/Makefile.in
@@ -532,6 +532,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/tools/h5dump/Makefile.in b/tools/h5dump/Makefile.in
index b7539fb..1cfca3a 100644
--- a/tools/h5dump/Makefile.in
+++ b/tools/h5dump/Makefile.in
@@ -531,6 +531,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/tools/h5import/Makefile.in b/tools/h5import/Makefile.in
index 7dc4adf..22994fe 100644
--- a/tools/h5import/Makefile.in
+++ b/tools/h5import/Makefile.in
@@ -525,6 +525,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/tools/h5jam/Makefile.in b/tools/h5jam/Makefile.in
index 3e1946c..cc04a20 100644
--- a/tools/h5jam/Makefile.in
+++ b/tools/h5jam/Makefile.in
@@ -537,6 +537,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/tools/h5ls/Makefile.in b/tools/h5ls/Makefile.in
index 9b7c8ba..e6d283e 100644
--- a/tools/h5ls/Makefile.in
+++ b/tools/h5ls/Makefile.in
@@ -517,6 +517,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/tools/h5repack/Makefile.in b/tools/h5repack/Makefile.in
index 78ff9ff..4225a4f 100644
--- a/tools/h5repack/Makefile.in
+++ b/tools/h5repack/Makefile.in
@@ -549,6 +549,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/tools/h5stat/Makefile.in b/tools/h5stat/Makefile.in
index 5efd8b8..6ff4d0a 100644
--- a/tools/h5stat/Makefile.in
+++ b/tools/h5stat/Makefile.in
@@ -527,6 +527,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/tools/lib/Makefile.in b/tools/lib/Makefile.in
index 4d33c14..fdccf62 100644
--- a/tools/lib/Makefile.in
+++ b/tools/lib/Makefile.in
@@ -514,6 +514,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/tools/misc/Makefile.in b/tools/misc/Makefile.in
index 498dca6..07c88d0 100644
--- a/tools/misc/Makefile.in
+++ b/tools/misc/Makefile.in
@@ -552,6 +552,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@
diff --git a/tools/perform/Makefile.in b/tools/perform/Makefile.in
index 28aae68..367145f 100644
--- a/tools/perform/Makefile.in
+++ b/tools/perform/Makefile.in
@@ -556,6 +556,7 @@ PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@
PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@
PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@
PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@
+PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@
PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@
PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@
PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@