Add PIC variant for libuafs
authorAndrew Deason <adeason@sinenomine.net>
Mon, 13 Dec 2010 19:11:02 +0000 (13:11 -0600)
committerDerrick Brashear <shadow@dementia.org>
Sun, 13 Feb 2011 18:45:09 +0000 (10:45 -0800)
Build a libuafs that is built with PIC, so it can be used in shared
libraries on all platforms. Also build PIC variants for libafsutil and
libcmd, since we need them for a PIC libuafs anyway.

Change-Id: I017fa22c3b4dd661123ea92da7b3e5b69ee5c170
Reviewed-on: http://gerrit.openafs.org/3896
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

16 files changed:
src/cf/osconf.m4
src/cmd/Makefile.in
src/config/Makefile.config.in
src/libuafs/Makefile.common.in
src/libuafs/MakefileProto.AIX.in
src/libuafs/MakefileProto.DARWIN.in
src/libuafs/MakefileProto.DFBSD.in
src/libuafs/MakefileProto.DUX.in
src/libuafs/MakefileProto.FBSD.in
src/libuafs/MakefileProto.HPUX.in
src/libuafs/MakefileProto.IRIX.in
src/libuafs/MakefileProto.LINUX.in
src/libuafs/MakefileProto.NBSD.in
src/libuafs/MakefileProto.OBSD.in
src/libuafs/MakefileProto.SOLARIS.in
src/util/Makefile.in

index be15b14..c5a351f 100644 (file)
@@ -400,6 +400,7 @@ case $AFS_SYSNAME in
                KINCLUDES='-I$(KROOT)/System/Library/Frameworks/Kernel.framework/Headers'
                LWP_OPTMZ="-O2"
                REGEX_OBJ="regex.o"
+               REGEX_OBJ_PIC="pic_regex.o"
                XCFLAGS="-no-cpp-precomp"
                EXTRA_VLIBOBJS="fstab.o"
                SHLIB_LINKER="${MT_CC} \${ARCHFLAGS} -dynamiclib"
@@ -419,6 +420,7 @@ case $AFS_SYSNAME in
                LWP_OPTMZ="-Os"
                OPTMZ="-Os"
                REGEX_OBJ="regex.o"
+               REGEX_OBJ_PIC="pic_regex.o"
                EXTRA_VLIBOBJS="fstab.o"
                SHLIB_LINKER="${MT_CC} \${ARCHFLAGS} -dynamiclib"
                SHLIB_SUFFIX="dylib"
@@ -436,6 +438,7 @@ case $AFS_SYSNAME in
                LWP_OPTMZ="-Os"
                OPTMZ="-Os"
                REGEX_OBJ="regex.o"
+               REGEX_OBJ_PIC="pic_regex.o"
                EXTRA_VLIBOBJS="fstab.o"
                SHLIB_LINKER="${MT_CC} \${ARCHFLAGS} -dynamiclib"
                SHLIB_SUFFIX="dylib"
@@ -455,6 +458,7 @@ case $AFS_SYSNAME in
                OPTMZ="-Os"
                PAM_LIBS="-lpam"
                REGEX_OBJ="regex.o"
+               REGEX_OBJ_PIC="pic_regex.o"
                EXTRA_VLIBOBJS="fstab.o"
                SHLIB_LINKER="${MT_CC} \${ARCHFLAGS} -dynamiclib"
                SHLIB_SUFFIX="dylib"
@@ -1021,6 +1025,7 @@ AC_SUBST(PAM_DBG)
 AC_SUBST(PAM_OPTMZ)
 AC_SUBST(RANLIB)
 AC_SUBST(REGEX_OBJ)
+AC_SUBST(REGEX_OBJ_PIC)
 AC_SUBST(RM)
 AC_SUBST(RXDEBUG)
 AC_SUBST(SHLIB_CFLAGS)
index 9a22938..594e367 100644 (file)
@@ -15,9 +15,10 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 
 LIBOBJS=cmd_errors.o cmd.o 
+LIBPICOBJS=cmd_errors_pic.o cmd_pic.o
 LIB64OBJS=cmd_errors64.o cmd64.o 
 
-all: ${TOP_LIBDIR}/libcmd.a ${TOP_INCDIR}/afs/cmd.h
+all: ${TOP_LIBDIR}/libcmd.a ${TOP_LIBDIR}/libcmd_pic.a ${TOP_INCDIR}/afs/cmd.h
 
 all64: all ${TOP_LIBDIR}/libcmd64.a
 
@@ -26,6 +27,9 @@ generated: cmd.h cmd_errors.c
 ${TOP_LIBDIR}/libcmd.a: libcmd.a
        ${INSTALL_DATA} $? $@
 
+${TOP_LIBDIR}/libcmd_pic.a: libcmd_pic.a
+       ${INSTALL_DATA} $? $@
+
 ${TOP_LIBDIR}/libcmd64.a: libcmd64.a
        ${INSTALL_DATA} $? $@
 
@@ -50,6 +54,14 @@ cmd64.o: cmd.c cmd.h
        ${CC} $(COMMON_CFLAGS) $(CPPFLAGS) ${XCFLAGS64} \
                -c -o cmd64.o ${srcdir}/cmd.c
 
+CFLAGS_cmd_errors_pic.o = -fPIC
+cmd_errors_pic.o: cmd_errors.c
+       $(AFS_CCRULE) cmd_errors.c
+
+CFLAGS_cmd_pic.o = -fPIC
+cmd_pic.o: cmd.c cmd.h
+       $(AFS_CCRULE) cmd.c
+
 libcmd64.a: ${LIB64OBJS} AFS_component_version_number64.o
        -$(RM) -f $@
        $(AR) crv $@ ${LIB64OBJS} AFS_component_version_number64.o
@@ -60,28 +72,40 @@ libcmd.a: ${LIBOBJS} AFS_component_version_number.o
        $(AR) crv $@ ${LIBOBJS} AFS_component_version_number.o
        $(RANLIB) $@
 
+libcmd_pic.a: ${LIBPICOBJS} AFS_component_version_number_pic.o
+       -$(RM) -f $@
+       $(AR) crv $@ ${LIBPICOBJS} AFS_component_version_number_pic.o
+       $(RANLIB) $@
+
 AFS_component_version_number64.o: AFS_component_version_number.c
        ${CC} $(COMMON_CFLAGS) $(CPPFLAGS) ${XCFLAGS64} \
                -c -o AFS_component_version_number64.o \
                AFS_component_version_number.c
 
+AFS_component_version_number_pic.o: AFS_component_version_number.c
+       ${CC} $(COMMON_CFLAGS) $(CPPFLAGS) -fPIC \
+               -c -o AFS_component_version_number_pic.o \
+               AFS_component_version_number.c
+
 #
 # Install targets
 #
-install: libcmd.a cmd.h
+install: libcmd.a libcmd_pic.a cmd.h
        ${INSTALL} -d ${DESTDIR}${libdir}/afs
        ${INSTALL} -d ${DESTDIR}${includedir}/afs
        ${INSTALL_DATA} libcmd.a ${DESTDIR}${libdir}/afs/libcmd.a
+       ${INSTALL_DATA} libcmd_pic.a ${DESTDIR}${libdir}/afs/libcmd_pic.a
        ${INSTALL_DATA} cmd.h ${DESTDIR}${includedir}/afs/cmd.h
 
 install64: install libcmd64.a
        ${INSTALL_DATA} libcmd64.a ${DESTDIR}${libdir}/afs/libcmd64.a
 
