From 6ac45a92c040e6864e0d784421e5ad52fa39ee28 Mon Sep 17 00:00:00 2001
From: Stephen Gallagher <sgallagh@redhat.com>
Date: Tue, 17 Aug 2010 12:39:45 -0400
Subject: [PATCH 2/3] Rewrite toplevel Makefile

There is no longer a need to have nested Makefiles and configure
scripts. This patch combines the src/ Makefile and configure.ac
into the root.
---
 Makefile.am                          | 1043 +++++++++++++++++++++++++++++++++-
 configure.ac                         |  164 ++++++-
 {src/po => po}/LINGUAS               |    0
 {src/po => po}/Makevars              |    0
 po/POTFILES.in                       |   23 +
 {src/po => po}/de.po                 |    0
 {src/po => po}/es.po                 |    0
 {src/po => po}/fr.po                 |    0
 {src/po => po}/id.po                 |    0
 {src/po => po}/it.po                 |    0
 {src/po => po}/ja.po                 |    0
 {src/po => po}/nl.po                 |    0
 {src/po => po}/pl.po                 |    0
 {src/po => po}/pt.po                 |    0
 {src/po => po}/ru.po                 |    0
 src/po/sss_daemon.pot => po/sssd.pot |    0
 {src/po => po}/sv.po                 |    0
 {src/po => po}/uk.po                 |    0
 {src/po => po}/zh_TW.po              |    0
 src/config/SSSDConfigTest.py         |    2 +-
 src/external/libcollection.m4        |   18 +-
 src/external/libdhash.m4             |   18 +-
 src/external/libini_config.m4        |   18 +-
 src/po/POTFILES.in                   |   23 -
 24 files changed, 1237 insertions(+), 72 deletions(-)
 rename {src/po => po}/LINGUAS (100%)
 rename {src/po => po}/Makevars (100%)
 create mode 100644 po/POTFILES.in
 rename {src/po => po}/de.po (100%)
 rename {src/po => po}/es.po (100%)
 rename {src/po => po}/fr.po (100%)
 rename {src/po => po}/id.po (100%)
 rename {src/po => po}/it.po (100%)
 rename {src/po => po}/ja.po (100%)
 rename {src/po => po}/nl.po (100%)
 rename {src/po => po}/pl.po (100%)
 rename {src/po => po}/pt.po (100%)
 rename {src/po => po}/ru.po (100%)
 rename src/po/sss_daemon.pot => po/sssd.pot (100%)
 rename {src/po => po}/sv.po (100%)
 rename {src/po => po}/uk.po (100%)
 rename {src/po => po}/zh_TW.po (100%)
 delete mode 100644 src/po/POTFILES.in

diff --git a/Makefile.am b/Makefile.am
index eb4e01b37e2577fe679619817cf7375f04c8e46f..30a07e6f0347f8b3b9a63db6e98378d32898275b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,13 +1,1039 @@
-SUBDIRS = src
-
 DISTCHECK_CONFIGURE_FLAGS = --with-ldb-lib-dir="$$dc_install_base"/lib/ldb
 
-RPMBUILD ?= $(PWD)/rpmbuild
+SUBDIRS = po
 
-#Some old versions of automake don't define builddir
+# Some old versions of automake don't define builddir
 builddir ?= .
 
+DOXYGEN = @DOXYGEN@
+
+DISTSETUPOPTS =
+if HAVE_DEBIAN
+DISTSETUPOPTS += --install-layout=deb
+endif
+
+sssdlibexecdir = $(libexecdir)/sssd
+sssdlibdir = $(libdir)/sssd
+ldblibdir = @ldblibdir@
+if BUILD_KRB5_LOCATOR_PLUGIN
+krb5plugindir = @krb5pluginpath@
+endif
+sssdconfdir = $(sysconfdir)/sssd
+sssdapiplugindir = $(sssdconfdir)/sssd.api.d
+dbusintrospectdir = $(datarootdir)/sssd/introspect
+dbuspolicydir = $(sysconfdir)/dbus-1/system.d
+localedir = @localedir@
+nsslibdir = @nsslibdir@
+pamlibdir = $(nsslibdir)/security
+
+dbpath = @dbpath@
+pluginpath = @pluginpath@
+pidpath = @pidpath@
+pipepath = @pipepath@
+initdir = @initdir@
+logpath = @logpath@
+pubconfpath = @pubconfpath@
+
+AM_CFLAGS =
+if WANT_AUX_INFO
+    AM_CFLAGS += -aux-info $@.X
+endif
+if HAVE_GCC
+    AM_CFLAGS += -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith \
+                 -Wcast-qual -Wcast-align -Wwrite-strings \
+                 -Werror-implicit-function-declaration
+endif
+
+ACLOCAL_AMFLAGS = -I m4 -I .
+
+sbin_PROGRAMS = \
+    sssd \
+    sss_useradd \
+    sss_userdel \
+    sss_groupadd \
+    sss_groupdel \
+    sss_usermod \
+    sss_groupmod \
+    sss_groupshow
+
+sssdlibexec_PROGRAMS = \
+    sssd_nss \
+    sssd_pam \
+    sssd_be \
+    krb5_child \
+    ldap_child \
+    proxy_child
+
+dist_sssdlibexec_SCRIPTS = \
+    src/config/upgrade_config.py
+
+if HAVE_CHECK
+    non_interactive_check_based_tests = \
+        sysdb-tests \
+        strtonum-tests \
+        resolv-tests \
+        krb5-utils-tests \
+        check_and_open-tests \
+        ipa_timerules-tests \
+        files-tests \
+        refcount-tests \
+        fail_over-tests \
+        find_uid-tests \
+        auth-tests \
+        ipa_ldap_opt-tests \
+        simple_access-tests \
+        util-tests
+endif
+
+check_PROGRAMS = \
+    stress-tests \
+    $(non_interactive_check_based_tests)
+
+TESTS = \
+    $(srcdir)/src/config/SSSDConfigTest.py \
+    $(non_interactive_check_based_tests)
+
+sssdlib_LTLIBRARIES = \
+    libsss_ldap.la \
+    libsss_krb5.la \
+    libsss_proxy.la \
+    libsss_ipa.la \
+    libsss_simple.la
+
+ldblib_LTLIBRARIES = \
+    memberof.la
+
+if BUILD_KRB5_LOCATOR_PLUGIN
+krb5plugin_LTLIBRARIES = \
+    sssd_krb5_locator_plugin.la
+endif
+
+noinst_LTLIBRARIES = \
+    libsss_crypt.la
+
+if HAVE_NSS
+    SSS_CRYPT_SOURCES = src/util/nss_sha512crypt.c
+    SSS_CRYPT_CFLAGS = $(NSS_CFLAGS)
+    SSS_CRYPT_LIBS = $(NSS_LIBS)
+else
+    SSS_CRYPT_SOURCES = src/util/crypto_sha512crypt.c
+    SSS_CRYPT_CFLAGS = $(CRYPTO_CFLAGS)
+    SSS_CRYPT_LIBS = $(CRYPTO_LIBS)
+endif
+
+libsss_crypt_la_SOURCES = \
+    $(SSS_CRYPT_SOURCES)
+libsss_crypt_la_CFLAGS = \
+    $(SSS_CRYPT_CFLAGS)
+libsss_crypt_la_LIBADD = \
+    $(SSS_CRYPT_LIBS)
+
+if BUILD_PYTHON_BINDINGS
+pyexec_LTLIBRARIES = \
+    pysss.la
+endif
+
+dist_noinst_SCRIPTS = \
+    $(EXTRA_SCRIPTS) \
+    src/config/setup.py \
+    src/config/ipachangeconf.py \
+    src/config/SSSDConfig.py \
+    src/config/SSSDConfigTest.py
+
 dist_noinst_DATA = \
