4 echo "kernelcfg2mk: requires linux kernel directory as the first argument"
10 if [ $# -gt 1 ] ; then
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"
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"
26 if [ -z "$KERN_BUILD_DIR" ] ; then
30 if [ -z "$KERN_MODULES_DIR" ] ; then
31 KERN_MODULES_DIR=`pwd`
35 if [ -z "$MAKE" ] ; then
40 KERN_TEST_DIR="$KERN_BUILD_DIR/kern-test-mk"
42 mkdir -p $KERN_TEST_DIR
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
51 LINUX_VERSION=$(grep UTS_RELEASE ${LINUX_DIR}/include/linux/version.h | \
52 sed 's/[^"]*"\(.*\)\{1\}"/\1/')
53 if [ -z "$LINUX_VERSION" ] ; then
54 LINUX_VERSION=$(grep UTS_RELEASE ${LINUX_DIR}/include/linux/utsrelease.h | \
55 sed 's/[^"]*"\(.*\)\{1\}"/\1/')
57 if [ -z "$LINUX_VERSION" ] ; then
58 LINUX_VERSION=$(grep UTS_RELEASE ${LINUX_DIR}/include/generated/utsrelease.h | \
59 sed 's/[^"]*"\(.*\)\{1\}"/\1/')
62 LINUX_VERSION_MAJOR=$(echo ${LINUX_VERSION} | cut -d. -f1)
63 LINUX_VERSION_MINOR=$(echo ${LINUX_VERSION} | cut -d. -f2)
66 #echo $LINUX_VERSION_MAJOR
67 #echo $LINUX_VERSION_MINOR
70 case $LINUX_VERSION_MAJOR.$LINUX_VERSION_MINOR in
73 #=====================================================================
74 # test for 2.4.x kernels
77 rm -f ${KERN_BUILD_DIR}/kernel.mk
78 rm -rf ${KERN_TEST_DIR}
79 mkdir ${KERN_TEST_DIR}
80 if [ $? -ne 0 ] ; then
81 echo "Cannot create Linux kernel test build directory \"${KERN_TEST_DIR}\""
86 cat >${KERN_TEST_DIR}/Makefile <<EOF
90 @echo LINUX_ARCH="\$(ARCH)" >>flags
91 @echo LINUX_LDFLAGS="" >>flags
92 @echo LINUX_ARFLAGS="\$(ARFLAGS)" >>flags
93 @echo LINUX_CROSS_COMPILE="\$(CROSS_COMPILE)" >>flags
94 @echo LINUX_KERNELRELEASE="\$(KERNELRELEASE)" >>flags
95 @echo LINUX_AFLAGS="\$(AFLAGS)" | sed 's#Iinclude#I"\$(LINUXDIR)/include"#g'>>flags
96 @echo LINUX_CFLAGS="\$(CFLAGS)" | sed 's#Iinclude#I"\$(LINUXDIR)/include"#g'>>flags
97 @echo LINUX_MODFLAGS="\$(MODFLAGS)"
98 @echo LINUX_CC="\$(CC)" >>flags
99 @echo LINUX_LD="\$(LD) \$(LDFLAGS)" >>flags
100 @echo LINUX_AS="\$(AS)" >>flags
101 @echo LINUX_AR="\$(AR)" >>flags
102 @echo LINUX_MODULE_EXT=".o" >>flags
106 #echo ${MAKE} -C ${LINUX_DIR} SUBDIRS=${KERN_TEST_DIR} modules
107 ${MAKE} -C ${LINUX_DIR} SUBDIRS=${KERN_TEST_DIR} modules
108 if [ $? == 0 ] ; then
109 cp -v flags ${KERN_MODULES_DIR}/kernel.mk
110 if [ ! $? == 0 ] ; then
118 rm -rf ${KERN_TEST_DIR}
121 #=====================================================================
122 # test for 2.6.x and 3.x kernels
126 rm -f ${KERN_BUILD_DIR}/kernel.mk
127 rm -rf ${KERN_TEST_DIR}
128 mkdir ${KERN_TEST_DIR}
129 if [ $? -ne 0 ] ; then
130 echo "Cannot create Linux kernel test build directory \"${KERN_TEST_DIR}\""
135 cat >${KERN_TEST_DIR}/Makefile <<EOF
138 \$(obj)/fake.c: flags
141 ifeq (\$(KBUILD_SRC),)
142 OMK_LINUX_SRC = \$(LINUXDIR)
144 OMK_LINUX_SRC = \$(KBUILD_SRC)
146 #\$(warning Test \$OMK_LINUX_SRC)
150 @echo LINUX_SRC="\$(OMK_LINUX_SRC)" >>\$(obj)/flags
151 @echo LINUX_ARCH="\$(ARCH)" >>\$(obj)/flags
152 @echo LINUX_BUILDHOST="\$(KBUILD_BUILDHOST)" >>\$(obj)/flags
153 @echo LINUX_LDFLAGS="" >>\$(obj)/flags
154 @echo LINUX_ARFLAGS="\$(ARFLAGS)" >>\$(obj)/flags
155 @echo LINUX_CROSS_COMPILE="\$(CROSS_COMPILE)" >>\$(obj)/flags
156 @echo LINUX_KERNELRELEASE="\$(KERNELRELEASE)" >>\$(obj)/flags
158 @echo LINUX_CPPFLAGS="\$(KBUILD_CPPFLAGS)\$(if \$(filter -I,\$(KBUILD_CPPFLAGS)),, \$(LINUXINCLUDE))" | sed 's#-I\(include\|arch\)#-I"\$(LINUXDIR)/\1"#g'>>\$(obj)/flags
159 @echo LINUX_AFLAGS="\$(KBUILD_AFLAGS)" | sed 's#-I\(include\|arch\)#-I"\$(OMK_LINUX_SRC)/\1"#g'>>\$(obj)/flags
160 @echo LINUX_CFLAGS="\$(KBUILD_CFLAGS)" | sed 's#-I\(include\|arch\)#-I"\$(OMK_LINUX_SRC)/\1"#g'>>\$(obj)/flags
162 @echo LINUX_CPPFLAGS="\$(CPPFLAGS)" | sed 's#Iinclude#I"\$(LINUXDIR)/include"#g'>>\$(obj)/flags
163 @echo LINUX_AFLAGS="\$(AFLAGS)" | sed 's#Iinclude#I"\$(OMK_LINUX_SRC)/include"#g'>>\$(obj)/flags
164 @echo LINUX_CFLAGS="\$(CFLAGS)" | sed 's#Iinclude#I"\$(OMK_LINUX_SRC)/include"#g'>>\$(obj)/flags
166 ifdef KBUILD_CFLAGS_MODULE
167 @echo LINUX_CFLAGS_MODULE="\$(KBUILD_CFLAGS_MODULE)" >>\$(obj)/flags
168 @echo LINUX_AFLAGS_MODULE="\$(KBUILD_AFLAGS_MODULE)" >>\$(obj)/flags
169 @echo LINUX_LDFLAGS_MODULE="\$(KBUILD_LDFLAGS_MODULE)" >>\$(obj)/flags
171 @echo LINUX_CFLAGS_MODULE="\$(CFLAGS_MODULE)" >>\$(obj)/flags
172 @echo LINUX_AFLAGS_MODULE="\$(CFLAGS_MODULE)" >>\$(obj)/flags
174 @echo LINUX_CC="\$(CC)" >>\$(obj)/flags
175 @echo LINUX_LD="\$(LD) \$(LDFLAGS) \$(LDFLAGS_MODULE)" | sed 's#\(\<arch/[^ ]*\.o\>\)#"\$(LINUXDIR)/\1"#g' >>\$(obj)/flags
176 @echo LINUX_AS="\$(AS)" >>\$(obj)/flags
177 @echo LINUX_AR="\$(AR)" >>\$(obj)/flags
178 @echo LINUX_MODULE_EXT=".ko" >>\$(obj)/flags
179 @echo LINUX_QUOTE_MODNAME=\$(if \$(findstring KBUILD_STR,\$(basename_flags)),y,) >>\$(obj)/flags
180 @echo LINUX_CONFIG_MODVERSIONS=\$(CONFIG_MODVERSIONS) >>\$(obj)/flags
181 @echo LINUX_CONFIG_MODULE_SRCVERSION_ALL=\$(CONFIG_MODULE_SRCVERSION_ALL) >>\$(obj)/flags
182 @echo LINUX_CONFIG_DEBUG_SECTION_MISMATCH=\$(CONFIG_DEBUG_SECTION_MISMATCH) >>\$(obj)/flags
183 @echo LINUX_CONFIG_MARKERS=\$(CONFIG_MARKERS) >>\$(obj)/flags
184 @echo LINUX_KBUILD_EXTMOD=\$(KBUILD_EXTMOD) >>\$(obj)/flags
185 @echo LINUX_KBUILD_EXTRA_SYMBOLS=\$(KBUILD_EXTRA_SYMBOLS) >>\$(obj)/flags
186 @echo LINUX_KBUILD_MODPOST_WARN=\$(KBUILD_MODPOST_WARN) >>\$(obj)/flags
187 @echo LINUX_CROSS_BUILD=\$(cross_build) >>\$(obj)/flags
190 # modkern_cflags := $(CFLAGS_KERNEL) / $(CFLAGS_MODULE)
192 # _c_flags = $(KBUILD_CFLAGS) $(ccflags-y) $(CFLAGS_$(basetarget).o)
193 # _a_flags = $(KBUILD_AFLAGS) $(asflags-y) $(AFLAGS_$(basetarget).o)
194 # _cpp_flags = $(KBUILD_CPPFLAGS) $(cppflags-y) $(CPPFLAGS_$(@F))
196 # export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS LDFLAGS
197 # export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE
198 # export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE
201 #echo ${MAKE} -C ${LINUX_DIR} SUBDIRS=${KERN_TEST_DIR} LINUXDIR=${LINUX_DIR} MODVERDIR=${KERN_TEST_DIR} modules
202 ${MAKE} -C ${LINUX_DIR} M=${KERN_TEST_DIR} LINUXDIR=${LINUX_DIR} MODVERDIR=${KERN_TEST_DIR}/modver modules
203 #if [ $? == 0 ] ; then
204 cp -v flags ${KERN_MODULES_DIR}/kernel.mk
205 if [ ! $? == 0 ] ; then
213 rm -rf ${KERN_TEST_DIR}
216 #=====================================================================
219 echo "Unsupported Linux version $LINUX_VERSION_MAJOR.$LINUX_VERSION_MINOR"