Blob Blame History Raw
# copy-pasted from libreport
# ABRT_PARSE_WITH(PACKAGE)
# -----------------------
# For use in AC_ARG_WITH action-if-found, for packages default ON.
# * Set NO_PACKAGE=YesPlease for --without-PACKAGE
# * Unset NO_PACKAGE for --with-PACKAGE without ARG
AC_DEFUN([ABRT_PARSE_WITH],
    [m4_pushdef([ABRT_UC_PACKAGE], m4_toupper([$1]))dnl
    if test "$withval" = "no"; then
        NO_[]ABRT_UC_PACKAGE=YesPlease
    elif test "$withval" = "yes"; then
        NO_[]ABRT_UC_PACKAGE=
    else
        NO_[]ABRT_UC_PACKAGE=
    fi
    m4_popdef([ABRT_UC_PACKAGE])])

AC_INIT([abrt],
	m4_esyscmd([cat ./abrt-version]),
	[crash-catcher@fedorahosted.org])

AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE([-Wall foreign tar-ustar])
# Support silent build rules. Disable by either passing --disable-silent-rules
# to ./configure or passing V=1 to make
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES])
# The 'yes' argument is undocumented but it is common knowledge that it works.
AM_SILENT_RULES([yes])


AM_PROG_AR
AC_DISABLE_STATIC
AC_PROG_LIBTOOL
AC_PROG_CC
AM_PROG_CC_C_O
AC_PROG_LN_S

AC_SYS_LARGEFILE
CFLAGS="$CFLAGS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE \
          -D_FILE_OFFSET_BITS=64 -fno-strict-aliasing -std=gnu99 -Wall -Wwrite-strings"

AC_ARG_ENABLE(debug,
              [AC_HELP_STRING([--enable-debug],
                             [Enable debug information])],
              [CFLAGS="$CFLAGS -DDEBUG -ggdb -g -O0"])

dnl ****** INTERNATIONALIZATION **********************
GETTEXT_PACKAGE=abrt
AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Package name for gettext])

AM_GNU_GETTEXT([external])
AM_GNU_GETTEXT_VERSION([0.17])

IT_PROG_INTLTOOL([0.35.0])

dnl ****** END ****************************************

AC_PATH_PROG([ASCIIDOC], [asciidoc], [no])
[if test "$ASCIIDOC" = "no"]
[then]
    [echo "The asciidoc program was not found in the search path. Please ensure"]
    [echo "that it is installed and its directory is included in the search path."]
    [echo "Then run configure again before attempting to build ABRT."]
    [exit 1]
[fi]

AC_PATH_PROG([XMLTO], [xmlto], [no])
[if test "$XMLTO" = "no"]
[then]
    [echo "The xmlto program was not found in the search path. Please ensure"]
    [echo "that it is installed and its directory is included in the search path."]
    [echo "Then run configure again before attempting to build ABRT."]
    [exit 1]
[fi]

AC_ARG_WITH(python2,
AS_HELP_STRING([--with-python2],[build Python2 support (default is YES)]),
ABRT_PARSE_WITH([python2]))

