Add option to control gcc 10 warnings diagnostics (#321)

* OESS-98 convert plugin option to FetchContent, add tests

* Fixes for pkcfg files because of plugin option

* OESS-98 fix tools test for plugins

* Keep doxygen comments under 100 chars long - format hint

* Whitespace

* HDFFV-11144 - Reclassify CMake messages

* HDFFV-11099/11100 added help text

* Reworked switch statement to compare string instead

* Fix typo

* Update CDash mode

* Correct name of threadsafe

* Correct option name

* Undo accidental commit

* Note LLVM 10 to 11 format default changes

* Update format plugin

* Undo clang-format version 11 changes

* One more correction

* Update supported platforms

* Revert whitespace changes

* Correct whitespace

* Changes from PR#3

* HDFFV-11213 added option to control gcc10 warnings diagnostics
This commit is contained in:
Allen Byrne 2021-02-08 17:23:09 -06:00 committed by GitHub
parent aa95b70f6d
commit bccf5b5c08
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 121 additions and 0 deletions

View File

@ -30,6 +30,14 @@ if (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_LOADED)
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstdarg-opt")
endif ()
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 10.0)
if (HDF5_ENABLE_BUILD_DIAGS)
message (STATUS "... default color and URL extended diagnostic messages enabled")
else ()
message (STATUS "... disable color and URL extended diagnostic messages")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-urls=never -fno-diagnostics-color")
endif ()
endif ()
endif ()
endif ()

View File

@ -31,6 +31,20 @@ if (CMAKE_COMPILER_IS_GNUCC)
if (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 5.0)
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstdarg-opt")
endif ()
if (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 10.0)
#-----------------------------------------------------------------------------
# Option to allow the user to enable build extended diagnostics
#
# This should NOT be on by default as it can cause process issues.
#-----------------------------------------------------------------------------
option (HDF5_ENABLE_BUILD_DIAGS "Enable color and URL extended diagnostic messages" OFF)
if (HDF5_ENABLE_BUILD_DIAGS)
message (STATUS "... default color and URL extended diagnostic messages enabled")
else ()
message (STATUS "... disable color and URL extended diagnostic messages")
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdiagnostics-urls=never -fno-diagnostics-color")
endif ()
endif ()
endif ()
endif ()

View File

@ -45,6 +45,14 @@ endif ()
#-----------------------------------------------------------------------------
# HDF5 library compile options
#-----------------------------------------------------------------------------
if (CMAKE_Fortran_COMPILER_ID STREQUAL "GNU" AND NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 10.0)
if (HDF5_ENABLE_BUILD_DIAGS)
message (STATUS "... default color and URL extended diagnostic messages enabled")
else ()
message (STATUS "... disable color and URL extended diagnostic messages")
set (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fdiagnostics-urls=never -fno-diagnostics-color")
endif ()
endif ()
#-----------------------------------------------------------------------------
# CDash is configured to only allow 3000 warnings, so

View File

@ -144,6 +144,15 @@ if test "X-g++" = "X-$cxx_vendor"; then
DEBUG_CXXFLAGS="-ftrapv -fno-common"
fi
########################
# Enhanced Diagnostics #
########################
if test $cc_vers_major -ge 10; then
NO_DIAGS_CXXFLAGS="-fdiagnostics-urls=never -fno-diagnostics-color"
fi
DIAGS_CXXFLAGS=
###########
# Symbols #
###########

View File

@ -105,6 +105,15 @@ if test "X-gfortran" = "X-$f9x_vendor"; then
DEBUG_FCFLAGS="-fbounds-check"
fi
########################
# Enhanced Diagnostics #
########################
if test $cc_vers_major -ge 10; then
NO_DIAGS_FCFLAGS="-fdiagnostics-urls=never -fno-diagnostics-color"
fi
DIAGS_FCFLAGS=
###########
# Symbols #
###########

View File

@ -158,6 +158,15 @@ if test "X-gcc" = "X-$cc_vendor"; then
DEBUG_CFLAGS="-ftrapv -fno-common"
fi
########################
# Enhanced Diagnostics #
########################
if test $cc_vers_major -ge 10; then
NO_DIAGS_CFLAGS="-fdiagnostics-urls=never -fno-diagnostics-color"
fi
DIAGS_CFLAGS=
###########
# Symbols #
###########

View File

@ -2157,6 +2157,51 @@ AC_ARG_ENABLE([production],
[AC_MSG_ERROR([--enable-production is no longer supported, use --enable-build-mode=production instead.])])
## ----------------------------------------------------------------------
## Check if the compiler should include build diagnostics
##
AC_MSG_CHECKING([enable build diagnostics])
AC_ARG_ENABLE([diags],
[AS_HELP_STRING([--enable-diags=(yes|no|<custom>)],
[Allow default enhanced diagnostics to the build.
This is independent of the build mode and optimization
level.
[default=no]
])],
[DIAGS=$enableval])
## Set default
if test "X-$DIAGS" = X- ; then
DIAGS=no
fi
## Allow this variable to be substituted in
## other files (src/libhdf5.settings.in, etc.)
AC_SUBST([DIAGS])
case "X-$DIAGS" in
X-yes)
H5_CFLAGS="$H5_CFLAGS $DIAGS_CFLAGS"
H5_CXXFLAGS="$H5_CXXFLAGS $DIAGS_CXXFLAGS"
H5_FCFLAGS="$H5_FCFLAGS $DIAGS_FCFLAGS"
AC_MSG_RESULT([yes])
;;
X-no)
H5_CFLAGS="$H5_CFLAGS $NO_DIAGS_CFLAGS"
H5_CXXFLAGS="$H5_CXXFLAGS $NO_DIAGS_CXXFLAGS"
H5_FCFLAGS="$H5_FCFLAGS $NO_DIAGS_FCFLAGS"
AC_MSG_RESULT([no])
;;
*)
H5_CFLAGS="$H5_CFLAGS $DIAGS"
H5_CXXFLAGS="$H5_CXXFLAGS $DIAGS"
H5_FCFLAGS="$H5_FCFLAGS $DIAGS"
DIAGS="custom ($DIAGS)"
AC_MSG_RESULT([$DIAGS])
;;
esac
## ----------------------------------------------------------------------
## Check if the compiler should include symbols
##

View File

@ -55,6 +55,25 @@ New Features
(SAM - 2021/02/07, https://github.com/HDFGroup/hdf5/issues/311)
- Added a configure-time option to control certain compiler warnings
diagnostics
A new configure-time option was added that allows some compiler warnings
diagnostics to have the default operation. This is mainly intended for
library developers and currently only works for gcc 10 and above. The
diagnostics flags apply to C, C++ and Fortran compilers and will appear
in "H5 C Flags", H5 C++ Flags" and H5 Fortran Flags, respectively. They
will NOT be exported to h5cc, etc.
The default is OFF, which will disable the warnings URL and color attributes
for the warnings output. ON will not add the flags and allow default behavior.
Autotools: --enable-diags
CMake: HDF5_ENABLE_BUILD_DIAGS
(ADB - 2021/02/05, HDFFV-11213)
- CMake option to build the HDF filter plugins project as an external project
The HDF filter plugins project is a collection of registered compression