Skip to content

Commit

Permalink
autoconf: only link binaries that need it to libtirpc
Browse files Browse the repository at this point in the history
This patch is essentially the same as the previous version, but has
been respun to fix up some merge conflicts with some of Chuck's
recent changes.

When we first added tirpc support, we took a "big hammer" approach, and
had it add libtirpc to $LIBS. That had the effect of making it so that
that library was linked into every binary. That's unnecessary, and
wasteful with memory.

Don't let AC_CHECK_LIB add -ltirpc to $LIBS. Instead, have the autoconf
tests set $(LIBTIRPC) in the makefiles, and have the programs that
need it explicitly include that library. In the event that we're not
using libtirpc, then set $LIBTIRPC to a blank string.

This necessitates a change to the bindresvport_sa check too. Since that
library is no longer included in $LIBS, we need to convert that check
to use AC_CHECK_LIB instead of AC_CHECK_FUNCS.

This patch also fixes a subtle bug. If the library was usable, but the
includes were not, the test would set $enable_tirpc to "no", but
HAVE_LIBTIRPC would still be true. That configuration would likely
fail to build.

Signed-off-by: Jeff Layton <[email protected]>
Signed-off-by: Steve Dickson <[email protected]>
  • Loading branch information
jtlayton authored and stevedd committed Jan 16, 2012
1 parent 2e1ea70 commit a9b897f
Show file tree
Hide file tree
Showing 9 changed files with 27 additions and 11 deletions.
4 changes: 3 additions & 1 deletion aclocal/ipv6.m4
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,11 @@ AC_DEFUN([AC_IPV6], [
fi
dnl IPv6-enabled networking functions required for IPv6
AC_CHECK_FUNCS([getifaddrs getnameinfo bindresvport_sa], ,
AC_CHECK_FUNCS([getifaddrs getnameinfo], ,
[AC_MSG_ERROR([Missing library functions needed for IPv6.])])
AC_CHECK_LIB([tirpc], [bindresvport_sa], [:],
[AC_MSG_ERROR([Missing library functions needed for IPv6.])])
fi
])dnl
15 changes: 13 additions & 2 deletions aclocal/libtirpc.m4
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ AC_DEFUN([AC_LIBTIRPC], [
if test "$enable_tirpc" != "no"; then
dnl look for the library; add to LIBS if found
AC_CHECK_LIB([tirpc], [clnt_tli_create], ,
dnl look for the library
AC_CHECK_LIB([tirpc], [clnt_tli_create], [:],
[if test "$enable_tirpc" = "yes"; then
AC_MSG_ERROR([libtirpc not found.])
else
Expand All @@ -37,4 +37,15 @@ AC_DEFUN([AC_LIBTIRPC], [
fi
dnl now set $LIBTIRPC accordingly
if test "$enable_tirpc" != "no"; then
AC_DEFINE([HAVE_LIBTIRPC], 1,
[Define to 1 if you have and wish to use libtirpc.])
LIBTIRPC="-ltirpc"
else
LIBTIRPC=""
fi
AC_SUBST(LIBTIRPC)
])dnl
1 change: 1 addition & 0 deletions tools/rpcgen/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ rpcgen_SOURCES = rpc_clntout.c rpc_cout.c rpc_hout.c rpc_main.c \
rpcgen_CFLAGS=$(CFLAGS_FOR_BUILD)
rpcgen_CPPLAGS=$(CPPFLAGS_FOR_BUILD)
rpcgen_LDFLAGS=$(LDFLAGS_FOR_BUILD)
rpcgen_LDADD=$(LIBTIRPC)

MAINTAINERCLEANFILES = Makefile.in

Expand Down
4 changes: 2 additions & 2 deletions utils/gssd/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ gssd_SOURCES = \

gssd_LDADD = ../../support/nfs/libnfs.a \
$(RPCSECGSS_LIBS) $(GSSGLUE_LIBS) $(KRBLIBS)
gssd_LDFLAGS = $(KRBLDFLAGS)
gssd_LDFLAGS = $(KRBLDFLAGS) $(LIBTIRPC)

gssd_CFLAGS = $(AM_CFLAGS) $(CFLAGS) \
$(RPCSECGSS_CFLAGS) $(GSSGLUE_CFLAGS) $(KRBCFLAGS)
Expand All @@ -59,7 +59,7 @@ svcgssd_SOURCES = \
svcgssd_LDADD = \
../../support/nfs/libnfs.a \
$(RPCSECGSS_LIBS) $(GSSGLUE_LIBS) $(LIBNFSIDMAP) \
$(KRBLIBS)
$(KRBLIBS) $(LIBTIRPC)

svcgssd_LDFLAGS = $(KRBLDFLAGS)

Expand Down
3 changes: 2 additions & 1 deletion utils/mount/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ EXTRA_DIST += nfsmount.conf
endif

mount_nfs_LDADD = ../../support/nfs/libnfs.a \
../../support/export/libexport.a
../../support/export/libexport.a \
$(LIBTIRPC)

mount_nfs_SOURCES = $(mount_common)

Expand Down
2 changes: 1 addition & 1 deletion utils/mountd/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ mountd_SOURCES = mountd.c mount_dispatch.c auth.c rmtab.c cache.c \
mountd_LDADD = ../../support/export/libexport.a \
../../support/nfs/libnfs.a \
../../support/misc/libmisc.a \
$(LIBBSD) $(LIBWRAP) $(LIBNSL) $(LIBBLKID) $(LIBDL)
$(LIBBSD) $(LIBWRAP) $(LIBNSL) $(LIBBLKID) $(LIBDL) $(LIBTIRPC)
mountd_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS) \
-I$(top_builddir)/support/include \
-I$(top_srcdir)/support/export
Expand Down
2 changes: 1 addition & 1 deletion utils/nfsd/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ KPREFIX = @kprefix@
sbin_PROGRAMS = nfsd

nfsd_SOURCES = nfsd.c nfssvc.c
nfsd_LDADD = ../../support/nfs/libnfs.a
nfsd_LDADD = ../../support/nfs/libnfs.a $(LIBTIRPC)

MAINTAINERCLEANFILES = Makefile.in

Expand Down
3 changes: 2 additions & 1 deletion utils/showmount/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ sbin_PROGRAMS = showmount
showmount_SOURCES = showmount.c
showmount_LDADD = ../../support/export/libexport.a \
../../support/nfs/libnfs.a \
../../support/misc/libmisc.a
../../support/misc/libmisc.a \
$(LIBTIRPC)
showmount_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS) \
-I$(top_builddir)/support/export

Expand Down
4 changes: 2 additions & 2 deletions utils/statd/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ BUILT_SOURCES = $(GENFILES)
statd_LDADD = ../../support/nsm/libnsm.a \
../../support/nfs/libnfs.a \
../../support/misc/libmisc.a \
$(LIBWRAP) $(LIBNSL) $(LIBCAP)
$(LIBWRAP) $(LIBNSL) $(LIBCAP) $(LIBTIRPC)
sm_notify_LDADD = ../../support/nsm/libnsm.a \
../../support/nfs/libnfs.a \
$(LIBNSL) $(LIBCAP)
$(LIBNSL) $(LIBCAP) $(LIBTIRPC)

EXTRA_DIST = sim_sm_inter.x $(man8_MANS) COPYRIGHT simulate.c

Expand Down

0 comments on commit a9b897f

Please sign in to comment.