on 4): yep, no need for PHONY stuff (simplified script attached)
The reason for this cropping in is that I had a more complex script
that reflected my actual situation; I have a directory that contains
some kernel modules, some testing programs and other junk, and I
build a complete Makefile that has rules for all these guys, not
just the kernel modules. Which is why I violated your sensibilties
about the other points I guess. I didn't just want to pass the
work off to the kernel building stuff.
If you want to do this I agree all you need is the part to generate
a objs-m list and the Rules.make stuff for 2.4, and that is
simpler. You could indeed remove all the targets etc, but then
as you note, you can't just say make, but have to do the
make -C KERNEL_SOURCE SUBDIRS=$PWD modules
business.
I've attached that one too.
coop
======================================================================
Jerry Cooperstein, Senior Consultant, <coop@axian.com>
Axian, Inc., Software Consulting and Training
4800 SW Griffith Dr., Ste. 202, Beaverton, OR 97005 USA
http://www.axian.com/
======================================================================
#(FULL SCRIPT, NO PHONY):
######################################################################
#!/bin/bash
# script for generating external Makefile for kernel modules
# Jerry Cooperstein, Axian Inc 2003_01_27
# Too trivial to GPL; use as desired.
# do either "makeit"; assumes kernel source at /usr/src/linux-`uname -r`
# or "makeit /usr/src/linux-2.5.59 or makeit /usr/src/linux-2.4.20" etc.
# Should work on all 2.4, 2.5 kernels.
# assumes all .c files in current directory are modules
if [ "$1" == "" ] ; then
KROOT=/usr/src/linux-`uname -r`
else
KROOT="$1"
fi
if [ `echo $KROOT | grep 2.5` ] ; then
VERSION=2.5
else
VERSION=2.4
fi
OBJS=""
for names in *.c ; do
OBJS=$OBJS" `basename $names .c`.o"
done
rm -f Makefile
cat <<EOF > Makefile
obj-m += $OBJS
KROOT=$KROOT
all: mmodules
EOF
if [ $VERSION == 2.5 ] ; then
CLEANSTUFF="*.o *.ko .*cmd"
cat <<EOF >> Makefile
EOF
else
CLEANSTUFF="*.o .*flags"
cat <<EOF >> Makefile
TOPDIR=\$(KROOT)
include \$(TOPDIR)/Rules.make
EOF
fi
cat <<EOF >> Makefile
mmodules:
\$(MAKE) -C \$(KROOT) SUBDIRS=$PWD modules
clean:
rm $CLEANSTUFF
EOF
######################################################################
#(SHORT SCRIPT: no local make targets)
#!/bin/bash
# script for generating external Makefile for kernel modules
# Jerry Cooperstein, Axian Inc 2003_01_27
# Too trivial to GPL; use as desired.
# do either "makeit"; assumes kernel source at /usr/src/linux-`uname -r`
# or "makeit /usr/src/linux-2.5.59 or makeit /usr/src/linux-2.4.20" etc.
# Should work on all 2.4, 2.5 kernels.
# assumes all .c files in current directory are modules
if [ "$1" == "" ] ; then
KROOT=/usr/src/linux-`uname -r`
else
KROOT="$1"
fi
if [ `echo $KROOT | grep 2.5` ] ; then
VERSION=2.5
else
VERSION=2.4
fi
OBJS=""
for names in *.c ; do
OBJS=$OBJS" `basename $names .c`.o"
done
rm -f Makefile
cat <<EOF > Makefile
obj-m += $OBJS
KROOT=$KROOT
EOF
if [ $VERSION == 2.5 ] ; then
cat <<EOF >> Makefile
EOF
else
cat <<EOF >> Makefile
TOPDIR=\$(KROOT)
include \$(TOPDIR)/Rules.make
EOF
fi
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/