From 84e966569459f2c19ba69de9d2809ed39c930768 Mon Sep 17 00:00:00 2001 From: Michal Sojka Date: Wed, 10 Sep 2008 04:49:00 +0000 Subject: [PATCH] Added kernelcfg2mk to repository I took the version from ocera's can repository. darcs-hash:20080910044907-f2ef6-605d3dee33f964f4152d2b60e4bbb8a893c568da.gz --- rules/linux/kernelcfg2mk | 184 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 184 insertions(+) create mode 100755 rules/linux/kernelcfg2mk diff --git a/rules/linux/kernelcfg2mk b/rules/linux/kernelcfg2mk new file mode 100755 index 0000000..a90b7c3 --- /dev/null +++ b/rules/linux/kernelcfg2mk @@ -0,0 +1,184 @@ +#!/bin/bash + +if [ $# -lt 1 ] ; then + echo "kernelcfg2mk: requires linux kernel directory as the first argument" + exit 2 +fi + +LINUX_DIR="$1" + +if [ $# -gt 1 ] ; then + KERN_MODULES_DIR="$2" +fi + +if [ ! -e $LINUX_DIR/.config ] ; then + echo "kernelcfg2mk: the provided locations doesnot point to configured kernel sources" + echo " check directory $LINUX_DIR" + exit 2 +fi + +if [ ! -e $LINUX_DIR/.config ] ; then + echo "kernelcfg2mk: the provided locations doesnot point to configured kernel sources" + echo " check directory $LINUX_DIR" + exit 2 +fi + +if [ -z "$KERN_BUILD_DIR" ] ; then + KERN_BUILD_DIR=`pwd` +fi + +if [ -z "$KERN_MODULES_DIR" ] ; then + KERN_MODULES_DIR=`pwd` +fi + + +if [ -z "$MAKE" ] ; then + MAKE="make" +fi + + +KERN_TEST_DIR="$KERN_BUILD_DIR/kern-test-mk" + +mkdir -p $KERN_TEST_DIR + +#echo MAKERULES_DIR $MAKERULES_DIR +#echo LINUX_DIR $LINUX_DIR +#echo KERN_BUILD_DIR $KERN_BUILD_DIR +#echo KERN_MODULES_DIR $KERN_MODULES_DIR + +RETVAL="0" + +LINUX_VERSION=$(grep UTS_RELEASE ${LINUX_DIR}/include/linux/version.h | \ + sed 's/[^"]*"\(.*\)\{1\}"/\1/') + +LINUX_VERSION_MAJOR=$(echo ${LINUX_VERSION} | cut -d. -f1) +LINUX_VERSION_MINOR=$(echo ${LINUX_VERSION} | cut -d. -f2) + +#echo $LINUX_VERSION +#echo $LINUX_VERSION_MAJOR +#echo $LINUX_VERSION_MINOR + + +case $LINUX_VERSION_MAJOR.$LINUX_VERSION_MINOR in + + +#===================================================================== +# test for 2.4.x kernels + 2.[01234]) + + rm -f ${KERN_BUILD_DIR}/kernel.mk + rm -rf ${KERN_TEST_DIR} + mkdir ${KERN_TEST_DIR} + if [ $? -ne 0 ] ; then + echo "Cannot create Linux kernel test build directory \"${KERN_TEST_DIR}\"" + exit 3 + fi + cd ${KERN_TEST_DIR} + + cat >${KERN_TEST_DIR}/Makefile <>flags + @echo LINUX_LDFLAGS="" >>flags + @echo LINUX_ARFLAGS="\$(ARFLAGS)" >>flags + @echo LINUX_CROSS_COMPILE="\$(CROSS_COMPILE)" >>flags + @echo LINUX_KERNELRELEASE="\$(KERNELRELEASE)" >>flags + @echo LINUX_AFLAGS="\$(AFLAGS)" | sed 's#Iinclude#I"\$(LINUXDIR)/include"#g'>>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 + @echo LINUX_AR="\$(AR)" >>flags + @echo LINUX_MODULE_EXT=".o" >>flags + +EOF + + #echo ${MAKE} -C ${LINUX_DIR} SUBDIRS=${KERN_TEST_DIR} modules + ${MAKE} -C ${LINUX_DIR} SUBDIRS=${KERN_TEST_DIR} modules + if [ $? == 0 ] ; then + cp -v flags ${KERN_MODULES_DIR}/kernel.mk + if [ ! $? == 0 ] ; then + RETVAL="2" + fi + else + RETVAL="1" + fi + + cd ${KERN_BUILD_DIR} + rm -rf ${KERN_TEST_DIR} + ;; + +#===================================================================== +# test for 2.6.x kernels + + 2.6) + + rm -f ${KERN_BUILD_DIR}/kernel.mk + rm -rf ${KERN_TEST_DIR} + mkdir ${KERN_TEST_DIR} + if [ $? -ne 0 ] ; then + echo "Cannot create Linux kernel test build directory \"${KERN_TEST_DIR}\"" + exit 3 + fi + cd ${KERN_TEST_DIR} + + cat >${KERN_TEST_DIR}/Makefile <>\$(obj)/flags + @echo LINUX_ARCH="\$(ARCH)" >>\$(obj)/flags + @echo LINUX_LDFLAGS="" >>\$(obj)/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_AFLAGS="\$(AFLAGS)" | sed 's#Iinclude#I"\$(OMK_LINUX_SRC)/include"#g'>>\$(obj)/flags + @echo LINUX_CFLAGS="\$(CFLAGS)" | sed 's#Iinclude#I"\$(OMK_LINUX_SRC)/include"#g'>>\$(obj)/flags + @echo LINUX_CFLAGS_MODULE="\$(CFLAGS_MODULE)" >>\$(obj)/flags + @echo LINUX_CC="\$(CC)" >>\$(obj)/flags + @echo LINUX_LD="\$(LD) \$(LDFLAGS) \$(LDFLAGS_MODULE)" >>\$(obj)/flags + @echo LINUX_AS="\$(AS)" >>\$(obj)/flags + @echo LINUX_AR="\$(AR)" >>\$(obj)/flags + @echo LINUX_MODULE_EXT=".ko" >>\$(obj)/flags + @echo LINUX_QUOTE_MODNAME=\$(if \$(findstring KBUILD_STR,\$(basename_flags)),y,) >>\$(obj)/flags +EOF + + # V=1 + #echo ${MAKE} -C ${LINUX_DIR} SUBDIRS=${KERN_TEST_DIR} LINUXDIR=${LINUX_DIR} MODVERDIR=${KERN_TEST_DIR} modules + ${MAKE} -C ${LINUX_DIR} M=${KERN_TEST_DIR} LINUXDIR=${LINUX_DIR} MODVERDIR=${KERN_TEST_DIR}/modver modules + #if [ $? == 0 ] ; then + cp -v flags ${KERN_MODULES_DIR}/kernel.mk + if [ ! $? == 0 ] ; then + RETVAL="2" + fi + #else + # RETVAL="1" + #fi + + cd ${KERN_BUILD_DIR} + rm -rf ${KERN_TEST_DIR} + ;; + +#===================================================================== + + *) + echo "Unsupported Linux version $LINUX_VERSION_MAJOR.$LINUX_VERSION_MINOR" + ;; +esac + + +exit ${RETVAL} -- 2.39.2