From 8e5a71c716c4d88b273137a81376f1a63ba54900 Mon Sep 17 00:00:00 2001 From: Scot Breitenfeld Date: Sat, 28 Mar 2015 15:24:36 -0500 Subject: [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 --- MANIFEST | 2 ++ config/cce-fflags | 73 +++++++++++++++++++++++++++++++++++++++++++ config/cce-flags | 79 +++++++++++++++++++++++++++++++++++++++++++++++ config/linux-gnulibc1 | 24 +++++++++++--- fortran/test/tH5P_F03.f90 | 11 +++---- fortran/test/tf.f90 | 11 +++---- 6 files changed, 184 insertions(+), 16 deletions(-) create mode 100644 config/cce-fflags create mode 100644 config/cce-flags 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) -- cgit v0.12