-dest: libcmd.a cmd.h
+dest: libcmd.a cmd.h libcmd_pic.a
        ${INSTALL} -d ${DEST}/lib/afs
        ${INSTALL} -d ${DEST}/include/afs
        ${INSTALL_DATA} libcmd.a ${DEST}/lib/afs/libcmd.a
        ${INSTALL_DATA} cmd.h ${DEST}/include/afs/cmd.h
+       ${INSTALL_DATA} libcmd_pic.a ${DEST}/lib/afs/libcmd_pic.a
 
 dest64: dest libcmd64.a
        ${INSTALL_DATA} libcmd64.a ${DEST}/lib/afs/libcmd64.a
index dfe2cee..7420d34 100644 (file)
@@ -82,6 +82,7 @@ PAM_DBG = @PAM_DBG@
 PATH_CPP = @PATH_CPP@
 RANLIB = @RANLIB@
 REGEX_OBJ = @REGEX_OBJ@
+REGEX_OBJ_PIC = @REGEX_OBJ_PIC@
 RM = @RM@
 RXDEBUG = @RXDEBUG@
 ROKEN_HEADERS = @ROKEN_HEADERS@
index 7a83a5e..be81664 100644 (file)
@@ -11,6 +11,7 @@
 SHELL=/bin/sh
 INCLUDE=  -I. -I/usr/include -I${TOP_OBJDIR}/src/config
 UOBJ   =../UAFS
+PICOBJ  =../UAFS.pic
 JUAFS  =../JUAFS
 WEBOBJ=../AFSWEB
 AFS    =../afs
@@ -56,7 +57,8 @@ COMMON_INCLUDE = -I. -I.. -I../nfs \
 
 # Build rules - CC and CFLAGS are defined in system specific MakefileProtos.
 
-all: ${TOP_LIBDIR}/$(LIBJUAFS) ${TOP_LIBDIR}/$(LIBUAFS) linktest
+all: ${TOP_LIBDIR}/$(LIBJUAFS) ${TOP_LIBDIR}/$(LIBUAFS) \
+       ${TOP_LIBDIR}/libuafs_pic.a linktest
 
 ${TOP_LIBDIR}/$(LIBAFSWEB): AFSWEB/$(LIBAFSWEB)
        ${INSTALL_DATA} $? $@
@@ -67,9 +69,18 @@ ${TOP_LIBDIR}/$(LIBAFSWEBKRB): AFSWEB/$(LIBAFSWEBKRB)
 ${TOP_LIBDIR}/$(LIBUAFS): UAFS/$(LIBUAFS)
        ${INSTALL_DATA} $? $@
 
+${TOP_LIBDIR}/libuafs_pic.a: UAFS.pic/libuafs_pic.a
+       ${INSTALL_DATA} $? $@
+
 ${TOP_LIBDIR}/$(LIBJUAFS): JUAFS/$(LIBJUAFS)
        ${INSTALL_DATA} $? $@
 
+${TOP_LIBDIR}/perl/AFS/ukernel.so: PERLUAFS/ukernel.so
+       ${INSTALL_DATA} $? $@
+
+${TOP_LIBDIR}/perl/AFS/ukernel.pm: PERLUAFS/ukernel.pm
+       ${INSTALL_DATA} $? $@
+
 webinstall: all \
        ${TOP_LIBDIR}/$(LIBAFSWEB) \
        ${TOP_LIBDIR}/$(LIBAFSWEBKRB) 
@@ -84,6 +95,7 @@ linktest: UAFS/$(LIBUAFS)
 
 CRULE1=        $(CC) $(COMMON_INCLUDE) $(OPTF) -DKERNEL $(LIBJUAFS_FLAGS) $(CFLAGS) -c $?
 CRULE2=        $(CC) $(COMMON_INCLUDE) $(OPTF) $(WEBOPTS) -DKERNEL $(LIBJUAFS_FLAGS) $(CFLAGS) -c $?
+CRULEPIC=$(CC) $(COMMON_INCLUDE) $(OPTF) -DKERNEL $(LIBJUAFS_FLAGS) $(CFLAGS) -fPIC -c $?
 
 UAFSOBJ = \
        $(UOBJ)/afs_atomlist.o \
@@ -227,6 +239,148 @@ UAFSOBJ = \
        $(UOBJ)/xdr_mem.o \
        $(UOBJ)/xdr_len.o
 
