#!/bin/bash
+if [ "$OMK_VERBOSE" == "1" ]; then
+ CMD_ECHO=echo
+else
+ CMD_ECHO=true
+fi
+
if [ $# -lt 1 ] ; then
echo "kernelcfg2mk: requires linux kernel directory as the first argument"
exit 2
fi
if [ ! -e $LINUX_DIR/.config ] ; then
- echo "kernelcfg2mk: the provided locations doesnot point to configured kernel sources"
+ echo "kernelcfg2mk: the provided location does not 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 "kernelcfg2mk: the provided location does not point to configured kernel sources"
echo " check directory $LINUX_DIR"
exit 2
fi
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
+$CMD_ECHO MAKERULES_DIR='$MAKERULES_DIR'
+$CMD_ECHO LINUX_DIR='$LINUX_DIR'
+$CMD_ECHO KERN_BUILD_DIR='$KERN_BUILD_DIR'
+$CMD_ECHO KERN_MODULES_DIR='$KERN_MODULES_DIR'
+$CMD_ECHO KERN_TEST_DIR='$KERN_TEST_DIR'
RETVAL="0"
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
+$CMD_ECHO Detected LINUX_VERSION=$LINUX_VERSION
+$CMD_ECHO Detected LINUX_VERSION_MAJOR=$LINUX_VERSION_MAJOR
+$CMD_ECHO Detected LINUX_VERSION_MINOR=$LINUX_VERSION_MINOR
case $LINUX_VERSION_MAJOR.$LINUX_VERSION_MINOR in
fi
cd ${KERN_TEST_DIR}
+ $CMD_ECHO Writing `pwd`/Makefile
cat >${KERN_TEST_DIR}/Makefile <<EOF
+include $LINUX_DIR/include/config/auto.conf
+
+MODPOST_OPTS = \\
+ \$(if \$(CONFIG_MODVERSIONS),-m) \\
+ \$(if \$(CONFIG_MODULE_SRCVERSION_ALL),-a,) \\
+ \$(if \$(KBUILD_EXTMOD),-i,-o) \$(kernelsymfile) \\
+ \$(if \$(KBUILD_EXTMOD),-I \$(modulesymfile)) \\
+ \$(if \$(KBUILD_EXTRA_SYMBOLS), \$(patsubst %, -e %,\$(EXTRA_SYMBOLS))) \\
+ \$(if \$(KBUILD_EXTMOD),-o \$(modulesymfile)) \\
+ \$(if \$(CONFIG_DEBUG_SECTION_MISMATCH),,-S) \\
+ \$(if \$(CONFIG_MARKERS),-K \$(kernelmarkersfile)) \\
+ \$(if \$(CONFIG_MARKERS),-M \$(markersfile)) \\
+ \$(if \$(KBUILD_EXTMOD)\$(KBUILD_MODPOST_WARN),-w) \\
+ \$(if \$(cross_build),-c)
.PHONY: modules
modules:
+ if [ "$OMK_VERBOSE" = "1" ]; then env; fi
@echo LINUX_ARCH="\$(ARCH)" >>flags
@echo LINUX_LDFLAGS="" >>flags
@echo LINUX_ARFLAGS="\$(ARFLAGS)" >>flags
@echo LINUX_CROSS_COMPILE="\$(CROSS_COMPILE)" >>flags
@echo LINUX_KERNELRELEASE="\$(KERNELRELEASE)" >>flags
+ @$CMD_ECHO LINUX_AFLAGS="\$(AFLAGS)"
@echo LINUX_AFLAGS="\$(AFLAGS)" | sed 's#Iinclude#I"\$(LINUXDIR)/include"#g'>>flags
+ @$CMD_ECHO LINUX_CFLAGS="\$(CFLAGS)"
@echo LINUX_CFLAGS="\$(CFLAGS)" | sed 's#Iinclude#I"\$(LINUXDIR)/include"#g'>>flags
@echo LINUX_MODFLAGS="\$(MODFLAGS)"
@echo LINUX_CC="\$(CC)" >>flags
@echo LINUX_AS="\$(AS)" >>flags
@echo LINUX_AR="\$(AR)" >>flags
@echo LINUX_MODULE_EXT=".o" >>flags
+ @echo MODPOST_OPTS="\$(MODPOST_OPTS)" >>flags
EOF
- #echo ${MAKE} -C ${LINUX_DIR} SUBDIRS=${KERN_TEST_DIR} modules
+ $CMD_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
fi
cd ${KERN_BUILD_DIR}
- rm -rf ${KERN_TEST_DIR}
+ if [ "$OMK_VERBOSE" != "1" ]; then rm -rf ${KERN_TEST_DIR}; fi
;;
#=====================================================================
fi
cd ${KERN_TEST_DIR}
+ $CMD_ECHO Writing `pwd`/Makefile
cat >${KERN_TEST_DIR}/Makefile <<EOF
+include $LINUX_DIR/include/config/auto.conf
+
+MODPOST_OPTS = \\
+ \$(if \$(CONFIG_MODVERSIONS),-m) \\
+ \$(if \$(CONFIG_MODULE_SRCVERSION_ALL),-a,) \\
+ \$(if \$(KBUILD_EXTMOD),-i,-o) \$(kernelsymfile) \\
+ \$(if \$(KBUILD_EXTMOD),-I \$(modulesymfile)) \\
+ \$(if \$(KBUILD_EXTRA_SYMBOLS), \$(patsubst %, -e %,\$(EXTRA_SYMBOLS))) \\
+ \$(if \$(KBUILD_EXTMOD),-o \$(modulesymfile)) \\
+ \$(if \$(CONFIG_DEBUG_SECTION_MISMATCH),,-S) \\
+ \$(if \$(CONFIG_MARKERS),-K \$(kernelmarkersfile)) \\
+ \$(if \$(CONFIG_MARKERS),-M \$(markersfile)) \\
+ \$(if \$(KBUILD_EXTMOD)\$(KBUILD_MODPOST_WARN),-w) \\
+ \$(if \$(cross_build),-c)
+
obj-m += fake.o
\$(obj)/fake.c: flags
touch \$(obj)/fake.c
ifeq (\$(KBUILD_SRC),)
-OMK_LINUX_SRC = \$(LINUXDIR)
+ OMK_LINUX_SRC = \$(LINUXDIR)
else
-OMK_LINUX_SRC = \$(KBUILD_SRC)
+ OMK_LINUX_SRC = \$(KBUILD_SRC)
endif
#\$(warning Test \$OMK_LINUX_SRC)
.PHONY: flags
flags:
+ if [ "$OMK_VERBOSE" = "1" ]; then echo "Environment:" && env; fi
@echo LINUX_SRC="\$(OMK_LINUX_SRC)" >>\$(obj)/flags
@echo LINUX_ARCH="\$(ARCH)" >>\$(obj)/flags
@echo LINUX_BUILDHOST="\$(KBUILD_BUILDHOST)" >>\$(obj)/flags
@echo LINUX_ARFLAGS="\$(ARFLAGS)" >>\$(obj)/flags
@echo LINUX_CROSS_COMPILE="\$(CROSS_COMPILE)" >>\$(obj)/flags
@echo LINUX_KERNELRELEASE="\$(KERNELRELEASE)" >>\$(obj)/flags
+ @$CMD_ECHO CPPFLAGS="\$(CPPFLAGS)"
+ @$CMD_ECHO KBUILD_CPPFLAGS="\$(KBUILD_CPPFLAGS)"
+ @$CMD_ECHO AFLAGS="\$(AFLAGS)"
+ @$CMD_ECHO CFLAGS="\$(CFLAGS)"
+ @$CMD_ECHO KBUILD_CFLAGS="\$(KBUILD_CFLAGS)"
+ @$CMD_ECHO LINUXINCLUDE="\$(LINUXINCLUDE)"
+ @$CMD_ECHO CFLAGS_MODULE="\$(CFLAGS_MODULE)"
ifdef KBUILD_CFLAGS
- @echo LINUX_CPPFLAGS="\$(KBUILD_CPPFLAGS)\$(if \$(filter -I,\$(KBUILD_CPPFLAGS)),, \$(LINUXINCLUDE))" | sed 's#-I\(include\|arch\)#-I"\$(LINUXDIR)/\1"#g'>>\$(obj)/flags
+ @echo LINUX_CPPFLAGS="\$(KBUILD_CPPFLAGS)" | sed 's#-\(I\|include\) \?\(include\|arch\)#-\1 "\$(OMK_LINUX_SRC)/\2"#g'>>\$(obj)/flags
+ @echo LINUX_CPPFLAGS+="\$(LINUXINCLUDE)" | sed 's#-\(I\|include\) \?\(include\|arch\)#-\1 "\$(OMK_LINUX_SRC)/\2"#g'>>\$(obj)/flags
@echo LINUX_AFLAGS="\$(KBUILD_AFLAGS)" | sed 's#-I\(include\|arch\)#-I"\$(OMK_LINUX_SRC)/\1"#g'>>\$(obj)/flags
@echo LINUX_CFLAGS="\$(KBUILD_CFLAGS)" | sed 's#-I\(include\|arch\)#-I"\$(OMK_LINUX_SRC)/\1"#g'>>\$(obj)/flags
else
- @echo LINUX_CPPFLAGS="\$(CPPFLAGS)" | sed 's#Iinclude#I"\$(LINUXDIR)/include"#g'>>\$(obj)/flags
+ @echo LINUX_CPPFLAGS="\$(CPPFLAGS)" | sed 's#Iinclude#I"\$(OMK_LINUX_SRC)/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
endif
@echo LINUX_CFLAGS_MODULE="\$(CFLAGS_MODULE)" >>\$(obj)/flags
@echo LINUX_CC="\$(CC)" >>\$(obj)/flags
- @echo LINUX_LD="\$(LD) \$(LDFLAGS) \$(LDFLAGS_MODULE)" | sed 's#\(\<arch/[^ ]*\.o\>\)#"\$(LINUXDIR)/\1"#g' >>\$(obj)/flags
+ @echo LINUX_LD="\$(LD) \$(LDFLAGS) \$(LDFLAGS_MODULE)" | sed 's#\(\<arch/[^ ]*\.o\>\)#"\$(OMK_LINUX_SRC)/\1"#g' >>\$(obj)/flags
@echo LINUX_AS="\$(AS)" >>\$(obj)/flags
@echo LINUX_AR="\$(AR)" >>\$(obj)/flags
@echo LINUX_MODULE_EXT=".ko" >>\$(obj)/flags
@echo LINUX_KBUILD_EXTRA_SYMBOLS=\$(KBUILD_EXTRA_SYMBOLS) >>\$(obj)/flags
@echo LINUX_KBUILD_MODPOST_WARN=\$(KBUILD_MODPOST_WARN) >>\$(obj)/flags
@echo LINUX_CROSS_BUILD=\$(cross_build) >>\$(obj)/flags
-EOF
-
- # modkern_cflags := $(CFLAGS_KERNEL) / $(CFLAGS_MODULE)
-
- # _c_flags = $(KBUILD_CFLAGS) $(ccflags-y) $(CFLAGS_$(basetarget).o)
- # _a_flags = $(KBUILD_AFLAGS) $(asflags-y) $(AFLAGS_$(basetarget).o)
- # _cpp_flags = $(KBUILD_CPPFLAGS) $(cppflags-y) $(CPPFLAGS_$(@F))
+ @echo MODPOST_OPTS="\$(MODPOST_OPTS)" >> \$(obj)/flags
- # export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS LDFLAGS
- # export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE
- # export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE
+EOF
- # -p 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
+# ${MAKE} -C ${LINUX_DIR} SUBDIRS=${KERN_TEST_DIR} LINUXDIR=${LINUX_DIR} MODVERDIR=${KERN_TEST_DIR} KBUILD_VERBOSE=1 modules
+ ${MAKE} -C ${LINUX_DIR} M=${KERN_TEST_DIR} LINUXDIR=${LINUX_DIR} MODVERDIR=${KERN_TEST_DIR}/modver KBUILD_VERBOSE=$OMK_VERBOSE modules
#if [ $? == 0 ] ; then
cp -v flags ${KERN_MODULES_DIR}/kernel.mk
if [ ! $? == 0 ] ; then
#fi
cd ${KERN_BUILD_DIR}
- rm -rf ${KERN_TEST_DIR}
+ if [ "$OMK_VERBOSE" != "1" ]; then rm -rf ${KERN_TEST_DIR}; fi
;;
#=====================================================================