3 if [ "$OMK_VERBOSE" == "1" ]; then
10 echo "kernelcfg2mk: requires linux kernel directory as the first argument"
16 if [ $# -gt 1 ] ; then
20 if [ ! -e $LINUX_DIR/.config ] ; then
21 echo "kernelcfg2mk: the provided location does not point to configured kernel sources"
22 echo " check directory $LINUX_DIR"
26 if [ ! -e $LINUX_DIR/.config ] ; then
27 echo "kernelcfg2mk: the provided location does not point to configured kernel sources"
28 echo " check directory $LINUX_DIR"
32 if [ -z "$KERN_BUILD_DIR" ] ; then
36 if [ -z "$KERN_MODULES_DIR" ] ; then
37 KERN_MODULES_DIR=`pwd`
41 if [ -z "$MAKE" ] ; then
46 KERN_TEST_DIR="$KERN_BUILD_DIR/kern-test-mk"
48 mkdir -p $KERN_TEST_DIR
50 $CMD_ECHO MAKERULES_DIR='$MAKERULES_DIR'
51 $CMD_ECHO LINUX_DIR='$LINUX_DIR'
52 $CMD_ECHO KERN_BUILD_DIR='$KERN_BUILD_DIR'
53 $CMD_ECHO KERN_MODULES_DIR='$KERN_MODULES_DIR'
54 $CMD_ECHO KERN_TEST_DIR='$KERN_TEST_DIR'
58 LINUX_VERSION=$(grep UTS_RELEASE ${LINUX_DIR}/include/linux/version.h | \
59 sed 's/[^"]*"\(.*\)\{1\}"/\1/')
60 if [ -z "$LINUX_VERSION" ] ; then
61 LINUX_VERSION=$(grep UTS_RELEASE ${LINUX_DIR}/include/linux/utsrelease.h | \
62 sed 's/[^"]*"\(.*\)\{1\}"/\1/')
65 LINUX_VERSION_MAJOR=$(echo ${LINUX_VERSION} | cut -d. -f1)
66 LINUX_VERSION_MINOR=$(echo ${LINUX_VERSION} | cut -d. -f2)
68 $CMD_ECHO Detected LINUX_VERSION=$LINUX_VERSION
69 $CMD_ECHO Detected LINUX_VERSION_MAJOR=$LINUX_VERSION_MAJOR
70 $CMD_ECHO Detected LINUX_VERSION_MINOR=$LINUX_VERSION_MINOR
73 case $LINUX_VERSION_MAJOR.$LINUX_VERSION_MINOR in
76 #=====================================================================
77 # test for 2.4.x kernels
80 rm -f ${KERN_BUILD_DIR}/kernel.mk
81 rm -rf ${KERN_TEST_DIR}
82 mkdir ${KERN_TEST_DIR}
83 if [ $? -ne 0 ] ; then
84 echo "Cannot create Linux kernel test build directory \"${KERN_TEST_DIR}\""
89 $CMD_ECHO Writing `pwd`/Makefile
90 cat >${KERN_TEST_DIR}/Makefile <<EOF
91 include $LINUX_DIR/include/config/auto.conf
94 \$(if \$(CONFIG_MODVERSIONS),-m) \\
95 \$(if \$(CONFIG_MODULE_SRCVERSION_ALL),-a,) \\
96 \$(if \$(KBUILD_EXTMOD),-i,-o) \$(kernelsymfile) \\
97 \$(if \$(KBUILD_EXTMOD),-I \$(modulesymfile)) \\
98 \$(if \$(KBUILD_EXTRA_SYMBOLS), \$(patsubst %, -e %,\$(EXTRA_SYMBOLS))) \\
99 \$(if \$(KBUILD_EXTMOD),-o \$(modulesymfile)) \\
100 \$(if \$(CONFIG_DEBUG_SECTION_MISMATCH),,-S) \\
101 \$(if \$(CONFIG_MARKERS),-K \$(kernelmarkersfile)) \\
102 \$(if \$(CONFIG_MARKERS),-M \$(markersfile)) \\
103 \$(if \$(KBUILD_EXTMOD)\$(KBUILD_MODPOST_WARN),-w) \\
104 \$(if \$(cross_build),-c)
108 if [ "$OMK_VERBOSE" = "1" ]; then env; fi
109 @echo LINUX_ARCH="\$(ARCH)" >>flags
110 @echo LINUX_LDFLAGS="" >>flags
111 @echo LINUX_ARFLAGS="\$(ARFLAGS)" >>flags
112 @echo LINUX_CROSS_COMPILE="\$(CROSS_COMPILE)" >>flags
113 @echo LINUX_KERNELRELEASE="\$(KERNELRELEASE)" >>flags
114 @$CMD_ECHO LINUX_AFLAGS="\$(AFLAGS)"
115 @echo LINUX_AFLAGS="\$(AFLAGS)" | sed 's#Iinclude#I"\$(LINUXDIR)/include"#g'>>flags
116 @$CMD_ECHO LINUX_CFLAGS="\$(CFLAGS)"
117 @echo LINUX_CFLAGS="\$(CFLAGS)" | sed 's#Iinclude#I"\$(LINUXDIR)/include"#g'>>flags
118 @echo LINUX_MODFLAGS="\$(MODFLAGS)"
119 @echo LINUX_CC="\$(CC)" >>flags
120 @echo LINUX_LD="\$(LD) \$(LDFLAGS)" >>flags
121 @echo LINUX_AS="\$(AS)" >>flags
122 @echo LINUX_AR="\$(AR)" >>flags
123 @echo LINUX_MODULE_EXT=".o" >>flags
124 @echo MODPOST_OPTS="\$(MODPOST_OPTS)" >>flags
128 $CMD_ECHO ${MAKE} -C ${LINUX_DIR} SUBDIRS=${KERN_TEST_DIR} modules
129 ${MAKE} -C ${LINUX_DIR} SUBDIRS=${KERN_TEST_DIR} modules
130 if [ $? == 0 ] ; then
131 cp -v flags ${KERN_MODULES_DIR}/kernel.mk
132 if [ ! $? == 0 ] ; then
140 if [ "$OMK_VERBOSE" != "1" ]; then rm -rf ${KERN_TEST_DIR}; fi
143 #=====================================================================
144 # test for 2.6.x kernels
148 rm -f ${KERN_BUILD_DIR}/kernel.mk
149 rm -rf ${KERN_TEST_DIR}
150 mkdir ${KERN_TEST_DIR}
151 if [ $? -ne 0 ] ; then
152 echo "Cannot create Linux kernel test build directory \"${KERN_TEST_DIR}\""
157 $CMD_ECHO Writing `pwd`/Makefile
158 cat >${KERN_TEST_DIR}/Makefile <<EOF
159 include $LINUX_DIR/include/config/auto.conf
162 \$(if \$(CONFIG_MODVERSIONS),-m) \\
163 \$(if \$(CONFIG_MODULE_SRCVERSION_ALL),-a,) \\
164 \$(if \$(KBUILD_EXTMOD),-i,-o) \$(kernelsymfile) \\
165 \$(if \$(KBUILD_EXTMOD),-I \$(modulesymfile)) \\
166 \$(if \$(KBUILD_EXTRA_SYMBOLS), \$(patsubst %, -e %,\$(EXTRA_SYMBOLS))) \\
167 \$(if \$(KBUILD_EXTMOD),-o \$(modulesymfile)) \\
168 \$(if \$(CONFIG_DEBUG_SECTION_MISMATCH),,-S) \\
169 \$(if \$(CONFIG_MARKERS),-K \$(kernelmarkersfile)) \\
170 \$(if \$(CONFIG_MARKERS),-M \$(markersfile)) \\
171 \$(if \$(KBUILD_EXTMOD)\$(KBUILD_MODPOST_WARN),-w) \\
172 \$(if \$(cross_build),-c)
176 \$(obj)/fake.c: flags
179 ifeq (\$(KBUILD_SRC),)
180 OMK_LINUX_SRC = \$(LINUXDIR)
182 OMK_LINUX_SRC = \$(KBUILD_SRC)
184 #\$(warning Test \$OMK_LINUX_SRC)
188 if [ "$OMK_VERBOSE" = "1" ]; then echo "Environment:" && env; fi
189 @echo LINUX_SRC="\$(OMK_LINUX_SRC)" >>\$(obj)/flags
190 @echo LINUX_ARCH="\$(ARCH)" >>\$(obj)/flags
191 @echo LINUX_BUILDHOST="\$(KBUILD_BUILDHOST)" >>\$(obj)/flags
192 @echo LINUX_LDFLAGS="" >>\$(obj)/flags
193 @echo LINUX_ARFLAGS="\$(ARFLAGS)" >>\$(obj)/flags
194 @echo LINUX_CROSS_COMPILE="\$(CROSS_COMPILE)" >>\$(obj)/flags
195 @echo LINUX_KERNELRELEASE="\$(KERNELRELEASE)" >>\$(obj)/flags
196 @$CMD_ECHO CPPFLAGS="\$(CPPFLAGS)"
197 @$CMD_ECHO KBUILD_CPPFLAGS="\$(KBUILD_CPPFLAGS)"
198 @$CMD_ECHO AFLAGS="\$(AFLAGS)"
199 @$CMD_ECHO CFLAGS="\$(CFLAGS)"
200 @$CMD_ECHO KBUILD_CFLAGS="\$(KBUILD_CFLAGS)"
201 @$CMD_ECHO LINUXINCLUDE="\$(LINUXINCLUDE)"
202 @$CMD_ECHO CFLAGS_MODULE="\$(CFLAGS_MODULE)"
204 @echo LINUX_CPPFLAGS="\$(KBUILD_CPPFLAGS)" | sed 's#-\(I\|include\) \?\(include\|arch\)#-\1 "\$(OMK_LINUX_SRC)/\2"#g'>>\$(obj)/flags
205 @echo LINUX_CPPFLAGS+="\$(LINUXINCLUDE)" | sed 's#-\(I\|include\) \?\(include\|arch\)#-\1 "\$(OMK_LINUX_SRC)/\2"#g'>>\$(obj)/flags
206 @echo LINUX_AFLAGS="\$(KBUILD_AFLAGS)" | sed 's#-I\(include\|arch\)#-I"\$(OMK_LINUX_SRC)/\1"#g'>>\$(obj)/flags
207 @echo LINUX_CFLAGS="\$(KBUILD_CFLAGS)" | sed 's#-I\(include\|arch\)#-I"\$(OMK_LINUX_SRC)/\1"#g'>>\$(obj)/flags
209 @echo LINUX_CPPFLAGS="\$(CPPFLAGS)" | sed 's#Iinclude#I"\$(OMK_LINUX_SRC)/include"#g'>>\$(obj)/flags
210 @echo LINUX_AFLAGS="\$(AFLAGS)" | sed 's#Iinclude#I"\$(OMK_LINUX_SRC)/include"#g'>>\$(obj)/flags
211 @echo LINUX_CFLAGS="\$(CFLAGS)" | sed 's#Iinclude#I"\$(OMK_LINUX_SRC)/include"#g'>>\$(obj)/flags
213 @echo LINUX_CFLAGS_MODULE="\$(CFLAGS_MODULE)" >>\$(obj)/flags
214 @echo LINUX_CC="\$(CC)" >>\$(obj)/flags
215 @echo LINUX_LD="\$(LD) \$(LDFLAGS) \$(LDFLAGS_MODULE)" | sed 's#\(\<arch/[^ ]*\.o\>\)#"\$(OMK_LINUX_SRC)/\1"#g' >>\$(obj)/flags
216 @echo LINUX_AS="\$(AS)" >>\$(obj)/flags
217 @echo LINUX_AR="\$(AR)" >>\$(obj)/flags
218 @echo LINUX_MODULE_EXT=".ko" >>\$(obj)/flags
219 @echo LINUX_QUOTE_MODNAME=\$(if \$(findstring KBUILD_STR,\$(basename_flags)),y,) >>\$(obj)/flags
220 @echo LINUX_CONFIG_MODVERSIONS=\$(CONFIG_MODVERSIONS) >>\$(obj)/flags
221 @echo LINUX_CONFIG_MODULE_SRCVERSION_ALL=\$(CONFIG_MODULE_SRCVERSION_ALL) >>\$(obj)/flags
222 @echo LINUX_CONFIG_DEBUG_SECTION_MISMATCH=\$(CONFIG_DEBUG_SECTION_MISMATCH) >>\$(obj)/flags
223 @echo LINUX_CONFIG_MARKERS=\$(CONFIG_MARKERS) >>\$(obj)/flags
224 @echo LINUX_KBUILD_EXTMOD=\$(KBUILD_EXTMOD) >>\$(obj)/flags
225 @echo LINUX_KBUILD_EXTRA_SYMBOLS=\$(KBUILD_EXTRA_SYMBOLS) >>\$(obj)/flags
226 @echo LINUX_KBUILD_MODPOST_WARN=\$(KBUILD_MODPOST_WARN) >>\$(obj)/flags
227 @echo LINUX_CROSS_BUILD=\$(cross_build) >>\$(obj)/flags
228 @echo MODPOST_OPTS="\$(MODPOST_OPTS)" >> \$(obj)/flags
232 # ${MAKE} -C ${LINUX_DIR} SUBDIRS=${KERN_TEST_DIR} LINUXDIR=${LINUX_DIR} MODVERDIR=${KERN_TEST_DIR} KBUILD_VERBOSE=1 modules
233 ${MAKE} -C ${LINUX_DIR} M=${KERN_TEST_DIR} LINUXDIR=${LINUX_DIR} MODVERDIR=${KERN_TEST_DIR}/modver KBUILD_VERBOSE=$OMK_VERBOSE modules
234 #if [ $? == 0 ] ; then
235 cp -v flags ${KERN_MODULES_DIR}/kernel.mk
236 if [ ! $? == 0 ] ; then
244 if [ "$OMK_VERBOSE" != "1" ]; then rm -rf ${KERN_TEST_DIR}; fi
247 #=====================================================================
250 echo "Unsupported Linux version $LINUX_VERSION_MAJOR.$LINUX_VERSION_MINOR"