[if test -z "$NO_PYTHON2"]
[then]
    AM_CONDITIONAL(BUILD_PYTHON2, true)
    AC_PATH_PROG([PYTHON], [python], [no])
    [if test "$PYTHON" == "no"]
    [then]
        [echo "The python program was not found in the search path. Please ensure"]
        [echo "that it is installed and its directory is included in the search path or"]
        [echo "pass --without-python2 to ./configure."]
        [echo "Then run configure again before attempting to build ABRT."]
        [exit 1]
    [fi]

    AC_PATH_PROG([PYTHON_CONFIG], [python-config], [no])
    [if test "$PYTHON_CONFIG" = "no"]
    [then]
        [echo "The python-config program was not found in the search path. Please ensure"]
        [echo "that it is installed and its directory is included in the search path or"]
        [echo "pass --without-python2 to ./configure."]
        [echo "Then run configure again before attempting to build ABRT."]
        [exit 1]
    [fi]

    PYTHON_CFLAGS=`python-config --cflags 2> /dev/null`
    PYTHON_LIBS=`python-config --libs 2> /dev/null`

    AC_SUBST([PYTHON2_PREFIX], ['${prefix}'])
    AC_SUBST([PYTHON2_EXEC_PREFIX], ['${exec_prefix}'])

    PYTHON2_DIR=`$PYTHON -c "import distutils.sysconfig; \
        print(distutils.sysconfig.get_python_lib(0,0,prefix='$PYTHON2_PREFIX'))"`
    PYTHON2_EXECDIR=`$PYTHON -c "import distutils.sysconfig; \
        print(distutils.sysconfig.get_python_lib(1,0,prefix='$PYTHON2_EXEC_PREFIX'))"`

    AC_SUBST(PYTHON_CFLAGS)
    AC_SUBST(PYTHON_LIBS)
    AC_SUBST(pythondir, $PYTHON2_DIR)
    AC_SUBST(pyexecdir, $PYTHON2_EXECDIR)
[else]
    AM_CONDITIONAL(BUILD_PYTHON2, false)
[fi]

AC_ARG_WITH(python3,
AS_HELP_STRING([--with-python3],[build Python3 support (default is YES)]),
ABRT_PARSE_WITH([python3]))

[if test -z "$NO_PYTHON3"]
[then]
    AM_CONDITIONAL(BUILD_PYTHON3, true)
    AC_PATH_PROG([PYTHON3], [python3], [no])
    [if test "$PYTHON3" == "no"]
    [then]
        [echo "The python3 program was not found in the search path. Please ensure"]
        [echo "that it is installed and its directory is included in the search path or"]
        [echo "pass --without-python3 to ./configure."]
        [echo "Then run configure again before attempting to build ABRT."]
        [exit 1]
    [fi]

    AC_PATH_PROG([PYTHON3_CONFIG], [python3-config], [no])
    [if test "$PYTHON3_CONFIG" = "no"]
    [then]
        [echo "The python3-config program was not found in the search path. Please ensure"]
        [echo "that it is installed and its directory is included in the search path or"]
        [echo "pass --without-python3 to ./configure."]
        [echo "Then run configure again before attempting to build ABRT."]
        [exit 1]
    [fi]

    PYTHON3_CFLAGS=`python3-config --cflags 2> /dev/null`
    PYTHON3_LIBS=`python3-config --libs 2> /dev/null`

    AC_SUBST([PYTHON3_PREFIX], ['${prefix}'])
    AC_SUBST([PYTHON3_EXEC_PREFIX], ['${exec_prefix}'])

    PYTHON3_DIR=`$PYTHON3 -c "import distutils.sysconfig; \
        print(distutils.sysconfig.get_python_lib(0,0,prefix='$PYTHON3_PREFIX'))"`
    PYTHON3_EXECDIR=`$PYTHON3 -c "import distutils.sysconfig; \
        print(distutils.sysconfig.get_python_lib(1,0,prefix='$PYTHON3_EXEC_PREFIX'))"`

    AC_SUBST(PYTHON3_CFLAGS)
    AC_SUBST(PYTHON3_LIBS)
    AC_SUBST(python3dir, $PYTHON3_DIR)
    AC_SUBST(py3execdir, $PYTHON3_EXECDIR)
[else]
    AM_CONDITIONAL(BUILD_PYTHON3, false)
[fi]

AC_ARG_WITH(pythondoc,
AS_HELP_STRING([--with-pythondoc],[build Python documentation (default is YES)]),
ABRT_PARSE_WITH([pythondoc]))

