Instead of installing the (somewhat broken) AFS shared libraries,
[invirt/third/openafs.git] / pic-afs-libs
1 From bbab48b047000db0d1821e2f65917c2e8c2c7768 Mon Sep 17 00:00:00 2001
2 From: Russ Allbery <rra@stanford.edu>
3 Date: Mon, 6 Jul 2009 18:41:39 -0700
4 Subject: [PATCH] Build and install PIC versions of libafsrpc and libafsauthent
5
6 To include AFS code in loadable modules such as PAM modules, NSS modules,
7 or Perl/Python/PHP/Ruby extensions, it needs to be built PIC or one must
8 link with the AFS shared libraries.  Since we haven't historically been
9 that great about maintaining the shared library ABI, it's nice to have
10 static libraries built with PIC code that can be linked into such modules.
11
12 Based on a patch by Garrett Wollman updated with the build system changes
13 that happened after 1.4.
14
15 Make shlib makefiles have clean rules for PIC libraries.
16 Make RedHat specfile know how to deal with PIC libraries.
17
18 Reviewed-on: http://gerrit.openafs.org/8
19 Verified-by: Derrick Brashear <shadow@dementia.org>
20 Reviewed-by: Derrick Brashear <shadow@dementia.org>
21 Backported-by: Evan Broder <broder@mit.edu>
22 ---
23  src/packaging/RedHat/openafs.spec.in |    2 ++
24  src/shlibafsauthent/Makefile.in      |   20 ++++++++++++++++----
25  src/shlibafsrpc/Makefile.in          |   18 ++++++++++++++----
26  3 files changed, 32 insertions(+), 8 deletions(-)
27
28 Index: openafs-1.4.6.dfsg1/src/packaging/RedHat/openafs.spec.in
29 ===================================================================
30 --- openafs-1.4.6.dfsg1.orig/src/packaging/RedHat/openafs.spec.in       2007-10-18 00:14:18.000000000 -0400
31 +++ openafs-1.4.6.dfsg1/src/packaging/RedHat/openafs.spec.in    2009-07-27 01:23:51.000000000 -0400
32 @@ -1443,6 +1443,8 @@
33  %defattr(-,root,root)
34  %{_libdir}/libafsauthent.a
35  %{_libdir}/libafsrpc.a
36 +%{_libdir}/libafsauthent_pic.a
37 +%{_libdir}/libafsrpc_pic.a
38  %if %{build_authlibs}
39  %{_libdir}/libafsauthent.so
40  %{_libdir}/libafsrpc.so
41 Index: openafs-1.4.6.dfsg1/src/shlibafsauthent/Makefile.in
42 ===================================================================
43 --- openafs-1.4.6.dfsg1.orig/src/shlibafsauthent/Makefile.in    2006-08-20 16:17:25.000000000 -0400
44 +++ openafs-1.4.6.dfsg1/src/shlibafsauthent/Makefile.in 2009-07-27 01:35:11.000000000 -0400
45 @@ -104,9 +104,9 @@
46         -ln -f -s ${LIBAFSAUTHENT} ${DEST}/lib/libafsauthent.${SHLIB_SUFFIX}
47         -ln -f -s ${LIBAFSAUTHENT} ${DEST}/lib/libafsauthent.${SHLIB_SUFFIX}.${LIBAFSAUTHENTMAJOR}
48  
49 -all: ${TOP_LIBDIR}/${LIBAFSAUTHENT}
50 +all: ${TOP_LIBDIR}/${LIBAFSAUTHENT} ${TOP_LIBDIR}/libafsauthent_pic.a
51  
52 -install: ${DESTDIR}${libdir}/${LIBAFSAUTHENT}
53 +install: ${DESTDIR}${libdir}/${LIBAFSAUTHENT} ${DESTDIR}${libdir}/libafsauthent_pic.a
54  
55  ${LIBAFSAUTHENT}: ${LIBOBJS}
56         case ${SYS_NAME} in \
57 @@ -120,6 +120,11 @@
58                 ${SHLIB_LINKER} -o ${LIBAFSAUTHENT} ${LIBOBJS} -L${TOP_LIBDIR} -lafsrpc ${MT_LIBS};; \
59         esac
60  
61 +libafsauthent_pic.a: ${LIBOBJS}
62 +       $(RM) -f $@
63 +       $(AR) crv $@ ${LIBOBJS}
64 +       $(RANLIB) $@
65 +
66  audit.o: ${AUDIT}/audit.c
67         ${CCRULE}
68  
69 @@ -276,9 +281,15 @@
70         -ln -f -s ${LIBAFSAUTHENT} ${DESTDIR}${libdir}/libafsauthent.${SHLIB_SUFFIX}
71         -ln -f -s ${LIBAFSAUTHENT} ${DESTDIR}${libdir}/libafsauthent.${SHLIB_SUFFIX}.${LIBAFSAUTHENTMAJOR}
72  
73 +${DESTDIR}${libdir}/libafsauthent_pic.a: libafsauthent_pic.a
74 +       ${INSTALL} libafsauthent_pic.a $@
75 +
76  ${TOP_LIBDIR}/${LIBAFSAUTHENT}: ${LIBAFSAUTHENT}
77         ${INSTALL} ${LIBAFSAUTHENT} ${TOP_LIBDIR}/${LIBAFSAUTHENT}
78         -ln -f -s ${LIBAFSAUTHENT} ${TOP_LIBDIR}/libafsauthent.${SHLIB_SUFFIX}
79         -ln -f -s ${LIBAFSAUTHENT} ${TOP_LIBDIR}/libafsauthent.${SHLIB_SUFFIX}.${LIBAFSAUTHENTMAJOR}
80  
81 -dest: ${DEST}/lib/${LIBAFSAUTHENT}
82 +${TOP_LIBDIR}/libafsauthent_pic.a: libafsauthent_pic.a
83 +       ${INSTALL} libafsauthent_pic.a $@
84 +
85 +dest: ${DEST}/lib/${LIBAFSAUTHENT} ${DEST}/lib/libafsauthent_pic.a
86 Index: openafs-1.4.6.dfsg1/src/shlibafsrpc/Makefile.in
87 ===================================================================
88 --- openafs-1.4.6.dfsg1.orig/src/shlibafsrpc/Makefile.in        2006-08-20 18:24:10.000000000 -0400
89 +++ openafs-1.4.6.dfsg1/src/shlibafsrpc/Makefile.in     2009-07-27 01:34:39.000000000 -0400
90 @@ -134,15 +134,17 @@
91  
92  LIBAFSRPC = libafsrpc.${SHLIB_SUFFIX}.${LIBAFSRPCMAJOR}.${LIBAFSRPCMINOR}
93  
94 -all: ${TOP_LIBDIR}/${LIBAFSRPC}
95 +all: ${TOP_LIBDIR}/${LIBAFSRPC} ${TOP_LIBDIR}/libafsrpc_pic.a
96  
97 -install: ${DESTDIR}${libdir}/${LIBAFSRPC}
98 +install: ${DESTDIR}${libdir}/${LIBAFSRPC} ${DESTDIR}${libdir}/libafsrpc_pic.a
99  
100  ${DEST}/lib/${LIBAFSRPC}: ${LIBAFSRPC}
101         ${INSTALL} ${LIBAFSRPC} ${DEST}/lib/${LIBAFSRPC}
102         -ln -f -s ${LIBAFSRPC} ${DEST}/lib/libafsrpc.${SHLIB_SUFFIX}
103         -ln -f -s ${LIBAFSRPC} ${DEST}/lib/libafsrpc.${SHLIB_SUFFIX}.${LIBAFSRPCMAJOR}
104  
105 +${DEST}/lib/libafsrpc_pic.a: libafsrpc_pic.a
106 +
107  ${LIBAFSRPC}: ${LIBOBJS}
108         case ${SYS_NAME} in \
109         rs_aix4* | rs_aix5*) \
110 @@ -157,6 +159,11 @@
111                 ${SHLIB_LINKER} -o ${LIBAFSRPC} ${LIBOBJS} ${MT_LIBS};; \
112         esac
113  
114 +libafsrpc_pic.a: ${LIBOBJS}
115 +       $(RM) -f $@
116 +       $(AR) crv $@ ${LIBOBJS}
117 +       $(RANLIB) $@
118 +
119  rx_event.o: ${RX}/rx_event.c
120         ${CCRULE}
121  
122 @@ -418,10 +425,16 @@
123         -ln -f -s ${LIBAFSRPC} ${DESTDIR}${libdir}/libafsrpc.${SHLIB_SUFFIX}
124         -ln -f -s ${LIBAFSRPC} ${DESTDIR}${libdir}/libafsrpc.${SHLIB_SUFFIX}.${LIBAFSRPCMAJOR}
125  
126 +${DESTDIR}${libdir}/libafsrpc_pic.a: libafsrpc_pic.a
127 +       ${INSTALL} libafsrpc_pic.a $@
128 +
129  ${TOP_LIBDIR}/${LIBAFSRPC}: ${LIBAFSRPC}
130         ${INSTALL} ${LIBAFSRPC} ${TOP_LIBDIR}/${LIBAFSRPC}
131         -ln -f -s ${LIBAFSRPC} ${TOP_LIBDIR}/libafsrpc.${SHLIB_SUFFIX}
132         -ln -f -s ${LIBAFSRPC} ${TOP_LIBDIR}/libafsrpc.${SHLIB_SUFFIX}.${LIBAFSRPCMAJOR}
133  
134 -dest: ${DEST}/lib/${LIBAFSRPC}
135 +${TOP_LIBDIR}/libafsrpc_pic.a: libafsrpc_pic.a
136 +       ${INSTALL} libafsrpc_pic.a $@
137 +
138 +dest: ${DEST}/lib/${LIBAFSRPC} ${DEST}/lib/libafsrpc_pic.a
139