+PICUAFSOBJ = \
+       $(PICOBJ)/afs_atomlist.o \
+       $(PICOBJ)/afs_lhash.o \
+       $(PICOBJ)/afs_analyze.o \
+       $(PICOBJ)/afs_error.o \
+       $(PICOBJ)/afs_axscache.o  \
+       $(PICOBJ)/afs_buffer.o  \
+       $(PICOBJ)/afs_bypasscache.o \
+       $(PICOBJ)/afs_callback.o        \
+       $(PICOBJ)/afs_cbqueue.o    \
+       $(PICOBJ)/afs_cell.o \
+       $(PICOBJ)/afs_chunk.o           \
+       $(PICOBJ)/afs_conn.o \
+       $(PICOBJ)/afs_daemons.o \
+       $(PICOBJ)/afs_dcache.o \
+       $(PICOBJ)/afs_dir.o             \
+       $(PICOBJ)/afs_disconnected.o    \
+       $(PICOBJ)/afs_dynroot.o \
+       $(PICOBJ)/afs_icl.o \
+       $(PICOBJ)/afs_init.o \
+       $(PICOBJ)/afs_lock.o    \
+       $(PICOBJ)/afs_mariner.o \
+       $(PICOBJ)/afs_memcache.o        \
+       $(PICOBJ)/afs_fetchstore.o      \
+       $(PICOBJ)/afs_osidnlc.o \
+       $(PICOBJ)/afs_osi_pag.o \
+       $(PICOBJ)/afs_segments.o \
+       $(PICOBJ)/afs_server.o \
+       $(PICOBJ)/afs_stat.o \
+       $(PICOBJ)/afs_syscall.o \
+       $(PICOBJ)/afs_tokens.o \
+       $(PICOBJ)/afs_user.o \
+       $(PICOBJ)/afs_util.o \
+       $(PICOBJ)/afs_vcache.o \
+       $(PICOBJ)/afs_warn.o \
+       $(PICOBJ)/afs_osi_uio.o \
+       $(PICOBJ)/afs_vnop_access.o \
+       $(PICOBJ)/afs_vnop_attrs.o \
+       $(PICOBJ)/afs_vnop_create.o \
+       $(PICOBJ)/afs_vnop_dirops.o \
+       $(PICOBJ)/afs_vnop_fid.o \
+       $(PICOBJ)/afs_vnop_flock.o \
+       $(PICOBJ)/afs_vnop_link.o \
+       $(PICOBJ)/afs_vnop_lookup.o \
+       $(PICOBJ)/afs_vnop_open.o \
+       $(PICOBJ)/afs_vnop_read.o \
+       $(PICOBJ)/afs_vnop_readdir.o \
+       $(PICOBJ)/afs_vnop_remove.o \
+       $(PICOBJ)/afs_vnop_rename.o \
+       $(PICOBJ)/afs_vnop_strategy.o \
+       $(PICOBJ)/afs_vnop_symlink.o \
+       $(PICOBJ)/afs_vnop_write.o \
+       $(PICOBJ)/afs_volume.o \
+       $(PICOBJ)/afs_call.o \
+       $(PICOBJ)/afs_pioctl.o \
+       $(PICOBJ)/osi_vfsops.o \
+       $(PICOBJ)/afs_usrops.o \
+       $(PICOBJ)/afsd.o \
+       $(PICOBJ)/afsd_uafs.o \
+       $(PICOBJ)/xdr.o \
+       $(PICOBJ)/xdr_afsuuid.o \
+       $(PICOBJ)/afs_uuid.o \
+       $(PICOBJ)/assert.o \
+       $(PICOBJ)/osi_vnodeops.o \
+       $(PICOBJ)/osi_vm.o \
+       $(PICOBJ)/osi_groups.o \
+       $(PICOBJ)/osi_gcpags.o \
+       $(PICOBJ)/osi_vcache.o \
+       $(PICOBJ)/afsaux.o \
+       $(PICOBJ)/Kvice.xdr.o \
+       $(PICOBJ)/xdr_arrayn.o \
+       $(PICOBJ)/Kvice.cs.o \
+       $(PICOBJ)/fcrypt.o \
+       $(PICOBJ)/rx.o \
+       $(PICOBJ)/rx_rdwr.o \
+       $(PICOBJ)/rx_clock.o \
+       $(PICOBJ)/rx_event.o \
+       $(PICOBJ)/rx_globals.o \
+       $(PICOBJ)/rx_identity.o \
+       $(PICOBJ)/rx_kmutex.o \
+       $(PICOBJ)/rx_knet.o \
+       $(PICOBJ)/rx_kcommon.o \
+       $(PICOBJ)/rx_misc.o \
+       $(PICOBJ)/rx_multi.o \
+       $(PICOBJ)/rx_null.o \
+       $(PICOBJ)/rx_opaque.o \
+       $(PICOBJ)/rx_getaddr.o \
+       $(PICOBJ)/rx_stats.o \
+       $(PICOBJ)/rx_packet.o \
+       $(PICOBJ)/rx_conncache.o \
+       $(PICOBJ)/xdr_rx.o \
+       $(PICOBJ)/Kvldbint.cs.o \
+       $(PICOBJ)/Kvldbint.xdr.o \
+       $(PICOBJ)/Kcallback.ss.o \
+       $(PICOBJ)/crypt_conn.o \
+       $(PICOBJ)/AFS_component_version_number.o \
+       $(PICOBJ)/afs_exporter.o \
+       $(PICOBJ)/rxkad_client.o \
+       $(PICOBJ)/rxkad_common.o \
+       $(PICOBJ)/casestrcpy.o \
+       $(PICOBJ)/dirpath.o \
+       $(PICOBJ)/fileutil.o \
+       $(PICOBJ)/netutils.o \
+       $(PICOBJ)/et_name.o \
+       $(PICOBJ)/com_err.o \
+       $(PICOBJ)/error_msg.o \
+       $(PICOBJ)/uerrors.o \
+       $(PICOBJ)/kaerrors.o \
+       $(PICOBJ)/ktc_errors.o \
+       $(PICOBJ)/rxkad_errs.o \
+       $(PICOBJ)/authclient.o \
+       $(PICOBJ)/authcon.o \
+       $(PICOBJ)/cellconfig.o \
+       $(PICOBJ)/keys.o \
+       $(PICOBJ)/client.o \
+       $(PICOBJ)/acfg_errors.o \
+       $(PICOBJ)/kaaux.o \
+       $(PICOBJ)/kalocalcell.o \
+       $(PICOBJ)/kauth.cs.o \
+       $(PICOBJ)/kauth.xdr.o \
+       $(PICOBJ)/ktc.o \
+       $(PICOBJ)/ptint.cs.o \
+       $(PICOBJ)/ptint.xdr.o \
+       $(PICOBJ)/ptuser.o \
+       $(PICOBJ)/pterror.o \
+       $(PICOBJ)/ticket.o \
+       $(PICOBJ)/katoken.o \
+       $(PICOBJ)/ubik_int.cs.o \
+       $(PICOBJ)/ubik_int.xdr.o \
+       $(PICOBJ)/ubikclient.o \
+       $(PICOBJ)/user.o \
+       $(PICOBJ)/hostparse.o \
+       $(PICOBJ)/Krxstat.ss.o \
+       $(PICOBJ)/Krxstat.xdr.o \
+       $(PICOBJ)/rxstat.o \
+       $(PICOBJ)/xdr_int32.o \
+       $(PICOBJ)/xdr_int64.o \
+       $(PICOBJ)/token.xdr.o \
+       $(PICOBJ)/token.o \
+       $(PICOBJ)/xdr_mem.o \
+       $(PICOBJ)/xdr_len.o
+
 AFSWEBOBJ = \
        $(WEBOBJ)/afs_atomlist.o \
        $(WEBOBJ)/afs_lhash.o \
@@ -939,6 +1093,297 @@ $(UOBJ)/xdr_mem.o: $(TOP_SRC_RX)/xdr_mem.c
 $(UOBJ)/xdr_len.o: $(TOP_SRC_RX)/xdr_len.c
        $(CRULE1)
 
