]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Build and install PIC versions of libafsrpc and libafsauthent
authorRuss Allbery <rra@stanford.edu>
Tue, 7 Jul 2009 01:41:39 +0000 (18:41 -0700)
committerDerrick Brashear <shadow@dementia.org>
Fri, 10 Jul 2009 03:20:13 +0000 (21:20 -0600)
To include AFS code in loadable modules such as PAM modules, NSS modules,
or Perl/Python/PHP/Ruby extensions, it needs to be built PIC or one must
link with the AFS shared libraries.  Since we haven't historically been
that great about maintaining the shared library ABI, it's nice to have
static libraries built with PIC code that can be linked into such modules.

Based on a patch by Garrett Wollman updated with the build system changes
that happened after 1.4.

Make shlib makefiles have clean rules for PIC libraries.
Make RedHat specfile know how to deal with PIC libraries.

Reviewed-on: http://gerrit.openafs.org/8
Verified-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
src/packaging/RedHat/openafs.spec.in
src/shlibafsauthent/Makefile.in
src/shlibafsrpc/Makefile.in

index 74bcf7112a4db2f2e8dbc454f21008cc33ba6da0..732f960abbc5caf1bd282376dc949938a822442d 100644 (file)
@@ -1541,6 +1541,8 @@ dkms remove -m %{name} -v %{dkms_version} --rpm_safe_upgrade --all ||:
 %defattr(-,root,root)
 %{_libdir}/libafsauthent.a
 %{_libdir}/libafsrpc.a
+%{_libdir}/libafsauthent_pic.a
+%{_libdir}/libafsrpc_pic.a
 %if %{build_authlibs}
 %{_libdir}/libafsauthent.so
 %{_libdir}/libafsrpc.so
index 7d0602709cc42cb2aa8e93f4f4b65ded9bcc0e83..54cf4af4e59c25e822087c8ae39d194483451222 100644 (file)
@@ -104,28 +104,40 @@ LIBOBJS = \
 
 LIBAFSAUTHENT = libafsauthent.${SHLIB_SUFFIX}.${LIBAFSAUTHENTMAJOR}.${LIBAFSAUTHENTMINOR}
 
-all: ${TOP_LIBDIR}/${LIBAFSAUTHENT}
+all: ${TOP_LIBDIR}/${LIBAFSAUTHENT} ${TOP_LIBDIR}/libafsauthent_pic.a
 
 ${TOP_LIBDIR}/${LIBAFSAUTHENT}: ${LIBAFSAUTHENT}
        ../config/shlib-install -d ${TOP_LIBDIR} \
                -l libafsauthent \
                -M ${LIBAFSAUTHENTMAJOR} -m ${LIBAFSAUTHENTMINOR}
 
-install: ${LIBAFSAUTHENT}
+${TOP_LIBDIR}/libafsauthent_pic.a: libafsauthent_pic.a
+       ${INSTALL_DATA} libafsauthent_pic.a $@
+
+install: ${LIBAFSAUTHENT} libafsauthent_pic.a
        ../config/shlib-install -d ${DESTDIR}${libdir} \
                -l libafsauthent \
                -M ${LIBAFSAUTHENTMAJOR} -m ${LIBAFSAUTHENTMINOR}
+       ${INSTALL_DATA} libafsauthent_pic.a \
+               ${DESTDIR}${libdir}/libafsauthent_pic.a
 
-dest: ${LIBAFSAUTHENT}
+dest: ${LIBAFSAUTHENT} libafsauthent_pic.a
        ../config/shlib-install -d ${DEST}/lib \
                -l libafsauthent \
                -M ${LIBAFSAUTHENTMAJOR} -m ${LIBAFSAUTHENTMINOR}
