summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Young <dyoung@hdfgroup.org>2021-10-06 21:24:22 (GMT)
committerGitHub <noreply@github.com>2021-10-06 21:24:22 (GMT)
commit174f4275bab93e734fafd94d9b69929f3aeb963c (patch)
treec3699e3f94c4ef098e7cd94c2c93c3fc2fd39519
parenta08059894bc85655e4ed895fd5c5f4c1ba64a2f6 (diff)
downloadhdf5-174f4275bab93e734fafd94d9b69929f3aeb963c.zip
hdf5-174f4275bab93e734fafd94d9b69929f3aeb963c.tar.gz
hdf5-174f4275bab93e734fafd94d9b69929f3aeb963c.tar.bz2
To reduce maintenance effort, delete the `noerror-` variants of the compiler flags files (#1033)
* Avoid maintenance headaches: delete the `noerror-` variants of the compiler flags files, since they essentially duplicate the `error-` files modulo the replacement of `-Werror=` with `-W` and any changes in comments. (I verified the duplication with a script.) For autoconf, reinstate the use of the `demote_errors` shell function to derive the `noerror-` content from the `error-` content. `demote_errors` replaces `-Werror=` with `-W` when `WARNINGS_AS_ERRORS` is `no`. Slightly reorder `configure.ac` so that the setting of `WARNINGS_AS_ERRORS` takes effect before the `error-` files are sourced. * Take a stab at updating the CMake files to match the changes I made to the autoconf files to remove `noerror-` files. I'm not much of a CMake user so these changes are quite rough. Looks like the duplication can be reduced with the introduction of a new macro. * Delete `noerror-` files from the MANIFEST. * Reduce duplication in the CMake files: perform the HDF5_ENABLE_WARNINGS_AS_ERRORS test once in the ADD_H5_FLAGS macro. * Add a release note.
-rw-r--r--MANIFEST6
-rw-r--r--config/clang-cxxflags9
-rw-r--r--config/clang-flags9
-rw-r--r--config/clang-warnings/noerror-general82
-rw-r--r--config/cmake/HDFCXXCompilerFlags.cmake18
-rw-r--r--config/cmake/HDFCompilerFlags.cmake22
-rw-r--r--config/cmake_ext_mod/HDFMacros.cmake3
-rw-r--r--config/gnu-cxxflags11
-rw-r--r--config/gnu-flags11
-rw-r--r--config/gnu-warnings/cxx-noerror-511
-rw-r--r--config/gnu-warnings/cxx-noerror-general32
-rw-r--r--config/gnu-warnings/noerror-512
-rw-r--r--config/gnu-warnings/noerror-825
-rw-r--r--config/gnu-warnings/noerror-general92
-rw-r--r--configure.ac81
-rw-r--r--release_docs/RELEASE.txt7
16 files changed, 75 insertions, 356 deletions
diff --git a/MANIFEST b/MANIFEST
index c23e498..bd9817f 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -159,7 +159,6 @@
./config/clang-warnings/error-general
./config/clang-warnings/general
./config/clang-warnings/no-developer-general
-./config/clang-warnings/noerror-general
./config/gnu-warnings/4.8-4.last
./config/gnu-warnings/4.8
./config/gnu-warnings/4.9
@@ -176,8 +175,6 @@
./config/gnu-warnings/cxx-9
./config/gnu-warnings/cxx-error-5
./config/gnu-warnings/cxx-error-general
-./config/gnu-warnings/cxx-noerror-5
-./config/gnu-warnings/cxx-noerror-general
./config/gnu-warnings/developer-4.8
./config/gnu-warnings/developer-7
./config/gnu-warnings/developer-8
@@ -195,9 +192,6 @@
./config/gnu-warnings/no-developer-4.8
./config/gnu-warnings/no-developer-8
./config/gnu-warnings/no-developer-general
-./config/gnu-warnings/noerror-5
-./config/gnu-warnings/noerror-8
-./config/gnu-warnings/noerror-general
./config/intel-warnings/15
./config/intel-warnings/18
./config/intel-warnings/developer-general
diff --git a/config/clang-cxxflags b/config/clang-cxxflags
index c585ce7..76f095f 100644
--- a/config/clang-cxxflags
+++ b/config/clang-cxxflags
@@ -20,15 +20,15 @@
#
# For now, do not promote any warnings to errors.
#
-PROMOTE_ERRORS_DFLT=no
+WARNINGS_AS_ERRORS_DFLT=no
#
# This filter rewrites -Werror= as -W, in that way demoting warnings
-# promoted to errors back to warnings, if PROMOTE_ERRORS is no.
+# promoted to errors back to warnings, if WARNINGS_AS_ERRORS is no.
#
demote_errors()
{
- if [ ${PROMOTE_ERRORS:-${PROMOTE_ERRORS_DFLT}} = no ]; then
+ if [ ${WARNINGS_AS_ERRORS:-${WARNINGS_AS_ERRORS_DFLT}} = no ]; then
sed 's,-Werror=,-W,g'
else
cat
@@ -44,7 +44,7 @@ demote_errors()
load_clang_arguments()
{
set -- $(for arg; do
- sed 's,#.*$,,' $srcdir/config/clang-warnings/${arg}
+ sed 's,#.*$,,' $srcdir/config/clang-warnings/${arg} | demote_errors
done)
IFS=' ' echo "$*"
}
@@ -161,7 +161,6 @@ if test "X-clang" = "X-$cxx_vendor" -o "X-Apple LLVM" = "X-$cxx_vendor"; then
H5_CXXFLAGS="$H5_CXXFLAGS $(load_clang_arguments general)"
H5_ECXXFLAGS="$H5_ECXXFLAGS $(load_clang_arguments error-general)"
- H5_NECXXFLAGS="$H5_NECXXFLAGS $(load_clang_arguments noerror-general)"
######################
# Developer warnings #
diff --git a/config/clang-flags b/config/clang-flags
index 92a8973..5c377ed 100644
--- a/config/clang-flags
+++ b/config/clang-flags
@@ -20,15 +20,15 @@
#
# For now, do not promote any warnings to errors.
#
-PROMOTE_ERRORS_DFLT=no
+WARNINGS_AS_ERRORS_DFLT=no
#
# This filter rewrites -Werror= as -W, in that way demoting warnings
-# promoted to errors back to warnings, if PROMOTE_ERRORS is no.
+# promoted to errors back to warnings, if WARNINGS_AS_ERRORS is no.
#
demote_errors()
{
- if [ ${PROMOTE_ERRORS:-${PROMOTE_ERRORS_DFLT}} = no ]; then
+ if [ ${WARNINGS_AS_ERRORS:-${WARNINGS_AS_ERRORS_DFLT}} = no ]; then
sed 's,-Werror=,-W,g'
else
cat
@@ -44,7 +44,7 @@ demote_errors()
load_clang_arguments()
{
set -- $(for arg; do
- sed 's,#.*$,,' $srcdir/config/clang-warnings/${arg}
+ sed 's,#.*$,,' $srcdir/config/clang-warnings/${arg} | demote_errors
done)
IFS=' ' echo "$*"
}
@@ -183,7 +183,6 @@ if test "X-clang" = "X-$cc_vendor" -o "X-Apple LLVM" = "X-$cc_vendor"; then
H5_CFLAGS="$H5_CFLAGS $(load_clang_arguments general)"
H5_ECFLAGS="$H5_ECFLAGS $(load_clang_arguments error-general)"
- H5_NECFLAGS="$H5_NECFLAGS $(load_clang_arguments noerror-general)"
######################
# Developer warnings #
diff --git a/config/clang-warnings/noerror-general b/config/clang-warnings/noerror-general
deleted file mode 100644
index 4690ebd..0000000
--- a/config/clang-warnings/noerror-general
+++ /dev/null
@@ -1,82 +0,0 @@
-#
-# These warnings will be treated as errors, using the error-general file,
-# when HDF5_ENABLE_WARNINGS_AS_ERRORS is set to true for CMake or
-# the --enable-warnings-as-errors option is specified for configure.
-# Otherwise this file will be used to treat them as warnings.
-#
--Wbad-function-cast
--Wimplicit-function-declaration
--Wincompatible-pointer-types
--Wmissing-declarations
--Wpacked
--Wshadow
--Wswitch
-#
-# NOTE: Following files are not compatible with incompatible-pointer-types as errors
-# src/H5Dchunk.c,src/H5Dint.c,src/H5Gint.c,src/H5HFcache.c,src/H5I.c,src/H5T.c
--Wno-error=incompatible-pointer-types-discards-qualifiers
-#
-#
-# NOTE: File Driver files are not compatible with these warnings as errors
-# H5FDdirect.c,H5FDmpio.c,H5FDros3.c,
-# -Werror=unused-function
-#
--Wunused-function
-#
-# H5FDdrvr_module.h
-# -Werror=unused-variable
-#
--Wunused-variable
-#
-# H5VLpassthru.c
-# -Werror=unused-parameter
-#
--Wunused-parameter
-#
-#
-#
-# NOTE: Tools files are not compatible with these warnings as errors
-# lib/h5tools.c
-# -Werror=cast-align
-#
--Wcast-align
-#
-# lib/h5tools_utils.c
-# -Werror=unused-parameter
-#
-#
-# NOTE: JNI files are not compatible with these warnings as errors
-# jni/h5pDCPLImp.c,jni/nativeData.c,jni/h5util.c,jni/h5rImp.c
-# jni/h5sImp.c,jni/h5tImp.c
-# -Werror=cast-align
-# jni/h5util.c
-# -Werror=format(-overflow)
-#
--Wformat
-#
-#
-#Examples and tests do not use the same set of extensive warning flags as libraries
-# Here is a list of tests and examples that have issues with the stricter warnings as error
-#
-# NOTE: Test files are not compatible with these warnings as errors
-# thread_id.c,
-# -Werror=unused-function
-# dsets.c
-# -Werror=unused-parameter
-#
-#
-# NOTE: Examples files are not compatible with these warnings as errors
-# h5_vds-eiger.c,h5_vds-exclim.c,h5_vds.c,h5_vds-exc.c,h5_vds-percival-unlim-maxmin.c
-# h5_vds-percival.c,h5_read.c,h5_rdwt.c,h5_mount.c,h5_extend.c,h5_extend_write.c
-# h5_write.c,h5_vds-simpleIO.c,h5_ref2reg_deprec.c,h5_crtgrp.c,h5_select.c
-# h5_vds-percival-unlim.c,h5_crtatt.c,h5_group.c,h5_attribute.c,h5_crtdat.c
-# h5_reference_deprec.c
-# h5_rdwt.c,h5_crtgrp.c,h5_crtatt.c,h5_crtdat.c
-# -Werror=strict-prototypes
-# h5_rdwt.c,h5_crtgrp.c,h5_crtatt.c,h5_crtdat.c
-# -Werror=old-style-definition
-# h5_vds-exclim.c,h5_vds.c,h5_vds-exc.c,
-# -Werror=unused-variable
-# h5_elink_unix2win.c,h5_extlink.c,h5_attribute.c
-# -Werror=unused-parameter
-
diff --git a/config/cmake/HDFCXXCompilerFlags.cmake b/config/cmake/HDFCXXCompilerFlags.cmake
index e76150f..7bfd0bd 100644
--- a/config/cmake/HDFCXXCompilerFlags.cmake
+++ b/config/cmake/HDFCXXCompilerFlags.cmake
@@ -133,11 +133,7 @@ else ()
AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 4.8)
# add the general CXX flags for g++ compiler versions 4.8 and above.
ADD_H5_FLAGS (HDF5_CMAKE_CXX_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/cxx-general")
- if (HDF5_ENABLE_WARNINGS_AS_ERRORS)
- ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/cxx-error-general")
- else ()
- ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/cxx-noerror-general")
- endif ()
+ ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/cxx-error-general")
endif ()
elseif (CMAKE_CXX_COMPILER_ID MATCHES "[Cc]lang")
ADD_H5_FLAGS (HDF5_CMAKE_CXX_FLAGS "${HDF5_SOURCE_DIR}/config/clang-warnings/general")
@@ -201,11 +197,7 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0)
# autotools always add the C flags with the CXX flags
ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/cxx-5")
- if (HDF5_ENABLE_WARNINGS_AS_ERRORS)
- ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/cxx-error-5")
- else ()
- ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/cxx-noerror-5")
- endif ()
+ ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/cxx-error-5")
endif ()
# Append more extra warning flags that only gcc 6.x+ knows about
@@ -230,11 +222,7 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0)
# Use the C warnings as CXX warnings are the same
ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/8")
- if (HDF5_ENABLE_WARNINGS_AS_ERRORS)
- ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/error-8")
- else ()
- ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/noerror-8")
- endif ()
+ ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/error-8")
if (HDF5_ENABLE_DEV_WARNINGS)
# Use the C warnings as CXX warnings are the same
ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/developer-8")
diff --git a/config/cmake/HDFCompilerFlags.cmake b/config/cmake/HDFCompilerFlags.cmake
index 210e475..eb43b73 100644
--- a/config/cmake/HDFCompilerFlags.cmake
+++ b/config/cmake/HDFCompilerFlags.cmake
@@ -153,22 +153,14 @@ else ()
# Add general CFlags for GCC versions 4.8 and above
if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 4.8)
ADD_H5_FLAGS (HDF5_CMAKE_C_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/general")
- if (HDF5_ENABLE_WARNINGS_AS_ERRORS)
- ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/error-general")
- else ()
- ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/noerror-general")
- endif ()
+ ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/error-general")
endif ()
# gcc automatically inlines based on the optimization level
# this is just a failsafe
list (APPEND H5_CFLAGS "-finline-functions")
elseif (CMAKE_C_COMPILER_ID MATCHES "[Cc]lang")
ADD_H5_FLAGS (HDF5_CMAKE_C_FLAGS "${HDF5_SOURCE_DIR}/config/clang-warnings/general")
- if (HDF5_ENABLE_WARNINGS_AS_ERRORS)
- ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/clang-warnings/error-general")
- else ()
- ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/clang-warnings/noerror-general")
- endif ()
+ ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/clang-warnings/error-general")
elseif (CMAKE_C_COMPILER_ID STREQUAL "PGI")
list (APPEND HDF5_CMAKE_C_FLAGS "-Minform=inform")
endif ()
@@ -228,11 +220,7 @@ if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
# Append more extra warning flags that only gcc 5.x+ knows about
if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 5.0)
ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/5")
- if (HDF5_ENABLE_WARNINGS_AS_ERRORS)
- ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/error-5")
- else ()
- ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/error-5")
- endif ()
+ ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/error-5")
endif ()
# Append more extra warning flags that only gcc 6.x+ knows about
@@ -253,9 +241,7 @@ if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
# Append more extra warning flags that only gcc 8.x+ knows about
if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 8.0)
ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/8")
- if (HDF5_ENABLE_WARNINGS_AS_ERRORS)
- ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/error-8")
- endif ()
+ ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/error-8")
if (HDF5_ENABLE_DEV_WARNINGS)
ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/developer-8")
else ()
diff --git a/config/cmake_ext_mod/HDFMacros.cmake b/config/cmake_ext_mod/HDFMacros.cmake
index ae0ebca..6da2b74 100644
--- a/config/cmake_ext_mod/HDFMacros.cmake
+++ b/config/cmake_ext_mod/HDFMacros.cmake
@@ -464,6 +464,9 @@ macro (ADD_H5_FLAGS h5_flag_var infile)
list (GET TEST_FLAG_STREAM ${line} str_flag)
string (REGEX REPLACE "^#.*" "" str_flag "${str_flag}")
#message (TRACE "str_flag=${str_flag}")
+ if (NOT HDF5_ENABLE_WARNINGS_AS_ERRORS)
+ string (REGEX REPLACE "-Werror=" "-W" str_flag "${str_flag}")
+ endif ()
if (str_flag)
list (APPEND ${h5_flag_var} "${str_flag}")
endif ()
diff --git a/config/gnu-cxxflags b/config/gnu-cxxflags
index 9f11406..280679d 100644
--- a/config/gnu-cxxflags
+++ b/config/gnu-cxxflags
@@ -20,15 +20,15 @@
#
# For now, do not promote any warnings to errors.
#
-PROMOTE_ERRORS_DFLT=no
+WARNINGS_AS_ERRORS_DFLT=no
#
# This filter rewrites -Werror= as -W, in that way demoting warnings
-# promoted to errors back to warnings, if PROMOTE_ERRORS is no.
+# promoted to errors back to warnings, if WARNINGS_AS_ERRORS is no.
#
demote_errors()
{
- if [ ${PROMOTE_ERRORS:-${PROMOTE_ERRORS_DFLT}} = no ]; then
+ if [ ${WARNINGS_AS_ERRORS:-${WARNINGS_AS_ERRORS_DFLT}} = no ]; then
sed 's,-Werror=,-W,g'
else
cat
@@ -44,7 +44,7 @@ demote_errors()
load_gnu_arguments()
{
set -- $(for arg; do
- sed 's,#.*$,,' $srcdir/config/gnu-warnings/${arg}
+ sed 's,#.*$,,' $srcdir/config/gnu-warnings/${arg} | demote_errors
done)
IFS=' ' echo "$*"
}
@@ -192,7 +192,6 @@ if test "X-g++" = "X-$cxx_vendor"; then
if test $cxx_vers_major -eq 4 -a $cxx_vers_minor -ge 8 -o $cxx_vers_major -ge 5; then
H5_CXXFLAGS="$H5_CXXFLAGS $(load_gnu_arguments cxx-general)"
H5_ECXXFLAGS="$H5_ECXXFLAGS $(load_gnu_arguments cxx-error-general)"
- H5_NECXXFLAGS="$H5_NECXXFLAGS $(load_gnu_arguments cxx-noerror-general)"
######################
# Developer warnings #
@@ -235,7 +234,6 @@ if test "X-g++" = "X-$cxx_vendor"; then
if test $cxx_vers_major -ge 5; then
H5_CXXFLAGS="$H5_CXXFLAGS $(load_gnu_arguments cxx-5)"
H5_ECXXFLAGS="$H5_ECXXFLAGS $(load_gnu_arguments cxx-error-5)"
- H5_NECXXFLAGS="$H5_NECXXFLAGS $(load_gnu_arguments cxx-noerror-5)"
fi
# gcc >= 6
@@ -256,7 +254,6 @@ if test "X-g++" = "X-$cxx_vendor"; then
# Use the C warnings as CXX warnings are the same
H5_CXXFLAGS="$H5_CXXFLAGS $(load_gnu_arguments 8)"
#H5_ECXXFLAGS="$H5_ECXXFLAGS $(load_gnu_arguments error-8)"
- #H5_NECXXFLAGS="$H5_NECXXFLAGS $(load_gnu_arguments noerror-8)"
# Use the C warnings as CXX warnings are the same
DEVELOPER_WARNING_CXXFLAGS="$DEVELOPER_WARNING_CXXFLAGS $(load_gnu_arguments developer-8)"
NO_DEVELOPER_WARNING_CXXFLAGS="$NO_DEVELOPER_WARNING_CXXFLAGS $(load_gnu_arguments no-developer-8)"
diff --git a/config/gnu-flags b/config/gnu-flags
index 3e4ceb2..89239df 100644
--- a/config/gnu-flags
+++ b/config/gnu-flags
@@ -20,15 +20,15 @@
#
# For now, do not promote any warnings to errors.
#
-PROMOTE_ERRORS_DFLT=no
+WARNINGS_AS_ERRORS_DFLT=no
#
# This filter rewrites -Werror= as -W, in that way demoting warnings
-# promoted to errors back to warnings, if PROMOTE_ERRORS is no.
+# promoted to errors back to warnings, if WARNINGS_AS_ERRORS is no.
#
demote_errors()
{
- if [ ${PROMOTE_ERRORS:-${PROMOTE_ERRORS_DFLT}} = no ]; then
+ if [ ${WARNINGS_AS_ERRORS:-${WARNINGS_AS_ERRORS_DFLT}} = no ]; then
sed 's,-Werror=,-W,g'
else
cat
@@ -44,7 +44,7 @@ demote_errors()
load_gnu_arguments()
{
set -- $(for arg; do
- sed 's,#.*$,,' $srcdir/config/gnu-warnings/${arg}
+ sed 's,#.*$,,' $srcdir/config/gnu-warnings/${arg} | demote_errors
done)
IFS=' ' echo "$*"
}
@@ -205,7 +205,6 @@ if test "X-gcc" = "X-$cc_vendor"; then
if test $cc_vers_major -eq 4 -a $cc_vers_minor -ge 8 -o $cc_vers_major -gt 4; then
H5_CFLAGS="$H5_CFLAGS $(load_gnu_arguments general)"
H5_ECFLAGS="$H5_ECFLAGS $(load_gnu_arguments error-general)"
- H5_NECFLAGS="$H5_NECFLAGS $(load_gnu_arguments noerror-general)"
######################
# Developer warnings #
@@ -245,7 +244,6 @@ if test "X-gcc" = "X-$cc_vendor"; then
if test $cc_vers_major -ge 5; then
H5_CFLAGS="$H5_CFLAGS $(load_gnu_arguments 5)"
H5_ECFLAGS="$H5_ECFLAGS $(load_gnu_arguments error-5)"
- H5_NECFLAGS="$H5_NECFLAGS $(load_gnu_arguments noerror-5)"
fi
# gcc >= 6
@@ -263,7 +261,6 @@ if test "X-gcc" = "X-$cc_vendor"; then
if test $cc_vers_major -ge 8; then
H5_CFLAGS="$H5_CFLAGS $(load_gnu_arguments 8)"
H5_ECFLAGS="$H5_ECFLAGS $(load_gnu_arguments error-8)"
- H5_NECFLAGS="$H5_NECFLAGS $(load_gnu_arguments noerror-8)"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS $(load_gnu_arguments developer-8)"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS $(load_gnu_arguments no-developer-8)"
fi
diff --git a/config/gnu-warnings/cxx-noerror-5 b/config/gnu-warnings/cxx-noerror-5
deleted file mode 100644
index 7bce3e8..0000000
--- a/config/gnu-warnings/cxx-noerror-5
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# In GCC 4.4.7, the compiler gripes about shadowed global
-# declarations when a local variable uses the name of a
-# function that's in a system header file. For some reason,
-# later versions of GCC (e.g., 5.2.0) don't complain about
-# the shadowed globals. Maybe later versions are less fussy?
-# Anyway, the shadowing seems to be harmless, and GCC 4.4.7
-# is not a supported compiler, so let us promote shadowed globals
-# warnings to errors only for GCC 5 and later.
-#
--Wshadow
diff --git a/config/gnu-warnings/cxx-noerror-general b/config/gnu-warnings/cxx-noerror-general
deleted file mode 100644
index 8cc1d94..0000000
--- a/config/gnu-warnings/cxx-noerror-general
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# HDF5 code should not trigger the following warnings under any
-# circumstances, so ask the compiler to treat them as errors:
-#
-# NOTE: c++/test files are not compatible with these warnings as errors
-# c++/test/tcompound.cpp
-# -Werror=cast-align
--Wcast-align
-# NOTE: c++/src files are not compatible with these warnings as errors
-# c++/src/H5Object.cpp
-# -Werror=missing-declarations
--Wmissing-declarations
--Wpacked
--Wredundant-decls
--Wswitch
-# NOTE: c++/test files are not compatible with these warnings as errors
-# c++/test/tattr.cpp
-# -Werror=unused-but-set-variable
--Wunused-but-set-variable
--Wunused-function
--Wunused-variable
-# NOTE: c++/src files are not compatible with these warnings as errors
-# c++/src/H5Object.cpp,c++/src/H5StrType.cpp,c++/src/H5PredType.cpp
-# -Werror=unused-parameter
--Wunused-parameter
-#
-# Other files not compatible
-# NOTE: c++/test files are not compatible with these warnings as errors
-# c++/test/titerate.cpp,c++/test/tarray.cpp
-# -Werror=missing-declarations
-# c++/test/titerate.cpp,c++/test/tarray.cpp,c++/test/tlinks.cpp,c++/test/ttypes.cpp,c++/test/dsets.cpp
-# -Werror=unused-parameter
diff --git a/config/gnu-warnings/noerror-5 b/config/gnu-warnings/noerror-5
deleted file mode 100644
index a7d40dd..0000000
--- a/config/gnu-warnings/noerror-5
+++ /dev/null
@@ -1,12 +0,0 @@
--Wincompatible-pointer-types
-#
-# In GCC 4.4.7, the compiler gripes about shadowed global
-# declarations when a local variable uses the name of a
-# function that's in a system header file. For some reason,
-# later versions of GCC (e.g., 5.2.0) don't complain about
-# the shadowed globals. Maybe later versions are less fussy?
-# Anyway, the shadowing seems to be harmless, and GCC 4.4.7
-# is not a supported compiler, so let us promote shadowed globals
-# warnings to errors only for GCC 5 and later.
-#
--Wshadow
diff --git a/config/gnu-warnings/noerror-8 b/config/gnu-warnings/noerror-8
deleted file mode 100644
index 2f54a4d..0000000
--- a/config/gnu-warnings/noerror-8
+++ /dev/null
@@ -1,25 +0,0 @@
-# NOTE: src/ files are not compatible with these warnings as errors
-# src/H5Dchunk.c
-# -Werror=cast-function-type
--Wcast-function-type
-#
-# For GCC 8, promote maybe-initialized warnings to an error. GCC 8
-# reports 0 maybe-uninitialized warnings where earlier versions
-# make many false reports. GCC 8 seems to analyze calls to static
-# in order to detect initializations that occur there. It's possible
-# that GCC 8 only performs that analysis at -O3, though.
-#
-#
-# NOTE: File Driver files are not compatible with these warnings as errors
-# H5FDlog.c,
-# -Werror=maybe-uninitialized
--Wmaybe-uninitialized
-# NOTE: src/ files are not compatible with these warnings as errors
-# src/H5Shyper.c,src/H5SL.c,src/H5Shyper.c
-# -Werror=maybe-uninitialized
-# NOTE: Test files are not compatible with these warnings as errors
-# test/cache_common.c,
-# -Werror=maybe-uninitialized
-# NOTE: hl/src/ files are not compatible with these warnings as errors
-# hl/src/H5DS.c,
-# -Werror=maybe-uninitialized
diff --git a/config/gnu-warnings/noerror-general b/config/gnu-warnings/noerror-general
deleted file mode 100644
index f49d89a..0000000
--- a/config/gnu-warnings/noerror-general
+++ /dev/null
@@ -1,92 +0,0 @@
-#
-# These warnings will be treated as errors, using the error-general file,
-# when HDF5_ENABLE_WARNINGS_AS_ERRORS is set to true for CMake or
-# the --enable-warnings-as-errors option is specified for configure.
-# Otherwise this file will be used to treat them as warnings.
-#
--Wbad-function-cast
--Wimplicit-function-declaration
--Wmissing-declarations
--Wmissing-prototypes
--Wnested-externs
--Wold-style-definition
--Wpacked
--Wpointer-sign
--Wpointer-to-int-cast
--Wredundant-decls
--Wstrict-prototypes
--Wswitch
-#
-#-Werror=discarded-qualifiers
-#
-#
-# NOTE: File Driver files are not compatible with these warnings as errors
-# H5FDdirect.c,H5FDmpio.c,H5FDros3.c,
-# -Werror=unused-function
-#
--Wunused-function
-#
-# H5FDdrvr_module.h
-# -Werror=unused-variable
-#
--Wunused-variable
-#
-# H5VLpassthru.c
-# -Werror=unused-parameter
-#
--Wunused-parameter
-#
-#
-#
-# NOTE: Tools files are not compatible with these warnings as errors
-# lib/h5tools.c
-# -Werror=cast-align
-#
--Wcast-align
-#
-# lib/h5diff_array.c
-# -Werror=unused-but-set-variable
-#
--Wunused-but-set-variable
-#
-# lib/h5tools_utils.c
-# -Werror=unused-parameter
-#
-#
-# NOTE: JNI files are not compatible with these warnings as errors
-# jni/h5pDCPLImp.c,jni/nativeData.c,jni/h5util.c,jni/h5rImp.c
-# jni/h5sImp.c,jni/h5tImp.c
-# -Werror=cast-align
-# jni/h5util.c
-# -Werror=format(-overflow)
-#
--Wformat
-#
-#
-#Examples and tests do not use the same set of extensive warning flags as libraries
-# Here is a list of tests and examples that have issues with the stricter warnings as error
-#
-# NOTE: Test files are not compatible with these warnings as errors
-# thread_id.c,
-# -Werror=unused-function
-# dsets.c
-# -Werror=unused-parameter
-# external.c,perform/sio_engine.c
-# -Werror=format(-truncation)
-#
-#
-# NOTE: Examples files are not compatible with these warnings as errors
-# h5_vds-eiger.c,h5_vds-exclim.c,h5_vds.c,h5_vds-exc.c,h5_vds-percival-unlim-maxmin.c
-# h5_vds-percival.c,h5_read.c,h5_rdwt.c,h5_mount.c,h5_extend.c,h5_extend_write.c
-# h5_write.c,h5_vds-simpleIO.c,h5_ref2reg_deprec.c,h5_crtgrp.c,h5_select.c
-# h5_vds-percival-unlim.c,h5_crtatt.c,h5_group.c,h5_attribute.c,h5_crtdat.c
-# h5_reference_deprec.c
-# h5_rdwt.c,h5_crtgrp.c,h5_crtatt.c,h5_crtdat.c
-# -Werror=strict-prototypes
-# h5_rdwt.c,h5_crtgrp.c,h5_crtatt.c,h5_crtdat.c
-# -Werror=old-style-definition
-# h5_vds-exclim.c,h5_vds.c,h5_vds-exc.c,
-# -Werror=unused-variable
-# h5_elink_unix2win.c,h5_extlink.c,h5_attribute.c
-# -Werror=unused-parameter
-
diff --git a/configure.ac b/configure.ac
index cd5a42a..e5f67d4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -237,6 +237,41 @@ elif test $hdf5_cv_host != $host; then
fi
## ----------------------------------------------------------------------
+## Check if we should consider certain compiler warnings as errors
+##
+## We have to set WARNINGS_AS_ERRORS before sourcing a $host_config
+## file, below.
+##
+## These should NOT be on by default as the risk of breakage is high
+## when compiling HDF5 on new (or new versions) of platforms and
+## compilers. It can also cause failures when header files we have no
+## control over (e.g. MPI, HDFS) raise warnings.
+##
+AC_MSG_CHECKING([enable warnings as errors])
+AC_ARG_ENABLE([warnings-as-errors],
+ [AS_HELP_STRING([--enable-warnings-as-errors],
+ [Determines whether certain warnings will be
+ considered errors. This is mainly for use
+ by HDF5 library developers.
+ [default=no]
+ ])],
+ [WARNINGS_AS_ERRORS=$enableval])
+
+## Set default
+if test "X-$WARNINGS_AS_ERRORS" = X- ; then
+ WARNINGS_AS_ERRORS=no
+fi
+
+case "X-$WARNINGS_AS_ERRORS" in
+ X-yes|X-no)
+ AC_MSG_RESULT([$WARNINGS_AS_ERRORS])
+ ;;
+ *)
+ AC_MSG_ERROR([Unrecognized value: $WARNINGS_AS_ERRORS])
+ ;;
+esac
+
+## ----------------------------------------------------------------------
## Source any special files that we need. These files normally aren't
## present but can be used by the maintainers to fine tune things like
## turning on debug or profiling flags for the compiler. The search order
@@ -2233,6 +2268,13 @@ case "X-$ASSERTS" in
;;
esac
+## Incorporate the potentially warning-to-error promoting flags after
+## feature tests. Some of the tests (e.g., `off_t`) generate compilation
+## errors with the flags we chose for the HDF5 library and tools.
+##
+H5_CFLAGS="$H5_CFLAGS $H5_ECFLAGS"
+H5_CXXFLAGS="$H5_CXXFLAGS $H5_ECXXFLAGS"
+
## ----------------------------------------------------------------------
## Check if developer warnings should be turned on
## These are warnings that provide suggestions like gcc's -Wsuggest-attribute.
@@ -2272,45 +2314,6 @@ case "X-$DEV_WARNINGS" in
esac
## ----------------------------------------------------------------------
-## Check if we should consider certain compiler warnings as errors
-##
-## These should NOT be on by default as the risk of breakage is high
-## when compiling HDF5 on new (or new versions) of platforms and
-## compilers. It can also cause failures when header files we have no
-## control over (e.g. MPI, HDFS) raise warnings.
-##
-AC_MSG_CHECKING([enable warnings as errors])
-AC_ARG_ENABLE([warnings-as-errors],
- [AS_HELP_STRING([--enable-warnings-as-errors],
- [Determines whether certain warnings will be
- considered errors. This is mainly for use
- by HDF5 library developers.
- [default=no]
- ])],
- [WARNINGS_AS_ERRORS=$enableval])
-
-## Set default
-if test "X-$WARNINGS_AS_ERRORS" = X- ; then
- WARNINGS_AS_ERRORS=no
-fi
-
-case "X-$WARNINGS_AS_ERRORS" in
- X-yes)
- H5_CFLAGS="$H5_CFLAGS $H5_ECFLAGS"
- H5_CXXFLAGS="$H5_CXXFLAGS $H5_ECXXFLAGS"
- AC_MSG_RESULT([yes])
- ;;
- X-no)
- H5_CFLAGS="$H5_CFLAGS $H5_NECFLAGS"
- H5_CXXFLAGS="$H5_CXXFLAGS $H5_NECXXFLAGS"
- AC_MSG_RESULT([no])
- ;;
- *)
- AC_MSG_ERROR([Unrecognized value: $WARNINGS_AS_ERRORS])
- ;;
-esac
-
-## ----------------------------------------------------------------------
## Check if the compiler should use profiling flags/settings
##
AC_MSG_CHECKING([profiling])
diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt
index bf14fbc..8a2c496 100644
--- a/release_docs/RELEASE.txt
+++ b/release_docs/RELEASE.txt
@@ -47,6 +47,13 @@ New Features
Configuration:
-------------
+ - Changed autotools and CMake configurations to derive both
+ compilation warnings-as-errors and warnings-only-warn configurations
+ from the same files, `config/*/*error*`. Removed redundant files
+ `config/*/*noerror*`.
+
+ (DCY - 2021/09/29)
+
- Added new option to control the build of High-Level tools
that default ON/enabled.