Robert P. J. DAY says:
apparently, the patchset for gcc 4.2.1 applies properly to the
source for gcc 4.2.2 and gcc 4.2.3. so, if you want, you can simply
add support for those last two just by augmenting menuconfig and
adding a couple symlinks for those two directories. seems like a
cheap way to add a couple new versions.
1 --- uClibc-0.9.28/extra/scripts/fix_includes.sh.orig 2006-12-13 05:44:21.000000000 -0700
2 +++ uClibc-0.9.28/extra/scripts/fix_includes.sh 2006-12-13 05:44:35.000000000 -0700
5 -# Copyright (C) 2003 Erik Andersen <andersen@uclibc.org>
7 -# This program is free software; you can redistribute it and/or
8 -# modify it under the terms of the GNU Library General Public
9 -# License as published by the Free Software Foundation; either
10 -# version 2 of the License, or (at your option) any later
13 -# This program is distributed in the hope that it will be useful,
14 -# but WITHOUT ANY WARRANTY; without even the implied warranty of
15 -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 -# GNU Library General Public License for more details.
18 -# You should have received a copy of the GNU Library General
19 -# Public License along with this program; if not, write to the
20 -# Free Software Foundation, Inc., 59 Temple Place, Suite 330,
21 -# Boston, MA 02111-1307 USA
25 - echo "usage: "`basename $0`" -k KERNEL_SOURCE_DIRECTORY -t TARGET_ARCH"
27 - echo "This utility scans the KERNEL_SOURCE_DIRECTORY directory and"
28 - echo "checks that it contains well formed kernel headers suitable"
29 - echo "for inclusion as the include/linux/ directory provided by"
32 - echo "If the specified kernel headers are present and already"
33 - echo "configured for the architecture specified by TARGET_ARCH,"
34 - echo "they will be used as-is."
36 - echo "If the specified kernel headers are missing entirely, this"
37 - echo "script will return an error."
39 - echo "If the specified kernel headers are present, but are either"
40 - echo "not yet configured or are configured for an architecture"
41 - echo "different than that specified by TARGET_ARCH, this script"
42 - echo "will attempt to 'fix' the kernel headers and make them"
43 - echo "suitable for use by uClibc. This fixing process may fail."
44 - echo "It is therefore best to always provide kernel headers that"
45 - echo "are already configured for the selected architecture."
47 - echo "Most Linux distributions provide 'kernel-headers' packages"
48 - echo "that are suitable for use by uClibc."
52 +# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
54 +# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
59 + echo "usage: "`basename $0`" -k KERNEL_SOURCE_DIRECTORY -t TARGET_ARCH"
61 + echo "This utility scans the KERNEL_SOURCE_DIRECTORY directory and"
62 + echo "checks that it contains well formed kernel headers suitable"
63 + echo "for inclusion as the include/linux/ directory provided by"
66 + echo "If the specified kernel headers are present and already"
67 + echo "configured for the architecture specified by TARGET_ARCH,"
68 + echo "they will be used as-is."
70 + echo "If the specified kernel headers are missing entirely, this"
71 + echo "script will return an error."
73 + echo "If the specified kernel headers are present, but are either"
74 + echo "not yet configured or are configured for an architecture"
75 + echo "different than that specified by TARGET_ARCH, this script"
76 + echo "will attempt to 'fix' the kernel headers and make them"
77 + echo "suitable for use by uClibc. This fixing process may fail."
78 + echo "It is therefore best to always provide kernel headers that"
79 + echo "are already configured for the selected architecture."
81 + echo "Most Linux distributions provide 'kernel-headers' packages"
82 + echo "that are suitable for use by uClibc."
91 +# Parse our arguments
96 - -k ) shift; if [ -n "$1" ]; then KERNEL_SOURCE=$1; shift; else usage; fi; ;;
97 - -t ) shift; if [ -n "$1" ]; then TARGET_ARCH=$1; shift; else usage; fi; ;;
98 - -n ) shift; HAS_MMU="n"; ;;
104 + -k ) shift; if [ -n "$1" ]; then KERNEL_SOURCE=$1; shift; else usage; fi; ;;
105 + -t ) shift; if [ -n "$1" ]; then TARGET_ARCH=$1; shift; else usage; fi; ;;
106 + -n ) shift; HAS_MMU="n"; ;;
112 -if [ ! -f "$KERNEL_SOURCE/Makefile" -a ! -f "$KERNEL_SOURCE/include/linux/version.h" ]; then
115 - echo "The file $KERNEL_SOURCE/Makefile or $KERNEL_SOURCE/include/linux/version.h is missing!";
116 - echo "Perhaps your kernel source is broken?"
122 -if [ ! -d "$KERNEL_SOURCE" ]; then
125 - echo "$KERNEL_SOURCE is not a directory";
131 -if [ -f "$KERNEL_SOURCE/Makefile" ] ; then
132 -# set current VERSION, PATCHLEVEL, SUBLEVEL, EXTRAVERSION
133 -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`
135 -ver=`grep UTS_RELEASE $KERNEL_SOURCE/include/linux/version.h | cut -d '"' -f 2`
136 -VERSION=`echo "$ver" | cut -d '.' -f 1`
137 -PATCHLEVEL=`echo "$ver" | cut -d '.' -f 2`
138 -if echo "$ver" | grep -q '-' ; then
139 -SUBLEVEL=`echo "$ver" | sed "s/${VERSION}.${PATCHLEVEL}.//" | cut -d '-' -f 1`
140 -EXTRAVERSION=`echo "$ver" | sed "s/${VERSION}.${PATCHLEVEL}.${SUBLEVEL}-//"`
142 -SUBLEVEL=`echo "$ver" | cut -d '.' -f 3`
146 +# Perform some sanity checks on our kernel sources
148 +if [ ! -f "$KERNEL_SOURCE/Makefile" -a ! -f "$KERNEL_SOURCE/include/linux/version.h" ]; then
151 + echo "The file $KERNEL_SOURCE/Makefile or $KERNEL_SOURCE/include/linux/version.h is missing!"
152 + echo "Perhaps your kernel source is broken?"
157 -if [ -z "$VERSION" -o -z "$PATCHLEVEL" -o -z "$SUBLEVEL" ]
159 - echo "Unable to determine version for kernel headers"
160 - echo -e "\tprovided in directory $KERNEL_SOURCE"
162 +if [ ! -d "$KERNEL_SOURCE" ]; then
165 + echo "$KERNEL_SOURCE is not a directory"
171 -if [ "$MAKE_IS_SILENT" != "y" ]; then
172 -echo "Current kernel version is $VERSION.$PATCHLEVEL.$SUBLEVEL${EXTRAVERSION}"
174 -echo "Using kernel headers from $VERSION.$PATCHLEVEL.$SUBLEVEL${EXTRAVERSION} for architecture '$TARGET_ARCH'"
175 -echo -e "\tprovided in directory $KERNEL_SOURCE"
180 # Create a symlink to include/asm
184 if [ ! -d "$KERNEL_SOURCE/include/asm" ]; then
187 - echo "The symlink $KERNEL_SOURCE/include/asm is missing\!";
188 - echo "Perhaps you forgot to configure your kernel source?";
189 - echo "You really should configure your kernel source tree so I";
190 - echo "do not have to try and guess about this sort of thing.";
192 - echo "Attempting to guess a usable value....";
197 - if [ "$TARGET_ARCH" = "powerpc" ];then
199 - ln -fs $KERNEL_SOURCE/include/asm-ppc include/asm;
201 - elif [ "$TARGET_ARCH" = "mips" ];then
203 - ln -fs $KERNEL_SOURCE/include/asm-mips include/asm;
205 - elif [ "$TARGET_ARCH" = "arm" ];then
207 - ln -fs $KERNEL_SOURCE/include/asm-arm include/asm;
209 - if [ ! -L $KERNEL_SOURCE/include/asm-arm/proc ] ; then
210 - if [ ! -L proc ] ; then
212 - ln -fs proc-armv proc;
213 - ln -fs arch-ebsa285 arch);
217 + echo "The symlink $KERNEL_SOURCE/include/asm is missing\!"
218 + echo "Perhaps you forgot to configure your kernel source?"
219 + echo "You really should configure your kernel source tree so I"
220 + echo "do not have to try and guess about this sort of thing."
222 + echo "Attempting to guess a usable value...."
227 + if [ "$TARGET_ARCH" = "powerpc" ]; then
229 + ln -fs $KERNEL_SOURCE/include/asm-ppc include/asm
231 + elif [ "$TARGET_ARCH" = "mips" ]; then
233 + ln -fs $KERNEL_SOURCE/include/asm-mips include/asm
235 + elif [ "$TARGET_ARCH" = "arm" ]; then
237 + ln -fs $KERNEL_SOURCE/include/asm-arm include/asm
239 + if [ ! -L $KERNEL_SOURCE/include/asm-arm/proc ]; then
240 + if [ ! -L proc ]; then
243 + ln -fs proc-armv proc
244 + ln -fs arch-ebsa285 arch
248 + elif [ "$TARGET_ARCH" = "cris" ]; then
250 + ln -fs $KERNEL_SOURCE/include/asm-cris include/asm
252 + elif [ "$HAS_MMU" != "y" ]; then
253 + if [ -d $KERNEL_SOURCE/include/asm-${TARGET_ARCH}nommu ]; then
255 + ln -fs $KERNEL_SOURCE/include/asm-${TARGET_ARCH}nommu include/asm
259 + ln -fs $KERNEL_SOURCE/include/asm-$TARGET_ARCH include/asm
264 + ln -fs $KERNEL_SOURCE/include/asm-$TARGET_ARCH include/asm
267 - elif [ "$TARGET_ARCH" = "cris" ]; then
269 - ln -fs $KERNEL_SOURCE/include/asm-cris include/asm;
271 - elif [ "$HAS_MMU" != "y" ]; then
272 - if [ -d $KERNEL_SOURCE/include/asm-${TARGET_ARCH}nommu ] ; then
274 - ln -fs $KERNEL_SOURCE/include/asm-${TARGET_ARCH}nommu include/asm;
278 - ln -fs $KERNEL_SOURCE/include/asm-$TARGET_ARCH include/asm;
283 - ln -fs $KERNEL_SOURCE/include/asm-$TARGET_ARCH include/asm;
287 -# No guessing required.....
288 -ln -fs $KERNEL_SOURCE/include/asm include/asm
289 -if [ -e $KERNEL_SOURCE/include/asm-$TARGET_ARCH ] ; then
290 -ln -fs $KERNEL_SOURCE/include/asm-$TARGET_ARCH include/asm-$TARGET_ARCH
291 + # No guessing required.....
292 + for x in $KERNEL_SOURCE/include/asm* ; do
293 + ln -fs ${x} include/
300 # Annoyingly, 2.6.x kernel headers also need an include/asm-generic/ directory
301 -if [ $VERSION -eq 2 ] && [ $PATCHLEVEL -ge 6 ] ; then
302 - ln -fs $KERNEL_SOURCE/include/asm-generic include/asm-generic
305 +if [ -e $KERNEL_SOURCE/include/asm-generic ]; then
306 + rm -f include/asm-generic
307 + ln -fs $KERNEL_SOURCE/include/asm-generic include/asm-generic
312 # Create the include/linux symlink.
315 ln -fs $KERNEL_SOURCE/include/linux include/linux