extra_distcheck_flags =
if HAVE_DEVSHM
    extra_distcheck_flags += --with-test-dir=/dev/shm
endif

if WITH_JOURNALD
    extra_distcheck_flags += --with-syslog=journald
endif

DISTCHECK_CONFIGURE_FLAGS = --with-ldb-lib-dir="$$dc_install_base"/lib/ldb \
                            --disable-dbus-tests \
                            --enable-all-experimental-features \
                            $(extra_distcheck_flags) \
                            $(AUX_DISTCHECK_CONFIGURE_FLAGS)

SUBDIRS = po

if HAVE_MANPAGES
SUBDIRS += src/man
endif

SUBDIRS += . src/tests/cwrap src/tests/intg

# 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
if BUILD_KRB5_LOCALAUTH_PLUGIN
krb5localauth_plugindir = @appmodpath@
endif
if BUILD_PAC_RESPONDER
krb5authdata_plugindir = @krb5authdatapluginpath@
endif
if BUILD_CIFS_IDMAP_PLUGIN
cifsplugindir = @cifspluginpath@
endif
if BUILD_LIBWBCLIENT
libwbclientdir = @appmodpath@
endif
sssdconfdir = $(sysconfdir)/sssd
sssddatadir = $(datadir)/sssd
sssdapiplugindir = $(sssddatadir)/sssd.api.d
dbuspolicydir = $(sysconfdir)/dbus-1/system.d
dbusservicedir = $(datadir)/dbus-1/system-services
sss_statedir = $(localstatedir)/lib/sss
localedir = @localedir@
nsslibdir = @nsslibdir@
pamlibdir = @pammoddir@
autofslibdir = @appmodpath@
nfslibdir = @nfsidmaplibdir@

dbpath = @dbpath@
pluginpath = @pluginpath@
pidpath = @pidpath@
pipepath = @pipepath@
mcpath = @mcpath@
initdir = @initdir@
systemdunitdir = @systemdunitdir@
systemdconfdir = @systemdconfdir@
logpath = @logpath@
pubconfpath = @pubconfpath@
gpocachepath = @gpocachepath@
keytabdir = $(sss_statedir)/keytabs
pkgconfigdir = $(libdir)/pkgconfig
krb5rcachedir = @krb5rcachedir@
sudolibdir = @sudolibpath@
polkitdir = @polkitdir@

UNICODE_LIBS=@UNICODE_LIBS@

MKDIR_P = @MKDIR_P@
INSTALL = @INSTALL@

SSSD_USER = @SSSD_USER@

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 -Wundef \
                 -Werror-implicit-function-declaration -Winit-self \
                 -fno-strict-aliasing \
                 -std=gnu99
endif

pkgconfig_DATA =

ACLOCAL_AMFLAGS = -I m4 -I .

if BUILD_SSH
bin_PROGRAMS = \
    sss_ssh_authorizedkeys \
    sss_ssh_knownhostsproxy
endif

sbin_PROGRAMS = \
    sssd \
    sss_useradd \
    sss_userdel \
    sss_groupadd \
    sss_groupdel \
    sss_usermod \
    sss_groupmod \
    sss_groupshow \
    sss_cache \
    sss_debuglevel \
    sss_override \
    sss_seed \
    $(NULL)

sssdlibexec_PROGRAMS = \
    sssd_nss \
    sssd_pam \
    sssd_be \
    krb5_child \
    ldap_child \
    proxy_child \
    sss_signal \
    $(NULL)
if BUILD_SUDO
sssdlibexec_PROGRAMS += sssd_sudo
endif
if BUILD_AUTOFS
sssdlibexec_PROGRAMS += sssd_autofs
endif
if BUILD_SSH
sssdlibexec_PROGRAMS += sssd_ssh
endif
if BUILD_IFP
sssdlibexec_PROGRAMS += sssd_ifp
endif
if BUILD_SAMBA
sssdlibexec_PROGRAMS += gpo_child
endif
if BUILD_SEMANAGE
sssdlibexec_PROGRAMS += selinux_child
endif
if HAVE_NSS
sssdlibexec_PROGRAMS += p11_child
if SSSD_USER
if HAVE_POLKIT_RULES_D
polkit_rulesdir = $(polkitdir)
dist_polkit_rules_DATA = contrib/sssd-pcsc.rules
endif
endif
endif

if BUILD_PAC_RESPONDER
    sssdlibexec_PROGRAMS += sssd_pac
endif

if HAVE_CHECK
    non_interactive_check_based_tests = \
        dlopen-tests \
        sysdb-tests \
        strtonum-tests \
        resolv-tests \
        krb5-utils-tests \
        check_and_open-tests \
        files-tests \
        refcount-tests \
        fail_over-tests \
        find_uid-tests \
        auth-tests \
        ipa_ldap_opt-tests \
        ad_ldap_opt-tests \
        simple_access-tests \
        crypto-tests \
        util-tests \
        debug-tests \
        ipa_hbac-tests \
        sss_idmap-tests \
        responder_socket_access-tests \
        safe-format-tests

if BUILD_SSH
    non_interactive_check_based_tests += sysdb_ssh-tests
endif

if BUILD_IFP
if BUILD_CONFIG_LIB
    non_interactive_check_based_tests += sss_config-tests
endif # BUILD_CONFIG_LIB
endif # BUILD_IFP

if BUILD_DBUS_TESTS
    non_interactive_check_based_tests += \
	sbus_tests \
	sbus_codegen_tests
endif # BUILD_DBUS_TESTS

endif # HAVE_CHECK

if HAVE_CMOCKA
    non_interactive_cmocka_based_tests = \
        nss-srv-tests \
        test-find-uid \
        test-io \
        test-negcache \
        test-authtok \
        sss_nss_idmap-tests \
        dyndns-tests \
        fqnames-tests \
        nestedgroups-tests \
        test_sss_idmap \
        test_ipa_idmap \
        test_utils \
        ad_common_tests \
        dp_opt_tests \
        responder-get-domains-tests \
        sbus-internal-tests \
        sss_sifp-tests \
        test_search_bases \
        test_ldap_auth \
        test_sdap_access \
        sdap-tests \
        test_sysdb_views \
        test_sysdb_subdomains \
        test_sysdb_utils \
        test_be_ptask \
        test_copy_ccache \
        test_copy_keytab \
        test_child_common \
        responder_cache_req-tests \
        test_sbus_opath \
        test_fo_srv \
        pam-srv-tests \
        test_ipa_subdom_util \
        test_ipa_subdom_server \
        test_tools_colondb \
        test_krb5_wait_queue \
        test_cert_utils \
        test_ldap_id_cleanup \
        test_data_provider_be \
        test_ipa_dn \
        $(NULL)

if HAVE_LIBRESOLV
non_interactive_cmocka_based_tests += test_resolv_fake
endif   # HAVE_LIBRESOLV

if BUILD_IFP
non_interactive_cmocka_based_tests += ifp_tests
endif   # BUILD_IFP

if BUILD_SAMBA
non_interactive_cmocka_based_tests += \
    ad_access_filter_tests \
    ad_gpo_tests
endif

endif   # HAVE_CMOCKA

check_PROGRAMS = \
    stress-tests \
    krb5-child-test \
    $(non_interactive_cmocka_based_tests) \
    $(non_interactive_check_based_tests)

if HAVE_CMOCKA
check_PROGRAMS += dummy-child
endif # HAVE_CMOCKA

PYTHON_TESTS =

if BUILD_PYTHON2_BINDINGS
PYTHON_TESTS += src/config/SSSDConfigTest.py2.sh \
                src/tests/pyhbac-test.py2.sh \
                src/tests/pysss_murmur-test.py2.sh \
                $(NULL)
endif
if BUILD_PYTHON3_BINDINGS
PYTHON_TESTS += src/config/SSSDConfigTest.py3.sh \
                src/tests/pyhbac-test.py3.sh \
                src/tests/pysss_murmur-test.py3.sh \
                $(NULL)
endif

TEST_EXTENSIONS = .sh
TESTS = \
    $(PYTHON_TESTS) \
    $(non_interactive_cmocka_based_tests) \
    $(non_interactive_check_based_tests) \
    src/tests/whitespace_test \
    $(NULL)

sssdlib_LTLIBRARIES = \
    libsss_ldap.la \
    libsss_krb5.la \
    libsss_proxy.la \
    libsss_simple.la

if BUILD_SAMBA
sssdlib_LTLIBRARIES += \
    libsss_ipa.la \
    libsss_ad.la
endif

ldblib_LTLIBRARIES = \
    memberof.la

if BUILD_KRB5_LOCATOR_PLUGIN
krb5plugin_LTLIBRARIES = \
    sssd_krb5_locator_plugin.la
endif

if BUILD_KRB5_LOCALAUTH_PLUGIN
krb5localauth_plugin_LTLIBRARIES = \
    sssd_krb5_localauth_plugin.la
endif

if BUILD_PAC_RESPONDER
krb5authdata_plugin_LTLIBRARIES = \
    sssd_pac_plugin.la
endif

if BUILD_CIFS_IDMAP_PLUGIN
cifsplugin_LTLIBRARIES = \
    cifs_idmap_sss.la
endif

noinst_LTLIBRARIES =

pkglib_LTLIBRARIES =

if BUILD_PYTHON2_BINDINGS
py2exec_LTLIBRARIES = \
    _py2sss.la \
    _py2hbac.la \
    _py2sss_murmur.la \
    _py2sss_nss_idmap.la \
    $(NULL)
endif

if BUILD_PYTHON3_BINDINGS
py3exec_LTLIBRARIES = \
    _py3sss.la \
    _py3hbac.la \
    _py3sss_murmur.la \
    _py3sss_nss_idmap.la \
    $(NULL)
endif

dist_noinst_SCRIPTS = \
    $(EXTRA_SCRIPTS) \
    src/config/setup.py \
    src/config/SSSDConfig/ipachangeconf.py \
    src/config/SSSDConfig/__init__.py \
    src/config/SSSDConfigTest.py \
    src/config/SSSDConfigTest.py2.sh \
    src/config/SSSDConfigTest.py3.sh \
    src/config/SSSDConfig/sssd_upgrade_config.py \
    contrib/rhel/update_debug_levels.py \
    contrib/fedora/bashrc_sssd \
    contrib/fedora/make_srpm.sh \
    contrib/ci/clean \
    contrib/ci/rpm-spec-builddeps \
    contrib/ci/run \
    contrib/ci/valgrind-condense \
    src/tests/pyhbac-test.py \
    src/tests/pyhbac-test.py2.sh \
    src/tests/pyhbac-test.py3.sh \
    src/tests/pysss_murmur-test.py \
    src/tests/pysss_murmur-test.py2.sh \
    src/tests/pysss_murmur-test.py3.sh \
    src/tests/python-test.py \
    src/tests/whitespace_test \
    src/tests/krb5_proxy_check_test_data.conf \
    $(NULL)

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 \
    src/config/etc/sssd.api.d/crash_test_dummy \
    contrib/ci/README.md \
    contrib/ci/configure.sh \
    contrib/ci/deps.sh \
    contrib/ci/distro.sh \
    contrib/ci/misc.sh \
    contrib/ci/sssd.supp \
    src/tests/cmocka/p11_nssdb/cert9.db \
    src/tests/cmocka/p11_nssdb/key4.db \
    $(NULL)

###############################
# 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) \
    $(OPENLDAP_CFLAGS) \
    $(GLIB2_CFLAGS) \
    $(JOURNALD_CFLAGS) \
    -DLIBDIR=\"$(libdir)\" \
    -DVARDIR=\"$(localstatedir)\" \
    -DSSS_STATEDIR=\"$(sss_statedir)\" \
    -DSYSCONFDIR=\"$(sysconfdir)\" \
    -DSHLIBEXT=\"$(SHLIBEXT)\" \
    -DSSSD_LIBEXEC_PATH=\"$(sssdlibexecdir)\" \
    -DSSSD_CONF_DIR=\"$(sssdconfdir)\" \
    -DSSS_NSS_MCACHE_DIR=\"$(mcpath)\" \
    -DSSS_NSS_SOCKET_NAME=\"$(pipepath)/nss\" \
    -DSSS_PAM_SOCKET_NAME=\"$(pipepath)/pam\" \
    -DSSS_PAC_SOCKET_NAME=\"$(pipepath)/pac\" \
    -DSSS_PAM_PRIV_SOCKET_NAME=\"$(pipepath)/private/pam\" \
    -DSSS_SUDO_SOCKET_NAME=\"$(pipepath)/sudo\" \
    -DSSS_AUTOFS_SOCKET_NAME=\"$(pipepath)/autofs\" \
    -DSSS_SSH_SOCKET_NAME=\"$(pipepath)/ssh\" \
    -DLOCALEDIR=\"$(localedir)\" \
    -DBASE_FILE_STEM=\"$(*F)\" \
    $(NULL)

EXTRA_DIST =

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 \
    src/responder/common/responder_get_domains.c \
    src/responder/common/responder_utils.c \
    src/responder/common/responder_cache_req.c \
    src/monitor/monitor_iface_generated.c \
    src/monitor/monitor_iface_generated.h \
    src/providers/data_provider_iface_generated.c \
    src/providers/data_provider_iface_generated.h \
    src/providers/data_provider_req.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/common/sss_tools.c \
    src/util/nscd.c \
    $(NULL)

SSSD_LCL_TOOLS_OBJ = \
    src/sss_client/common.c \
    src/tools/tools_mc_util.c \
    $(SSSD_TOOLS_OBJ)

SSSD_RESOLV_OBJ = \
    src/resolv/async_resolv.c \
    src/resolv/async_resolv_utils.c

SSSD_FAILOVER_OBJ = \
    src/providers/fail_over.c \
    src/providers/fail_over_srv.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) \
    $(OPENLDAP_LIBS) \
    $(TDB_LIBS)

PYTHON_BINDINGS_LIBS = \
    $(TALLOC_LIBS) \
    $(POPT_LIBS) \
    $(LDB_LIBS) \
    $(NULL)

TOOLS_LIBS = \
    $(LTLIBINTL) \
    $(TALLOC_LIBS) \
    $(TEVENT_LIBS) \
    $(POPT_LIBS) \
    $(LDB_LIBS) \
    $(DBUS_LIBS) \
    $(PCRE_LIBS) \
    $(INI_CONFIG_LIBS) \
    $(COLLECTION_LIBS) \
    $(DHASH_LIBS) \
    $(OPENLDAP_LIBS) \
    $(TDB_LIBS)

if BUILD_SELINUX
    PYTHON_BINDINGS_LIBS += $(SELINUX_LIBS)
    TOOLS_LIBS += $(SELINUX_LIBS)
endif

