Jacques is correct so far as the simple compiling goes. With the kmodule/Makefile containing both FLAG varianst: .------------- EXTRA_CPPFLAGS += -DKMARTIAN_STAMP=20061202 EXTRA_CFLAGS += -DKMARTIAN_STAMP=20061202 the compile is succesful on both 2.6.24 and earlier kernels. Tests using linux-headers representing earlier kernels can be done with commands like: make KERNEL_DIR=/usr/src/linux-headers--2.6.20-15-generic I'm sending the tarball to cogent folk for testing under diveres kernels. It is "Stefan Foerster" <stefan.foerster@xxxxxxxxxxxxxx> package obtained through Antonio EXCEPT in kmodule/Makefile for containing both lines above and the lines enabling cross version compiling: ifdef KERNEL_DIR KBUILD_DIR = $(KERNEL_DIR) else KBUILD_DIR = /lib/modules/$(KRELEASE)/build endif On this particular laptop, I can test for actual functionality however MarvS 2008/6/10 Jacques Goldberg <Jacques.Goldberg@xxxxxxx>: > Here attached is the "product" which you say you need but I continue to say > that it is a useless complication, because if both > EXTRA_CFLAGS += -DKMARTIAN_STAMP=20061202 > EXTRA_CPPFLAGS += -DKMARTIAN_STAMP=20061202 > were present in the Makefile, one or the other would be ignored depending on > the compiler used for modules depending on that flag. > > Never mind, enjoy the Makefile > Jacques Goldberg wrote: >> >> Marv, >> I will try tomorrow but let me please candidly ask: >> Is EXTRA_CPPFLAGS used for kernels < 24 and is EXTRA_CFLAGS used with 24 >> and above? >> This would mean that not the same compiler is used by the Makefile, or >> that I missed something. >> Why couldn't you then just define both? >> Or do you have a typo and mean to define a different value for >> DKMARTIAN_STAMP in the same variable EXTRA_CFLAGS or EXTRA_CPPFLAGS? >> >> Jacques >> >> Marvin Stodolsky wrote: >>> >>> Folks >>> >>> Is any erudite enough in Makefile syntax to help with a needed >>> Conditional. >>> >>> With SUBLEVEL being the third component of the Kernel-Version >>> which can be read out with >>> SUBLEVEL := $(shell uname -r | cut -d. -f3 | cut -d. -f1 | cut -d- -f1) >>> with cogency in the 22 24+ range >>> >>> a Makefile conditional is needed to use >>> EXTRA_CFLAGS += -DKMARTIAN_STAMP=20061202 >>> for SUBLEVEL < 24 , >>> and for greater or equal 24 >>> EXTRA_CPPFLAGS += -DKMARTIAN_STAMP=20061202 >>> >>> Otherwise we would need separate martian packages for 2.6.24 and later >>> kernels >>> versus 2.6.22 and earlier >>> >>> Sadly I'm not adequately knowledgeable in Makefile syntax. >>> >>> Incidentally, in the kmodule/Makefile , the role of this section: >>> >>> ifdef KERNEL_DIR >>> KBUILD_DIR = $(KERNEL_DIR) >>> else >>> KBUILD_DIR = /lib/modules/$(KRELEASE)/build >>> endif >>> >>> is to enable compiling for other kernels, other than the current boot >>> kernel. >>> The syntax is like: >>> $ make KERNEL_DIR=/usr/src/linux-headers-SomeKernelVersion >>> that is >>> KERNEL_DIR is the path to the linux-headers for the desired kernel >>> version. >>> This saves rebooting when one wants to test compiling for several >>> different linux-headers >>> >>> IIf the command is only: >>> $ make >>> then there is used the default /lib/modules/kernel-version-bootup/build >>> >>> Thus I will retain this section in the update. >>> >>> MarvS >>> >>> On Sat, Jun 7, 2008 at 3:08 PM, Ivica Grujic <grujakg@xxxxxxxxx> wrote: >>>> >>>> Antonio I'm thinking that others should know about your good deed, so >>>> I've >>>> posted this on the thread also ;) >>>> >>>> You would also need to keep in mind the patch for Makefile already >>>> applied to martian-full-20080407. >>>> >>>> diff -u -w -r martian-full-20080407/kmodule/Makefile >>>> martian/kmodule/Makefile >>>> --- martian-full-20080407/kmodule/Makefile 2008-04-08 >>>> 02:52:13.000000000 +0200 >>>> +++ martian/kmodule/Makefile 2006-12-03 00:39:24.000000000 +0100 >>>> @@ -1,14 +1,8 @@ >>>> KRELEASE = $(shell uname -r) >>>> - >>>> -ifdef KERNEL_DIR >>>> -KBUILD_DIR = $(KERNEL_DIR) >>>> -else >>>> KBUILD_DIR = /lib/modules/$(KRELEASE)/build >>>> -endif >>>> - >>>> MSRC_DIR = $(shell pwd) >>>> >>>> -EXTRA_CFLAGS += -DKMARTIAN_STAMP=20061202 >>>> +EXTRA_CPPFLAGS += -DKMARTIAN_STAMP=20061202 >>>> CPPFLAGS += -DKMARTIAN_STAMP=20061202 >>>> >>>> # kbuild >>>> >>>> Think that EXTRA_CFLAGS make a difference. >>>> >>>> This Makefile is all I had to keep, not to build but to successfully run >>>> martian. >>>> >>>> Thanks again for great work. >>>> >>>> Regards >>>> >>>> grujakg >>>> >>>> Antonio Olivares wrote: >>>>> >>>>> If compiling fails, there is a file that asks for # linux/ioctl32.h> >>>>> >>>>> comment it out and the compilation will succeed. >>>>> /* # linux/ioctl32.h> */ >>>>> >>>>> I forgot to mention this in the previous emails. >>>>> >>>>> Regards, >>>>> >>>>> Antonio >>>>> >>>>> --- On Sat, 6/7/08, Ivica Grujic <grujakg@xxxxxxxxx> wrote: >>>>> >>>>>> From: Ivica Grujic <grujakg@xxxxxxxxx> >>>>>> Subject: Re: Fw: [Fwd: [Fwd: Re: Another Patch will be needed for >>>>>> kernel >>>>>> version 2.6.25]] >>>>>> To: olivares14031@xxxxxxxxx >>>>>> Date: Saturday, June 7, 2008, 8:27 AM >>>>>> Yes, I got it. >>>>>> >>>>>> Thanks a lot. >>>>>> >>>>>> Regards, >>>>>> >>>>>> grujakg >>>>>> >>>>>> Antonio Olivares wrote: >>>>>>> >>>>>>> Done, >>>>>>> >>>>>>> please let me know if you receive it without problems. >>>>>> >>>>>> :) >>>>>>> >>>>>>> Regards, >>>>>>> >>>>>>> Antonio >>>>>>> > > SUBLEVEL=$(shell uname -r | cut -d. -f3 | cut -d. -f1 | cut -d- -f1) > AGE=$(shell if [ "$(SUBLEVEL)" -lt 24 ] ;then echo OLD; else echo NEW;fi) > > # The two lines above could be merged into one, making the script unreadable > # for a normal human being > # Tricky because comparisons inside a Makefile are limited to equal/not > equal, > # thus an intermediate string is necessary. > > ifeq ($(AGE),OLD) > EXTRA_CFLAGS += -DKMARTIAN_STAMP=20061202 > else > EXTRA_CPPFLAGS += -DKMARTIAN_STAMP=20061202 > endif > > all: > # The @echo lines are for debugging and can of course be removed! > > @echo "SUBLEVEL = $(SUBLEVEL)" > @echo "SUBLEVEL is $(AGE)" > @echo "EXTRA_CFLAGS = $(EXTRA_CFLAGS)" > @echo "EXTRA_CPPFLAGS = $(EXTRA_CPPFLAGS)" > gcc hello.c -o hello > >