+# These files are for the PIC version of libuafs
+
+$(PICOBJ)/afs_atomlist.o: $(TOP_SRCDIR)/util/afs_atomlist.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_lhash.o: $(TOP_SRCDIR)/util/afs_lhash.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_analyze.o: $(TOP_SRC_AFS)/afs_analyze.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_axscache.o: $(TOP_SRC_AFS)/afs_axscache.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_buffer.o: $(TOP_SRC_AFS)/afs_buffer.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_bypasscache.o: $(TOP_SRC_AFS)/afs_bypasscache.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_cell.o: $(TOP_SRC_AFS)/afs_cell.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_conn.o: $(TOP_SRC_AFS)/afs_conn.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_dcache.o: $(TOP_SRC_AFS)/afs_dcache.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_dynroot.o: $(TOP_SRC_AFS)/afs_dynroot.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_disconnected.o: $(TOP_SRC_AFS)/afs_disconnected.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_error.o: $(TOP_SRC_AFS)/afs_error.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_init.o: $(TOP_SRC_AFS)/afs_init.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_mariner.o: $(TOP_SRC_AFS)/afs_mariner.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_osidnlc.o: $(TOP_SRC_AFS)/afs_osidnlc.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_osi.o: $(TOP_SRC_AFS)/afs_osi.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_osi_pag.o: $(TOP_SRC_AFS)/afs_osi_pag.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_segments.o: $(TOP_SRC_AFS)/afs_segments.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_server.o: $(TOP_SRC_AFS)/afs_server.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_tokens.o: $(TOP_SRC_AFS)/afs_tokens.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_user.o: $(TOP_SRC_AFS)/afs_user.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_util.o: $(TOP_SRC_AFS)/afs_util.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_vcache.o: $(TOP_SRC_AFS)/afs_vcache.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_warn.o: $(TOP_SRC_AFS)/afs_warn.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_osi_uio.o: $(TOP_SRC_AFS)/afs_osi_uio.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_vnop_access.o: $(TOP_SRC_VNOPS)/afs_vnop_access.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_vnop_attrs.o: $(TOP_SRC_VNOPS)/afs_vnop_attrs.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_vnop_create.o: $(TOP_SRC_VNOPS)/afs_vnop_create.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_vnop_dirops.o: $(TOP_SRC_VNOPS)/afs_vnop_dirops.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_vnop_fid.o: $(TOP_SRC_VNOPS)/afs_vnop_fid.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_vnop_flock.o: $(TOP_SRC_VNOPS)/afs_vnop_flock.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_vnop_link.o: $(TOP_SRC_VNOPS)/afs_vnop_link.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_vnop_lookup.o: $(TOP_SRC_VNOPS)/afs_vnop_lookup.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_vnop_open.o: $(TOP_SRC_VNOPS)/afs_vnop_open.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_vnop_read.o: $(TOP_SRC_VNOPS)/afs_vnop_read.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_vnop_readdir.o: $(TOP_SRC_VNOPS)/afs_vnop_readdir.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_vnop_remove.o: $(TOP_SRC_VNOPS)/afs_vnop_remove.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_vnop_rename.o: $(TOP_SRC_VNOPS)/afs_vnop_rename.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_vnop_strategy.o: $(TOP_SRC_VNOPS)/afs_vnop_strategy.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_vnop_symlink.o: $(TOP_SRC_VNOPS)/afs_vnop_symlink.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_vnop_write.o: $(TOP_SRC_VNOPS)/afs_vnop_write.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_volume.o: $(TOP_SRC_AFS)/afs_volume.c
+       $(CRULEPIC)
+$(PICOBJ)/rx_rdwr.o: $(TOP_SRC_RX)/rx_rdwr.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_cbqueue.o: $(TOP_SRC_AFS)/afs_cbqueue.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_callback.o: $(TOP_SRC_AFS)/afs_callback.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_chunk.o: $(TOP_SRC_AFS)/afs_chunk.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_daemons.o: $(TOP_SRC_AFS)/afs_daemons.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_dir.o:   $(TOP_SRCDIR)/dir/dir.c
+       $(CRULEPIC) -o afs_dir.o
+$(PICOBJ)/AFS_component_version_number.o: AFS_component_version_number.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_lock.o: $(TOP_SRC_AFS)/afs_lock.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_memcache.o: $(TOP_SRC_AFS)/afs_memcache.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_fetchstore.o: $(TOP_SRC_AFS)/afs_fetchstore.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_stat.o: $(TOP_SRC_AFS)/afs_stat.c
+       $(CRULEPIC)
+$(PICOBJ)/fcrypt.o:    $(TOP_SRC_RXKAD)/fcrypt.c
+       $(CRULEPIC)
+$(PICOBJ)/crypt_conn.o: $(TOP_SRC_RXKAD)/crypt_conn.c
+       $(CRULEPIC)
+$(PICOBJ)/rxkad_client.o: $(TOP_SRC_RXKAD)/rxkad_client.c
+       $(CRULEPIC)
+$(PICOBJ)/rxkad_common.o: $(TOP_SRC_RXKAD)/rxkad_common.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_exporter.o: $(TOP_SRCDIR)/afs/afs_exporter.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_nfsclnt.o: $(TOP_SRC_AFS)/afs_nfsclnt.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_nfsdisp.o: $(TOP_SRC_AFS)/afs_nfsdisp.c
+       $(CRULEPIC)
+$(PICOBJ)/rx.o: $(TOP_SRC_RX)/rx.c
+       $(CRULEPIC)
+$(PICOBJ)/rx_clock.o: $(TOP_SRC_RX)/rx_clock.c
+       $(CRULEPIC)
+$(PICOBJ)/rx_event.o: $(TOP_SRC_RX)/rx_event.c
+       $(CRULEPIC)
+$(PICOBJ)/rx_globals.o: $(TOP_SRC_RX)/rx_globals.c
+       $(CRULEPIC)
+$(PICOBJ)/rx_identity.o: $(TOP_SRC_RX)/rx_identity.c
+       $(CRULEPIC)
+$(PICOBJ)/rx_misc.o: $(TOP_SRC_RX)/rx_misc.c
+       $(CRULEPIC)
+$(PICOBJ)/rx_multi.o: $(TOP_SRC_RX)/rx_multi.c
+       $(CRULEPIC)
+$(PICOBJ)/rx_null.o: $(TOP_SRC_RX)/rx_null.c
+       $(CRULEPIC)
+$(PICOBJ)/rx_opaque.o: $(TOP_SRC_RX)/rx_opaque.c
+       $(CRULEPIC)
+$(PICOBJ)/rx_getaddr.o: $(TOP_SRC_RX)/rx_getaddr.c
+       $(CRULEPIC)
+$(PICOBJ)/rx_stats.o: $(TOP_SRC_RX)/rx_stats.c
+       $(CRULEPIC)
+$(PICOBJ)/rx_packet.o: $(TOP_SRC_RX)/rx_packet.c
+       $(CRULEPIC)
+$(PICOBJ)/rx_conncache.o: $(TOP_SRCDIR)/rx/rx_conncache.c
+       $(CRULEPIC)
+$(PICOBJ)/xdr_rx.o: $(TOP_SRC_RX)/xdr_rx.c
+       $(CRULEPIC)
+$(PICOBJ)/xdr_int32.o: $(TOP_SRC_RX)/xdr_int32.c
+       $(CRULEPIC)
+$(PICOBJ)/xdr_int64.o: $(TOP_SRC_RX)/xdr_int64.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_usrops.o: $(TOP_SRC_AFS)/UKERNEL/afs_usrops.c
+       $(CRULEPIC)
+$(PICOBJ)/afsd.o: $(TOP_SRCDIR)/afsd/afsd.c
+       $(CRULEPIC) @CFLAGS_NOERROR@
+$(PICOBJ)/afsd_uafs.o: $(TOP_SRC_AFS)/UKERNEL/afsd_uafs.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_uuid.o: $(TOP_SRCDIR)/util/uuid.c
+       $(CRULEPIC) -o afs_uuid.o
+$(PICOBJ)/assert.o: $(TOP_SRCDIR)/util/assert.c
+       $(CRULEPIC)
+$(PICOBJ)/xdr_afsuuid.o: $(TOP_SRCDIR)/rx/xdr_afsuuid.c
+       $(CRULEPIC)
+$(PICOBJ)/xdr.o: $(TOP_SRCDIR)/rx/xdr.c
+       $(CRULEPIC)
+$(PICOBJ)/osi_vnodeops.o: $(TOP_SRC_AFS)/UKERNEL/osi_vnodeops.c
+       $(CRULEPIC)
+$(PICOBJ)/osi_vm.o: $(TOP_SRC_AFS)/UKERNEL/osi_vm.c
+       $(CRULEPIC)
+$(PICOBJ)/osi_groups.o: $(TOP_SRC_AFS)/UKERNEL/osi_groups.c
+       $(CRULEPIC)
+$(PICOBJ)/osi_gcpags.o: $(TOP_SRC_AFS)/UKERNEL/osi_gcpags.c
+       $(CRULEPIC)
+$(PICOBJ)/osi_vcache.o: $(TOP_SRC_AFS)/UKERNEL/osi_vcache.c
+       $(CRULEPIC)
+$(PICOBJ)/Kcallback.ss.o: $(TOP_OBJ_FSINT)/Kcallback.ss.c
+       $(CRULEPIC)
+$(PICOBJ)/Kvice.xdr.o: $(TOP_OBJ_FSINT)/Kvice.xdr.c
+       $(CRULEPIC)
+$(PICOBJ)/Kvice.cs.o: $(TOP_OBJ_FSINT)/Kvice.cs.c
+       $(CRULEPIC)
+$(PICOBJ)/afsaux.o: $(TOP_SRC_FSINT)/afsaux.c
+       $(CRULEPIC)
+$(PICOBJ)/xdr_arrayn.o: $(TOP_SRC_RX)/xdr_arrayn.c
+       $(CRULEPIC)
+$(PICOBJ)/Kvldbint.cs.o: $(TOP_OBJ_VLSERVER)/Kvldbint.cs.c
+       $(CRULEPIC)
+$(PICOBJ)/Kvldbint.xdr.o: $(TOP_OBJ_VLSERVER)/Kvldbint.xdr.c
+       $(CRULEPIC)
+$(PICOBJ)/rx_kmutex.o: $(TOP_SRC_RX)/UKERNEL/rx_kmutex.c
+       $(CRULEPIC)
+$(PICOBJ)/rx_knet.o: $(TOP_SRC_RX)/UKERNEL/rx_knet.c
+       $(CRULEPIC)
+$(PICOBJ)/rx_kcommon.o: $(TOP_SRCDIR)/rx/rx_kcommon.c
+       $(CRULEPIC)
+$(PICOBJ)/afs_call.o: $(TOP_SRC_AFS)/afs_call.c
+       $(CRULEPIC) -DAFS_NONFSTRANS
+$(PICOBJ)/afs_icl.o: $(TOP_SRC_AFS)/afs_icl.c
+       $(CRULEPIC) -DAFS_NONFSTRANS
+$(PICOBJ)/afs_pioctl.o: $(TOP_SRC_AFS)/afs_pioctl.c
+       $(CRULEPIC) -DAFS_NONFSTRANS
+$(PICOBJ)/afs_syscall.o: $(TOP_SRC_AFS)/afs_syscall.c
+       $(CRULEPIC) @CFLAGS_NOERROR@ -DAFS_NONFSTRANS
+$(PICOBJ)/osi_vfsops.o: $(TOP_SRC_AFS)/UKERNEL/osi_vfsops.c
+       $(CRULEPIC) -DAFS_NONFSTRANS
+$(PICOBJ)/ktc.o:       $(TOP_SRCDIR)/auth/ktc.c
+       $(CRULEPIC) @CFLAGS_NOERROR@
+$(PICOBJ)/ticket.o: $(TOP_SRCDIR)/rxkad/ticket.c
+       $(CRULEPIC)
+$(PICOBJ)/rxkad_server.o: $(TOP_SRCDIR)/rxkad/rxkad_server.c
+       $(CRULEPIC)
+$(PICOBJ)/ptint.cs.o: $(TOP_OBJDIR)/src/ptserver/ptint.cs.c
+       $(CRULEPIC)
+$(PICOBJ)/ptint.xdr.o: $(TOP_OBJDIR)/src/ptserver/ptint.xdr.c
+       $(CRULEPIC)
+$(PICOBJ)/ptuser.o: $(TOP_SRCDIR)/ptserver/ptuser.c
+       $(CRULEPIC)
+$(PICOBJ)/pterror.o: $(TOP_OBJDIR)/src/ptserver/pterror.c
+       $(CRULEPIC)
+$(PICOBJ)/ubikclient.o: $(TOP_SRCDIR)/ubik/ubikclient.c
+       $(CRULEPIC)
+$(PICOBJ)/ubik_int.cs.o: $(TOP_OBJDIR)/src/ubik/ubik_int.cs.c
+       $(CRULEPIC)
+$(PICOBJ)/ubik_int.xdr.o: $(TOP_OBJDIR)/src/ubik/ubik_int.xdr.c
+       $(CRULEPIC)
+$(PICOBJ)/authclient.o: $(TOP_SRCDIR)/kauth/authclient.c
+       $(CRULEPIC)
+$(PICOBJ)/kalocalcell.o: $(TOP_SRCDIR)/kauth/kalocalcell.c
+       $(CRULEPIC)
+$(PICOBJ)/client.o: $(TOP_SRCDIR)/kauth/client.c
+       $(CRULEPIC)
+$(PICOBJ)/user.o: $(TOP_SRCDIR)/kauth/user.c
+       $(CRULEPIC)
+$(PICOBJ)/hostparse.o: $(TOP_SRCDIR)/util/hostparse.c
+       $(CRULEPIC)
+$(PICOBJ)/katoken.o: $(TOP_SRCDIR)/kauth/katoken.c
+       $(CRULEPIC)
+$(PICOBJ)/acfg_errors.o: $(TOP_OBJDIR)/src/auth/acfg_errors.c
+       $(CRULEPIC)
+$(PICOBJ)/kaaux.o: $(TOP_SRCDIR)/kauth/kaaux.c
+       $(CRULEPIC)
+$(PICOBJ)/authcon.o: $(TOP_SRCDIR)/auth/authcon.c
+       $(CRULEPIC)
+$(PICOBJ)/cellconfig.o: $(TOP_SRCDIR)/auth/cellconfig.c
+       $(CRULEPIC)
+$(PICOBJ)/keys.o: $(TOP_SRCDIR)/auth/keys.c
+       $(CRULEPIC)
+$(PICOBJ)/casestrcpy.o: $(TOP_SRCDIR)/util/casestrcpy.c
+       $(CRULEPIC)
+$(PICOBJ)/dirpath.o: $(TOP_SRCDIR)/util/dirpath.c
+       $(CRULEPIC)
+$(PICOBJ)/fileutil.o: $(TOP_SRCDIR)/util/fileutil.c
+       $(CRULEPIC)
+$(PICOBJ)/netutils.o: $(TOP_SRCDIR)/util/netutils.c
+       $(CRULEPIC)
+$(PICOBJ)/et_name.o: $(TOP_SRCDIR)/comerr/et_name.c
+       $(CRULEPIC)
+$(PICOBJ)/com_err.o: $(TOP_SRCDIR)/comerr/com_err.c
+       $(CRULEPIC)
+$(PICOBJ)/error_msg.o: $(TOP_SRCDIR)/comerr/error_msg.c
+       $(CRULEPIC)
+$(PICOBJ)/uerrors.o: $(TOP_OBJDIR)/src/ubik/uerrors.c
+       $(CRULEPIC)
+$(PICOBJ)/kaerrors.o: $(TOP_OBJDIR)/src/kauth/kaerrors.c
+       $(CRULEPIC)
+$(PICOBJ)/ktc_errors.o: $(TOP_OBJDIR)/src/auth/ktc_errors.c
+       $(CRULEPIC)
+$(PICOBJ)/rxkad_errs.o: $(TOP_OBJDIR)/src/rxkad/rxkad_errs.c
+       $(CRULEPIC)
+$(PICOBJ)/kauth.cs.o: $(TOP_OBJDIR)/src/kauth/kauth.cs.c
+       $(CRULEPIC)
+$(PICOBJ)/kauth.xdr.o: $(TOP_OBJDIR)/src/kauth/kauth.xdr.c
+       $(CRULEPIC)
+$(PICOBJ)/rxstat.o: $(TOP_SRC_RXSTAT)/rxstat.c
+       $(CRULEPIC)
+$(PICOBJ)/Krxstat.ss.o: $(TOP_OBJ_RXSTAT)/Krxstat.ss.c
+       $(CRULEPIC)
+$(PICOBJ)/Krxstat.xdr.o: $(TOP_OBJ_RXSTAT)/Krxstat.xdr.c
+       $(CRULEPIC)
+$(PICOBJ)/token.xdr.o: $(TOP_OBJ_AUTH)/token.xdr.c
+       $(CRULEPIC)
+$(PICOBJ)/token.o: $(TOP_SRCDIR)/auth/token.c
+       $(CRULEPIC)
+$(PICOBJ)/xdr_mem.o: $(TOP_SRC_RX)/xdr_mem.c
+       $(CRULEPIC)
+$(PICOBJ)/xdr_len.o: $(TOP_SRC_RX)/xdr_len.c
+       $(CRULEPIC)
+
 # These files are for the netscape plugin
 
 $(WEBOBJ)/afs_atomlist.o: $(TOP_SRCDIR)/util/afs_atomlist.c