[if test -z "$NO_PYTHONDOC"]
[then]
    AM_CONDITIONAL(HAVE_PYTHON_SPHINX, true)
    AC_PATH_PROG([PYTHON_SPHINX], [sphinx-build], [no])
    [if test "$PYTHON_SPHINX" = "no"]
    [then]
        [echo "The sphinx-build program was not found in the search path. Please ensure"]
        [echo "that it is installed and its directory is included in the search path or"]
        [echo "pass --without-pythondoc to ./configure."]
        [echo "Then run configure again before attempting to build ABRT."]
        [exit 1]
    [fi]
[else]
    AM_CONDITIONAL(HAVE_PYTHON_SPHINX, false)
[fi]

AC_ARG_WITH(pythontests,
AS_HELP_STRING([--with-pythontests],[run python tests (default is YES)]),
ABRT_PARSE_WITH([pythontests]))

[if test -z "$NO_PYTHONTESTS"]
[then]
    AM_CONDITIONAL(HAVE_PYTHON_NOSE, true)
    AC_PATH_PROG([PYTHON_NOSE], [nosetests-3], [no])
    [if test "$PYTHON_NOSE" = "no"]
    [then]
        [echo "The nosetests-3 program was not found in the search path. Please ensure"]
        [echo "that it is installed and its directory is included in the search path or"]
        [echo "pass --without-pythontests to ./configure."]
        [echo "Then run configure again before attempting to build ABRT."]
        [exit 1]
    [fi]
[else]
    AM_CONDITIONAL(HAVE_PYTHON_NOSE, false)
[fi]

PKG_CHECK_MODULES([GTK], [gtk+-3.0])
PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.43])
PKG_CHECK_MODULES([DBUS], [dbus-1])
PKG_CHECK_MODULES([LIBXML], [libxml-2.0])
PKG_CHECK_MODULES([LIBNOTIFY], [libnotify >= 0.7.0])
PKG_CHECK_MODULES([NSS], [nss])
PKG_CHECK_MODULES([LIBREPORT], [libreport])
PKG_CHECK_MODULES([LIBREPORT_GTK], [libreport-gtk])
PKG_CHECK_MODULES([GIO], [gio-2.0])
PKG_CHECK_MODULES([GIO_UNIX], [gio-unix-2.0])
PKG_CHECK_MODULES([SATYR], [satyr])
PKG_CHECK_MODULES([SYSTEMD], [libsystemd])
PKG_CHECK_MODULES([GSETTINGS_DESKTOP_SCHEMAS], [gsettings-desktop-schemas >= 3.15.1])

PKG_PROG_PKG_CONFIG
AC_ARG_WITH([dbusinterfacedir],
        AS_HELP_STRING([--with-dbusinterfacedir=DIR], [Directory for dbus interface files]),
        [], [with_dbusinterfacedir=${datadir}/dbus-1/interfaces])
AC_SUBST([dbusinterfacedir], [$with_dbusinterfacedir])

AC_ARG_WITH(largedatatmpdir,
            [AS_HELP_STRING([--with-largedatatmpdir=DIR],
                           [Directory where potentially large data are created (default: /var/tmp)])],
            [], [with_largedatatmpdir="/var/tmp"])
AC_SUBST([LARGE_DATA_TMP_DIR], [$with_largedatatmpdir])

AC_CHECK_HEADER([sys/inotify.h], [],
   [AC_MSG_ERROR([sys/inotify.h is needed to build abrt])])

AC_CHECK_HEADERS([locale.h])

CONF_DIR='${sysconfdir}/${PACKAGE_NAME}'
DEFAULT_CONF_DIR='${datadir}/${PACKAGE_NAME}/conf.d'
VAR_RUN='${localstatedir}/run'
VAR_STATE='${localstatedir}/lib/${PACKAGE_NAME}'
PLUGINS_CONF_DIR='${sysconfdir}/${PACKAGE_NAME}/plugins'
DEFAULT_PLUGINS_CONF_DIR='${datadir}/${PACKAGE_NAME}/conf.d/plugins'
EVENTS_DIR='${datadir}/libreport/events'
EVENTS_CONF_DIR='${sysconfdir}/libreport/events.d'
JOURNAL_CATALOG_DIR='$(prefix)/lib/systemd/catalog'
ENABLE_SOCKET_OR_DBUS='-DENABLE_DBUS=1'
DEFAULT_DUMP_LOCATION_MODE=0751
DEFAULT_DUMP_DIR_MODE=$($PKG_CONFIG --variable=dd_mode libreport)
LIBREPORT_PLUGINS_CONF_DIR=$($PKG_CONFIG --variable=plugins_conf_dir libreport)
PROBLEMS_CONFIG_INTERFACES_DIR=${dbusinterfacedir}