dist_noinst_HEADERS = \
    src/monitor/monitor.h \
    src/util/crypto/sss_crypto.h \
    src/util/cert.h \
    src/util/dlinklist.h \
    src/util/debug.h \
    src/util/util.h \
    src/util/io.h \
    src/util/util_errors.h \
    src/util/safe-format-string.h \
    src/util/strtonum.h \
    src/util/sss_cli_cmd.h \
    src/util/sss_endian.h \
    src/util/sss_nss.h \
    src/util/sss_ldap.h \
    src/util/sss_python.h \
    src/util/sss_krb5.h \
    src/util/sss_selinux.h \
    src/util/sss_utf8.h \
    src/util/sss_ssh.h \
    src/util/sss_ini.h \
    src/util/sss_format.h \
    src/util/sss_config.h \
    src/util/refcount.h \
    src/util/find_uid.h \
    src/util/user_info_msg.h \
    src/util/murmurhash3.h \
    src/util/mmap_cache.h \
    src/util/atomic_io.h \
    src/util/auth_utils.h \
    src/util/authtok.h \
    src/util/authtok-utils.h \
    src/util/util_safealign.h \
    src/util/util_sss_idmap.h \
    src/monitor/monitor.h \
    src/monitor/monitor_interfaces.h \
    src/responder/common/responder.h \
    src/responder/common/responder_packet.h \
    src/responder/common/responder_sbus.h \
    src/responder/common/responder_cache_req.h \
    src/responder/pam/pamsrv.h \
    src/responder/pam/pam_helpers.h \
    src/responder/nss/nsssrv.h \
    src/responder/nss/nsssrv_private.h \
    src/responder/nss/nsssrv_netgroup.h \
    src/responder/nss/nsssrv_services.h \
    src/responder/nss/nsssrv_mmap_cache.h \
    src/responder/pac/pacsrv.h \
    src/responder/common/negcache.h \
    src/responder/sudo/sudosrv_private.h \
    src/responder/autofs/autofs_private.h \
    src/responder/ssh/sshsrv_private.h \
    src/responder/ifp/ifp_private.h \
    src/responder/ifp/ifp_domains.h \
    src/responder/ifp/ifp_components.h \
    src/responder/ifp/ifp_users.h \
    src/responder/ifp/ifp_groups.h \
    src/responder/ifp/ifp_cache.h \
    src/sbus/sbus_client.h \
    src/sbus/sssd_dbus.h \
    src/sbus/sssd_dbus_meta.h \
    src/sbus/sssd_dbus_private.h \
    src/sbus/sssd_dbus_invokers.h \
    src/sbus/sssd_dbus_errors.h \
    src/db/sysdb.h \
    src/db/sysdb_sudo.h \
    src/db/sysdb_autofs.h \
    src/db/sysdb_selinux.h \
    src/db/sysdb_private.h \
    src/db/sysdb_services.h \
    src/db/sysdb_ssh.h \
    src/confdb/confdb.h \
    src/confdb/confdb_private.h \
    src/confdb/confdb_setup.h \
    src/providers/data_provider.h \
    src/providers/data_provider_req.h \
    src/providers/dp_backend.h \
    src/providers/dp_dyndns.h \
    src/providers/dp_ptask_private.h \
    src/providers/dp_ptask.h \
    src/providers/dp_refresh.h \
    src/providers/fail_over.h \
    src/providers/fail_over_srv.h \
    src/util/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/krb5/krb5_init_shared.h \
    src/providers/krb5/krb5_opts.h \
    src/providers/krb5/krb5_ccache.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_sudo.h \
    src/providers/ldap/sdap_sudo_shared.h \
    src/providers/ldap/sdap_autofs.h \
    src/providers/ldap/sdap_id_op.h \
    src/providers/ldap/ldap_opts.h \
    src/providers/ldap/ldap_auth.h \
    src/providers/ldap/sdap_range.h \
    src/providers/ldap/sdap_users.h \
    src/providers/ldap/sdap_dyndns.h \
    src/providers/ldap/sdap_async_enum.h \
    src/providers/ldap/sdap_ops.h \
    src/providers/ipa/ipa_common.h \
    src/providers/ipa/ipa_config.h \
    src/providers/ipa/ipa_access.h \
    src/providers/ipa/ipa_selinux.h \
    src/providers/ipa/ipa_hosts.h \
    src/providers/ipa/ipa_selinux_maps.h \
    src/providers/ipa/ipa_auth.h \
    src/providers/ipa/ipa_dyndns.h \
    src/providers/ipa/ipa_subdomains.h \
    src/providers/ipa/ipa_id.h \
    src/providers/ipa/ipa_hostid.h \
    src/providers/ipa/ipa_opts.h \
    src/providers/ipa/ipa_srv.h \
    src/providers/ipa/ipa_dn.h \
    src/providers/ipa/ipa_sudo.h \
    src/providers/ad/ad_srv.h \
    src/providers/proxy/proxy.h \
    src/tools/tools_util.h \
    src/tools/sss_sync_ops.h \
    src/resolv/async_resolv.h \
    src/tests/common.h \
    src/tests/common_check.h \
    src/tests/cmocka/common_mock.h \
    src/tests/cmocka/common_mock_resp.h \
    src/tests/cmocka/common_mock_sdap.h \
    src/tests/cmocka/common_mock_sysdb_objects.h \
    src/tests/cmocka/common_mock_krb5.h \
    src/tests/cmocka/common_mock_be.h \
    src/tests/cmocka/test_expire_common.h \
    src/sss_client/pam_message.h \
    src/sss_client/ssh/sss_ssh_client.h \
    src/sss_client/sudo/sss_sudo.h \
    src/sss_client/libwbclient/libwbclient.h \
    src/sss_client/libwbclient/wbc_err_internal.h \
    src/sss_client/libwbclient/wbclient_internal.h \
    src/sss_client/libwbclient/wbc_sssd_internal.h \
    src/sss_client/nfs/nfsidmap_internal.h \
    src/lib/idmap/sss_idmap_private.h \
    src/lib/sifp/sss_sifp_private.h \
    src/tests/cmocka/test_utils.h \
    src/tools/common/sss_tools.h \
    src/tools/common/sss_colondb.h \
    $(NULL)


if HAVE_NSS
    dist_noinst_HEADERS += src/util/crypto/nss/nss_util.h
endif

SSSD_DOCS = \
    doc \
    hbac_doc \
    idmap_doc \
    nss_idmap_doc

if BUILD_SUDO
    SSSD_DOCS += libsss_sudo_doc
endif

if BUILD_IFP
    SSSD_DOCS += sss_simpleifp_doc
endif

CLIENT_LIBS = $(LTLIBINTL)

if HAVE_PTHREAD
CLIENT_LIBS += -lpthread
endif

if WITH_JOURNALD
SYSLOG_LIBS = $(JOURNALD_LIBS)
endif

#####################
# Utility libraries #
#####################
pkglib_LTLIBRARIES += libsss_debug.la
libsss_debug_la_SOURCES = \
    src/util/debug.c \
    src/util/sss_log.c \
    src/util/sss_cli_cmd.c \
    $(NULL)
libsss_debug_la_LIBADD = \
    $(SYSLOG_LIBS)
libsss_debug_la_LDFLAGS = \
    -avoid-version

pkglib_LTLIBRARIES += libsss_child.la
libsss_child_la_SOURCES = src/util/child_common.c
libsss_child_la_LIBADD = \
    $(TALLOC_LIBS) \
    $(TEVENT_LIBS) \
    $(DHASH_LIBS) \
    libsss_debug.la \
    $(NULL)
libsss_child_la_LDFLAGS = -avoid-version

pkglib_LTLIBRARIES += libsss_crypt.la

# NOTE:
# Please try to avoid using SSS_CRYPT_{CFLAGS,LIBS} directly for compiling and
# linking programs or libraries. This is purpose of wrapper library
# libsss_crypt.so to hide internals. SSS_CRYPT_{CFLAGS,LIBS} might be used
# in unit tests if you directly uses functions from underlining crypto libraries
if HAVE_NSS
    SSS_CRYPT_SOURCES = src/util/crypto/nss/nss_base64.c \
                        src/util/crypto/nss/nss_hmac_sha1.c \
                        src/util/crypto/nss/nss_sha512crypt.c \
                        src/util/crypto/nss/nss_obfuscate.c \
                        src/util/crypto/nss/nss_util.c
    SSS_CRYPT_CFLAGS = $(NSS_CFLAGS)
    SSS_CRYPT_LIBS = $(NSS_LIBS)

    SSS_CERT_SOURCES = \
        src/util/cert/cert_common.c \
        src/util/cert/nss/cert.c \
        $(NULL)
    SSS_CERT_CFLAGS = \
        $(NSS_CFLAGS) \
        $(NULL)
    SSS_CERT_LIBS = \
        $(NSS_LIBS) \
        $(NULL)
else
    SSS_CRYPT_SOURCES = src/util/crypto/libcrypto/crypto_base64.c \
                        src/util/crypto/libcrypto/crypto_hmac_sha1.c \
                        src/util/crypto/libcrypto/crypto_sha512crypt.c \
                        src/util/crypto/libcrypto/crypto_obfuscate.c
    SSS_CRYPT_CFLAGS = $(CRYPTO_CFLAGS)
    SSS_CRYPT_LIBS = $(CRYPTO_LIBS)

    SSS_CERT_SOURCES = \
        src/util/cert/cert_common.c \
        src/util/cert/libcrypto/cert.c \
        $(NULL)
    SSS_CERT_CFLAGS = \
        $(CRYPTO_CFLAGS) \
        $(NULL)
    SSS_CERT_LIBS = \
        $(CRYPTO_LIBS) \
        $(NULL)
endif

libsss_crypt_la_SOURCES = \
    $(SSS_CRYPT_SOURCES)
libsss_crypt_la_CFLAGS = \
    $(AM_CFLAGS) \
    $(SSS_CRYPT_CFLAGS) \
    $(DHASH_CFLAGS)
libsss_crypt_la_LIBADD = \
    $(SSS_CRYPT_LIBS) \
    $(DHASH_LIBS) \
    $(TALLOC_LIBS) \
    libsss_debug.la \
    $(NULL)
libsss_crypt_la_LDFLAGS = \
    -avoid-version

pkglib_LTLIBRARIES += libsss_cert.la

libsss_cert_la_SOURCES = \
    $(SSS_CERT_SOURCES) \
    $(NULL)
libsss_cert_la_CFLAGS = \
    $(AM_CFLAGS) \
    $(SSS_CERT_CFLAGS) \
    $(NULL)
libsss_cert_la_LIBADD = \
    $(SSS_CERT_LIBS) \
    $(TALLOC_LIBS) \
    libsss_crypt.la \
    libsss_debug.la \
    $(NULL)
libsss_cert_la_LDFLAGS = \
    -avoid-version \
    $(NULL)

pkglib_LTLIBRARIES += libsss_util.la
libsss_util_la_SOURCES = \
    src/confdb/confdb.c \
    src/db/sysdb.c \
    src/db/sysdb_ops.c \
    src/db/sysdb_search.c \
    src/db/sysdb_selinux.c \
    src/db/sysdb_upgrade.c \
    src/db/sysdb_services.c \
    src/db/sysdb_autofs.c \
    src/db/sysdb_subdomains.c \
    src/db/sysdb_views.c \
    src/db/sysdb_ranges.c \
    src/db/sysdb_idmap.c \
    src/db/sysdb_gpo.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_meta.c \
    src/sbus/sssd_dbus_interface.c \
    src/sbus/sssd_dbus_introspect.c \
    src/sbus/sssd_dbus_invokers.c \
    src/sbus/sssd_dbus_properties.c \
    src/sbus/sssd_dbus_request.c \
    src/sbus/sssd_dbus_server.c \
    src/sbus/sssd_dbus_signals.c \
    src/sbus/sssd_dbus_common_signals.c \
    src/util/util.c \
    src/util/memory.c \
    src/util/safe-format-string.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 \
    src/util/sss_nss.c \
    src/util/sss_utf8.c \
    src/util/sss_tc_utf8.c \
    src/util/murmurhash3.c \
    src/util/atomic_io.c \
    src/util/authtok.c \
    src/util/authtok-utils.c \
    src/util/sss_selinux.c \
    src/util/domain_info_utils.c \
    src/util/util_lock.c \
    src/util/util_errors.c \
    src/util/find_uid.c \
    src/util/sss_ini.c \
    src/util/io.c \
    src/util/util_sss_idmap.c \
    src/util/well_known_sids.c \
    src/util/string_utils.c \
    src/util/become_user.c \
    $(NULL)
libsss_util_la_CFLAGS = \
    $(AM_CFLAGS) \
    $(SYSTEMD_LOGIN_CFLAGS) \
    $(NULL)
libsss_util_la_LIBADD = \
    $(SSSD_LIBS) \
    $(SYSTEMD_LOGIN_LIBS) \
    $(UNICODE_LIBS) \
    libsss_debug.la \
    libsss_child.la \
    libsss_crypt.la \
    libsss_cert.la \
    $(NULL)
if BUILD_SUDO
    libsss_util_la_SOURCES += src/db/sysdb_sudo.c
endif
if BUILD_SSH
libsss_util_la_SOURCES += \
    src/db/sysdb_ssh.c \
    src/util/sss_ssh.c
endif
libsss_util_la_LDFLAGS = -avoid-version

pkglib_LTLIBRARIES += libsss_semanage.la
libsss_semanage_la_CFLAGS = \
    $(AM_CFLAGS) \
    $(TALLOC_CFLAGS) \
    $(NULL)
libsss_semanage_la_SOURCES = \
    src/util/sss_semanage.c \
    $(NULL)
libsss_semanage_la_LIBADD = \
    $(TALLOC_LIBS) \
    libsss_debug.la \
    $(NULL)
if BUILD_SEMANAGE
libsss_semanage_la_LIBADD += $(SEMANAGE_LIBS)
endif

libsss_semanage_la_LDFLAGS = \
    -avoid-version

SSSD_INTERNAL_LTLIBS = \
    libsss_util.la \
    libsss_crypt.la \
    libsss_debug.la \
    libsss_child.la \
    $(NULL)

if BUILD_IFP
if BUILD_CONFIG_LIB
pkglib_LTLIBRARIES += libsss_config.la
libsss_config_la_SOURCES = \
    src/util/sss_config.c
libsss_config_la_CFLAGS = \
    $(AM_CFLAGS) \
    $(AUGEAS_CFLAGS) \
    $(TALLOC_CFLAGS)
libsss_config_la_LIBADD = \
    $(AUGEAS_LIBS) \
    $(TALLOC_LIBS) \
    $(SSSD_INTERNAL_LTLIBS)
libsss_config_la_LDFLAGS = \
    -avoid-version
endif # BUILD_CONFIG_LIB
endif # BUILD_IFP

lib_LTLIBRARIES = libipa_hbac.la \
                  libsss_idmap.la \
                  libsss_nss_idmap.la \
                  $(NULL)

pkgconfig_DATA += src/providers/ipa/ipa_hbac.pc
libipa_hbac_la_DEPENDENCIES = src/providers/ipa/ipa_hbac.exports
libipa_hbac_la_SOURCES = \
    src/providers/ipa/hbac_evaluator.c \
    src/util/sss_utf8.c
libipa_hbac_la_LIBADD = \
    $(UNICODE_LIBS)
libipa_hbac_la_LDFLAGS = \
    -Wl,--version-script,$(srcdir)/src/providers/ipa/ipa_hbac.exports \
    -version-info 0:1:0

dist_noinst_DATA += src/providers/ipa/ipa_hbac.exports

pkgconfig_DATA += src/lib/idmap/sss_idmap.pc
libsss_idmap_la_DEPENDENCIES = src/lib/idmap/sss_idmap.exports
libsss_idmap_la_SOURCES = \
    src/lib/idmap/sss_idmap.c \
    src/lib/idmap/sss_idmap_conv.c \
    src/util/murmurhash3.c
libsss_idmap_la_LDFLAGS = \
    -Wl,--version-script,$(srcdir)/src/lib/idmap/sss_idmap.exports \
    -version-info 5:0:5

dist_noinst_DATA += src/lib/idmap/sss_idmap.exports

pkgconfig_DATA += src/sss_client/idmap/sss_nss_idmap.pc
libsss_nss_idmap_la_DEPENDENCIES = src/sss_client/idmap/sss_nss_idmap.exports
libsss_nss_idmap_la_SOURCES = \
    src/sss_client/idmap/sss_nss_idmap.c \
    src/sss_client/common.c \
    src/util/strtonum.c
libsss_nss_idmap_la_LIBADD = \
    $(CLIENT_LIBS)
libsss_nss_idmap_la_LDFLAGS = \
    -Wl,--version-script,$(srcdir)/src/sss_client/idmap/sss_nss_idmap.exports \
    -version-info 1:0:1

dist_noinst_DATA += src/sss_client/idmap/sss_nss_idmap.exports

include_HEADERS = \
    src/providers/ipa/ipa_hbac.h \
    src/lib/idmap/sss_idmap.h \
    src/sss_client/idmap/sss_nss_idmap.h \
    $(NULL)

if BUILD_LIBWBCLIENT
libwbclient_LTLIBRARIES = libwbclient.la
pkgconfig_DATA += src/sss_client/libwbclient/wbclient_sssd.pc

EXTRA_libwbclient_la_DEPENDENCIES = \
    src/sss_client/libwbclient/wbclient.exports \
    $(NULL)

libwbclient_la_SOURCES = \
    src/sss_client/libwbclient/wbc_guid.c \
    src/sss_client/libwbclient/wbc_idmap_common.c \
    src/sss_client/libwbclient/wbc_idmap_sssd.c \
    src/sss_client/libwbclient/wbclient_common.c \
    src/sss_client/libwbclient/wbclient_sssd.c \
    src/sss_client/libwbclient/wbc_pam_sssd.c \
    src/sss_client/libwbclient/wbc_pwd_sssd.c \
    src/sss_client/libwbclient/wbc_sid_common.c \
    src/sss_client/libwbclient/wbc_sid_sssd.c \
    src/sss_client/libwbclient/wbc_sssd_internal.h \
    src/sss_client/libwbclient/wbc_util_common.c \
    src/sss_client/libwbclient/wbc_util_sssd.c \
    src/sss_client/libwbclient/wbc_ctx_sssd.c \
    $(NULL)
libwbclient_la_LIBADD = \
    libsss_nss_idmap.la \
    $(CLIENT_LIBS) \
    $(NULL)

