Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 642 - (hide annotations) (download) (as text)
Tue Dec 18 00:23:39 2007 UTC (16 years, 10 months ago) by niro
File MIME type: application/x-sh
File size: 43716 byte(s)
-synced with upstream

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