blob: deea4321906f4e1f8d96375f7c8972a59eb9a880 [file] [log] [blame]
##*****************************************************************************
# AUTHOR:
# Chris Dunlap <cdunlap@llnl.gov>
#
# SYNOPSIS:
# X_AC_DEBUG
#
# DESCRIPTION:
# Add support for the "--enable-debug", "--enable-memory-leak-debug",
# "--disable-partial-attach", "--enable-front-end", and "--enable-developer"
# configure script options.
#
# options.
# If debugging is enabled, CFLAGS will be prepended with the debug flags.
# The NDEBUG macro (used by assert) will also be set accordingly.
#
# WARNINGS:
# This macro must be placed after AC_PROG_CC or equivalent.
##*****************************************************************************
AC_DEFUN([X_AC_DEBUG], [
AC_MSG_CHECKING([whether optimizations are enabled])
AC_ARG_ENABLE(
[optimizations],
AS_HELP_STRING(--disable-optimizations, disable optimizations (sets -O0)),
[ case "$enableval" in
yes) x_ac_optimizations=yes ;;
no) x_ac_optimizations=no ;;
*) AC_MSG_RESULT([doh!])
AC_MSG_ERROR([bad value "$enableval" for --enable-optimizations]) ;;
esac
],
[x_ac_optimizations=yes]
)
AC_MSG_RESULT([${x_ac_optimizations}])
AC_MSG_CHECKING([whether or not developer options are enabled])
AC_ARG_ENABLE(
[developer],
AS_HELP_STRING(--enable-developer,enable developer options (asserts, -Werror - also sets --enable-debug as well)),
[ case "$enableval" in
yes) x_ac_developer=yes ;;
no) x_ac_developer=no ;;
*) AC_MSG_RESULT([doh!])
AC_MSG_ERROR([bad value "$enableval" for --enable-developer]) ;;
esac
]
)
if test "$x_ac_developer" = yes; then
test "$GCC" = yes && CFLAGS="$CFLAGS -Werror"
test "$GXX" = yes && CXXFLAGS="$CXXFLAGS -Werror"
# automatically turn on --enable-debug if being a developer
x_ac_debug=yes
else
AC_DEFINE([NDEBUG], [1],
[Define to 1 if you are building a production release.]
)
fi
AC_MSG_RESULT([${x_ac_developer=no}])
AC_MSG_CHECKING([whether debugging is enabled])
AC_ARG_ENABLE(
[debug],
AS_HELP_STRING(--disable-debug,disable debugging symbols and compile with optimizations),
[ case "$enableval" in
yes) x_ac_debug=yes ;;
no) x_ac_debug=no ;;
*) AC_MSG_RESULT([doh!])
AC_MSG_ERROR([bad value "$enableval" for --enable-debug]) ;;
esac
],
[x_ac_debug=yes]
)
if test "$x_ac_debug" = yes; then
# you will most likely get a -O2 in you compile line, but the last option
# is the only one that is looked at.
# We used to force this to -O0, but this precludes the use of FSTACK_PROTECT
# which is injected into RHEL7/SuSE12 RPM builds rather aggressively.
AX_CHECK_COMPILE_FLAG([-ggdb3], [CFLAGS="$CFLAGS -ggdb3"])
test "$GCC" = yes && CFLAGS="$CFLAGS -Wall -g -O1 -fno-strict-aliasing"
test "$GXX" = yes && CXXFLAGS="$CXXFLAGS -Wall -g -O1 -fno-strict-aliasing"
fi
AC_MSG_RESULT([${x_ac_debug=no}])
AC_MSG_CHECKING([whether memory leak debugging is enabled])
AC_ARG_ENABLE(
[memory-leak-debug],
AS_HELP_STRING(--enable-memory-leak-debug,enable memory leak debugging code for development),
[ case "$enableval" in
yes) x_ac_memory_debug=yes ;;
no) x_ac_memory_debug=no ;;
*) AC_MSG_RESULT([doh!])
AC_MSG_ERROR([bad value "$enableval" for --enable-memory-leak-debug]) ;;
esac
]
)
if test "$x_ac_memory_debug" = yes; then
AC_DEFINE(MEMORY_LEAK_DEBUG, 1, [Define to 1 for memory leak debugging.])
fi
AC_MSG_RESULT([${x_ac_memory_debug=no}])
AC_MSG_CHECKING([whether debugger partial attach enabled])
AC_ARG_ENABLE(
[partial-attach],
AS_HELP_STRING(--disable-partial-attach,disable debugger partial task attach support),
[ case "$enableval" in
yes) x_ac_partial_attach=yes ;;
no) x_ac_partial_attach=no ;;
*) AC_MSG_RESULT([doh!])
AC_MSG_ERROR([bad value "$enableval" for --enable-partial-leak-attach]) ;;
esac
]
)
if test "$x_ac_partial_attach" != "no"; then
AC_DEFINE(DEBUGGER_PARTIAL_ATTACH, 1, [Define to 1 for debugger partial task attach support.])
fi
AC_MSG_RESULT([${x_ac_partial_attach=no}])
AC_MSG_CHECKING([whether salloc should kill child processes at job termination])
AC_ARG_ENABLE(
[salloc-kill-cmd],
AS_HELP_STRING(--enable-salloc-kill-cmd,salloc should kill child processes at job termination),
[ case "$enableval" in
yes) x_ac_salloc_kill_cmd=yes ;;
no) x_ac_salloc_kill_cmd=no ;;
*) AC_MSG_RESULT([doh!])
AC_MSG_ERROR([bad value "$enableval" for --enable-salloc-kill-cmd]) ;;
esac
]
)
if test "$x_ac_salloc_kill_cmd" = yes; then
AC_DEFINE(SALLOC_KILL_CMD, 1, [Define to 1 for salloc to kill child processes at job termination])
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
if test "$x_ac_optimizations" = no; then
test "$GCC" = yes && CFLAGS="$CFLAGS -O0"
fi
])