What am I doing wrong? I am trying to compile a kernel and keep getting this error: CC [M] drivers/char/speakup/speakup.o drivers/char/speakup/speakup.c:2677:39: error: macro "DECLARE_WORK" requires 3 arguments, but only 2 given drivers/char/speakup/speakup.c:2677: warning: type defaults to ?int? in declaration of ?DECLARE_WORK? drivers/char/speakup/speakup.c: In function ?speakup_help?: drivers/char/speakup/speakup.c:2686: error: ?ld_help? undeclared (first use in this function) drivers/char/speakup/speakup.c:2686: error: (Each undeclared identifier is reported only once drivers/char/speakup/speakup.c:2686: error: for each function it appears in.) make[3]: *** [drivers/char/speakup/speakup.o] Error 1 make[2]: *** [drivers/char/speakup] Error 2 make[1]: *** [drivers/char] Error 2 make: *** [drivers] Error 2 I have tried to compile as module or included in kernel. I have tried several kernel versions. I am using cvs with the following script to patch the source. #!/bin/bash ROOTDIR=/usr/src/linux if [ "$1" != "" ]; then ROOTDIR="$1" else if [ -d kernel -a -d Documentation ]; then ROOTDIR=`pwd` fi fi VERSION=v`head -2 $ROOTDIR/Makefile | \ awk '{ printf "%s",$3 }'` DIR=$ROOTDIR/drivers/char/speakup echo "Patching version $VERSION" if [ ! -d ${DIR}/CVS ] && [ "$CVSROOT" == "" ]; then echo 'CVSROOT not set. Enter it below. Hit enter for anonymous.' read -p 'CVSROOT> ' CVSROOT [ "$CVSROOT" == "" ] && CVSROOT=':pserver:anonymous at linux-speakup.org:/usr/src/CVS' export CVSROOT cvs login || exit fi if [ "$1" != "-p" ]; then # get new version mkdir -p ${DIR%/speakup} cd ${DIR%/speakup} if [ -d speakup ] && [ -d ${DIR}/CVS ]; then cd speakup cvs update -d -P || exit else rm -fr ${DIR} cvs co -P speakup || exit cd speakup fi fi # make .orig files echo -n 'Creating .orig files [' for i in `cat ${DIR}/patchlist-${VERSION}`; do patch=`echo $i | cut -f 1 -d ,` filebase=`echo $i | cut -f 2 -d ,` mkdir -p `dirname $ROOTDIR/$filebase` if [ "$patch" == "1" ]; then if [ ! -e $ROOTDIR/$filebase.orig ]; then echo -n . cp $ROOTDIR/$filebase $ROOTDIR/$filebase.orig fi fi done echo '] done.' # apply patches echo -n 'Patching files [' for i in ${DIR}/diff-${VERSION}/*.patch; do # skip dirs [ -d $i ] && continue echo -n p writeloc=${i##$DIR\/diff-${VERSION}\/} writeloc=${writeloc%.patch} writeloc=${writeloc//^/\/} patch --silent -f -p0 -o $ROOTDIR/$writeloc $ROOTDIR/$writeloc.orig $i done echo '] done.' # copy files echo -n 'Copying files [' for i in ${DIR}/diff-${VERSION}/*.copy; do # skip dirs [ -d $i ] && continue echo -n c writeloc=${i##$DIR\/diff-${VERSION}\/} writeloc=${writeloc%.copy} writeloc=${writeloc//^/\/} cp $i $ROOTDIR/$writeloc done echo '] done.' http://www.joekamphaus.net