dnl as-modtool.m4 0.0.1 dnl autostars m4 macro for building modtool, a linker for Linux kernel dnl modules dnl David Schleef dnl Frank Mori Hess dnl Thomas Vander Stichele dnl $Id: as-modtool.m4,v 1.1.1.1 2005/02/04 07:55:13 zeenix Exp $ dnl AS_LINUX_MODTOOL() dnl dnl this macro defines: dnl moduledir dnl modulePROGRAMS_INSTALL dnl modulePROGRAMS_UNINSTALL dnl dnl End of search list. dnl dnl FIXME: dnl How do you specify that the building of modtool should go to the dnl end of the configure script? dnl dnl SYMVERS_INCLUDES can be used to add additional .symvers files to the dnl modpost step AC_DEFUN([AS_LINUX_MODTOOL], [ AC_PATH_PROG(STRIP, strip) AC_PATH_PROG([DEPMOD], [depmod], [no], [$PATH:/sbin:/usr/sbin:/usr/local/sbin]) AC_PATH_PROG([GENKSYMS], [genksyms], [no], [$PATH:/sbin:/usr/sbin:/usr/local/sbin]) if test "x$LINUX_SMP" = "xyes" then GENKSYMS="$GENKSYMS -p smp_" fi dnl this can be overridden in Makefile.am dnl FIXME: it'd be nice if we could specify different target_PROGRAMS dnl and different targetdir moduledir="\$(modulesdir)/\$(PACKAGE)" modulePROGRAMS_INSTALL="\$(top_builddir)/modtool --install" modulePROGRAMS_UNINSTALL="\$(top_builddir)/modtool --uninstall" AC_SUBST(moduledir) AC_SUBST(modulePROGRAMS_INSTALL) LINUX_VERSION=`echo $LINUX_KERNELRELEASE | cut -d- -f1` AC_MSG_NOTICE(creating modtool) cat >modtool <.mods/symvers.tmp \$LINUX_MODPOST -o .mods/\$target.o.symvers.tmp -i .mods/symvers.tmp .mods/\$target.o grep .mods/\$target .mods/\$target.o.symvers.tmp >.mods/\$target.o.symvers || true rm -f .mods/\$target.o.symvers.tmp .mods/symvers.tmp \$CC \$CFLAGS -DKBUILD_MODNAME=\$target -c -o .mods/\$target.mod.o .mods/\$target.mod.c \$LINUX_LD -r -o \$target.ko .mods/\$target.mod.o .mods/\$target.o set +x else echo \$LINUX_LD -r -o \$target.ko \$[*] \$LINUX_LD -r -o \$target.ko \$[*] if test "x\$SOURCES" != "x" then echo "\$CC \$CFLAGS -E -D__GENKSYMS__ \$SOURCES | \$GENKSYMS -k \$LINUX_VERSION > .mods/\$target.ver" \$CC \$CFLAGS -E -D__GENKSYMS__ \$SOURCES | \$GENKSYMS -k \$LINUX_VERSION > .mods/\$target.ver fi fi ;; --install) module_src=\$[1] module_dest=\`echo \$[2] | sed "s/\.ko$/\${LINUX_MODULE_EXT}/"\` echo \$INSTALL -m644 "\$module_src" "\$module_dest" \$INSTALL -m644 "\$module_src" "\$module_dest" \$STRIP -g "\$module_dest" ;; --uninstall) module_src=\$[1] module_dest=\`echo \$[2] | sed "s/\.ko$/\${LINUX_MODULE_EXT}/"\` echo uninstall "\$module_src" "\$module_dest" rm -f "\$module_dest" ;; *) echo Unknown mode \$mode >&2 exit 1 esac EOF chmod +x modtool ])