+    src/config/testconfigs/sssd-valid.conf \
+    src/config/testconfigs/noparse.api.conf \
+    src/config/testconfigs/sssd-noversion.conf \
+    src/config/testconfigs/sssd-badversion.conf \
+    src/config/testconfigs/sssd-invalid.conf \
+    src/config/testconfigs/sssd-invalid-badbool.conf
+
+###############################
+# Global compilation settings #
+###############################
+
+AM_CPPFLAGS = \
+    -Wall \
+    -Iinclude \
+    -I.. \
+    -I$(srcdir)/include \
+    -I$(srcdir)/src/sss_client \
+    -I$(srcdir)/src \
+    -Iinclude \
+    -I. \
+    $(POPT_CFLAGS) \
+    $(TALLOC_CFLAGS) \
+    $(TDB_CFLAGS) \
+    $(TEVENT_CFLAGS) \
+    $(LDB_CFLAGS) \
+    $(DBUS_CFLAGS) \
+    $(PCRE_CFLAGS) \
+    $(COLLECTION_CFLAGS) \
+    $(INI_CONFIG_CFLAGS) \
+    $(DHASH_CFLAGS) \
+    $(LIBNL_CFLAGS) \
+    -DLIBDIR=\"$(libdir)\" \
+    -DVARDIR=\"$(localstatedir)\" \
+    -DSHLIBEXT=\"$(SHLIBEXT)\" \
+    -DSSSD_LIBEXEC_PATH=\"$(sssdlibexecdir)\" \
+    -DSSSD_INTROSPECT_PATH=\"$(dbusinstropectdir)\" \
+    -DSSSD_CONF_DIR=\"$(sssdconfdir)\" \
+    -DSSS_NSS_SOCKET_NAME=\"$(pipepath)/nss\" \
+    -DSSS_PAM_SOCKET_NAME=\"$(pipepath)/pam\" \
+    -DSSS_PAM_PRIV_SOCKET_NAME=\"$(pipepath)/private/pam\" \
+    -DUSE_MMAP=1 \
+    -DTEVENT_DEPRECATED=1\
+    -DLOCALEDIR=\"$(localedir)\"
+
+EXTRA_DIST = build/config.rpath
+
+SSSD_DEBUG_OBJ = \
+    src/util/debug.c \
+    src/util/sss_log.c
+
+SSSD_UTIL_OBJ = \
+    src/confdb/confdb.c \
+    src/db/sysdb.c \
+    src/db/sysdb_ops.c \
+    src/db/sysdb_search.c \
+    src/monitor/monitor_sbus.c \
+    src/providers/dp_auth_util.c \
+    src/providers/dp_pam_data_util.c \
+    src/providers/dp_sbus.c \
+    src/sbus/sbus_client.c \
+    src/sbus/sssd_dbus_common.c \
+    src/sbus/sssd_dbus_connection.c \
+    src/sbus/sssd_dbus_server.c \
+    src/util/util.c \
+    src/util/memory.c \
+    src/util/server.c \
+    src/util/signal.c \
+    src/util/usertools.c \
+    src/util/backup_file.c \
+    src/util/strtonum.c \
+    src/util/check_and_open.c \
+    src/util/refcount.c \
+    $(SSSD_DEBUG_OBJ)
+
+SSSD_RESPONDER_OBJ = \
+    src/responder/common/negcache.c \
+    src/responder/common/responder_cmd.c \
+    src/responder/common/responder_common.c \
+    src/responder/common/responder_dp.c \
+    src/responder/common/responder_packet.c
+
+SSSD_TOOLS_OBJ = \
+    src/tools/sss_sync_ops.c \
+    src/tools/tools_util.c \
+    src/tools/files.c \
+    src/tools/selinux.c \
+    src/tools/nscd.c
+
+SSSD_RESOLV_OBJ = \
+    src/resolv/async_resolv.c
+if BUILD_ARES_DATA
+    SSSD_RESOLV_OBJ += \
+    src/resolv/ares/ares_parse_srv_reply.c \
+    src/resolv/ares/ares_data.c
+endif
+
+SSSD_FAILOVER_OBJ = \
+    src/providers/fail_over.c \
+    $(SSSD_RESOLV_OBJ)
+
+SSSD_LIBS = \
+    $(TALLOC_LIBS) \
+    $(TEVENT_LIBS) \
+    $(POPT_LIBS) \
+    $(LDB_LIBS) \
+    $(DBUS_LIBS) \
+    $(PCRE_LIBS) \
+    $(INI_CONFIG_LIBS) \
+    $(COLLECTION_LIBS) \
+    $(DHASH_LIBS) \
+    $(SSS_CRYPT_LIBS) \
+    libsss_crypt.la
+
+PYTHON_BINDINGS_LIBS = \
+    $(TALLOC_LIBS) \
+    $(TEVENT_LIBS) \
+    $(POPT_LIBS) \
+    $(LDB_LIBS) \
+    $(DBUS_LIBS) \
+    $(PCRE_LIBS) \
+    $(SSS_CRYPT_LIBS) \
+    libsss_crypt.la
+
+TOOLS_LIBS = \
+    $(TALLOC_LIBS) \
+    $(TEVENT_LIBS) \
+    $(POPT_LIBS) \
+    $(LDB_LIBS) \
+    $(DBUS_LIBS) \
+    $(PCRE_LIBS) \
+    $(INI_CONFIG_LIBS) \
+    $(COLLECTION_LIBS) \
+    $(DHASH_LIBS) \
+    libsss_crypt.la
+
+if BUILD_SELINUX
+    TOOLS_LIBS += $(SELINUX_LIBS)
+endif
+if BUILD_SEMANAGE
+    TOOLS_LIBS += $(SEMANAGE_LIBS)
+endif
+
+dist_noinst_HEADERS = \
+    src/monitor/monitor.h \
+    src/util/sha512crypt.h \
+    src/util/dlinklist.h \
+    src/util/util.h \
+    src/util/strtonum.h \
+    src/util/sss_ldap.h \
+    src/util/sss_krb5.h \
+    src/util/refcount.h \
+    src/util/find_uid.h \
+    src/util/user_info_msg.h \
+    src/monitor/monitor.h \
+    src/monitor/monitor_interfaces.h \
+    src/responder/common/responder.h \
+    src/responder/common/responder_packet.h \
+    src/responder/pam/pamsrv.h \
+    src/responder/nss/nsssrv.h \
+    src/responder/common/negcache.h \
+    src/sbus/sbus_client.h \
+    src/sbus/sssd_dbus.h \
+    src/sbus/sssd_dbus_private.h \
+    src/db/sysdb.h \
+    src/db/sysdb_private.h \
+    src/confdb/confdb.h \
+    src/confdb/confdb_private.h \
+    src/confdb/confdb_setup.h \
+    src/providers/data_provider.h \
+    src/providers/dp_backend.h \
+    src/providers/fail_over.h \
+    src/providers/providers.h \
+    src/providers/child_common.h \
+    src/providers/simple/simple_access.h \
+    src/providers/krb5/krb5_auth.h \
+    src/providers/krb5/krb5_common.h \
+    src/providers/krb5/krb5_utils.h \
+    src/providers/ldap/ldap_common.h \
+    src/providers/ldap/sdap.h \
+    src/providers/ldap/sdap_access.h \
+    src/providers/ldap/sdap_async.h \
+    src/providers/ldap/sdap_async_private.h \
+    src/providers/ldap/sdap_id_op.h \
+    src/providers/ipa/ipa_common.h \
+    src/providers/ipa/ipa_access.h \
+    src/providers/ipa/ipa_timerules.h \
+    src/providers/ipa/ipa_auth.h \
+    src/providers/ipa/ipa_dyndns.h \
+    src/providers/proxy/proxy.h \
+    src/tools/tools_util.h \
+    src/tools/sss_sync_ops.h \
+    src/resolv/async_resolv.h \
+    src/resolv/ares/ares_parse_srv_reply.h \
+    src/resolv/ares/ares_parse_txt_reply.h \
+    src/resolv/ares/ares_data.h \
+    src/tests/common.h
+
+
+####################
+# Program Binaries #
+####################
+sssd_SOURCES = \
+    src/monitor/monitor.c \
+    src/monitor/monitor_netlink.c \
+    src/confdb/confdb_setup.c \
+    $(SSSD_UTIL_OBJ)
+sssd_LDADD = \
+    $(SSSD_LIBS) \
+    $(LIBNL_LIBS)
+
+sssd_nss_SOURCES = \
+    src/responder/nss/nsssrv.c \
+    src/responder/nss/nsssrv_cmd.c \
+    $(SSSD_UTIL_OBJ) \
+    $(SSSD_RESPONDER_OBJ)
+sssd_nss_LDADD = \
+    $(TDB_LIBS) \
+    $(SSSD_LIBS)
+
+sssd_pam_SOURCES = \
+    src/responder/pam/pam_LOCAL_domain.c \
+    src/responder/pam/pamsrv.c \
+    src/responder/pam/pamsrv_cmd.c \
+    src/responder/pam/pamsrv_dp.c \
+    $(SSSD_UTIL_OBJ) \
+    $(SSSD_RESPONDER_OBJ)
+sssd_pam_LDADD = \
+    $(TDB_LIBS) \
+    $(SSSD_LIBS)
+
+sssd_be_SOURCES = \
+    src/providers/data_provider_be.c \
+    src/providers/data_provider_fo.c \
+    src/providers/data_provider_opts.c \
+    src/providers/data_provider_callbacks.c \
+    $(SSSD_FAILOVER_OBJ) \
+    $(SSSD_UTIL_OBJ)
+sssd_be_LDADD = $(SSSD_LIBS) $(CARES_LIBS)
+sssd_be_LDFLAGS = \
+    -Wl,--version-script,$(srcdir)/src/providers/sssd_be.exports \
+    -export-dynamic
+
+dist_noinst_DATA += \
+    src/examples/sssd.conf \
+    src/examples/sssdproxytest \
+    src/examples/sudo \
+    src/examples/logrotate \
+    src/providers/sssd_be.exports \
+    src/sss_client/COPYING \
+    src/sss_client/COPYING.LESSER \
+    src/m4
+
+######################
+# Command-line Tools #
+######################
+sss_useradd_SOURCES = \
+    src/tools/sss_useradd.c \
+    $(SSSD_UTIL_OBJ) \
+    $(SSSD_TOOLS_OBJ)
+sss_useradd_LDADD = \
+    $(TOOLS_LIBS)
+
+sss_userdel_SOURCES = \
+    src/tools/sss_userdel.c \
+    src/util/find_uid.c \
+    $(SSSD_UTIL_OBJ) \
+    $(SSSD_TOOLS_OBJ)
+sss_userdel_LDADD = \
+    $(TOOLS_LIBS)
+
+sss_groupadd_SOURCES = \
+    src/tools/sss_groupadd.c \
+    $(SSSD_UTIL_OBJ) \
+    $(SSSD_TOOLS_OBJ)
+sss_groupadd_LDADD = \
+    $(TOOLS_LIBS)
+
+sss_groupdel_SOURCES = \
+    src/tools/sss_groupdel.c \
+    $(SSSD_UTIL_OBJ) \
+    $(SSSD_TOOLS_OBJ)
+sss_groupdel_LDADD = \
+    $(TOOLS_LIBS)
+
+sss_usermod_SOURCES = \
+    src/tools/sss_usermod.c \
+    $(SSSD_UTIL_OBJ) \
+    $(SSSD_TOOLS_OBJ)
+sss_usermod_LDADD = \
+    $(TOOLS_LIBS)
+
+sss_groupmod_SOURCES = \
+    src/tools/sss_groupmod.c \
+    $(SSSD_UTIL_OBJ) \
+    $(SSSD_TOOLS_OBJ)
+sss_groupmod_LDADD = \
+    $(TOOLS_LIBS)
+
+sss_groupshow_SOURCES = \
+    src/tools/sss_groupshow.c \
+    $(SSSD_UTIL_OBJ) \
+    $(SSSD_TOOLS_OBJ)
+sss_groupshow_LDADD = \
+    $(TOOLS_LIBS)
+
+#################
+# Feature Tests #
+#################
+noinst_LTLIBRARIES += \
+    libsss_test_common.la
+
+libsss_test_common_la_SOURCES = \
+    src/tests/common.c
+
+if HAVE_CHECK
+libsss_test_common_la_SOURCES += \
+    src/tests/common_check.c
+
+sysdb_tests_DEPENDENCIES = \
+    $(ldblib_LTLIBRARIES)
+sysdb_tests_SOURCES = \
+    src/tests/sysdb-tests.c \
+    $(SSSD_UTIL_OBJ)
+sysdb_tests_CFLAGS = \
+    -DSYSDB_TEST \
+    $(AM_CFLAGS) \
+    $(CHECK_CFLAGS)
+sysdb_tests_LDADD = \
+    $(SSSD_LIBS) \
+    $(CHECK_LIBS) \
+    libsss_test_common.la
+
+strtonum_tests_SOURCES = \
+    src/tests/strtonum-tests.c \
+    src/util/debug.c \
+    src/util/strtonum.c
+strtonum_tests_CFLAGS = \
+    $(AM_CFLAGS) \
+    $(CHECK_CFLAGS)
+strtonum_tests_LDADD = \
+    $(SSSD_LIBS) \
+    $(CHECK_LIBS) \
+    libsss_test_common.la
+
+krb5_utils_tests_SOURCES = \
+    src/tests/krb5_utils-tests.c \
+    src/providers/krb5/krb5_utils.c \
+    src/providers/krb5/krb5_common.c \
+    src/providers/data_provider_fo.c \
+    src/providers/data_provider_opts.c \
+    src/providers/data_provider_callbacks.c \
+    $(SSSD_FAILOVER_OBJ) \
+    $(SSSD_UTIL_OBJ)
+krb5_utils_tests_CFLAGS = \
+    $(AM_CFLAGS) \
+    $(CHECK_CFLAGS)
+krb5_utils_tests_LDADD = \
+    $(SSSD_LIBS)\
+    $(CARES_LIBS) \
+    $(CHECK_LIBS) \
+    libsss_test_common.la
+
+
+check_and_open_tests_SOURCES = \
+    $(SSSD_DEBUG_OBJ) \
+    src/tests/check_and_open-tests.c \
+    src/util/check_and_open.c
+check_and_open_tests_CFLAGS = \
+    $(AM_CFLAGS) \
+    $(CHECK_CFLAGS)
+check_and_open_tests_LDADD = \
+    $(CHECK_LIBS) \
+    libsss_test_common.la
+
+FILES_TESTS_LIBS = \
+    $(CHECK_LIBS) \
+    $(POPT_LIBS) \
+    $(TALLOC_LIBS) \
+    libsss_test_common.la
+if BUILD_SELINUX
+    FILES_TESTS_LIBS += $(SELINUX_LIBS)
+endif
+if BUILD_SEMANAGE
+    FILES_TESTS_LIBS += $(SEMANAGE_LIBS)
+endif
+
+files_tests_SOURCES = \
+    $(SSSD_DEBUG_OBJ) \
+    src/tests/files-tests.c \
+    src/util/check_and_open.c \
+    src/tools/selinux.c \
+    src/tools/files.c
+files_tests_CFLAGS = \
+    $(AM_CFLAGS) \
+    $(CHECK_CFLAGS)
+files_tests_LDADD = \
+    $(FILES_TESTS_LIBS) \
+    libsss_test_common.la
+
+SSSD_RESOLV_TESTS_OBJ = \
+    $(SSSD_RESOLV_OBJ)
+if BUILD_ARES_DATA
+    SSSD_RESOLV_TESTS_OBJ += \
+    src/resolv/ares/ares_parse_txt_reply.c
+endif
+
+resolv_tests_SOURCES = \
+    src/tests/resolv-tests.c \
+    $(SSSD_UTIL_OBJ) \
+    $(SSSD_RESOLV_TESTS_OBJ)
+resolv_tests_CFLAGS = \
+    $(AM_CFLAGS) \
+    $(CHECK_CFLAGS) \
+    -DBUILD_TXT
+resolv_tests_LDADD = \
+    $(SSSD_LIBS) \
+    $(CHECK_LIBS) \
+    $(CARES_LIBS) \
+    libsss_test_common.la
+
+refcount_tests_SOURCES = \
+    src/tests/refcount-tests.c \
+    $(CHECK_OBJ) \
+    $(SSSD_UTIL_OBJ)
+refcount_tests_CFLAGS = \
+    $(CHECK_CFLAGS)
+refcount_tests_LDADD = \
+    $(SSSD_LIBS) \
+    $(CHECK_LIBS) \
+    libsss_test_common.la
+
+fail_over_tests_SOURCES = \
+    src/tests/fail_over-tests.c \
+    $(SSSD_FAILOVER_OBJ) \
+    $(CHECK_OBJ) \
+    $(SSSD_UTIL_OBJ)
+fail_over_tests_CFLAGS = \
+    $(CHECK_CFLAGS)
+fail_over_tests_LDADD = \
+    $(SSSD_LIBS) \
+    $(CHECK_LIBS) \
+    $(CARES_LIBS) \
+    libsss_test_common.la
+
+ipa_timerules_tests_SOURCES = \
+    src/providers/ipa/ipa_timerules.c \
+    src/tests/ipa_timerules-tests.c \
+    $(SSSD_DEBUG_OBJ)
+ipa_timerules_tests_CFLAGS = \
+    $(AM_CFLAGS) \
+    $(POPT_CFLAGS) \
+    $(TALLOC_CFLAGS) \
+    $(PCRE_CFLAGS) \
+    $(CHECK_CFLAGS)
+ipa_timerules_tests_LDADD = \
+    $(POPT_LIBS) \
+    $(PCRE_LIBS) \
+    $(TALLOC_LIBS) \
+    $(CHECK_LIBS) \
+    libsss_test_common.la
+
+find_uid_tests_SOURCES = \
+    src/tests/find_uid-tests.c \
+    src/util/find_uid.c \
+    $(SSSD_DEBUG_OBJ)
+find_uid_tests_CFLAGS = \
+    $(AM_CFLAGS) \
+    $(TALLOC_CFLAGS) \
+    $(DHASH_CFLAGS) \
+    $(CHECK_CFLAGS)
+find_uid_tests_LDADD = \
+    $(TALLOC_LIBS) \
+    $(DHASH_LIBS) \
+    $(CHECK_LIBS) \
+    libsss_test_common.la
+
+auth_tests_SOURCES = \
+    src/tests/auth-tests.c \
+    $(SSSD_UTIL_OBJ)
+auth_tests_CFLAGS = \
+    $(AM_CFLAGS) \
+    $(CHECK_CFLAGS)
+auth_tests_LDADD = \
+    $(SSSD_LIBS) \
+    $(CHECK_LIBS) \
+    libsss_test_common.la
+
+ipa_ldap_opt_tests_SOURCES = \
+    src/providers/ipa/ipa_utils.c \
+    src/tests/ipa_ldap_opt-tests.c
+ipa_ldap_opt_tests_CFLAGS = \
+    $(AM_CFLAGS) \
+    $(CHECK_CFLAGS)
+ipa_ldap_opt_tests_LDADD = \
+    $(CHECK_LIBS) \
+    $(TALLOC_LIBS) \
+    libsss_test_common.la
+
+simple_access_tests_SOURCES = \
+    src/tests/simple_access-tests.c \
+    src/providers/simple/simple_access.c \
+    $(SSSD_UTIL_OBJ)
+simple_access_tests_CFLAGS = \
+    $(AM_CFLAGS) \
+    $(CHECK_CFLAGS)
+simple_access_tests_LDADD = \
+    $(SSSD_LIBS) \
+    $(CHECK_LIBS)
+
+util_tests_SOURCES = \
+    src/tests/util-tests.c \
+    $(SSSD_UTIL_OBJ)
+util_tests_CFLAGS = \
+    $(AM_CFLAGS) \
+    $(CHECK_CFLAGS)
+util_tests_LDADD = \
+    $(SSSD_LIBS) \
+    $(CHECK_LIBS) \
+    libsss_test_common.la
+
+endif
+
+stress_tests_SOURCES = \
+    src/tests/stress-tests.c \
+    $(SSSD_UTIL_OBJ)
+stress_tests_LDADD = \
+    $(SSSD_LIBS) \
+    libsss_test_common.la
+
+noinst_PROGRAMS = pam_test_client
+pam_test_client_SOURCES = src/sss_client/pam_test_client.c
+pam_test_client_LDFLAGS = -lpam -lpam_misc
+
+####################
+# Client Libraries #
+####################
+
+nsslib_LTLIBRARIES = libnss_sss.la
+libnss_sss_la_SOURCES = \
+    src/sss_client/common.c \
+    src/sss_client/passwd.c \
+    src/sss_client/group.c \
+    src/sss_client/sss_cli.h
+libnss_sss_la_LDFLAGS = \
+    -module \
+    -version-info 2:0:0 \
+    -Wl,--version-script,$(srcdir)/src/sss_client/sss_nss.exports
+
+pamlib_LTLIBRARIES = pam_sss.la
+pam_sss_la_SOURCES = \
+    src/sss_client/pam_sss.c \
+    src/sss_client/common.c \
+    src/sss_client/sss_cli.h \
+    src/sss_client/sss_pam_macros.h
+
+pam_sss_la_LDFLAGS = \
+    -lpam \
+    -module \
+    -avoid-version \
+    -Wl,--version-script,$(srcdir)/src/sss_client/sss_pam.exports
+
+dist_noinst_DATA += \
+    src/sss_client/sss_nss.exports \
+    src/sss_client/sss_pam.exports
+
+####################
+# Plugin Libraries #
+####################
+libsss_ldap_la_SOURCES = \
+    src/util/find_uid.c \
+    src/providers/child_common.c \
+    src/providers/ldap/ldap_id.c \
+    src/providers/ldap/ldap_id_enum.c \
+    src/providers/ldap/ldap_id_cleanup.c \
+    src/providers/ldap/sdap_access.c \
+    src/providers/ldap/ldap_auth.c \
+    src/providers/ldap/ldap_init.c \
+    src/providers/ldap/ldap_common.c \
+    src/providers/ldap/sdap_async.c \
+    src/providers/ldap/sdap_async_accounts.c \
+    src/providers/ldap/sdap_async_connection.c \
+    src/providers/ldap/sdap_child_helpers.c \
+    src/providers/ldap/sdap_fd_events.c \
+    src/providers/ldap/sdap_id_op.c \
+    src/providers/ldap/sdap.c \
+    src/util/user_info_msg.c \
+    src/util/sss_ldap.c \
+    src/util/sss_krb5.c
+libsss_ldap_la_CFLAGS = \
+    $(AM_CFLAGS) \
+    $(LDAP_CFLAGS) \
+    $(KRB5_CFLAGS)
+libsss_ldap_la_LIBADD = \
+    $(OPENLDAP_LIBS) \
+    $(DHASH_LIBS) \
+    $(KRB5_LIBS)
+libsss_ldap_la_LDFLAGS = \
+    -version-info 1:0:0 \
+    -module
+
+libsss_proxy_la_SOURCES = \
+    src/providers/proxy/proxy_common.c \
+    src/providers/proxy/proxy_init.c \
+    src/providers/proxy/proxy_id.c \
+    src/providers/proxy/proxy_auth.c
+libsss_proxy_la_CFLAGS = \
+    $(AM_CFLAGS)
+libsss_proxy_la_LIBADD = \
+    $(PAM_LIBS)
+libsss_proxy_la_LDFLAGS = \
+    -version-info 1:0:0 \
+    -module
+
+libsss_simple_la_SOURCES = \
+    src/providers/simple/simple_access.c
+libsss_simple_la_CFLAGS = \
+    $(AM_CFLAGS)
+libsss_simple_la_LIBADD = \
+    $(PAM_LIBS)
+libsss_simple_la_LDFLAGS = \
+    -version-info 1:0:0 \
+    -module
+
+libsss_krb5_la_SOURCES = \
+    src/util/find_uid.c \
+    src/providers/child_common.c \
+    src/providers/krb5/krb5_utils.c \
+    src/providers/krb5/krb5_become_user.c \
+    src/providers/krb5/krb5_delayed_online_authentication.c \
+    src/providers/krb5/krb5_auth.c \
+    src/providers/krb5/krb5_common.c \
+    src/providers/krb5/krb5_init.c \
+    src/util/sss_krb5.c
+libsss_krb5_la_CFLAGS = \
+    $(AM_CFLAGS) \
+    $(DHASH_CFLAGS)
+libsss_krb5_la_LIBADD = \
+    $(DHASH_LIBS) \
+    $(KEYUTILS_LIBS) \
+    $(KRB5_LIBS)
+libsss_krb5_la_LDFLAGS = \
+    -version-info 1:0:0 \
+    -module
+
+libsss_ipa_la_SOURCES = \
+    src/providers/child_common.c \
+    src/providers/ipa/ipa_init.c \
+    src/providers/ipa/ipa_common.c \
+    src/providers/ipa/ipa_utils.c \
+    src/providers/ipa/ipa_auth.c \
+    src/providers/ipa/ipa_access.c \
+    src/providers/ipa/ipa_timerules.c \
+    src/providers/ipa/ipa_dyndns.c \
+    src/providers/ldap/ldap_id.c \
+    src/providers/ldap/ldap_id_enum.c \
+    src/providers/ldap/ldap_id_cleanup.c \
+    src/providers/ldap/ldap_auth.c \
+    src/providers/ldap/ldap_common.c \
+    src/providers/ldap/sdap_async.c \
+    src/providers/ldap/sdap_async_accounts.c \
+    src/providers/ldap/sdap_async_connection.c \
+    src/providers/ldap/sdap_child_helpers.c \
+    src/providers/ldap/sdap_fd_events.c \
+    src/providers/ldap/sdap_id_op.c \
+    src/providers/ldap/sdap.c \
+    src/util/user_info_msg.c \
+    src/util/sss_ldap.c \
+    src/util/sss_krb5.c \
+    src/util/find_uid.c \
+    src/providers/krb5/krb5_utils.c \
+    src/providers/krb5/krb5_become_user.c \
+    src/providers/krb5/krb5_delayed_online_authentication.c \
+    src/providers/krb5/krb5_common.c \
+    src/providers/krb5/krb5_auth.c
+libsss_ipa_la_CFLAGS = \
+    $(AM_CFLAGS) \
+    $(LDAP_CFLAGS) \
+    $(DHASH_CFLAGS) \
+    $(KRB5_CFLAGS)
+libsss_ipa_la_LIBADD = \
+    $(OPENLDAP_LIBS) \
+    $(DHASH_LIBS) \
+    $(KEYUTILS_LIBS) \
+    $(KRB5_LIBS)
+libsss_ipa_la_LDFLAGS = \
+    -version-info 1:0:0 \
+    -module
+
+krb5_child_SOURCES = \
+    $(SSSD_DEBUG_OBJ) \
+    src/providers/krb5/krb5_become_user.c \
+    src/providers/krb5/krb5_child.c \
+    src/providers/child_common.c \
+    src/providers/dp_pam_data_util.c \
+    src/util/user_info_msg.c \
+    src/util/sss_krb5.c
+krb5_child_CFLAGS = \
+    $(AM_CFLAGS) \
+    $(POPT_CFLAGS) \
+    $(KRB5_CFLAGS)
+krb5_child_LDADD = \
+    $(TALLOC_LIBS) \
+    $(TEVENT_LIBS) \
+    $(POPT_LIBS) \
+    $(KRB5_LIBS)
+
+ldap_child_SOURCES = \
+    $(SSSD_DEBUG_OBJ) \
+    src/providers/ldap/ldap_child.c \
+    src/providers/child_common.c \
+    src/util/sss_krb5.c
+ldap_child_CFLAGS = \
+    $(AM_CFLAGS) \
+    $(POPT_CFLAGS) \
+    $(KRB5_CFLAGS)
+ldap_child_LDADD = \
+    $(TALLOC_LIBS) \
+    $(TEVENT_LIBS) \
+    $(POPT_LIBS) \
+    $(OPENLDAP_LIBS) \
+    $(KRB5_LIBS)
+
+proxy_child_SOURCES = \
+    $(SSSD_UTIL_OBJ) \
+    src/providers/proxy/proxy_child.c
+proxy_child_CFLAGS = \
+    $(AM_CFLAGS) \
+    $(POPT_CFLAGS)
+proxy_child_LDADD = \
+    $(PAM_LIBS) \
+    $(SSSD_LIBS)
+
+memberof_la_SOURCES = \
+    src/ldb_modules/memberof.c
+memberof_la_CFLAGS = \
+    $(AM_CFLAGS)
+memberof_la_LIBADD = $(LDB_LIBS) $(DHASH_LIBS)
+memberof_la_LDFLAGS = \
+    -avoid-version \
+    -module
+
+if BUILD_KRB5_LOCATOR_PLUGIN
+sssd_krb5_locator_plugin_la_SOURCES = \
+    src/krb5_plugin/sssd_krb5_locator_plugin.c
+sssd_krb5_locator_plugin_la_CFLAGS = \
+    $(AM_CFLAGS) \
+    $(KRB5_CFLAGS)
+sssd_krb5_locator_plugin_la_LDFLAGS = \
+    -avoid-version \
+    -module
+endif
+
+if BUILD_PYTHON_BINDINGS
+pysss_la_SOURCES = \
+    $(SSSD_UTIL_OBJ) \
+    $(SSSD_TOOLS_OBJ) \
+    src/python/pysss.c
+pysss_la_CFLAGS = \
+    $(AM_CFLAGS)  \
+    $(PYTHON_CFLAGS)
+pysss_la_LIBADD = \
+    $(PYTHON_BINDINGS_LIBS) \
+    $(PYTHON_LIBS)
+pysss_la_LDFLAGS = \
+    -avoid-version \
+    -module
+endif
+
+############
+# MANPAGES #
+############
+
+#Special Rules:
+export SGML_CATALOG_FILES
+DOCBOOK_XSLT = http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl
+XMLLINT_FLAGS = --catalogs --postvalid --nonet --xinclude --noout
+XSLTPROC_FLAGS = --catalogs --xinclude --nonet
+
+dist_man_MANS = \
+    src/man/sss_useradd.8 src/man/sss_userdel.8 src/man/sss_usermod.8 \
+    src/man/sss_groupadd.8 src/man/sss_groupdel.8 src/man/sss_groupmod.8 \
+    src/man/sssd.8 src/man/sssd.conf.5 src/man/sssd-ldap.5 \
+    src/man/sssd-krb5.5 src/man/sssd-ipa.5 src/man/sssd-simple.5 \
+    src/man/sssd_krb5_locator_plugin.8 src/man/sss_groupshow.8 \
+    src/man/pam_sss.8
+
+SUFFIXES = .1.xml .1 .3.xml .3 .5.xml .5 .8.xml .8
+.1.xml.1:
+	$(XMLLINT) $(XMLLINT_FLAGS) $<
+	$(XSLTPROC) -o $@  $(XSLTPROC_FLAGS) $(DOCBOOK_XSLT) $<
+
+.3.xml.3:
+	$(XMLLINT) $(XMLLINT_FLAGS) $<
+	$(XSLTPROC) -o $@  $(XSLTPROC_FLAGS) $(DOCBOOK_XSLT) $<
+
+.5.xml.5:
+	$(XMLLINT) $(XMLLINT_FLAGS) $<
+	$(XSLTPROC) -o $@  $(XSLTPROC_FLAGS) $(DOCBOOK_XSLT) $<
+
+.8.xml.8:
+	$(XMLLINT) $(XMLLINT_FLAGS) $<
+	$(XSLTPROC) -o $@  $(XSLTPROC_FLAGS) $(DOCBOOK_XSLT) $<
+
+#######################
+# Installation Extras #
+#######################
+
+dist_init_SCRIPTS =
+if HAVE_SUSE
+    dist_init_SCRIPTS += \
+        src/sysv/SUSE/sssd
+else
+    dist_init_SCRIPTS += \
+        src/sysv/sssd
+endif
+
+
+dist_sssdconf_DATA = \
+    src/config/etc/sssd.api.conf
+dist_sssdapiplugin_DATA = \
+    src/config/etc/sssd.api.d/sssd-ipa.conf \
+    src/config/etc/sssd.api.d/sssd-krb5.conf \
+    src/config/etc/sssd.api.d/sssd-ldap.conf \
+    src/config/etc/sssd.api.d/sssd-local.conf \
+    src/config/etc/sssd.api.d/sssd-proxy.conf \
+    src/config/etc/sssd.api.d/sssd-simple.conf
+
+installsssddirs::
+	mkdir -p \
+    $(DESTDIR)$(includedir) \
+    $(DESTDIR)$(libdir) \
+    $(DESTDIR)$(sbindir) \
+    $(DESTDIR)$(initdir) \
+    $(DESTDIR)$(mandir) \
+    $(DESTDIR)$(pluginpath) \
+    $(DESTDIR)$(libdir)/ldb \
+    $(DESTDIR)$(dbuspolicydir) \
+    $(DESTDIR)$(infpintrospectdir) \
+    $(DESTDIR)$(dbusintrospectdir) \
+    $(DESTDIR)$(pipepath)/private \
+    $(DESTDIR)$(sssdlibdir) \
+    $(DESTDIR)$(sssdconfdir) \
+    $(DESTDIR)$(dbpath) \
+    $(DESTDIR)$(pidpath) \
+    $(DESTDIR)$(initdir) \
+    $(DESTDIR)$(logpath) \
+    $(DESTDIR)$(pubconfpath)
+
+if HAVE_DOXYGEN
+docs:
+	$(DOXYGEN) src/doxy.config
+else
+docs:
+	@echo "Doxygen not installed, cannot generate documentation"
+	@exit 1
+endif
+all-local:
+	cd $(srcdir)/src/config; $(PYTHON) setup.py build --build-base $(abs_builddir)/src/config
+
+install-exec-hook: installsssddirs
+	if [ "$(DESTDIR)" = "" ]; then \
+		cd $(srcdir)/src/config; $(PYTHON) setup.py build --build-base $(abs_builddir)/src/config install $(DISTSETUPOPTS) --prefix=$(PYTHON_PREFIX) --record=$(abs_builddir)/src/config/.files; \
+	else \
+		cd $(srcdir)/src/config; $(PYTHON) setup.py build --build-base $(abs_builddir)/src/config install $(DISTSETUPOPTS) --prefix=$(PYTHON_PREFIX) --root=$(DESTDIR) --record=$(abs_builddir)/src/config/.files; \
+	fi
+	mkdir -p doc $(DESTDIR)/$(docdir); cp -a doc $(DESTDIR)/$(docdir)/
+
+install-data-hook:
+	rm $(DESTDIR)/$(nsslibdir)/libnss_sss.so.2 \
+       $(DESTDIR)/$(nsslibdir)/libnss_sss.so
+	mv $(DESTDIR)/$(nsslibdir)/libnss_sss.so.2.0.0 $(DESTDIR)/$(nsslibdir)/libnss_sss.so.2
+
+uninstall-hook:
+	if [ -f $(abs_builddir)/src/config/.files ]; then \
+	    cat $(abs_builddir)/src/config/.files | xargs -iq rm -f $(DESTDIR)/q; \
+	    rm $(abs_builddir)/src/config/.files ; \
+	fi
+	rm -Rf $(DESTDIR)/$(docdir)/doc
+
+clean-local:
+	cd $(srcdir)/src/config; $(PYTHON) setup.py build --build-base $(abs_builddir)/src/config clean --all
+	rm -Rf doc
+
+CLEANFILES = *.X */*.X */*/*.X
+
+tests: all $(check_PROGRAMS)
+
+
+# RPM-related tasks
+
+RPMBUILD ?= $(PWD)/rpmbuild
+
+dist_noinst_DATA += \
     m4 \
     contrib/sssd.spec.in \
     BUILD.txt \
@@ -52,12 +1078,3 @@ prerelease-srpms:
 	mv $(srcdir)/version.m4.orig $(srcdir)/version.m4
 endif
 
-tests: all
-	for subdir in $(SUBDIRS); do \
-		$(MAKE) -C $$subdir $@; \
-	done
-
-docs:
-	for subdir in $(SUBDIRS); do \
-		$(MAKE) -C $$subdir $@; \
-	done
diff --git a/configure.ac b/configure.ac
index 4fabcc729a0941b763e556bb319998570d152443..58a7b2c8f969e7d489b3302be6da59ee1385e81e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,19 +1,173 @@
+AC_PREREQ(2.59)
+AC_DEFUN([AC_CHECK_LIB_EXT], [
+	AC_CHECK_LIB([$1],[$3],[$4],[$5],[$7])
+	ac_cv_lib_ext_$1_$3=$ac_cv_lib_$1_$3
+])
+AC_DEFUN([AC_CHECK_FUNC_EXT], [
+	AC_CHECK_FUNC([$1],[$3],[$4])
+	ac_cv_func_ext_$1=$ac_cv_func_$1
+])
+AC_DEFUN([SMB_MODULE_DEFAULT], [echo -n ""])
+AC_DEFUN([SMB_LIBRARY_ENABLE], [echo -n ""])
+AC_DEFUN([SMB_EXT_LIB], [echo -n ""])
+AC_DEFUN([SMB_ENABLE], [echo -n ""])
+
 m4_include([version.m4])
 AC_INIT([sssd],
         VERSION_NUMBER,
         [sssd-devel@lists.fedorahosted.org])
+
+CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE"
+
 AC_CONFIG_SRCDIR([BUILD.txt])
 AC_CONFIG_AUX_DIR([build])
-AM_INIT_AUTOMAKE([-Wall -Werror foreign])
-AC_CONFIG_MACRO_DIR([m4])
+
+AM_INIT_AUTOMAKE([-Wall foreign subdir-objects])
+AM_PROG_CC_C_O
+AC_DISABLE_STATIC
 AC_PROG_INSTALL
-
-AC_CONFIG_SUBDIRS([src])
+AC_PROG_LIBTOOL
+AC_CONFIG_MACRO_DIR([m4])
+AM_GNU_GETTEXT([external])
+AM_GNU_GETTEXT_VERSION([0.14])
 
 AC_SUBST([PRERELEASE_VERSION],
          PRERELEASE_VERSION_NUMBER)
 
 AM_CONDITIONAL([GIT_CHECKOUT], [git log -1 &>/dev/null])
 
-AC_CONFIG_FILES([Makefile contrib/sssd.spec])
+m4_pattern_allow([AM_SILENT_RULES])
+AM_SILENT_RULES
+
+AM_CONDITIONAL([HAVE_GCC], [test "$ac_cv_prog_gcc" = yes])
+
+AC_CHECK_HEADERS(stdint.h dlfcn.h)
+AC_CONFIG_HEADER(config.h)
+
+AC_CHECK_TYPES([errno_t], [], [], [[#include <errno.h>]])
+
+m4_include([src/build_macros.m4])
+BUILD_WITH_SHARED_BUILD_DIR
+
+#Check for PAM headers
+AC_CHECK_HEADERS([security/pam_appl.h security/pam_misc.h security/pam_modules.h],
+    [AC_CHECK_LIB(pam, pam_get_item, [ PAM_LIBS="-lpam" ], [AC_MSG_ERROR([PAM must support pam_get_item])])],
+    [AC_MSG_ERROR([PAM development libraries not installed])]
+)
+
+#Set the NSS library install path
+AC_ARG_ENABLE([nsslibdir], [AS_HELP_STRING([--enable-nsslibdir],
+                                        [Where to install nss libraries ($libdir)])],
+              [nsslibdir=$enableval],
+              [nsslibdir=$libdir])
+AC_SUBST(nsslibdir)
+
+m4_include(src/conf_macros.m4)
+WITH_DB_PATH
+WITH_PLUGIN_PATH
+WITH_PID_PATH
+WITH_LOG_PATH
+WITH_PUBCONF_PATH
+WITH_PIPE_PATH
+WITH_INIT_DIR
+WITH_TEST_DIR
+WITH_MANPAGES
+WITH_XML_CATALOG
+WITH_KRB5_PLUGIN_PATH
+WITH_PYTHON_BINDINGS
+WITH_SELINUX
+WITH_NSCD
+WITH_SEMANAGE
+WITH_LIBNL
+
+m4_include([src/external/platform.m4])
+m4_include([src/external/pkg.m4])
+m4_include([src/external/libpopt.m4])
+m4_include([src/external/libtalloc.m4])
+m4_include([src/external/libtdb.m4])
+m4_include([src/external/libtevent.m4])
+m4_include([src/external/libldb.m4])
+m4_include([src/external/libdhash.m4])
+m4_include([src/external/libcollection.m4])
+m4_include([src/external/libini_config.m4])
+m4_include([src/external/pam.m4])
+m4_include([src/external/ldap.m4])
+m4_include([src/external/libpcre.m4])
+m4_include([src/external/krb5.m4])
+m4_include([src/external/libcares.m4])
+m4_include([src/external/docbook.m4])
+m4_include([src/external/sizes.m4])
+m4_include([src/external/python.m4])
+m4_include([src/external/selinux.m4])
+m4_include([src/external/crypto.m4])
+m4_include([src/external/nscd.m4])
+m4_include([src/external/nsupdate.m4])
+m4_include([src/external/libkeyutils.m4])
+m4_include([src/external/libnl.m4])
+m4_include([src/util/signal.m4])
+
+PKG_CHECK_MODULES([DBUS],[dbus-1])
+dnl if test -n "`$PKG_CONFIG --modversion dbus-1 | grep '^0\.'`" ; then
+if ! $PKG_CONFIG --atleast-version 1.0.0 dbus-1; then
+    DBUS_CFLAGS="$DBUS_CFLAGS -DDBUS_API_SUBJECT_TO_CHANGE"
+    AC_MSG_RESULT([setting -DDBUS_API_SUBJECT_TO_CHANGE])
+fi
+
+if test x$has_dbus != xno; then
+    SAFE_LIBS="$LIBS"
+    LIBS="$DBUS_LIBS"
+    AC_CHECK_FUNC([dbus_watch_get_unix_fd],
+                  AC_DEFINE([HAVE_DBUS_WATCH_GET_UNIX_FD], [1],
+                            [Define if dbus_watch_get_unix_fd exists]))
+    LIBS="$SAFE_LIBS"
+fi
+
+if test x$HAVE_MANPAGES != x; then
+    CHECK_XML_TOOLS
+    CHECK_STYLESHEET([$SGML_CATALOG_FILES],
+                     [http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl],
+                     [Docbook XSL templates])
+fi
+
+if test x$HAVE_PYTHON_BINDINGS != x; then
+    AM_PATH_PYTHON([2.4])
+    AM_CHECK_PYTHON_HEADERS([],
+                            AC_MSG_ERROR([Could not find python headers]))
+    AM_PYTHON_CONFIG
+fi
+
+if test x$HAVE_SELINUX != x; then
+    AM_CHECK_SELINUX
+fi
+
+if test x$HAVE_SEMANAGE != x -a x$HAVE_SELINUX != x; then
+    AM_CHECK_SEMANAGE
+fi
+
+if test x$HAVE_LIBNL != x; then
+    AM_CHECK_LIBNL
+fi
+
+AC_CHECK_HEADERS([sys/inotify.h])
+
+AC_CHECK_HEADERS([sasl/sasl.h],,AC_MSG_ERROR([Could not find SASL headers]))
+
+PKG_CHECK_MODULES([CHECK], [check >= 0.9.5], [have_check=1], [have_check=])
+if test x$have_check = x; then
+    AC_MSG_WARN([Without the 'CHECK' libraries, you will be unable to run all tests in the 'make check' suite])
+else
+    AC_CHECK_HEADERS([check.h],,AC_MSG_ERROR([Could not find CHECK headers]))
+fi
+
+AC_PATH_PROG([DOXYGEN], [doxygen], [false])
+AM_CONDITIONAL([HAVE_DOXYGEN], [test x$DOXYGEN != xfalse ])
+
+AM_CONDITIONAL([HAVE_CHECK], [test x$have_check != x])
+
+abs_build_dir=`pwd`
+AC_DEFINE_UNQUOTED([ABS_BUILD_DIR], ["$abs_build_dir"], [Absolute path to the build directory])
+AC_SUBST([abs_builddir], $abs_build_dir)
+
+AC_CONFIG_FILES([Makefile contrib/sssd.spec src/examples/rwtab src/doxy.config po/Makefile.in])
 AC_OUTPUT
+
diff --git a/src/po/LINGUAS b/po/LINGUAS
similarity index 100%
rename from src/po/LINGUAS
rename to po/LINGUAS
diff --git a/src/po/Makevars b/po/Makevars
similarity index 100%
rename from src/po/Makevars
rename to po/Makevars
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100644
index 0000000000000000000000000000000000000000..af2ba9ee548084d9a97fbf292bc333ae131a9eb6
--- /dev/null
+++ b/po/POTFILES.in
@@ -0,0 +1,23 @@
+# List of source files which contain translatable strings.
+src/confdb/confdb_setup.c
+src/config/SSSDConfig.py
+src/monitor/monitor.c
+src/providers/krb5/krb5_child.c
+src/providers/ldap/ldap_child.c
+src/providers/data_provider_be.c
+src/sss_client/common.c
+src/sss_client/group.c
+src/sss_client/pam_sss.c
+src/sss_client/pam_test_client.c
+src/sss_client/passwd.c
+src/tools/sss_useradd.c
+src/tools/sss_groupadd.c
+src/tools/sss_groupdel.c
+src/tools/sss_groupmod.c
+src/tools/sss_groupshow.c
+src/tools/sss_useradd.c
+src/tools/sss_userdel.c
+src/tools/sss_usermod.c
+src/tools/tools_util.c
+src/tools/tools_util.h
+src/util/util.h
diff --git a/src/po/de.po b/po/de.po
similarity index 100%
rename from src/po/de.po
rename to po/de.po
diff --git a/src/po/es.po b/po/es.po
similarity index 100%
rename from src/po/es.po
rename to po/es.po
diff --git a/src/po/fr.po b/po/fr.po
similarity index 100%
rename from src/po/fr.po
rename to po/fr.po
diff --git a/src/po/id.po b/po/id.po
similarity index 100%
rename from src/po/id.po
rename to po/id.po
diff --git a/src/po/it.po b/po/it.po
similarity index 100%
rename from src/po/it.po
rename to po/it.po
diff --git a/src/po/ja.po b/po/ja.po
similarity index 100%
rename from src/po/ja.po
rename to po/ja.po
diff --git a/src/po/nl.po b/po/nl.po
similarity index 100%
rename from src/po/nl.po
rename to po/nl.po
diff --git a/src/po/pl.po b/po/pl.po
similarity index 100%
rename from src/po/pl.po
rename to po/pl.po
diff --git a/src/po/pt.po b/po/pt.po
similarity index 100%
rename from src/po/pt.po
rename to po/pt.po
diff --git a/src/po/ru.po b/po/ru.po
similarity index 100%
rename from src/po/ru.po
rename to po/ru.po
diff --git a/src/po/sss_daemon.pot b/po/sssd.pot
similarity index 100%
rename from src/po/sss_daemon.pot
rename to po/sssd.pot
diff --git a/src/po/sv.po b/po/sv.po
similarity index 100%
rename from src/po/sv.po
rename to po/sv.po
diff --git a/src/po/uk.po b/po/uk.po
similarity index 100%
rename from src/po/uk.po
rename to po/uk.po
diff --git a/src/po/zh_TW.po b/po/zh_TW.po
similarity index 100%
rename from src/po/zh_TW.po
rename to po/zh_TW.po
diff --git a/src/config/SSSDConfigTest.py b/src/config/SSSDConfigTest.py
index e99a7876f895af8373e88a84b4b1920de7e69a5d..f0cfac8b8d8e4421d8984594bd4521a1b0aa0c7d 100755
--- a/src/config/SSSDConfigTest.py
+++ b/src/config/SSSDConfigTest.py
@@ -1614,7 +1614,7 @@ if __name__ == "__main__":
     import sys
     srcdir = os.getenv('srcdir')
     if srcdir:
-        srcdir = srcdir + "/config"
+        srcdir = srcdir + "/src/config"
     else:
         srcdir = "."
 
diff --git a/src/external/libcollection.m4 b/src/external/libcollection.m4
index 8fc37e8c7ff1855d69b01a42d5a6f29f69da6857..ae49edf84770270d7c0f2a6b0cdfe2c564245bbb 100644
--- a/src/external/libcollection.m4
+++ b/src/external/libcollection.m4
@@ -1,12 +1,10 @@
-AC_SUBST(SYSTEM_COLLECTION_OBJ)
-AC_SUBST(SYSTEM_COLLECTION_CFLAGS)
-AC_SUBST(SYSTEM_COLLECTION_LIBS)
+AC_SUBST(COLLECTION_OBJ)
+AC_SUBST(COLLECTION_CFLAGS)
+AC_SUBST(COLLECTION_LIBS)
 
-PKG_CHECK_MODULES(SYSTEM_COLLECTION, collection >= 0.4.0,
-    have_system_collection=true,
-    have_system_collection=false
+PKG_CHECK_MODULES(COLLECTION,
+    collection >= 0.5.1,
+    ,
+    AC_MSG_ERROR("Please install libcollection-devel")
     )
-# This is future-compatible. Right now, we'll force the use of our
-# in-tree copy. When collection is split off as its own source package, we'll
-# fix this test
-AM_CONDITIONAL(HAVE_SYSTEM_COLLECTION, test x$have_system_collection = xtrue_FORCE_IN_TREE)
+
diff --git a/src/external/libdhash.m4 b/src/external/libdhash.m4
index e3afdac38deb09bbacd0126346b22d3c69a642cd..4d5c5d1a5ec5ad77cc4bbc1e59269072a2e518cb 100644
--- a/src/external/libdhash.m4
+++ b/src/external/libdhash.m4
@@ -1,12 +1,10 @@
-AC_SUBST(SYSTEM_DHASH_OBJ)
-AC_SUBST(SYSTEM_DHASH_CFLAGS)
-AC_SUBST(SYSTEM_DHASH_LIBS)
+AC_SUBST(DHASH_OBJ)
+AC_SUBST(DHASH_CFLAGS)
+AC_SUBST(DHASH_LIBS)
 
-PKG_CHECK_MODULES(SYSTEM_DHASH, dhash >= 0.4.0,
-    have_system_dhash=true,
-    have_system_dhash=false
+PKG_CHECK_MODULES(DHASH,
+    dhash >= 0.4.0,
+    ,
+    AC_MSG_ERROR("Please install libdhash-devel")
     )
-# This is future-compatible. Right now, we'll force the use of our
-# in-tree copy. When dhash is split off as its own source package, we'll
-# fix this test
-AM_CONDITIONAL(HAVE_SYSTEM_DHASH, test x$have_system_dhash = xtrue_FORCE_IN_TREE)
+
diff --git a/src/external/libini_config.m4 b/src/external/libini_config.m4
index 20291efa5e6957d2960051d68a808d6847cf22d4..f41f31917d1cf12dda49ec2e1f2411e39dbcc759 100644
--- a/src/external/libini_config.m4
+++ b/src/external/libini_config.m4
@@ -1,12 +1,10 @@
-AC_SUBST(SYSTEM_INI_CONFIG_OBJ)
-AC_SUBST(SYSTEM_INI_CONFIG_CFLAGS)
-AC_SUBST(SYSTEM_INI_CONFIG_LIBS)
+AC_SUBST(INI_CONFIG_OBJ)
+AC_SUBST(INI_CONFIG_CFLAGS)
+AC_SUBST(INI_CONFIG_LIBS)
 
-PKG_CHECK_MODULES(SYSTEM_INI_CONFIG, ini_config >= 0.4.0,
-    have_system_ini_config=true,
-    have_system_ini_config=false
+PKG_CHECK_MODULES(INI_CONFIG,
+    ini_config >= 0.6.1,
+    ,
+    AC_MSG_ERROR("Please install libini_config-devel")
     )
-# This is future-compatible. Right now, we'll force the use of our
-# in-tree copy. When ini_config is split off as its own source package, we'll
-# fix this test
-AM_CONDITIONAL(HAVE_SYSTEM_INI_CONFIG, test x$have_system_ini_config = xtrue_FORCE_IN_TREE)
+
diff --git a/src/po/POTFILES.in b/src/po/POTFILES.in
deleted file mode 100644
index 934c510c93e1c7b00d88917f2552b4de2f393aee..0000000000000000000000000000000000000000
--- a/src/po/POTFILES.in
+++ /dev/null
@@ -1,23 +0,0 @@
-# List of source files which contain translatable strings.
-confdb/confdb_setup.c
-config/SSSDConfig.py
-monitor/monitor.c
-providers/krb5/krb5_child.c
-providers/ldap/ldap_child.c
-providers/data_provider_be.c
-sss_client/common.c
-sss_client/group.c
-sss_client/pam_sss.c
-sss_client/pam_test_client.c
-sss_client/passwd.c
-tools/sss_useradd.c
-tools/sss_groupadd.c
-tools/sss_groupdel.c
-tools/sss_groupmod.c
-tools/sss_groupshow.c
-tools/sss_useradd.c
-tools/sss_userdel.c
-tools/sss_usermod.c
-tools/tools_util.c
-tools/tools_util.h
-util/util.h
-- 
1.7.2.1