AC_ARG_WITH([defaultdumplocation],
            AS_HELP_STRING([--with-defaultdumplocation=DIR],
                           [Default dump location ('LOCALSTATEDIR/spool/abrt')]),
            [], [with_defaultdumplocation=${localstatedir}/spool/abrt])
AC_SUBST([DEFAULT_DUMP_LOCATION], [$with_defaultdumplocation])

AC_ARG_WITH([defaultpackagemanager],
            AS_HELP_STRING([--with-defaultpackagemanager=dnf],
                           [Default package manager. 'dnf' or 'yum' ('dnf')]),
            [], [with_defaultpackagemanager=dnf])
AC_SUBST([DEFAULT_PACKAGE_MANAGER], [$with_defaultpackagemanager])


AC_ARG_WITH(augeaslenslibdir,
                    [AS_HELP_STRING([--with-augeaslenslibdir=DIR],
                                                   [Directory for librepor lens (default: /usr/share/augeas/lenses)])],
                                [], [with_augeaslenslibdir="/usr/share/augeas/lenses"])
AC_ARG_WITH([support-url],
        AS_HELP_STRING([--with-support-url=URL],
                [Specify the support URL to show in catalog entries]),
        [SUPPORT_URL="$withval"],
        [SUPPORT_URL=https://bugzilla.redhat.com/])

AC_SUBST(SUPPORT_URL)

AC_SUBST([AUGEAS_LENS_LIB_DIR], [$with_augeaslenslibdir])

AC_PATH_PROG(AUGPARSE, augparse, no)
[if test "$ARGPARSE" = "no"]
[then]
    [echo "The argparse program was not found in the search path. Please ensure"]
    [echo "that it is installed and its directory is included in the search path."]
    [echo "Then run configure again before attempting to build ABRT."]
    [exit 1]
[fi]

AC_ARG_ENABLE(doxygen-docs,
    AS_HELP_STRING([--enable-doxygen-docs],
	[build DOXYGEN documentation (requires Doxygen)]),
    [enable_doxygen_docs=$enableval],
    [enable_doxygen_docs=no]
)

AC_PATH_PROG([FINDMNT], [findmnt], [/usr/bin/findmnt], [$PATH:/usr/sbin:/sbin])
AC_PATH_PROG([GDB], [gdb], [/usr/bin/gdb], [/usr/libexec$PATH_SEPARATOR$PATH])

# Doxygen Documentation

AC_PATH_PROG(DOXYGEN, doxygen, no)

AC_MSG_CHECKING([whether to build Doxygen documentation])

if test "$DOXYGEN" = "no" ; then
    have_doxygen=no
else
    have_doxygen=yes
fi

if test "$enable_doxygen_docs" = "yes" ; then
    if test "$have_doxygen" = "no"; then
        AC_MSG_ERROR([Building Doxygen docs explicitly required, but Doxygen not found])
    fi
    AC_MSG_RESULT(yes)
else
    AC_MSG_RESULT(no)
fi

AM_CONDITIONAL(DBUS_DOXYGEN_DOCS_ENABLED, test "$enable_doxygen_docs" = "yes")


# Autoreporting advertisement

AC_ARG_ENABLE(suggest-autoreporting,
    AS_HELP_STRING([--enable-suggest-autoreporting],
    [print messages encouraging users to enable autoreporting]),
    [enable_suggest_autoreporting=$enableval],
    [enable_suggest_autoreporting=no]
)

AM_CONDITIONAL(SUGGEST_AUTOREPORTING, test "$enable_suggest_autoreporting" = "yes")

# Authenticated autoreporting

AC_ARG_ENABLE(authenticated-autoreporting,
    AS_HELP_STRING([--enable-authenticated-autoreporting],
    [enable authenticated autoreporting]),
    [enable_authenticated_autoreporting=$enableval],
    [enable_authenticated_autoreporting=no]
)

AM_CONDITIONAL(AUTHENTICATED_AUTOREPORTING, test "$enable_authenticated_autoreporting" = "yes")

# Make satyr use GDB or elfutils/libunwind for unwinding?

AC_ARG_ENABLE([native-unwinder],
    AS_HELP_STRING([--enable-native-unwinder],
        [use native unwinder (libunwind or elfutils) instead of GDB (default is no)]),
    [], [enable_native_unwinder=no])

[if test "$enable_native_unwinder" = "yes"]
[then]
    AC_DEFINE([ENABLE_NATIVE_UNWINDER], [1], [Use elfutils/libunwind for unwinding instead of GDB.])
[fi]

AC_ARG_ENABLE([addon-vmcore],
    AS_HELP_STRING([--enable-addon-vmcore],
        [allow to disable vmcore addon (for architectures without kexec/kdump) (default is yes)]),
    [], [enable_addon_vmcore=yes])

[if test "$enable_addon_vmcore" = "yes"]
[then]
    AC_DEFINE([ENABLE_ADDON_VMCORE], [1], [Disable vmcore addon (for architectures without kexec/kdump).])
	AM_CONDITIONAL(BUILD_ADDON_VMCORE, true)
[else]
	AM_CONDITIONAL(BUILD_ADDON_VMCORE, false)
[fi]

# Perform stack unwind on live/dying process in the core handler?

AC_ARG_ENABLE([dump-time-unwind],
    AS_HELP_STRING([--enable-dump-time-unwind],
        [create core stack trace while the crashed process is still in memory (default is no)]),
    [], [enable_dump_time_unwind=no])

[if test "$enable_native_unwinder" = "yes" -a "$enable_dump_time_unwind" = "yes"]
[then]
    AC_DEFINE([ENABLE_DUMP_TIME_UNWIND], [1], [Create core stacktrace while the process is still in memory.])
[fi]

AC_SUBST(CONF_DIR)
AC_SUBST(DEFAULT_CONF_DIR)
AC_SUBST(VAR_RUN)
AC_SUBST(VAR_STATE)
AC_SUBST(PLUGINS_CONF_DIR)
AC_SUBST(DEFAULT_PLUGINS_CONF_DIR)
AC_SUBST(EVENTS_CONF_DIR)
AC_SUBST(JOURNAL_CATALOG_DIR)
AC_SUBST(EVENTS_DIR)
AC_SUBST(DEFAULT_DUMP_LOCATION)
AC_SUBST(DEFAULT_DUMP_LOCATION_MODE)
AC_SUBST(DEFAULT_DUMP_DIR_MODE)
AC_SUBST(LIBREPORT_PLUGINS_CONF_DIR)
AC_SUBST(PROBLEMS_CONFIG_INTERFACES_DIR)

AC_ARG_WITH(bodhi,
AS_HELP_STRING([--with-bodhi],[use Bodhi plugin (default is YES)]),
ABRT_PARSE_WITH([bodhi]))

PKG_CHECK_MODULES([JSON_C], [json], [
    JSON_C_PACKAGE=json
], [
    PKG_CHECK_MODULES([JSON_C], [json-c], [
        JSON_C_PACKAGE=json-c
    ])
])


if test -z "$NO_BODHI"
then
PKG_CHECK_MODULES([LIBREPORT_WEB], [libreport-web])
AM_CONDITIONAL(BUILD_BODHI, true)
else
AM_CONDITIONAL(BUILD_BODHI, false)
fi dnl end NO_BODHI

AC_ARG_WITH(atomic,
AS_HELP_STRING([--with-atomic],[add Atomic support (default is YES)]),
ABRT_PARSE_WITH([atomic]))

if test -z "$NO_ATOMIC"
then
AM_CONDITIONAL(BUILD_ATOMIC, true)
else
AM_CONDITIONAL(BUILD_ATOMIC, false)
fi dnl end NO_BODHI

AC_ARG_WITH(selinux,
AS_HELP_STRING([--with-selinux],[build selinux support (default is YES)]),
ABRT_PARSE_WITH([selinux]))

[if test -z "$NO_SELINUX"]
[then]
    PKG_CHECK_MODULES([LIBSELINUX], [libselinux])
    AM_CONDITIONAL(HAVE_SELINUX, true)
[else]
    AM_CONDITIONAL(HAVE_SELINUX, false)
[fi]

AC_ARG_WITH(rpm,
AS_HELP_STRING([--with-rpm],[build rpm support (default is YES)]),
ABRT_PARSE_WITH([rpm]))

[if test -z "$NO_RPM"]
[then]
    PKG_CHECK_MODULES([RPM], [rpm])
    AC_DEFINE(HAVE_LIBRPM, [], [Have rpm support.])
[fi]

AC_ARG_WITH(polkit,
AS_HELP_STRING([--with-polkit],[build polkit support (default is YES)]),
ABRT_PARSE_WITH([polkit]))

[if test -z "$NO_POLKIT"]
[then]
    PKG_CHECK_MODULES([POLKIT], [polkit-gobject-1])
    PKG_CHECK_MODULES([POLKIT_AGENT], [polkit-agent-1])
    AC_DEFINE(HAVE_POLKIT, [], [Have polkit support.])
[fi]

# Initialize the test suite.
AC_CONFIG_TESTDIR(tests)
AC_CONFIG_FILES([tests/Makefile tests/atlocal])
AM_MISSING_PROG([AUTOM4TE], [autom4te])
# Needed by tests/atlocal.in.
# CFLAGS may contain '-Werror=format-security'
AC_SUBST([O0CFLAGS], [`echo $CFLAGS   | sed 's/-O[[0-9]] *//' | sed 's/-Werror\(=[[^ ]]*\)\?//g'`])

AC_CONFIG_HEADERS([config.h])

AC_CHECK_PROGS([VALGRIND], [valgrind])

AC_CONFIG_FILES([
	Makefile
	abrt.pc
	abrt.spec
	apidoc/Makefile
	apidoc/Doxyfile
	apidoc/html/Makefile
	doc/Makefile
	doc/problems-service/Makefile
	doc/dbus-configuration/Makefile
	src/include/Makefile
	src/lib/Makefile
	src/plugins/Makefile
	src/Makefile
	src/daemon/Makefile
	src/daemon/abrt-handle-upload
	src/hooks/Makefile
	src/applet/Makefile
	src/cli/Makefile
	src/cli-ng/Makefile
	src/cli-ng/abrtcli/Makefile
	src/cli-ng/tests/Makefile
	src/cli-ng/tests/clitests/Makefile
	src/configuration-gui/Makefile
	src/configuration-gui/abrt_gui.pc
	src/dbus/Makefile
	src/plugins/abrt-action-install-debuginfo
	src/plugins/abrt-action-analyze-vmcore
	src/plugins/abrt-action-analyze-vulnerability
	src/plugins/abrt-action-check-oops-for-hw-error
	src/plugins/abrt-action-check-oops-for-alt-component
	src/python-problem/Makefile
	src/python-problem/doc/Makefile
	src/python-problem/tests/Makefile
	src/python-problem/problem/Makefile
	src/python-problem/examples/Makefile
	po/Makefile.in
	icons/Makefile
])

AC_OUTPUT