libwbclient_la_LDFLAGS = \
    -Wl,--version-script,$(srcdir)/src/sss_client/libwbclient/wbclient.exports \
    -version-info @libwbclient_version_info@ \
    $(NULL)

dist_noinst_DATA += src/sss_client/libwbclient/wbclient.exports \
    $(NULL)

include_HEADERS += src/sss_client/libwbclient/wbclient_sssd.h
endif #BUILD_LIBWBCLIENT

if BUILD_IFP
lib_LTLIBRARIES += libsss_simpleifp.la
pkgconfig_DATA += src/lib/sifp/sss_simpleifp.pc

libsss_simpleifp_la_SOURCES = \
    src/lib/sifp/sss_sifp.c \
    src/lib/sifp/sss_sifp_dbus.c \
    src/lib/sifp/sss_sifp_attrs.c \
    src/lib/sifp/sss_sifp_common.c \
    src/lib/sifp/sss_sifp_parser.c \
    src/lib/sifp/sss_sifp_utils.c
libsss_simpleifp_la_CFLAGS = \
    $(AM_CFLAGS) \
    -I$(top_srcdir)/src/lib/sifp
libsss_simpleifp_la_LIBADD = \
    $(DBUS_LIBS) \
    $(DHASH_LIBS)
libsss_simpleifp_la_LDFLAGS = \
    -Wl,--version-script,$(srcdir)/src/lib/sifp/sss_simpleifp.exports \
    -version-info 0:1:0

dist_noinst_DATA += src/lib/sifp/sss_simpleifp.exports

include_HEADERS += \
    src/lib/sifp/sss_sifp.h \
    src/lib/sifp/sss_sifp_dbus.h
endif

####################
# Sbus Codegen     #
####################

# Yes, the goal here is that the generated files end up in $(srcdir)
# not $(builddir). Always use $(srcdir) here.
CODEGEN_XML = \
    $(srcdir)/src/tests/sbus_codegen_tests.xml \
    $(srcdir)/src/monitor/monitor_iface.xml \
    $(srcdir)/src/providers/data_provider_iface.xml \
    $(srcdir)/src/responder/ifp/ifp_iface.xml

SBUS_CODEGEN = src/sbus/sbus_codegen

EXTRA_DIST += \
    $(SBUS_CODEGEN) \
    $(CODEGEN_XML)

SUFFIXES = .xml _generated.h _generated.c

.xml_generated.h:
	$(srcdir)/$(SBUS_CODEGEN) --mode=header --output=$@ $<
.xml_generated.c:
	$(srcdir)/$(SBUS_CODEGEN) --mode=source --include=$(@:.c=.h) --output=$@ $<

# Regenerate when codegen changes
CODEGEN_CODE = \
    $(CODEGEN_XML:.xml=_generated.c) \
    $(CODEGEN_XML:.xml=_generated.h)

$(CODEGEN_CODE): $(SBUS_CODEGEN)

BUILT_SOURCES = $(CODEGEN_CODE)

####################
# Program Binaries #
####################
sssd_SOURCES = \
    src/monitor/monitor.c \
    src/monitor/monitor_netlink.c \
    src/confdb/confdb_setup.c \
    src/util/nscd.c \
    src/monitor/monitor_iface_generated.c \
    src/monitor/monitor_iface_generated.h
sssd_LDADD = \
    $(SSSD_LIBS) \
    $(INOTIFY_LIBS) \
    $(LIBNL_LIBS) \
    $(KEYUTILS_LIBS) \
    $(SSSD_INTERNAL_LTLIBS)

sssd_nss_SOURCES = \
    src/responder/nss/nsssrv.c \
    src/responder/nss/nsssrv_cmd.c \
    src/responder/nss/nsssrv_netgroup.c \
    src/responder/nss/nsssrv_services.c \
    src/responder/nss/nsssrv_mmap_cache.c \
    $(SSSD_RESPONDER_OBJ)
sssd_nss_LDADD = \
    $(TDB_LIBS) \
    $(SSSD_LIBS) \
    libsss_idmap.la \
    $(SSSD_INTERNAL_LTLIBS)

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_p11.c \
    src/responder/pam/pamsrv_dp.c \
    src/responder/pam/pam_helpers.c \
    $(SSSD_RESPONDER_OBJ)
