]> rtime.felk.cvut.cz Git - omk.git/blob - rules/linux/kernelcfg2mk
Added kernelcfg2mk to repository
[omk.git] / rules / linux / kernelcfg2mk
1 #!/bin/bash
2
3 if [ $# -lt 1 ] ; then
4   echo "kernelcfg2mk: requires linux kernel directory as the first argument"
5   exit 2
6 fi
7
8 LINUX_DIR="$1"
9
10 if [ $# -gt 1 ] ; then
11   KERN_MODULES_DIR="$2"
12 fi
13
14 if [ ! -e $LINUX_DIR/.config ] ; then
15   echo "kernelcfg2mk: the provided locations doesnot point to configured kernel sources"
16   echo "        check directory $LINUX_DIR"
17   exit 2
18 fi
19
20 if [ ! -e $LINUX_DIR/.config ] ; then
21   echo "kernelcfg2mk: the provided locations doesnot point to configured kernel sources"
22   echo "        check directory $LINUX_DIR"
23   exit 2
24 fi
25
26 if [ -z "$KERN_BUILD_DIR" ]  ; then
27   KERN_BUILD_DIR=`pwd`
28 fi
29
30 if [ -z "$KERN_MODULES_DIR" ]  ; then
31   KERN_MODULES_DIR=`pwd`
32 fi
33
34
35 if [ -z "$MAKE" ]  ; then
36   MAKE="make"
37 fi
38
39
40 KERN_TEST_DIR="$KERN_BUILD_DIR/kern-test-mk"
41
42 mkdir -p $KERN_TEST_DIR
43
44 #echo MAKERULES_DIR $MAKERULES_DIR
45 #echo LINUX_DIR $LINUX_DIR
46 #echo KERN_BUILD_DIR $KERN_BUILD_DIR
47 #echo KERN_MODULES_DIR $KERN_MODULES_DIR
48
49 RETVAL="0"
50
51 LINUX_VERSION=$(grep UTS_RELEASE ${LINUX_DIR}/include/linux/version.h | \
52                sed 's/[^"]*"\(.*\)\{1\}"/\1/')
53
54 LINUX_VERSION_MAJOR=$(echo ${LINUX_VERSION} | cut -d. -f1)
55 LINUX_VERSION_MINOR=$(echo ${LINUX_VERSION} | cut -d. -f2)
56
57 #echo $LINUX_VERSION
58 #echo $LINUX_VERSION_MAJOR
59 #echo $LINUX_VERSION_MINOR
60
61
62 case $LINUX_VERSION_MAJOR.$LINUX_VERSION_MINOR in
63
64
65 #=====================================================================
66 # test for 2.4.x kernels
67     2.[01234])
68
69         rm -f ${KERN_BUILD_DIR}/kernel.mk
70         rm -rf ${KERN_TEST_DIR}
71         mkdir ${KERN_TEST_DIR}
72         if [ $? -ne 0 ] ; then
73                 echo "Cannot create Linux kernel test build directory \"${KERN_TEST_DIR}\""
74                 exit 3
75         fi
76         cd ${KERN_TEST_DIR}
77
78         cat >${KERN_TEST_DIR}/Makefile <<EOF
79
80 .PHONY: modules
81 modules:
82         @echo LINUX_ARCH="\$(ARCH)" >>flags
83         @echo LINUX_LDFLAGS="" >>flags
84         @echo LINUX_ARFLAGS="\$(ARFLAGS)" >>flags
85         @echo LINUX_CROSS_COMPILE="\$(CROSS_COMPILE)" >>flags
86         @echo LINUX_KERNELRELEASE="\$(KERNELRELEASE)" >>flags
87         @echo LINUX_AFLAGS="\$(AFLAGS)" | sed 's#Iinclude#I"\$(LINUXDIR)/include"#g'>>flags
88         @echo LINUX_CFLAGS="\$(CFLAGS)" | sed 's#Iinclude#I"\$(LINUXDIR)/include"#g'>>flags
89         @echo LINUX_MODFLAGS="\$(MODFLAGS)"
90         @echo LINUX_CC="\$(CC)" >>flags
91         @echo LINUX_LD="\$(LD) \$(LDFLAGS)" >>flags
92         @echo LINUX_AS="\$(AS)" >>flags
93         @echo LINUX_AR="\$(AR)" >>flags
94         @echo LINUX_MODULE_EXT=".o" >>flags
95
96 EOF
97
98         #echo ${MAKE} -C ${LINUX_DIR} SUBDIRS=${KERN_TEST_DIR} modules
99         ${MAKE} -C ${LINUX_DIR} SUBDIRS=${KERN_TEST_DIR} modules
100         if [ $? == 0 ] ; then
101                 cp -v flags ${KERN_MODULES_DIR}/kernel.mk       
102                 if [ ! $? == 0 ] ; then
103                         RETVAL="2"
104                 fi
105         else
106                 RETVAL="1"
107         fi
108
109         cd ${KERN_BUILD_DIR}
110         rm -rf ${KERN_TEST_DIR}
111         ;;
112
113 #=====================================================================
114 # test for 2.6.x kernels
115
116     2.6)
117
118         rm -f ${KERN_BUILD_DIR}/kernel.mk
119         rm -rf ${KERN_TEST_DIR}
120         mkdir ${KERN_TEST_DIR}
121         if [ $? -ne 0 ] ; then
122                 echo "Cannot create Linux kernel test build directory \"${KERN_TEST_DIR}\""
123                 exit 3
124         fi
125         cd ${KERN_TEST_DIR}
126
127         cat >${KERN_TEST_DIR}/Makefile <<EOF
128 obj-m += fake.o
129
130 \$(obj)/fake.c: flags
131         touch \$(obj)/fake.c
132
133 ifeq (\$(KBUILD_SRC),)
134 OMK_LINUX_SRC = \$(LINUXDIR)
135 else
136 OMK_LINUX_SRC = \$(KBUILD_SRC)
137 endif
138 #\$(warning Test \$OMK_LINUX_SRC)
139
140 .PHONY: flags
141 flags:
142         @echo LINUX_SRC="\$(OMK_LINUX_SRC)" >>\$(obj)/flags
143         @echo LINUX_ARCH="\$(ARCH)" >>\$(obj)/flags
144         @echo LINUX_LDFLAGS="" >>\$(obj)/flags
145         @echo LINUX_ARFLAGS="\$(ARFLAGS)" >>\$(obj)/flags
146         @echo LINUX_CROSS_COMPILE="\$(CROSS_COMPILE)" >>\$(obj)/flags
147         @echo LINUX_KERNELRELEASE="\$(KERNELRELEASE)" >>\$(obj)/flags
148         @echo LINUX_CPPFLAGS="\$(CPPFLAGS)" | sed 's#Iinclude#I"\$(LINUXDIR)/include"#g'>>\$(obj)/flags
149         @echo LINUX_AFLAGS="\$(AFLAGS)" | sed 's#Iinclude#I"\$(OMK_LINUX_SRC)/include"#g'>>\$(obj)/flags
150         @echo LINUX_CFLAGS="\$(CFLAGS)" | sed 's#Iinclude#I"\$(OMK_LINUX_SRC)/include"#g'>>\$(obj)/flags
151         @echo LINUX_CFLAGS_MODULE="\$(CFLAGS_MODULE)" >>\$(obj)/flags
152         @echo LINUX_CC="\$(CC)" >>\$(obj)/flags
153         @echo LINUX_LD="\$(LD) \$(LDFLAGS) \$(LDFLAGS_MODULE)" >>\$(obj)/flags
154         @echo LINUX_AS="\$(AS)" >>\$(obj)/flags
155         @echo LINUX_AR="\$(AR)" >>\$(obj)/flags
156         @echo LINUX_MODULE_EXT=".ko" >>\$(obj)/flags
157         @echo LINUX_QUOTE_MODNAME=\$(if \$(findstring KBUILD_STR,\$(basename_flags)),y,) >>\$(obj)/flags
158 EOF
159
160         #  V=1
161         #echo ${MAKE} -C ${LINUX_DIR} SUBDIRS=${KERN_TEST_DIR} LINUXDIR=${LINUX_DIR} MODVERDIR=${KERN_TEST_DIR} modules
162         ${MAKE} -C ${LINUX_DIR} M=${KERN_TEST_DIR} LINUXDIR=${LINUX_DIR} MODVERDIR=${KERN_TEST_DIR}/modver modules
163         #if [ $? == 0 ] ; then
164                 cp -v flags ${KERN_MODULES_DIR}/kernel.mk       
165                 if [ ! $? == 0 ] ; then
166                         RETVAL="2"
167                 fi
168         #else
169         #       RETVAL="1"
170         #fi
171
172         cd ${KERN_BUILD_DIR}
173         rm -rf ${KERN_TEST_DIR}
174         ;;
175
176 #=====================================================================
177
178     *)
179         echo "Unsupported Linux version $LINUX_VERSION_MAJOR.$LINUX_VERSION_MINOR"
180     ;;
181 esac
182
183
184 exit ${RETVAL}