]> rtime.felk.cvut.cz Git - orte.git/commitdiff
OMK rules updated to work correctly with 2.6.x kernels
authorppisa <ppisa>
Wed, 16 Jun 2004 15:40:15 +0000 (15:40 +0000)
committerppisa <ppisa>
Wed, 16 Jun 2004 15:40:15 +0000 (15:40 +0000)
Tested with 2.6.0, 2.6.4 and 2.6.6.

Makefile.rules
kernelcfg2mk

index f043d71382e739fd65e2812c4dcdea6e39d571e0..20515586d98cd3aa1fc41b6d47c0833e2e8297d0 100644 (file)
@@ -328,8 +328,8 @@ kern_GCCLIB_DIR=$(shell $(LINUX_CC) -print-search-dirs | sed -n -e 's/^install:
 else
 KERN_CC = echo KERN_CC not defined - compilation skipped
 endif
-c_o_kern_COMPILE = $(KERN_CC) $(kernel_INCLUDES) -idirafter $(kern_GCCLIB_DIR)/include $(LINUX_CFLAGS) $(LINUX_CFLAGS_MODULE) -DOMK_FOR_KERNEL -DEXPORT_SYMTAB -nostdinc
-cc_o_kern_COMPILE = $(KERN_CC) $(kernel_INCLUDES) $(LINUX_CFLAGS) $(LINUX_CFLAGS_MODULE) -DOMK_FOR_KERNEL -DEXPORT_SYMTAB
+c_o_kern_COMPILE = $(KERN_CC) $(kernel_INCLUDES) -idirafter $(kern_GCCLIB_DIR)/include $(LINUX_CPPFLAGS) $(LINUX_CFLAGS) $(LINUX_CFLAGS_MODULE) -DOMK_FOR_KERNEL -DEXPORT_SYMTAB -nostdinc
+cc_o_kern_COMPILE = $(KERN_CC) $(kernel_INCLUDES) -idirafter $(kern_GCCLIB_DIR)/include $(LINUX_CPPFLAGS) $(LINUX_CFLAGS) $(LINUX_CFLAGS_MODULE) -DOMK_FOR_KERNEL -DEXPORT_SYMTAB
 KERN_EXE_SUFFIX := $(LINUX_MODULE_EXT)
 KERN_LDFLAGS = $(LINUX_LDFLAGS)
 ifdef LINUX_ARCH
@@ -399,7 +399,27 @@ KERN_SOURCES += $$($(1)_SOURCES)
 # this is required to build right "__this_module" structure for 2.6.x kernels
 
 $(1).mod.c:
-       echo '#include <linux/module.h>' >$$@
+       echo  "\
+       #include <linux/version.h>@\
+       #include <linux/module.h>@\
+       #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,5))@\
+       #include <linux/vermagic.h>@\
+       #include <linux/compiler.h>@\
+       @\
+       MODULE_INFO(vermagic, VERMAGIC_STRING);@\
+       @\
+       #undef unix@\
+       struct module __this_module@\
+       __attribute__((section(\".gnu.linkonce.this_module\"))) = {@\
+        .name = __stringify(KBUILD_MODNAME),@\
+        .init = init_module,@\
+       #ifdef CONFIG_MODULE_UNLOAD@\
+        .exit = cleanup_module,@\
+       #endif@\
+       };@\
+       #endif@\
+       " | tr @ \\n >$$@ 
+   
 
 $(eval $(call COMPILE_c_o_kern_template,$(1).mod.c,$(1).mod.o,-DKBUILD_MODNAME=$(1)))
 
index f0c01a043873291d514441452386a10994b3a28a..da834218f5cf6f0fe82685cfcbe626504b332b55 100755 (executable)
@@ -82,6 +82,7 @@ modules:
        echo LINUX_CROSS_COMPILE="\$(CROSS_COMPILE)" >>flags
        echo LINUX_KERNELRELEASE="\$(KERNELRELEASE)" >>flags
        echo LINUX_CFLAGS="\$(CFLAGS)" | sed 's_Iinclude_I"\$(LINUXDIR)/include"_g'>>flags
+       echo LINUX_MODFLAGS="\$(MODFLAGS)"
        echo LINUX_CC="\$(CC)" >>flags
        echo LINUX_LD="\$(LD) \$(LDFLAGS)" >>flags
        echo LINUX_AS="\$(AS)" >>flags
@@ -128,9 +129,11 @@ flags:
        echo LINUX_ARFLAGS="\$(ARFLAGS)" >>\$(obj)/flags
        echo LINUX_CROSS_COMPILE="\$(CROSS_COMPILE)" >>\$(obj)/flags
        echo LINUX_KERNELRELEASE="\$(KERNELRELEASE)" >>\$(obj)/flags
+       echo LINUX_CPPFLAGS="\$(CPPFLAGS)" | sed 's_Iinclude_I"\$(LINUXDIR)/include"_g'>>\$(obj)/flags
        echo LINUX_CFLAGS="\$(CFLAGS)" | sed 's_Iinclude_I"\$(LINUXDIR)/include"_g'>>\$(obj)/flags
+       echo LINUX_CFLAGS_MODULE="\$(CFLAGS_MODULE)" >>\$(obj)/flags
        echo LINUX_CC="\$(CC)" >>\$(obj)/flags
-       echo LINUX_LD="\$(LD) \$(LDFLAGS)" >>\$(obj)/flags
+       echo LINUX_LD="\$(LD) \$(LDFLAGS) \$(LDFLAGS_MODULE)" >>\$(obj)/flags
        echo LINUX_AS="\$(AS)" >>\$(obj)/flags
        echo LINUX_MODULE_EXT=".ko" >>\$(obj)/flags
 EOF