Bug#53445: Build with -Wall and fix warnings that it generates
Introduce a MySQL maintainer/developer mode that enables a set of warning options for the C/C++ compiler. This mode is intended to help improve the overall quality of the code. The warning options are: C_WARNINGS="-Wall -Wextra -Wunused -Wwrite-strings -Werror" CXX_WARNINGS="$C_WARNINGS -Wno-unused-parameter" Since -Wall is essentially a moving target, autoconf checks are not run with warning options enabled, in particualr -Werror. This decision might be revisited in the future. The patch also fixes a mistake in the makefiles, where automake CXXFLAGS would be set to CFLAGS. config/ac-macros/maintainer.m4: Add a set of default compiler flags used when in maintainer mode. configure.in: Hook into the maintainer mode. Disabled by default.
This commit is contained in:
parent
013136364c
commit
cd37b73fe5
66
config/ac-macros/maintainer.m4
Normal file
66
config/ac-macros/maintainer.m4
Normal file
@ -0,0 +1,66 @@
|
||||
#
|
||||
# Control aspects of the development environment which are
|
||||
# specific to MySQL maintainers and developers.
|
||||
#
|
||||
AC_DEFUN([MY_MAINTAINER_MODE], [
|
||||
AC_MSG_CHECKING([whether to enable the maintainer-specific development environment])
|
||||
AC_ARG_ENABLE([mysql-maintainer-mode],
|
||||
[AS_HELP_STRING([--enable-mysql-maintainer-mode],
|
||||
[Enable a MySQL maintainer-specific development environment])],
|
||||
[USE_MYSQL_MAINTAINER_MODE=$enableval],
|
||||
[USE_MYSQL_MAINTAINER_MODE=no])
|
||||
AC_MSG_RESULT([$USE_MYSQL_MAINTAINER_MODE])
|
||||
])
|
||||
|
||||
# Set warning options required under maintainer mode.
|
||||
AC_DEFUN([MY_MAINTAINER_MODE_WARNINGS], [
|
||||
# Setup GCC warning options.
|
||||
AS_IF([test "$GCC" = "yes"], [
|
||||
C_WARNINGS="-Wall -Wextra -Wunused -Wwrite-strings -Werror"
|
||||
CXX_WARNINGS="${C_WARNINGS} -Wno-unused-parameter"
|
||||
])
|
||||
|
||||
# Test whether the warning options work.
|
||||
# Test C options
|
||||
AS_IF([test -n "$C_WARNINGS"], [
|
||||
save_CFLAGS="$CFLAGS"
|
||||
AC_MSG_CHECKING([whether to use C warning options ${C_WARNINGS}])
|
||||
AC_LANG_PUSH(C)
|
||||
CFLAGS="$CFLAGS ${C_WARNINGS}"
|
||||
AC_LANG_WERROR
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [myac_c_warning_flags=yes],
|
||||
[myac_c_warning_flags=no])
|
||||
AC_LANG_POP()
|
||||
AC_MSG_RESULT([$myac_c_warning_flags])
|
||||
CFLAGS="$save_CFLAGS"
|
||||
])
|
||||
|
||||
# Test C++ options
|
||||
AS_IF([test -n "$CXX_WARNINGS"], [
|
||||
save_CXXFLAGS="$CXXFLAGS"
|
||||
AC_MSG_CHECKING([whether to use C++ warning options ${CXX_WARNINGS}])
|
||||
AC_LANG_PUSH(C++)
|
||||
CXXFLAGS="$CXXFLAGS ${CXX_WARNINGS}"
|
||||
AC_LANG_WERROR
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [myac_cxx_warning_flags=yes],
|
||||
[myac_cxx_warning_flags=no])
|
||||
AC_LANG_POP()
|
||||
AC_MSG_RESULT([$myac_cxx_warning_flags])
|
||||
CXXFLAGS="$save_CXXFLAGS"
|
||||
])
|
||||
|
||||
# Set compile flag variables.
|
||||
AS_IF([test "$myac_c_warning_flags" = "yes"], [
|
||||
AM_CFLAGS="${AM_CFLAGS} ${C_WARNINGS}"
|
||||
AC_SUBST([AM_CFLAGS])])
|
||||
AS_IF([test "$myac_cxx_warning_flags" = "yes"], [
|
||||
AM_CXXFLAGS="${AM_CXXFLAGS} ${CXX_WARNINGS}"
|
||||
AC_SUBST([AM_CXXFLAGS])])
|
||||
])
|
||||
|
||||
|
||||
# Set compiler flags required under maintainer mode.
|
||||
AC_DEFUN([MY_MAINTAINER_MODE_SETUP], [
|
||||
AS_IF([test "$USE_MYSQL_MAINTAINER_MODE" = "yes"],
|
||||
[MY_MAINTAINER_MODE_WARNINGS])
|
||||
])
|
@ -65,6 +65,7 @@ MYSQL_TCP_PORT_DEFAULT=3306
|
||||
MYSQL_UNIX_ADDR_DEFAULT="/tmp/mysql.sock"
|
||||
|
||||
dnl Include m4
|
||||
sinclude(config/ac-macros/maintainer.m4)
|
||||
sinclude(config/ac-macros/alloca.m4)
|
||||
sinclude(config/ac-macros/check_cpu.m4)
|
||||
sinclude(config/ac-macros/character_sets.m4)
|
||||
@ -102,6 +103,8 @@ AC_SUBST(SHARED_LIB_MAJOR_VERSION)
|
||||
AC_SUBST(SHARED_LIB_VERSION)
|
||||
AC_SUBST(AVAILABLE_LANGUAGES)
|
||||
|
||||
# Whether the maintainer mode should be enabled.
|
||||
MY_MAINTAINER_MODE
|
||||
|
||||
# Canonicalize the configuration name.
|
||||
|
||||
@ -2889,6 +2892,12 @@ do
|
||||
done
|
||||
AC_SUBST(sql_union_dirs)
|
||||
|
||||
#
|
||||
# Setup maintainer mode options by the end to not disturb
|
||||
# system and other checks.
|
||||
#
|
||||
MY_MAINTAINER_MODE_SETUP
|
||||
|
||||
# Some usefull subst
|
||||
AC_SUBST(CC)
|
||||
AC_SUBST(GXX)
|
||||
|
@ -27,14 +27,14 @@ INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/include \
|
||||
EXTRA_LTLIBRARIES = libdaemon_example.la
|
||||
pkgplugin_LTLIBRARIES = @plugin_daemon_example_shared_target@
|
||||
libdaemon_example_la_LDFLAGS = -module -rpath $(pkgplugindir)
|
||||
libdaemon_example_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
|
||||
libdaemon_example_la_CXXFLAGS= $(AM_CXXFLAGS) -DMYSQL_DYNAMIC_PLUGIN
|
||||
libdaemon_example_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
|
||||
libdaemon_example_la_SOURCES = daemon_example.cc
|
||||
|
||||
|
||||
EXTRA_LIBRARIES = libdaemon_example.a
|
||||
noinst_LIBRARIES = @plugin_daemon_example_static_target@
|
||||
libdaemon_example_a_CXXFLAGS = $(AM_CFLAGS)
|
||||
libdaemon_example_a_CXXFLAGS = $(AM_CXXFLAGS)
|
||||
libdaemon_example_a_CFLAGS = $(AM_CFLAGS)
|
||||
libdaemon_example_a_SOURCES= daemon_example.cc
|
||||
|
||||
|
@ -36,14 +36,14 @@ noinst_PROGRAMS = archive_test archive_reader
|
||||
EXTRA_LTLIBRARIES = ha_archive.la
|
||||
pkgplugin_LTLIBRARIES = @plugin_archive_shared_target@
|
||||
ha_archive_la_LDFLAGS = -module -rpath $(pkgplugindir)
|
||||
ha_archive_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
|
||||
ha_archive_la_CXXFLAGS= $(AM_CXXFLAGS) -DMYSQL_DYNAMIC_PLUGIN
|
||||
ha_archive_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
|
||||
ha_archive_la_SOURCES = ha_archive.cc azio.c
|
||||
|
||||
|
||||
EXTRA_LIBRARIES = libarchive.a
|
||||
noinst_LIBRARIES = @plugin_archive_static_target@
|
||||
libarchive_a_CXXFLAGS = $(AM_CFLAGS)
|
||||
libarchive_a_CXXFLAGS = $(AM_CXXFLAGS)
|
||||
libarchive_a_CFLAGS = $(AM_CFLAGS)
|
||||
libarchive_a_SOURCES = ha_archive.cc azio.c
|
||||
|
||||
|
@ -35,14 +35,14 @@ noinst_HEADERS = ha_blackhole.h
|
||||
EXTRA_LTLIBRARIES = ha_blackhole.la
|
||||
pkgplugin_LTLIBRARIES = @plugin_blackhole_shared_target@
|
||||
ha_blackhole_la_LDFLAGS=-module -rpath $(pkgplugindir)
|
||||
ha_blackhole_la_CXXFLAGS=$(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
|
||||
ha_blackhole_la_CXXFLAGS=$(AM_CXXFLAGS) -DMYSQL_DYNAMIC_PLUGIN
|
||||
ha_blackhole_la_CFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
|
||||
ha_blackhole_la_SOURCES=ha_blackhole.cc
|
||||
|
||||
|
||||
EXTRA_LIBRARIES = libblackhole.a
|
||||
noinst_LIBRARIES = @plugin_blackhole_static_target@
|
||||
libblackhole_a_CXXFLAGS=$(AM_CFLAGS)
|
||||
libblackhole_a_CXXFLAGS=$(AM_CXXFLAGS)
|
||||
libblackhole_a_CFLAGS = $(AM_CFLAGS)
|
||||
libblackhole_a_SOURCES= ha_blackhole.cc
|
||||
|
||||
|
@ -32,12 +32,12 @@ noinst_HEADERS = ha_tina.h transparent_file.h
|
||||
EXTRA_LTLIBRARIES = ha_csv.la
|
||||
pkglib_LTLIBRARIES = @plugin_csv_shared_target@
|
||||
ha_csv_la_LDFLAGS = -module -rpath $(MYSQLLIBdir)
|
||||
ha_csv_la_CXXFLAGS = $(AM_CFLAGS) -DMYSQL_PLUGIN
|
||||
ha_csv_la_CXXFLAGS = $(AM_CXXFLAGS) -DMYSQL_PLUGIN
|
||||
ha_csv_la_SOURCES = transparent_file.cc ha_tina.cc
|
||||
|
||||
EXTRA_LIBRARIES = libcsv.a
|
||||
noinst_LIBRARIES = @plugin_csv_static_target@
|
||||
libcsv_a_CXXFLAGS = $(AM_CFLAGS)
|
||||
libcsv_a_CXXFLAGS = $(AM_CXXFLAGS)
|
||||
libcsv_a_SOURCES = transparent_file.cc ha_tina.cc
|
||||
|
||||
EXTRA_DIST = CMakeLists.txt plug.in
|
||||
|
@ -35,14 +35,14 @@ noinst_HEADERS = ha_example.h
|
||||
EXTRA_LTLIBRARIES = ha_example.la
|
||||
pkgplugin_LTLIBRARIES = @plugin_example_shared_target@
|
||||
ha_example_la_LDFLAGS = -module -rpath $(pkgplugindir)
|
||||
ha_example_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
|
||||
ha_example_la_CXXFLAGS= $(AM_CXXFLAGS) -DMYSQL_DYNAMIC_PLUGIN
|
||||
ha_example_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
|
||||
ha_example_la_SOURCES = ha_example.cc
|
||||
|
||||
|
||||
EXTRA_LIBRARIES = libexample.a
|
||||
noinst_LIBRARIES = @plugin_example_static_target@
|
||||
libexample_a_CXXFLAGS = $(AM_CFLAGS)
|
||||
libexample_a_CXXFLAGS = $(AM_CXXFLAGS)
|
||||
libexample_a_CFLAGS = $(AM_CFLAGS)
|
||||
libexample_a_SOURCES= ha_example.cc
|
||||
|
||||
|
@ -35,14 +35,14 @@ noinst_HEADERS = ha_federated.h
|
||||
EXTRA_LTLIBRARIES = ha_federated.la
|
||||
pkgplugin_LTLIBRARIES = @plugin_federated_shared_target@
|
||||
ha_federated_la_LDFLAGS = -module -rpath $(pkgplugindir)
|
||||
ha_federated_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
|
||||
ha_federated_la_CXXFLAGS= $(AM_CXXFLAGS) -DMYSQL_DYNAMIC_PLUGIN
|
||||
ha_federated_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
|
||||
ha_federated_la_SOURCES = ha_federated.cc
|
||||
|
||||
|
||||
EXTRA_LIBRARIES = libfederated.a
|
||||
noinst_LIBRARIES = @plugin_federated_static_target@
|
||||
libfederated_a_CXXFLAGS = $(AM_CFLAGS)
|
||||
libfederated_a_CXXFLAGS = $(AM_CXXFLAGS)
|
||||
libfederated_a_CFLAGS = $(AM_CFLAGS)
|
||||
libfederated_a_SOURCES= ha_federated.cc
|
||||
|
||||
|
@ -34,7 +34,7 @@ EXTRA_LTLIBRARIES = ha_ibmdb2i.la
|
||||
pkgplugin_LTLIBRARIES = @plugin_ibmdb2i_shared_target@
|
||||
ha_ibmdb2i_la_LIBADD = -liconv
|
||||
ha_ibmdb2i_la_LDFLAGS = -module -rpath $(MYSQLLIBdir)
|
||||
ha_ibmdb2i_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
|
||||
ha_ibmdb2i_la_CXXFLAGS= $(AM_CXXFLAGS) -DMYSQL_DYNAMIC_PLUGIN
|
||||
ha_ibmdb2i_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
|
||||
ha_ibmdb2i_la_SOURCES = ha_ibmdb2i.cc db2i_ileBridge.cc db2i_conversion.cc \
|
||||
db2i_blobCollection.cc db2i_file.cc db2i_charsetSupport.cc \
|
||||
@ -44,7 +44,7 @@ ha_ibmdb2i_la_SOURCES = ha_ibmdb2i.cc db2i_ileBridge.cc db2i_conversion.cc \
|
||||
|
||||
EXTRA_LIBRARIES = libibmdb2i.a
|
||||
noinst_LIBRARIES = @plugin_ibmdb2i_static_target@
|
||||
libibmdb2i_a_CXXFLAGS = $(AM_CFLAGS)
|
||||
libibmdb2i_a_CXXFLAGS = $(AM_CXXFLAGS)
|
||||
libibmdb2i_a_CFLAGS = $(AM_CFLAGS)
|
||||
libibmdb2i_a_SOURCES= $(ha_ibmdb2i_la_SOURCES)
|
||||
|
||||
|
@ -156,14 +156,14 @@ libinnobase_a_SOURCES= btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c \
|
||||
ut/ut0ut.c ut/ut0vec.c ut/ut0wqueue.c \
|
||||
handler/ha_innodb.cc
|
||||
|
||||
libinnobase_a_CXXFLAGS= $(AM_CFLAGS)
|
||||
libinnobase_a_CXXFLAGS= $(AM_CXXFLAGS)
|
||||
libinnobase_a_CFLAGS= $(AM_CFLAGS)
|
||||
|
||||
EXTRA_LTLIBRARIES= ha_innodb.la
|
||||
pkgplugin_LTLIBRARIES= @plugin_innobase_shared_target@
|
||||
|
||||
ha_innodb_la_LDFLAGS= -module -rpath $(pkgplugindir)
|
||||
ha_innodb_la_CXXFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS)
|
||||
ha_innodb_la_CXXFLAGS= $(AM_CXXFLAGS) $(INNODB_DYNAMIC_CFLAGS)
|
||||
ha_innodb_la_CFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS)
|
||||
ha_innodb_la_SOURCES= $(libinnobase_a_SOURCES)
|
||||
|
||||
|
@ -325,14 +325,14 @@ libinnobase_a_SOURCES= \
|
||||
ut/ut0vec.c \
|
||||
ut/ut0wqueue.c
|
||||
|
||||
libinnobase_a_CXXFLAGS= $(AM_CFLAGS)
|
||||
libinnobase_a_CXXFLAGS= $(AM_CXXFLAGS)
|
||||
libinnobase_a_CFLAGS= $(AM_CFLAGS)
|
||||
|
||||
EXTRA_LTLIBRARIES= ha_innodb_plugin.la
|
||||
pkgplugin_LTLIBRARIES= @plugin_innodb_plugin_shared_target@
|
||||
|
||||
ha_innodb_plugin_la_LDFLAGS= -module -rpath $(pkgplugindir)
|
||||
ha_innodb_plugin_la_CXXFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS)
|
||||
ha_innodb_plugin_la_CXXFLAGS= $(AM_CXXFLAGS) $(INNODB_DYNAMIC_CFLAGS)
|
||||
ha_innodb_plugin_la_CFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS)
|
||||
ha_innodb_plugin_la_SOURCES= $(libinnobase_a_SOURCES)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user