Magellan Linux

Annotation of /trunk/linux-libc-headers/headers.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 435 - (hide annotations) (download) (as text)
Fri Mar 16 00:06:55 2007 UTC (17 years, 2 months ago) by niro
File MIME type: application/x-sh
File size: 43454 byte(s)
updated to upstream svn-149

1 niro 393 #!/bin/bash
2     #
3 niro 435 # Minimal Sanitized Headers - Version 01.00
4 niro 393 #
5     # Submit bugreports via http://headers.cross-lfs.org
6     #
7     #
8     # By Jim Gifford (scripts@jg555.com)
9     # Ken Moffat (ken@linxufromscratch.org)
10     # Seth Klein
11     #
12     # Based on research and work by Jürg Billeter and Mariusz Mazur
13     #
14     # Community Member Acknowledgement
15     #
16     # Ryan Oliver
17     # Joe Ciccone
18     # Matt Darcy
19     # Greg Schafer
20     # Tushar Teredesai
21     # D.J. Lucas
22     # Jeremy Huntwork
23     # Andrew Benton
24     # Florian Schanda
25     # Theo Schneider
26     # Roberto Nibali
27     #
28     # LFS/CLFS Build notes
29     #
30     # You will also need to copy over asm-generic to ensure you have all the
31 niro 435 # necessary headers. In LLH they asm-generic these into the asm-{architecture}
32 niro 393 # so there is no asm-generic.
33     #
34 niro 435 # Headers Lists
35     # As of version 01.00 we have removed the headers lists from the scripts
36     # and put them into separate text files in lists directory. The file format
37     # is one header per line.
38 niro 393 #
39     # Programs Required
40     #
41     # This version requires unifdef - get it at
42     #
43     # http://ftp.debian.org/debian/pool/main/u/unifdef/
44     #
45     #
46     # Conversion Process
47     #
48     # Removal of __KERNEL__ - These tags are only during the build of the kernel
49     #
50     # Conversion u and s variables to userspace variables is the following link
51     # for more information http://www.linuxdevices.com/articles/AT5340618290.html
52     #
53     # Removal of <linux/config.h> - Not needed for userspace contains kernel build
54     # information.
55     #
56     # Conversion of linux to __linux__ - converts to a userspace usable
57     #
58     # Removal of __iomem
59     # for more information http://lwn.net/Articles/102232/
60     #
61     # version.h is created so that all the kernel versioning information
62     # is available
63     #
64     # compiler.h is removed
65     #
66     #
67     # I386 Specific
68     #
69     #
70     # MIPS Specific
71     #
72     # CONFIG_64BIT and CONFIG_32BIT are not defined in userspace so we use
73     # __mips64.
74     #
75     # Make atomic.h the same as LLH.
76     #
77     #
78     # Sparc Specific
79     #
80     # RAW Headers use variables from the configuration to get the PAGE SIZE
81     # so we use a function that exists in glibc to figure it out.
82     #
83     #
84     # Creation of biarch headers for multilib builds
85     #
86     # Links that inspired my creation
87     #
88     # http://kerneltrap.org/node/365
89    
90     usage() {
91     echo "usage:"
92 niro 435 echo " $0 version=kernel_version {optional}"
93 niro 393 echo "example: $0"
94     echo ""
95     echo "Optional:"
96 niro 435 echo " check - checks to see if the header exists in unsantized headers"
97     echo " dump - dump headers name then create headers package"
98     echo " dumponly - dump headers name then exit"
99     echo " file - creates a file list"
100     echo " patchfile={patch} - utilize this patch"
101 niro 393 exit 255
102     }
103    
104     make_headers() {
105     for headers in $HEADERS; do
106     cd $ORIGDIR
107     HDR_DIRS=`find * -type d | grep $TYPE | cut -f1 -d'/' | sort -u`
108     for locate in $HDR_DIRS; do
109     cd $CURRENT_DIR/linux-headers-$VERSION.orig
110     LOCATE=`find */$locate -type f | grep -F "/$headers" | sort -u`
111     for file in $LOCATE; do
112     TEST1=`echo $file | grep -c /$TYPE/`
113     TEST2=`echo $file | grep -c /$TYPE-`
114     if [ "$TEST1" = "0" -a "$TEST2" = "0" ]; then
115     break
116     fi
117     header="$CURRENT_DIR/linux-headers-$VERSION/$file"
118    
119     echo "Processing $file..."
120    
121     install -m 644 "$file" "$header"
122    
123     if grep -c __KERNEL__ "$header" >/dev/null; then
124     unifdef -e -U__KERNEL__ $header > $header.new
125     mv $header.new $header
126     fi
127    
128     if [ "$DONT_CHANGE" = "no" ]; then
129     sed -e 's/\b[us]\(8\|16\|32\|64\)\b/__&/g' \
130     -e 's/\b__\(be\|le\)\(16\|32\|64\)\b/__u\2/g' \
131     -e 's/\b__force\b//g' \
132     -e 's/\b__iomem\b//g' \
133     -e 's/\b__attribute_const__\b//g' \
134     -e 's/\b__user\b//g' \
135     -e 's/ inline / __inline__ /g' \
136     -e 's/__kernel_sockaddr_/sockaddr_/g' \
137 niro 435 -e 's/^#define $//' \
138 niro 393 $header > $header.new
139     mv $header.new $header
140     fi
141    
142     sed -e '/#include <asm.acpi.h>/d' \
143     -e '/#include <asm.archparam.h>/d' \
144     -e '/#include <asm.asm-offsets.h>/d' \
145     -e '/#include <asm.bug.h>/d' \
146     -e '/#include <asm.compiler.h>/d' \
147     -e '/#include <asm.cpu-info.h>/d' \
148     -e '/#include <asm.current.h>/d' \
149     -e '/#include <asm.dsp.h>/d' \
150     -e '/#include <asm.hack.h>/d' \
151     -e '/#include <asm.hazards.h>/d' \
152     -e '/#include <asm.hpet.h>/d' \
153     -e '/#include <asm.ide.h>/d' \
154     -e '/#include <asm.interrupt.h>/d' \
155     -e '/#include <asm.machvec_init.h>/d' \
156     -e '/#include <asm.mtd-xip.h>/d' \
157     -e '/#include <asm.offset.h>/d' \
158     -e '/#include <asm.offsets.h>/d' \
159     -e '/#include <asm.page.h>/d' \
160     -e '/#include <asm.percpu.h>/d' \
161     -e '/#include <asm.prefetch.h>/d' \
162     -e '/#include <asm.proc-fns.h>/d' \
163     -e '/#include <asm.rwclock.h>/d' \
164     -e '/#include <asm.sections.h>/d' \
165     -e '/#include <asm.spinlock_types.h>/d' \
166     -e '/#include <asm.thread_info.h>/d' \
167     -e '/#include <asm.uaccess.h>/d' \
168     -e '/#include <asm.virtconvert.h>/d' \
169     -e '/#include <asm.arch.at91rm9200.h>/d' \
170     -e '/#include <asm.arch.at91rm9200_sys.h>/d' \
171     -e '/#include <asm.arch.atomic.h>/d' \
172     -e '/#include <asm.arch.cm.h>/d' \
173     -e '/#include <asm.arch.hwregs.reg_map.h>/d' \
174     -e '/#include <asm.arch.hwregs.reg_rdwr.h>/d' \
175     -e '/#include <asm.arch.hwregs.timer_defs.h>/d' \
176     -e '/#include <asm.arch.idle.h>/d' \
177     -e '/#include <asm.arch.prcm.h>/d' \
178     -e '/#include <asm.mach.ide.h>/d' \
179     -e '/#include <kmalloc.h>/d' \
180     -e '/#include <linux.autoconf.h>/d' \
181     -e '/#include <linux.bio.h>/d' \
182     -e '/#include <linux.blkdev.h>/d' \
183     -e '/#include <linux.clk.h>/d' \
184     -e '/#include <linux.compiler.h>/d' \
185     -e '/#include <linux.config.h>/d' \
186     -e '/#include <linux.completion.h>/d' \
187     -e '/#include <linux.cpumask.h>/d' \
188     -e '/#include <linux.crc-ccitt.h>/d' \
189     -e '/#include <linux.dmaengine.h>/d' \
190     -e '/#include <linux.dma-mapping.h>/d' \
191     -e '/#include <linux.genetlink.h>/d' \
192     -e '/#include <linux.hardirq.h>/d' \
193     -e '/#include <linux.kref.h>/d' \
194     -e '/#include <linux.kobject.h>/d' \
195     -e '/#include <linux.mempolicy.h>/d' \
196     -e '/#include <linux.mutex.h>/d' \
197     -e '/#include <linux.nodemask.h>/d' \
198     -e '/#include <linux.profile.h>/d' \
199     -e '/#include <linux.rcupdate.h>/d' \
200     -e '/#include <linux.rwsem.h>/d' \
201     -e '/#include <linux.seq_file.h>/d' \
202     -e '/#include <linux.smp.h>/d' \
203     -e '/#include <linux.spinlock.h>/d' \
204     -e '/#include <linux.spinlock_types.h>/d' \
205     -e '/#include <linux.stat.h>/d' \
206     -e '/#include <linux.string.h>/d' \
207     -e '/#include <linux.sunrpc.msg_prot.h>/d' \
208     -e '/#include <linux.textsearch.h>/d' \
209     -e '/#include <linux.thread_info.h>/d' \
210     -e '/#include <linux.timer.h>/d' \
211     -e '/#include <linux.topology.h>/d' \
212     -e '/#include <linux.transport_class.h>/d' \
213     -e '/#include <linux.uaccess.h>/d' \
214     -e '/#include <linux.byteorder.generic.h>/d' \
215     -e '/endif .* __KERNEL__/d' \
216 niro 435 -e 's/|| !defined (__KERNEL__)//g' \
217 niro 393 -e 's/|| !defined(__KERNEL__)//g' \
218     -e 's/!defined(__KERNEL__) ..//g' \
219     -e 's/|| defined(__KERNEL__)//g' \
220     -e 's/defined(__KERNEL__) ..//g' \
221 niro 435 -e 's/|| defined (__KERNEL__)//g' \
222 niro 393 -e 's/#ifdef linux/#ifdef __linux__/g' \
223     -e 's/#ifndef linux/#ifndef __linux__/g' \
224     -e '/#include <asm.machtypes.h>/d' \
225     -e '/#include <asm.serial-bigsur.h>/d' \
226     -e '/#include <asm.serial-ec3104.h>/d' \
227     $header > $header.new
228     mv $header.new $header
229    
230     case $header in *mips*)
231     sed -e 's/#ifdef CONFIG_32BIT/#ifndef __mips64/g' \
232     -e 's/#ifdef CONFIG_64BIT/#ifdef __mips64/g' \
233     $header > $header.new
234     mv $header.new $header
235     esac
236    
237     case $header in *byteorder.h*)
238     unifdef -e -U__GNUC__ $header > $header.new
239     mv $header.new $header
240     esac
241    
242     sed -e '/^$/N;/\n$/D' \
243     $header > $header.new
244    
245     install -m 644 $header.new $header
246     rm $header.new
247     done
248     done
249     done
250     }
251    
252 niro 435 check_headers() {
253     for file in $CHECKHEADERS; do
254     TEST="`find * -name $file`"
255     if [ "$TEST" != "" ]; then
256     echo "$file was found"
257     else
258     echo "$file was not located." >> $CURRENT_DIR/missing_headers
259     fi
260     done
261     }
262     check_headers2() {
263     for file in $CHECKHEADERS; do
264     TEST="`find * -print0 | grep -FzZ $file`"
265     if [ "$TEST" != "" ]; then
266     echo "$file was found"
267     else
268     echo "$file was not located." >> $CURRENT_DIR/missing_headers
269     fi
270     done
271     }
272    
273 niro 393 clean_header() {
274     header=$1
275     sed -e '/^$/N;/\n$/D' \
276 niro 435 -e 's@#if defined@#if defined@g' \
277     -e 's@#if !defined@#if !defined@g' \
278 niro 393 $header > $header.new
279     mv $header.new $header
280     }
281    
282     create_linux_header() {
283     echo "Creating include/$header..."
284     new_header=$NEWDIR/$header
285     echo -n "#ifndef LINUX_" > $new_header
286     HEADING=`echo $header | tr '[:lower:]' '[:upper:]' | cut -f2 -d/ | cut -f1 -d.`
287     echo -n "$HEADING" >> $new_header
288     echo "_H" >> $new_header
289     echo "" >> $new_header
290     echo "$CONTENT" >> $new_header
291     echo "" >> $new_header
292     echo "#endif" >> $new_header
293     }
294    
295     create_asm_header() {
296     for dir in $DIRS; do
297     echo "Creating include/$dir/$header..."
298     DEFINE3="_H"
299     if [ "$dir" = "asm-alpha" ]; then
300     DEFINE1="__ALPHA_"
301     fi
302     if [ "$dir" = "asm-arm" -o "$dir" = "asm-arm26" ]; then
303     DEFINE1="_ASM_ARM_"
304     fi
305     if [ "$dir" = "asm-cris" ]; then
306     DEFINE1="_ASM_CRIS_"
307     fi
308     if [ "$dir" = "asm-frv" -o "$dir" = "asm-i386" -o \
309     "$dir" = "asm-mips" -o "$dir" = "asm-parisc" -o \
310     "$dir" = "asm-x86_64" ]; then
311     DEFINE1="_ASM_"
312     fi
313     if [ "$dir" = "asm-h8300" ]; then
314     DEFINE1="_H8300_"
315     fi
316     if [ "$dir" = "asm-ia64" ]; then
317     DEFINE1="_ASM_IA64_"
318     fi
319     if [ "$dir" = "asm-m32r" ]; then
320     DEFINE1="_ASM_M32R_"
321     fi
322     if [ "$dir" = "asm-m68k" ]; then
323     DEFINE1="_"
324     fi
325     if [ "$dir" = "asm-m68knommu" ]; then
326     DEFINE1="_M68KNOMMU_"
327     fi
328     if [ "$dir" = "asm-powerpc" ]; then
329     DEFINE1="_ASM_POWERPC_"
330     fi
331     if [ "$dir" = "asm-ppc" ]; then
332     DEFINE1="_ASM_PPC_"
333     fi
334     if [ "$dir" = "asm-s390" ]; then
335     DEFINE1="_S390_"
336     fi
337     if [ "$dir" = "asm-sh" ]; then
338     DEFINE1="__ASM_"
339     fi
340     if [ "$dir" = "asm-sh64" ]; then
341     DEFINE1="__ASM_SH64_"
342     fi
343     if [ "$dir" = "asm-sparc" ]; then
344     DEFINE1="__SPARC_"
345     fi
346     if [ "$dir" = "asm-sparc64" ]; then
347     DEFINE1="__SPARC64_"
348     fi
349     if [ "$dir" = "asm-um" ]; then
350     DEFINE1="__UM_"
351     fi
352     if [ "$dir" = "asm-v850" ]; then
353     DEFINE1="__V850_"
354     DEFINE3="_H__"
355     fi
356     if [ "$dir" = "asm-xtensa" ]; then
357     DEFINE1="_XTENSA_"
358     fi
359     DEFINE2=`echo $header | tr '[:lower:]' '[:upper:]' | cut -f2 -d/ | cut -f1 -d.`
360     echo -n "#ifndef $DEFINE1" > $NEWDIR/$dir/$header
361     echo -n "$DEFINE2" >> $NEWDIR/$dir/$header
362     echo "$DEFINE3" >> $NEWDIR/$dir/$header
363     echo "" >> $NEWDIR/$dir/$header
364     echo "$CONTENT" >> $NEWDIR/$dir/$header
365     echo "" >> $NEWDIR/$dir/$header
366     echo "#endif" >> $NEWDIR/$dir/$header
367     done
368     }
369    
370     multilib_stubs() {
371     cd $CURRENT_DIR
372     STUBARCH1=$1
373     STUBARCH2=$2
374     STUBSWITCH=$3
375     HDRS=""
376     DIRS=""
377     for arch in ${STUBARCH1} ${STUBARCH2}; do
378     cd $NEWDIR/asm-${arch}
379     dirs=`find . -type d -printf "%P\n"`
380     hdrs=`find . -type f -name \*.h -printf "%P\n"`
381     DIRS=`echo ${DIRS} ${dirs} | sort -u`
382     HDRS=`echo ${HDRS} ${hdrs} | sort -u`
383     done
384    
385     cd $CURRENT_DIR
386     # Create directories (if required) under include/asm
387     install -d $NEWDIR/asm-${STUBARCH1}-biarch
388     if [ "${DIRS}" != "" ]; then
389     for dir in ${DIRS}; do
390     install -d $NEWDIR/asm-${STUBARCH1}-biarch/${dir}
391     done
392     fi
393    
394     for hdr in ${HDRS}; do
395     # include barrier
396     name=`basename ${hdr} | tr [a-z]. [A-Z]_`
397     cat > $NEWDIR/asm-${STUBARCH1}-biarch/${hdr} << EOF
398     #ifndef __STUB__${name}__
399     #define __STUB__${name}__
400    
401     EOF
402     # check whether we exist in arch1
403     if [ -f linux-headers-$VERSION/include/asm-${STUBARCH1}/${hdr} ]; then
404     # check if we also exist arch2
405     if [ -f linux-headers-$VERSION/include/asm-${STUBARCH2}/${hdr} ]; then
406     # we exist in both
407     cat >> $NEWDIR/asm-${STUBARCH1}-biarch/${hdr} << EOF
408     #ifdef ${STUBSWITCH}
409     #include <asm-${STUBARCH1}/${hdr}>
410     #else
411     #include <asm-${STUBARCH2}/${hdr}>
412     #endif
413     EOF
414     else
415     # we only exist in arch1
416     cat >> $NEWDIR/asm-${STUBARCH1}-biarch/${hdr} << EOF
417     #ifdef ${STUBSWITCH}
418     #include <asm-${STUBARCH1}/${hdr}>
419     #endif
420     EOF
421     fi
422     # end arch1
423     else
424     # if we get here we only exist in arch2
425     cat >> $NEWDIR/asm-${STUBARCH1}-biarch/${hdr} << EOF
426     #ifndef ${STUBSWITCH}
427     #include <asm-${STUBARCH2}/${hdr}>
428     #endif
429     EOF
430     fi
431     cat >> $NEWDIR/asm-${STUBARCH1}-biarch/${hdr} << EOF
432    
433     #endif /* __STUB__${name}__ */
434     EOF
435     done
436     }
437    
438     change_header() {
439     FIX_HEADER=$NEWDIR/linux/$HEADER_FILE
440     echo "Fixing include/linux/$HEADER_FILE..."
441     sed -e "s/#define $HEADER_NAME/#define $HEADER_NAME\n\nNeXtLiNe/" $FIX_HEADER > $FIX_HEADER.new
442     cp $FIX_HEADER.new $FIX_HEADER
443     sed -e "s@NeXtLiNe@$HEADER_UPDATE@" $FIX_HEADER > $FIX_HEADER.new
444     mv $FIX_HEADER.new $FIX_HEADER
445     }
446    
447     # Input Check
448     #
449     if [ "$1" = "" ]; then
450 niro 435 usage
451 niro 393 fi
452    
453     while [ $# -gt 0 ]; do
454     case $1 in
455    
456 niro 435 check)
457     CHECK=yes
458     ;;
459    
460 niro 393 file)
461 niro 435 FILE=yes
462 niro 393 ;;
463    
464     dump)
465 niro 435 DUMP=yes
466 niro 393 ;;
467    
468 niro 435 patchfile=*)
469     TEMPPATCH=`echo $1 | awk -F= '{print $2;}'`
470     if [ "$PATCHES" = "" ]; then
471     PATCHES="$TEMPPATCH"
472     else
473     PATCHES="$PATCHES $TEMPPATCH"
474     fi
475     ;;
476    
477 niro 393 dumponly)
478 niro 435 DUMP=yes
479     DUMPONLY=yes
480 niro 393 ;;
481    
482 niro 435 version=*)
483     VERSION=`echo $1 | awk -F= '{print $2;}'`
484     ;;
485    
486 niro 393 *)
487     usage
488     ;;
489    
490     esac
491     shift
492     done
493    
494     # Checking for all the tools we need
495 niro 435 TEST=`whereis awk | cut -f2 -d:`
496     if [ "$TEST" = "" ]; then
497     echo "Missing awk"
498     exit 254
499     fi
500 niro 393 TEST=`whereis cp | cut -f2 -d:`
501     if [ "$TEST" = "" ]; then
502     echo "Missing cp."
503 niro 435 exit 253
504 niro 393 fi
505     TEST=`whereis install | cut -f2 -d:`
506     if [ "$TEST" = "" ]; then
507     echo "Missing install."
508 niro 435 exit 252
509 niro 393 fi
510     TEST=`whereis mv | cut -f2 -d:`
511     if [ "$TEST" = "" ]; then
512     echo "Missing mv."
513 niro 435 exit 251
514 niro 393 fi
515     TEST=`whereis pwd | cut -f2 -d:`
516     if [ "$TEST" = "" ]; then
517     echo "Missing pwd."
518 niro 435 exit 250
519 niro 393 fi
520     TEST=`whereis sed | cut -f2 -d:`
521     if [ "$TEST" = "" ]; then
522     echo "Missing sed."
523 niro 435 exit 249
524 niro 393 fi
525     TEST=`whereis rm | cut -f2 -d:`
526     if [ "$TEST" = "" ]; then
527     echo "Missing rm."
528 niro 435 exit 248
529 niro 393 fi
530     TEST=`whereis rmdir | cut -f2 -d:`
531     if [ "$TEST" = "" ]; then
532     echo "Missing rmdir."
533 niro 435 exit 247
534 niro 393 fi
535     TEST=`whereis tar | cut -f2 -d:`
536     if [ "$TEST" = "" ]; then
537     echo "Missing tar."
538 niro 435 exit 246
539 niro 393 fi
540     TEST=`whereis unifdef | cut -f2 -d:`
541     if [ "$TEST" = "" ]; then
542     echo "Missing unifdef."
543 niro 435 exit 245
544 niro 393 fi
545     TEST=`whereis wget | cut -f2 -d:`
546     if [ "$TEST" = "" ]; then
547     echo "Missing wget."
548 niro 435 exit 244
549 niro 393 fi
550    
551     # Set Linux Version
552     P1=`echo $VERSION | cut -f1 -d.`
553     P2=`echo $VERSION | cut -f2 -d.`
554     P3=`echo $VERSION | cut -f3 -d.`
555     LINUXVERSION="$P1.$P2"
556    
557     # Our Working Directories
558     CURRENT_DIR=`pwd -P`
559 niro 435 ORIGDIR=$CURRENT_DIR/linux-headers-$VERSION.orig/include
560     NEWDIR=$CURRENT_DIR/linux-headers-$VERSION/include
561 niro 393
562     # Headers to Sanitize
563 niro 435 ASM_HEADERS=$(cat $CURRENT_DIR/lists/asm-headers)
564     ASM_ARCH_HEADERS=$(cat $CURRENT_DIR/lists/asm-arch-headers)
565     ASM_SYS_HEADERS=$(cat $CURRENT_DIR/lists/asm-sys-headers)
566 niro 393
567 niro 435 LINUX_HEADERS=$(cat $CURRENT_DIR/lists/linux-headers)
568 niro 393
569 niro 435 NOSANTIZE_ASM_HEADERS=$(cat $CURRENT_DIR/lists/no_santize-asm-headers)
570     NOSANTIZE_LINUX_HEADERS=$(cat $CURRENT_DIR/lists/no_santize-linux-headers)
571 niro 393
572 niro 435 BLANK_HEADERS=$(cat $CURRENT_DIR/lists/blank-headers)
573 niro 393
574 niro 435 ROOT_HEADERS=$(cat $CURRENT_DIR/lists/root-headers)
575     SYS_HEADERS=$(cat $CURRENT_DIR/lists/sys-headers)
576    
577     GLIBC_HEADERS=$(cat $CURRENT_DIR/lists/glibc-headers)
578    
579     REMOVE_HEADERS=$(cat $CURRENT_DIR/lists/remove-headers)
580    
581 niro 393 if [ "$FILE" = "yes" ]; then
582     echo "Files List to $CURRENT_DIR/asm-list..."
583     for file in $ASM_HEADERS; do
584     echo "$file" >> $CURRENT_DIR/asm-list
585     done
586     echo "Files List to $CURRENT_DIR/linux-list..."
587     for file in $LINUX_HEADERS; do
588     echo "$file" >> $CURRENT_DIR/linux-list
589     done
590     exit
591     fi
592    
593     if [ "$DUMP" = "yes" ]; then
594     echo "Dumping Files List to $CURRENT_DIR/asm-headers..."
595     echo "ASM Files Generic" > $CURRENT_DIR/asm-headers
596     echo "-----" >> $CURRENT_DIR/asm-headers
597     for file in $ASM_HEADERS; do
598     echo "$file" >> $CURRENT_DIR/asm-headers
599     done
600     echo "-----" >> $CURRENT_DIR/asm-headers
601     echo "ASM Architecture Specific Files" >> $CURRENT_DIR/asm-headers
602     echo "-----" >> $CURRENT_DIR/asm-headers
603     for file in $ASM_ARCH_HEADERS; do
604     echo "$file" >> $CURRENT_DIR/asm-headers
605     done
606     echo "-----" >> $CURRENT_DIR/asm-headers
607     echo "ASM Architecture Non Santize Files" >> $CURRENT_DIR/asm-headers
608     echo "-----" >> $CURRENT_DIR/asm-headers
609     for file in $NOSANTIZE_ASM_HEADERS; do
610     echo "$file" >> $CURRENT_DIR/asm-headers
611     done
612     echo "Dumping Files List to $CURRENT_DIR/linux-headers..."
613     echo "Linux Files" > $CURRENT_DIR/linux-headers
614     echo "-----" >> $CURRENT_DIR/linux-headers
615     for file in $LINUX_HEADERS; do
616     echo "$file" >> $CURRENT_DIR/linux-headers
617     done
618     echo "-----" >> $CURRENT_DIR/linux-headers
619     echo "Linux Non Santize Files" >> $CURRENT_DIR/linux-headers
620     echo "-----" >> $CURRENT_DIR/linux-headers
621     for file in $NOSANTIZE_LINUX_HEADERS; do
622     echo "$file" >> $CURRENT_DIR/linux-headers
623     done
624     if [ "$DUMPONLY" = "yes" ]; then
625     echo "Exiting - Dump only requested..."
626     exit 0
627     fi
628     fi
629    
630     if ! [ -f linux-$VERSION.tar.bz2 ]; then
631     echo "Downloading kernel linux-$VERSION from kernel.org..."
632     wget --quiet http://www.kernel.org/pub/linux/kernel/v$P1.$P2/linux-$VERSION.tar.bz2
633     if [ "$?" != "0" ]; then
634     echo "Error during Download."
635     exit 255
636     fi
637     fi
638    
639     echo "Decompressing Kernel Headers only..."
640     rm -rf linux-$VERSION linux-headers-$VERSION linux-headers-$VERSION.orig
641 niro 435 tar --wildcards -jxf linux-$VERSION.tar.bz2 linux-$VERSION/include/*
642     if [ -e $CURRENT_DIR/patches/linux-$VERSION-REQUIRED-1.patch ]; then
643     if [ "$PATCHES" = "" ]; then
644     PATCHES="linux-$VERSION-REQUIRED-1.patch"
645     else
646     PATCHES="$PATCHES linux-$VERSION-REQUIRED-1.patch"
647     fi
648     fi
649     if [ -e $CURRENT_DIR/patches/linux-$VERSION-mips_headers-1.patch ]; then
650     if [ "$PATCHES" = "" ]; then
651     PATCHES="linux-$VERSION-mips_headers-1.patch"
652     else
653     PATCHES="$PATCHES linux-$VERSION-mips_headers-1.patch"
654     fi
655     fi
656     for PATCHFILE in $PATCHES; do
657     if [ -e "$CURRENT_DIR/patches/$PATCHFILE" ]; then
658     cd linux-$VERSION
659     echo "Patching Kernel Headers with $PATCHFILE..."
660     patch -Np1 -f -s -i $CURRENT_DIR/patches/$PATCHFILE
661     cd ..
662     fi
663     done
664 niro 393
665 niro 435 if [ "$CHECK" = "yes" ]; then
666     cd linux-headers-$VERSION
667     rm -f $CURRENT_DIR/missing_headers
668     echo "Checking ASM..."
669     CHECKHEADERS="$ASM_HEADERS $NOSANTIZE_ASM_HEADERS"
670     check_headers
671     CHECKHEADERS="$ASM_ARCH_HEADERS $NOSANTIZE_ASM_HEADERS"
672     check_headers2
673     echo "Checking Linux..."
674     CHECKHEADERS="$LINUX_HEADERS"
675     check_headers
676     CHECKHEADERS="$NOSANTIZE_LINUX_HEADERS"
677     check_headers2
678     echo "Report is located at $CURRENT_DIR/missing_headers."
679     rm -rf linux-headers-$VERSION
680     cd $CURRENT_DIR
681     exit 0
682     fi
683    
684 niro 393 echo "Renaming directory to linux-headers-$VERSION..."
685     mv linux-$VERSION linux-headers-$VERSION.orig
686    
687     echo "Creating directory Structure..."
688     install -d linux-headers-$VERSION
689     cd $ORIGDIR
690     DIRS=`find * -type d`
691     cd $CURRENT_DIR
692     for dir in $DIRS; do
693     install -d $NEWDIR/$dir
694     done
695    
696 niro 435 DONT_CHANGE=no
697     TYPE=asm
698 niro 393 HEADERS="$ASM_HEADERS"
699     if [ "$HEADERS" != "" ]; then
700     make_headers
701     fi
702    
703 niro 435 TYPE=asm
704     HEADERS=$ASM_ARCH_HEADERS
705 niro 393 if [ "$HEADERS" != "" ]; then
706     make_headers
707     fi
708    
709 niro 435 TYPE=linux
710     HEADERS=$LINUX_HEADERS
711 niro 393 if [ "$HEADERS" != "" ]; then
712     make_headers
713     fi
714    
715     SETTYPE="byteorder dvb isdn lockd mtd netfilter netfilter_arp netfilter_bridge netfilter_ipv4 netfilter_ipv6
716     nfsd raid sunrpc tc_act tc_ematch"
717     for type in $SETTYPE; do
718 niro 435 TYPE=linux
719 niro 393 cd $ORIGDIR/linux
720     if [ -e $ORIGDIR/linux/$type ]; then
721     HEADERS=`find $type | grep .h | sed -e '/big_endian.h/d' | sed -e '/little_endian.h/d' | sort -u `
722     if [ "$HEADERS" != "" ]; then
723     make_headers
724     fi
725     fi
726     done
727    
728     SETTYPE="mtd scsi sound"
729     for type in $SETTYPE; do
730     TYPE="$type"
731     cd $ORIGDIR
732     if [ -e $ORIGDIR/$type ]; then
733     HEADERS=`find $type | grep .h | sort -u `
734     if [ "$HEADERS" != "" ]; then
735     make_headers
736     fi
737     fi
738     done
739    
740 niro 435 DONT_CHANGE=yes
741     TYPE=linux
742     HEADERS=$NOSANTIZE_LINUX_HEADERS
743 niro 393 if [ "$HEADERS" != "" ]; then
744     make_headers
745     fi
746    
747 niro 435 TYPE=asm
748     HEADERS=$NOSANTIZE_ASM_HEADERS
749 niro 393 if [ "$HEADERS" != "" ]; then
750     make_headers
751     fi
752    
753     for header in $BLANK_HEADERS; do
754     CONTENT="/* Empty */"
755     TEST=`echo $header | grep -c linux/`
756     if [ "$TEST" = "1" ]; then
757     create_linux_header
758     else
759     DIRS=`echo $header | cut -f1 -d/`
760     header=`echo $header | sed -e "s@$DIRS/@@g"`
761     create_asm_header
762     fi
763     done
764    
765     for header in $ROOT_HEADERS; do
766     new_header=`echo $header | cut -f2 -d/`
767     HEADING=`echo $header | tr '[:lower:]' '[:upper:]' | cut -f2 -d/ | cut -f1 -d.`
768     CONTENT="#include <$new_header>"
769     create_linux_header
770     done
771    
772     for header in $SYS_HEADERS; do
773     new_header=`echo $header | cut -f2 -d/`
774     HEADING=`echo $header | tr '[:lower:]' '[:upper:]' | cut -f2 -d/ | cut -f1 -d.`
775     CONTENT="#include <sys/$new_header>"
776     create_linux_header
777     done
778    
779     cd $NEWDIR
780     PLATFORM=`ls -1 asm-* -d | sed -e 's/asm-generic//g'`
781     for platform in $PLATFORM; do
782     ELF_H=$NEWDIR/$platform/elf.h
783     echo "Fixing include/$platform/elf.h..."
784     if [ -e $ELF_H ]; then
785     if [ "$platform" = "asm-alpha" ]; then
786     sed -e '/#include <asm.auxvec.h>/d' \
787     $ELF_H > $ELF_H.new
788     fi
789     if [ "$platform" = "asm-arm" -o "$platform" = "asm-cris" ]; then
790     sed -e '/#include <asm.user.h>/d' \
791     -e '/#include <asm.procinfo.h>/d' \
792     $ELF_H > $ELF_H.new
793     fi
794     if [ "$platform" = "asm-h8300" -o "$platform" = "asm-m68k" -o \
795     "$platform" = "asm-sparc" -o "$platform" = "asm-sparc64" ]; then
796     sed -e '/#include <asm.ptrace.h>/d' \
797     $ELF_H > $ELF_H.new
798     fi
799     if [ "$platform" = "asm-i386" -o "$platform" = "asm-x86_64" ]; then
800     sed -e '/#include <asm.ptrace.h>/d' \
801     -e '/#include <asm.processor.h>/d' \
802     -e '/#include <asm.system.h>/d' \
803     -e '/#include <asm.auxvec.h>/d' \
804     -e '/#include <linux.utsname.h>/d' \
805     $ELF_H > $ELF_H.new
806     fi
807     if [ "$platform" = "asm-ia64" ]; then
808     sed -e '/#include <asm.fpu.h>/d' \
809     -e '/#include <asm.auxvec.h>/d' \
810     $ELF_H > $ELF_H.new
811     fi
812     if [ "$platform" = "asm-m32r" ]; then
813     sed -e 's@#include <asm/user.h>@#include <asm/user.h>\n#include <asm/page.h>@' \
814     $ELF_H > $ELF_H.new
815     fi
816     if [ "$platform" = "asm-m68knommu" ]; then
817     sed -e '/#include <asm.ptrace.h>/d' \
818     -e '/#include <asm.user.h>/d' \
819     $ELF_H > $ELF_H.new
820     fi
821     if [ "$platform" = "asm-parisc" ]; then
822     sed -e 's@#include <asm/ptrace.h>@#include <asm/types.h>@' \
823     $ELF_H > $ELF_H.new
824     fi
825     if [ "$platform" = "asm-powerpc" ]; then
826     sed -e '/#include <asm.auxvec.h>/d' \
827     $ELF_H > $ELF_H.new
828     fi
829     if [ "$platform" = "asm-s390" ]; then
830     sed -e 's/#define __ASMS390_ELF_H/#define __ASMS390_ELF_H\n\nNeXtLiNe/' \
831     $ELF_H > $ELF_H.new
832     cp $ELF_H.new $ELF_H
833     sed -e 's@NeXtLiNe@#include <asm/ptrace.h>\n#include <asm/system.h>\n@' \
834     $ELF_H > $ELF_H.new
835     fi
836     if [ "$platform" = "asm-sparc64" ]; then
837     sed -e 's@#define __ASM_SPARC64_ELF_H@#define __ASM_SPARC64_ELF_H\n\n#include <asm/spitfire.h>\n@' \
838     $ELF_H > $ELF_H.new
839     fi
840     if [ "$platform" = "asm-sh" ]; then
841     sed -e 's@#define __ASM_SH_ELF_H@#define __ASM_SH_ELF_H\n\n#include <asm/ptrace.h>\n@' \
842     $ELF_H > $ELF_H.new
843     fi
844     if [ "$platform" = "asm-v850" ]; then
845     sed -e '/#include <asm.user.h>/d' \
846     -e '/#include <asm.byteorder.h/d' \
847     $ELF_H > $ELF_H.new
848     fi
849     if [ -e $ELF_H.new ]; then
850     cp $ELF_H.new $ELF_H
851     fi
852     clean_header $ELF_H
853     fi
854     done
855    
856     cp $ORIGDIR/asm-ia64/page.h $NEWDIR/asm-ia64/page.h
857     PAGE_H=$NEWDIR/asm-ia64/page.h
858     echo "Processing include/asm-ia64/page.h..."
859 niro 435 unifdef -e -UCONFIG_IA64_PAGE_SIZE_4KB -UCONFIG_IA64_PAGE_SIZE_8KB \
860 niro 393 -UCONFIG_IA64_PAGE_SIZE_16KB -UCONFIG_IA64_PAGE_SIZE_64KB $PAGE_H > $PAGE_H.new
861     cp $PAGE_H.new $PAGE_H
862     sed -e 's/# error Unsupported page size./#define PAGE_SIZE\tsysconf (_SC_PAGE_SIZE)\nNeXtLiNe/' $PAGE_H > $PAGE_H.new
863     cp $PAGE_H.new $PAGE_H
864     sed -e 's/NeXtLiNe/\n#define PAGE_SHIFT\t(getpageshift())/' $PAGE_H > $PAGE_H.new
865     mv $PAGE_H.new $PAGE_H
866     clean_header $PAGE_H
867    
868     cd $NEWDIR
869     PLATFORM=`ls -1 asm-* -d | sed -e 's/asm-generic//g' -e 's/asm-ia64//g'`
870     for platform in $PLATFORM; do
871     PAGE_H=$NEWDIR/$platform/page.h
872     echo "Creating include/$platform/page.h..."
873     if [ "$platform" = "asm-alpha" ]; then
874     FILEHEADER="_ALPHA_PAGE_H"
875     fi
876     if [ "$platform" = "asm-arm" -o "$platform" = "asm-arm26" ]; then
877     FILEHEADER="_ASMARM_PAGE_H"
878     fi
879     if [ "$platform" = "asm-cris" ]; then
880     FILEHEADER="_CRIS_PAGE_H"
881     fi
882     if [ "$platform" = "asm-h8300" ]; then
883     FILEHEADER="_H8300_PAGE_H"
884     fi
885     if [ "$platform" = "asm-i386" ]; then
886     FILEHEADER="_I386_PAGE_H"
887     fi
888     if [ "$platform" = "asm-m68k" ]; then
889     FILEHEADER="_M68K_PAGE_H"
890     fi
891     if [ "$platform" = "asm-m68knommu" ]; then
892     FILEHEADER="_M68KNOMMU_PAGE_H"
893     fi
894     if [ "$platform" = "asm-mips" -o "$platform" = "asm-frv" ]; then
895     FILEHEADER="_ASM_PAGE_H"
896     fi
897     if [ "$platform" = "asm-parisc" ]; then
898     FILEHEADER="_PARISC_PAGE_H"
899     fi
900     if [ "$platform" = "asm-ppc" ]; then
901     FILEHEADER="_PPC_PAGE_H"
902     fi
903     if [ "$platform" = "asm-powerpc" ]; then
904     FILEHEADER="_ASM_POWERPC_PAGE_H"
905     fi
906     if [ "$platform" = "asm-s390" ]; then
907     FILEHEADER="_S390_PAGE_H"
908     fi
909     if [ "$platform" = "asm-sh" ]; then
910     FILEHEADER="__ASM_SH_PAGE_H"
911     fi
912     if [ "$platform" = "asm-sh64" ]; then
913     FILEHEADER="__ASM_SH64_PAGE_H"
914     fi
915     if [ "$platform" = "asm-sparc" ]; then
916     FILEHEADER="_SPARC_PAGE_H"
917     fi
918     if [ "$platform" = "asm-sparc64" ]; then
919     FILEHEADER="_SPARC64_PAGE_H"
920     fi
921     if [ "$platform" = "asm-um" ]; then
922     FILEHEADER="__UM_PAGE_H"
923     fi
924     if [ "$platform" = "asm-v850" ]; then
925     FILEHEADER="__V850_PAGE_H__"
926     fi
927     if [ "$platform" = "asm-x86_64" ]; then
928     FILEHEADER="_X86_64_PAGE_H"
929     fi
930     if [ "$platform" = "asm-xtensa" ]; then
931     FILEHEADER="_XTENSA_PAGE_H"
932     fi
933     echo "#ifndef $FILEHEADER" > $PAGE_H
934     echo "#define $FILEHEADER" >> $PAGE_H
935     echo "" >> $PAGE_H
936     if [ "$platform" = "asm-alpha" ]; then
937     echo "#include <asm/pal.h>" >> $PAGE_H
938     fi
939     echo "#include <unistd.h>" >> $PAGE_H
940     if [ "$platform" = "asm-arm26" ]; then
941     echo "#define EXEC_PAGESIZE 32768" >> $PAGE_H
942     fi
943     echo "" >> $PAGE_H
944     echo "#define PAGE_SIZE sysconf (_SC_PAGE_SIZE)" >> $PAGE_H
945     echo "#define PAGE_SHIFT (getpageshift())" >> $PAGE_H
946     echo "#define PAGE_MASK (~(PAGE_SIZE-1))" >> $PAGE_H
947     echo "" >> $PAGE_H
948     if [ "$platform" = "asm-arm26" ]; then
949     echo "#define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK)">> $PAGE_H
950     fi
951     if [ "$platform" = "asm-mips" ]; then
952     echo "#ifdef CONFIG_LIMITED_DMA" >> $PAGE_H
953     echo "#define WANT_PAGE_VIRTUAL" >> $PAGE_H
954     echo "#endif" >> $PAGE_H
955     echo "" >> $PAGE_H
956     fi
957     if [ "$platform" = "asm-v850" ]; then
958     echo "#ifndef PAGE_OFFSET" >> $PAGE_H
959     echo "#define PAGE_OFFSET 0x0000000" >> $PAGE_H
960     echo "#endif" >> $PAGE_H
961     echo "" >> $PAGE_H
962     fi
963     echo "#endif /* ($FILEHEADER) */" >> $PAGE_H
964     clean_header $PAGE_H
965     done
966    
967     PLATFORM="asm-m68k asm-sparc asm-sparc64"
968     for platform in $PLATFORM; do
969     KBIO_H=$NEWDIR/$platform/kbio.h
970     echo "Creating include/$platform/kbio.h..."
971     echo "#ifndef __LINUX_KBIO_H" > $KBIO_H
972     echo "#define __LINUX_KBIO_H" >> $KBIO_H
973     echo "" >> $KBIO_H
974     echo "#define KIOCTYPE _IOR('k', 9, int)" >> $KBIO_H
975     echo "" >> $KBIO_H
976     echo "#define KIOCLAYOUT _IOR('k', 20, int)" >> $KBIO_H
977     echo "" >> $KBIO_H
978     echo "enum {" >> $KBIO_H
979     echo " TR_NONE," >> $KBIO_H
980     echo " TR_ASCII," >> $KBIO_H
981     echo " TR_EVENT," >> $KBIO_H
982     echo " TR_UNTRANS_EVENT" >> $KBIO_H
983     echo "};" >> $KBIO_H
984     echo "" >> $KBIO_H
985     echo "#define KIOCGTRANS _IOR('k', 5, int)" >> $KBIO_H
986     echo "" >> $KBIO_H
987     echo "#define KIOCTRANS _IOW('k', 0, int)" >> $KBIO_H
988     echo "" >> $KBIO_H
989     echo "#define KIOCCMD _IOW('k', 8, int)" >> $KBIO_H
990     echo "" >> $KBIO_H
991     echo "#define KIOCSDIRECT _IOW('k', 10, int)" >> $KBIO_H
992     echo "" >> $KBIO_H
993     echo "#define KIOCSLED _IOW('k', 14, unsigned char)" >> $KBIO_H
994     echo "" >> $KBIO_H
995     echo "#define KIOCGLED _IOR('k', 15, unsigned char)" >> $KBIO_H
996     echo "struct kbd_rate {" >> $KBIO_H
997     echo " unsigned char delay;" >> $KBIO_H
998     echo " unsigned char rate; " >> $KBIO_H
999     echo "};" >> $KBIO_H
1000     echo "" >> $KBIO_H
1001     echo "#define KIOCSRATE _IOW('k', 40, struct kbd_rate)" >> $KBIO_H
1002     echo "" >> $KBIO_H
1003     echo "#define KIOCGRATE _IOW('k', 41, struct kbd_rate)" >> $KBIO_H
1004     echo "" >> $KBIO_H
1005     echo "#define KBD_UP 0x80" >> $KBIO_H
1006     echo "" >> $KBIO_H
1007     echo "#define KBD_KEYMASK 0x7f" >> $KBIO_H
1008     echo "" >> $KBIO_H
1009     echo "#define KBD_IDLE 0x75" >> $KBIO_H
1010     echo "" >> $KBIO_H
1011     echo "#endif /* __LINUX_KBIO_H */" >> $KBIO_H
1012     clean_header $KBIO_H
1013     done
1014    
1015     CACHE_H=$NEWDIR/asm-i386/cache.h
1016     echo "Fixing include/asm-i386/cache.h..."
1017     sed -e 's@CONFIG_X86_L1_CACHE_SHIFT@7@' $CACHE_H > $CACHE_H.new
1018     mv $CACHE_H.new $CACHE_H
1019     clean_header $CACHE_H
1020    
1021     CACHE_H=$NEWDIR/asm-x86_64/cache.h
1022     echo "Fixing include/asm-x86_64/cache.h..."
1023     sed -e 's@CONFIG_X86_L1_CACHE_SHIFT@7@' $CACHE_H > $CACHE_H.new
1024     mv $CACHE_H.new $CACHE_H
1025     clean_header $CACHE_H
1026    
1027     PARAM_H=$NEWDIR/asm-i386/param.h
1028     echo "Fixing include/asm-i386/param.h..."
1029     sed -e 's@#define HZ 100@#define HZ\t\t100\n#endif\n\nNeXtLiNe\n@' $PARAM_H > $PARAM_H.new
1030     cp $PARAM_H.new $PARAM_H
1031     sed -e 's@NeXtLiNe@#ifndef USER_HZ\n#define USER_HZ\t\t100@' $PARAM_H > $PARAM_H.new
1032     mv $PARAM_H.new $PARAM_H
1033     clean_header $PARAM_H
1034    
1035     PROCESSOR_H=$NEWDIR/asm-i386/processor.h
1036     echo "Fixing include/asm-i386/processor.h..."
1037     sed -e 's@#include <asm/segment.h>@#include <asm/segment.h>\n#include <asm/page.h>@' $PROCESSOR_H > $PROCESSOR_H.new
1038     mv $PROCESSOR_H.new $PROCESSOR_H
1039     clean_header $PROCESSOR_H
1040    
1041     PROCESSOR_H=$NEWDIR/asm-x86_64/processor.h
1042     echo "Fixing include/asm-x86_64/processor.h..."
1043     sed -e 's@#include <asm/segment.h>@#include <asm/segment.h>\n#include <asm/page.h>@' $PROCESSOR_H > $PROCESSOR_H.new
1044     mv $PROCESSOR_H.new $PROCESSOR_H
1045     clean_header $PROCESSOR_H
1046    
1047     TERMIOS_H=$NEWDIR/asm-sparc/termios.h
1048     echo "Fixing include/asm-sparc/termios.h..."
1049     sed -e 's@struct sunos_ttysize@#endif\n\nstruct sunos_ttysize@' $TERMIOS_H > $TERMIOS_H.new
1050     mv $TERMIOS_H.new $TERMIOS_H
1051     clean_header $TERMIOS_H
1052    
1053     TERMIOS_H=$NEWDIR/asm-sparc64/termios.h
1054     echo "Fixing include/asm-sparc64/termios.h..."
1055     sed -e 's@struct sunos_ttysize@#endif\n\nstruct sunos_ttysize@' $TERMIOS_H > $TERMIOS_H.new
1056     mv $TERMIOS_H.new $TERMIOS_H
1057     clean_header $TERMIOS_H
1058    
1059     cd $NEWDIR
1060     for header in `find * -name types.h` ; do
1061     echo "Fixing include/$header..."
1062     sed -e 's@&& !defined(__STRICT_ANSI__)@@' $header > $header.new
1063     mv $header.new $header
1064     clean_header $header
1065     done
1066    
1067     for header in $ASM_SYS_HEADERS; do
1068     cd $NEWDIR
1069     DIRS=`ls -1 asm-* -d | sed -e 's/asm-generic//g'`
1070     CONTENT="#include <sys/$header>"
1071     create_asm_header
1072     done
1073    
1074     VERSION_H=$NEWDIR/linux/version.h
1075     echo "Creating include/linux/version.h..."
1076     let LINUXCODE="($P1<<16)+($P2<<8)+$P3"
1077     echo "#ifndef _LINUX_VERSION_H" > $VERSION_H
1078     echo "#define _LINUX_VERSION_H" >> $VERSION_H
1079     echo "" >> $VERSION_H
1080     echo "#define UTS_RELEASE \"$P1.$P2.$P3\"" >> $VERSION_H
1081     echo "#define LINUX_VERSION_CODE $LINUXCODE" >> $VERSION_H
1082     echo "#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))" >> $VERSION_H
1083     echo "" >> $VERSION_H
1084     echo "#endif /* _LINUX_VERSION_H */" >> $VERSION_H
1085     clean_header $VERSION_H
1086    
1087     BIG_ENDIAN_H=include/linux/byteorder/big_endian.h
1088     LITTLE_ENDIAN_H=include/linux/byteorder/little_endian.h
1089     HEADERS="$BIG_ENDIAN_H $LITTLE_ENDIAN_H"
1090     for hdr in $HEADERS; do
1091     echo "Fixing $hdr..."
1092     sed -e 's/(__force __be..)//' \
1093     -e 's/(__force __u..)//' \
1094     -e 's/(__force __le..)//' \
1095     -e '/#include <linux.byteorder.generic.h>/d' \
1096     -e '/static/,/#define/d' \
1097     -e 's/\b[us]\(8\|16\|32\|64\)\b/__&/g' \
1098     -e 's/\b__\(be\|le\)\(16\|32\|64\)\b/__u\2/g' \
1099     $CURRENT_DIR/linux-headers-$VERSION/$hdr > $CURRENT_DIR/linux-headers-$VERSION/$hdr.new
1100     mv $CURRENT_DIR/linux-headers-$VERSION/$hdr.new $CURRENT_DIR/linux-headers-$VERSION/$hdr
1101     clean_header $CURRENT_DIR/linux-headers-$VERSION/$hdr
1102     done
1103    
1104     ATOMIC_H=$NEWDIR/asm-mips/atomic.h
1105     echo "Creating include/asm-mips/atomic.h..."
1106     echo "#ifndef _ASM_ATOMIC_H" > $ATOMIC_H
1107     echo "#define _ASM_ATOMIC_H" >> $ATOMIC_H
1108     echo "" >> $ATOMIC_H
1109     echo "typedef struct { volatile int counter; } atomic_t;" >> $ATOMIC_H
1110     echo "" >> $ATOMIC_H
1111     echo "#ifdef __mips64" >> $ATOMIC_H
1112     echo "typedef struct { volatile long counter; } atomic64_t;" >> $ATOMIC_H
1113     echo "#endif" >> $ATOMIC_H
1114     echo "" >> $ATOMIC_H
1115     echo "#endif /* _ASM_ATOMIC_H */" >> $ATOMIC_H
1116     clean_header $ATOMIC_H
1117    
1118     ATOMIC_H=$NEWDIR/asm-i386/atomic.h
1119     echo "Fixing include/asm-i386/atomic.h"
1120     if [ -e $NEWDIR/asm-i386/alternative.h ]; then
1121     sed -e 's@#include <asm.processor.h>@#include <asm/alternative.h>@g' $ATOMIC_H > $ATOMIC_H.new
1122     else
1123     sed -e '/#include <asm.processor.h>/d' $ATOMIC_H > $ATOMIC_H.new
1124     fi
1125     mv $ATOMIC_H.new $ATOMIC_H
1126     clean_header $ATOMIC_H
1127    
1128     HEADER_FILE="agpgart.h"
1129     HEADER_NAME="_AGP_H 1"
1130     HEADER_UPDATE="#include <asm/types.h>"
1131     change_header
1132    
1133     HEADER_FILE="atmarp.h"
1134     HEADER_NAME="_LINUX_ATMARP_H"
1135     HEADER_UPDATE="#include <linux/types.h>"
1136     change_header
1137    
1138     ATM_H=$NEWDIR/linux/atm.h
1139     echo "Fixing include/linux/atm.h..."
1140     sed -e 's@#include <linux/atmapi.h>@#include <linux/types.h>\n#include <linux/atmapi.h>@' $ATM_H > $ATM_H.new
1141     cp $ATM_H.new $ATM_H
1142     sed -e 's@#include <linux/atmioc.h>@#include <linux/atmioc.h>\n#include <stdint.h>@' $ATM_H > $ATM_H.new
1143     mv $ATM_H.new $ATM_H
1144     clean_header $ATM_H
1145    
1146     ATM_TCP_H=$NEWDIR/linux/atm_tcp.h
1147     echo "Fixing include/linux/atm_tcp.h..."
1148     sed -e 's@#include <linux/atmapi.h>@#include <linux/types.h>\n#include <linux/atmapi.h>@' $ATM_TCP_H > $ATM_TCP_H.new
1149     cp $ATM_TCP_H.new $ATM_TCP_H
1150     clean_header $ATM_TCP_H
1151    
1152     echo "Creating include/linux/ax25.h..."
1153     echo "#include <netax25/ax25.h>" > $NEWDIR/linux/ax25.h
1154    
1155     ELF_H=$NEWDIR/linux/elf.h
1156     echo "Fixing include/linux/elf.h..."
1157     sed -e 's@#include <elf.h>@#include <elf.h>\n#include <asm/elf.h>@' $ELF_H > $ELF_H.new
1158     mv $ELF_H.new $ELF_H
1159     clean_header $ELF_H
1160    
1161     HEADER_FILE="ethtool.h"
1162     HEADER_NAME="_LINUX_ETHTOOL_H"
1163     HEADER_UPDATE="#include <asm/types.h>"
1164     change_header
1165    
1166     FS_H=$NEWDIR/linux/fs.h
1167     echo "Fixing include/linux/fs.h..."
1168     sed -e 's@#include <linux/limits.h>@#include <linux/types.h>\n#include <linux/limits.h>@' $FS_H > $FS_H.new
1169     mv $FS_H.new $FS_H
1170     clean_header $FS_H
1171    
1172     HEADER_FILE="if_fc.h"
1173     HEADER_NAME="_LINUX_IF_FC_H"
1174     HEADER_UPDATE="#include <asm/types.h>"
1175     change_header
1176    
1177     IF_HIPPI_H=$NEWDIR/linux/if_hippi.h
1178     echo "Fixing include/linux/if_hippi.h..."
1179     sed -e 's@#include <asm/byteorder.h>@#include <endian.h>\n#include <byteswap.h>\nNeXtLiNe@' $IF_HIPPI_H > $IF_HIPPI_H.new
1180     cp $IF_HIPPI_H.new $IF_HIPPI_H
1181     sed -e 's@NeXtLiNe@#include <asm/types.h>@' $IF_HIPPI_H > $IF_HIPPI_H.new
1182     mv $IF_HIPPI_H.new $IF_HIPPI_H
1183     clean_header $IF_HIPPI_H
1184    
1185     IF_PPPOX_H=$NEWDIR/linux/if_pppox.h
1186     echo "Fixing include/linux/if_pppox.h..."
1187     sed -e 's@#define __LINUX_IF_PPPOX_H@#define __LINUX_IF_PPPOX_H\n\n#include <linux/if.h>\nNeXtLiNe@' $IF_PPPOX_H > $IF_PPPOX_H.new
1188     cp $IF_PPPOX_H.new $IF_PPPOX_H
1189     sed -e 's@NeXtLiNe@#include <linux/if_ether.h>@' $IF_PPPOX_H > $IF_PPPOX_H.new
1190     cp $IF_PPPOX_H.new $IF_PPPOX_H
1191     sed -e 's@#include <asm/byteorder.h>@#include <endian.h>\n#include <byteswap.h>\nNeXtLiNe@' $IF_PPPOX_H > $IF_PPPOX_H.new
1192     cp $IF_PPPOX_H.new $IF_PPPOX_H
1193     sed -e 's@NeXtLiNe@#include <asm/byteorder.h>@' $IF_PPPOX_H > $IF_PPPOX_H.new
1194     mv $IF_PPPOX_H.new $IF_PPPOX_H
1195     clean_header $IF_PPPOX_H
1196    
1197     HEADER_FILE="if_strip.h"
1198     HEADER_NAME="__LINUX_STRIP_H"
1199     HEADER_UPDATE="#include <asm/types.h>"
1200     change_header
1201    
1202     IF_TUNNEL_H=$NEWDIR/linux/if_tunnel.h
1203     echo "Fixing include/linux/if_tunnel.h..."
1204     sed -e 's/#define _IF_TUNNEL_H_/#define _IF_TUNNEL_H_\n\nNeXtLiNe/' $IF_TUNNEL_H > $IF_TUNNEL_H.new
1205     cp $IF_TUNNEL_H.new $IF_TUNNEL_H
1206     sed -e 's@NeXtLiNe@#include <linux/if.h>\nNeXtLiNe@' $IF_TUNNEL_H > $IF_TUNNEL_H.new
1207     cp $IF_TUNNEL_H.new $IF_TUNNEL_H
1208     sed -e 's@NeXtLiNe@#include <linux/ip.h>\nNeXtLiNe@' $IF_TUNNEL_H > $IF_TUNNEL_H.new
1209     cp $IF_TUNNEL_H.new $IF_TUNNEL_H
1210     sed -e 's@NeXtLiNe@#include <asm/types.h>\nNeXtLiNe@' $IF_TUNNEL_H > $IF_TUNNEL_H.new
1211     cp $IF_TUNNEL_H.new $IF_TUNNEL_H
1212     sed -e 's@NeXtLiNe@#include <asm/byteorder.h>@' $IF_TUNNEL_H > $IF_TUNNEL_H.new
1213     mv $IF_TUNNEL_H.new $IF_TUNNEL_H
1214     clean_header $IF_TUNNEL_H
1215    
1216     HEADER_FILE="if_tr.h"
1217     HEADER_NAME="_LINUX_IF_TR_H"
1218     HEADER_UPDATE="#include <asm/types.h>"
1219     change_header
1220    
1221     if [ "$LINUXCODE" -lt "132625" ]; then
1222     INPUT_H=$NEWDIR/linux/input.h
1223     echo "Fixing include/linux/input.h..."
1224     sed -e '/struct input_device_id/,/INPUT_DEVICE_ID_MATCH_SWBIT/d' $INPUT_H > $INPUT_H.new
1225     mv $INPUT_H.new $INPUT_H
1226     clean_header $INPUT_H
1227     fi
1228    
1229     JOYSTICK_H=$NEWDIR/linux/joystick.h
1230     echo "Fixing include/linux/joystick.h..."
1231     sed -e 's@int32_t@__s32@' $JOYSTICK_H > $JOYSTICK_H.new
1232     cp $JOYSTICK_H.new $JOYSTICK_H
1233     sed -e 's@int64_t@__s64@' $JOYSTICK_H > $JOYSTICK_H.new
1234     mv $JOYSTICK_H.new $JOYSTICK_H
1235     clean_header $JOYSTICK_H
1236    
1237     PCI_H=$NEWDIR/linux/pci.h
1238     echo "Fixing include/linux/pci.h..."
1239     sed -e '/#include <linux.mod_devicetable.h>/d' $PCI_H > $PCI_H.new
1240     mv $PCI_H.new $PCI_H
1241     clean_header $PCI_H
1242    
1243     echo "Creating include/linux/netrom.h..."
1244     echo "#include <netrom/netrom.h>" > $NEWDIR/linux/netrom.h
1245    
1246     NFS3_H=$NEWDIR/linux/nfs3.h
1247     echo "Fixing include/linux/nfs3.h..."
1248     sed -e 's@#endif /. _LINUX_NFS3_H ./@@' $NFS3_H > $NFS3_H.new
1249     cp $NFS3_H.new $NFS3_H
1250     echo "#endif /* NFS_NEED_KERNEL_TYPES */" >> $NFS3_H
1251     echo "#endif /* _LINUX_NFS3_H */" >> $NFS3_H
1252     clean_header $NFS3_H
1253    
1254     RTNETLINK_H=$NEWDIR/linux/rtnetlink.h
1255     echo "Fixing include/linux/rtnetlink.h..."
1256     sed -e 's@#define RTPROT_XORP 14 .* XORP *..@#define RTPROT_XORP\t14\t/* XORP */\nNeXtLiNe@' $RTNETLINK_H > $RTNETLINK_H.new
1257     cp $RTNETLINK_H.new $RTNETLINK_H
1258     sed -e 's@NeXtLiNe@#define RTPROT_NTK\t15\t/* Netsukuku */@' $RTNETLINK_H > $RTNETLINK_H.new
1259     mv $RTNETLINK_H.new $RTNETLINK_H
1260     clean_header $RTNETLINK_H
1261    
1262     SWAB_H=$NEWDIR/linux/byteorder/swab.h
1263     HEADER_FILE="byteorder/swab.h"
1264     HEADER_NAME="_LINUX_BYTEORDER_SWAB_H"
1265     HEADER_UPDATE="#include <byteswap.h>"
1266     change_header
1267     sed -e '/#ifndef __arch__swab16/,/#endif .* _LINUX_BYTEORDER_SWAB_H *./d' $SWAB_H > $SWAB_H.new
1268     cp $SWAB_H.new $SWAB_H
1269     sed -e 's/provide defaults when no architecture-specific optimization is detected/definitions that are not in glibc but required/g' $SWAB_H > $SWAB_H.new
1270     mv $SWAB_H.new $SWAB_H
1271 niro 435 if [ "$LINUXCODE" -gt "132625" ]; then
1272     echo "" >> $SWAB_H
1273     echo "#define ___constant_swab16(x) __bswap_constant_16(x)" >> $SWAB_H
1274     echo "#define ___constant_swab32(x) __bswap_constant_32(x)" >> $SWAB_H
1275     echo "#define ___constant_swab64(x) __bswap_constant_64(x)" >> $SWAB_H
1276     echo "" >> $SWAB_H
1277     echo "#define __swab16(x) bswap_16(x)" >> $SWAB_H
1278     echo "#define __swab32(x) bswap_32(x)" >> $SWAB_H
1279     echo "#define __swab64(x) bswap_64(x)" >> $SWAB_H
1280     echo "" >> $SWAB_H
1281     echo "#define __swab16p(x) __swab16(*(x))" >> $SWAB_H
1282     echo "#define __swab32p(x) __swab32(*(x))" >> $SWAB_H
1283     echo "#define __swab64p(x) __swab64(*(x))" >> $SWAB_H
1284     echo "" >> $SWAB_H
1285     echo "#define __swab16s(x) do { *(x) = __swab16p((x)); } while (0)" >> $SWAB_H
1286     echo "#define __swab32s(x) do { *(x) = __swab32p((x)); } while (0)" >> $SWAB_H
1287     echo "#define __swab64s(x) do { *(x) = __swab64p((x)); } while (0)" >> $SWAB_H
1288     echo "" >> $SWAB_H
1289     fi
1290 niro 393 echo "#endif /* _LINUX_BYTEORDER_SWAB_H */" >> $SWAB_H
1291     clean_header $SWAB_H
1292    
1293     TIME_H=$NEWDIR/linux/time.h
1294     echo "Creating include/linux/time.h..."
1295     echo "#ifndef LINUX_TIME_H" > $TIME_H
1296     echo "" >> $TIME_H
1297     echo "#define MSEC_PER_SEC 1000L" >> $TIME_H
1298     echo "#define USEC_PER_SEC 1000000L" >> $TIME_H
1299     echo "#define NSEC_PER_SEC 1000000000L" >> $TIME_H
1300     echo "#define NSEC_PER_USEC 1000L" >> $TIME_H
1301     echo "" >> $TIME_H
1302     echo "#include <sys/time.h>" >> $TIME_H
1303     echo "" >> $TIME_H
1304     echo "#endif" >> $TIME_H
1305    
1306     TYPES_H=$NEWDIR/linux/types.h
1307     echo "Fixing include/linux/types.h..."
1308     sed -e 's@#include <linux/posix_types.h>@#include <sys/types.h>\n#include <linux/posix_types.h>@' $TYPES_H > $TYPES_H.new
1309     cp $TYPES_H.new $TYPES_H
1310 niro 435 sed -e 's@typedef __u32 __kernel_dev_t;@typedef __u32 __kernel_dev_t;\n\n#if defined(WANT_KERNEL_TYPES) || !defined(__GLIBC__)@' $TYPES_H > $TYPES_H.new
1311     cp $TYPES_H.new $TYPES_H
1312     sed -e 's@#endif /. __KERNEL_STRICT_NAMES ./@\n#endif\n#endif\n\n@' $TYPES_H > $TYPES_H.new
1313     cp $TYPES_H.new $TYPES_H
1314 niro 393 clean_header $TYPES_H
1315    
1316     for file in $REMOVE_HEADERS; do
1317     echo "Removing unused header $file..."
1318     rm -f $NEWDIR/$file
1319     done
1320    
1321 niro 435 echo "Removing Headers that are replaced by glibc headers..."
1322     for file in $GLIBC_HEADERS; do
1323     rm $NEWDIR/$file
1324     done
1325    
1326 niro 393 if [ "$LINUXCODE" -gt "132625" ]; then
1327     HEADER_FILE="videodev.h"
1328     HEADER_NAME="__LINUX_VIDEODEV_H"
1329     HEADER_UPDATE="#include <linux/types.h>"
1330     change_header
1331 niro 435 VIDEODEV_H=$NEWDIR/linux/videodev.h
1332     sed -e '/CONFIG_VIDEO_V4L1_COMPAT/d' $VIDEODEV_H > $VIDEODEV_H.new
1333     cp $VIDEODEV_H.new $VIDEODEV_H
1334     clean_header $VIDEODEV_H
1335 niro 393 fi
1336    
1337     echo "Removing any Kbuild files..."
1338     cd $CURRENT_DIR/linux-headers-$VERSION
1339     FILES=`find * -name Kbuild`
1340     for file in $FILES; do
1341     rm -f $file
1342     done
1343    
1344     echo "Cleaning up linux-headers-$VERSION directories..."
1345     PASS=1
1346     while [ "$PASS" -lt "4" ]; do
1347     cd $CURRENT_DIR/linux-headers-$VERSION
1348     DIRS=`find * -type d`
1349     cd $CURRENT_DIR
1350     for dir in $DIRS; do
1351     if [ -e $CURRENT_DIR/linux-headers-$VERSION/$dir ]; then
1352     rmdir $CURRENT_DIR/linux-headers-$VERSION/$dir > /dev/null 2>&1
1353     if [ "$?" = "0" ]; then
1354     echo "Removing empty directory linux-headers-$VERSION/$dir..."
1355     fi
1356     fi
1357     done
1358     PASS=$(($PASS + 1))
1359     done
1360    
1361     echo "Creating multilib headers for x86_64..."
1362     multilib_stubs x86_64 i386 __x86_64__
1363     echo "Creating multilib headers for Sparc64..."
1364     multilib_stubs sparc64 sparc __arch64__
1365    
1366     count=`find $CURRENT_DIR/linux-headers-$VERSION -type f | wc -l`
1367     echo "Processed $count headers..."
1368    
1369     creation="$CURRENT_DIR/linux-headers-$VERSION/creation"
1370     echo "Processed $count headers on `date +%m-%d-%Y` at `date +%r`" > $creation
1371     echo "based on $VERSION kernel." >> $creation
1372 niro 435 if [ -e "$CURRENT_DIR/patches/$PATCHFILE" ]; then
1373     echo "Utilized patch - $PATCHFILE" >> $creation
1374     fi
1375 niro 393
1376     bugreport="$CURRENT_DIR/linux-headers-$VERSION/bug-report"
1377     echo "Report bugs at http://headers.cross-lfs.org" > $bugreport
1378     echo "" >> $bugreport
1379     echo "Include the following information:" >> $bugreport
1380     echo " Program Name" >> $bugreport
1381     echo " Program Version" >> $bugreport
1382     echo " URL to Download Program" >> $bugreport
1383     echo " Name of Missing Header" >> $bugreport
1384     echo "" >> $bugreport
1385     echo "or" >> $bugreport
1386     echo "Use the headers_list script from" >> $bugreport
1387     echo "http://ftp.jg555.com/headers/headers_list" >> $bugreport
1388     echo "" >> $bugreport
1389     echo "Thank you for you support of Linux-Headers." >> $bugreport
1390    
1391     install -d $CURRENT_DIR/linux-headers-$VERSION/script
1392     cp $0 $CURRENT_DIR/linux-headers-$VERSION/script
1393 niro 435 install -d $CURRENT_DIR/linux-headers-$VERSION/lists
1394     cp $CURRENT_DIR/lists/* $CURRENT_DIR/linux-headers-$VERSION/lists
1395     install -d $CURRENT_DIR/linux-headers-$VERSION/script/patches
1396     if [ -e $CURRENT_DIR/patches/linux-$VERSION-REQUIRED-1.patch ]; then
1397     cp $CURRENT_DIR/patches/linux-$VERSION-REQUIRED-1.patch $CURRENT_DIR/linux-headers-$VERSION/script/patches/linux-$VERSION-REQUIRED-1.patch
1398     fi
1399     if [ -e $CURRENT_DIR/patches/linux-$VERSION-mips_headers-1.patch ]; then
1400     cp $CURRENT_DIR/patches/linux-$VERSION-mips_headers-1.patch $CURRENT_DIR/linux-headers-$VERSION/script/patches/linux-$VERSION-mips_headers-1.patch
1401     fi
1402     for PATCHFILE in $PATCHES; do
1403     if [ -e "$CURRENT_DIR/patches/$PATCHFILE" ]; then
1404     cp $CURRENT_DIR/patches/$PATCHFILE $CURRENT_DIR/linux-headers-$VERSION/script/patches/$PATCHFILE
1405     fi
1406     done
1407 niro 393
1408     cp license $CURRENT_DIR/linux-headers-$VERSION/license
1409    
1410     echo "Creating linux-headers-$VERSION.tar.bz2..."
1411     cd $CURRENT_DIR
1412     tar -jcf linux-headers-$VERSION.tar.bz2 linux-headers-$VERSION