@@ -1530,17 +1975,18 @@ clean:
        -$(RM) -f  h net netinet rpc ufs machine inet nfs sys linktest $(AFS_OS_CLEAN)
 
 
-install: UAFS/$(LIBUAFS) JUAFS/$(LIBJUAFS)
+install: UAFS/$(LIBUAFS) JUAFS/$(LIBJUAFS) UAFS.pic/libuafs_pic.a
        ${INSTALL} -d ${DESTDIR}${libdir}
        ${INSTALL_DATA} UAFS/$(LIBUAFS) ${DESTDIR}${libdir}/$(LIBUAFS)
        ${INSTALL_DATA} JUAFS/$(LIBJUAFS) ${DESTDIR}${libdir}/$(LIBJUAFS)
+       ${INSTALL_DATA} UAFS.pic/libuafs_pic.a ${DESTDIR}${libdir}/libuafs_pic.a
 
 dest: $(TOP_INCDIR)/afs/param.h $(TOP_INCDIR)/afs/stds.h \
                $(TOP_INCDIR)/afs/afs_sysnames.h \
                $(TOP_INCDIR)/afs/afs_stats.h \
                $(TOP_SRCDIR)/afs/sysincludes.h \
                $(TOP_SRCDIR)/afs/UKERNEL/afs_usrops.h \
