add optional support for building with asan

This commit is contained in:
djcb 2018-11-03 15:47:39 +02:00
parent 7c63fe65eb
commit 052a228be7
8 changed files with 66 additions and 25 deletions

View File

@ -53,6 +53,7 @@ AX_CXX_COMPILE_STDCXX_14
m4_ifdef([AX_COMPILER_FLAGS],[AX_COMPILER_FLAGS(,,[yes],${extra_flags})])
AX_VALGRIND_CHECK
# for now, use AM_PROG_LIBTOOL, as we don't want to require
# a too new setup for autotools/libtool
AM_PROG_LIBTOOL
@ -66,6 +67,16 @@ AC_CHECK_HEADERS([wordexp.h])
# use the 64-bit versions
AC_SYS_LARGEFILE
# asan is somewhat similar to valgrind, but has low enough overhead so it
# can be used during normal operation.
AC_ARG_ENABLE([asan],[AS_HELP_STRING([--enable-asan],
[Enable Address Sanitizer])], [use_asan=$enableval], [use_asan=no])
AS_IF([test "x$use_asan" = "xyes"],[
AC_SUBST(ASAN_CFLAGS, "-fsanitize=address -static-libasan -fno-omit-frame-pointer")
AC_SUBST(ASAN_CXXFLAGS,"-fsanitize=address -static-libasan -fno-omit-frame-pointer")
AC_SUBST(ASAN_LDFLAGS, "-fsanitize=address -static-libasan -fno-omit-frame-pointer")
])
# check for makeinfo
AC_CHECK_PROG(have_makeinfo,makeinfo,yes,no)
AM_CONDITIONAL(HAVE_MAKEINFO,test "x$have_makeinfo" = "xyes")

View File

@ -28,8 +28,8 @@ AM_CPPFLAGS= \
# don't use -Werror, as it might break on other compilers
# use -Wno-unused-parameters, because some callbacks may not
# really need all the params they get
AM_CFLAGS=${WARN_CFLAGS}
AM_CXXFLAGS=${WARN_CXXFLAGS}
AM_CFLAGS=$(ASAN_CFLAGS) ${WARN_CFLAGS}
AM_CXXFLAGS=$(ASAN_CXXFLAGS) ${WARN_CXXFLAGS}
lib_LTLIBRARIES= \
libguile-mu.la
@ -44,7 +44,9 @@ libguile_mu_la_LIBADD= \
${top_builddir}/lib/libmu.la \
${GUILE_LIBS}
libguile_mu_la_LDFLAGS= -export-dynamic
libguile_mu_la_LDFLAGS= \
$(ASAN_LDFLAGS)
-export-dynamic
XFILES= \
mu-guile.x \

View File

@ -16,26 +16,27 @@
include $(top_srcdir)/gtest.mk
AM_CPPFLAGS=$(XAPIAN_CXXFLAGS) \
$(GMIME_CFLAGS) \
$(GLIB_CFLAGS) \
-I ${top_srcdir} \
-I ${top_srcdir}/lib \
-I ${top_srcdir}/lib/tests \
-DMU_TESTMAILDIR=\"${top_srcdir}/lib/tests/testdir\" \
-DMU_TESTMAILDIR2=\"${top_srcdir}/lib/tests/testdir2\" \
-DMU_TESTMAILDIR3=\"${top_srcdir}/lib/tests/testdir3\" \
-DMU_PROGRAM=\"${abs_top_builddir}/mu/mu\" \
-DMU_GUILE_MODULE_PATH=\"${abs_top_srcdir}/guile/\" \
-DMU_GUILE_LIBRARY_PATH=\"${abs_top_builddir}/guile/.libs\" \
-DABS_CURDIR=\"${abs_builddir}\" \
AM_CPPFLAGS=$(XAPIAN_CXXFLAGS) \
$(GMIME_CFLAGS) \
$(GLIB_CFLAGS) \
-I ${top_srcdir} \
-I ${top_srcdir}/lib \
-I ${top_srcdir}/lib/tests \
-DMU_TESTMAILDIR=\"${top_srcdir}/lib/tests/testdir\" \
-DMU_TESTMAILDIR2=\"${top_srcdir}/lib/tests/testdir2\" \
-DMU_TESTMAILDIR3=\"${top_srcdir}/lib/tests/testdir3\" \
-DMU_PROGRAM=\"${abs_top_builddir}/mu/mu\" \
-DMU_GUILE_MODULE_PATH=\"${abs_top_srcdir}/guile/\" \
-DMU_GUILE_LIBRARY_PATH=\"${abs_top_builddir}/guile/.libs\" \
-DABS_CURDIR=\"${abs_builddir}\" \
-DABS_SRCDIR=\"${abs_srcdir}\"
# don't use -Werror, as it might break on other compilers
# use -Wno-unused-parameters, because some callbacks may not
# really need all the params they get
AM_CFLAGS=-Wall -Wextra -Wno-unused-parameter -Wdeclaration-after-statement
AM_CXXFLAGS=-Wall -Wextra -Wno-unused-parameter
AM_CFLAGS=$(ASAN_CFLAGS) ${WARN_CFLAGS}
AM_CXXFLAGS=$(ASAN_CXXFLAGS) ${WARN_CXXFLAGS}
AM_LDFLAGS=$(ASAN_LDFLAGS)
noinst_PROGRAMS= $(TEST_PROGS)
@ -44,7 +45,7 @@ test_mu_guile_SOURCES= test-mu-guile.c dummy.cc
test_mu_guile_LDADD=${top_builddir}/lib/tests/libtestmucommon.la
# we need to use dummy.cc to enforce c++ linking...
BUILT_SOURCES= \
BUILT_SOURCES= \
dummy.cc
dummy.cc:
touch dummy.cc

