diff options
author | Allen Byrne <byrn@hdfgroup.org> | 2017-01-11 20:24:09 (GMT) |
---|---|---|
committer | Allen Byrne <byrn@hdfgroup.org> | 2017-01-11 20:24:09 (GMT) |
commit | ee485247b7028bea18251ee0b22c918618652bec (patch) | |
tree | dd126712b61bfa9e56bdc020be1ab01f56edc60c | |
parent | 7fb991e8edd9cef200f4769bbd22e7eff2b9e27f (diff) | |
parent | 8b4c9f848d63351c85cab3a5b2034f8e7e1a29db (diff) | |
download | hdf5-ee485247b7028bea18251ee0b22c918618652bec.zip hdf5-ee485247b7028bea18251ee0b22c918618652bec.tar.gz hdf5-ee485247b7028bea18251ee0b22c918618652bec.tar.bz2 |
Merging in latest from upstream (HDFFV/hdf5:refs/heads/develop)
* commit '8b4c9f848d63351c85cab3a5b2034f8e7e1a29db':
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.
Create h5repack convenience library for common code used by h5repack tool and h5repacktst. Fixes broken distclean.
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.
-rw-r--r-- | config/gnu-flags | 40 | ||||
-rw-r--r-- | configure.ac | 42 | ||||
-rw-r--r-- | tools/src/Makefile.am | 3 | ||||
-rw-r--r-- | tools/src/h5format_convert/Makefile.am | 3 | ||||
-rw-r--r-- | tools/src/h5repack/Makefile.am | 23 | ||||
-rw-r--r-- | tools/test/Makefile.am | 4 | ||||
-rw-r--r-- | tools/test/h5format_convert/Makefile.am | 2 | ||||
-rw-r--r-- | tools/test/h5format_convert/h5fc_gentest.c | 1 | ||||
-rw-r--r-- | tools/test/h5repack/Makefile.am | 10 |
9 files changed, 84 insertions, 44 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]) 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/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/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; 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 |