-               UAFS/$(LIBUAFS) JUAFS/$(LIBJUAFS)
+               UAFS/$(LIBUAFS) JUAFS/$(LIBJUAFS) UAFS.pic/libuafs_pic.a
        ${INSTALL} -d ${DEST}/root.perf/include/afs
        ${INSTALL} -d ${DEST}/root.perf/lib
        ${INSTALL_DATA} $(TOP_INCDIR)/afs/param.h \
@@ -1557,6 +2003,7 @@ dest: $(TOP_INCDIR)/afs/param.h $(TOP_INCDIR)/afs/stds.h \
                ${DEST}/root.perf/include/afs/afs_usrops.h
        ${INSTALL_DATA} UAFS/$(LIBUAFS) ${DEST}/root.perf/lib/$(LIBUAFS)
        ${INSTALL_DATA} JUAFS/$(LIBJUAFS) ${DEST}/root.perf/lib/$(LIBJUAFS)
+       ${INSTALL_DATA} UAFS.pic/libuafs_pic.a ${DEST}/root.perf/lib/libuafs_pic.a
 
 #
 # Common directory and other build targets
@@ -1564,6 +2011,9 @@ dest: $(TOP_INCDIR)/afs/param.h $(TOP_INCDIR)/afs/stds.h \
 UAFS:
        mkdir -p $@
 
+UAFS.pic:
+       mkdir -p $@
+
 JUAFS:
        mkdir -p $@
 
@@ -1588,6 +2038,11 @@ setup_uafs: UAFS setup_common
        ln -s ../Makefile UAFS/Makefile
        ln -s ../Makefile.common UAFS/Makefile.common
 
+setup_picuafs: UAFS.pic setup_common
+       -$(RM) -f UAFS.pic/Makefile UAFS.pic/Makefile.common
+       ln -s ../Makefile UAFS.pic/Makefile
+       ln -s ../Makefile.common UAFS.pic/Makefile.common
+
 setup_juafs: JUAFS setup_common
        -$(RM) -f JUAFS/Makefile JUAFS/Makefile.common
        ln -s ../Makefile JUAFS/Makefile
@@ -1603,6 +2058,11 @@ UAFS/$(LIBUAFS): setup_uafs
        $(MAKE) $(LIBUAFS) DESTDIR=${DESTDIR} LIBJUAFS_FLAGS=&& \
        $(RANLIB) $(LIBUAFS)
 
+UAFS.pic/libuafs_pic.a: setup_picuafs
+       cd UAFS.pic && \
+       $(MAKE) libuafs_pic.a DESTDIR=${DESTDIR} LIBJUAFS_FLAGS=&& \
+       $(RANLIB) libuafs_pic.a
+
 JUAFS/$(LIBJUAFS): setup_juafs
        cd JUAFS && \
        $(MAKE) $(LIBJUAFS) DESTDIR=${DESTDIR} LIBJUAFS_FLAGS=-DAFS_WEB_ENHANCEMENTS && \
index 82b0905..57f7ace 100644 (file)
@@ -51,6 +51,11 @@ $(LIBUAFS): $(UAFSOBJ)
        $(AR) $(ARFLAGS) $(LIBUAFS) $(UAFSOBJ) $(AFS)/afsl.exp
        $(RANLIB) libuafs.a
 
+libuafs_pic.a: $(PICUAFSOBJ)
+       -$(RM) -f libuafs_pic.a
+       $(AR) $(ARFLAGS) libuafs_pic.a $(PICUAFSOBJ) $(AFS)/afsl.exp
+       $(RANLIB) libuafs_pic.a
+
 $(LIBJUAFS): $(JUAFSOBJ)
        -$(RM) -f $(LIBJUAFS)
        $(AR) $(ARFLAGS) $(LIBJUAFS) $(JUAFSOBJ) $(AFS)/afsl.exp
index e2c7433..c4e12ac 100644 (file)
@@ -35,6 +35,10 @@ $(LIBUAFS): $(UAFSOBJ)
        -$(RM) -f $(LIBUAFS)
        $(AR) $(ARFLAGS) $(LIBUAFS) $(UAFSOBJ)
 
+libuafs_pic.a: $(PICUAFSOBJ)
+       -$(RM) -f libuafs_pic.a
+       $(AR) $(ARFLAGS) libuafs_pic.a $(PICUAFSOBJ)
+
 $(LIBJUAFS): $(JUAFSOBJ)
        -$(RM) -f $(LIBJUAFS)
        $(AR) $(ARFLAGS) $(LIBJUAFS) $(JUAFSOBJ)
index 07e95a6..e9f1793 100644 (file)
@@ -36,6 +36,10 @@ $(LIBUAFS): $(UAFSOBJ)
        -$(RM) -f $(LIBUAFS)
        $(AR) $(ARFLAGS) $(LIBUAFS) $(UAFSOBJ)
 
+libuafs_pic.a: $(PICUAFSOBJ)
+       -$(RM) -f libuafs_pic.a
+       $(AR) $(ARFLAGS) libuafs_pic.a $(PICUAFSOBJ)
+
 $(LIBJUAFS): $(JUAFSOBJ)
        -$(RM) -f $(LIBJUAFS)
        $(AR) $(ARFLAGS) $(LIBJUAFS) $(JUAFSOBJ)
index 4d8ce81..6b524b8 100644 (file)
@@ -36,6 +36,11 @@ $(LIBUAFS): $(UAFSOBJ)
        $(AR) $(ARFLAGS) $(LIBUAFS) $(UAFSOBJ)
        ranlib $(LIBUAFS)
 
+libuafs_pic.a: $(PICUAFSOBJ)
+       -$(RM) -f libuafs_pic.a
+       $(AR) $(ARFLAGS) libuafs_pic.a $(PICUAFSOBJ)
+       ranlib libuafs_pic.a
+
 $(LIBJUAFS): $(JUAFSOBJ)
        -$(RM) -f $(LIBJUAFS)
        $(AR) $(ARFLAGS) $(LIBJUAFS) $(JUAFSOBJ)
index ab533d1..560f71f 100644 (file)
@@ -40,6 +40,10 @@ $(LIBUAFS): $(UAFSOBJ)
        -$(RM) -f $(LIBUAFS)
        $(AR) $(ARFLAGS) $(LIBUAFS) $(UAFSOBJ)
 
+libuafs_pic.a: $(PICUAFSOBJ)
+       -$(RM) -f libuafs_pic.a
+       $(AR) $(ARFLAGS) libuafs_pic.a $(PICUAFSOBJ)
+
 $(LIBJUAFS): $(JUAFSOBJ)
        -$(RM) -f $(LIBJUAFS)
        $(AR) $(ARFLAGS) $(LIBJUAFS) $(JUAFSOBJ)
index e23c5a7..eff0c0a 100644 (file)
@@ -43,6 +43,10 @@ $(LIBUAFS): $(UAFSOBJ)
        -$(RM) -f $(LIBUAFS)
        $(AR) $(ARFLAGS) $(LIBUAFS) $(UAFSOBJ)
 
