[svn-r27151] fixed __float128 errors

This commit is contained in:
Scot Breitenfeld 2015-06-04 15:26:02 -05:00
parent 4d500d4902
commit 043173a689
50 changed files with 279 additions and 126 deletions

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -196,6 +196,11 @@ MACRO (H5MiscConversionTest VAR TEST msg)
endif ("${TEST}" MATCHES "^${TEST}$")
ENDMACRO (H5MiscConversionTest)
#-----------------------------------------------------------------------------
# Check if C has __float128 extension
#-----------------------------------------------------------------------------
CHECK_TYPE_SIZE("__float128" _FLOAT128)
#-----------------------------------------------------------------------------
# Check various conversion capabilities
#-----------------------------------------------------------------------------

170
configure vendored
View File

@ -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

View File

@ -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])
@ -468,10 +487,6 @@ if test "X$HDF_FORTRAN" = "Xyes"; then
##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])

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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++) {
#ifdef H5_HAVE_FLOAT128
if(sizeof(__float128) == RealKinds_SizeOf[i] && found_longdb == 1) {
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");
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(float) == RealKinds_SizeOf[i]) {
writeTypedef("float", "float", RealKinds[i]);
strcpy(Real_C_TYPES[i], "C_FLOAT");
} else {
} 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
/* 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");
}
#endif
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]);

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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([],[

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@

View File

@ -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@