AC_ARG_WITH(bsd-kernel-build,
[ --with-bsd-kernel-build=path use the kernel build found at path(optional, defaults to KSRC/i386/compile/GENERIC)]
)
+
+AC_ARG_WITH([linux-kernel-packaging],
+ AS_HELP_STRING([--with-linux-kernel-packaging],
+ [ use standard naming conventions to aid Linux
+ kernel build packaging (disables MPS, sets the
+ kernel module name to openafs.ko, and installs
+ kernel modules into the standard Linux location)
+ ]),
+ [ AC_SUBST(LINUX_KERNEL_PACKAGING, "yes")
+ AC_SUBST(LINUX_LIBAFS_NAME, "openafs") ],
+ [ AC_SUBST(LINUX_LIBAFS_NAME, "libafs") ] )
+
AC_ARG_ENABLE(kernel-module,
[ --disable-kernel-module disable compilation of the kernel module (defaults to enabled)],, enable_kernel_module="yes"
)
LINUX_EXPORTS_SYS_OPEN
LINUX_EXPORTS_SYS_WAIT4
LINUX_EXPORTS_RCU_READ_LOCK
- LINUX_WHICH_MODULES
+ if test "x$with_linux_kernel_packaging" = "xno" ; then
+ LINUX_WHICH_MODULES
+ else
+ AC_SUBST(MPS,'SP')
+ fi
if test "x$ac_cv_linux_config_modversions" = "xno" -o $AFS_SYSKVERS -ge 26; then
AC_MSG_WARN([Cannot determine sys_call_table status. assuming it isn't exported])
ac_cv_linux_exports_sys_call_table=no
LIB_AFSDB = @LIB_AFSDB@
LIBS = @LIBS@
LINUX_KERNEL_PATH = @LINUX_KERNEL_PATH@
+LINUX_LIBAFS_NAME=@LINUX_LIBAFS_NAME@
+LINUX_KERNEL_PACKAGING=@LINUX_KERNEL_PACKAGING@
LINUX_VERSION = @LINUX_VERSION@
LINUX_VERS = @LINUX_VERSION@
LWP_OPTMZ = @LWP_OPTMZ@
<ia64_linux24 ia64_linux26>
ln -fs ${LINUX_KERNEL_PATH}/include/asm-ia64 asm
<all>
+ if [ "${LINUX_KERNEL_PACKAGING}" ] ; then \
+ TARGPREFIX="pack_"; \
+ fi ; \
for m in ${MPS} ; do \
KDIR=${KOBJ}-${LINUX_VERSION}${LINUX_MODULE_NAME}-$$m ; \
echo Building in directory: $${KDIR} ; \
TARG=libafs ; \
fi ; \
cd $${KDIR} ; \
- $(MAKE) -f Makefile.afs SMP_DEF="$${SMP_DEF}" $@_$${TARG} CLIENT=${LINUX_VERSION}${LINUX_MODULE_NAME} KDIR=$${KDIR} || exit $$?; \
+ $(MAKE) -f Makefile.afs SMP_DEF="$${SMP_DEF}" $@_$${TARGPREFIX}$${TARG} CLIENT=${LINUX_VERSION}${LINUX_MODULE_NAME} KDIR=$${KDIR} || exit $$?; \
cd ../ ; \
<all>
done
linux_destdirs_libafs.ep: dest_libafs.ep
linux_destdirs_libafs.bm: dest_libafs.bm
+linux_compdirs_pack_libafs: depsrcs pack_libafs
+linux_instdirs_pack_libafs: install_pack_libafs
+linux_destdirs_pack_libafs: dest_pack_libafs
# Below this line are targets when in the COMMON directory:
# For Linux there is no kernel NFS server.
-LIBAFS = libafs-${CLIENT}.${LINUX_MODULE_EXT}
-LIBAFS_MP = libafs-${CLIENT}.mp.${LINUX_MODULE_EXT}
-LIBAFS_EP = libafs-${CLIENT}.ep.${LINUX_MODULE_EXT}
-LIBAFS_BM = libafs-${CLIENT}.bm.${LINUX_MODULE_EXT}
+LIBAFS = ${LINUX_LIBAFS_NAME}-${CLIENT}.${LINUX_MODULE_EXT}
+LIBAFS_MP = ${LINUX_LIBAFS_NAME}-${CLIENT}.mp.${LINUX_MODULE_EXT}
+LIBAFS_EP = ${LINUX_LIBAFS_NAME}-${CLIENT}.ep.${LINUX_MODULE_EXT}
+LIBAFS_BM = ${LINUX_LIBAFS_NAME}-${CLIENT}.bm.${LINUX_MODULE_EXT}
INST_LIBAFS = ${DESTDIR}${afskerneldir}/${LIBAFS}
INST_LIBAFS_MP = ${DESTDIR}${afskerneldir}/${LIBAFS_MP}
DEST_LIBAFS_EP = ${DEST}/root.client/usr/vice/etc/modload/${LIBAFS_EP}
DEST_LIBAFS_BM = ${DEST}/root.client/usr/vice/etc/modload/${LIBAFS_BM}
+SYSTEM_LIBAFS = /lib/modules/${CLIENT}/extra/${LINUX_LIBAFS_NAME}/${LINUX_LIBAFS_NAME}.ko
+
+INST_SYSTEM = ${DESTDIR}${SYSTEM_LIBAFS}
+DEST_SYSTEM = ${DEST}/root.client${SYSTEM_LIBAFS}
libafs: $(LIBAFS)
echo SP Build Complete
echo BM Build Complete
<linux26 linux_26 umlinux26>
-${LIBAFS} ${LIBAFS_MP} ${LIBAFS_EP} ${LIBAFS_BM}: libafs.ko
- cp libafs.ko $@
+pack_libafs: ${LINUX_LIBAFS_NAME}.ko
+ echo "Packaging Friendly Build Complete"
+
+${LIBAFS} ${LIBAFS_MP} ${LIBAFS_EP} ${LIBAFS_BM}: ${LINUX_LIBAFS_NAME}.ko
+ cp ${LINUX_LIBAFS_NAME}.ko $@
.FORCE:
-libafs.ko afspag.ko: .FORCE
- env EXTRA_CFLAGS="${EXTRA_CFLAGS}" @TOP_SRCDIR@/libafs/make_kbuild_makefile.pl ${KDIR} @TOP_OBJDIR@/src/config/Makefile.config Makefile.afs Makefile.common
+${LINUX_LIBAFS_NAME}.ko afspag.ko: .FORCE
+ env EXTRA_CFLAGS="${EXTRA_CFLAGS}" @TOP_SRCDIR@/libafs/make_kbuild_makefile.pl ${KDIR} $@ @TOP_OBJDIR@/src/config/Makefile.config Makefile.afs Makefile.common
env EXTRA_CFLAGS="${EXTRA_CFLAGS}" $(MAKE) -C ${LINUX_KERNEL_PATH} M=@TOP_OBJDIR@/src/libafs/${KDIR} modules
<all -linux26 -linux_26 -umlinux26>
install_libafs.bm: $(INST_LIBAFS_BM)
echo BM Install Complete
+install_pack_libafs: $(INST_SYSTEM)
+ echo Packinging Friendly Install Complete
+
dest_libafs: $(DEST_LIBAFS)
echo SP Install Complete
dest_libafs.bm: $(DEST_LIBAFS_BM)
echo BM Install Complete
+dest_pack_libafs: $(DEST_SYSTEM)
+ echo Packaging Friendly Install Complete
+
$(INST_LIBAFS): $(LIBAFS)
${INSTALL} -f $? $@
$(INST_LIBAFS_BM): $(LIBAFS_BM)
${INSTALL} -f $? $@
+$(INST_SYSTEM) $(DEST_SYSTEM): $(LINUX_LIBAFS_NAME).ko
+ ${INSTALL} -f $? $@
+
$(DEST_LIBAFS): $(LIBAFS)
${INSTALL} -f $? $@
# make_kbuild_makefile.pl
# Generate a Makefile for use with the Linux 2.6+ kernel build system
#
-# Usage: make_kbuild_makefile.pl ${KDIR} Makefiles...
+# Usage: make_kbuild_makefile.pl ${KDIR} ${TARG} Makefiles...
#
# The specified makefiles will be scanned for variable values
-# The libafs.ko module will be built in ${TOP_SRCDIR}/src/libafs/${KDIR}.
+# The module ${TARG} will be built in ${TOP_SRCDIR}/src/libafs/${KDIR}.
# It will include objects listed in ${AFSAOBJS} and ${AFSNFSOBJS}
# The afspag.ko module will be built from objects listed in ${AFSPAGOBJS}.
# Appropriate source files for each object will be symlinked into ${KDIR}
use IO::File;
-if (@ARGV < 2) {
- die "Usage: $0 KDIR Makefiles...\n";
+if (@ARGV < 3) {
+ die "Usage: $0 KDIR TARG Makefiles...\n";
}
-($KDIR, @Makefiles) = @ARGV;
+($KDIR, $TARG, @Makefiles) = @ARGV;
+$TARG =~ s/\.k?o$//;
## Read in all of the Makefiles given on the command line
## Our ultimate goal is to find the correct source file for each object.
print $F "$_ = $vars{$_}\n";
}
print $F "EXTRA_CFLAGS=$cflags\n";
-print $F "obj-m := libafs.o afspag.o\n";
-print $F "libafs-objs := ", join("\\\n $_", @libafs_objs), "\n";
+print $F "obj-m := $TARG.o afspag.o\n";
+print $F "$TARG-objs := ", join("\\\n $_", @libafs_objs), "\n";
print $F "afspag-objs := ", join("\\\n $_", @afspag_objs), "\n";
print $F "\n$MakefileVersion\n";
$F->close() or die "$KDIR/Makefile: $!\n";