sssd_pam_LDADD = \
    $(TDB_LIBS) \
    $(SSSD_LIBS) \
    $(SELINUX_LIBS) \
    $(PAM_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    $(NULL)

if BUILD_SUDO
sssd_sudo_SOURCES = \
    src/responder/sudo/sudosrv.c \
    src/responder/sudo/sudosrv_cmd.c \
    src/responder/sudo/sudosrv_get_sudorules.c \
    src/responder/sudo/sudosrv_query.c \
    src/responder/sudo/sudosrv_dp.c \
    $(SSSD_RESPONDER_OBJ)
sssd_sudo_LDADD = \
    $(SSSD_LIBS) \
    $(SSSD_INTERNAL_LTLIBS)
endif

if BUILD_AUTOFS
sssd_autofs_SOURCES = \
    src/responder/autofs/autofssrv.c \
    src/responder/autofs/autofssrv_cmd.c \
    src/responder/autofs/autofssrv_dp.c \
    $(SSSD_RESPONDER_OBJ)
sssd_autofs_LDADD = \
    $(SSSD_LIBS) \
    $(SSSD_INTERNAL_LTLIBS)
endif

if BUILD_SSH
sssd_ssh_SOURCES = \
    src/responder/ssh/sshsrv.c \
    src/responder/ssh/sshsrv_dp.c \
    src/responder/ssh/sshsrv_cmd.c \
    $(SSSD_RESPONDER_OBJ) \
    $(NULL)
sssd_ssh_LDADD = \
    $(SSSD_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_cert.la \
    $(NULL)
endif

sssd_pac_SOURCES = \
    src/responder/pac/pacsrv.c \
    src/responder/pac/pacsrv_cmd.c \
    src/responder/pac/pacsrv_utils.c \
    $(SSSD_RESPONDER_OBJ)
sssd_pac_CFLAGS = \
    $(AM_CFLAGS) \
    $(NDR_KRB5PAC_CFLAGS)
sssd_pac_LDADD = \
    $(NDR_KRB5PAC_LIBS) \
    $(TDB_LIBS) \
    $(SSSD_LIBS) \
    libsss_idmap.la \
    $(SSSD_INTERNAL_LTLIBS)

if BUILD_IFP
sssd_ifp_SOURCES = \
    src/responder/ifp/ifpsrv.c \
    src/responder/ifp/ifpsrv_cmd.c \
    src/responder/ifp/ifp_iface_generated.c \
    src/responder/ifp/ifp_iface_generated.h \
    src/responder/ifp/ifp_iface.c \
    src/responder/ifp/ifp_iface_nodes.c \
    src/responder/ifp/ifpsrv_util.c \
    src/responder/ifp/ifp_domains.c \
    src/responder/ifp/ifp_components.c \
    src/responder/ifp/ifp_users.c \
    src/responder/ifp/ifp_groups.c \
    src/responder/ifp/ifp_cache.c \
    $(SSSD_RESPONDER_OBJ)
sssd_ifp_CFLAGS = \
    $(AM_CFLAGS)
sssd_ifp_LDADD = \
    $(SSSD_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_cert.la \
    $(NULL)
dist_dbuspolicy_DATA = \
    src/responder/ifp/org.freedesktop.sssd.infopipe.conf
dist_dbusservice_DATA = \
    src/responder/ifp/org.freedesktop.sssd.infopipe.service

if BUILD_CONFIG_LIB
sssd_ifp_LDADD += libsss_config.la
endif

endif

sssd_be_SOURCES = \
    src/providers/data_provider_be.c \
    src/providers/data_provider_req.c \
    src/providers/data_provider_fo.c \
    src/providers/data_provider_opts.c \
    src/providers/data_provider_callbacks.c \
    src/providers/dp_dyndns.c \
    src/providers/dp_ptask.c \
    src/providers/dp_refresh.c \
    src/monitor/monitor_iface_generated.c \
    src/monitor/monitor_iface_generated.h \
    src/providers/data_provider_iface_generated.c \
    src/providers/data_provider_iface_generated.h \
    $(SSSD_FAILOVER_OBJ)
sssd_be_LDADD = \
    $(LIBADD_DL) \
    $(SSSD_LIBS) \
    $(CARES_LIBS) \
    $(PAM_LIBS) \
    $(SSSD_INTERNAL_LTLIBS)
sssd_be_LDFLAGS = \
    -Wl,--version-script,$(srcdir)/src/providers/sssd_be.exports \
    -export-dynamic

if BUILD_PYTHON_BINDINGS
sss_obfuscate_pythondir = $(sbindir)
dist_sss_obfuscate_python_SCRIPTS = \
    src/tools/sss_obfuscate
endif



dist_noinst_DATA += \
    src/examples/sssd-example.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_TOOLS_OBJ)
sss_useradd_LDADD = \
    $(TOOLS_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_semanage.la \
    $(NULL)

sss_userdel_SOURCES = \
    src/tools/sss_userdel.c \
    $(SSSD_LCL_TOOLS_OBJ)
sss_userdel_LDADD = \
    $(TOOLS_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    $(CLIENT_LIBS) \
    libsss_semanage.la \
    $(NULL)
sss_userdel_CFLAGS = \
    $(AM_CFLAGS)

sss_groupadd_SOURCES = \
    src/tools/sss_groupadd.c \
    $(SSSD_TOOLS_OBJ)
sss_groupadd_LDADD = \
    $(TOOLS_LIBS) \
    $(SSSD_INTERNAL_LTLIBS)

sss_groupdel_SOURCES = \
    src/tools/sss_groupdel.c \
    $(SSSD_LCL_TOOLS_OBJ)
sss_groupdel_LDADD = \
    $(TOOLS_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    $(CLIENT_LIBS)
sss_groupdel_CFLAGS = $(AM_CFLAGS)

sss_usermod_SOURCES = \
    src/tools/sss_usermod.c \
    $(SSSD_LCL_TOOLS_OBJ)
sss_usermod_LDADD = \
    $(TOOLS_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    $(CLIENT_LIBS) \
    libsss_semanage.la \
    $(NULL)
sss_usermod_CFLAGS = $(AM_CFLAGS)

sss_groupmod_SOURCES = \
    src/tools/sss_groupmod.c \
    $(SSSD_LCL_TOOLS_OBJ)
sss_groupmod_LDADD = \
    $(TOOLS_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    $(CLIENT_LIBS)
sss_groupmod_CFLAGS = $(AM_CFLAGS)

sss_groupshow_SOURCES = \
    src/tools/sss_groupshow.c \
    $(SSSD_TOOLS_OBJ)
sss_groupshow_LDADD = \
    $(TOOLS_LIBS) \
    $(SSSD_INTERNAL_LTLIBS)

sss_cache_SOURCES = \
    src/tools/sss_cache.c \
    $(SSSD_LCL_TOOLS_OBJ)
sss_cache_LDADD = \
    $(TOOLS_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    $(CLIENT_LIBS)
sss_cache_CFLAGS = $(AM_CFLAGS)

sss_debuglevel_SOURCES = \
    src/tools/sss_debuglevel.c \
    $(SSSD_TOOLS_OBJ)
sss_debuglevel_LDADD = \
    $(TOOLS_LIBS) \
    $(SSSD_INTERNAL_LTLIBS)

sss_seed_SOURCES = \
    src/tools/sss_seed.c \
    $(SSSD_TOOLS_OBJ)
sss_seed_LDADD = \
    $(TOOLS_LIBS) \
    $(SSSD_INTERNAL_LTLIBS)

sss_signal_SOURCES = \
    src/tools/sss_signal.c \
    $(SSSD_TOOLS_OBJ) \
    $(NULL)
sss_signal_LDADD = \
    $(TOOLS_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    $(NULL)

sss_override_SOURCES = \
    src/tools/sss_override.c \
    src/tools/common/sss_colondb.c \
    $(SSSD_TOOLS_OBJ) \
    $(NULL)
sss_override_LDADD = \
    $(TOOLS_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    $(NULL)
sss_override_CFLAGS = \
    $(AM_CFLAGS) \
    $(NULL)

if BUILD_SUDO
sss_sudo_cli_SOURCES = \
    src/sss_client/common.c \
    src/sss_client/sudo/sss_sudo.c \
    src/sss_client/sudo/sss_sudo_response.c \
    src/sss_client/sudo_testcli/sudo_testcli.c
sss_sudo_cli_CFLAGS = $(AM_CFLAGS)
sss_sudo_cli_LDADD = $(CLIENT_LIBS)
endif

if BUILD_SSH
sss_ssh_authorizedkeys_SOURCES = \
    src/sss_client/common.c \
    src/sss_client/ssh/sss_ssh_client.c \
    src/sss_client/ssh/sss_ssh_authorizedkeys.c
sss_ssh_authorizedkeys_CFLAGS = $(AM_CFLAGS)
sss_ssh_authorizedkeys_LDADD = \
    $(SSSD_INTERNAL_LTLIBS) \
    $(CLIENT_LIBS) $(TALLOC_LIBS) $(POPT_LIBS)

sss_ssh_knownhostsproxy_SOURCES = \
    src/sss_client/common.c \
    src/sss_client/ssh/sss_ssh_client.c \
    src/sss_client/ssh/sss_ssh_knownhostsproxy.c
sss_ssh_knownhostsproxy_CFLAGS = $(AM_CFLAGS)
sss_ssh_knownhostsproxy_LDADD = \
    $(SSSD_INTERNAL_LTLIBS) \
    $(CLIENT_LIBS) $(TALLOC_LIBS) $(POPT_LIBS)
endif

#################
# Feature Tests #
#################
TESTS_ENVIRONMENT = LDB_MODULES_PATH=$(abs_top_builddir)/ldb_mod_test_dir \
                    SSS_TEST_DIR=$(TEST_DIR) \
                    ABS_TOP_SRCDIR=$(abs_top_srcdir) \
                    $(AUX_TESTS_ENVIRONMENT)

ldb_mod_test_dir: memberof.la
	$(MKDIR_P) $(builddir)/ldb_mod_test_dir
	cp $(builddir)/.libs/memberof.so $(builddir)/ldb_mod_test_dir

check_LTLIBRARIES = \
    libsss_test_common.la

libsss_test_common_la_SOURCES = \
    src/tests/common_tev.c \
    src/tests/common_dom.c \
    src/tests/leak_check.c \
    src/tests/common.c
libsss_test_common_la_LIBADD = \
    $(TALLOC_LIBS) \
    $(TEVENT_LIBS)

if HAVE_CHECK
libsss_test_common_la_SOURCES += \
    src/tests/common_check.c

check_LTLIBRARIES += \
    libdlopen_test_providers.la \
    libsss_nss_idmap_tests.la \
    $(NULL)

if BUILD_SAMBA
check_LTLIBRARIES += libsss_ad_tests.la
endif

libdlopen_test_providers_la_SOURCES = \
    $(sssd_be_SOURCES)
libdlopen_test_providers_la_CFLAGS = \
    $(AM_CFLAGS) \
    $(CHECK_CFLAGS) \
    -DUNIT_TESTING
libdlopen_test_providers_la_LIBADD = \
    $(PAM_LIBS) \
    $(SSSD_LIBS) \
    $(CARES_LIBS) \
    $(SSSD_INTERNAL_LTLIBS)
libdlopen_test_providers_la_LDFLAGS = \
    -shared \
    -avoid-version \
    -Wl,--version-script,$(srcdir)/src/providers/sssd_be.exports \
    -rpath $(abs_top_builddir) \
    -export-dynamic

libsss_nss_idmap_tests_la_SOURCES = $(libsss_nss_idmap_la_SOURCES)
libsss_nss_idmap_tests_la_LIBADD = $(libsss_nss_idmap_la_LIBADD)
libsss_nss_idmap_tests_la_LDFLAGS = \
    $(libsss_nss_idmap_la_LDFLAGS) \
    -shared \
    -rpath $(libdir) \
    -Wl,--version-script,$(srcdir)/src/sss_client/idmap/sss_nss_idmap.unit_tests

dist_noinst_DATA += src/sss_client/idmap/sss_nss_idmap.unit_tests

libsss_ad_tests_la_SOURCES = $(libsss_ad_la_SOURCES)
libsss_ad_tests_la_CFLAGS = $(libsss_ad_la_CFLAGS)
libsss_ad_tests_la_LIBADD = $(libsss_ad_la_LIBADD)
libsss_ad_tests_la_LDFLAGS = \
    -shared \
    -rpath $(abs_top_builddir) \
    $(NULL)

dlopen_tests_SOURCES = \
    src/tests/dlopen-tests.c
dlopen_tests_CFLAGS = \
    $(AM_CFLAGS) \
    $(CHECK_CFLAGS)
dlopen_tests_LDADD = \
    $(LIBADD_DL) \
    $(CHECK_LIBS)

EXTRA_sysdb_tests_DEPENDENCIES = \
    $(ldblib_LTLIBRARIES)
sysdb_tests_SOURCES = \
    src/tests/sysdb-tests.c
sysdb_tests_CFLAGS = \
    $(AM_CFLAGS) \
    $(CHECK_CFLAGS)
sysdb_tests_LDADD = \
    $(SSSD_LIBS) \
    $(CHECK_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la

EXTRA_sysdb_ssh_tests_DEPENDENCIES = \
    $(ldblib_LTLIBRARIES)
sysdb_ssh_tests_SOURCES = \
    src/tests/sysdb_ssh-tests.c
sysdb_ssh_tests_CFLAGS = \
    $(AM_CFLAGS)\
    $(CHECK_CFLAGS)
sysdb_ssh_tests_LDADD = \
    $(SSSD_LIBS) \
    $(CHECK_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la

strtonum_tests_SOURCES = \
    src/tests/strtonum-tests.c \
    src/util/strtonum.c
strtonum_tests_CFLAGS = \
    $(AM_CFLAGS) \
    $(CHECK_CFLAGS)
strtonum_tests_LDADD = \
    $(SSSD_LIBS) \
    $(CHECK_LIBS) \
    libsss_debug.la \
    libsss_test_common.la

krb5_utils_tests_SOURCES = \
    src/tests/krb5_utils-tests.c \
    src/providers/krb5/krb5_utils.c \
    src/providers/krb5/krb5_ccache.c \
    src/providers/krb5/krb5_common.c \
    src/providers/krb5/krb5_opts.c \
    src/util/sss_krb5.c \
    src/providers/data_provider_fo.c \
    src/providers/data_provider_opts.c \
    src/providers/data_provider_callbacks.c \
    src/util/become_user.c \
    $(SSSD_FAILOVER_OBJ) \
    $(NULL)
krb5_utils_tests_CFLAGS = \
    $(AM_CFLAGS) \
    $(KRB5_CFLAGS) \
    $(CHECK_CFLAGS)
krb5_utils_tests_LDADD = \
    $(SSSD_LIBS)\
    $(CARES_LIBS) \
    $(KRB5_LIBS) \
    $(CHECK_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la


check_and_open_tests_SOURCES = \
    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 = \
    libsss_debug.la \
    $(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 = \
    src/tests/files-tests.c \
    src/util/check_and_open.c \
    src/util/atomic_io.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_INTERNAL_LTLIBS)

SSSD_RESOLV_TESTS_OBJ = \
    $(SSSD_RESOLV_OBJ)

resolv_tests_SOURCES = \
    src/tests/resolv-tests.c \
    src/tests/common.c \
    $(SSSD_RESOLV_TESTS_OBJ)
resolv_tests_CFLAGS = \
    $(AM_CFLAGS) \
    $(CHECK_CFLAGS) \
    -DBUILD_TXT
resolv_tests_LDADD = \
    $(SSSD_LIBS) \
    $(CHECK_LIBS) \
    $(CARES_LIBS) \
    libsss_debug.la \
    libsss_test_common.la

refcount_tests_SOURCES = \
    src/tests/refcount-tests.c \
    $(NULL)
refcount_tests_CFLAGS = \
    $(CHECK_CFLAGS)
refcount_tests_LDADD = \
    $(SSSD_LIBS) \
    $(CHECK_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la

fail_over_tests_SOURCES = \
    src/tests/fail_over-tests.c \
    $(SSSD_FAILOVER_OBJ) \
    $(NULL)
fail_over_tests_CFLAGS = \
    $(CHECK_CFLAGS)
fail_over_tests_LDADD = \
    $(SSSD_LIBS) \
    $(CHECK_LIBS) \
    $(CARES_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la

find_uid_tests_SOURCES = \
    src/tests/find_uid-tests.c \
    src/util/find_uid.c \
    src/util/atomic_io.c \
    src/util/strtonum.c
find_uid_tests_CFLAGS = \
    $(AM_CFLAGS) \
    $(TALLOC_CFLAGS) \
    $(DHASH_CFLAGS) \
    $(CHECK_CFLAGS) \
    $(SYSTEMD_LOGIN_CFLAGS)
find_uid_tests_LDADD = \
    libsss_debug.la \
    $(TALLOC_LIBS) \
    $(DHASH_LIBS) \
    $(CHECK_LIBS) \
    $(SYSTEMD_LOGIN_LIBS) \
    libsss_test_common.la

auth_tests_SOURCES = \
    src/tests/auth-tests.c
auth_tests_CFLAGS = \
    $(AM_CFLAGS) \
    $(CHECK_CFLAGS)
auth_tests_LDADD = \
    $(SSSD_LIBS) \
    $(CHECK_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la

ipa_ldap_opt_tests_SOURCES = \
    src/providers/data_provider_opts.c \
    src/providers/ldap/sdap.c \
    src/providers/ldap/sdap_range.c \
    src/providers/ldap/sdap_domain.c \
    src/providers/ldap/ldap_opts.c \
    src/providers/ad/ad_opts.c \
    src/providers/ipa/ipa_opts.c \
    src/providers/krb5/krb5_opts.c \
    src/util/sss_ldap.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) \
    $(LDB_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    $(OPENLDAP_LIBS) \
    libsss_test_common.la

ad_ldap_opt_tests_SOURCES = \
    src/providers/ldap/ldap_opts.c \
    src/providers/ad/ad_opts.c \
    src/providers/krb5/krb5_opts.c \
    src/tests/ad_ldap_opt-tests.c
ad_ldap_opt_tests_CFLAGS = \
    $(AM_CFLAGS) \
    $(CHECK_CFLAGS)
ad_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 \
    src/providers/simple/simple_access_check.c \
    $(NULL)
simple_access_tests_LDADD = \
    $(LIBADD_DL) \
    $(CHECK_LIBS) \
    $(SSSD_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la \
    libdlopen_test_providers.la \
    $(NULL)

util_tests_SOURCES = \
    src/tests/util-tests.c \
    $(NULL)
util_tests_CFLAGS = \
    $(AM_CFLAGS) \
    $(CHECK_CFLAGS) \
    $(NULL)
util_tests_LDADD = \
    $(SSSD_LIBS) \
    $(CHECK_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la \
    $(NULL)

safe_format_tests_SOURCES = \
    src/tests/safe-format-tests.c
safe_format_tests_CFLAGS = \
    $(AM_CFLAGS) \
    $(CHECK_CFLAGS)
safe_format_tests_LDADD = \
    $(SSSD_LIBS) \
    $(CHECK_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la

debug_tests_SOURCES = \
    src/tests/debug-tests.c \
    src/tests/common.c
debug_tests_CFLAGS = \
    $(AM_CFLAGS) \
    $(CHECK_CFLAGS)
debug_tests_LDADD = \
    $(SSSD_LIBS) \
    $(CHECK_LIBS) \
    libsss_debug.la

crypto_tests_SOURCES = \
    src/tests/crypto-tests.c
crypto_tests_CFLAGS = \
    $(AM_CFLAGS) \
    $(CHECK_CFLAGS)
crypto_tests_LDADD = \
    $(CHECK_LIBS) \
    $(POPT_LIBS) \
    $(TALLOC_LIBS) \
    libsss_crypt.la \
    libsss_debug.la \
    libsss_test_common.la

ipa_hbac_tests_SOURCES = \
    src/tests/ipa_hbac-tests.c
ipa_hbac_tests_CFLAGS = \
    $(AM_CFLAGS) \
    $(CHECK_CFLAGS)
ipa_hbac_tests_LDADD = \
    $(SSSD_LIBS) \
    $(CHECK_LIBS) \
    libsss_test_common.la \
    libipa_hbac.la

sss_idmap_tests_SOURCES = \
    src/tests/sss_idmap-tests.c
sss_idmap_tests_CFLAGS = \
    $(AM_CFLAGS) \
    $(CHECK_CFLAGS)
sss_idmap_tests_LDADD = \
    $(CHECK_LIBS) \
    $(TALLOC_LIBS) \
    libsss_test_common.la \
    libsss_idmap.la

responder_socket_access_tests_SOURCES = \
    src/tests/responder_socket_access-tests.c \
    src/responder/common/responder_common.c \
    src/responder/common/responder_packet.c \
    src/responder/common/responder_cmd.c
responder_socket_access_tests_CFLAGS = \
    $(AM_CFLAGS) \
    $(CHECK_CFLAGS)
responder_socket_access_tests_LDADD = \
    $(CHECK_LIBS) \
    $(SSSD_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la
endif

stress_tests_SOURCES = \
    src/tests/stress-tests.c
stress_tests_LDADD = \
    $(SSSD_LIBS) \
    libsss_test_common.la

krb5_child_test_SOURCES = \
    src/tests/krb5_child-test.c \
    src/providers/krb5/krb5_utils.c \
    src/providers/krb5/krb5_ccache.c \
    src/providers/krb5/krb5_child_handler.c \
    src/providers/krb5/krb5_common.c \
    src/providers/krb5/krb5_opts.c \
    src/util/sss_krb5.c \
    src/providers/data_provider_fo.c \
    src/providers/data_provider_opts.c \
    src/providers/data_provider_callbacks.c \
    src/util/become_user.c \
    $(SSSD_FAILOVER_OBJ) \
    $(NULL)
krb5_child_test_CFLAGS = \
    $(AM_CFLAGS) \
    -DKRB5_CHILD_DIR=\"$(builddir)\" \
    $(KRB5_CFLAGS) \
    $(CHECK_CFLAGS)
krb5_child_test_LDADD = \
    $(SSSD_LIBS) \
    $(CARES_LIBS) \
    $(KRB5_LIBS) \
    $(CHECK_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la

if BUILD_DBUS_TESTS

sbus_tests_SOURCES = \
   src/tests/common_dbus.c \
   src/tests/sbus_tests.c
sbus_tests_CFLAGS = \
    $(CHECK_CFLAGS)
sbus_tests_LDADD = \
    $(SSSD_INTERNAL_LTLIBS) \
    $(SSSD_LIBS) \
    $(CHECK_LIBS)

sbus_codegen_tests_SOURCES = \
   src/tests/common_dbus.c \
   src/tests/sbus_codegen_tests.c \
   src/tests/sbus_codegen_tests_generated.c \
   src/tests/sbus_codegen_tests_generated.h
sbus_codegen_tests_CFLAGS = \
    $(CHECK_CFLAGS)
sbus_codegen_tests_LDADD = \
    $(SSSD_INTERNAL_LTLIBS) \
    $(SSSD_LIBS) \
    $(CHECK_LIBS)

endif # BUILD_DBUS_TESTS

if BUILD_IFP
if BUILD_CONFIG_LIB
sss_config_tests_SOURCES = \
    src/tests/sss_config-tests.c \
    src/tests/common.c
sss_config_tests_CFLAGS = \
    $(AM_CFLAGS) \
    $(CHECK_CFLAGS)
sss_config_tests_LDADD = \
    $(SSSD_LIBS) \
    $(CHECK_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_config.la \
    libsss_test_common.la
endif # BUILD_CONFIG_LIB
endif # BUILD_IFP

if HAVE_CMOCKA

TEST_MOCK_RESP_OBJ = \
     src/tests/cmocka/common_mock_resp.c \
     src/tests/cmocka/common_mock_resp_dp.c \
     src/responder/common/responder_packet.c \
     src/responder/common/responder_cmd.c \
     src/responder/common/negcache.c \
     src/responder/common/responder_common.c \
     src/responder/common/responder_cache_req.c

TEST_MOCK_PROVIDER_OBJ = \
     src/util/sss_ldap.c \
     src/providers/data_provider_opts.c \
     src/providers/ldap/ldap_opts.c \
     src/providers/ldap/ldap_options.c \
     src/providers/ldap/sdap_domain.c \
     src/providers/ldap/sdap.c \
     src/providers/ldap/sdap_utils.c \
     src/providers/ldap/sdap_range.c \
     src/tests/cmocka/common_mock_sdap.c \
     src/tests/cmocka/common_mock_sysdb_objects.c

EXTRA_nss_srv_tests_DEPENDENCIES = \
     $(ldblib_LTLIBRARIES)
nss_srv_tests_SOURCES = \
     $(TEST_MOCK_RESP_OBJ) \
     src/tests/cmocka/test_nss_srv.c \
     src/responder/nss/nsssrv_cmd.c \
     src/responder/nss/nsssrv_netgroup.c \
     src/responder/nss/nsssrv_services.c \
     src/responder/nss/nsssrv_mmap_cache.c
nss_srv_tests_CFLAGS = \
    $(AM_CFLAGS)
nss_srv_tests_LDFLAGS = \
    -Wl,-wrap,sss_ncache_check_user \
    -Wl,-wrap,sss_ncache_check_uid \
    -Wl,-wrap,sss_ncache_check_sid \
    -Wl,-wrap,sss_packet_get_body \
    -Wl,-wrap,sss_packet_get_cmd \
    -Wl,-wrap,sss_cmd_send_empty \
    -Wl,-wrap,sss_cmd_done
nss_srv_tests_LDADD = \
    $(CMOCKA_LIBS) \
    $(SSSD_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la \
    libsss_idmap.la

EXTRA_pam_srv_tests_DEPENDENCIES = \
    $(ldblib_LTLIBRARIES) \
    $(NULL)
pam_srv_tests_SOURCES = \
    $(TEST_MOCK_RESP_OBJ) \
    src/tests/cmocka/test_pam_srv.c \
    src/sss_client/pam_message.c \
    src/responder/pam/pamsrv_cmd.c \
    src/responder/pam/pamsrv_p11.c \
    src/responder/pam/pam_helpers.c \
    src/responder/pam/pamsrv_dp.c \
    src/responder/pam/pam_LOCAL_domain.c \
    $(NULL)
pam_srv_tests_CFLAGS = \
    -U SSSD_LIBEXEC_PATH -DSSSD_LIBEXEC_PATH=\"$(abs_builddir)\" \
    $(AM_CFLAGS) \
    $(NULL)
pam_srv_tests_LDFLAGS = \
    -Wl,-wrap,sss_packet_get_body \
    -Wl,-wrap,sss_packet_get_cmd \
    -Wl,-wrap,sss_cmd_send_empty \
    -Wl,-wrap,sss_cmd_done \
    -Wl,-wrap,pam_dp_send_req \
    $(NULL)
pam_srv_tests_LDADD = \
    $(CMOCKA_LIBS) \
    $(PAM_LIBS) \
    $(SSSD_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la \
    libsss_idmap.la \
    $(NULL)

EXTRA_responder_get_domains_tests_DEPENDENCIES = \
     $(ldblib_LTLIBRARIES)
responder_get_domains_tests_SOURCES = \
     src/responder/common/responder_get_domains.c \
     src/tests/cmocka/test_responder_common.c \
     src/tests/cmocka/common_mock_resp.c
responder_get_domains_tests_CFLAGS = \
    $(AM_CFLAGS)
responder_get_domains_tests_LDFLAGS = \
    -Wl,-wrap,sss_parse_name_for_domains
responder_get_domains_tests_LDADD = \
    $(CMOCKA_LIBS) \
    $(SSSD_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la

sbus_internal_tests_SOURCES = \
    src/tests/cmocka/sbus_internal_tests.c \
    src/sbus/sssd_dbus_request.c
sbus_internal_tests_CFLAGS = \
    $(AM_CFLAGS)
sbus_internal_tests_LDFLAGS = \
    -Wl,-wrap,dbus_bus_get \
    -Wl,-wrap,dbus_pending_call_steal_reply \
    -Wl,-wrap,dbus_pending_call_unref \
    -Wl,-wrap,dbus_message_unref \
    -Wl,-wrap,dbus_connection_unref \
    -Wl,-wrap,dbus_connection_set_exit_on_disconnect \
    -Wl,-wrap,hash_lookup
sbus_internal_tests_LDADD = \
    $(CMOCKA_LIBS) \
    $(SSSD_LIBS) \
    libsss_util.la \
    libsss_crypt.la \
    libsss_debug.la \
    libsss_test_common.la

test_find_uid_SOURCES = \
    src/tests/cmocka/test_find_uid.c \
    src/util/find_uid.c \
    src/util/atomic_io.c \
    src/util/strtonum.c
test_find_uid_CFLAGS = \
    $(AM_CFLAGS) \
    $(TALLOC_CFLAGS) \
    $(DHASH_CFLAGS) \
    $(SYSTEMD_LOGIN_CFLAGS)
test_find_uid_LDADD = \
    $(TALLOC_LIBS) \
    $(DHASH_LIBS) \
    $(CMOCKA_LIBS) \
    $(SYSTEMD_LOGIN_LIBS) \
    libsss_debug.la

test_io_SOURCES = \
    src/tests/cmocka/test_io.c \
    src/util/io.c \
    src/tests/common.c
test_io_CFLAGS = \
    $(AM_CFLAGS)
test_io_LDADD = \
    $(CMOCKA_LIBS)

EXTRA_test_negcache_DEPENDENCIES = \
    $(ldblib_LTLIBRARIES)
test_negcache_SOURCES = \
    $(SSSD_RESPONDER_OBJ) \
    src/tests/cmocka/test_negcache.c
test_negcache_CFLAGS = \
    $(AM_CFLAGS) \
    $(TALLOC_CFLAGS) \
    $(DHASH_CFLAGS)
test_negcache_LDADD = \
    $(CMOCKA_LIBS) \
    $(SSSD_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la \
    libsss_idmap.la

test_authtok_SOURCES = \
    src/tests/cmocka/test_authtok.c \
    src/util/authtok.c \
    src/util/authtok-utils.c \
    src/util/util.c
test_authtok_CFLAGS = \
    $(AM_CFLAGS) \
    $(TALLOC_CFLAGS) \
    $(POPT_CFLAGS) \
    $(DHASH_CFLAGS)
test_authtok_LDADD = \
    $(TALLOC_LIBS) \
    $(CMOCKA_LIBS) \
    $(DHASH_LIBS) \
    $(POPT_LIBS) \
    libsss_test_common.la \
    libsss_debug.la

sss_nss_idmap_tests_SOURCES = \
    src/tests/cmocka/sss_nss_idmap-tests.c
sss_nss_idmap_tests_CFLAGS = \
    $(AM_CFLAGS)
sss_nss_idmap_tests_LDADD = \
    $(CMOCKA_LIBS) \
    libsss_nss_idmap_tests.la \
    $(NULL)

EXTRA_dyndns_tests_DEPENDENCIES = \
     $(ldblib_LTLIBRARIES)
dyndns_tests_SOURCES = \
     $(SSSD_RESOLV_OBJ) \
     src/tests/cmocka/common_mock_be.c \
     src/tests/cmocka/test_dyndns.c \
     src/providers/data_provider_opts.c
dyndns_tests_CFLAGS = \
    $(AM_CFLAGS) \
    -DDYNDNS_TIMEOUT=2
dyndns_tests_LDFLAGS = \
    -Wl,-wrap,execv \
    -Wl,-wrap,getifaddrs \
    -Wl,-wrap,freeifaddrs
dyndns_tests_LDADD = \
    $(CARES_LIBS) \
    $(CMOCKA_LIBS) \
    $(SSSD_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la

fqnames_tests_SOURCES = \
    src/tests/cmocka/test_fqnames.c
fqnames_tests_CFLAGS = \
    $(AM_CFLAGS)
fqnames_tests_LDADD = \
    $(CMOCKA_LIBS) \
    $(SSSD_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la

nestedgroups_tests_SOURCES = \
    $(TEST_MOCK_PROVIDER_OBJ) \
    src/providers/ldap/sdap_idmap.c \
    src/tests/cmocka/test_nested_groups.c \
    src/tests/cmocka/common_mock_be.c \
    src/providers/ldap/sdap_async_nested_groups.c \
    src/providers/ldap/sdap_ad_groups.c \
    src/providers/ipa/ipa_dn.c \
    $(NULL)
nestedgroups_tests_CFLAGS = \
    $(AM_CFLAGS) \
    -DEXTERNAL_MEMBERS_CHUNK=1 \
    $(NULL)
nestedgroups_tests_LDADD = \
    $(CMOCKA_LIBS) \
    $(SSSD_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_idmap.la \
    libsss_test_common.la \
    $(NULL)

test_sss_idmap_SOURCES = \
    src/tests/cmocka/test_sss_idmap.c
test_sss_idmap_CFLAGS = \
    $(AM_CFLAGS)
test_sss_idmap_LDADD = \
    $(CMOCKA_LIBS) \
    $(POPT_LIBS) \
    libsss_idmap.la \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la

test_ipa_idmap_SOURCES = \
    src/tests/cmocka/test_ipa_idmap.c \
    src/providers/ipa/ipa_idmap.c
test_ipa_idmap_CFLAGS = \
    $(AM_CFLAGS)
test_ipa_idmap_LDFLAGS = \
    -Wl,-wrap,sysdb_get_ranges
test_ipa_idmap_LDADD = \
    $(CMOCKA_LIBS) \
    $(POPT_LIBS) \
    libsss_idmap.la \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la

test_utils_SOURCES = \
    src/tests/cmocka/test_utils.c \
    src/tests/cmocka/test_sss_ssh.c \
    src/tests/cmocka/test_string_utils.c \
    $(NULL)
test_utils_CFLAGS = \
    $(AM_CFLAGS)
test_utils_LDADD = \
    $(CMOCKA_LIBS) \
    $(POPT_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la

test_search_bases_SOURCES = \
    src/tests/cmocka/test_search_bases.c
test_search_bases_LDADD = \
    $(CMOCKA_LIBS) \
    $(TALLOC_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_ldap_common.la \
    libsss_test_common.la \
    libdlopen_test_providers.la \
    $(NULL)

test_ldap_auth_SOURCES = \
    src/tests/cmocka/test_ldap_auth.c \
    src/tests/cmocka/test_expire_common.c \
    $(NULL)
test_ldap_auth_LDADD = \
    $(CMOCKA_LIBS) \
    $(TALLOC_LIBS) \
    libsss_ldap_common.la \
    libsss_test_common.la \
    libdlopen_test_providers.la \
    $(NULL)

test_ldap_id_cleanup_SOURCES = \
    src/tests/cmocka/test_ldap_id_cleanup.c \
    $(NULL)
test_ldap_id_cleanup_LDADD = \
    $(CMOCKA_LIBS) \
    $(POPT_LIBS) \
    $(TALLOC_LIBS) \
    $(TEVENT_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_ldap_common.la \
    libsss_test_common.la \
    libdlopen_test_providers.la \
    $(NULL)

test_sdap_access_SOURCES = \
    src/tests/cmocka/test_sdap_access.c \
    src/tests/cmocka/test_expire_common.c \
    $(NULL)
test_sdap_access_LDADD = \
    $(CMOCKA_LIBS) \
    $(TALLOC_LIBS) \
    libsss_ldap_common.la \
    libsss_test_common.la \
    libdlopen_test_providers.la \
    $(NULL)

ad_access_filter_tests_SOURCES = \
    src/tests/cmocka/test_ad_access_filter.c
ad_access_filter_tests_LDADD = \
    $(CMOCKA_LIBS) \
    $(POPT_LIBS) \
    $(TALLOC_LIBS) \
    $(TEVENT_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_ldap_common.la \
    libsss_ad_tests.la \
    libsss_test_common.la \
    libdlopen_test_providers.la \
    $(NULL)

ad_gpo_tests_SOURCES = \
    src/tests/cmocka/test_ad_gpo.c
ad_gpo_tests_CFLAGS = \
    $(AM_CFLAGS) \
    $(NDR_NBT_CFLAGS) \
    $(NULL)
ad_gpo_tests_LDADD = \
    $(CMOCKA_LIBS) \
    $(SSSD_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    $(NDR_NBT_LIBS) \
    libsss_ldap_common.la \
    libsss_idmap.la \
    libsss_krb5_common.la \
    libsss_ad_tests.la \
    libsss_test_common.la \
    libdlopen_test_providers.la \
    $(NULL)

ad_common_tests_SOURCES = \
    $(libsss_krb5_common_la_SOURCES) \
    src/tests/cmocka/common_mock_krb5.c \
    src/tests/cmocka/test_ad_common.c \
    src/providers/ad/ad_opts.c \
    $(NULL)
ad_common_tests_LDFLAGS = \
    -Wl,-wrap,sdap_set_sasl_options \
    -Wl,-wrap,krb5_kt_default \
    $(NULL)
ad_common_tests_LDADD = \
    $(CMOCKA_LIBS) \
    $(SSSD_LIBS) \
    $(KEYUTILS_LIBS) \
    $(KRB5_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_ldap_common.la \
    libsss_test_common.la \
    libdlopen_test_providers.la \
    $(NULL)

dp_opt_tests_SOURCES = \
    src/providers/data_provider_opts.c \
    src/tests/cmocka/test_dp_opts.c
dp_opt_tests_CFLAGS = \
    $(AM_CFLAGS)
dp_opt_tests_LDADD = \
    $(CMOCKA_LIBS) \
    $(TALLOC_LIBS) \
    $(POPT_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la

sdap_tests_SOURCES = \
    src/providers/data_provider_opts.c \
    src/providers/ldap/sdap_domain.c \
    src/providers/ldap/sdap.c \
    src/providers/ldap/sdap_range.c \
    src/providers/ldap/ldap_opts.c \
    src/providers/ipa/ipa_opts.c \
    src/util/sss_ldap.c \
    src/tests/cmocka/test_sdap.c \
    $(NULL)
sdap_tests_CFLAGS = \
    $(AM_CFLAGS) \
    $(NULL)
sdap_tests_LDFLAGS = \
    -Wl,-wrap,ldap_set_option \
    -Wl,-wrap,ldap_get_dn \
    -Wl,-wrap,ldap_memfree \
    -Wl,-wrap,ldap_get_values_len \
    -Wl,-wrap,ldap_value_free_len \
    -Wl,-wrap,ldap_first_attribute \
    -Wl,-wrap,ldap_next_attribute \
    $(NULL)
sdap_tests_LDADD = \
    $(CMOCKA_LIBS) \
    $(TALLOC_LIBS) \
    $(LDB_LIBS) \
    $(POPT_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    $(OPENLDAP_LIBS) \
    libsss_test_common.la \
    $(NULL)

if BUILD_IFP
ifp_tests_SOURCES = \
     $(TEST_MOCK_RESP_OBJ) \
    src/tests/cmocka/test_ifp.c \
    src/responder/ifp/ifpsrv_cmd.c \
    src/responder/ifp/ifp_iface_generated.c \
    src/responder/ifp/ifpsrv_util.c \
    src/responder/common/responder_utils.c \
    $(NULL)
ifp_tests_CFLAGS = \
    $(AM_CFLAGS)
ifp_tests_LDADD = \
    $(CMOCKA_LIBS) \
    $(SSSD_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la

sss_sifp_tests_SOURCES = \
    src/tests/cmocka/test_sss_sifp.c \
    src/lib/sifp/sss_sifp_attrs.c \
    src/lib/sifp/sss_sifp_common.c \
    src/lib/sifp/sss_sifp_parser.c \
    src/lib/sifp/sss_sifp_utils.c \
    src/lib/sifp/sss_sifp_dbus.c \
    src/lib/sifp/sss_sifp.c
sss_sifp_tests_CFLAGS = \
    $(AM_CFLAGS) \
    -I$(top_srcdir)/src/lib/sifp
sss_sifp_tests_LDFLAGS = \
    -Wl,-wrap,dbus_bus_get \
    -Wl,-wrap,dbus_connection_send_with_reply_and_block
sss_sifp_tests_LDADD = \
    $(CMOCKA_LIBS) \
    $(DBUS_LIBS) \
    $(TALLOC_LIBS) \
    $(DHASH_LIBS) \
    $(POPT_LIBS) \
    $(SSSD_INTERNAL_LTLIBS)
endif # BUILD_IFP

test_sysdb_views_SOURCES = \
    src/tests/cmocka/test_sysdb_views.c \
    src/providers/ipa/ipa_utils.c \
    $(NULL)
test_sysdb_views_CFLAGS = \
    $(AM_CFLAGS) \
    $(NULL)
test_sysdb_views_LDADD = \
    $(CMOCKA_LIBS) \
    $(LDB_LIBS) \
    $(POPT_LIBS) \
    $(TALLOC_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la \
    $(NULL)

test_sysdb_subdomains_SOURCES = \
    src/tests/cmocka/test_sysdb_subdomains.c \
    $(NULL)
test_sysdb_subdomains_CFLAGS = \
    $(AM_CFLAGS) \
    $(NULL)
test_sysdb_subdomains_LDADD = \
    $(CMOCKA_LIBS) \
    $(LDB_LIBS) \
    $(POPT_LIBS) \
    $(TALLOC_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la \
    $(NULL)

test_sysdb_utils_SOURCES = \
    src/tests/cmocka/test_sysdb_utils.c \
    $(NULL)
test_sysdb_utils_CFLAGS = \
    $(AM_CFLAGS) \
    $(NULL)
test_sysdb_utils_LDADD = \
    $(CMOCKA_LIBS) \
    $(LDB_LIBS) \
    $(POPT_LIBS) \
    $(TALLOC_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la \
    $(NULL)

test_be_ptask_SOURCES = \
    src/tests/cmocka/common_mock_be.c \
    src/tests/cmocka/test_be_ptask.c \
    src/providers/dp_ptask.c \
    $(NULL)
test_be_ptask_CFLAGS = \
    $(AM_CFLAGS) \
    $(NULL)
test_be_ptask_LDADD = \
    $(CMOCKA_LIBS) \
    $(POPT_LIBS) \
    $(TALLOC_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la \
    $(NULL)

test_copy_ccache_SOURCES = \
    src/tests/cmocka/test_copy_ccache.c \
    src/providers/krb5/krb5_ccache.c \
    src/util/sss_krb5.c \
    $(NULL)
test_copy_ccache_CFLAGS = \
    $(AM_CFLAGS) \
    $(NULL)
test_copy_ccache_LDADD = \
    $(CMOCKA_LIBS) \
    $(POPT_LIBS) \
    $(TALLOC_LIBS) \
    $(KRB5_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la \
    $(NULL)

test_copy_keytab_SOURCES = \
    src/tests/cmocka/common_mock_krb5.c \
    src/tests/cmocka/test_copy_keytab.c \
    src/providers/krb5/krb5_keytab.c \
    src/util/sss_krb5.c \
    $(NULL)
test_copy_keytab_CFLAGS = \
    $(AM_CFLAGS) \
    $(NULL)
test_copy_keytab_LDADD = \
    $(CMOCKA_LIBS) \
    $(POPT_LIBS) \
    $(TALLOC_LIBS) \
    $(KRB5_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la \
    $(NULL)

dummy_child_SOURCES = \
    src/tests/cmocka/dummy_child.c \
    $(NULL)
dummy_child_LDADD = \
    $(POPT_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    $(NULL)

test_child_common_SOURCES = \
    src/tests/cmocka/test_child_common.c \
    src/util/child_common.c \
    src/util/signal.c \
    src/util/atomic_io.c \
    src/util/util_errors.c \
    src/util/util.c \
    $(NULL)
test_child_common_CFLAGS = \
    $(AM_CFLAGS) \
    -DCHILD_DIR=\"$(builddir)\" \
    $(NULL)
test_child_common_LDFLAGS = \
    -Wl,-wrap,child_io_destructor \
    $(NULL)
test_child_common_LDADD = \
    $(CMOCKA_LIBS) \
    $(POPT_LIBS) \
    $(TALLOC_LIBS) \
    $(DHASH_LIBS) \
    libsss_debug.la \
    libsss_test_common.la \
    $(NULL)

responder_cache_req_tests_SOURCES = \
    $(TEST_MOCK_RESP_OBJ) \
    src/tests/cmocka/test_responder_cache_req.c \
    $(NULL)
responder_cache_req_tests_CFLAGS = \
    $(AM_CFLAGS) \
    $(NULL)
responder_cache_req_tests_LDFLAGS = \
    -Wl,-wrap,sss_dp_get_account_send \
    $(NULL)
responder_cache_req_tests_LDADD = \
    $(CMOCKA_LIBS) \
    $(SSSD_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la \
    $(NULL)

test_sbus_opath_SOURCES = \
    src/tests/cmocka/test_sbus_opath.c \
    $(NULL)
test_sbus_opath_CFLAGS = \
    $(AM_CFLAGS)
test_sbus_opath_LDADD = \
    $(CMOCKA_LIBS) \
    $(SSSD_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_debug.la \
    libsss_test_common.la

if HAVE_LIBRESOLV
test_resolv_fake_SOURCES = \
    src/tests/cmocka/test_resolv_fake.c \
    src/resolv/async_resolv.c \
    $(NULL)
test_resolv_fake_CFLAGS = \
    $(AM_CFLAGS) \
    $(NULL)
test_resolv_fake_LDFLAGS = \
    -Wl,-wrap,ares_query \
    $(NULL)
test_resolv_fake_LDADD = \
    $(CMOCKA_LIBS) \
    $(POPT_LIBS) \
    $(TALLOC_LIBS) \
    $(CARES_LIBS) \
    $(DHASH_LIBS) \
    $(RESOLV_LIBS) \
    libsss_debug.la \
    libsss_test_common.la \
    $(NULL)
endif # HAVE_LIBRESOLV

test_fo_srv_SOURCES = \
    src/tests/cmocka/test_fo_srv.c \
    src/providers/fail_over.c \
    src/providers/fail_over_srv.c \
    $(NULL)
test_fo_srv_CFLAGS = \
    $(AM_CFLAGS) \
    $(NULL)
test_fo_srv_LDADD = \
    $(CMOCKA_LIBS) \
    $(POPT_LIBS) \
    $(TALLOC_LIBS) \
    $(CARES_LIBS) \
    $(DHASH_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la \
    $(NULL)

test_ipa_subdom_util_SOURCES = \
    src/tests/cmocka/test_ipa_subdomains_utils.c \
    src/providers/ipa/ipa_subdomains_utils.c \
    $(NULL)
test_ipa_subdom_util_CFLAGS = \
    $(AM_CFLAGS) \
    $(NULL)
test_ipa_subdom_util_LDADD = \
    $(CMOCKA_LIBS) \
    $(POPT_LIBS) \
    $(TALLOC_LIBS) \
    $(LDB_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la \
    $(NULL)

test_ipa_subdom_server_SOURCES = \
    $(libsss_krb5_common_la_SOURCES) \
    src/tests/cmocka/common_mock_sdap.c \
    src/tests/cmocka/common_mock_be.c \
    src/tests/cmocka/common_mock_krb5.c \
    src/tests/cmocka/test_ipa_subdomains_server.c \
    src/providers/ipa/ipa_subdomains_server.c \
    src/providers/ipa/ipa_subdomains_utils.c \
    src/providers/ipa/ipa_opts.c \
    $(NULL)
test_ipa_subdom_server_CFLAGS = \
    $(AM_CFLAGS) \
    -DIPA_TRUST_KEYTAB_DIR=TEST_DIR\"/tp_test_ipa_subdom_server-test_ipa_subdomains_server\" \
    $(NULL)
test_ipa_subdom_server_LDFLAGS = \
    -Wl,-wrap,krb5_kt_default \
    -Wl,-wrap,execle \
    -Wl,-wrap,execve \
    -Wl,-wrap,rename \
    -Wl,-wrap,sss_unique_filename \
    $(NULL)
test_ipa_subdom_server_LDADD = \
    $(CMOCKA_LIBS) \
    $(SSSD_LIBS) \
    $(KEYUTILS_LIBS) \
    $(KRB5_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_ldap_common.la \
    libsss_ad_tests.la \
    libsss_test_common.la \
    libdlopen_test_providers.la \
    $(NULL)

test_tools_colondb_SOURCES = \
    src/tests/cmocka/test_tools_colondb.c \
    src/tools/common/sss_colondb.c \
    $(NULL)
test_tools_colondb_CFLAGS = \
    $(AM_CFLAGS) \
    $(NULL)
test_tools_colondb_LDFLAGS = \
    $(NULL)
test_tools_colondb_LDADD = \
    $(CMOCKA_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    $(POPT_LIBS) \
    libsss_test_common.la \
    $(NULL)

test_krb5_wait_queue_SOURCES = \
    src/tests/cmocka/common_mock_be.c \
    src/tests/cmocka/test_krb5_wait_queue.c \
    src/providers/krb5/krb5_wait_queue.c \
    $(NULL)
test_krb5_wait_queue_CFLAGS = \
    $(AM_CFLAGS) \
    $(NULL)
test_krb5_wait_queue_LDADD = \
    $(CMOCKA_LIBS) \
    $(POPT_LIBS) \
    $(DHASH_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_test_common.la \
    $(NULL)

test_cert_utils_SOURCES = \
    src/tests/cmocka/test_cert_utils.c \
    $(NULL)
test_cert_utils_CFLAGS = \
    $(AM_CFLAGS) \
    $(CRYPTO_CFLAGS) \
    $(NULL)
test_cert_utils_LDADD = \
    $(CMOCKA_LIBS) \
    $(POPT_LIBS) \
    $(TALLOC_LIBS) \
    $(CRYPTO_LIBS) \
    libsss_debug.la \
    libsss_test_common.la \
    libsss_cert.la \
    libsss_crypt.la \
    $(NULL)

test_data_provider_be_SOURCES = \
    src/providers/data_provider_be.c \
    src/tests/cmocka/test_data_provider_be.c \
    src/tests/cmocka/common_mock_be.c \
    $(NULL)
test_data_provider_be_CFLAGS = \
    $(AM_CFLAGS) \
    -DUNIT_TESTING \
    $(NULL)
test_data_provider_be_LDFLAGS = \
    -Wl,-wrap,_tevent_add_timer \
    $(NULL)
test_data_provider_be_LDADD = \
    $(CMOCKA_LIBS) \
    $(PAM_LIBS) \
    $(SSSD_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    $(LIBADD_DL) \
    libsss_test_common.la \
    libdlopen_test_providers.la \
    $(NULL)

test_ipa_dn_SOURCES = \
    src/providers/ipa/ipa_dn.c \
    src/tests/cmocka/test_ipa_dn.c \
    $(NULL)
test_ipa_dn_CFLAGS = \
    $(AM_CFLAGS) \
    -DUNIT_TESTING \
    $(NULL)
test_ipa_dn_LDFLAGS = \
    -Wl,-wrap,_tevent_add_timer \
    $(NULL)
test_ipa_dn_LDADD = \
    $(CMOCKA_LIBS) \
    $(SSSD_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    $(LIBADD_DL) \
    libsss_test_common.la \
    $(NULL)

endif # HAVE_CMOCKA

noinst_PROGRAMS = pam_test_client
if BUILD_SUDO
noinst_PROGRAMS += sss_sudo_cli
endif
if BUILD_AUTOFS
noinst_PROGRAMS += autofs_test_client
endif

pam_test_client_SOURCES = src/sss_client/pam_test_client.c
pam_test_client_LDADD = $(PAM_LIBS) $(PAM_MISC_LIBS)

if BUILD_AUTOFS
autofs_test_client_SOURCES = \
    src/sss_client/autofs/autofs_test_client.c \
    src/sss_client/autofs/sss_autofs.c \
    src/sss_client/common.c
autofs_test_client_CFLAGS = $(AM_CFLAGS)
autofs_test_client_LDADD = -lpopt $(CLIENT_LIBS)
endif

#####################
# Integration tests #
#####################

intgcheck:
	set -e; \
	rm -Rf intg; \
	$(MKDIR_P) intg/bld; \
	: Use /hopefully/ short prefix to keep D-Bus socket path short; \
	prefix=`mktemp --tmpdir --directory sssd-intg.XXXXXXXX`; \
	$(LN_S) "$$prefix" intg/pfx; \
	cd intg/bld; \
	$(abs_top_srcdir)/configure \
	    --prefix="$$prefix" \
	    --with-ldb-lib-dir="$$prefix"/lib/ldb \
	    --enable-intgcheck-reqs \
	    --without-semanage \
	    $(INTGCHECK_CONFIGURE_FLAGS); \
	$(MAKE) $(AM_MAKEFLAGS); \
	: Force single-thread install to workaround concurrency issues; \
	$(MAKE) $(AM_MAKEFLAGS) -j1 install; \
	: Remove .la files from LDB module directory to avoid loader warnings; \
	rm "$$prefix"/lib/ldb/*.la; \
	$(MAKE) $(AM_MAKEFLAGS) -C src/tests/intg intgcheck-installed; \
	cd ../..; \
	rm -Rf "$$prefix" intg

####################
# Client Libraries #
####################

nsslib_LTLIBRARIES = libnss_sss.la
libnss_sss_la_SOURCES = \
    src/sss_client/common.c \
    src/sss_client/nss_passwd.c \
    src/sss_client/nss_group.c \
    src/sss_client/nss_netgroup.c \
    src/sss_client/nss_services.c \
    src/sss_client/sss_cli.h \
    src/sss_client/nss_compat.h \
    src/sss_client/nss_mc_common.c \
    src/util/io.c \
    src/util/murmurhash3.c \
    src/sss_client/nss_mc_passwd.c \
    src/sss_client/nss_mc_group.c \
    src/sss_client/nss_mc_initgr.c \
    src/sss_client/nss_mc.h
libnss_sss_la_LIBADD = \
    $(CLIENT_LIBS)
libnss_sss_la_LDFLAGS = \
    -module \
    -version-info 2:0:0 \
    -Wl,--version-script,$(srcdir)/src/sss_client/sss_nss.exports

if BUILD_NFS_IDMAP
nfslib_LTLIBRARIES = sss.la
sss_la_SOURCES = \
    src/sss_client/common.c \
    src/sss_client/nss_mc_common.c \
    src/util/io.c \
    src/util/murmurhash3.c \
    src/sss_client/nss_mc_passwd.c \
    src/sss_client/nss_mc_group.c \
    src/sss_client/nfs/sss_nfs_client.c \
    $(NULL)
sss_la_CFLAGS = $(AM_CFLAGS)
sss_la_LIBADD = \
    $(CLIENT_LIBS) \
    $(NFSIDMAP_LIBS) \
    $(NULL)
sss_la_LDFLAGS = \
    -module \
    -avoid-version \
    $(NULL)
endif

pamlib_LTLIBRARIES = pam_sss.la
pam_sss_la_SOURCES = \
    src/sss_client/pam_sss.c \
    src/sss_client/pam_message.c \
    src/sss_client/common.c \
    src/sss_client/sss_cli.h \
    src/util/atomic_io.c \
    src/util/authtok-utils.c \
    src/sss_client/sss_pam_macros.h \
    src/sss_client/sss_pam_compat.h

pam_sss_la_LIBADD = \
    $(CLIENT_LIBS) \
    $(PAM_LIBS)
pam_sss_la_LDFLAGS = \
    -module \
    -avoid-version \
    -Wl,--version-script,$(srcdir)/src/sss_client/sss_pam.exports

if BUILD_SUDO

libsss_sudo_la_SOURCES = \
    src/sss_client/common.c \
    src/sss_client/sss_cli.h \
    src/sss_client/sudo/sss_sudo_response.c \
    src/sss_client/sudo/sss_sudo.c \
    src/sss_client/sudo/sss_sudo.h \
    src/sss_client/sudo/sss_sudo_private.h
libsss_sudo_la_LIBADD = \
    $(CLIENT_LIBS)
libsss_sudo_la_LDFLAGS = \
    -Wl,--version-script,$(srcdir)/src/sss_client/sss_sudo.exports \
    -module \
    -avoid-version

sudolib_LTLIBRARIES = libsss_sudo.la

endif

if BUILD_AUTOFS
autofslib_LTLIBRARIES = libsss_autofs.la
libsss_autofs_la_SOURCES = \
    src/sss_client/common.c \
    src/sss_client/sss_cli.h \
    src/sss_client/autofs/sss_autofs.c \
    src/sss_client/autofs/sss_autofs_private.h

libsss_autofs_la_LIBADD = \
    $(CLIENT_LIBS)
libsss_autofs_la_LDFLAGS = \
    -module \
    -avoid-version \
    -Wl,--version-script,$(srcdir)/src/sss_client/autofs/sss_autofs.exports
endif

dist_noinst_DATA += \
    src/sss_client/sss_nss.exports \
    src/sss_client/sss_pam.exports
if BUILD_SUDO
dist_noinst_DATA += src/sss_client/sss_sudo.exports
endif

if BUILD_AUTOFS
dist_noinst_DATA += src/sss_client/autofs/sss_autofs.exports
endif

####################
# Plugin Libraries #
####################

# libsss_krb5_common must be installed before libsss_ldap_common
# because libtool tries to relink libsss_ldap_common when installing
# libsss_ldap_common and therefore make distcheck fails
pkglib_LTLIBRARIES += libsss_krb5_common.la
pkglib_LTLIBRARIES += libsss_ldap_common.la
libsss_ldap_common_la_SOURCES = \
    src/providers/ldap/ldap_id.c \
    src/providers/ldap/ldap_id_enum.c \
    src/providers/ldap/sdap_async_enum.c \
    src/providers/ldap/ldap_id_cleanup.c \
    src/providers/ldap/ldap_id_netgroup.c \
    src/providers/ldap/ldap_id_services.c \
    src/providers/ldap/ldap_auth.c \
    src/providers/ldap/ldap_common.c \
    src/providers/ldap/ldap_options.c \
    src/providers/ldap/ldap_opts.c \
    src/providers/ldap/sdap_access.c \
    src/providers/ldap/sdap_async.c \
    src/providers/ldap/sdap_async_users.c \
    src/providers/ldap/sdap_async_groups.c \
    src/providers/ldap/sdap_async_nested_groups.c \
    src/providers/ldap/sdap_async_groups_ad.c \
    src/providers/ldap/sdap_async_initgroups.c \
    src/providers/ldap/sdap_async_initgroups_ad.c \
    src/providers/ldap/sdap_async_connection.c \
    src/providers/ldap/sdap_async_netgroups.c \
    src/providers/ldap/sdap_async_services.c \
    src/providers/ldap/sdap_ad_groups.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_idmap.c \
    src/providers/ldap/sdap_idmap.h \
    src/providers/ldap/sdap_range.c \
    src/providers/ldap/sdap_reinit.c \
    src/providers/ldap/sdap_dyndns.c \
    src/providers/ldap/sdap_refresh.c \
    src/providers/ldap/sdap_utils.c \
    src/providers/ldap/sdap_domain.c \
    src/providers/ldap/sdap_ops.c \
    src/providers/ldap/sdap.c \
    src/providers/ipa/ipa_dn.c \
    src/util/user_info_msg.c \
    src/util/sss_ldap.c \
    $(NULL)
libsss_ldap_common_la_CFLAGS = \
    $(AM_CFLAGS) \
    $(KRB5_CFLAGS) \
    $(NULL)
libsss_ldap_common_la_LIBADD = \
    $(OPENLDAP_LIBS) \
    $(KRB5_LIBS) \
    libsss_krb5_common.la \
    libsss_idmap.la \
    libsss_util.la \
    $(NULL)
libsss_ldap_common_la_LDFLAGS = \
    -avoid-version \
    $(NULL)

if BUILD_SUDO
libsss_ldap_common_la_SOURCES += \
    src/providers/ldap/sdap_async_sudo.c \
    src/providers/ldap/sdap_async_sudo_hostinfo.c \
    src/providers/ldap/sdap_sudo_refresh.c \
    src/providers/ldap/sdap_sudo_shared.c \
    src/providers/ldap/sdap_sudo.c
endif

if BUILD_AUTOFS
libsss_ldap_common_la_SOURCES += \
    src/providers/ldap/sdap_autofs.c \
    src/providers/ldap/sdap_async_autofs.c
endif

libsss_krb5_common_la_SOURCES = \
    src/providers/krb5/krb5_utils.c \
    src/providers/krb5/krb5_delayed_online_authentication.c \
    src/providers/krb5/krb5_renew_tgt.c \
    src/providers/krb5/krb5_wait_queue.c \
    src/providers/krb5/krb5_common.c \
    src/providers/krb5/krb5_opts.c \
    src/providers/krb5/krb5_auth.c \
    src/providers/krb5/krb5_access.c \
    src/providers/krb5/krb5_child_handler.c \
    src/providers/krb5/krb5_init_shared.c \
    src/providers/krb5/krb5_ccache.c \
    src/util/sss_krb5.c \
    src/util/become_user.c \
    $(NULL)
libsss_krb5_common_la_CFLAGS = \
    $(AM_CFLAGS) \
    $(KRB5_CFLAGS)
libsss_krb5_common_la_LIBADD = \
    $(KEYUTILS_LIBS) \
    $(DHASH_LIBS) \
    $(KRB5_LIBS)
libsss_krb5_common_la_LDFLAGS = \
    -avoid-version

libsss_ldap_la_SOURCES = \
    src/providers/ldap/ldap_init.c \
    src/providers/ldap/ldap_access.c
libsss_ldap_la_CFLAGS = \
    $(AM_CFLAGS) \
    $(OPENLDAP_CFLAGS)
libsss_ldap_la_LIBADD = \
    $(OPENLDAP_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_ldap_common.la \
    libsss_krb5_common.la
libsss_ldap_la_LDFLAGS = \
    -avoid-version \
    -module


libsss_proxy_la_SOURCES = \
    src/providers/proxy/proxy_init.c \
    src/providers/proxy/proxy_id.c \
    src/providers/proxy/proxy_netgroup.c \
    src/providers/proxy/proxy_services.c \
    src/providers/proxy/proxy_auth.c \
    src/providers/data_provider_iface_generated.c \
    src/providers/data_provider_iface_generated.h
libsss_proxy_la_CFLAGS = \
    $(AM_CFLAGS)
libsss_proxy_la_LIBADD = \
    $(PAM_LIBS)
libsss_proxy_la_LDFLAGS = \
    -avoid-version \
    -module

libsss_simple_la_SOURCES = \
    src/providers/simple/simple_access_check.c \
    src/providers/simple/simple_access.c
libsss_simple_la_CFLAGS = \
    $(AM_CFLAGS)
libsss_simple_la_LDFLAGS = \
    -avoid-version \
    -module

libsss_krb5_la_SOURCES = \
    src/providers/krb5/krb5_init.c
libsss_krb5_la_CFLAGS = \
    $(AM_CFLAGS) \
    $(DHASH_CFLAGS) \
    $(KRB5_CFLAGS)
libsss_krb5_la_LIBADD = \
    $(DHASH_LIBS) \
    $(KRB5_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_krb5_common.la
libsss_krb5_la_LDFLAGS = \
    -avoid-version \
    -module

libsss_ipa_la_SOURCES = \
    src/providers/ipa/ipa_init.c \
    src/providers/ipa/ipa_opts.c \
    src/providers/ipa/ipa_common.c \
    src/providers/ipa/ipa_config.c \
    src/providers/ipa/ipa_id.c \
    src/providers/ipa/ipa_netgroups.c \
    src/providers/ipa/ipa_auth.c \
    src/providers/ipa/ipa_access.c \
    src/providers/ipa/ipa_dyndns.c \
    src/providers/ipa/ipa_hosts.c \
    src/providers/ipa/ipa_subdomains.c \
    src/providers/ipa/ipa_subdomains_id.c \
    src/providers/ipa/ipa_subdomains_server.c \
    src/providers/ipa/ipa_subdomains_utils.c \
    src/providers/ipa/ipa_subdomains_ext_groups.c \
    src/providers/ipa/ipa_views.c \
    src/providers/ipa/ipa_utils.c \
    src/providers/ipa/ipa_s2n_exop.c \
    src/providers/ipa/ipa_hbac_hosts.c \
    src/providers/ipa/ipa_hbac_private.h \
    src/providers/ipa/ipa_hbac_rules.c \
    src/providers/ipa/ipa_hbac_rules.h \
    src/providers/ipa/ipa_hbac_services.c \
    src/providers/ipa/ipa_hbac_users.c \
    src/providers/ipa/ipa_hbac_common.c \
    src/providers/ipa/ipa_selinux.c \
    src/providers/ipa/ipa_selinux_maps.c \
    src/providers/ipa/ipa_srv.c \
    src/providers/ipa/ipa_idmap.c \
    src/providers/ipa/ipa_dn.c \
    src/providers/ad/ad_opts.c \
    src/providers/ad/ad_common.c \
    src/providers/ad/ad_common.h \
    src/providers/ad/ad_dyndns.c \
    src/providers/ad/ad_id.c \
    src/providers/ad/ad_srv.c \
    src/providers/ad/ad_domain_info.c
libsss_ipa_la_CFLAGS = \
    $(AM_CFLAGS) \
    $(OPENLDAP_CFLAGS) \
    $(DHASH_CFLAGS) \
    $(NDR_NBT_CFLAGS) \
    $(KRB5_CFLAGS)
libsss_ipa_la_LIBADD = \
    $(OPENLDAP_LIBS) \
    $(DHASH_LIBS) \
    $(NDR_NBT_LIBS) \
    $(KRB5_LIBS) \
    $(SELINUX_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    libsss_ldap_common.la \
    libsss_krb5_common.la \
    libipa_hbac.la \
    libsss_idmap.la \
    libsss_semanage.la \
    $(NULL)
libsss_ipa_la_LDFLAGS = \
    -avoid-version \
    -module
if BUILD_AUTOFS
libsss_ipa_la_SOURCES += \
    src/providers/ipa/ipa_autofs.c
endif

if BUILD_SUDO
libsss_ipa_la_SOURCES += \
    src/providers/ipa/ipa_sudo.c \
    src/providers/ipa/ipa_sudo_refresh.c \
    src/providers/ipa/ipa_sudo_conversion.c \
    src/providers/ipa/ipa_sudo_async.c
endif

if BUILD_SSH
libsss_ipa_la_SOURCES += src/providers/ipa/ipa_hostid.c
endif


libsss_ad_la_SOURCES = \
    src/providers/ad/ad_opts.c \
    src/providers/ad/ad_common.c \
    src/providers/ad/ad_common.h \
    src/providers/ad/ad_init.c \
    src/providers/ad/ad_dyndns.c \
    src/providers/ad/ad_machine_pw_renewal.c \
    src/providers/ad/ad_id.c \
    src/providers/ad/ad_id.h \
    src/providers/ad/ad_access.c \
    src/providers/ad/ad_access.h \
    src/providers/ad/ad_gpo.c \
    src/providers/ad/ad_gpo.h \
    src/providers/ad/ad_gpo_ndr.c \
    src/providers/ad/ad_opts.h \
    src/providers/ad/ad_srv.c \
    src/providers/ad/ad_subdomains.c \
    src/providers/ad/ad_subdomains.h \
    src/providers/ad/ad_domain_info.c \
    src/providers/ad/ad_domain_info.h

if BUILD_SUDO
libsss_ad_la_SOURCES += \
    src/providers/ad/ad_sudo.c
endif

if BUILD_AUTOFS
libsss_ad_la_SOURCES += \
    src/providers/ad/ad_autofs.c
endif

libsss_ad_la_CFLAGS = \
    $(AM_CFLAGS) \
    $(OPENLDAP_CFLAGS) \
    $(SASL_CFLAGS) \
    $(DHASH_CFLAGS) \
    $(KRB5_CFLAGS) \
    $(NDR_NBT_CFLAGS) \
    $(SMBCLIENT_CFLAGS)
libsss_ad_la_LIBADD = \
    $(OPENLDAP_LIBS) \
    $(SASL_LIBS) \
    $(DHASH_LIBS) \
    $(KRB5_LIBS) \
    $(NDR_NBT_LIBS) \
    $(SSSD_INTERNAL_LTLIBS) \
    $(SMBCLIENT_LIBS) \
    libsss_ldap_common.la \
    libsss_krb5_common.la \
    libsss_idmap.la
libsss_ad_la_LDFLAGS = \
    -avoid-version \
    -module

krb5_child_SOURCES = \
    src/providers/krb5/krb5_child.c \
    src/providers/krb5/krb5_ccache.c \
    src/providers/krb5/krb5_keytab.c \
    src/providers/dp_pam_data_util.c \
    src/util/user_info_msg.c \
    src/util/sss_krb5.c \
    src/util/find_uid.c \
    src/util/atomic_io.c \
    src/util/authtok.c \
    src/util/authtok-utils.c \
    src/util/util.c \
    src/util/signal.c \
    src/util/strtonum.c \
    src/util/become_user.c \
    src/util/util_errors.c \
    src/sss_client/common.c \
    $(NULL)
krb5_child_CFLAGS = \
    $(AM_CFLAGS) \
    $(POPT_CFLAGS) \
    $(KRB5_CFLAGS) \
    $(PCRE_CFLAGS) \
    $(SYSTEMD_LOGIN_CFLAGS) \
    $(NULL)
krb5_child_LDADD = \
    libsss_debug.la \
    $(TALLOC_LIBS) \
    $(POPT_LIBS) \
    $(DHASH_LIBS) \
    $(KRB5_LIBS) \
    $(CLIENT_LIBS) \
    $(PCRE_LIBS) \
    $(SYSTEMD_LOGIN_LIBS) \
    $(NULL)

ldap_child_SOURCES = \
    src/providers/ldap/ldap_child.c \
    src/providers/krb5/krb5_keytab.c \
    src/util/sss_krb5.c \
    src/util/atomic_io.c \
    src/util/authtok.c \
    src/util/authtok-utils.c \
    src/util/util.c \
    src/util/signal.c \
    src/util/become_user.c \
    $(NULL)
ldap_child_CFLAGS = \
    $(AM_CFLAGS) \
    $(POPT_CFLAGS) \
    $(KRB5_CFLAGS)
ldap_child_LDADD = \
    libsss_debug.la \
    $(TALLOC_LIBS) \
    $(POPT_LIBS) \
    $(DHASH_LIBS) \
    $(KRB5_LIBS)

if BUILD_SEMANAGE
selinux_child_SOURCES = \
    src/providers/ipa/selinux_child.c \
    src/util/sss_semanage.c \
    src/util/atomic_io.c \
    src/util/util.c \
    $(NULL)
selinux_child_CFLAGS = \
    $(AM_CFLAGS) \
    $(POPT_CFLAGS) \
    $(NULL)
selinux_child_LDADD = \
    libsss_debug.la \
    $(TALLOC_LIBS) \
    $(POPT_LIBS) \
    $(DHASH_LIBS) \
    $(SEMANAGE_LIBS) \
    $(NULL)
endif

gpo_child_SOURCES = \
    src/providers/ad/ad_gpo_child.c \
    src/util/atomic_io.c \
    src/util/util.c \
    src/util/signal.c
gpo_child_CFLAGS = \
    $(AM_CFLAGS) \
    $(POPT_CFLAGS) \
    $(KRB5_CFLAGS) \
    $(INI_CONFIG_CFLAGS) \
    $(SMBCLIENT_CFLAGS)
gpo_child_LDADD = \
    libsss_debug.la \
    $(TALLOC_LIBS) \
    $(POPT_LIBS) \
    $(DHASH_LIBS) \
    $(INI_CONFIG_LIBS) \
    $(SMBCLIENT_LIBS)

proxy_child_SOURCES = \
    src/providers/proxy/proxy_child.c \
    src/providers/data_provider_iface_generated.c \
    src/providers/data_provider_iface_generated.h
proxy_child_CFLAGS = \
    $(AM_CFLAGS) \
    $(POPT_CFLAGS)
proxy_child_LDADD = \
    $(PAM_LIBS) \
    $(SSSD_LIBS) \
    $(SSSD_INTERNAL_LTLIBS)

p11_child_SOURCES = \
    src/p11_child/p11_child_nss.c \
    src/util/atomic_io.c \
    src/util/util.c \
    $(NULL)
p11_child_CFLAGS = \
    $(AM_CFLAGS) \
    $(POPT_CFLAGS) \
    $(NSS_CFLAGS) \
    $(NULL)
p11_child_LDADD = \
    libsss_debug.la \
    $(TALLOC_LIBS) \
    $(DHASH_LIBS) \
    $(POPT_LIBS) \
    $(NSS_LIBS) \
    libsss_crypt.la \
    $(NULL)

memberof_la_SOURCES = \
    src/ldb_modules/memberof.c \
    src/util/util.c
memberof_la_CFLAGS = \
    $(AM_CFLAGS)
memberof_la_LIBADD = \
    libsss_debug.la \
    $(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 \
    src/util/atomic_io.c
sssd_krb5_locator_plugin_la_CFLAGS = \
    $(AM_CFLAGS) \
    $(KRB5_CFLAGS)
sssd_krb5_locator_plugin_la_LDFLAGS = \
    -avoid-version \
    -module
endif

if BUILD_KRB5_LOCALAUTH_PLUGIN
sssd_krb5_localauth_plugin_la_SOURCES = \
    src/krb5_plugin/sssd_krb5_localauth_plugin.c \
    src/util/murmurhash3.c \
    src/util/io.c \
    src/sss_client/common.c \
    src/sss_client/nss_mc_common.c \
    src/sss_client/nss_mc_passwd.c \
    src/sss_client/nss_passwd.c
sssd_krb5_localauth_plugin_la_CFLAGS = \
    $(AM_CFLAGS) \
    $(KRB5_CFLAGS)
sssd_krb5_localauth_plugin_la_LIBADD = \
    $(KRB5_LIBS)
sssd_krb5_localauth_plugin_la_LDFLAGS = \
    -avoid-version \
    -module
endif

sssd_pac_plugin_la_SOURCES = \
    src/sss_client/sssd_pac.c \
    src/sss_client/common.c \
    src/sss_client/sss_cli.h \
    src/sss_client/krb5_authdata_int.h
sssd_pac_plugin_la_CFLAGS = \
    $(AM_CFLAGS) \
    $(KRB5_CFLAGS)
sssd_pac_plugin_la_LIBADD = \
    $(CLIENT_LIBS) \
    $(KRB5_LIBS)
sssd_pac_plugin_la_LDFLAGS = \
    -avoid-version \
    -module

# python[23] bindings
pysss_la_SOURCES = \
    $(SSSD_TOOLS_OBJ) \
    src/python/pysss.c
pysss_la_LDFLAGS = \
    -avoid-version \
    -module

_py2sss_la_SOURCES = $(pysss_la_SOURCES)
_py2sss_la_CFLAGS = \
    $(AM_CFLAGS)  \
    $(PYTHON2_CFLAGS)
_py2sss_la_LIBADD = \
    $(SSSD_INTERNAL_LTLIBS) \
    $(PYTHON_BINDINGS_LIBS) \
    $(PYTHON2_LIBS)
_py2sss_la_LDFLAGS = $(pysss_la_LDFLAGS)

_py3sss_la_SOURCES = $(pysss_la_SOURCES)
_py3sss_la_CFLAGS = \
    $(AM_CFLAGS)  \
    $(PYTHON3_CFLAGS)
_py3sss_la_LIBADD = \
    $(SSSD_INTERNAL_LTLIBS) \
    $(PYTHON_BINDINGS_LIBS) \
    $(PYTHON3_LIBS)
_py3sss_la_LDFLAGS = $(pysss_la_LDFLAGS)


pyhbac_la_SOURCES = \
    src/python/pyhbac.c \
    src/util/sss_python.c
pyhbac_la_LDFLAGS = \
    -avoid-version \
    -module

_py2hbac_la_SOURCES = $(pyhbac_la_SOURCES)
_py2hbac_la_CFLAGS = \
    $(AM_CFLAGS)  \
    $(PYTHON2_CFLAGS)
_py2hbac_la_LIBADD = \
    $(PYTHON2_LIBS) \
    libipa_hbac.la
_py2hbac_la_LDFLAGS = $(pyhbac_la_LDFLAGS)

_py3hbac_la_SOURCES = $(pyhbac_la_SOURCES)
_py3hbac_la_CFLAGS = \
    $(AM_CFLAGS)  \
    $(PYTHON3_CFLAGS)
_py3hbac_la_LIBADD = \
    $(PYTHON3_LIBS) \
    libipa_hbac.la
_py3hbac_la_LDFLAGS = $(pyhbac_la_LDFLAGS)


pysss_murmur_la_SOURCES = \
    src/python/pysss_murmur.c \
    src/util/murmurhash3.c
pysss_murmur_la_LDFLAGS = \
    -avoid-version \
    -module

_py2sss_murmur_la_SOURCES = $(pysss_murmur_la_SOURCES)
_py2sss_murmur_la_CFLAGS = \
    $(AM_CFLAGS)  \
    $(PYTHON2_CFLAGS)
_py2sss_murmur_la_LIBADD = \
    $(PYTHON2_LIBS)
_py2sss_murmur_la_LDFLAGS = $(pysss_murmur_la_LDFLAGS)

_py3sss_murmur_la_SOURCES = $(pysss_murmur_la_SOURCES)
_py3sss_murmur_la_CFLAGS = \
    $(AM_CFLAGS)  \
    $(PYTHON3_CFLAGS)
_py3sss_murmur_la_LIBADD = \
    $(PYTHON3_LIBS)
_py3sss_murmur_la_LDFLAGS = $(pysss_murmur_la_LDFLAGS)


pysss_nss_idmap_la_SOURCES = \
    src/python/pysss_nss_idmap.c
pysss_nss_idmap_la_LDFLAGS = \
    -avoid-version \
    -module

_py2sss_nss_idmap_la_SOURCES = $(pysss_nss_idmap_la_SOURCES)
_py2sss_nss_idmap_la_CFLAGS = \
    $(AM_CFLAGS)  \
    $(PYTHON2_CFLAGS)
_py2sss_nss_idmap_la_LIBADD = \
    $(PYTHON2_LIBS) \
    libsss_nss_idmap.la
_py2sss_nss_idmap_la_LDFLAGS = $(pysss_nss_idmap_la_LDFLAGS)

_py3sss_nss_idmap_la_SOURCES = $(pysss_nss_idmap_la_SOURCES)
_py3sss_nss_idmap_la_CFLAGS = \
    $(AM_CFLAGS)  \
    $(PYTHON3_CFLAGS)
_py3sss_nss_idmap_la_LIBADD = \
    $(PYTHON3_LIBS) \
    libsss_nss_idmap.la
_py3sss_nss_idmap_la_LDFLAGS = $(pysss_nss_idmap_la_LDFLAGS)
# end of python[23] bindings

if BUILD_CIFS_IDMAP_PLUGIN
cifs_idmap_sss_la_SOURCES = \
    src/lib/cifs_idmap_sss/cifs_idmap_sss.c
cifs_idmap_sss_la_LIBADD = \
    libsss_idmap.la \
    libsss_nss_idmap.la
cifs_idmap_sss_la_CFLAGS = \
    $(AM_CFLAGS)
cifs_idmap_sss_la_LDFLAGS = \
    -avoid-version \
    -module
endif

################
# TRANSLATIONS #
################
update-po:
if HAVE_MANPAGES
	$(MAKE) -C src/man update-po
endif
	$(MAKE) -C po update-po

#######################
# Installation Extras #
#######################

init_SCRIPTS =
systemdunit_DATA =
systemdconf_DATA =
if HAVE_SYSTEMD_UNIT
    systemdunit_DATA += \
        src/sysv/systemd/sssd.service
if WITH_JOURNALD
    systemdconf_DATA += \
        src/sysv/systemd/journal.conf
endif
else
if HAVE_SUSE
    init_SCRIPTS += \
        src/sysv/SUSE/sssd
else
if HAVE_GENTOO
    init_SCRIPTS += \
        src/sysv/gentoo/sssd
else
    init_SCRIPTS += \
        src/sysv/sssd
endif
endif
endif


dist_sssddata_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-ad.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

edit_cmd = $(SED) \
        -e 's|@sbindir[@]|$(sbindir)|g' \
        -e 's|@environment_file[@]|$(environment_file)|g' \
        -e 's|@localstatedir[@]|$(localstatedir)|g' \
        -e 's|@prefix[@]|$(prefix)|g'

replace_script = \
    @rm -f $@ $@.tmp; \
    srcdir=''; \
        test -f ./$@.in || srcdir=$(srcdir)/; \
        $(edit_cmd) $${srcdir}$@.in >$@.tmp; \
    mv $@.tmp $@

EXTRA_DIST += \
    src/sysv/systemd/sssd.service.in \
    src/sysv/systemd/journal.conf.in

src/sysv/systemd/sssd.service: src/sysv/systemd/sssd.service.in Makefile
	@$(MKDIR_P) src/sysv/systemd/
	$(replace_script)

src/sysv/systemd/journal.conf: src/sysv/systemd/journal.conf.in Makefile
	@$(MKDIR_P) src/sysv/systemd/
	$(replace_script)

SSSD_USER_DIRS = \
    $(DESTDIR)$(dbpath) \
    $(DESTDIR)$(keytabdir) \
    $(DESTDIR)$(mcpath) \
    $(DESTDIR)$(pipepath) \
    $(DESTDIR)$(pipepath)/private \
    $(DESTDIR)$(pubconfpath) \
    $(DESTDIR)$(pubconfpath)/krb5.include.d \
    $(DESTDIR)$(gpocachepath) \
    $(DESTDIR)$(sssdconfdir) \
    $(DESTDIR)$(logpath) \
    $(NULL)

installsssddirs::
	$(MKDIR_P) \
    $(DESTDIR)$(includedir) \
    $(DESTDIR)$(libdir) \
    $(DESTDIR)$(bindir) \
    $(DESTDIR)$(sbindir) \
    $(DESTDIR)$(mandir) \
    $(DESTDIR)$(pidpath) \
    $(DESTDIR)$(pluginpath) \
    $(DESTDIR)$(libdir)/ldb \
    $(DESTDIR)$(dbuspolicydir) \
    $(DESTDIR)$(dbusservicedir) \
    $(DESTDIR)$(sssdlibdir) \
    $(DESTDIR)$(pkglibdir) \
    $(DESTDIR)$(sssddatadir) \
    $(DESTDIR)$(sudolibdir) \
    $(DESTDIR)$(autofslibdir) \
    $(SSSD_USER_DIRS) \
    $(NULL);
if SSSD_USER
	-chown $(SSSD_USER):$(SSSD_USER) \
	$(SSSD_USER_DIRS)
endif
	$(INSTALL) -d -m 0700 $(DESTDIR)$(dbpath) $(DESTDIR)$(logpath) \
            $(DESTDIR)$(pipepath)/private \
	    $(DESTDIR)$(keytabdir) \
	    $(NULL)
	$(INSTALL) -d -m 0755 $(DESTDIR)$(mcpath) $(DESTDIR)$(pipepath) \
            $(DESTDIR)$(pubconfpath) \
            $(DESTDIR)$(pubconfpath)/krb5.include.d $(DESTDIR)$(gpocachepath)
	$(INSTALL) -d -m 0711 $(DESTDIR)$(sssdconfdir)

if HAVE_DOXYGEN
docs:
	$(DOXYGEN) src/doxy.config
	$(DOXYGEN) src/providers/ipa/ipa_hbac.doxy
	$(DOXYGEN) src/lib/idmap/sss_idmap.doxy
	$(DOXYGEN) src/sss_client/idmap/sss_nss_idmap.doxy
if BUILD_IFP
	$(DOXYGEN) src/lib/sifp/sss_simpleifp.doxy
endif
else !HAVE_DOXYGEN
docs:
	@echo "Doxygen not installed, cannot generate documentation"
	@exit 1
endif !HAVE_DOXYGEN

if BUILD_PYTHON_BINDINGS
$(abs_builddir)/src/config/SSSDConfig/ipachangeconf.py:
	-cp $(srcdir)/src/config/SSSDConfig/ipachangeconf.py $(builddir)/src/config/SSSDConfig/

$(abs_builddir)/src/config/SSSDConfig/sssd_upgrade_config.py:
	-cp $(srcdir)/src/config/SSSDConfig/sssd_upgrade_config.py $(builddir)/src/config/SSSDConfig/

SSSDCONFIG_MODULES = \
    $(abs_builddir)/src/config/SSSDConfig/ipachangeconf.py \
    $(abs_builddir)/src/config/SSSDConfig/sssd_upgrade_config.py
else
SSSSCONFIG_MODULES =
endif

all-local: ldb_mod_test_dir $(SSSDCONFIG_MODULES)
if BUILD_PYTHON2_BINDINGS
	cd $(builddir)/src/config; \
	$(PYTHON2) setup.py build --build-base $(abs_builddir)/src/config
endif
if BUILD_PYTHON3_BINDINGS
	cd $(builddir)/src/config; \
	$(PYTHON3) setup.py build --build-base $(abs_builddir)/src/config
endif

install-exec-hook: installsssddirs
if BUILD_PYTHON2_BINDINGS
	if [ "$(DESTDIR)" = "" ]; then \
		cd $(builddir)/src/config; \
		$(PYTHON2) setup.py build --build-base $(abs_builddir)/src/config \
			install $(DISTSETUPOPTS) --prefix=$(PYTHON2_PREFIX) \
			--record=$(abs_builddir)/src/config/.files2; \
	else \
		cd $(builddir)/src/config; \
		$(PYTHON2) setup.py build --build-base $(abs_builddir)/src/config \
			install $(DISTSETUPOPTS) --prefix=$(PYTHON2_PREFIX) \
			--record=$(abs_builddir)/src/config/.files2 --root=$(DESTDIR); \
	fi
	cd $(DESTDIR)$(py2execdir) && \
		mv -f _py2sss.so pysss.so ; \
		mv -f _py2hbac.so pyhbac.so ; \
		mv -f _py2sss_murmur.so pysss_murmur.so ; \
		mv -f _py2sss_nss_idmap.so pysss_nss_idmap.so
endif
if BUILD_PYTHON3_BINDINGS
	if [ "$(DESTDIR)" = "" ]; then \
		cd $(builddir)/src/config; \
		$(PYTHON3) setup.py build --build-base $(abs_builddir)/src/config \
			install $(DISTSETUPOPTS) --prefix=$(PYTHON3_PREFIX) \
			--record=$(abs_builddir)/src/config/.files3; \
	else \
		cd $(builddir)/src/config; \
		$(PYTHON3) setup.py build --build-base $(abs_builddir)/src/config \
			install $(DISTSETUPOPTS) --prefix=$(PYTHON3_PREFIX) \
			--record=$(abs_builddir)/src/config/.files3 --root=$(DESTDIR); \
	fi
	cd $(DESTDIR)$(py3execdir) && \
		mv -f _py3sss.so pysss.so ; \
		mv -f _py3hbac.so pyhbac.so ; \
		mv -f _py3sss_murmur.so pysss_murmur.so ; \
		mv -f _py3sss_nss_idmap.so pysss_nss_idmap.so
endif
	for doc in $(SSSD_DOCS); do \
		$(MKDIR_P) $$doc $(DESTDIR)/$(docdir); \
		cp -a $$doc $(DESTDIR)/$(docdir)/; \
	done;

if HAVE_SYSTEMD_UNIT
	$(MKDIR_P) $(DESTDIR)$(systemdunitdir)
	$(MKDIR_P) $(DESTDIR)$(systemdconfdir)
else
	$(MKDIR_P) $(DESTDIR)$(initdir)
endif

if SSSD_USER
	-chgrp $(SSSD_USER) $(DESTDIR)$(sssdlibexecdir)/ldap_child
	chmod 4750 $(DESTDIR)$(sssdlibexecdir)/ldap_child
	-chgrp $(SSSD_USER) $(DESTDIR)$(sssdlibexecdir)/krb5_child
	chmod 4750 $(DESTDIR)$(sssdlibexecdir)/krb5_child
	-chgrp $(SSSD_USER) $(DESTDIR)$(sssdlibexecdir)/proxy_child
	chmod 4750 $(DESTDIR)$(sssdlibexecdir)/proxy_child
if BUILD_SEMANAGE
	-chgrp $(SSSD_USER) $(DESTDIR)$(sssdlibexecdir)/selinux_child
	chmod 4750 $(DESTDIR)$(sssdlibexecdir)/selinux_child
endif
endif

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
	if [ ! $(krb5rcachedir) = "__LIBKRB5_DEFAULTS__" ]; then \
        $(MKDIR_P) $(DESTDIR)/$(krb5rcachedir) ; \
	fi

uninstall-hook:
	if [ -f $(abs_builddir)/src/config/.files2 ]; then \
	    cat $(abs_builddir)/src/config/.files2 | xargs -iq rm -f $(DESTDIR)/q; \
	    rm $(abs_builddir)/src/config/.files2 ; \
	fi
	if [ -f $(abs_builddir)/src/config/.files3 ]; then \
	    cat $(abs_builddir)/src/config/.files3 | xargs -iq rm -f $(DESTDIR)/q; \
	    rm $(abs_builddir)/src/config/.files3 ; \
	fi
	for doc in $(SSSD_DOCS); do \
		rm -Rf $(DESTDIR)/$(docdir)/$$doc; \
	done;
if BUILD_PYTHON2_BINDINGS
	cd $(DESTDIR)$(py2execdir) && \
		rm -f pysss.so pyhbac.so pysss_murmur.so pysss_nss_idmap.so
endif
if BUILD_PYTHON3_BINDINGS
	cd $(DESTDIR)$(py3execdir) && \
		rm -f pysss.so pyhbac.so pysss_murmur.so pysss_nss_idmap.so
endif

clean-local:
if BUILD_PYTHON2_BINDINGS
	if [ ! $(srcdir)/src/config/SSSDConfig/ipachangeconf.py -ef $(builddir)/src/config/SSSDConfig/ipachangeconf.py ]; then \
		rm -f $(builddir)/src/config/SSSDConfig/ipachangeconf.py ; \
	fi

	if [ ! $(srcdir)/src/config/SSSDConfig/ipachangeconf.py -ef $(builddir)/src/config/SSSDConfig/ipachangeconf.py ]; then \
		rm -f $(builddir)/src/config/SSSDConfig/sssd_upgrade_config.py ; \
	fi

	rm -f $(builddir)/src/config/SSSDConfig/*.pyc

	cd $(builddir)/src/config; $(PYTHON2) setup.py build --build-base $(abs_builddir)/src/config clean --all
endif
if BUILD_PYTHON3_BINDINGS
	if [ ! $(srcdir)/src/config/SSSDConfig/ipachangeconf.py -ef $(builddir)/src/config/SSSDConfig/ipachangeconf.py ]; then \
		rm -f $(builddir)/src/config/SSSDConfig/ipachangeconf.py ; \
	fi

	if [ ! $(srcdir)/src/config/SSSDConfig/ipachangeconf.py -ef $(builddir)/src/config/SSSDConfig/ipachangeconf.py ]; then \
		rm -f $(builddir)/src/config/SSSDConfig/sssd_upgrade_config.py ; \
	fi

	rm -f $(builddir)/src/config/SSSDConfig/__pycache__/*.pyc

	cd $(builddir)/src/config; $(PYTHON3) setup.py build --build-base $(abs_builddir)/src/config clean --all
endif
	for doc in $(SSSD_DOCS); do \
		rm -Rf $$doc; \
	done;
	rm -Rf ldb_mod_test_dir
	rm -f $(builddir)/src/sysv/systemd/sssd.service
	rm -f $(builddir)/src/sysv/systemd/journal.conf

CLEANFILES = *.X */*.X */*/*.X

tests: all $(check_PROGRAMS)
	(cd src/tests/cwrap && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1;


# RPM-related tasks

RPMBUILD ?= $(PWD)/rpmbuild

dist_noinst_DATA += \
    m4 \
    contrib/sssd.spec.in \
    BUILD.txt \
    COPYING

rpmroot:
	$(MKDIR_P) $(RPMBUILD)/BUILD
	$(MKDIR_P) $(RPMBUILD)/RPMS
	$(MKDIR_P) $(RPMBUILD)/SOURCES
	$(MKDIR_P) $(RPMBUILD)/SPECS
	$(MKDIR_P) $(RPMBUILD)/SRPMS

rpmbrprep: dist-gzip rpmroot
if GIT_CHECKOUT
# When we're building RPMs from a git checkout,
# we don't want to be bothered with translation
# updates
	git checkout $(srcdir)/po $(srcdir)/src/man/po
endif
	cp $(builddir)/contrib/sssd.spec $(RPMBUILD)/SPECS
	cp $(distdir).tar.gz $(RPMBUILD)/SOURCES

rpms: rpmbrprep
	cd $(RPMBUILD); \
	rpmbuild --define "_topdir $(RPMBUILD)" -ba SPECS/sssd.spec

if GIT_CHECKOUT
prerelease-rpms:
	cp $(srcdir)/version.m4 $(srcdir)/version.m4.orig
	sed -e "s/m4_define(\[PRERELEASE_VERSION_NUMBER\], \[.*\])/m4_define(\[PRERELEASE_VERSION_NUMBER\], \[.`date +%Y%m%d.%H%M`.git`git log -1 --pretty=format:%h`\])/" < $(srcdir)/version.m4.orig > $(srcdir)/version.m4
	$(MAKE) rpms
	mv $(srcdir)/version.m4.orig $(srcdir)/version.m4
endif

# make srpms will use the old digest algorithm to be compatible
# with RHEL5
srpm: rpmbrprep
	cd $(RPMBUILD); \
	rpmbuild --define "_topdir $(RPMBUILD)" \
	         -bs SPECS/sssd.spec

if GIT_CHECKOUT
prerelease-srpm:
	cp $(srcdir)/version.m4 $(srcdir)/version.m4.orig
	sed -e "s/m4_define(\[PRERELEASE_VERSION_NUMBER\], \[.*\])/m4_define(\[PRERELEASE_VERSION_NUMBER\], \[.`date +%Y%m%d.%H%M`.git`git log -1 --pretty=format:%h`\])/" < $(srcdir)/version.m4.orig > $(srcdir)/version.m4
	$(MAKE) srpm
	mv $(srcdir)/version.m4.orig $(srcdir)/version.m4
endif
