From e6a12a3feaa3a111510d899102af77f61950b8bf Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Tue, 10 Jan 2017 13:49:49 -0500 Subject: Added an --enable-developer-warnings option to configure so users can ignore -Wsuggest-attribute warnings and other noise that doesn't indicate poor code quality. --- config/gnu-flags | 40 ++++++++++++++++------------------------ configure.ac | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 24 deletions(-) diff --git a/config/gnu-flags b/config/gnu-flags index 0b5283c..c0c8368 100644 --- a/config/gnu-flags +++ b/config/gnu-flags @@ -94,7 +94,7 @@ case "$cc_vendor-$cc_version" in esac # General - H5_CFLAGS="$H5_CFLAGS $arch -std=c99 -pedantic -Wall -W -Wundef -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wnested-externs -Winline" + H5_CFLAGS="$H5_CFLAGS $arch -std=c99 -pedantic -Wall -W -Wundef -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wnested-externs" # Production # NDEBUG is handled explicitly by the configure script @@ -125,6 +125,10 @@ case "$cc_vendor-$cc_version" in esac #DEBUG_CFLAGS="-fsanitize=undefined" + # Developer warnings (suggestions from gcc, not code problems) + NO_DEVELOPER_WARNING_CFLAGS="-Wno-suggest-attribute=const -Wno-suggest-attribute=pure -Wno-suggest-attribute=noreturn -Wno-suggest-attribute=format -Wno-inline" + DEVELOPER_WARNING_CFLAGS="-Wsuggest-attribute=const -Wsuggest-attribute=pure -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Winline" + # Symbols NO_SYMBOLS_CFLAGS="-s" SYMBOLS_CFLAGS="-g" @@ -223,13 +227,10 @@ case "$cc_vendor-$cc_version" in H5_CFLAGS="$H5_CFLAGS -Wstrict-overflow=5 -Wjump-misses-init -Wunsuffixed-float-constants" # Append more extra warning flags that only gcc 4.6+ know about - H5_CFLAGS="$H5_CFLAGS -Wdouble-promotion -Wsuggest-attribute=const -Wtrampolines" + H5_CFLAGS="$H5_CFLAGS -Wdouble-promotion -Wtrampolines" # Append more extra warning flags that only gcc 4.7+ know about - H5_CFLAGS="$H5_CFLAGS -Wstack-usage=8192 -Wvector-operation-performance -Wsuggest-attribute=pure -Wsuggest-attribute=noreturn" - - # Append more extra warning flags that only gcc 4.8+ know about - H5_CFLAGS="$H5_CFLAGS -Wsuggest-attribute=format" + H5_CFLAGS="$H5_CFLAGS -Wstack-usage=8192 -Wvector-operation-performance" # Append more extra warning flags that only gcc 4.9+ know about H5_CFLAGS="$H5_CFLAGS -Wdate-time" @@ -297,13 +298,10 @@ case "$cc_vendor-$cc_version" in H5_CFLAGS="$H5_CFLAGS -Wstrict-overflow=5 -Wjump-misses-init -Wunsuffixed-float-constants" # Append more extra warning flags that only gcc 4.6+ know about - H5_CFLAGS="$H5_CFLAGS -Wdouble-promotion -Wsuggest-attribute=const -Wtrampolines" + H5_CFLAGS="$H5_CFLAGS -Wdouble-promotion -Wtrampolines" # Append more extra warning flags that only gcc 4.7+ know about - H5_CFLAGS="$H5_CFLAGS -Wstack-usage=8192 -Wvector-operation-performance -Wsuggest-attribute=pure -Wsuggest-attribute=noreturn" - - # Append more extra warning flags that only gcc 4.8+ know about - H5_CFLAGS="$H5_CFLAGS -Wsuggest-attribute=format" + H5_CFLAGS="$H5_CFLAGS -Wstack-usage=8192 -Wvector-operation-performance" # Append more extra warning flags that only gcc 4.9+ know about H5_CFLAGS="$H5_CFLAGS -Wdate-time" @@ -368,13 +366,10 @@ case "$cc_vendor-$cc_version" in H5_CFLAGS="$H5_CFLAGS -Wstrict-overflow=5 -Wjump-misses-init -Wunsuffixed-float-constants" # Append more extra warning flags that only gcc 4.6+ know about - H5_CFLAGS="$H5_CFLAGS -Wdouble-promotion -Wsuggest-attribute=const -Wtrampolines" + H5_CFLAGS="$H5_CFLAGS -Wdouble-promotion -Wtrampolines" # Append more extra warning flags that only gcc 4.7+ know about - H5_CFLAGS="$H5_CFLAGS -Wstack-usage=8192 -Wvector-operation-performance -Wsuggest-attribute=pure -Wsuggest-attribute=noreturn" - - # Append more extra warning flags that only gcc 4.8+ know about - H5_CFLAGS="$H5_CFLAGS -Wsuggest-attribute=format" + H5_CFLAGS="$H5_CFLAGS -Wstack-usage=8192 -Wvector-operation-performance" # Append more extra warning flags that only gcc 4.9+ know about H5_CFLAGS="$H5_CFLAGS -Wdate-time" @@ -436,13 +431,10 @@ case "$cc_vendor-$cc_version" in H5_CFLAGS="$H5_CFLAGS -Wstrict-overflow=5 -Wjump-misses-init" # Append more extra warning flags that only gcc 4.6+ know about - H5_CFLAGS="$H5_CFLAGS -Wdouble-promotion -Wsuggest-attribute=const -Wtrampolines" + H5_CFLAGS="$H5_CFLAGS -Wdouble-promotion -Wtrampolines" # Append more extra warning flags that only gcc 4.7+ know about - H5_CFLAGS="$H5_CFLAGS -Wstack-usage=8192 -Wvector-operation-performance -Wsuggest-attribute=pure -Wsuggest-attribute=noreturn" - - # Append more extra warning flags that only gcc 4.8+ know about - H5_CFLAGS="$H5_CFLAGS -Wsuggest-attribute=format" + H5_CFLAGS="$H5_CFLAGS -Wstack-usage=8192 -Wvector-operation-performance" ;; gcc-4.7*) @@ -502,10 +494,10 @@ case "$cc_vendor-$cc_version" in H5_CFLAGS="$H5_CFLAGS -Wstrict-overflow=5 -Wjump-misses-init -Wunsuffixed-float-constants" # Append more extra warning flags that only gcc 4.6+ know about - H5_CFLAGS="$H5_CFLAGS -Wdouble-promotion -Wsuggest-attribute=const -Wtrampolines" + H5_CFLAGS="$H5_CFLAGS -Wdouble-promotion -Wtrampolines" # Append more extra warning flags that only gcc 4.7+ know about - H5_CFLAGS="$H5_CFLAGS -Wstack-usage=8192 -Wvector-operation-performance -Wsuggest-attribute=pure -Wsuggest-attribute=noreturn" + H5_CFLAGS="$H5_CFLAGS -Wstack-usage=8192 -Wvector-operation-performance" ;; gcc-4.6*) @@ -561,7 +553,7 @@ case "$cc_vendor-$cc_version" in H5_CFLAGS="$H5_CFLAGS -Wstrict-aliasing -Wstrict-overflow=5 -Wjump-misses-init -Wunsuffixed-float-constants" # Append more extra warning flags that only gcc 4.6+ know about - H5_CFLAGS="$H5_CFLAGS -Wdouble-promotion -Wsuggest-attribute=const -Wtrampolines" + H5_CFLAGS="$H5_CFLAGS -Wdouble-promotion -Wtrampolines" ;; gcc-4.5*) diff --git a/configure.ac b/configure.ac index 82ad020..9f84b0f 100644 --- a/configure.ac +++ b/configure.ac @@ -2055,6 +2055,48 @@ case "X-$ASSERTS" in esac ## ---------------------------------------------------------------------- +## Check if developer warnings should be turned on +## These are warnings that provide suggestions like gcc's -Wsuggest-attribute. +## They do not indicate code problems. +## +## Note that developers don't need to build with these regularly. They +## are just handy to check once in a while (before releases, etc.). +## +AC_MSG_CHECKING([enable developer warnings]) +AC_ARG_ENABLE([developer-warnings], + [AS_HELP_STRING([--enable-developer-warnings], + [Determines whether developer warnings will be + emitted. These are usually performance suggestions + (e.g. -Wsuggest-attribute) and do not flag poor code + quality. + [default=no] + ])], + [DEV_WARNINGS=$enableval]) + +## Set default +if test "X-$DEV_WARNINGS" = X- ; then + DEV_WARNINGS=no +fi + +## Allow this variable to be substituted in +## other files (src/libhdf5.settings.in, etc.) +AC_SUBST([DEV_WARNINGS]) + +case "X-$DEV_WARNINGS" in + X-yes) + H5_CFLAGS="$H5_CFLAGS $DEVELOPER_WARNING_CFLAGS" + AC_MSG_RESULT([yes]) + ;; + X-no) + H5_CFLAGS="$H5_CFLAGS $NO_DEVELOPER_WARNING_CFLAGS" + AC_MSG_RESULT([no]) + ;; + *) + AC_MSG_ERROR([Unrecognized value: $DEV_WARNINGS]) + ;; +esac + +## ---------------------------------------------------------------------- ## Check if the compiler should use profiling flags/settings ## AC_MSG_CHECKING([profiling]) -- cgit v0.12 From 584d3743a830cb4514e61c73c8ca35c8e83f54b9 Mon Sep 17 00:00:00 2001 From: lrknox Date: Tue, 10 Jan 2017 14:41:25 -0600 Subject: Create h5repack convenience library for common code used by h5repack tool and h5repacktst. Fixes broken distclean. Tested with h5committest and "make distclean". --- tools/src/h5repack/Makefile.am | 23 ++++++++++++++--------- tools/test/h5repack/Makefile.am | 10 +++------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/tools/src/h5repack/Makefile.am b/tools/src/h5repack/Makefile.am index e6e5a56..31d368d 100644 --- a/tools/src/h5repack/Makefile.am +++ b/tools/src/h5repack/Makefile.am @@ -23,20 +23,25 @@ include $(top_srcdir)/config/commence.am # Include src, test, and tools/lib directories AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/test -I$(top_srcdir)/tools/lib +# A convenience library for the h5repack tool and the h5repack tests +noinst_LTLIBRARIES=libh5repack.la + +libh5repack_la_SOURCES=h5repack.c h5repack_copy.c h5repack_filters.c \ + h5repack_opttable.c h5repack_parse.c h5repack_refs.c \ + h5repack_verify.c +libh5repack_la_LDFLAGS = $(AM_LDFLAGS) +libh5repack_la_LIBADD=$(LIBH5TOOLS) $(LIBH5TEST) $(LIBHDF5) + + # Our main target, h5repack tool bin_PROGRAMS=h5repack +h5repack_SOURCES=h5repack_main.c + # Add h5repack specific linker flags here h5repack_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS) -# Depend on the hdf5 library, the tools library, the test library -LDADD=$(LIBH5TOOLS) $(LIBH5TEST) $(LIBHDF5) - -# Source files -COMMON_SOURCES=h5repack.c h5repack_copy.c h5repack_filters.c \ - h5repack_opttable.c h5repack_parse.c h5repack_refs.c \ - h5repack_verify.c - -h5repack_SOURCES=$(COMMON_SOURCES) h5repack_main.c +# Depend on the hdf5 library, the tools library, the h5repack library +h5repack_LDADD=libh5repack.la $(LIBH5TOOLS) $(LIBHDF5) include $(top_srcdir)/config/conclude.am diff --git a/tools/test/h5repack/Makefile.am b/tools/test/h5repack/Makefile.am index 6c045c4..5c284b3 100644 --- a/tools/test/h5repack/Makefile.am +++ b/tools/test/h5repack/Makefile.am @@ -37,16 +37,12 @@ endif check_SCRIPTS=$(TEST_SCRIPT) -# Depend on the hdf5 library, the tools library, the test library -LDADD=$(LIBH5TOOLS) $(LIBH5TEST) $(LIBHDF5) +# Depend on the h5repack library, the hdf5 library, the tools library, the test library +LDADD=../../src/h5repack/libh5repack.la $(LIBH5TOOLS) $(LIBH5TEST) $(LIBHDF5) testh5repack_detect_szip_SOURCES=testh5repack_detect_szip.c -# Source files -COMMON_SOURCES=../../src/h5repack/h5repack.c ../../src/h5repack/h5repack_copy.c ../../src/h5repack/h5repack_filters.c \ - ../../src/h5repack/h5repack_opttable.c ../../src/h5repack/h5repack_parse.c ../../src/h5repack/h5repack_refs.c \ - ../../src/h5repack/h5repack_verify.c -h5repacktst_SOURCES=$(COMMON_SOURCES) h5repacktst.c +h5repacktst_SOURCES=h5repacktst.c if HAVE_SHARED_CONDITIONAL -- cgit v0.12 From 630d668954f56f5138f2bffe3994e2c1da2e3f5c Mon Sep 17 00:00:00 2001 From: lrknox Date: Tue, 10 Jan 2017 16:53:38 -0600 Subject: h5format_convert was not built (missing from subdirs in tools/src and tools/test Makefile.ams) but created dependencies that were not cleaned up by make clean and make distclean. --- tools/src/Makefile.am | 3 ++- tools/src/h5format_convert/Makefile.am | 3 +++ tools/test/Makefile.am | 4 ++-- tools/test/h5format_convert/Makefile.am | 2 ++ tools/test/h5format_convert/h5fc_gentest.c | 1 - 5 files changed, 9 insertions(+), 4 deletions(-) diff --git a/tools/src/Makefile.am b/tools/src/Makefile.am index 0cea969..358ac6b 100644 --- a/tools/src/Makefile.am +++ b/tools/src/Makefile.am @@ -24,6 +24,7 @@ include $(top_srcdir)/config/commence.am CONFIG=ordered # All subdirectories -SUBDIRS=h5diff h5ls h5dump misc h5import h5repack h5jam h5copy h5stat +SUBDIRS=h5diff h5ls h5dump misc h5import h5repack h5jam h5copy \ + h5format_convert h5stat include $(top_srcdir)/config/conclude.am diff --git a/tools/src/h5format_convert/Makefile.am b/tools/src/h5format_convert/Makefile.am index e2d1acf..35f9e68 100644 --- a/tools/src/h5format_convert/Makefile.am +++ b/tools/src/h5format_convert/Makefile.am @@ -25,6 +25,7 @@ AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib # These are our main targets, the tools bin_PROGRAMS=h5format_convert +bin_SCRIPTS= # Add h5format_convert specific linker flags here h5format_convert_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS) @@ -32,4 +33,6 @@ h5format_convert_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS) # All programs rely on hdf5 library and h5tools library LDADD=$(LIBH5TOOLS) $(LIBHDF5) +CLEANFILES= + include $(top_srcdir)/config/conclude.am diff --git a/tools/test/Makefile.am b/tools/test/Makefile.am index 62193ba..db09003 100644 --- a/tools/test/Makefile.am +++ b/tools/test/Makefile.am @@ -24,7 +24,7 @@ include $(top_srcdir)/config/commence.am CONFIG=ordered # All subdirectories -SUBDIRS=h5diff h5ls h5dump misc h5import h5repack h5jam h5copy h5stat \ - perform +SUBDIRS=h5diff h5ls h5dump misc h5import h5repack h5jam h5copy \ + h5format_convert h5stat perform include $(top_srcdir)/config/conclude.am diff --git a/tools/test/h5format_convert/Makefile.am b/tools/test/h5format_convert/Makefile.am index 5779d4d..f67b2ce 100644 --- a/tools/test/h5format_convert/Makefile.am +++ b/tools/test/h5format_convert/Makefile.am @@ -31,6 +31,8 @@ check_PROGRAMS=$(TEST_PROG) h5fc_chk_idx check_SCRIPTS=$(TEST_SCRIPT) SCRIPT_DEPEND=../../src/h5format_convert/h5format_convert$(EXEEXT) +CLEANFILES= + # Tell automake to clean h5redeploy script CHECK_CLEANFILES+=*.h5 diff --git a/tools/test/h5format_convert/h5fc_gentest.c b/tools/test/h5format_convert/h5fc_gentest.c index 520e5bf..fea7eed 100644 --- a/tools/test/h5format_convert/h5fc_gentest.c +++ b/tools/test/h5format_convert/h5fc_gentest.c @@ -296,7 +296,6 @@ error: H5Dclose(did2); H5Gclose(gid); H5Fclose(fcpl); - H5Fclose(fapl); H5Fclose(fid); } H5E_END_TRY; -- cgit v0.12