From c9b13c7e032fde96cf07c7d298bb7fa65fad220b Mon Sep 17 00:00:00 2001
From: Jan Engelhardt <jengelh@inai.de>
Date: Fri, 1 Nov 2013 23:01:09 +0100
Subject: [PATCH] build: fix ordering of linker flags

Libraries MUST be specified in LDADD/LIBADD, not LDFLAGS, because
LDFLAGS appear earlier in the command line and library order is
significant.
---
 Makefile.am |   66 ++++++++++++++++++++++++++++++------------------------------
 1 file changed, 34 insertions(+), 32 deletions(-)

Index: sssd-1.11.2/Makefile.am
===================================================================
--- sssd-1.11.2.orig/Makefile.am
+++ sssd-1.11.2/Makefile.am
@@ -600,9 +600,10 @@ dist_pkgconfig_DATA += src/providers/ipa
 libipa_hbac_la_SOURCES = \
     src/providers/ipa/hbac_evaluator.c \
     src/util/sss_utf8.c
-libipa_hbac_la_LDFLAGS = \
-    -version-info 0:1:0 \
+libipa_hbac_la_LIBADD = \
     $(UNICODE_LIBS)
+libipa_hbac_la_LDFLAGS = \
+    -version-info 0:1:0
 
 dist_pkgconfig_DATA += src/lib/idmap/sss_idmap.pc
 libsss_idmap_la_SOURCES = \
@@ -617,8 +618,9 @@ 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 = \
-    $(CLIENT_LIBS) \
     -version-info 0:1:0
 
 include_HEADERS = \
@@ -771,10 +773,9 @@ sss_userdel_SOURCES = \
     $(SSSD_LCL_TOOLS_OBJ)
 sss_userdel_LDADD = \
     $(TOOLS_LIBS) \
-    $(SSSD_INTERNAL_LTLIBS)
-sss_userdel_CFLAGS = $(AM_CFLAGS)
-sss_userdel_LDFLAGS = \
+    $(SSSD_INTERNAL_LTLIBS) \
     $(CLIENT_LIBS)
+sss_userdel_CFLAGS = $(AM_CFLAGS)
 
 sss_groupadd_SOURCES = \
     src/tools/sss_groupadd.c \
@@ -788,30 +789,27 @@ sss_groupdel_SOURCES = \
     $(SSSD_LCL_TOOLS_OBJ)
 sss_groupdel_LDADD = \
     $(TOOLS_LIBS) \
-    $(SSSD_INTERNAL_LTLIBS)
-sss_groupdel_CFLAGS = $(AM_CFLAGS)
-sss_groupdel_LDFLAGS = \
+    $(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)
-sss_usermod_CFLAGS = $(AM_CFLAGS)
-sss_usermod_LDFLAGS = \
+    $(SSSD_INTERNAL_LTLIBS) \
     $(CLIENT_LIBS)
+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)
-sss_groupmod_CFLAGS = $(AM_CFLAGS)
-sss_groupmod_LDFLAGS = \
+    $(SSSD_INTERNAL_LTLIBS) \
     $(CLIENT_LIBS)
+sss_groupmod_CFLAGS = $(AM_CFLAGS)
 
 sss_groupshow_SOURCES = \
     src/tools/sss_groupshow.c \
@@ -825,10 +823,9 @@ sss_cache_SOURCES = \
     $(SSSD_LCL_TOOLS_OBJ)
 sss_cache_LDADD = \
     $(TOOLS_LIBS) \
-    $(SSSD_INTERNAL_LTLIBS)
-sss_cache_CFLAGS = $(AM_CFLAGS)
-sss_cache_LDFLAGS = \
+    $(SSSD_INTERNAL_LTLIBS) \
     $(CLIENT_LIBS)
+sss_cache_CFLAGS = $(AM_CFLAGS)
 
 sss_debuglevel_SOURCES = \
     src/tools/sss_debuglevel.c \
@@ -851,7 +848,7 @@ sss_sudo_cli_SOURCES = \
     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_LDFLAGS = $(CLIENT_LIBS)
+sss_sudo_cli_LDADD = $(CLIENT_LIBS)
 endif
 
 if BUILD_SSH
@@ -861,8 +858,8 @@ sss_ssh_authorizedkeys_SOURCES = \
     src/sss_client/ssh/sss_ssh_authorizedkeys.c
 sss_ssh_authorizedkeys_CFLAGS = $(AM_CFLAGS)
 sss_ssh_authorizedkeys_LDADD = \
