[svn-r26642] Fix for HDFFV09202 and HDFFV-9171.

HDFFV-9171 Configure mistakes Cray Compilers for Intel Compilers,
HDFFV-9202 subroutine VERIFY() fails when checking 8 byte integers in fortran tests 

Tested: h5committest
This commit is contained in:
Scot Breitenfeld 2015-03-28 15:24:36 -05:00
parent 72d896f709
commit 8e5a71c716
6 changed files with 184 additions and 16 deletions

View File

@ -88,6 +88,8 @@
./config/COPYING
./config/BlankForm
./config/apple
./config/cce-fflags
./config/cce-flags
./config/commence.am
./config/conclude.am
./config/examples.am

73
config/cce-fflags Normal file
View File

@ -0,0 +1,73 @@
# -*- shell-script -*-
#
# Copyright by The HDF Group.
# All rights reserved.
#
# This file is part of HDF5. The full HDF5 copyright notice, including
# terms governing use, modification, and redistribution, is contained in
# the files COPYING and Copyright.html. COPYING can be found at the root
# of the source code distribution tree; Copyright.html can be found at the
# root level of an installed copy of the electronic HDF5 document set and
# is linked from the top-level documents page. It can also be found at
# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have
# access to either file, you may request a copy from help@hdfgroup.org.
# This file should be sourced into configure if the compiler is the
# Cray Compiling Environment (CCE) compiler or a derivative. It is careful not to do anything
# if the compiler is not Cray; otherwise `cc_flags_set' is set to `yes'
#
# Get the compiler version in a way that works for cce
# unless a compiler version is already known
#
# cc_vendor: The compiler name: Cray
# cc_version: Version number: 8.3.0
#
if test X = "X$f9x_flags_set"; then
f9x_version="`$FC $FCFLAGS $H5_FCFLAGS -V 2>&1 |grep 'Cray'`"
if test X != "X$f9x_version"; then
f9x_vendor=cce
f9x_version=`echo $f9x_version |sed 's/.*Version \([-a-z0-9\.\-]*\).*/\1/'`
echo "compiler '$FC' is Cray $f9x_vendor-$f9x_version"
fc_version_info=$f9x_version
fi
fi
# Common Cray flags for various situations
if test "X-cce" = "X-$f9x_vendor"; then
# Insert section about version specific problems from compiler flags here,
# if necessary.
arch=
# Architecture-specific flags
# Nothing currently. (Uncomment code below and modify to add any)
#case "$host_os-$host_cpu" in
# *-i686)
# arch="-march=i686"
# ;;
#esac
# General
H5_FCFLAGS="${H5_FCFLAGS} -hnocaf"
# Production
# -Wl,-s to remove all symbols for smaller file
PROD_FCFLAGS="-O3 -Wl,-s"
# Debug
DEBUG_FCFLAGS="-g -O0"
# Profile
# Use this for profiling with gprof
PROFILE_FCFLAGS="-g -p"
# Flags are set
f9x_flags_set=yes
fi
# Clear f9x info if no flags set
if test "X-$f9x_flags_set" = "X-"; then
f9x_vendor=
f9x_version=
fi

79
config/cce-flags Normal file
View File

@ -0,0 +1,79 @@
# -*- shell-script -*-
#
# Copyright by The HDF Group.
# All rights reserved.
#
# This file is part of HDF5. The full HDF5 copyright notice, including
# terms governing use, modification, and redistribution, is contained in
# the files COPYING and Copyright.html. COPYING can be found at the root
# of the source code distribution tree; Copyright.html can be found at the
# root level of an installed copy of the electronic HDF5 document set and
# is linked from the top-level documents page. It can also be found at
# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have
# access to either file, you may request a copy from help@hdfgroup.org.
# This file should be sourced into configure if the compiler is the
# Cray Compiling Environment (CCE) compiler or a derivative. It is careful not to do anything
# if the compiler is not Cray; otherwise `cc_flags_set' is set to `yes'
#
# Get the compiler version in a way that works for cce
# unless a compiler version is already known
#
# cc_vendor: The compiler name: Cray
# cc_version: Version number: 8.3.0
#
if test X = "X$cc_flags_set"; then
cc_version="`$CC $CFLAGS $H5_CFLAGS -V 2>&1 |grep 'Cray'`"
if test X != "X$cc_version"; then
cc_vendor=cce
cc_version=`echo $cc_version |sed 's/.*Version \([-a-z0-9\.\-]*\).*/\1/'`
echo "compiler '$CC' is Cray $cc_vendor-$cc_version"
cc_version_info=$cc_version
cxx_version_info=$cc_version
fi
fi
# Common Cray flags for various situations
if test "X-cce" = "X-$cc_vendor"; then
# Insert section about version specific problems from compiler flags here,
# if necessary.
arch=
# Architecture-specific flags
# Nothing currently. (Uncomment code below and modify to add any)
#case "$host_os-$host_cpu" in
# *-i686)
# arch="-march=i686"
# ;;
#esac
# General
# Default to C99 standard.
H5_CFLAGS="${H5_CFLAGS:--hc99 $arch}"
# Production
# -Wl,-s to remove all symbols for smaller file
PROD_CFLAGS="-O3 -Wl,-s"
PROD_CPPFLAGS=
# Debug
DEBUG_CFLAGS="-g -O0"
DEBUG_CPPFLAGS=
# Profile
# Use this for profiling with gprof
PROFILE_CFLAGS="-g -p"
PROFILE_CPPFLAGS=
# Flags are set
cc_flags_set=yes
fi
# Clear cc info if no flags set
if test "X-$cc_flags_set" = "X-"; then
cc_vendor=
cc_version=
fi