View File

@ -25,19 +25,20 @@ AM_CFLAGS= \
$(GMIME_CFLAGS) \
$(GLIB_CFLAGS) \
$(GUILE_CFLAGS) \
$(ASAN_CFLAGS) \
-Wno-format-nonliteral \
-Wno-switch-enum \
-Wno-suggest-attribute=format \
-Wno-deprecated-declarations \
-Wno-inline
AM_CXXFLAGS= \
$(WARN_CXXFLAGS) \
$(GMIME_CFLAGS) \
$(GLIB_CFLAGS) \
$(XAPIAN_CXXFLAGS) \
$(GUILE_CFLAGS)
$(GUILE_CFLAGS) \
$(ASAN_CXXFLAGS)
# don't use -Werror, as it might break on other compilers
# use -Wno-unused-parameters, because some callbacks may not
@ -109,6 +110,10 @@ libmu_la_LIBADD= \
$(GUILE_LIBS) \
${builddir}/parser/libmuxparser.la
libmu_la_LDFLAGS= \
$(ASAN_LDFLAGS)
EXTRA_DIST= \
mu-msg-crypto.c \
doxyfile.in

View File

@ -25,6 +25,7 @@ AM_CXXFLAGS= \
$(XAPIAN_CXXFLAGS) \
$(WARN_CXXFLAGS) \
$(GCOV_CFLAGS) \
$(ASAN_CXXFLAGS) \
-Wno-inline \
-Wno-switch-enum
@ -32,6 +33,7 @@ AM_CPPFLAGS= \
$(GCOV_CFLAGS)
AM_LDFLAGS= \
$(ASAN_LDFLAGS) \
$(WARN_LDFLAGS) \
$(GCOV_LDADD)

View File

@ -31,8 +31,15 @@ AM_CPPFLAGS=$(XAPIAN_CXXFLAGS) \
# don't use -Werror, as it might break on other compilers
# use -Wno-unused-parameters, because some callbacks may not
# really need all the params they get
AM_CFLAGS=-Wall -Wextra -Wno-unused-parameter -Wdeclaration-after-statement
AM_CXXFLAGS=-Wall -Wextra -Wno-unused-parameter
AM_CFLAGS= \
$(WARN_CFLAGS) \
$(ASAN_CFLAGS)
AM_CXXFLAGS= \
$(WARN_CXXFLAGS) \
$(ASAN_CXXFLAGS)
AM_LDFLAGS= \
$(ASAN_LDFLAGS)
noinst_PROGRAMS= $(TEST_PROGS)

View File

@ -26,13 +26,18 @@ AM_CPPFLAGS=-I${top_srcdir}/lib $(GLIB_CFLAGS)
# use -Wno-unused-parameters, because some callbacks may not
# really need all the params they get
AM_CFLAGS= \
$(ASAN_CFLAGS) \
$(WARN_CFLAGS) \
-Wno-switch-enum \
-DMU_SCRIPTS_DIR="\"$(pkgdatadir)/scripts/\""
AM_CXXFLAGS= \
$(ASAN_CXXCFLAGS) \
$(WARN_CXXFLAGS)
AM_LDFLAGS= \
$(ASAN_LDFLAGS)
bin_PROGRAMS= \
mu

View File

@ -33,8 +33,16 @@ AM_CPPFLAGS=$(XAPIAN_CXXFLAGS) \
# don't use -Werror, as it might break on other compilers
# use -Wno-unused-parameters, because some callbacks may not
# really need all the params they get
AM_CFLAGS=${WARN_CFLAGS}
AM_CXXFLAGS=${WARN_CXXFLAGS}
AM_CFLAGS= \
$(ASAN_CFLAGS) \
${WARN_CFLAGS}
AM_CXXFLAGS= \
$(ASAN_CFLAGS) \
${WARN_CFLAGS}
${WARN_CXXFLAGS}
AM_LDFLAGS= \
$(ASAN_LDFLAGS)
noinst_PROGRAMS= $(TEST_PROGS)