-    $(SSSD_INTERNAL_LTLIBS)
-sss_ssh_authorizedkeys_LDFLAGS = $(CLIENT_LIBS) $(TALLOC_LIBS) $(POPT_LIBS)
+    $(SSSD_INTERNAL_LTLIBS) \
+    $(CLIENT_LIBS) $(TALLOC_LIBS) $(POPT_LIBS)
 
 sss_ssh_knownhostsproxy_SOURCES = \
     src/sss_client/common.c \
@@ -870,8 +867,8 @@ sss_ssh_knownhostsproxy_SOURCES = \
     src/sss_client/ssh/sss_ssh_knownhostsproxy.c
 sss_ssh_knownhostsproxy_CFLAGS = $(AM_CFLAGS)
 sss_ssh_knownhostsproxy_LDADD = \
-    $(SSSD_INTERNAL_LTLIBS)
-sss_ssh_knownhostsproxy_LDFLAGS = $(CLIENT_LIBS) $(TALLOC_LIBS) $(POPT_LIBS)
+    $(SSSD_INTERNAL_LTLIBS) \
+    $(CLIENT_LIBS) $(TALLOC_LIBS) $(POPT_LIBS)
 endif
 
 #################
@@ -1402,7 +1399,7 @@ noinst_PROGRAMS += autofs_test_client
 endif
 
 pam_test_client_SOURCES = src/sss_client/pam_test_client.c
-pam_test_client_LDFLAGS = -lpam -lpam_misc
+pam_test_client_LDADD = -lpam -lpam_misc
 
 if BUILD_AUTOFS
 autofs_test_client_SOURCES = \
@@ -1410,7 +1407,7 @@ autofs_test_client_SOURCES = \
     src/sss_client/autofs/sss_autofs.c \
     src/sss_client/common.c
 autofs_test_client_CFLAGS = $(AM_CFLAGS)
-autofs_test_client_LDFLAGS = -lpopt $(CLIENT_LIBS)
+autofs_test_client_LDADD = -lpopt $(CLIENT_LIBS)
 endif
 
 ####################
@@ -1432,8 +1429,9 @@ libnss_sss_la_SOURCES = \
     src/sss_client/nss_mc_passwd.c \
     src/sss_client/nss_mc_group.c \
     src/sss_client/nss_mc.h
+libnss_sss_la_LIBADD = \
+    $(CLIENT_LIBS)
 libnss_sss_la_LDFLAGS = \
-    $(CLIENT_LIBS) \
     -module \
     -version-info 2:0:0 \
     -Wl,--version-script,$(srcdir)/src/sss_client/sss_nss.exports
@@ -1446,9 +1444,10 @@ pam_sss_la_SOURCES = \
     src/util/atomic_io.c \
     src/sss_client/sss_pam_macros.h
 
-pam_sss_la_LDFLAGS = \
+pam_sss_la_LIBADD = \
     $(CLIENT_LIBS) \
-    -lpam \
+    -lpam
+pam_sss_la_LDFLAGS = \
     -module \
     -avoid-version \
     -Wl,--version-script,$(srcdir)/src/sss_client/sss_pam.exports
@@ -1462,8 +1461,9 @@ libsss_sudo_la_SOURCES = \
     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 = \
-    $(CLIENT_LIBS) \
     -Wl,--version-script,$(srcdir)/src/sss_client/sss_sudo.exports \
     -module \
     -avoid-version
@@ -1480,8 +1480,9 @@ libsss_autofs_la_SOURCES = \
     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 = \
-    $(CLIENT_LIBS) \
     -module \
     -avoid-version \
     -Wl,--version-script,$(srcdir)/src/sss_client/autofs/sss_autofs.exports
@@ -1831,9 +1832,10 @@ sssd_pac_plugin_la_SOURCES = \
 sssd_pac_plugin_la_CFLAGS = \
     $(AM_CFLAGS) \
     $(KRB5_CFLAGS)
-sssd_pac_plugin_la_LDFLAGS = \
+sssd_pac_plugin_la_LIBADD = \
     $(CLIENT_LIBS) \
-    -lkrb5 \
+    -lkrb5
+sssd_pac_plugin_la_LDFLAGS = \
     -avoid-version \
     -module
 