View File

@ -38,6 +38,9 @@ fi
# Figure out PGI C compiler flags
. $srcdir/config/pgi-flags
# Figure out CCE C compiler flags
. $srcdir/config/cce-flags
# Figure out Intel C compiler flags
. $srcdir/config/intel-flags
@ -89,10 +92,13 @@ else
esac
fi
# Figure out PGI F90 compiler flags
# Figure out PGI FC compiler flags
. $srcdir/config/pgi-fflags
# Figure out Intel F90 compiler flags
# Figure out CCE FC compiler flags
. $srcdir/config/cce-fflags
# Figure out Intel FC compiler flags
. $srcdir/config/intel-fflags
case $FC_BASENAME in
@ -125,6 +131,10 @@ if test -z "$CXX"; then
fi
# compiler version strings
# check if the compiler_version_info is already set
if test -z "$cc_version_info"; then
case $CC in
# whatever matches *pgcc* will also match *gcc*, so this one must come first
*pgcc*)
@ -153,7 +163,11 @@ case $CC in
;;
esac
fi
# get fortran version info
# check if the compiler_version_info is already set
if test -z "$fc_version_info"; then
case $FC in
*gfortran*)
fc_version_info=`$FC $FCFLAGS $H5_FCFLAGS --version 2>&1 |\
@ -199,9 +213,11 @@ case $FC in
echo "No match to get fc_version_info for $FC"
;;
esac
fi
# get c++ version info
# check if the compiler_version_info is already set
if test -z "$cxx_version_info"; then
case $CXX in
*g++*)
cxx_version_info=`$CXX $CXXFLAGS $H5_CXXFLAGS --version 2>&1 |\
@ -226,4 +242,4 @@ case $CXX in
echo "No match to get cxx_version_info for $CXX"
;;
esac
fi

View File

@ -360,14 +360,13 @@ SUBROUTINE test_genprop_class_callback(total_error)
WRITE(*,*) 'Class names do not match! name=',CLASS1_NAME_BUF, 'CLASS1_NAME=',CLASS1_NAME
total_error = total_error + 1
ENDIF
! Close class
CALL h5pclose_class_f(cid2, error)
CALL check("h5pclose_class_f", error, total_error)
! Verify that the creation callback occurred
CALL VERIFY("h5pcreate_f", crt_cb_struct%count, 1, total_error)
CALL VERIFY("h5pcreate_f", INT(crt_cb_struct%id), INT(lid1), total_error)
CALL VERIFY_INTEGER_HID_T("h5pcreate_f", crt_cb_struct%id, lid1, total_error)
! Check the number of properties in list
CALL h5pget_nprops_f(lid1,nprops, error)
@ -380,7 +379,7 @@ SUBROUTINE test_genprop_class_callback(total_error)
! Verify that the creation callback occurred
CALL VERIFY("h5pcreate_f", crt_cb_struct%count, 2, total_error)
CALL VERIFY("h5pcreate_f", INT(crt_cb_struct%id), INT(lid2), total_error)
CALL VERIFY_INTEGER_HID_T("h5pcreate_f", crt_cb_struct%id, lid2, total_error)
! Check the number of properties in list
CALL h5pget_nprops_f(lid2,nprops, error)
@ -393,15 +392,15 @@ SUBROUTINE test_genprop_class_callback(total_error)
! Verify that the close callback occurred
CALL VERIFY("h5pcreate_f", cls_cb_struct%count, 1, total_error)
CALL VERIFY("h5pcreate_f", INT(cls_cb_struct%id), INT(lid1), total_error)
CALL VERIFY_INTEGER_HID_T("h5pcreate_f", cls_cb_struct%id, lid1, total_error)
! Close second list
CALL h5pclose_f(lid2, error);
CALL check("h5pclose_f", error, total_error)
! Verify that the close callback occurred
! Verify that the close callback occurred
CALL VERIFY("h5pcreate_f", cls_cb_struct%count, 2, total_error)
CALL VERIFY("h5pcreate_f", INT(cls_cb_struct%id), INT(lid2), total_error)
CALL verify_INTEGER_HID_T("h5pcreate_f", cls_cb_struct%id, lid2, total_error)
! Close class
CALL h5pclose_class_f(cid1, error)

View File

@ -134,20 +134,19 @@ CONTAINS
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_TEST_DLL)
!DEC$attributes dllexport :: verify_Fortran_INTEGER_4
!DEC$attributes dllexport :: verify_INTEGER_HID_T
!DEC$endif
SUBROUTINE verify_Fortran_INTEGER_4(string,value,correct_value,total_error)
USE HDF5
INTEGER, PARAMETER :: int_kind_8 = SELECTED_INT_KIND(Fortran_INTEGER_4) ! should map to INTEGER*4 on most modern processors
SUBROUTINE verify_INTEGER_HID_T(string,value,correct_value,total_error)
USE HDF5
CHARACTER(LEN=*) :: string
INTEGER(int_kind_8) :: value, correct_value
INTEGER(HID_T) :: value, correct_value
INTEGER :: total_error
IF (value .NE. correct_value) THEN
total_error=total_error+1
WRITE(*,*) "ERROR: INCORRECT VALIDATION ", string
ENDIF
RETURN
END SUBROUTINE verify_Fortran_INTEGER_4
END SUBROUTINE verify_INTEGER_HID_T
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_TEST_DLL)