+libuafs_pic.a: $(PICUAFSOBJ)
+        -$(RM) -f libuafs_pic.a
+        $(AR) $(ARFLAGS) libuafs_pic.a $(PICUAFSOBJ)
+
 $(LIBJUAFS): $(JUAFSOBJ)
        -$(RM) -f $(LIBJUAFS)
        $(AR) $(ARFLAGS) $(LIBJUAFS) $(JUAFSOBJ)
index d002137..4d37ecb 100644 (file)
@@ -34,6 +34,10 @@ $(LIBUAFS): $(UAFSOBJ)
        -$(RM) -f $(LIBUAFS)
        $(AR) $(ARFLAGS) $(LIBUAFS) $(UAFSOBJ)
 
+libuafs_pic.a: $(PICUAFSOBJ)
+        -$(RM) -f libuafs_pic.a
+        $(AR) $(ARFLAGS) libuafs_pic.a $(PICUAFSOBJ)
+
 $(LIBJUAFS): $(JUAFSOBJ)
        -$(RM) -f $(LIBJUAFS)
        $(AR) $(ARFLAGS) $(LIBJUAFS) $(JUAFSOBJ)
index 37d896e..eed1334 100644 (file)
@@ -46,6 +46,10 @@ $(LIBUAFS): $(UAFSOBJ)
        -$(RM) -f $(LIBUAFS)
        $(AR) $(ARFLAGS) $(LIBUAFS) $(UAFSOBJ)
 
+libuafs_pic.a: $(PICUAFSOBJ)
+       -$(RM) -f libuafs_pic.a
+       $(AR) $(ARFLAGS) libuafs_pic.a $(PICUAFSOBJ)
+
 $(LIBJUAFS): $(JUAFSOBJ)
        -$(RM) -f $(LIBJUAFS)
        $(AR) $(ARFLAGS) $(LIBJUAFS) $(JUAFSOBJ)
index de6bc35..937ba4a 100644 (file)
@@ -35,6 +35,10 @@ $(LIBUAFS): $(UAFSOBJ)
        -$(RM) -f $(LIBUAFS)
        $(AR) $(ARFLAGS) $(LIBUAFS) $(UAFSOBJ)
 
+libuafs_pic.a: $(PICUAFSOBJ)
+        -$(RM) -f libuafs_pic.a
+        $(AR) $(ARFLAGS) libuafs_pic.a $(PICUAFSOBJ)
+
 $(LIBJUAFS): $(JUAFSOBJ)
        -$(RM) -f $(LIBJUAFS)
        $(AR) $(ARFLAGS) $(LIBJUAFS) $(JUAFSOBJ)
index 137067a..afa7c60 100644 (file)
@@ -35,6 +35,10 @@ $(LIBUAFS): $(UAFSOBJ)
        -$(RM) -f $(LIBUAFS)
        $(AR) $(ARFLAGS) $(LIBUAFS) $(UAFSOBJ)
 
+libuafs_pic.a: $(PICUAFSOBJ)
+       -$(RM) -f libuafs_pic.a
+       $(AR) $(ARFLAGS) libuafs_pic.a $(PICUAFSOBJ)
+
 $(LIBJUAFS): $(JUAFSOBJ)
        -$(RM) -f $(LIBJUAFS)
        $(AR) $(ARFLAGS) $(LIBJUAFS) $(JUAFSOBJ)
index c979b40..1887662 100644 (file)
@@ -33,6 +33,10 @@ $(LIBUAFS): $(UAFSOBJ)
        -$(RM) -f $(LIBUAFS)
        $(AR) $(ARFLAGS) $(LIBUAFS) $(UAFSOBJ)
 
+libuafs_pic.a: $(PICUAFSOBJ)
+        -$(RM) -f libuafs_pic.a
+        $(AR) $(ARFLAGS) libuafs_pic.a $(PICUAFSOBJ)
+
 $(LIBJUAFS): $(JUAFSOBJ)
        -$(RM) -f $(LIBJUAFS)
        $(AR) $(ARFLAGS) $(LIBJUAFS) $(JUAFSOBJ)
index 0ff14e2..3a620ce 100644 (file)
@@ -23,6 +23,33 @@ objects = assert.o base64.o casestrcpy.o config_file.o ktime.o volparse.o \
         afs_atomlist.o afs_lhash.o snprintf.o pthread_glock.o \
         tabular_output.o ${REGEX_OBJ}
 
+objects_pic = \
+       pic_assert.o \
+       pic_base64.o \
+       pic_casestrcpy.o \
+       pic_config_file.o \
+       pic_ktime.o \
+       pic_volparse.o \
+       pic_hostparse.o \
+       pic_exec.o \
+       pic_hputil.o \
+       pic_kreltime.o \
+       pic_isathing.o \
+       pic_get_krbrlm.o \
+       pic_uuid.o \
+       pic_serverLog.o \
+       pic_dirpath.o \
+       pic_fileutil.o \
+       pic_netutils.o \
+       pic_flipbase64.o \
+       pic_fstab.o \
+       pic_afs_atomlist.o \
+       pic_afs_lhash.o \
+       pic_snprintf.o \
+       pic_pthread_glock.o \
+       pic_tabular_output.o \
+       ${REGEX_OBJ_PIC}
+
 includes = \
        ${TOP_INCDIR}/afs/dirpath.h \
        ${TOP_INCDIR}/afs/pthread_nosigs.h \
@@ -50,6 +77,7 @@ includes = \
 all: ${includes} \
        ${TOP_LIBDIR}/util.a \
        ${TOP_LIBDIR}/libafsutil.a \
+       ${TOP_LIBDIR}/libafsutil_pic.a \
        sys
 
 buildtools: ${TOP_LIBDIR}/libafsutil.a ${TOP_INCDIR}/afs/afsutil.h
@@ -132,6 +160,9 @@ ${TOP_LIBDIR}/util.a: util.a
 ${TOP_LIBDIR}/libafsutil.a: util.a
        ${INSTALL_DATA} $? $@
 
+${TOP_LIBDIR}/libafsutil_pic.a: util_pic.a
+       ${INSTALL_DATA} $? $@
+
 # Use " as the sed boundary character because we lose anyway if that occurs
 # in path names.
 dirpath.h: ${srcdir}/dirpath.hin Makefile
@@ -157,11 +188,20 @@ util.a: ${objects} AFS_component_version_number.o
        $(AR) crv util.a ${objects} AFS_component_version_number.o
        $(RANLIB) util.a
 
+util_pic.a: ${objects_pic} AFS_component_version_number_pic.o
+       $(RM) -f util_pic.a
+       $(AR) crv util_pic.a ${objects_pic} AFS_component_version_number_pic.o
+       $(RANLIB) util_pic.a
+
 pthread_glock.o: ${srcdir}/pthread_glock.c ${includes}
        ${MT_CC} $(COMMON_CFLAGS) ${MT_CFLAGS} -c ${srcdir}/pthread_glock.c
 
 ${objects}: ${includes}
 
+CFLAGS_AFS_component_version_number_pic.o = -fPIC
+AFS_component_version_number_pic.o: AFS_component_version_number.c
+       $(AFS_CCRULE) AFS_component_version_number.c
+
 config_file.o: ${TOP_SRCDIR}/external/heimdal/krb5/config_file.c krb5_locl.h
        $(AFS_CCRULE) -c ${TOP_SRCDIR}/external/heimdal/krb5/config_file.c 
 
@@ -170,13 +210,115 @@ sys.o: sys.c AFS_component_version_number.c ${includes}
 sys: sys.o 
        $(AFS_LDRULE) sys.o
 
