mirror of
https://github.com/HDFGroup/hdf5.git
synced 2026-09-25 04:09:44 +03:00
Fortran: simplify H5config_f.inc.cmake to use #cmakedefine directly (#6423)
All #cmakedefine01 CMAKE_H5_* blocks used a five-line pattern: #cmakedefine01 CMAKE_H5_HAVE_FOO #if CMAKE_H5_HAVE_FOO == 0 #undef H5_HAVE_FOO #else #define H5_HAVE_FOO #endif This is exactly what #cmakedefine H5_HAVE_FOO does: it emits #define H5_HAVE_FOO (no value) when the CMake variable is truthy and /* #undef H5_HAVE_FOO */ when falsy. The CMAKE_H5_* intermediate variables in fortran/src/CMakeLists.txt were only needed to feed these blocks and are no longer required. Replace all such blocks with #cmakedefine H5_HAVE_FOO, using the H5_* variable directly. MPI_LOGICAL_KIND retains its value via #cmakedefine H5_MPI_LOGICAL_KIND @H5_MPI_LOGICAL_KIND@. This also fixes a real bug: H5_FORTRAN_C_BOOL_IS_UNIQUE was emitted as #define H5_FORTRAN_C_BOOL_IS_UNIQUE 0 when C_BOOL and default LOGICAL are the same kind (e.g. Apple PowerPC ABI). #ifdef only tests whether a macro is defined, not its value, so the guard in H5_test_buildiface.F90 was always true and verify_c_bool was written into tf_gen.F90 regardless, causing an "Ambiguous interfaces" build failure on that platform.
This commit is contained in:
@@ -8,12 +8,6 @@ cmake_minimum_required (VERSION 3.26)
|
||||
project (HDF5_F90_SRC C Fortran)
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
if (H5_NO_DEPRECATED_SYMBOLS)
|
||||
set (CMAKE_NO_DEPRECATED_SYMBOLS 1)
|
||||
else ()
|
||||
set (CMAKE_NO_DEPRECATED_SYMBOLS 0)
|
||||
endif ()
|
||||
|
||||
# configure def file for shared libs on windows
|
||||
if (WIN32)
|
||||
if (BUILD_SHARED_LIBS)
|
||||
@@ -34,64 +28,8 @@ if (WIN32)
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
if (H5_HAVE_MPI_F08) # MPI-3 module mpi_f08 supported
|
||||
set (CMAKE_H5_HAVE_MPI_F08 1)
|
||||
else ()
|
||||
if (NOT H5_HAVE_MPI_F08) # MPI-3 module mpi_f08 supported
|
||||
set (H5_NOMPI_F08 ";")
|
||||
set (CMAKE_H5_HAVE_MPI_F08 0)
|
||||
endif ()
|
||||
|
||||
if (H5_HAVE_DARWIN) # Used in testing
|
||||
set (CMAKE_H5_HAVE_DARWIN 1)
|
||||
else ()
|
||||
set (CMAKE_H5_HAVE_DARWIN 0)
|
||||
endif ()
|
||||
|
||||
# configure for Fortran preprocessor
|
||||
|
||||
# Define Parallel variable for passing to H5config_f.inc.cmake
|
||||
set (CMAKE_H5_HAVE_PARALLEL 0)
|
||||
set (CMAKE_H5_HAVE_SUBFILING_VFD 0)
|
||||
if (H5_HAVE_PARALLEL)
|
||||
set (CMAKE_H5_HAVE_PARALLEL 1)
|
||||
if (H5_HAVE_SUBFILING_VFD)
|
||||
set (CMAKE_H5_HAVE_SUBFILING_VFD 1)
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
set (CMAKE_H5_HAVE_FLOAT128 0)
|
||||
if (H5_HAVE_FLOAT128)
|
||||
set (CMAKE_H5_HAVE_FLOAT128 1)
|
||||
endif ()
|
||||
|
||||
set (CMAKE_H5_FORTRAN_HAVE_STORAGE_SIZE 0)
|
||||
if (H5_FORTRAN_HAVE_STORAGE_SIZE)
|
||||
set (CMAKE_H5_FORTRAN_HAVE_STORAGE_SIZE 1)
|
||||
endif ()
|
||||
|
||||
set (CMAKE_H5_FORTRAN_HAVE_SIZEOF 0)
|
||||
if (H5_FORTRAN_HAVE_SIZEOF)
|
||||
set (CMAKE_H5_FORTRAN_HAVE_SIZEOF 1)
|
||||
endif ()
|
||||
|
||||
set (CMAKE_H5_FORTRAN_HAVE_C_SIZEOF 0)
|
||||
if (H5_FORTRAN_HAVE_C_SIZEOF)
|
||||
set (CMAKE_H5_FORTRAN_HAVE_C_SIZEOF 1)
|
||||
endif ()
|
||||
|
||||
set (CMAKE_H5_HAVE_ISO_FORTRAN_ENV 0)
|
||||
if (H5_HAVE_ISO_FORTRAN_ENV)
|
||||
set (CMAKE_H5_HAVE_ISO_FORTRAN_ENV 1)
|
||||
endif ()
|
||||
|
||||
set (CMAKE_H5_FORTRAN_HAVE_CHAR_ALLOC 0)
|
||||
if (H5_FORTRAN_HAVE_CHAR_ALLOC)
|
||||
set (CMAKE_H5_FORTRAN_HAVE_CHAR_ALLOC 1)
|
||||
endif ()
|
||||
|
||||
set (CMAKE_H5_MPI_LOGICAL_KIND 0)
|
||||
if (H5_MPI_LOGICAL_KIND)
|
||||
set (CMAKE_H5_MPI_LOGICAL_KIND 1)
|
||||
endif ()
|
||||
|
||||
configure_file (${HDF5_F90_SRC_SOURCE_DIR}/H5config_f.inc.cmake ${HDF5_F90_BINARY_DIR}/H5config_f.inc @ONLY)
|
||||
|
||||
@@ -95,7 +95,7 @@ MODULE H5D
|
||||
PRIVATE h5dwrite_reference_obj, h5dwrite_reference_dsetreg, h5dwrite_char_scalar, h5dwrite_ptr
|
||||
PRIVATE h5dread_reference_obj, h5dread_reference_dsetreg, h5dread_char_scalar, h5dread_ptr
|
||||
PRIVATE h5dfill_integer, h5dfill_c_float, h5dfill_c_double, h5dfill_char, h5dfill_ptr
|
||||
#if H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE!=0
|
||||
#ifdef H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE
|
||||
PRIVATE h5dfill_c_long_double
|
||||
#endif
|
||||
|
||||
@@ -180,7 +180,7 @@ MODULE H5D
|
||||
MODULE PROCEDURE h5dfill_integer
|
||||
MODULE PROCEDURE h5dfill_c_float
|
||||
MODULE PROCEDURE h5dfill_c_double
|
||||
#if H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE!=0
|
||||
#ifdef H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE
|
||||
MODULE PROCEDURE h5dfill_c_long_double
|
||||
#endif
|
||||
MODULE PROCEDURE h5dfill_char
|
||||
@@ -2308,7 +2308,7 @@ CONTAINS
|
||||
|
||||
END SUBROUTINE h5dfill_c_double
|
||||
|
||||
#if H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE!=0
|
||||
#ifdef H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE
|
||||
SUBROUTINE h5dfill_c_long_double(fill_value, space_id, buf, hdferr)
|
||||
IMPLICIT NONE
|
||||
REAL(KIND=C_LONG_DOUBLE), INTENT(IN), TARGET :: fill_value
|
||||
|
||||
+2
-2
@@ -183,7 +183,7 @@ h5init_types_c(hid_t_f *types, hid_t_f *floatingtypes, hid_t_f *integertypes)
|
||||
/*
|
||||
* FIND H5T_NATIVE_REAL_C_LONG_DOUBLE
|
||||
*/
|
||||
#if H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE != 0
|
||||
#ifdef H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE
|
||||
if (sizeof(real_C_LONG_DOUBLE_f) == sizeof(float)) {
|
||||
if ((types[13] = (hid_t_f)H5Tcopy(H5T_NATIVE_FLOAT)) < 0)
|
||||
return ret_value;
|
||||
@@ -192,7 +192,7 @@ h5init_types_c(hid_t_f *types, hid_t_f *floatingtypes, hid_t_f *integertypes)
|
||||
if ((types[13] = (hid_t_f)H5Tcopy(H5T_NATIVE_DOUBLE)) < 0)
|
||||
return ret_value;
|
||||
} /*end if */
|
||||
#if H5_FORTRAN_HAVE_C_LONG_DOUBLE != 0
|
||||
#ifdef H5_FORTRAN_HAVE_C_LONG_DOUBLE
|
||||
else if (sizeof(real_C_LONG_DOUBLE_f) == sizeof(long double)) {
|
||||
if (H5_PAC_C_MAX_REAL_PRECISION >= H5_PAC_FC_MAX_REAL_PRECISION) {
|
||||
if ((types[13] = (hid_t_f)H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0)
|
||||
|
||||
@@ -997,7 +997,7 @@ CONTAINS
|
||||
INTEGER, INTENT(IN) :: flag
|
||||
INTEGER :: i
|
||||
|
||||
!#if H5_HAVE_Fortran_INTEGER_SIZEOF_16!=0
|
||||
!#ifdef H5_HAVE_Fortran_INTEGER_SIZEOF_16
|
||||
! ! (1) The array index assumes INTEGER*16 the last integer in the series, and
|
||||
! ! (2) it should map to INTEGER*16 on most modern processors
|
||||
! H5T_NATIVE_INTEGER_KIND(H5_FORTRAN_NUM_INTEGER_KINDS)=SELECTED_INT_KIND(36)
|
||||
@@ -1016,7 +1016,7 @@ CONTAINS
|
||||
h5_type = H5T_NATIVE_REAL_C_FLOAT
|
||||
ELSE IF(ikind.EQ.KIND(1.0_C_DOUBLE))THEN
|
||||
h5_type = H5T_NATIVE_REAL_C_DOUBLE
|
||||
#if H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE!=0
|
||||
#ifdef H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE
|
||||
ELSE IF(ikind.EQ.KIND(1.0_C_LONG_DOUBLE))THEN
|
||||
h5_type = H5T_NATIVE_REAL_C_LONG_DOUBLE
|
||||
#endif
|
||||
|
||||
@@ -12,88 +12,43 @@
|
||||
! fortran/H5config_f.inc. Generated from fortran/src/H5config_f.inc.cmake by CMake
|
||||
|
||||
! Define if there is parallel support
|
||||
#cmakedefine01 CMAKE_H5_HAVE_PARALLEL
|
||||
#if CMAKE_H5_HAVE_PARALLEL == 0
|
||||
#undef H5_HAVE_PARALLEL
|
||||
#else
|
||||
#define H5_HAVE_PARALLEL
|
||||
#endif
|
||||
#cmakedefine H5_HAVE_PARALLEL
|
||||
|
||||
! Define if MPI supports mpi_f08 module
|
||||
#cmakedefine01 CMAKE_H5_HAVE_MPI_F08
|
||||
#if CMAKE_H5_HAVE_MPI_F08 == 0
|
||||
#undef H5_HAVE_MPI_F08
|
||||
#else
|
||||
#define H5_HAVE_MPI_F08
|
||||
#endif
|
||||
#cmakedefine H5_HAVE_MPI_F08
|
||||
|
||||
! Define if there is subfiling support
|
||||
#cmakedefine01 CMAKE_H5_HAVE_SUBFILING_VFD
|
||||
#if CMAKE_H5_HAVE_SUBFILING_VFD == 0
|
||||
#undef H5_HAVE_SUBFILING_VFD
|
||||
#else
|
||||
#define H5_HAVE_SUBFILING_VFD
|
||||
#endif
|
||||
#cmakedefine H5_HAVE_SUBFILING_VFD
|
||||
|
||||
! Define if on APPLE
|
||||
#cmakedefine01 CMAKE_H5_HAVE_DARWIN
|
||||
#if CMAKE_H5_HAVE_DARWIN == 0
|
||||
#undef H5_HAVE_DARWIN
|
||||
#else
|
||||
#define H5_HAVE_DARWIN
|
||||
#endif
|
||||
#cmakedefine H5_HAVE_DARWIN
|
||||
|
||||
! Define if the intrinsic function STORAGE_SIZE exists
|
||||
#cmakedefine01 CMAKE_H5_FORTRAN_HAVE_STORAGE_SIZE
|
||||
#if CMAKE_H5_FORTRAN_HAVE_STORAGE_SIZE == 0
|
||||
#undef H5_FORTRAN_HAVE_STORAGE_SIZE
|
||||
#else
|
||||
#define H5_FORTRAN_HAVE_STORAGE_SIZE
|
||||
#endif
|
||||
#cmakedefine H5_FORTRAN_HAVE_STORAGE_SIZE
|
||||
|
||||
! Define if the intrinsic function SIZEOF exists
|
||||
#cmakedefine01 CMAKE_H5_FORTRAN_HAVE_SIZEOF
|
||||
#if CMAKE_H5_FORTRAN_HAVE_SIZEOF == 0
|
||||
#undef H5_FORTRAN_HAVE_SIZEOF
|
||||
#else
|
||||
#define H5_FORTRAN_HAVE_SIZEOF
|
||||
#endif
|
||||
#cmakedefine H5_FORTRAN_HAVE_SIZEOF
|
||||
|
||||
! Define if the intrinsic function C_SIZEOF exists
|
||||
#cmakedefine01 CMAKE_H5_FORTRAN_HAVE_C_SIZEOF
|
||||
#if CMAKE_H5_FORTRAN_HAVE_C_SIZEOF == 0
|
||||
#undef H5_FORTRAN_HAVE_C_SIZEOF
|
||||
#else
|
||||
#define H5_FORTRAN_HAVE_C_SIZEOF
|
||||
#endif
|
||||
#cmakedefine H5_FORTRAN_HAVE_C_SIZEOF
|
||||
|
||||
! Define if allocatable character is supported
|
||||
#define H5_FORTRAN_HAVE_CHAR_ALLOC @H5_FORTRAN_HAVE_CHAR_ALLOC@
|
||||
#cmakedefine H5_FORTRAN_HAVE_CHAR_ALLOC
|
||||
|
||||
! Define if the intrinsic function C_LONG_DOUBLE exists
|
||||
#define H5_FORTRAN_HAVE_C_LONG_DOUBLE @H5_FORTRAN_HAVE_C_LONG_DOUBLE@
|
||||
#cmakedefine H5_FORTRAN_HAVE_C_LONG_DOUBLE
|
||||
|
||||
! Define if Fortran C_LONG_DOUBLE is different from C_DOUBLE
|
||||
#define H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE @H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE@
|
||||
#cmakedefine H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE
|
||||
|
||||
! Define if Fortran C_BOOL is different from default LOGICAL
|
||||
#define H5_FORTRAN_C_BOOL_IS_UNIQUE @H5_FORTRAN_C_BOOL_IS_UNIQUE@
|
||||
#cmakedefine H5_FORTRAN_C_BOOL_IS_UNIQUE
|
||||
|
||||
! Define MPI Fortran KIND of LOGICAL
|
||||
#cmakedefine01 CMAKE_H5_MPI_LOGICAL_KIND
|
||||
#if CMAKE_H5_MPI_LOGICAL_KIND == 0
|
||||
#undef H5_MPI_LOGICAL_KIND
|
||||
#else
|
||||
#define H5_MPI_LOGICAL_KIND @H5_MPI_LOGICAL_KIND@
|
||||
#endif
|
||||
#cmakedefine H5_MPI_LOGICAL_KIND @H5_MPI_LOGICAL_KIND@
|
||||
|
||||
! Define if Fortran supports ISO_FORTRAN_ENV (F08)
|
||||
#cmakedefine01 CMAKE_H5_HAVE_ISO_FORTRAN_ENV
|
||||
#if CMAKE_H5_HAVE_ISO_FORTRAN_ENV == 0
|
||||
#undef H5_HAVE_ISO_FORTRAN_ENV
|
||||
#else
|
||||
#define H5_HAVE_ISO_FORTRAN_ENV
|
||||
#endif
|
||||
#cmakedefine H5_HAVE_ISO_FORTRAN_ENV
|
||||
|
||||
! Define the size of C's double
|
||||
#define H5_SIZEOF_DOUBLE @H5_SIZEOF_DOUBLE@
|
||||
@@ -105,15 +60,10 @@
|
||||
#define H5_PAC_FC_MAX_REAL_PRECISION @H5_PAC_FC_MAX_REAL_PRECISION@
|
||||
|
||||
! If C has quad precision
|
||||
#cmakedefine01 CMAKE_H5_HAVE_FLOAT128
|
||||
#if CMAKE_H5_HAVE_FLOAT128 == 0
|
||||
#undef H5_HAVE_FLOAT128
|
||||
#else
|
||||
#define H5_HAVE_FLOAT128
|
||||
#endif
|
||||
#cmakedefine H5_HAVE_FLOAT128
|
||||
|
||||
! Define if INTEGER*16 is available
|
||||
#define H5_HAVE_Fortran_INTEGER_SIZEOF_16 @H5_HAVE_Fortran_INTEGER_SIZEOF_16@
|
||||
#cmakedefine H5_HAVE_Fortran_INTEGER_SIZEOF_16
|
||||
|
||||
! Maximum decimal precision for C
|
||||
#define H5_PAC_C_MAX_REAL_PRECISION @H5_PAC_C_MAX_REAL_PRECISION@
|
||||
@@ -137,12 +87,7 @@
|
||||
#define H5_Fortran_COMPILER_ID @CMAKE_Fortran_COMPILER_ID@
|
||||
|
||||
! Define if deprecated public API symbols are disabled
|
||||
#cmakedefine01 CMAKE_NO_DEPRECATED_SYMBOLS
|
||||
#if CMAKE_NO_DEPRECATED_SYMBOLS == 0
|
||||
#undef H5_NO_DEPRECATED_SYMBOLS
|
||||
#else
|
||||
#define H5_NO_DEPRECATED_SYMBOLS
|
||||
#endif
|
||||
#cmakedefine H5_NO_DEPRECATED_SYMBOLS
|
||||
|
||||
! For major interface/format changes
|
||||
#define H5_VERS_MAJOR @H5_VERS_MAJOR@
|
||||
|
||||
@@ -23,6 +23,6 @@
|
||||
#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_HAVE_Fortran_INTEGER_SIZEOF_16 @H5_HAVE_Fortran_INTEGER_SIZEOF_16@
|
||||
#define H5_FORTRAN_HAVE_C_LONG_DOUBLE @H5_FORTRAN_HAVE_C_LONG_DOUBLE@
|
||||
#define H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE @H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE@
|
||||
#cmakedefine H5_HAVE_Fortran_INTEGER_SIZEOF_16
|
||||
#cmakedefine H5_FORTRAN_HAVE_C_LONG_DOUBLE
|
||||
#cmakedefine H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE
|
||||
|
||||
@@ -156,7 +156,7 @@ main(void)
|
||||
|
||||
int FORTRAN_NUM_INTEGER_KINDS = H5_FORTRAN_NUM_INTEGER_KINDS;
|
||||
int H5_FORTRAN_NUM_REAL_KINDS;
|
||||
#if H5_FORTRAN_HAVE_C_LONG_DOUBLE != 0
|
||||
#ifdef H5_FORTRAN_HAVE_C_LONG_DOUBLE
|
||||
int found_long_double = 0;
|
||||
#endif
|
||||
|
||||
@@ -213,7 +213,7 @@ main(void)
|
||||
writeTypedef("float", "double", RealKinds[i]);
|
||||
strcpy(Real_C_TYPES[i], "C_DOUBLE");
|
||||
}
|
||||
#if H5_FORTRAN_HAVE_C_LONG_DOUBLE != 0
|
||||
#ifdef H5_FORTRAN_HAVE_C_LONG_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");
|
||||
@@ -376,7 +376,7 @@ main(void)
|
||||
return -1;
|
||||
}
|
||||
/* real_f */
|
||||
#if H5_FORTRAN_HAVE_C_LONG_DOUBLE != 0
|
||||
#ifdef H5_FORTRAN_HAVE_C_LONG_DOUBLE
|
||||
if (H5_FORTRAN_NATIVE_REAL_SIZEOF == sizeof(long double)) {
|
||||
writeToFilesChr("float", "Fortran_REAL", "real_f", H5_FORTRAN_NATIVE_REAL_KIND, "C_LONG_DOUBLE");
|
||||
}
|
||||
@@ -403,7 +403,7 @@ main(void)
|
||||
}
|
||||
|
||||
/* double_f */
|
||||
#if H5_FORTRAN_HAVE_C_LONG_DOUBLE != 0
|
||||
#ifdef H5_FORTRAN_HAVE_C_LONG_DOUBLE
|
||||
if (H5_FORTRAN_NATIVE_DOUBLE_SIZEOF == sizeof(long double)) {
|
||||
writeToFilesChr("float", "Fortran_DOUBLE", "double_f", H5_FORTRAN_NATIVE_DOUBLE_KIND,
|
||||
"C_LONG_DOUBLE");
|
||||
|
||||
@@ -645,7 +645,7 @@ CONTAINS
|
||||
INTEGER(KIND=int_kind_16), TARGET :: data0_i16 = 4
|
||||
INTEGER, DIMENSION(1:DIM0) :: data_int
|
||||
INTEGER, TARGET :: data0_int = 4
|
||||
#if H5_HAVE_Fortran_INTEGER_SIZEOF_16!=0
|
||||
#ifdef H5_HAVE_Fortran_INTEGER_SIZEOF_16
|
||||
INTEGER, PARAMETER :: int_kind_32 = SELECTED_INT_KIND(36) !should map to INTEGER*16 on most modern processors
|
||||
INTEGER(KIND=int_kind_32), DIMENSION(1:DIM0), TARGET :: data_i32
|
||||
INTEGER(KIND=int_kind_32), TARGET :: data0_i32 = 4
|
||||
@@ -656,7 +656,7 @@ CONTAINS
|
||||
REAL(KIND=real_kind_8), DIMENSION(1:DIM0), TARGET :: data_r8
|
||||
REAL(KIND=real_kind_4) , TARGET :: data0_r4 = 4.0
|
||||
REAL(KIND=real_kind_8), TARGET :: data0_r8 = 4.0
|
||||
#if H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE!=0
|
||||
#ifdef H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE
|
||||
INTEGER, PARAMETER :: real_kind_16 = C_LONG_DOUBLE
|
||||
REAL(KIND=real_kind_16) , DIMENSION(1:DIM0), TARGET :: data_r16
|
||||
REAL(KIND=real_kind_16) , TARGET :: data0_r16 = 4.0
|
||||
@@ -679,12 +679,12 @@ CONTAINS
|
||||
data_i4 = -2
|
||||
data_i16 = -2
|
||||
data_int = -2
|
||||
#if H5_HAVE_Fortran_INTEGER_SIZEOF_16!=0
|
||||
#ifdef H5_HAVE_Fortran_INTEGER_SIZEOF_16
|
||||
data_i32 = -2
|
||||
#endif
|
||||
data_r4 = -2.0_real_kind_4
|
||||
data_r8 = -2.0_real_kind_8
|
||||
#if H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE!=0
|
||||
#ifdef H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE
|
||||
data_r16 = -2.0_real_kind_16
|
||||
#endif
|
||||
data_chr = "H"
|
||||
@@ -767,7 +767,7 @@ CONTAINS
|
||||
ENDIF
|
||||
ENDDO
|
||||
|
||||
#if H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE!=0
|
||||
#ifdef H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE
|
||||
CALL h5dfill_f(data0_r16, space_id, data_r16, error)
|
||||
CALL check("h5dfill_f", error, total_error)
|
||||
DO i = 1, DIM0
|
||||
@@ -792,7 +792,7 @@ CONTAINS
|
||||
data_i1 = -2
|
||||
data_i4 = -2
|
||||
data_i16 = -2
|
||||
#if H5_HAVE_Fortran_INTEGER_SIZEOF_16!=0
|
||||
#ifdef H5_HAVE_Fortran_INTEGER_SIZEOF_16
|
||||
data_i32 = -2
|
||||
#endif
|
||||
data_r4 = -2.0_real_kind_4
|
||||
@@ -867,7 +867,7 @@ CONTAINS
|
||||
ENDIF
|
||||
ENDDO
|
||||
|
||||
#if H5_HAVE_Fortran_INTEGER_SIZEOF_16!=0
|
||||
#ifdef H5_HAVE_Fortran_INTEGER_SIZEOF_16
|
||||
|
||||
f_ptr1 = C_LOC(data0_i32)
|
||||
f_ptr2 = C_LOC(data_i32(1))
|
||||
@@ -936,7 +936,7 @@ CONTAINS
|
||||
ENDIF
|
||||
ENDDO
|
||||
|
||||
#if H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE!=0
|
||||
#ifdef H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE
|
||||
f_ptr1 = C_LOC(data0_r16)
|
||||
f_ptr2 = C_LOC(data_r16(1))
|
||||
|
||||
|
||||
@@ -974,7 +974,7 @@ END SUBROUTINE test_array_compound_atomic
|
||||
INTEGER, PARAMETER :: int_kind_4 = SELECTED_INT_KIND(4) !should map to INTEGER*2 on most modern processors
|
||||
INTEGER, PARAMETER :: int_kind_8 = SELECTED_INT_KIND(9) !should map to INTEGER*4 on most modern processors
|
||||
INTEGER, PARAMETER :: int_kind_16 = SELECTED_INT_KIND(18) !should map to INTEGER*8 on most modern processors
|
||||
#if H5_HAVE_Fortran_INTEGER_SIZEOF_16!=0
|
||||
#ifdef H5_HAVE_Fortran_INTEGER_SIZEOF_16
|
||||
INTEGER, PARAMETER :: int_kind_32 = SELECTED_INT_KIND(36) !should map to INTEGER*16 on most modern processors
|
||||
INTEGER(int_kind_32), DIMENSION(1:4), TARGET :: dset_data_i32, data_out_i32
|
||||
INTEGER(HID_T) :: dset_id32 ! Dataset identifier
|
||||
@@ -1052,7 +1052,7 @@ END SUBROUTINE test_array_compound_atomic
|
||||
dset_data_i4(i) = HUGE(0_int_kind_4)-INT(i,int_kind_4)
|
||||
dset_data_i8(i) = HUGE(0_int_kind_8)-INT(i,int_kind_8)
|
||||
dset_data_i16(i) = HUGE(0_int_kind_16)-INT(i,int_kind_16)
|
||||
#if H5_HAVE_Fortran_INTEGER_SIZEOF_16!=0
|
||||
#ifdef H5_HAVE_Fortran_INTEGER_SIZEOF_16
|
||||
dset_data_i32(i) = HUGE(0_int_kind_32)-INT(i,int_kind_32)
|
||||
#endif
|
||||
dset_data_r(i) = 4.0*ATAN(1.0)-REAL(i-1)
|
||||
@@ -1080,7 +1080,7 @@ END SUBROUTINE test_array_compound_atomic
|
||||
CALL check("H5Dcreate_f",error, total_error)
|
||||
CALL H5Dcreate_f(file_id, dsetname8, h5kind_to_type(int_kind_16,H5_INTEGER_KIND), dspace_id, dset_id16, error)
|
||||
CALL check("H5Dcreate_f",error, total_error)
|
||||
#if H5_HAVE_Fortran_INTEGER_SIZEOF_16!=0
|
||||
#ifdef H5_HAVE_Fortran_INTEGER_SIZEOF_16
|
||||
CALL H5Dcreate_f(file_id, dsetname16, h5kind_to_type(int_kind_32,H5_INTEGER_KIND), dspace_id, dset_id32, error)
|
||||
CALL check("H5Dcreate_f",error, total_error)
|
||||
#endif
|
||||
@@ -1107,7 +1107,7 @@ END SUBROUTINE test_array_compound_atomic
|
||||
f_ptr = C_LOC(dset_data_i16(1))
|
||||
CALL h5dwrite_f(dset_id16, h5kind_to_type(int_kind_16,H5_INTEGER_KIND), f_ptr, error)
|
||||
CALL check("H5Dwrite_f",error, total_error)
|
||||
#if H5_HAVE_Fortran_INTEGER_SIZEOF_16!=0
|
||||
#ifdef H5_HAVE_Fortran_INTEGER_SIZEOF_16
|
||||
f_ptr = C_LOC(dset_data_i32(1))
|
||||
CALL h5dwrite_f(dset_id32, h5kind_to_type(int_kind_32,H5_INTEGER_KIND), f_ptr, error)
|
||||
CALL check("H5Dwrite_f",error, total_error)
|
||||
@@ -1151,7 +1151,7 @@ END SUBROUTINE test_array_compound_atomic
|
||||
f_ptr = C_LOC(data_out_i16(1))
|
||||
CALL h5dread_f(dset_id16, h5kind_to_type(int_kind_16,H5_INTEGER_KIND), f_ptr, error)
|
||||
CALL check("h5dread_f",error, total_error)
|
||||
#if H5_HAVE_Fortran_INTEGER_SIZEOF_16!=0
|
||||
#ifdef H5_HAVE_Fortran_INTEGER_SIZEOF_16
|
||||
f_ptr = C_LOC(data_out_i32(1))
|
||||
CALL h5dread_f(dset_id32, h5kind_to_type(int_kind_32,H5_INTEGER_KIND), f_ptr, error)
|
||||
CALL check("h5dread_f",error, total_error)
|
||||
@@ -1175,7 +1175,7 @@ END SUBROUTINE test_array_compound_atomic
|
||||
CALL verify("h5kind_to_type",dset_data_i8(i),data_out_i8(i),total_error)
|
||||
CALL verify("h5kind_to_type",dset_data_i16(i),data_out_i16(i),total_error)
|
||||
|
||||
#if H5_HAVE_Fortran_INTEGER_SIZEOF_16!=0
|
||||
#ifdef H5_HAVE_Fortran_INTEGER_SIZEOF_16
|
||||
CALL verify("h5kind_to_type",dset_data_i32(i),data_out_i32(i),total_error)
|
||||
#endif
|
||||
CALL verify("h5kind_to_type",dset_data_r(i),data_out_r(i),total_error)
|
||||
|
||||
@@ -430,7 +430,7 @@ CONTAINS
|
||||
INTEGER :: type_class
|
||||
INTEGER(SIZE_T) :: type_size
|
||||
TYPE(C_PTR) :: f_ptr
|
||||
#if H5_HAVE_Fortran_INTEGER_SIZEOF_16!=0
|
||||
#ifdef H5_HAVE_Fortran_INTEGER_SIZEOF_16
|
||||
INTEGER, PARAMETER :: int_kind_32 = SELECTED_INT_KIND(36) !should map to INTEGER*16 on most modern processors
|
||||
INTEGER(int_kind_32), DIMENSION(DIM1,DIM2,DIM3), TARGET :: dset_data_i32, data_out_i32
|
||||
CHARACTER(LEN=7), PARAMETER :: dsetname16a = "dset16a" ! Dataset name
|
||||
@@ -458,7 +458,7 @@ CONTAINS
|
||||
buf2(i,j,k) = INT(n)
|
||||
buf3(i,j,k) = INT(n)
|
||||
buf4(i,j,k) = INT(n)
|
||||
#if H5_HAVE_Fortran_INTEGER_SIZEOF_16!=0
|
||||
#ifdef H5_HAVE_Fortran_INTEGER_SIZEOF_16
|
||||
dset_data_i32(i,j,k) = HUGE(1_int_kind_32)-INT(n,int_kind_32)
|
||||
#endif
|
||||
n = n + 1
|
||||
@@ -612,7 +612,7 @@ CONTAINS
|
||||
! CHECKING NON-NATIVE INTEGER TYPES
|
||||
!-------------------------------------------------------------------------
|
||||
|
||||
#if H5_HAVE_Fortran_INTEGER_SIZEOF_16!=0
|
||||
#ifdef H5_HAVE_Fortran_INTEGER_SIZEOF_16
|
||||
! (A) CHECKING INTEGER*16
|
||||
!
|
||||
! (i.a) write dataset using F2003 interface
|
||||
|
||||
+1
-1
@@ -48,7 +48,7 @@
|
||||
#define @H5_FC_FUNC_@
|
||||
|
||||
/* Define if Fortran C_BOOL is different from default LOGICAL */
|
||||
#define H5_FORTRAN_C_BOOL_IS_UNIQUE @H5_FORTRAN_C_BOOL_IS_UNIQUE@
|
||||
#cmakedefine H5_FORTRAN_C_BOOL_IS_UNIQUE
|
||||
|
||||
/* Define if we have Fortran intrinsic C_SIZEOF */
|
||||
#cmakedefine H5_FORTRAN_HAVE_C_SIZEOF @H5_FORTRAN_HAVE_C_SIZEOF@
|
||||
|
||||
Reference in New Issue
Block a user