AC_COPYRIGHT([Copyright 2014-2015 The ConsoleKit2 Team]) AC_PREREQ([2.50]) AC_INIT([ConsoleKit2], [0.9.4], [https://github.com/ConsoleKit2/ConsoleKit2/issues], [ConsoleKit2]) VERSION_MAJOR=0 VERSION_MINOR=9 VERSION_REVISION=4 COPYRIGHT_YEARS="2014 2015" AC_CONFIG_HEADERS([config.h]) AC_CONFIG_AUX_DIR([autotools]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_SRCDIR([src/ck-manager.c]) AM_INIT_AUTOMAKE([1.9 dist-bzip2 tar-ustar no-dist-gzip]) m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) AM_MAINTAINER_MODE # for O_NOFOLLOW support AC_USE_SYSTEM_EXTENSIONS AC_SEARCH_LIBS([strerror],[cposix]) AC_PROG_CC AM_PROG_CC_C_O AC_HEADER_STDC AC_DISABLE_STATIC LT_INIT AC_HEADER_STDC AC_FUNC_FORK AC_FUNC_MALLOC AC_HEADER_MAJOR AC_PATH_X AC_TYPE_PID_T AC_TYPE_SIZE_T AC_TYPE_SSIZE_T AC_SUBST(VERSION) # Save flags to aclocal ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS" AM_GNU_GETTEXT_VERSION([0.15]) GETTEXT_PACKAGE=ConsoleKit2 AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Name of default gettext domain]) AM_GNU_GETTEXT([external]) AM_NLS # Dependencies DBUS_REQUIRED_VERSION=0.82 GLIB_REQUIRED_VERSION=2.40 X11_REQUIRED_VERSION=1.0.0 POLKIT_REQUIRED_VERSION=0.92 AC_CHECK_HEADERS([unistd.h paths.h sys/vt.h sys/consio.h fcntl.h limits.h \ sys/ioctl.h sys/param.h sys/socket.h syslog.h kvm.h \ sys/sysctl.h sys/user.h poll.h libintl.h locale.h \ sys/wait.h sys/resource.h]) AC_CHECK_FUNCS([getpeerucred getpeereid memset setenv strchr strdup \ strerror strrchr strspn strstr strtol strtoul uname \ setlocale]) AC_CHECK_MEMBERS([struct stat.st_rdev]) AC_CHECK_FILE(/sys/class/tty/tty0/active, [AC_DEFINE([HAVE_SYS_VT_SIGNAL], [1], [System has a means of signaling VT changes])], []) AC_TYPE_UID_T PKG_CHECK_MODULES(CONSOLE_KIT, dbus-1 >= $DBUS_REQUIRED_VERSION gobject-2.0 >= $GLIB_REQUIRED_VERSION gthread-2.0 >= $GLIB_REQUIRED_VERSION gio-unix-2.0 >= $GLIB_REQUIRED_VERSION ) PKG_CHECK_MODULES([XLIB], [x11]) have_polkit=no AC_ARG_ENABLE([polkit], AS_HELP_STRING([--enable-polkit], [Enable PolicyKit support @<:@default=auto@:>@]), [enable_polkit=$enableval], [enable_polkit=auto]) AS_IF([test "x$enable_polkit" != "xno"], [ PKG_CHECK_MODULES([POLKIT], [polkit-gobject-1 >= $POLKIT_REQUIRED_VERSION], [have_polkit=yes], [have_polkit=no]) if test "x$enable_polkit" = "xyes" -a "x$have_polkit" = "xno"; then AC_MSG_ERROR([PolicyKit support explicitly requested but dependencies not found]) fi ]) AS_IF([test "x$have_polkit" = "xyes"], [ AC_DEFINE([HAVE_POLKIT], [], [Define if we have polkit]) ]) AM_CONDITIONAL([HAVE_POLKIT], [test "x$have_polkit" = "xyes"]) AC_SUBST(HAVE_POLKIT) PKG_CHECK_MODULES(LIBDBUS, dbus-1 >= $DBUS_REQUIRED_VERSION ) PKG_CHECK_MODULES(TOOLS, x11 >= $X11_REQUIRED_VERSION glib-2.0 >= $GLIB_REQUIRED_VERSION ) PKG_CHECK_MODULES(HISTORY, glib-2.0 >= $GLIB_REQUIRED_VERSION ) AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal) EXTRA_COMPILE_WARNINGS(yes) # Solaris requires libresolv for daemon() case "$host_os" in solaris*) AC_CHECK_LIB(resolv, daemon, [CONSOLE_KIT_LIBS="$CONSOLE_KIT_LIBS -lresolv"]) ;; kfreebsd*-gnu) have_getpeereid=no AC_CHECK_LIB(bsd, getpeereid, have_getpeereid=yes) if test "x$have_getpeereid" = "xyes"; then CONSOLE_KIT_LIBS="${CONSOLE_KIT_LIBS} -lbsd" TOOLS_LIBS="${TOOLS_LIBS} -lbsd" AC_DEFINE(HAVE_GETPEEREID, [], [Define if we have getpeereid]) fi ;; esac dnl --------------------------------------------------------------------------- dnl - Are we specifying a different dbus root ? dnl --------------------------------------------------------------------------- AC_ARG_WITH(dbus-sys, [AS_HELP_STRING([--with-dbus-sys=],[where D-BUS system.d directory is])]) AC_ARG_WITH(dbus-services, [AS_HELP_STRING([--with-dbus-services=],[where D-BUS services directory is])]) if ! test -z "$with_dbus_sys" ; then DBUS_SYS_DIR="$with_dbus_sys" else DBUS_SYS_DIR="$sysconfdir/dbus-1/system.d" fi AC_SUBST(DBUS_SYS_DIR) dnl --------------------------------------------------------------------------- dnl - Check for libz dnl --------------------------------------------------------------------------- have_libz=no AC_CHECK_LIB(z, compress, [AC_CHECK_HEADER(zlib.h, [have_libz=yes], [])], []) if test "x$have_libz" != "xyes"; then AC_MSG_ERROR([Unable to find libz]) fi Z_LIBS="${Z_LIBS} -lz" AC_SUBST(Z_LIBS) dnl --------------------------------------------------------------------------- dnl - Path to rundir e.g. /var/run dnl --------------------------------------------------------------------------- AC_ARG_WITH(rundir, [AS_HELP_STRING([--with-rundir=],[run directory location, e.g. /var/run])]) if ! test -z "$with_rundir" ; then RUNDIR="$with_rundir" else RUNDIR="$localstatedir/run" fi AC_SUBST(RUNDIR) dnl --------------------------------------------------------------------------- dnl - PID file dnl --------------------------------------------------------------------------- AC_ARG_WITH(pid-file, [AS_HELP_STRING([--with-pid-file=],[pid file location])]) if ! test -z "$with_pid_file"; then CONSOLE_KIT_PID_FILE=$with_pid_file else CONSOLE_KIT_PID_FILE=${RUNDIR}/ConsoleKit/pid fi AC_SUBST(CONSOLE_KIT_PID_FILE) dnl --------------------------------------------------------------------------- dnl Figure out what tools backend to build dnl --------------------------------------------------------------------------- CK_BACKEND="" KVM_LIBS="" case "$host" in *-*-openbsd*) CK_BACKEND="openbsd" AC_CHECK_LIB(kvm, kvm_openfiles, have_kvm=yes, AC_MSG_ERROR([Unable to find libkvm which is needed on OpenBSD])) if test "x$have_kvm" = "xyes"; then KVM_LIBS="-lkvm" fi ;; *-*-freebsd* | *-*-kfreebsd*-gnu | *-*-dragonfly*) CK_BACKEND="freebsd" AC_CHECK_LIB(kvm, kvm_openfiles, have_kvm=yes, AC_MSG_ERROR([Unable to find libkvm which is needed on FreeBSD/DragonflyBSD])) if test "x$have_kvm" = "xyes"; then KVM_LIBS="-lkvm" fi ;; *-*-linux*) CK_BACKEND="linux" ;; *-*-solaris*) CK_BACKEND="solaris" ;; *-*-gnu*) CK_BACKEND="gnu" ;; *) AC_MSG_ERROR([No sysdeps back-end implemented for host $host]) ;; esac AC_SUBST(KVM_LIBS) AM_CONDITIONAL(CK_COMPILE_LINUX, test x$CK_BACKEND = xlinux, [Compiling for Linux]) AM_CONDITIONAL(CK_COMPILE_FREEBSD, test x$CK_BACKEND = xfreebsd, [Compiling for FreeBSD]) AM_CONDITIONAL(CK_COMPILE_OPENBSD, test x$CK_BACKEND = xopenbsd, [Compiling for OpenBSD]) AM_CONDITIONAL(CK_COMPILE_SOLARIS, test x$CK_BACKEND = xsolaris, [Compiling for Solaris]) AM_CONDITIONAL(CK_COMPILE_GNU, test x$CK_BACKEND = xgnu, [Compiling for GNU]) AC_SUBST(CK_BACKEND) dnl --------------------------------------------------------------------------- dnl Check for PAM dnl --------------------------------------------------------------------------- have_pam=no have_linuxpam=no AC_CHECK_LIB(pam, pam_getenv, have_pam=yes) AM_CONDITIONAL(HAVE_PAM, test x$have_pam = xyes) if test "x$have_pam" = "xyes"; then PAM_LIBS="${PAM_LIBS} -lpam" fi AC_SUBST(HAVE_PAM) AC_SUBST(PAM_LIBS) AC_CHECK_HEADERS([security/pam_modutil.h security/pam_ext.h]) AC_CHECK_LIB(pam, pam_syslog, [AC_DEFINE(HAVE_PAM_SYSLOG, [], [Define to 1 if you have the pam_syslog function])]) # Check if we should build the PAM module msg_pam_module=no AC_ARG_ENABLE(pam-module, [AS_HELP_STRING([--enable-pam-module],[build PAM module])], , enable_pam_module=no) if test "x$enable_pam_module" = "xyes"; then if test "x$have_pam" = "xno"; then AC_MSG_ERROR([--enable-pam-module requires PAM but PAM was not found]) fi AC_DEFINE(ENABLE_PAM_MODULE, [], [Set if we build PAM module]) msg_pam_module=yes fi AM_CONDITIONAL(ENABLE_PAM_MODULE, test "x$enable_pam_module" = "xyes") #Check if we can build an optional test program AC_CHECK_LIB(pam_misc, misc_conv, have_linuxpam=yes) AM_CONDITIONAL(HAVE_LINUXPAM, test "x$have_linuxpam" = "xyes") dnl ------------------------------------------------------------------------------ dnl udev-acl - apply ACLs for users with local forground sessions dnl ------------------------------------------------------------------------------ AC_ARG_ENABLE([udev-acl], AS_HELP_STRING([--enable-udev-acl], [enable local user acl permissions support @<:@default=disabled@:>@]), [], [enable_udev_acl=no]) AS_IF([test "x$enable_udev_acl" = "xyes"], [ PKG_CHECK_MODULES([UDEV_ACL], [glib-2.0 >= 2.22.0 gobject-2.0 >= 2.22.0 libudev]) AC_CHECK_LIB([acl], [acl_init], [UDEV_ACL_LIBS="$UDEV_ACL_LIBS -lacl"], AC_MSG_ERROR([libacl not found])) AC_CHECK_HEADER([acl/libacl.h], [:], AC_MSG_ERROR([libacl header not found])) UDEVDIR=`$PKG_CONFIG --variable udevdir udev` if test -z "$UDEVDIR" ; then UDEVDIR="/lib/udev" fi AC_SUBST(UDEVDIR) ]) AM_CONDITIONAL([ENABLE_UDEV_ACL], [test "x$enable_udev_acl" = "xyes"]) dnl --------------------------------------------------------------------------- dnl - Install directory for PAM security module dnl --------------------------------------------------------------------------- AC_ARG_WITH(pam-module-dir, [AS_HELP_STRING([--with-pam-module-dir=],[directory to install PAM security module])]) if ! test -z "$with_pam_module_dir"; then PAM_MODULE_DIR="$with_pam_module_dir" else PAM_MODULE_DIR="/lib/security" fi AC_SUBST(PAM_MODULE_DIR) dnl --------------------------------------------------------------------------- dnl - Install directory for xinitrc file dnl --------------------------------------------------------------------------- AC_ARG_WITH(xinitrc-dir, [AS_HELP_STRING([--with-xinitrc-dir=],[directory to install Xsession.d script for ck-launch-session])]) if ! test -z "$with_xinitrc_dir"; then XINITRC_DIR="$with_xinitrc_dir" else XINITRC_DIR="$sysconfdir/X11/xinit/xinitrc.d" fi AC_SUBST(XINITRC_DIR) dnl --------------------------------------------------------------------------- dnl - DocBook Documentation dnl --------------------------------------------------------------------------- AC_ARG_ENABLE(docbook-docs, [AS_HELP_STRING([--enable-docbook-docs],[build documentation (requires xmlto)])], enable_docbook_docs=$enableval,enable_docbook_docs=no) AC_PATH_PROG(XMLTO, xmlto, no) AC_MSG_CHECKING([whether to build DocBook documentation]) if test x$XMLTO = xno ; then have_docbook=no else have_docbook=yes fi if test x$enable_docbook_docs = xauto ; then if test x$have_docbook = xno ; then enable_docbook_docs=no else enable_docbook_docs=yes fi fi if test x$enable_docbook_docs = xyes; then if test x$have_docbook = xno; then AC_MSG_ERROR([Building DocBook docs explicitly required, but DocBook not found]) fi fi AM_CONDITIONAL(DOCBOOK_DOCS_ENABLED, test x$enable_docbook_docs = xyes) AC_MSG_RESULT(yes) AC_ARG_VAR([XMLTO],[Define/override the xmlto location.]) AC_ARG_VAR([XMLTO_FLAGS],[Define/override xmlto options, like --skip-validation.]) dnl --------------------------------------------------------------------------- dnl Check for xsltproc dnl --------------------------------------------------------------------------- AC_PATH_PROG([XSLTPROC], [xsltproc]) dnl --------------------------------------------------------------------------- dnl check for inotify dnl --------------------------------------------------------------------------- enable_inotify=no AC_CHECK_FUNC(inotify_init, [AC_CHECK_HEADER([sys/inotify.h], [enable_inotify=yes], [])], []) AM_CONDITIONAL(ENABLE_INOTIFY, test "x$enable_inotify" = "xyes") if test "x$enable_inotify" = "xyes" ; then AC_DEFINE(ENABLE_INOTIFY, [], [Define if we have inotify]) fi dnl --------------------------------------------------------------------------- dnl check for RBAC dnl --------------------------------------------------------------------------- msg_rbac_shutdown=no AC_ARG_ENABLE(rbac-shutdown, [AS_HELP_STRING([--enable-rbac-shutdown=],[Build with RBAC support specifying shutdown/reboot RBAC authentication key])], enable_rbac_shutdown=$enableval,enable_rbac_shutdown=no) if test "x$enable_rbac_shutdown" != "xno"; then RBAC_LIBS="-lsecdb -lsocket -lnsl" AC_DEFINE(ENABLE_RBAC_SHUTDOWN, [], [Set if we build with RBAC support]) AC_DEFINE_UNQUOTED(RBAC_SHUTDOWN_KEY, "$enable_rbac_shutdown", [Set if we build with RBAC support]) msg_rbac_shutdown="yes, using key $enable_rbac_shutdown" fi AC_SUBST(RBAC_LIBS) # # Enable Tests # AC_ARG_ENABLE(tests, [AS_HELP_STRING([--enable-tests],[enable validation test framework @<:@default=@<:@disabled@:>@@:>@])], enable_tests=yes, enable_tests=no) AC_MSG_CHECKING([whether to build the validation test framework]) AM_CONDITIONAL(BUILD_TESTS, test "x$enable_tests" = "xyes") AC_MSG_RESULT($enable_tests) dnl --------------------------------------------------------------------------- dnl Finish dnl --------------------------------------------------------------------------- # Turn on the additional warnings last, so -Werror doesn't affect other tests. AC_ARG_ENABLE(more-warnings, [AS_HELP_STRING([--enable-more-warnings],[Maximum compiler warnings])], set_more_warnings="$enableval",[ if test -d $srcdir/.git; then set_more_warnings=yes else set_more_warnings=no fi ]) AC_MSG_CHECKING(for more warnings) if test "$GCC" = "yes" -a "$set_more_warnings" != "no"; then AC_MSG_RESULT(yes) CFLAGS="\ -Wall \ -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes \ -Wnested-externs -Wpointer-arith \ -Wcast-align -Wsign-compare -Wp,-D_FORTIFY_SOURCE=2 \ $CFLAGS" for option in -Wno-strict-aliasing -Wno-sign-compare; do SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $option" AC_MSG_CHECKING([whether gcc understands $option]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[has_option=yes],[has_option=no]) if test $has_option = no; then CFLAGS="$SAVE_CFLAGS" fi AC_MSG_RESULT($has_option) unset has_option unset SAVE_CFLAGS done unset option else AC_MSG_RESULT(no) fi # # Enable Debug # AC_ARG_ENABLE(debug, [AS_HELP_STRING([--enable-debug@<:@=no|yes|full@:>@],[change debugging level @<:@default=@<:@yes@:>@@:>@])], , enable_debug=yes) AC_MSG_CHECKING([whether to enable debugging]) if test "$enable_debug" = "yes"; then DEBUG_CFLAGS="-DG_ENABLE_DEBUG" AC_MSG_RESULT(yes) else if test "x$enable_debug" = "xno"; then DEBUG_CFLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS" AC_MSG_RESULT(no) elif test "$enable_debug" = "full"; then DEBUG_CFLAGS="-DG_ENABLE_DEBUG -DCONSOLEKIT_DEBUGGING" AC_MSG_RESULT(yes) else DEBUG_CFLAGS= AC_MSG_RESULT(yes) fi fi AC_SUBST(DEBUG_CFLAGS) # Flags AC_SUBST(CONSOLE_KIT_CFLAGS) AC_SUBST(CONSOLE_KIT_LIBS) AC_SUBST(CFLAGS) AC_SUBST(CPPFLAGS) AC_SUBST(LDFLAGS) # systemd AC_ARG_WITH([systemdsystemunitdir], AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]), [], [with_systemdsystemunitdir=no]) AS_IF([test "x$with_systemdsystemunitdir" != "xno"], [ AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])]) AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != "xno"]) # Misc version info VERSION_MESSAGE="${VERSION}" COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} the ConsoleKit2 team" AC_DEFINE_UNQUOTED(VERSION_MESSAGE, "${VERSION_MESSAGE}", [Simple version string]) AC_DEFINE_UNQUOTED(COPYRIGHT_MESSAGE, "${COPYRIGHT_MESSAGE}", [Copyright string]) AC_DEFINE_UNQUOTED(COPYRIGHT_YEARS, "${COPYRIGHT_YEARS}", [The copyright years]) AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MAJOR,${VERSION_MAJOR}, [version major number]) AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MINOR,${VERSION_MINOR}, [version minor number]) AC_DEFINE_UNQUOTED(PACKAGE_VERSION_REVISION,${VERSION_REVISION}, [version revision number]) AC_DEFINE_UNQUOTED(PACKAGE, "ConsoleKit2", [The name of this package]) AC_SUBST(COPYRIGHT_MESSAGE) AC_SUBST(VERSION_MESSAGE) AC_SUBST(VERSION_MAJOR) AC_SUBST(VERSION_MINOR) AC_SUBST(VERSION_REVISION) AC_SUBST(COPYRIGHT_YEARS) AC_SUBST(PACKAGE) # Files AC_CONFIG_FILES([ Makefile src/Makefile tools/70-udev-acl.rules tools/Makefile tools/linux/Makefile tools/freebsd/Makefile tools/openbsd/Makefile tools/solaris/Makefile data/Makefile doc/Makefile doc/console-kit-daemon.1m doc/dbus/ConsoleKit.xml doc/dbus/Makefile libck-connector/Makefile libck-connector/ck-connector.pc pam-ck-connector/Makefile po/Makefile.in ]) AC_OUTPUT echo " ConsoleKit $VERSION ======================== prefix: ${prefix} exec_prefix: ${exec_prefix} libdir: ${libdir} bindir: ${bindir} sbindir: ${sbindir} sysconfdir: ${sysconfdir} localstatedir: ${localstatedir} rundir: ${RUNDIR} datadir: ${datadir} source code location: ${srcdir} compiler: ${CC} cflags: ${CFLAGS} debug cflags: ${DEBUG_CFLAGS} build tests: ${enable_tests} Base libs: ${CONSOLE_KIT_LIBS} Tools libs: ${TOOLS_LIBS} Maintainer mode: ${USE_MAINTAINER_MODE} dbus-1 system.d dir: ${DBUS_SYS_DIR} Build backend: ${CK_BACKEND} PAM module dir: ${PAM_MODULE_DIR} Build PAM module: ${msg_pam_module} Build udev-acl: ${enable_udev_acl} Build docs: ${enable_docbook_docs} xinitrc dir: ${XINITRC_DIR} PolicyKit support ${have_polkit} RBAC (Solaris) support: ${msg_rbac_shutdown} " if test x${have_polkit} = xno -a x${msg_rbac_shutdown} = xno; then echo "WARNING: PolicyKit and RBAC are disabled. You need to manually edit the ConsoleKit.conf" echo " file to lock down the service. Failure to do so may be" echo " a huge SECURITY HOLE. I repeat: YOU NEED TO EDIT THE FILE" echo " ConsoleKit.conf to match your distro/site to avoid NASTY SECURITY HOLES." echo "" fi