diff options
| -rwxr-xr-x | extra/scripts/fix_includes.sh | 268 | 
1 files changed, 134 insertions, 134 deletions
| diff --git a/extra/scripts/fix_includes.sh b/extra/scripts/fix_includes.sh index 30f026f88..62987d76d 100755 --- a/extra/scripts/fix_includes.sh +++ b/extra/scripts/fix_includes.sh @@ -5,169 +5,169 @@  # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.  # -usage () { -    echo "" -    echo "usage: "`basename $0`" -k KERNEL_SOURCE_DIRECTORY -t TARGET_ARCH" -    echo "" -    echo "This utility scans the KERNEL_SOURCE_DIRECTORY directory and" -    echo "checks that it contains well formed kernel headers suitable" -    echo "for inclusion as the include/linux/ directory provided by" -    echo "uClibc." -    echo "" -    echo "If the specified kernel headers are present and already" -    echo "configured for the architecture specified by TARGET_ARCH," -    echo "they will be used as-is." -    echo "" -    echo "If the specified kernel headers are missing entirely, this" -    echo "script will return an error." -    echo "" -    echo "If the specified kernel headers are present, but are either" -    echo "not yet configured or are configured for an architecture" -    echo "different than that specified by TARGET_ARCH, this script" -    echo "will attempt to 'fix' the kernel headers and make them" -    echo "suitable for use by uClibc.  This fixing process may fail." -    echo "It is therefore best to always provide kernel headers that" -    echo "are already configured for the selected architecture." -    echo "" -    echo "Most Linux distributions provide 'kernel-headers' packages" -    echo "that are suitable for use by uClibc." -    echo "" -    echo "" -    exit 1; +usage() { +	echo "" +	echo "usage: "`basename $0`" -k KERNEL_SOURCE_DIRECTORY -t TARGET_ARCH" +	echo "" +	echo "This utility scans the KERNEL_SOURCE_DIRECTORY directory and" +	echo "checks that it contains well formed kernel headers suitable" +	echo "for inclusion as the include/linux/ directory provided by" +	echo "uClibc." +	echo "" +	echo "If the specified kernel headers are present and already" +	echo "configured for the architecture specified by TARGET_ARCH," +	echo "they will be used as-is." +	echo "" +	echo "If the specified kernel headers are missing entirely, this" +	echo "script will return an error." +	echo "" +	echo "If the specified kernel headers are present, but are either" +	echo "not yet configured or are configured for an architecture" +	echo "different than that specified by TARGET_ARCH, this script" +	echo "will attempt to 'fix' the kernel headers and make them" +	echo "suitable for use by uClibc.  This fixing process may fail." +	echo "It is therefore best to always provide kernel headers that" +	echo "are already configured for the selected architecture." +	echo "" +	echo "Most Linux distributions provide 'kernel-headers' packages" +	echo "that are suitable for use by uClibc." +	echo "" +	echo "" +	exit 1  } -HAS_MMU="y"; +HAS_MMU="y"  while [ -n "$1" ]; do -    case $1 in -	-k ) shift; if [ -n "$1" ]; then KERNEL_SOURCE=$1; shift; else usage; fi; ;; -	-t ) shift; if [ -n "$1" ]; then TARGET_ARCH=$1; shift; else usage; fi; ;; -	-n ) shift; HAS_MMU="n"; ;; -	-* ) usage; ;; -	* ) usage; ;; -    esac; -done; +	case $1 in +		-k ) shift; if [ -n "$1" ]; then KERNEL_SOURCE=$1; shift; else usage; fi; ;; +		-t ) shift; if [ -n "$1" ]; then TARGET_ARCH=$1; shift; else usage; fi; ;; +		-n ) shift; HAS_MMU="n"; ;; +		-* ) usage; ;; +		* ) usage; ;; +	esac +done  if [ ! -f "$KERNEL_SOURCE/Makefile" -a ! -f "$KERNEL_SOURCE/include/linux/version.h" ]; then -    echo ""; -    echo ""; -    echo "The file $KERNEL_SOURCE/Makefile or $KERNEL_SOURCE/include/linux/version.h is missing!"; -    echo "Perhaps your kernel source is broken?" -    echo ""; -    echo ""; -    exit 1; -fi; +	echo "" +	echo "" +	echo "The file $KERNEL_SOURCE/Makefile or $KERNEL_SOURCE/include/linux/version.h is missing!" +	echo "Perhaps your kernel source is broken?" +	echo "" +	echo "" +	exit 1 +fi  if [ ! -d "$KERNEL_SOURCE" ]; then -    echo ""; -    echo ""; -    echo "$KERNEL_SOURCE is not a directory"; -    echo ""; -    echo ""; -    exit 1; -fi; +	echo "" +	echo "" +	echo "$KERNEL_SOURCE is not a directory" +	echo "" +	echo "" +	exit 1 +fi  if [ -f "$KERNEL_SOURCE/Makefile" ] ; then -# set current VERSION, PATCHLEVEL, SUBLEVEL, EXTRAVERSION -eval `sed -n -e 's/^\([A-Z]*\) = \([0-9]*\)$/\1=\2/p' -e 's/^\([A-Z]*\) = \(-[-a-z0-9]*\)$/\1=\2/p' $KERNEL_SOURCE/Makefile` -else -ver=`grep UTS_RELEASE $KERNEL_SOURCE/include/linux/version.h | cut -d '"' -f 2` -VERSION=`echo "$ver" | cut -d '.' -f 1` -PATCHLEVEL=`echo "$ver" | cut -d '.' -f 2` -if echo "$ver" | grep -q '-' ; then -SUBLEVEL=`echo "$ver" | sed "s/${VERSION}.${PATCHLEVEL}.//" | cut -d '-' -f 1` -EXTRAVERSION=`echo "$ver" | sed "s/${VERSION}.${PATCHLEVEL}.${SUBLEVEL}-//"` +	# set current VERSION, PATCHLEVEL, SUBLEVEL, EXTRAVERSION +	eval `sed -n -e 's/^\([A-Z]*\) = \([0-9]*\)$/\1=\2/p' -e 's/^\([A-Z]*\) = \(-[-a-z0-9]*\)$/\1=\2/p' $KERNEL_SOURCE/Makefile`  else -SUBLEVEL=`echo "$ver" | cut -d '.' -f 3` -#EXTRAVERSION= +	ver=`grep UTS_RELEASE $KERNEL_SOURCE/include/linux/version.h | cut -d '"' -f 2` +	VERSION=`echo "$ver" | cut -d '.' -f 1` +	PATCHLEVEL=`echo "$ver" | cut -d '.' -f 2` +	if echo "$ver" | grep -q '-' ; then +		SUBLEVEL=`echo "$ver" | sed "s/${VERSION}.${PATCHLEVEL}.//" | cut -d '-' -f 1` +		EXTRAVERSION=`echo "$ver" | sed "s/${VERSION}.${PATCHLEVEL}.${SUBLEVEL}-//"` +	else +		SUBLEVEL=`echo "$ver" | cut -d '.' -f 3` +		#EXTRAVERSION= +	fi  fi -fi -if [ -z "$VERSION" -o -z "$PATCHLEVEL" -o -z "$SUBLEVEL" ] -then -    echo "Unable to determine version for kernel headers" -    echo -e "\tprovided in directory $KERNEL_SOURCE" -    exit 1 +if [ -z "$VERSION" -o -z "$PATCHLEVEL" -o -z "$SUBLEVEL" ]; then +	echo "Unable to determine version for kernel headers" +	echo -e "\tprovided in directory $KERNEL_SOURCE" +	exit 1  fi  if [ "$MAKE_IS_SILENT" != "y" ]; then -echo "" -echo "Current kernel version is $VERSION.$PATCHLEVEL.$SUBLEVEL${EXTRAVERSION}" -echo "" -echo "Using kernel headers from $VERSION.$PATCHLEVEL.$SUBLEVEL${EXTRAVERSION} for architecture '$TARGET_ARCH'" -echo -e "\tprovided in directory $KERNEL_SOURCE" -echo "" +	echo "" +	echo "Current kernel version is $VERSION.$PATCHLEVEL.$SUBLEVEL${EXTRAVERSION}" +	echo "" +	echo "Using kernel headers from $VERSION.$PATCHLEVEL.$SUBLEVEL${EXTRAVERSION} for architecture '$TARGET_ARCH'" +	echo -e "\tprovided in directory $KERNEL_SOURCE" +	echo ""  fi  # Create a symlink to include/asm  rm -f include/asm*  if [ ! -d "$KERNEL_SOURCE/include/asm" ]; then -    echo ""; -    echo ""; -    echo "The symlink $KERNEL_SOURCE/include/asm is missing\!"; -    echo "Perhaps you forgot to configure your kernel source?"; -    echo "You really should configure your kernel source tree so I"; -    echo "do not have to try and guess about this sort of thing."; -    echo "" -    echo "Attempting to guess a usable value...."; -    echo "" -    echo ""; -    sleep 1; +	echo "" +	echo "" +	echo "The symlink $KERNEL_SOURCE/include/asm is missing\!" +	echo "Perhaps you forgot to configure your kernel source?" +	echo "You really should configure your kernel source tree so I" +	echo "do not have to try and guess about this sort of thing." +	echo "" +	echo "Attempting to guess a usable value...." +	echo "" +	echo "" +	sleep 1 -    if [ "$TARGET_ARCH" = "powerpc" ];then -	set -x; -	ln -fs $KERNEL_SOURCE/include/asm-ppc include/asm; -	set +x; -    elif [ "$TARGET_ARCH" = "mips" ];then -	set -x; -	ln -fs $KERNEL_SOURCE/include/asm-mips include/asm; -	set +x; -    elif [ "$TARGET_ARCH" = "arm" ];then -	set -x; -	ln -fs $KERNEL_SOURCE/include/asm-arm include/asm; -	set +x; -	if [ ! -L $KERNEL_SOURCE/include/asm-arm/proc ] ; then -	    if [ ! -L proc ] ; then -		(cd include/asm; -		ln -fs proc-armv proc; -		ln -fs arch-ebsa285 arch); -	    fi +	if [ "$TARGET_ARCH" = "powerpc" ]; then +		set -x +		ln -fs $KERNEL_SOURCE/include/asm-ppc include/asm +		set +x +	elif [ "$TARGET_ARCH" = "mips" ]; then +		set -x +		ln -fs $KERNEL_SOURCE/include/asm-mips include/asm +		set +x +	elif [ "$TARGET_ARCH" = "arm" ]; then +		set -x +		ln -fs $KERNEL_SOURCE/include/asm-arm include/asm +		set +x +	if [ ! -L $KERNEL_SOURCE/include/asm-arm/proc ]; then +		if [ ! -L proc ]; then +			( +				cd include/asm +				ln -fs proc-armv proc +				ln -fs arch-ebsa285 arch +			) +		fi +	fi +	elif [ "$TARGET_ARCH" = "cris" ]; then +		set -x +		ln -fs $KERNEL_SOURCE/include/asm-cris include/asm +		set +x +	elif [ "$HAS_MMU" != "y" ]; then +		if [ -d $KERNEL_SOURCE/include/asm-${TARGET_ARCH}nommu ]; then +			set -x +			ln -fs $KERNEL_SOURCE/include/asm-${TARGET_ARCH}nommu include/asm +			set +x +		else +			set -x +			ln -fs $KERNEL_SOURCE/include/asm-$TARGET_ARCH include/asm +			set +x +		fi +	else +		set -x +		ln -fs $KERNEL_SOURCE/include/asm-$TARGET_ARCH include/asm +		set +x  	fi; -    elif [ "$TARGET_ARCH" = "cris" ]; then -	set -x; -	ln -fs $KERNEL_SOURCE/include/asm-cris include/asm; -	set +x; -    elif [ "$HAS_MMU" != "y" ]; then -	    if [ -d $KERNEL_SOURCE/include/asm-${TARGET_ARCH}nommu ] ; then -		set -x; -		ln -fs $KERNEL_SOURCE/include/asm-${TARGET_ARCH}nommu include/asm; -		set +x; -	    else -		set -x; -		ln -fs $KERNEL_SOURCE/include/asm-$TARGET_ARCH include/asm; -		set +x; -	    fi; -    else -	set -x; -	ln -fs $KERNEL_SOURCE/include/asm-$TARGET_ARCH include/asm; -	set +x; -    fi;  else -# No guessing required..... -for x in $KERNEL_SOURCE/include/asm* ; do -	ln -fs ${x} include/ -done -fi; +	# No guessing required..... +	for x in $KERNEL_SOURCE/include/asm* ; do +		ln -fs ${x} include/ +	done +fi  # Annoyingly, 2.6.x kernel headers also need an include/asm-generic/ directory -if [ $VERSION -eq 2 ] && [ $PATCHLEVEL -ge 6 ] ; then -	[ ! -e include/asm-generic ] && \ -		[ -e $KERNEL_SOURCE/include/asm-generic ] && \ -	ln -fs $KERNEL_SOURCE/include/asm-generic include/asm-generic +if [ $VERSION -eq 2 ] && [ $PATCHLEVEL -ge 6 ]; then +	if [ ! -e include/asm-generic ] && [ -e $KERNEL_SOURCE/include/asm-generic ]; then +		ln -fs $KERNEL_SOURCE/include/asm-generic include/asm-generic +	fi  fi  # Create the include/linux symlink.  rm -f include/linux  ln -fs $KERNEL_SOURCE/include/linux include/linux - | 