+# PIC objects build rules
+PICFLAGS = -fPIC
+CFLAGS_assert.o = $(PICFLAGS)
+pic_assert.o: ${srcdir}/assert.c ${includes}
+       $(AFS_CCRULE) ${srcdir}/assert.c
+
+CFLAGS_base64.o = $(PICFLAGS)
+pic_base64.o: ${srcdir}/base64.c ${includes}
+       $(AFS_CCRULE) ${srcdir}/base64.c
+
+CFLAGS_casestrcpy.o = $(PICFLAGS)
+pic_casestrcpy.o: ${srcdir}/casestrcpy.c ${includes}
+       $(AFS_CCRULE) ${srcdir}/casestrcpy.c
+
+CFLAGS_config_file.o = $(PICFLAGS)
+pic_config_file.o: ${TOP_SRCDIR}/external/heimdal/krb5/config_file.c krb5_locl.h
+       $(AFS_CCRULE) ${TOP_SRCDIR}/external/heimdal/krb5/config_file.c
+
+CFLAGS_ktime.o = $(PICFLAGS)
+pic_ktime.o: ${srcdir}/ktime.c ${includes}
+       $(AFS_CCRULE) ${srcdir}/ktime.c
+
+CFLAGS_volparse.o = $(PICFLAGS)
+pic_volparse.o: ${srcdir}/volparse.c ${includes}
+       $(AFS_CCRULE) ${srcdir}/volparse.c
+
+CFLAGS_hostparse.o = $(PICFLAGS)
+pic_hostparse.o: ${srcdir}/hostparse.c ${includes}
+       $(AFS_CCRULE) ${srcdir}/hostparse.c
+
+CFLAGS_exec.o = $(PICFLAGS)
+pic_exec.o: ${srcdir}/exec.c ${includes}
+       $(AFS_CCRULE) ${srcdir}/exec.c
+
+CFLAGS_hputil.o = $(PICFLAGS)
+pic_hputil.o: ${srcdir}/hputil.c ${includes}
+       $(AFS_CCRULE) ${srcdir}/hputil.c
+
+CFLAGS_kreltime.o = $(PICFLAGS)
+pic_kreltime.o: ${srcdir}/kreltime.c ${includes}
+       $(AFS_CCRULE) ${srcdir}/kreltime.c
+
+CFLAGS_isathing.o = $(PICFLAGS)
+pic_isathing.o: ${srcdir}/isathing.c ${includes}
+       $(AFS_CCRULE) ${srcdir}/isathing.c
+
+CFLAGS_get_krbrlm.o = $(PICFLAGS)
+pic_get_krbrlm.o: ${srcdir}/get_krbrlm.c ${includes}
+       $(AFS_CCRULE) ${srcdir}/get_krbrlm.c
+
+CFLAGS_uuid.o = $(PICFLAGS)
+pic_uuid.o: ${srcdir}/uuid.c ${includes}
+       $(AFS_CCRULE) ${srcdir}/uuid.c
+
+CFLAGS_serverLog.o = $(PICFLAGS)
+pic_serverLog.o: ${srcdir}/serverLog.c ${includes}
+       $(AFS_CCRULE) ${srcdir}/serverLog.c
+
+CFLAGS_dirpath.o = $(PICFLAGS)
+pic_dirpath.o: ${srcdir}/dirpath.c ${includes}
+       $(AFS_CCRULE) ${srcdir}/dirpath.c
+
+CFLAGS_fileutil.o = $(PICFLAGS)
+pic_fileutil.o: ${srcdir}/fileutil.c ${includes}
+       $(AFS_CCRULE) ${srcdir}/fileutil.c
+
+CFLAGS_netutils.o = $(PICFLAGS)
+pic_netutils.o: ${srcdir}/netutils.c ${includes}
+       $(AFS_CCRULE) ${srcdir}/netutils.c
+
+CFLAGS_flipbase64.o = $(PICFLAGS)
+pic_flipbase64.o: ${srcdir}/flipbase64.c ${includes}
+       $(AFS_CCRULE) ${srcdir}/flipbase64.c
+
+CFLAGS_fstab.o = $(PICFLAGS)
+pic_fstab.o: ${srcdir}/fstab.c ${includes}
+       $(AFS_CCRULE) ${srcdir}/fstab.c
+
+CFLAGS_afs_atomlist.o = $(PICFLAGS)
+pic_afs_atomlist.o: ${srcdir}/afs_atomlist.c ${includes}
+       $(AFS_CCRULE) ${srcdir}/afs_atomlist.c
+
+CFLAGS_afs_lhash.o = $(PICFLAGS)
+pic_afs_lhash.o: ${srcdir}/afs_lhash.c ${includes}
+       $(AFS_CCRULE) ${srcdir}/afs_lhash.c
+
+CFLAGS_snprintf.o = $(PICFLAGS)
+pic_snprintf.o: ${srcdir}/snprintf.c ${includes}
+       $(AFS_CCRULE) ${srcdir}/snprintf.c
+
+CFLAGS_pthread_glock.o = $(PICFLAGS)
+pic_pthread_glock.o: ${srcdir}/pthread_glock.c ${includes}
+       $(AFS_CCRULE) ${srcdir}/pthread_glock.c
+
+CFLAGS_tabular_output.o = $(PICFLAGS)
+pic_tabular_output.o: ${srcdir}/tabular_output.c ${includes}
+       $(AFS_CCRULE) ${srcdir}/tabular_output.c
+
+CFLAGS_regex.o = $(PICFLAGS)
+pic_regex.o: ${srcdir}/regex.c ${includes}
+       $(AFS_CCRULE) ${srcdir}/regex.c
+
 #
 # Install targets
 #
 KDIR=../libafs/afs
 UKDIR=../libuafs/afs
 
-install: dirpath.h util.a sys
+install: dirpath.h util.a util_pic.a sys
        ${INSTALL} -d ${DESTDIR}${includedir}/afs
        ${INSTALL} -d ${DESTDIR}${libdir}/afs
        ${INSTALL} -d ${DESTDIR}${bindir}
@@ -203,9 +345,10 @@ install: dirpath.h util.a sys
        ${INSTALL_DATA} ${srcdir}/tabular_output.h ${DESTDIR}${includedir}/afs/tabular_output.h
        ${INSTALL_DATA} util.a ${DESTDIR}${libdir}/afs/util.a
        ${INSTALL_DATA} util.a ${DESTDIR}${libdir}/afs/libafsutil.a
+       ${INSTALL_DATA} util_pic.a ${DESTDIR}${libdir}/afs/libafsutil_pic.a
        ${INSTALL_PROGRAM} sys ${DESTDIR}${bindir}/sys
 
-dest: dirpath.h util.a sys
+dest: dirpath.h util.a util_pic.a sys
        ${INSTALL} -d ${DEST}/include/afs
        ${INSTALL} -d ${DEST}/lib/afs
        ${INSTALL} -d ${DEST}/bin
@@ -232,6 +375,7 @@ dest: dirpath.h util.a sys
        ${INSTALL_DATA} ${srcdir}/tabular_output.h ${DEST}/include/afs/tabular_output.h
        ${INSTALL_DATA} util.a ${DEST}/lib/afs/util.a
        ${INSTALL_DATA} util.a ${DEST}/lib/afs/libafsutil.a
+       ${INSTALL_DATA} util_pic.a ${DEST}/lib/afs/libafsutil_pic.a
        ${INSTALL_PROGRAM} sys ${DEST}/bin/sys
 
 #
@@ -240,7 +384,7 @@ dest: dirpath.h util.a sys
 
 clean:
        $(RM) -f ${objects} sys dirpath.h
-       $(RM) -f util.a *.o core AFS_component_version_number.c
+       $(RM) -f util.a util_pic.a *.o core AFS_component_version_number.c
 
 test:
        cd test; $(MAKE)