summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScot Breitenfeld <brtnfld@hdfgroup.org>2015-03-28 20:24:36 (GMT)
committerScot Breitenfeld <brtnfld@hdfgroup.org>2015-03-28 20:24:36 (GMT)
commit8e5a71c716c4d88b273137a81376f1a63ba54900 (patch)
treeb25849b518a58150970842a3e6601c136f92a6d0
parent72d896f70948d515cf047e76d1067ae5c3ccd35c (diff)
downloadhdf5-8e5a71c716c4d88b273137a81376f1a63ba54900.zip
hdf5-8e5a71c716c4d88b273137a81376f1a63ba54900.tar.gz
hdf5-8e5a71c716c4d88b273137a81376f1a63ba54900.tar.bz2
[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
-rw-r--r--MANIFEST2
-rw-r--r--config/cce-fflags73
-rw-r--r--config/cce-flags79
-rw-r--r--config/linux-gnulibc124
-rw-r--r--fortran/test/tH5P_F03.f9011
-rw-r--r--fortran/test/tf.f9011
6 files changed, 184 insertions, 16 deletions
diff --git a/MANIFEST b/MANIFEST
index ad33012..593ccde 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -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
diff --git a/config/cce-fflags b/config/cce-fflags
new file mode 100644
index 0000000..896e711
--- /dev/null
+++ b/config/cce-fflags
@@ -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
diff --git a/config/cce-flags b/config/cce-flags
new file mode 100644
index 0000000..a34fcbe
--- /dev/null
+++ b/config/cce-flags
@@ -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
diff --git a/config/linux-gnulibc1 b/config/linux-gnulibc1
index c18c02d..465bfed 100644
--- a/config/linux-gnulibc1
+++ b/config/linux-gnulibc1
@@ -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
diff --git a/fortran/test/tH5P_F03.f90 b/fortran/test/tH5P_F03.f90
index 34fd0ad..56f9679 100644
--- a/fortran/test/tH5P_F03.f90
+++ b/fortran/test/tH5P_F03.f90
@@ -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)
diff --git a/fortran/test/tf.f90 b/fortran/test/tf.f90
index 6d5911f..242d757 100644
--- a/fortran/test/tf.f90
+++ b/fortran/test/tf.f90
@@ -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)