AC_INIT(library/gnome-keyring.h) AM_INIT_AUTOMAKE(gnome-keyring, 2.23.5) AM_CONFIG_HEADER(config.h) dnl **************************************************************************** dnl GP11 library libtool versioning GP11_MAJOR=0 # Increment for major version number, breaks old apps. GP11_REVISION=0 # Increment for internal changes, nothing affected. GP11_AGE=0 # Increment for interface that doesn't break anything dnl **************************************************************************** AM_SANITY_CHECK AM_MAINTAINER_MODE AC_GNU_SOURCE AC_C_CONST AC_ISC_POSIX AC_PROG_CC AC_PROG_CPP AM_PROG_CC_C_O AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_MAKE_SET AM_DISABLE_STATIC AM_PROG_LIBTOOL IT_PROG_INTLTOOL([0.35.0]) AC_PATH_PROG(PKG_CONFIG, pkg-config, no) LIB_GNOME_KEYRING_LT_VERSION=1:1:1 AC_SUBST(LIB_GNOME_KEYRING_LT_VERSION) AC_TYPE_PID_T AC_TYPE_SIGNAL AC_TYPE_SIZE_T AC_TYPE_UID_T GTK_DOC_CHECK DISTCHECK_CONFIGURE_FLAGS="--enable-gtk-doc" AC_SUBST(DISTCHECK_CONFIGURE_FLAGS) PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.16.0) AC_SUBST(GLIB_CFLAGS) AC_SUBST(GLIB_LIBS) PKG_CHECK_MODULES(GTHREAD, gthread-2.0 >= 2.8.0) AC_SUBST(GTHREAD_CFLAGS) AC_SUBST(GTHREAD_LIBS) PKG_CHECK_MODULES(GOBJECT, glib-2.0 >= 2.8.0 gobject-2.0 >= 2.8.0) AC_SUBST(GOBJECT_CFLAGS) AC_SUBST(GOBJECT_LIBS) PKG_CHECK_MODULES(GIO, glib-2.0 >= 2.8.0 gio-2.0) AC_SUBST(GIO_CFLAGS) AC_SUBST(GIO_LIBS) PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.6.0) AC_SUBST(GTK_CFLAGS) AC_SUBST(GTK_LIBS) AM_GCONF_SOURCE_2 PKG_CHECK_MODULES(GCONF, gconf-2.0) DAEMON_CFLAGS="$DAEMON_CFLAGS $GCONF_CFLAGS" DAEMON_LIBS="$DAEMON_LIBS $GCONF_LIBS" GETTEXT_PACKAGE=gnome-keyring AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [The gettext domain name]) AC_SUBST(GETTEXT_PACKAGE) AM_GLIB_GNU_GETTEXT AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal) # -------------------------------------------------------------------- # Debug mode AC_ARG_ENABLE(debug, AC_HELP_STRING([--enable-debug], [Compile binaries in debug mode])) if test "$enable_debug" = "yes"; then CFLAGS="$CFLAGS -g -O0 -Wall" AC_DEFINE_UNQUOTED(_DEBUG, 1, [In debug mode]) echo "enabling debug compile mode" debug_status="yes" else dnl AC_DEFINE_UNQUOTED(G_DISABLE_ASSERT, 1, [Disable glib assertions]) echo "disabling debug compile mode" debug_status="no" fi # -------------------------------------------------------------------- # Check for socklen_t # AC_MSG_CHECKING(whether socklen_t is defined) AC_TRY_COMPILE([ #include #include #include ],[ socklen_t foo; foo = 1; ],have_socklen_t=yes,have_socklen_t=no) AC_MSG_RESULT($have_socklen_t) if test "x$have_socklen_t" = "xyes"; then AC_DEFINE(HAVE_SOCKLEN_T,1,[Have socklen_t type]) fi # -------------------------------------------------------------------- # Check for various credentials. # AC_MSG_CHECKING(for struct cmsgcred) AC_TRY_COMPILE([ #include #include ],[ struct cmsgcred cred; cred.cmcred_pid = 0; ],have_struct_cmsgcred=yes,have_struct_cmsgcred=no) AC_MSG_RESULT($have_struct_cmsgcred) if test x$have_struct_cmsgcred = xyes; then AC_DEFINE(HAVE_CMSGCRED,1,[Have cmsgcred structure]) fi # -------------------------------------------------------------------- # Check for getpeerucred # AC_CHECK_FUNCS(getpeerucred, AC_DEFINE(HAVE_GETPEERUCRED,1,[Have getpeerucred])) # -------------------------------------------------------------------- # Check for getpeereid # AC_CHECK_FUNCS(getpeereid, AC_DEFINE(HAVE_GETPEEREID, 1, [Have getpeereid function])) # -------------------------------------------------------------------- # Check for flock # AC_CHECK_FUNCS(flock, AC_DEFINE(HAVE_FLOCK,1,[Have flock])) # -------------------------------------------------------------------- # Check for timegm # AC_CHECK_FUNCS(timegm, AC_DEFINE(HAVE_TIMEGM,1,[Have timegm])) dnl mkdtemp replacement from gettext AC_REPLACE_FUNCS(mkdtemp) AC_STAT_MACROS_BROKEN AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h, [AC_TRY_COMPILE( [#include #include ], [uintmax_t i = (uintmax_t) -1;], jm_ac_cv_header_inttypes_h=yes, jm_ac_cv_header_inttypes_h=no)]) if test $jm_ac_cv_header_inttypes_h = yes; then AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1, [Define if exists, doesn't clash with , and declares uintmax_t. ]) fi AC_CACHE_CHECK([for stdint.h], jm_ac_cv_header_stdint_h, [AC_TRY_COMPILE( [#include #include ], [uintmax_t i = (uintmax_t) -1;], jm_ac_cv_header_stdint_h=yes, jm_ac_cv_header_stdint_h=no)]) if test $jm_ac_cv_header_stdint_h = yes; then AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1, [Define if exists, doesn't clash with , and declares uintmax_t. ]) fi AC_CHECK_HEADERS(fcntl.h sys/time.h time.h unistd.h) AC_CHECK_FUNCS(gettimeofday fsync) # -------------------------------------------------------------------- # Memory locking # AC_CHECK_FUNCS(mlock) # -------------------------------------------------------------------- # socket() # AC_CHECK_LIB(socket, socket) have_socket=no AC_CHECK_FUNCS(socket, have_socket=yes) if test $have_socket = no; then # socket is not in the default libraries. See if it's in some other. for lib in bsd socket inet; do AC_CHECK_LIB($lib, socket, [ DAEMON_LIBS="$DAEMON_LIBS -l$lib" have_socket=yes AC_DEFINE(HAVE_SOCKET) break]) done fi # -------------------------------------------------------------------- # DBus Checks # DBUS_REQUIRED=1.0 PKG_CHECK_MODULES([DBUS], [dbus-1 >= $DBUS_REQUIRED], [enable_dbus=yes], [enable_dbus=no]) dbus_status=no if test "$enable_dbus" = "yes"; then AC_DEFINE_UNQUOTED(WITH_DBUS, 1, [Include DBus dependant code]) DBUS_VERSION=`$PKG_CONFIG --modversion dbus-1` DBUS_MAJOR_VERSION=`echo $DBUS_VERSION | cut -d. -f1` DBUS_MINOR_VERSION=`echo $DBUS_VERSION | cut -d. -f2` DBUS_MICRO_VERSION=`echo $DBUS_VERSION | cut -d. -f3` DBUS_CFLAGS="$DBUS_CFLAGS -DGKR_DBUS_MAJOR_VERSION=$DBUS_MAJOR_VERSION" DBUS_CFLAGS="$DBUS_CFLAGS -DGKR_DBUS_MINOR_VERSION=$DBUS_MINOR_VERSION" DBUS_CFLAGS="$DBUS_CFLAGS -DGKR_DBUS_MICRO_VERSION=$DBUS_MICRO_VERSION" DAEMON_CFLAGS="$DAEMON_CFLAGS $DBUS_CFLAGS" DAEMON_LIBS="$DAEMON_LIBS $DBUS_LIBS" LIBRARY_CFLAGS="$LIBRARY_CFLAGS $DBUS_CFLAGS" LIBRARY_LIBS="$LIBRARY_LIBS $DBUS_LIBS" AC_ARG_WITH(dbus-services, [AC_HELP_STRING([--with-dbus-services=], [where D-BUS session services directory is])]) if ! test -z "$with_dbus_services" ; then DBUS_SERVICES_DIR="$with_dbus_services" else DBUS_SERVICES_DIR="$datadir/dbus-1/services" fi AC_SUBST(DBUS_SERVICES_DIR) dbus_status=$DBUS_VERSION fi AM_CONDITIONAL(WITH_DBUS, test "$enable_dbus" == "yes") # -------------------------------------------------------------------- # HAL Checks HAL_REQUIRED=0.5.7 AC_ARG_ENABLE(hal, AC_HELP_STRING([--disable-hal], [Use HAL for keys on removable drives])) hal_status=no if test "$enable_hal" != "no"; then PKG_CHECK_MODULES(HAL, [hal >= $HAL_REQUIRED hal-storage >= $HAL_REQUIRED], [have_hal=yes], [have_hal=no]) if test "$enable_hal" = "yes" -a "$have_hal" = "no"; then AC_MSG_ERROR([could not find hal and hal-storage version >= $HAL_REQUIRED]) fi if test "$have_hal" = "yes"; then DAEMON_CFLAGS="$DAEMON_CFLAGS $HAL_CFLAGS" DAEMON_LIBS="$DAEMON_LIBS $HAL_LIBS" AC_DEFINE_UNQUOTED(WITH_HAL, 1, [Include HAL dependent code]) hal_status=yes fi fi AM_CONDITIONAL(WITH_HAL, test "$have_hal" = "yes") # -------------------------------------------------------------------- # PAM Checks AC_ARG_ENABLE(pam, AC_HELP_STRING([--disable-pam], [Build GNOME keyring PAM helper])) pam_status="no" if test "$enable_pam" != "no"; then AC_CHECK_HEADER(security/pam_modules.h, have_pam=yes, have_pam=no) if test "$enable_pam" = "yes" -a "$have_pam" = "no"; then AC_MSG_ERROR(The PAM headers are missing) elif test "$have_pam" = "yes"; then old_LIBS=$LIBS AC_CHECK_LIB(pam, pam_start, have_pam=yes, have_pam=no) if test "$enable_pam" = "yes" -a "$have_pam" = "no"; then AC_MSG_ERROR(The PAM library is missing) fi LIBS=$old_LIBS fi fi # -------------------------------------------------------------------- # Disable ACL Prompts AC_ARG_ENABLE(acl-prompts, AC_HELP_STRING([--disable-acl-prompts], [Disable prompted for user to give access to passwords])) if test "$enable_acl_prompts" != "no"; then AC_DEFINE(ENABLE_ACL_PROMPTS, 1, [Whether to prompt before giving access to passwords]) fi # -------------------------------------------------------------------- # PAM Module Directory AC_ARG_WITH([pam-dir], [AC_HELP_STRING([--with-pam-dir=DIR], [directory to install pam modules in])], [], [with_pam_dir="${prefix}/lib/security"]) PAM_DEST_DIR="$with_pam_dir" AC_SUBST(PAM_DEST_DIR) AM_CONDITIONAL(WITH_PAM, test "$have_pam" = "yes") if test "$have_pam" = "yes"; then pam_status="yes ($with_pam_dir)" fi # -------------------------------------------------------------------- # SSH Agent support # AC_ARG_ENABLE([ssh-agent], AC_HELP_STRING([--disable-ssh-agent], [Don't include SSH agent in gnome-keyring])) if test "$enable_ssh_agent" != "no"; then AC_DEFINE(WITH_SSH, 1, [Whether to build SSH agent or not]) ssh_status="yes" else ssh_status="no" fi AM_CONDITIONAL(WITH_SSH, test "$enable_ssh_agent" != "no") # -------------------------------------------------------------------- # Trusted Root Certificates Directory # AC_ARG_WITH([root-certs], [AC_HELP_STRING([--with-root-certs=DIR], [directory with trusted root certificates])]) root_status="none" if test -n "$with_root_certs"; then AC_DEFINE_UNQUOTED(ROOT_CERTIFICATES, "$with_root_certs", [Directory for trusted root certificates]) root_status="$with_root_certs" fi AM_CONDITIONAL(WITH_ROOT_CERTS, test -n "$with_root_certs") # -------------------------------------------------------------------- # Check for /dev/random # AC_CHECK_FILE(/dev/random, AC_DEFINE(HAVE_DEVRANDOM,1,[Have /dev/random])) # -------------------------------------------------------------------- # libgcrypt # GCRYPT_VERSION=1.2.2 GCRYPT_LIBVER=1 AM_PATH_LIBGCRYPT($GCRYPT_LIBVER:$GCRYPT_VERSION,, AC_MSG_ERROR([[ *** *** libgcrypt was not found. You may want to get it from *** ftp://ftp.gnupg.org/gcrypt/libgcrypt/ *** ]])) libgcrypt=yes AC_DEFINE_UNQUOTED(LIBGCRYPT_VERSION, "$GCRYPT_VERSION", [Version of GCRYPT we expect]) DAEMON_CFLAGS="$DAEMON_CFLAGS $LIBGCRYPT_CFLAGS" DAEMON_LIBS="$DAEMON_LIBS $LIBGCRYPT_LIBS" # ------------------------------------------------------------------- # libtasn1 # GKR_LIBTASN1_VERSION=0.3.4 AM_PATH_LIBTASN1($GKR_LIBTASN1_VERSION,, AC_MSG_ERROR([[ *** *** LibtASN1 ${GKR_LIBTASN1_VERSION} was not found. ]])) libtasn=yes AC_DEFINE_UNQUOTED(GKR_LIBGCRYPT_VERSION, "$GKR_LIBTASN1_VERSION", [Version of libtasn1 we expect]) DAEMON_CFLAGS="$DAEMON_CFLAGS $LIBTASN1_CFLAGS" DAEMON_LIBS="$DAEMON_LIBS $LIBTASN1_LIBS" dnl ========================================================================== dnl Turn on the additional warnings last, so -Werror doesn't affect other tests. AC_ARG_ENABLE(more-warnings, [ --enable-more-warnings Maximum compiler warnings], set_more_warnings="$enableval",[ if test -f $srcdir/CVSVERSION; then is_cvs_version=true set_more_warnings=yes else set_more_warnings=no fi ]) AC_MSG_CHECKING(for more warnings, including -Werror) 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 \ -Werror \ $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_TRY_COMPILE([], [], 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 # -------------------------------------------------------------------- # Tests and Unit Tests AC_ARG_ENABLE(tests, AC_HELP_STRING([--enable-tests], [Build test tools and unit tests])) if test "$enable_tests" == "yes"; then echo "building tests and unit tests" AC_DEFINE_UNQUOTED(WITH_TESTS, 1, [Build with unit test support]) tests_status="yes" else echo "not building tests and unit tests" tests_status="no" fi AM_CONDITIONAL(WITH_TESTS, test "$enable_tests" == "yes") AC_ARG_ENABLE(coverage, AC_HELP_STRING([--enable-coverage], [Build coverage testing into gnome-keyring])) if test "$enable_coverage" == "yes"; then CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage" LDFLAGS="$LDFLAGS -fprofile-arcs -ftest-coverage" fi # ---------------------------------------------------------------------- GP11_LT_RELEASE=$GP11_MAJOR:$GP11_REVISION:$GP11_AGE AC_SUBST(GP11_LT_RELEASE) AC_SUBST(GP11_MAJOR) AC_SUBST(DAEMON_CFLAGS) AC_SUBST(DAEMON_LIBS) AC_SUBST(LIBRARY_CFLAGS) AC_SUBST(LIBRARY_LIBS) AC_OUTPUT([ Makefile common/Makefile common/tests/Makefile daemon/Makefile daemon/data/Makefile daemon/keyrings/Makefile daemon/keyrings/tests/Makefile daemon/pk/Makefile daemon/pk/tests/Makefile daemon/pkcs11/Makefile daemon/pkix/Makefile daemon/pkix/tests/Makefile daemon/ssh/Makefile daemon/ssh/tests/Makefile daemon/ui/Makefile gp11/gp11.pc gp11/Makefile gp11/tests/Makefile library/Makefile library/tests/Makefile pam/Makefile pam/tests/Makefile pkcs11/Makefile po/Makefile.in reference/Makefile tests/Makefile library/gnome-keyring-1.pc library/gnome-keyring-1-uninstalled.pc ]) # # gp11/tests/module/Makefile # ------------------------------------------------------------------------------ # Summary # echo echo "OPTIONAL DEPENDENCIES" echo " PAM: $pam_status" echo " DBus: $dbus_status" echo " HAL: $hal_status" echo echo "CONFIGURATION" echo " SSH Agent: $ssh_status" echo " Root Certificates: $root_status" echo echo "BUILD" echo " Debug Build: $debug_status" echo " Unit Tests: $tests_status" echo