+       ${INSTALL_DATA} libafsauthent_pic.a \
+               ${DEST}/lib/libafsauthent_pic.a
 
 ${LIBAFSAUTHENT}: ${LIBOBJS}
        ../config/shlib-build -d $(srcdir) -l libafsauthent \
                -M ${LIBAFSAUTHENTMAJOR} -m ${LIBAFSAUTHENTMINOR} -- \
                -L${TOP_LIBDIR} -lafsrpc ${LIBOBJS} ${MT_LIBS}
 
+libafsauthent_pic.a: ${LIBOBJS}
+       $(RM) -f $@
+       $(AR) crv $@ ${LIBOBJS}
+       $(RANLIB) $@
+
 audit.o: ${AUDIT}/audit.c
        ${CCRULE}
 
@@ -278,4 +290,4 @@ pioctl.o: ${SYS}/pioctl.c
        ${CCRULE}
 
 clean:
-       $(RM) -f *.o *.a libafsauthent.a* libafsauthent.sl* libafsauthent.so*
+       $(RM) -f *.o *.a libafsauthent.a* libafsauthent.sl* libafsauthent.so* libafsauthent_pic.a libafsauthent.dylib.*
index a1df90c5704cf68bda490b4197ea335f7ad65537..c59a58b630cba015c32386799d5257fdff724d8a 100644 (file)
@@ -138,25 +138,35 @@ LIBOBJS = \
 
 LIBAFSRPC = libafsrpc.${SHLIB_SUFFIX}.${LIBAFSRPCMAJOR}.${LIBAFSRPCMINOR}
 
-all: ${TOP_LIBDIR}/${LIBAFSRPC}
+all: ${TOP_LIBDIR}/${LIBAFSRPC} ${TOP_LIBDIR}/libafsrpc_pic.a
 
 ${TOP_LIBDIR}/${LIBAFSRPC}: ${LIBAFSRPC}
        ../config/shlib-install -d ${TOP_LIBDIR} \
                -l libafsrpc -M ${LIBAFSRPCMAJOR} -m ${LIBAFSRPCMINOR}
 
-install: ${LIBAFSRPC}
+${TOP_LIBDIR}/libafsrpc_pic.a: libafsrpc_pic.a
+       ${INSTALL_DATA} libafsrpc_pic.a $@
+
+install: ${LIBAFSRPC} libafsrpc_pic.a
        ../config/shlib-install -d ${DESTDIR}${libdir} \
                -l libafsrpc -M ${LIBAFSRPCMAJOR} -m ${LIBAFSRPCMINOR}
+       ${INSTALL_DATA} libafsrpc_pic.a ${DESTDIR}${libdir}/libafsrpc_pic.a
 
-dest: ${LIBAFSRPC}
+dest: ${LIBAFSRPC} libafsrpc_pic.a
        ../config/shlib-install -d ${DEST}/lib \
                -l libafsrpc -M ${LIBAFSRPCMAJOR} -m ${LIBAFSRPCMINOR}
+       ${INSTALL_DATA} libafsrpc_pic.a ${DEST}/lib/libafsrpc_pic.a
 
 ${LIBAFSRPC}: ${LIBOBJS}
        ../config/shlib-build -d $(srcdir) -l libafsrpc \
                -M ${LIBAFSRPCMAJOR} -m ${LIBAFSRPCMINOR} -- \
                ${LIBOBJS} ${MT_LIBS}
 
+libafsrpc_pic.a: ${LIBOBJS}
+       $(RM) -f $@
+       $(AR) crv $@ ${LIBOBJS}
+       $(RANLIB) $@
+
 rx_event.o: ${RX}/rx_event.c
        ${CCRULE}
 
@@ -411,4 +421,4 @@ afsaux.o: ${FSINT}/afsaux.c
        ${CCRULE}
 
 clean:
-       $(RM) -f *.o libafsrpc.a* libafsrpc.sl* libafsrpc.so*
+       $(RM) -f *.o libafsrpc.a* libafsrpc.sl* libafsrpc.so* libafsrpc_pic.a libafsrpc.dylib.*