Hi, I have currently following problem with batman-adv-kernelland and batmand- gateway:
Danial Baumann supports building of kernel modules against the current Debian kernel in sid with his linux-modules-extra-2.6 package. The module sources must only to support build over the kernel headers. It is done like that: /usr/bin/make -C /usr/src/linux-headers-2.6.29-1-amd64 M=/batman-adv/
So it calls the Makefile in /usr/src/linux-headers-2.6.29-1-amd64 to build the sources in /batman-adv/. This seems to be a quite common way to do the build. There are different problems with the way the current Makefiles of these modules are written.
First thing is that there is a Makefile.kbuild which is included with include $(PWD)/Makefile.kbuild This will not work in the current situation because the PWD is now /usr/src/linux-headers-2.6.29-1-amd64. Is this extra Makefile.kbuild really needed? The second problem is the check of KERNELPATH of Makefile. It will check if the sources of the current kernel is installed and quits if not (+ error message that someone should set the KERNELPATH variable). In the current situation we don't have the sources of the current kernel installed, but the kernel headers of another kernel are being used automatically. Wouldn't be following check
KERNELPATH ?= /lib/modules/$(shell uname -r)/build # sanity check: does KERNELPATH exist? ifeq ($(shell cd $(KERNELPATH) && pwd),) $(warning $(KERNELPATH) is missing, please set KERNELPATH) endif
ok too?
The batmand-gateway cannot be build for linux 2.6 if the current kernel is a 2.4.x. Isn't it possible to make the obj-m and batgat-objs assignment outside the check for the kernel version?
My current workaround is to install my own version of the Makefile in the debian package, but I ask myself if this is really needed or parts of it should also be changed upstream.
Best regards, Sven