Hdf5 1 12 merge fortran configure changes (#727)
* OESS-98 fix tools test for plugins * sync fork * Merge of changes from dev * Move problem option to bottom of the list until fixed * HDFFV-11106 - fix parsing optional args * HDFFV-11106 add note * grammer fix * Whitespace after clang formatting * Undo format version 11 changes * Update check to working version * Merge workflow and minor changes from develop * Update supported platforms * PR#3 merge from develop * Merge gcc 10 diagnostics option from develop * Merge #318 OSX changes from develop * Merge serval small changes from dev * fix typo * Minor non-space formatting changes * GH #386 copyright corrections for java folder * revert because logic requires false return * Merges from develop #358 patches from vtk #361 fix header guard spelling * Remove case statement for H5I_EVENTSET * Correct call with versioning * Remove tabs * Double underscore change * Merges from develop #340 clang -Wformat-security warnings #360 Fixed uninitialized warnings Remove more underscores from header guards * Merge #380 from develop * Correct date entry * Split format source and commit changes on repo push * remove pre-split setting * Change windows TS to use older VS. * HDFFV-11212 JNI export util and Javadoc * Suggested review changes * Another change found * Committing clang-format changes * Some Javadoc warning fixes * Committing clang-format changes * Updated javadoc fixes * HDFFV-11228/9 merges from develop * remove obsolete debug comment * Fix conflict * HDFFV-11229 merge changes from develop * HDFFV-11229 merge second compare from develop * HDFFV-11229 fix reference file * HDFFV-11229 update autotools test script for two ref files * HDFFV-11229 merge dev changes for long double display in tools * Committing clang-format changes * Update with changes from develop * Add "option" command for clang options * Rework CMake add_custom to use the BYPRODUCTS argument Update pkgconfig scripts for parallel builds. Fix install COPYING file reference. Remove unused round defines. Change CMake default setting of BUILD_CPP to off. * Whitespace changes * Rework CMake add_custom to use the BYPRODUCTS argument * Revert CMake configure checks for round defines * With VS 2015 minimum strdup is supported * Doxygen comments merged from develop * doxygen build updates * Correct version string for map functions * TRILAB-227 and tools debug merge from develop * TRILAB-227 Enable test * Quote subset args * Use MATCHES in compiler id compare, merge from dev * Revert test enable * Add file to list * doxygen version errors * if blocks needed for build modes * Update list of test platforms * Issue #669 remove version from pkgcfg filename * remove version from h5cc script * Merge CMake and java refs from dev * Reworked CMake Fortran configure macros to allow multiple runs. * Fix CMake issue with tests not comparing test argument properly. Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
This commit is contained in:
@@ -129,74 +129,12 @@ endif ()
|
||||
# Determine the available KINDs for REALs and INTEGERs
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
#READ_SOURCE ("PROGRAM FC_AVAIL_KINDS" "END PROGRAM FC_AVAIL_KINDS" SOURCE_CODE)
|
||||
set (PROG_SRC_CODE
|
||||
"
|
||||
PROGRAM FC_AVAIL_KINDS
|
||||
IMPLICIT NONE
|
||||
INTEGER :: ik, jk, k, max_decimal_prec
|
||||
INTEGER :: num_rkinds = 1, num_ikinds = 1
|
||||
INTEGER, DIMENSION(1:10) :: list_ikinds = -1
|
||||
INTEGER, DIMENSION(1:10) :: list_rkinds = -1
|
||||
|
||||
OPEN(8, FILE='pac_fconftest.out', FORM='formatted')
|
||||
|
||||
! Find integer KINDs
|
||||
list_ikinds(num_ikinds)=SELECTED_INT_KIND(1)
|
||||
DO ik = 2, 36
|
||||
k = SELECTED_INT_KIND(ik)
|
||||
IF(k.LT.0) EXIT
|
||||
IF(k.GT.list_ikinds(num_ikinds))THEN
|
||||
num_ikinds = num_ikinds + 1
|
||||
list_ikinds(num_ikinds) = k
|
||||
ENDIF
|
||||
ENDDO
|
||||
|
||||
DO k = 1, num_ikinds
|
||||
WRITE(8,'(I0)', ADVANCE='NO') list_ikinds(k)
|
||||
IF(k.NE.num_ikinds)THEN
|
||||
WRITE(8,'(A)',ADVANCE='NO') ','
|
||||
ELSE
|
||||
WRITE(8,'()')
|
||||
ENDIF
|
||||
ENDDO
|
||||
|
||||
! Find real KINDs
|
||||
list_rkinds(num_rkinds)=SELECTED_REAL_KIND(1)
|
||||
max_decimal_prec = 1
|
||||
|
||||
prec: DO ik = 2, 36
|
||||
exp: DO jk = 1, 17000
|
||||
k = SELECTED_REAL_KIND(ik,jk)
|
||||
IF(k.LT.0) EXIT exp
|
||||
IF(k.GT.list_rkinds(num_rkinds))THEN
|
||||
num_rkinds = num_rkinds + 1
|
||||
list_rkinds(num_rkinds) = k
|
||||
ENDIF
|
||||
max_decimal_prec = ik
|
||||
ENDDO exp
|
||||
ENDDO prec
|
||||
|
||||
DO k = 1, num_rkinds
|
||||
WRITE(8,'(I0)', ADVANCE='NO') list_rkinds(k)
|
||||
IF(k.NE.num_rkinds)THEN
|
||||
WRITE(8,'(A)',ADVANCE='NO') ','
|
||||
ELSE
|
||||
WRITE(8,'()')
|
||||
ENDIF
|
||||
ENDDO
|
||||
|
||||
WRITE(8,'(I0)') max_decimal_prec
|
||||
WRITE(8,'(I0)') num_ikinds
|
||||
WRITE(8,'(I0)') num_rkinds
|
||||
END PROGRAM FC_AVAIL_KINDS
|
||||
"
|
||||
)
|
||||
READ_SOURCE ("PROGRAM FC_AVAIL_KINDS" "END PROGRAM FC_AVAIL_KINDS" SOURCE_CODE)
|
||||
if (NOT CMAKE_VERSION VERSION_LESS "3.14.0")
|
||||
check_fortran_source_runs (${PROG_SRC_CODE} FC_AVAIL_KINDS_RESULT SRC_EXT f90)
|
||||
check_fortran_source_runs (${SOURCE_CODE} FC_AVAIL_KINDS_RESULT SRC_EXT f90)
|
||||
else ()
|
||||
FORTRAN_RUN ("REAL and INTEGER KINDs"
|
||||
"${PROG_SRC_CODE}"
|
||||
"${SOURCE_CODE}"
|
||||
XX
|
||||
YY
|
||||
FC_AVAIL_KINDS_RESULT
|
||||
@@ -260,7 +198,7 @@ foreach (KIND ${VAR})
|
||||
USE ISO_C_BINDING
|
||||
IMPLICIT NONE
|
||||
INTEGER (KIND=${KIND}) a
|
||||
OPEN(8,FILE='pac_validIntKinds.out',FORM='formatted')
|
||||
OPEN(8,FILE='pac_validIntKinds.${KIND}.out',FORM='formatted')
|
||||
WRITE(8,'(I0)') ${FC_SIZEOF_A}
|
||||
CLOSE(8)
|
||||
END
|
||||
@@ -271,7 +209,7 @@ foreach (KIND ${VAR})
|
||||
else ()
|
||||
FORTRAN_RUN("INTEGER KIND SIZEOF" ${PROG_SRC_${KIND}} XX YY VALIDINTKINDS_RESULT_${KIND})
|
||||
endif ()
|
||||
file (READ "${RUN_OUTPUT_PATH_DEFAULT}/pac_validIntKinds.out" PROG_OUTPUT1)
|
||||
file (READ "${RUN_OUTPUT_PATH_DEFAULT}/pac_validIntKinds.${KIND}.out" PROG_OUTPUT1)
|
||||
string (REGEX REPLACE "\n" "" PROG_OUTPUT1 "${PROG_OUTPUT1}")
|
||||
set (pack_int_sizeof "${pack_int_sizeof} ${PROG_OUTPUT1},")
|
||||
endforeach ()
|
||||
@@ -309,7 +247,7 @@ foreach (KIND ${VAR} )
|
||||
USE ISO_C_BINDING
|
||||
IMPLICIT NONE
|
||||
REAL (KIND=${KIND}) a
|
||||
OPEN(8,FILE='pac_validRealKinds.out',FORM='formatted')
|
||||
OPEN(8,FILE='pac_validRealKinds.${KIND}.out',FORM='formatted')
|
||||
WRITE(8,'(I0)') ${FC_SIZEOF_A}
|
||||
CLOSE(8)
|
||||
END
|
||||
@@ -320,7 +258,7 @@ foreach (KIND ${VAR} )
|
||||
else ()
|
||||
FORTRAN_RUN ("REAL KIND SIZEOF" ${PROG_SRC2_${KIND}} XX YY VALIDREALKINDS_RESULT_${KIND})
|
||||
endif ()
|
||||
file (READ "${RUN_OUTPUT_PATH_DEFAULT}/pac_validRealKinds.out" PROG_OUTPUT1)
|
||||
file (READ "${RUN_OUTPUT_PATH_DEFAULT}/pac_validRealKinds.${KIND}.out" PROG_OUTPUT1)
|
||||
string (REGEX REPLACE "\n" "" PROG_OUTPUT1 "${PROG_OUTPUT1}")
|
||||
set (pack_real_sizeof "${pack_real_sizeof} ${PROG_OUTPUT1},")
|
||||
endforeach ()
|
||||
@@ -375,7 +313,7 @@ if (NOT CMAKE_VERSION VERSION_LESS "3.14.0")
|
||||
else ()
|
||||
FORTRAN_RUN ("SIZEOF NATIVE KINDs" ${PROG_SRC3} XX YY PAC_SIZEOF_NATIVE_KINDS_RESULT)
|
||||
endif ()
|
||||
file (READ "${RUN_OUTPUT_PATH_DEFAULT}/pac_sizeof_native_kinds.out" PROG_OUTPUT)
|
||||
file (READ "${RUN_OUTPUT_PATH_DEFAULT}/pac_sizeof_native_kinds.out" PROG_OUTPUT3)
|
||||
# dnl The output from the above program will be:
|
||||
# dnl -- LINE 1 -- sizeof INTEGER
|
||||
# dnl -- LINE 2 -- kind of INTEGER
|
||||
@@ -385,14 +323,14 @@ file (READ "${RUN_OUTPUT_PATH_DEFAULT}/pac_sizeof_native_kinds.out" PROG_OUTPUT)
|
||||
# dnl -- LINE 6 -- kind of DOUBLE PRECISION
|
||||
|
||||
# Convert the string to a list of strings by replacing the carriage return with a semicolon
|
||||
string (REGEX REPLACE "\n" ";" PROG_OUTPUT "${PROG_OUTPUT}")
|
||||
string (REGEX REPLACE "\n" ";" PROG_OUTPUT3 "${PROG_OUTPUT3}")
|
||||
|
||||
list (GET PROG_OUTPUT 0 PAC_FORTRAN_NATIVE_INTEGER_SIZEOF)
|
||||
list (GET PROG_OUTPUT 1 PAC_FORTRAN_NATIVE_INTEGER_KIND)
|
||||
list (GET PROG_OUTPUT 2 PAC_FORTRAN_NATIVE_REAL_SIZEOF)
|
||||
list (GET PROG_OUTPUT 3 PAC_FORTRAN_NATIVE_REAL_KIND)
|
||||
list (GET PROG_OUTPUT 4 PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF)
|
||||
list (GET PROG_OUTPUT 5 PAC_FORTRAN_NATIVE_DOUBLE_KIND)
|
||||
list (GET PROG_OUTPUT3 0 PAC_FORTRAN_NATIVE_INTEGER_SIZEOF)
|
||||
list (GET PROG_OUTPUT3 1 PAC_FORTRAN_NATIVE_INTEGER_KIND)
|
||||
list (GET PROG_OUTPUT3 2 PAC_FORTRAN_NATIVE_REAL_SIZEOF)
|
||||
list (GET PROG_OUTPUT3 3 PAC_FORTRAN_NATIVE_REAL_KIND)
|
||||
list (GET PROG_OUTPUT3 4 PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF)
|
||||
list (GET PROG_OUTPUT3 5 PAC_FORTRAN_NATIVE_DOUBLE_KIND)
|
||||
|
||||
if (NOT PAC_FORTRAN_NATIVE_INTEGER_SIZEOF)
|
||||
message (FATAL_ERROR "Failed to find SIZEOF NATIVE INTEGER KINDs for Fortran")
|
||||
@@ -434,132 +372,13 @@ endif ()
|
||||
|
||||
set (${HDF_PREFIX}_H5CONFIG_F_NUM_RKIND "INTEGER, PARAMETER :: num_rkinds = ${NUM_RKIND}")
|
||||
|
||||
string (REGEX REPLACE "{" "" OUT_VAR ${PAC_FC_ALL_REAL_KINDS})
|
||||
string (REGEX REPLACE "}" "" OUT_VAR ${OUT_VAR})
|
||||
set (${HDF_PREFIX}_H5CONFIG_F_RKIND "INTEGER, DIMENSION(1:num_rkinds) :: rkind = (/${OUT_VAR}/)")
|
||||
|
||||
string (REGEX REPLACE "{" "" OUT_VAR ${PAC_FC_ALL_REAL_KINDS_SIZEOF})
|
||||
string (REGEX REPLACE "}" "" OUT_VAR ${OUT_VAR})
|
||||
set (${HDF_PREFIX}_H5CONFIG_F_RKIND_SIZEOF "INTEGER, DIMENSION(1:num_rkinds) :: rkind_sizeof = (/${OUT_VAR}/)")
|
||||
|
||||
ENABLE_LANGUAGE (C)
|
||||
|
||||
if (NOT CMAKE_VERSION VERSION_LESS "3.14.0")
|
||||
include (CheckCSourceRuns)
|
||||
else ()
|
||||
#-----------------------------------------------------------------------------
|
||||
# The provided CMake C macros don't provide a general compile/run function
|
||||
# so this one is used.
|
||||
#-----------------------------------------------------------------------------
|
||||
macro (C_RUN FUNCTION_NAME SOURCE_CODE RETURN_VAR)
|
||||
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15.0")
|
||||
message (VERBOSE "Detecting C ${FUNCTION_NAME}")
|
||||
endif ()
|
||||
if (HDF5_REQUIRED_LIBRARIES)
|
||||
set (CHECK_FUNCTION_EXISTS_ADD_LIBRARIES
|
||||
"-DLINK_LIBRARIES:STRING=${HDF5_REQUIRED_LIBRARIES}")
|
||||
else ()
|
||||
set (CHECK_FUNCTION_EXISTS_ADD_LIBRARIES)
|
||||
endif ()
|
||||
file (WRITE
|
||||
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testCCompiler1.c
|
||||
${SOURCE_CODE}
|
||||
)
|
||||
TRY_RUN (RUN_RESULT_VAR COMPILE_RESULT_VAR
|
||||
${CMAKE_BINARY_DIR}
|
||||
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testCCompiler1.c
|
||||
CMAKE_FLAGS "${CHECK_FUNCTION_EXISTS_ADD_LIBRARIES}"
|
||||
RUN_OUTPUT_VARIABLE OUTPUT_VAR
|
||||
)
|
||||
|
||||
set (${RETURN_VAR} ${OUTPUT_VAR})
|
||||
|
||||
#if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15.0")
|
||||
# message (TRACE "* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ")
|
||||
# message (TRACE "Test COMPILE_RESULT_VAR ${COMPILE_RESULT_VAR} ")
|
||||
# message (TRACE "* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ")
|
||||
# message (TRACE "Test RUN_RESULT_VAR ${RUN_RESULT_VAR} ")
|
||||
# message (TRACE "* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ")
|
||||
#endif ()
|
||||
|
||||
if (${COMPILE_RESULT_VAR})
|
||||
if (${RUN_RESULT_VAR} MATCHES 1)
|
||||
set (${RUN_RESULT_VAR} 1 CACHE INTERNAL "Have C function ${FUNCTION_NAME}")
|
||||
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15.0")
|
||||
message (VERBOSE "Testing C ${FUNCTION_NAME} - OK")
|
||||
endif ()
|
||||
file (APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
|
||||
"Determining if the C ${FUNCTION_NAME} exists passed with the following output:\n"
|
||||
"${OUTPUT_VAR}\n\n"
|
||||
)
|
||||
else ()
|
||||
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15.0")
|
||||
message (VERBOSE "Testing C ${FUNCTION_NAME} - Fail")
|
||||
endif ()
|
||||
set (${RUN_RESULT_VAR} 0 CACHE INTERNAL "Have C function ${FUNCTION_NAME}")
|
||||
file (APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
|
||||
"Determining if the C ${FUNCTION_NAME} exists failed with the following output:\n"
|
||||
"${OUTPUT_VAR}\n\n")
|
||||
endif ()
|
||||
else ()
|
||||
message (FATAL_ERROR "Compilation of C ${FUNCTION_NAME} - Failed")
|
||||
endif ()
|
||||
endmacro ()
|
||||
endif ()
|
||||
|
||||
set (PROG_SRC
|
||||
"
|
||||
#include <float.h>
|
||||
#include <stdio.h>
|
||||
#define CHECK_FLOAT128 ${${HDF_PREFIX}_SIZEOF___FLOAT128}
|
||||
#if CHECK_FLOAT128!=0
|
||||
# if ${${HDF_PREFIX}_HAVE_QUADMATH_H}!=0
|
||||
#include <quadmath.h>
|
||||
# endif
|
||||
# ifdef FLT128_DIG
|
||||
#define C_FLT128_DIG FLT128_DIG
|
||||
# else
|
||||
#define C_FLT128_DIG 0
|
||||
# endif
|
||||
#else
|
||||
#define C_FLT128_DIG 0
|
||||
#endif
|
||||
#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
|
||||
#define C_LDBL_DIG DECIMAL_DIG
|
||||
#else
|
||||
#define C_LDBL_DIG LDBL_DIG
|
||||
#endif
|
||||
int main() {
|
||||
printf(\"%d\\\\n%d\\\\n\", C_LDBL_DIG, C_FLT128_DIG)\\\;
|
||||
return 1\\\;
|
||||
}
|
||||
"
|
||||
)
|
||||
|
||||
if (NOT CMAKE_VERSION VERSION_LESS "3.14.0")
|
||||
check_c_source_runs (${PROG_SRC} PROG_OUTPUT)
|
||||
else ()
|
||||
C_RUN ("maximum decimal precision for C" ${PROG_SRC} PROG_OUTPUT)
|
||||
endif ()
|
||||
|
||||
# dnl The output from the above program will be:
|
||||
# dnl -- LINE 1 -- long double decimal precision
|
||||
# dnl -- LINE 2 -- __float128 decimal precision
|
||||
|
||||
# Convert the string to a list of strings by replacing the carriage return with a semicolon
|
||||
string (REGEX REPLACE "\n" ";" PROG_OUTPUT "${PROG_OUTPUT}")
|
||||
|
||||
list (GET PROG_OUTPUT 0 LDBL_DIG)
|
||||
list (GET PROG_OUTPUT 1 FLT128_DIG)
|
||||
|
||||
if (${HDF_PREFIX}_SIZEOF___FLOAT128 EQUAL 0 OR FLT128_DIG EQUAL 0)
|
||||
set (${HDF_PREFIX}_HAVE_FLOAT128 0)
|
||||
set (${HDF_PREFIX}_SIZEOF___FLOAT128 0)
|
||||
set (${HDF_PREFIX}_PAC_C_MAX_REAL_PRECISION ${LDBL_DIG})
|
||||
else ()
|
||||
set(${HDF_PREFIX}_PAC_C_MAX_REAL_PRECISION ${FLT128_DIG})
|
||||
endif ()
|
||||
string (REGEX REPLACE "{" "" OUT_VAR1 ${PAC_FC_ALL_REAL_KINDS})
|
||||
string (REGEX REPLACE "}" "" OUT_VAR1 ${OUT_VAR1})
|
||||
set (${HDF_PREFIX}_H5CONFIG_F_RKIND "INTEGER, DIMENSION(1:num_rkinds) :: rkind = (/${OUT_VAR1}/)")
|
||||
|
||||
string (REGEX REPLACE "{" "" OUT_VAR2 ${PAC_FC_ALL_REAL_KINDS_SIZEOF})
|
||||
string (REGEX REPLACE "}" "" OUT_VAR2 ${OUT_VAR2})
|
||||
set (${HDF_PREFIX}_H5CONFIG_F_RKIND_SIZEOF "INTEGER, DIMENSION(1:num_rkinds) :: rkind_sizeof = (/${OUT_VAR2}/)")
|
||||
|
||||
# Setting definition if there is a 16 byte fortran integer
|
||||
string (FIND ${PAC_FC_ALL_INTEGER_KINDS_SIZEOF} "16" pos)
|
||||
|
||||
Reference in New Issue
Block a user