compat: export compat kernel versions info
[~emulex/for-vlad/old/compat.git] / Makefile
1 export KMODDIR?=       updates/
2 KMODDIR_ARG:=   "INSTALL_MOD_DIR=$(KMODDIR)"
3 ifneq ($(origin $(KLIB)), undefined)
4 KMODPATH_ARG:=  "INSTALL_MOD_PATH=$(KLIB)"
5 else
6 export KLIB:=          /lib/modules/$(shell uname -r)
7 endif
8 export KLIB_BUILD ?=    $(KLIB)/build
9
10 export PWD := $(shell pwd)
11
12 ifeq ($(KERNELRELEASE),)
13 export COMPAT_BASE_TREE := "linux-next.git"
14 # For this specific tree this is only relevant in
15 # terms of the last time we synched code up with upstream
16 # for internal stuff. For other compatability projects this
17 # would be the git describe of the base tree you are
18 # working with.
19 export COMPAT_BASE_TREE_VERSION := "next-20100517"
20 export COMPAT_VERSION := $(shell git describe)
21 endif
22
23 # This generates a bunch of CONFIG_COMPAT_KERNEL_22 CONFIG_COMPAT_KERNEL_23 .. etc for
24 # each kernel release you need an object for.
25 ifneq ($(wildcard $(KLIB_BUILD)/Makefile),)
26
27 COMPAT_LATEST_VERSION = 3
28 KERNEL_VERSION := $(shell $(MAKE) -C $(KLIB_BUILD) kernelversion | sed -n 's/^\([0-9]\)\..*/\1/p')
29
30 ifneq ($(KERNEL_VERSION),2)
31 KERNEL_SUBLEVEL := $(shell $(MAKE) -C $(KLIB_BUILD) kernelversion | sed -n 's/^3\.\([0-9]\+\).*/\1/p')
32 else
33 COMPAT_26LATEST_VERSION = 39
34 KERNEL_26SUBLEVEL := $(shell $(MAKE) -C $(KLIB_BUILD) kernelversion | sed -n 's/^2\.6\.\([0-9]\+\).*/\1/p')
35 COMPAT_26VERSIONS := $(shell I=$(COMPAT_26LATEST_VERSION); while [ "$$I" -gt $(KERNEL_26SUBLEVEL) ]; do echo $$I; I=$$(($$I - 1)); done)
36 $(foreach ver,$(COMPAT_26VERSIONS),$(eval export CONFIG_COMPAT_KERNEL_2_6_$(ver)=y))
37 KERNEL_SUBLEVEL := -1
38 endif
39
40 COMPAT_VERSIONS := $(shell I=$(COMPAT_LATEST_VERSION); while [ "$$I" -gt $(KERNEL_SUBLEVEL) ]; do echo $$I; I=$$(($$I - 1)); done)
41 $(foreach ver,$(COMPAT_VERSIONS),$(eval export CONFIG_COMPAT_KERNEL_3_$(ver)=y))
42
43 endif
44
45 ifeq ($(CONFIG_COMPAT_KERNEL_33),y)
46 ifneq ($(CONFIG_FW_LOADER),)
47  export CONFIG_COMPAT_FIRMWARE_CLASS=m
48 endif
49 endif
50
51 ifeq ($(CONFIG_COMPAT_KERNEL_36),y)
52  export CONFIG_COMPAT_KFIFO=m
53 endif #CONFIG_COMPAT_KERNEL_36
54
55 obj-y += compat/
56
57 # This hack lets us put our include path first than the kernel's
58 # when building our compat modules. Your own makefile would look
59 # the same.
60 NOSTDINC_FLAGS := -I$(M)/include/ \
61         -include $(M)/include/linux/compat-2.6.h \
62         $(CFLAGS) \
63         -DCOMPAT_BASE_TREE="\"$(COMPAT_BASE_TREE)\"" \
64         -DCOMPAT_BASE_TREE_VERSION="\"$(COMPAT_BASE_TREE_VERSION)\"" \
65         -DCOMPAT_PROJECT="\"Generic kernel\"" \
66         -DCOMPAT_VERSION="\"$(COMPAT_VERSION)\""
67
68 modules:
69         $(MAKE) -C $(KLIB_BUILD) M=$(PWD) modules
70 install: modules
71         $(MAKE) -C $(KLIB_BUILD) M=$(PWD) $(KMODDIR_ARG) $(KMODPATH_ARG) \
72                 modules_install
73         depmod -a
74         @./scripts/compat_firmware_install
75 clean:
76         $(MAKE) -C $(KLIB_BUILD) M=$(PWD) clean
77 all: modules
78
79 clean-files := Module.symvers modules.order Module.markers compat/modules.order