Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 393 - (hide annotations) (download) (as text)
Mon Oct 2 10:17:08 2006 UTC (17 years, 7 months ago) by niro
File MIME type: application/x-sh
File size: 46276 byte(s)
linux-libc-headers creation script from headers.cross-lfs.org svn-rev 127

1 niro 393 #!/bin/bash
2     #
3     # Minimal Sanitized Headers - Version 00.91
4     #
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     #
29     # As of Version 00.26 we no longer link to glibc headers, we link strictly
30     # use Linux Headers. Glibc, dietlibc, and uclibc use byteswap.h which is
31     # required for various headers. We have elected to link with the existing
32     # ones.
33     #
34     #
35     # LFS/CLFS Build notes
36     #
37     # You will also need to copy over asm-generic to ensure you have all the
38     # necessary headers. In LLH they combine these into the asm-architecture
39     # so there is no asm-generic.
40     #
41     #
42     # Programs Required
43     #
44     # This version requires unifdef - get it at
45     #
46     # http://ftp.debian.org/debian/pool/main/u/unifdef/
47     #
48     #
49     # Conversion Process
50     #
51     # Removal of __KERNEL__ - These tags are only during the build of the kernel
52     #
53     # Conversion u and s variables to userspace variables is the following link
54     # for more information http://www.linuxdevices.com/articles/AT5340618290.html
55     #
56     # Removal of <linux/config.h> - Not needed for userspace contains kernel build
57     # information.
58     #
59     # Conversion of linux to __linux__ - converts to a userspace usable
60     #
61     # Removal of __iomem
62     # for more information http://lwn.net/Articles/102232/
63     #
64     # version.h is created so that all the kernel versioning information
65     # is available
66     #
67     # compiler.h is removed
68     #
69     #
70     # I386 Specific
71     #
72     #
73     # MIPS Specific
74     #
75     # CONFIG_64BIT and CONFIG_32BIT are not defined in userspace so we use
76     # __mips64.
77     #
78     # Make atomic.h the same as LLH.
79     #
80     #
81     # Sparc Specific
82     #
83     # RAW Headers use variables from the configuration to get the PAGE SIZE
84     # so we use a function that exists in glibc to figure it out.
85     #
86     #
87     # Creation of biarch headers for multilib builds
88     #
89     # Links that inspired my creation
90     #
91     # http://kerneltrap.org/node/365
92    
93     usage() {
94     echo "usage:"
95     echo " $0 kernel_version {optional}"
96     echo "example: $0"
97     echo ""
98     echo "Optional:"
99     echo " dump - dump headers name then create headers package"
100     echo " dumponly - dump headers name then exit"
101     echo " file - creates a file list"
102     exit 255
103     }
104    
105     make_headers() {
106     for headers in $HEADERS; do
107     cd $ORIGDIR
108     HDR_DIRS=`find * -type d | grep $TYPE | cut -f1 -d'/' | sort -u`
109     for locate in $HDR_DIRS; do
110     cd $CURRENT_DIR/linux-headers-$VERSION.orig
111     LOCATE=`find */$locate -type f | grep -F "/$headers" | sort -u`
112     for file in $LOCATE; do
113     TEST1=`echo $file | grep -c /$TYPE/`
114     TEST2=`echo $file | grep -c /$TYPE-`
115     if [ "$TEST1" = "0" -a "$TEST2" = "0" ]; then
116     break
117     fi
118     header="$CURRENT_DIR/linux-headers-$VERSION/$file"
119    
120     echo "Processing $file..."
121    
122     install -m 644 "$file" "$header"
123    
124     if grep -c __KERNEL__ "$header" >/dev/null; then
125     unifdef -e -U__KERNEL__ $header > $header.new
126     mv $header.new $header
127     fi
128    
129     if [ "$DONT_CHANGE" = "no" ]; then
130     sed -e 's/\b[us]\(8\|16\|32\|64\)\b/__&/g' \
131     -e 's/\b__\(be\|le\)\(16\|32\|64\)\b/__u\2/g' \
132     -e 's/\b__force\b//g' \
133     -e 's/\b__iomem\b//g' \
134     -e 's/\b__attribute_const__\b//g' \
135     -e 's/\b__user\b//g' \
136     -e 's/ inline / __inline__ /g' \
137     -e 's/__kernel_sockaddr_/sockaddr_/g' \
138     $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     -e 's/|| !defined(__KERNEL__)//g' \
217     -e 's/!defined(__KERNEL__) ..//g' \
218     -e 's/|| defined(__KERNEL__)//g' \
219     -e 's/defined(__KERNEL__) ..//g' \
220     -e 's/#ifdef linux/#ifdef __linux__/g' \
221     -e 's/#ifndef linux/#ifndef __linux__/g' \
222     -e '/#include <asm.machtypes.h>/d' \
223     -e '/#include <asm.serial-bigsur.h>/d' \
224     -e '/#include <asm.serial-ec3104.h>/d' \
225     $header > $header.new
226     mv $header.new $header
227    
228     case $header in *mips*)
229     sed -e 's/#ifdef CONFIG_32BIT/#ifndef __mips64/g' \
230     -e 's/#ifdef CONFIG_64BIT/#ifdef __mips64/g' \
231     $header > $header.new
232     mv $header.new $header
233     esac
234    
235     case $header in *byteorder.h*)
236     unifdef -e -U__GNUC__ $header > $header.new
237     mv $header.new $header
238     esac
239    
240     sed -e '/^$/N;/\n$/D' \
241     $header > $header.new
242    
243     install -m 644 $header.new $header
244     rm $header.new
245     done
246     done
247     done
248     }
249    
250     clean_header() {
251     header=$1
252     sed -e '/^$/N;/\n$/D' \
253     $header > $header.new
254     mv $header.new $header
255     }
256    
257     create_linux_header() {
258     echo "Creating include/$header..."
259     new_header=$NEWDIR/$header
260     echo -n "#ifndef LINUX_" > $new_header
261     HEADING=`echo $header | tr '[:lower:]' '[:upper:]' | cut -f2 -d/ | cut -f1 -d.`
262     echo -n "$HEADING" >> $new_header
263     echo "_H" >> $new_header
264     echo "" >> $new_header
265     echo "$CONTENT" >> $new_header
266     echo "" >> $new_header
267     echo "#endif" >> $new_header
268     }
269    
270     create_asm_header() {
271     for dir in $DIRS; do
272     echo "Creating include/$dir/$header..."
273     DEFINE3="_H"
274     if [ "$dir" = "asm-alpha" ]; then
275     DEFINE1="__ALPHA_"
276     fi
277     if [ "$dir" = "asm-arm" -o "$dir" = "asm-arm26" ]; then
278     DEFINE1="_ASM_ARM_"
279     fi
280     if [ "$dir" = "asm-cris" ]; then
281     DEFINE1="_ASM_CRIS_"
282     fi
283     if [ "$dir" = "asm-frv" -o "$dir" = "asm-i386" -o \
284     "$dir" = "asm-mips" -o "$dir" = "asm-parisc" -o \
285     "$dir" = "asm-x86_64" ]; then
286     DEFINE1="_ASM_"
287     fi
288     if [ "$dir" = "asm-h8300" ]; then
289     DEFINE1="_H8300_"
290     fi
291     if [ "$dir" = "asm-ia64" ]; then
292     DEFINE1="_ASM_IA64_"
293     fi
294     if [ "$dir" = "asm-m32r" ]; then
295     DEFINE1="_ASM_M32R_"
296     fi
297     if [ "$dir" = "asm-m68k" ]; then
298     DEFINE1="_"
299     fi
300     if [ "$dir" = "asm-m68knommu" ]; then
301     DEFINE1="_M68KNOMMU_"
302     fi
303     if [ "$dir" = "asm-powerpc" ]; then
304     DEFINE1="_ASM_POWERPC_"
305     fi
306     if [ "$dir" = "asm-ppc" ]; then
307     DEFINE1="_ASM_PPC_"
308     fi
309     if [ "$dir" = "asm-s390" ]; then
310     DEFINE1="_S390_"
311     fi
312     if [ "$dir" = "asm-sh" ]; then
313     DEFINE1="__ASM_"
314     fi
315     if [ "$dir" = "asm-sh64" ]; then
316     DEFINE1="__ASM_SH64_"
317     fi
318     if [ "$dir" = "asm-sparc" ]; then
319     DEFINE1="__SPARC_"
320     fi
321     if [ "$dir" = "asm-sparc64" ]; then
322     DEFINE1="__SPARC64_"
323     fi
324     if [ "$dir" = "asm-um" ]; then
325     DEFINE1="__UM_"
326     fi
327     if [ "$dir" = "asm-v850" ]; then
328     DEFINE1="__V850_"
329     DEFINE3="_H__"
330     fi
331     if [ "$dir" = "asm-xtensa" ]; then
332     DEFINE1="_XTENSA_"
333     fi
334     DEFINE2=`echo $header | tr '[:lower:]' '[:upper:]' | cut -f2 -d/ | cut -f1 -d.`
335     echo -n "#ifndef $DEFINE1" > $NEWDIR/$dir/$header
336     echo -n "$DEFINE2" >> $NEWDIR/$dir/$header
337     echo "$DEFINE3" >> $NEWDIR/$dir/$header
338     echo "" >> $NEWDIR/$dir/$header
339     echo "$CONTENT" >> $NEWDIR/$dir/$header
340     echo "" >> $NEWDIR/$dir/$header
341     echo "#endif" >> $NEWDIR/$dir/$header
342     done
343     }
344    
345     multilib_stubs() {
346     cd $CURRENT_DIR
347     STUBARCH1=$1
348     STUBARCH2=$2
349     STUBSWITCH=$3
350     HDRS=""
351     DIRS=""
352     for arch in ${STUBARCH1} ${STUBARCH2}; do
353     cd $NEWDIR/asm-${arch}
354     dirs=`find . -type d -printf "%P\n"`
355     hdrs=`find . -type f -name \*.h -printf "%P\n"`
356     DIRS=`echo ${DIRS} ${dirs} | sort -u`
357     HDRS=`echo ${HDRS} ${hdrs} | sort -u`
358     done
359    
360     cd $CURRENT_DIR
361     # Create directories (if required) under include/asm
362     install -d $NEWDIR/asm-${STUBARCH1}-biarch
363     if [ "${DIRS}" != "" ]; then
364     for dir in ${DIRS}; do
365     install -d $NEWDIR/asm-${STUBARCH1}-biarch/${dir}
366     done
367     fi
368    
369     for hdr in ${HDRS}; do
370     # include barrier
371     name=`basename ${hdr} | tr [a-z]. [A-Z]_`
372     cat > $NEWDIR/asm-${STUBARCH1}-biarch/${hdr} << EOF
373     #ifndef __STUB__${name}__
374     #define __STUB__${name}__
375    
376     EOF
377     # check whether we exist in arch1
378     if [ -f linux-headers-$VERSION/include/asm-${STUBARCH1}/${hdr} ]; then
379     # check if we also exist arch2
380     if [ -f linux-headers-$VERSION/include/asm-${STUBARCH2}/${hdr} ]; then
381     # we exist in both
382     cat >> $NEWDIR/asm-${STUBARCH1}-biarch/${hdr} << EOF
383     #ifdef ${STUBSWITCH}
384     #include <asm-${STUBARCH1}/${hdr}>
385     #else
386     #include <asm-${STUBARCH2}/${hdr}>
387     #endif
388     EOF
389     else
390     # we only exist in arch1
391     cat >> $NEWDIR/asm-${STUBARCH1}-biarch/${hdr} << EOF
392     #ifdef ${STUBSWITCH}
393     #include <asm-${STUBARCH1}/${hdr}>
394     #endif
395     EOF
396     fi
397     # end arch1
398     else
399     # if we get here we only exist in arch2
400     cat >> $NEWDIR/asm-${STUBARCH1}-biarch/${hdr} << EOF
401     #ifndef ${STUBSWITCH}
402     #include <asm-${STUBARCH2}/${hdr}>
403     #endif
404     EOF
405     fi
406     cat >> $NEWDIR/asm-${STUBARCH1}-biarch/${hdr} << EOF
407    
408     #endif /* __STUB__${name}__ */
409     EOF
410     done
411     }
412    
413     change_header() {
414     FIX_HEADER=$NEWDIR/linux/$HEADER_FILE
415     echo "Fixing include/linux/$HEADER_FILE..."
416     sed -e "s/#define $HEADER_NAME/#define $HEADER_NAME\n\nNeXtLiNe/" $FIX_HEADER > $FIX_HEADER.new
417     cp $FIX_HEADER.new $FIX_HEADER
418     sed -e "s@NeXtLiNe@$HEADER_UPDATE@" $FIX_HEADER > $FIX_HEADER.new
419     mv $FIX_HEADER.new $FIX_HEADER
420     }
421    
422     # Input Check
423     #
424     if [ "$1" = "" ]; then
425     usage
426     fi
427    
428     # Setup Version
429     #
430     VERSION=$1
431     shift
432    
433     while [ $# -gt 0 ]; do
434     case $1 in
435    
436     file)
437     FILE="yes"
438     ;;
439    
440     dump)
441     DUMP="yes"
442     ;;
443    
444     dumponly)
445     DUMP="yes"
446     DUMPONLY="yes"
447     ;;
448    
449     *)
450     usage
451     ;;
452    
453     esac
454     shift
455     done
456    
457     # Checking for all the tools we need
458     TEST=`whereis cp | cut -f2 -d:`
459     if [ "$TEST" = "" ]; then
460     echo "Missing cp."
461     exit 254
462     fi
463     TEST=`whereis install | cut -f2 -d:`
464     if [ "$TEST" = "" ]; then
465     echo "Missing install."
466     exit 253
467     fi
468     TEST=`whereis mv | cut -f2 -d:`
469     if [ "$TEST" = "" ]; then
470     echo "Missing mv."
471     exit 252
472     fi
473     TEST=`whereis pwd | cut -f2 -d:`
474     if [ "$TEST" = "" ]; then
475     echo "Missing pwd."
476     exit 251
477     fi
478     TEST=`whereis sed | cut -f2 -d:`
479     if [ "$TEST" = "" ]; then
480     echo "Missing sed."
481     exit 250
482     fi
483     TEST=`whereis rm | cut -f2 -d:`
484     if [ "$TEST" = "" ]; then
485     echo "Missing rm."
486     exit 249
487     fi
488     TEST=`whereis rmdir | cut -f2 -d:`
489     if [ "$TEST" = "" ]; then
490     echo "Missing rmdir."
491     exit 248
492     fi
493     TEST=`whereis tar | cut -f2 -d:`
494     if [ "$TEST" = "" ]; then
495     echo "Missing tar."
496     exit 247
497     fi
498     TEST=`whereis unifdef | cut -f2 -d:`
499     if [ "$TEST" = "" ]; then
500     echo "Missing unifdef."
501     exit 246
502     fi
503     TEST=`whereis wget | cut -f2 -d:`
504     if [ "$TEST" = "" ]; then
505     echo "Missing wget."
506     exit 245
507     fi
508    
509     # Set Linux Version
510     P1=`echo $VERSION | cut -f1 -d.`
511     P2=`echo $VERSION | cut -f2 -d.`
512     P3=`echo $VERSION | cut -f3 -d.`
513     LINUXVERSION="$P1.$P2"
514    
515     # Our Working Directories
516     CURRENT_DIR=`pwd -P`
517     ORIGDIR="$CURRENT_DIR/linux-headers-$VERSION.orig/include"
518     NEWDIR="$CURRENT_DIR/linux-headers-$VERSION/include"
519    
520     # Headers to Sanitize
521     ASM_HEADERS="8253pit.h addrs.h addrspace.h alternative.h anna.h a.out.h apicdef.h apic.h arch.h as85ep1.h asi.h asm-compat.h
522     asm.h asmmacro-32.h asmmacro-64.h asmmacro.h assembler.h atomic.h auxvec.h barrier.h bitops.h bootparam.h
523     break.h btfixup.h byteorder.h cachectl.h cacheflush.h cache.h checksum.h clinkage.h clps7111.h compat.h
524     console.h constants.h const.h contregs.h coprocessor.h core.h cpudata.h cpufeature.h cpu-features.h cpu.h
525     cputable.h cputime.h cs89712.h current.h ddb5477.h dec21285.h delay.h desc.h div64.h domain.h ec3104.h eeh.h
526     elf.h entry.h ep7211.h ep7212.h errno-base.h errno.h ev96100.h ev96100int.h fcntl.h fixmap.h fls64.h
527     fpga85e2c.h fpregdef.h fpu.h gentrap.h gic.h gio_defs.h glue.h gpio.h hal.h hardirq.h hardware.h hd64465.h
528     head.h hubio.h hw_irq.h hwrpb.h hypervisor.h ia64regs.h imx-regs.h intrinsics.h io_apic.h ioctl.h ioctls.h
529     io_generic.h iomap.h iomd.h irc-regs.h irq.h irqs.h irq-sh73180.h irq-sh7780.h isadep.h iseries_io.h
530     it8172.h it8172_int.h it8712.h ixp2000-regs.h jazz.h kbio.h kldir.h kmap_types.h kregs.h lasat.h ldt.h
531     leds.h linkage.h local.h locks.h lowcore.h m32102.h m32104ut_pld.h m32700ut_lan.h m32700ut_lcd.h
532     m32700ut_pld.h m32r.h m32r_mp_fpga.h ma1.h machdep.h mach-types.h machvec.h macrology.h ma.h map.h
533     mappi2_pld.h mappi3_pld.h math_emu.h me2.h mem-layout.h memory.h mips_mt.h mipsmtregs.h mipsregs.h mman.h
534     mmsegment.h mmu_context.h mmu.h module.h motorola_pgalloc.h motorola_pgtable.h movs.h mpspec_def.h mpspec.h
535     msr.h mtrr.h nodedata.h node.h numa.h nvram.h openprom.h openpromio.h oplib.h opsput_lan.h opsput_lcd.h
536     opsput_pld.h pal.h param.h pda.h pdc.h pgalloc.h pgtable-2level.h pgtable-32.h pgtable-64.h pgtable-bits.h
537     pgtable.h pgtable-hwdef.h pgtsrmmu.h pgtsun4c.h pgtsun4.h pil.h platform.h poll.h posix_types.h prctl.h
538     processor.h procinfo.h psr.h pstate.h psw.h ptrace.h regdef.h reg.h registers.h reg_map.h reg_rdwr.h
539     regs267x.h regs306x.h regs-clock.h regs-watchdog.h rs485.h rse.h rte_cb.h rte_ma1_cb.h rte_me2_cb.h
540     rte_nb85e_cb.h rwlock.h scatterlist.h scratchpad.h segment.h semaphore.h sembuf.h serial.h serial-regs.h
541     setup.h sgidefs.h shmbuf.h shmparam.h shub_mmr.h sigcontext.h siginfo.h signal.h sigp.h sim85e2c.h
542     sim85e2.h sim85e2s.h sim.h sizes.h smp.h smtc.h sn_cpuid.h socket.h sockios.h spinlock.h spitfire.h
543     spr-regs.h starfire.h stat.h string.h sun3-head.h sun3mmu.h sun3_pgalloc.h sun3_pgtable.h sv_addr_ag.h
544     svinto.h synch.h sysasic.h syscall.h sysen.h sysirq.h system.h teg.h termbits.h termios.h timer-regs.h
545     timex.h tlbflush.h tlb.h traps.h tsc.h types.h ubc.h unaligned.h unistd.h unwind.h upa.h user.h
546     ustack.h v850e2_cache.h v850e2.h v850e_cache.h v850e.h v850e_intc.h vac-ops.h vaddrs.h visasm.h
547     vm86.h vsyscall32.h vsyscall.h war.h wbflush.h"
548     ASM_ARCH_HEADERS="asm-alpha/pci.h asm-alpha/console.h asm-alpha/hwrpb.h asm-mips/vr41xx/pci.h asm-mips/sysmips.h"
549     ASM_SYS_HEADERS="io.h"
550     LINUX_HEADERS="adb.h adfs_fs.h adfs_fs_i.h adfs_fs_sb.h affs_fs.h agpgart.h a.out.h apm_bios.h atalk.h atmapi.h
551     atmarp.h atmclip.h atmdev.h atm_eni.h atm.h atm_idt77105.h atmioc.h atmlec.h atmmpc.h atm_nicstar.h
552     atmppp.h atmsap.h atmsvc.h atm_tcp.h atm_zatm.h auto_fs4.h auto_fs.h auxvec.h backing-dev.h bfs_fs.h
553     binfmts.h bitops.h blkpg.h blockgroup_lock.h cache.h calc64.h capability.h capi.h cdrom.h coda_fs_i.h
554     coff.h compat.h cpu.h cramfs_fs.h cramfs_fs_sb.h crypto.h dcache.h dccp.h delay.h device.h devpts_fs.h
555     dirent.h dm-ioctl.h dn.h dnotify.h dqblk_xfs.h efs_dir.h efs_fs.h efs_fs_i.h efs_fs_sb.h elf.h errno.h
556     errqueue.h ethtool.h ext2_fs.h ext2_fs_sb.h ext3_fs.h ext3_fs_i.h ext3_fs_sb.h fb.h fcntl.h fd.h fdreg.h
557     filter.h fs.h fs_struct.h fuse.h futex.h gameport.h gen_stats.h gfp.h hayesesp.h hdreg.h hiddev.h
558     highmem.h hpfs_fs.h hrtimer.h icmp.h icmpv6.h idr.h if_arcnet.h if_arp.h if_bonding.h if_bridge.h
559     if_cablemodem.h if_ec.h if_eql.h if_ether.h if_fc.h if_fddi.h if_frad.h if.h if_hippi.h if_infiniband.h
560     if_ltalk.h if_packet.h if_plip.h if_ppp.h if_pppox.h if_shaper.h if_slip.h if_strip.h if_tr.h if_tun.h
561     if_tunnel.h if_vlan.h if_wanpipe_common.h if_wanpipe.h in6.h inet_diag.h in.h init.h inotify.h input.h
562     in_route.h interrupt.h ioctl.h ioport.h ip6_tunnel.h ipc.h ip.h ip_mp_alg.h ipsec.h ipv6.h ipv6_route.h
563     ipx.h irda.h irq_cpustat.h irqflags.h irq.h irqreturn.h isdn.h iso_fs.h jffs2_fs_i.h jffs2_fs_sb.h
564     jffs2.h jiffies.h joystick.h kdev_t.h kd.h kernelcapi.h kernel.h kernel_stat.h keyboard.h klist.h
565     kmod.h ktime.h lapb.h limits.h linkage.h list.h llc.h loop.h lp.h major.h mempool.h mii.h minix_fs.h
566     mm.h mod_devicetable.h module.h moduleparam.h mount.h msdos_fs.h msg.h ncp_fs_i.h ncp_fs_sb.h ncp.h
567     ncp_mount.h ncp_no.h netdevice.h netfilter_arp.h netfilter_bridge.h netfilter_decnet.h netfilter.h
568     netfilter_ipv4.h netfilter_ipv6.h net.h netlink.h netrom.h nfs2.h nfs4.h nfsacl.h nfs_fs.h nfs_fs_i.h
569     nfs_fs_sb.h nfs.h nfs_xdr.h notifier.h numa.h openprom_fs.h page-flags.h param.h parport.h patchkey.h
570     pcieport_if.h pci.h pci_ids.h pci_regs.h percpu_counter.h personality.h pfkeyv2.h pfn.h phy.h pid.h
571     pipe_fs_i.h pkt_cls.h pkt_sched.h pm.h pmu.h poll.h posix_acl.h posix_types.h ppdev.h ppp-comp.h
572     ppp_defs.h prctl.h preempt.h proc_fs.h profile.h ptrace.h qnx4_fs.h qnxtypes.h quota.h random.h raw.h
573     rbtree.h reboot.h reiserfs_fs.h reiserfs_fs_i.h reiserfs_fs_sb.h romfs_fs.h rose.h route.h rtc.h
574     rtnetlink.h sched.h sctp.h seccomp.h securebits.h security.h sem.h seqlock.h serial.h serial_reg.h
575     shmem_fs.h shm.h skbuff.h slab.h smb_fs.h smb_fs_i.h smb_fs_sb.h smb.h smb_mount.h smbno.h smp_lock.h
576     snmp.h sockios.h sonet.h soundcard.h statfs.h stddef.h stringify.h swap.h syscalls.h sysctl.h sysdev.h
577     sysv_fs.h tcp.h termios.h threads.h timex.h tiocl.h tty.h udf_fs.h udf_fs_i.h udf_fs_sb.h udp.h ufs_fs.h
578     ufs_fs_i.h ufs_fs_sb.h ultrasound.h unistd.h usbdevice_fs.h usb.h user.h utsname.h vfs.h videodev2.h
579     videodev.h vmalloc.h vt.h wireless.h workqueue.h x25.h xdr.h xfrm.h"
580    
581     NOSANTIZE_ASM_HEADERS="types.h"
582     NOSANTIZE_LINUX_HEADERS="nfs3.h types.h byteorder/big_endian.h byteorder/little_endian.h"
583    
584     BLANK_HEADERS="asm-sparc64/psr.h linux/autoconf.h linux/agp_backend.h linux/compiler.h linux/config.h linux/list.h
585     linux/mmzone.h linux/pagemap.h linux/percpu.h linux/syscalls.h linux/uio.h linux/utime.h"
586     ROOT_HEADERS="linux/elf.h linux/signal.h linux/string.h"
587     SYS_HEADERS="linux/acct.h linux/resource.h linux/socket.h linux/stat.h linux/un.h linux/wait.h"
588    
589     REMOVE_HEADERS="asm-generic/page.h asm-mips/fpu.h net/raw.h net/rawv6.h asm-cris/arch-v10/atomic.h
590     asm-cris/arch-v32/atomic.h"
591    
592     if [ "$FILE" = "yes" ]; then
593     echo "Files List to $CURRENT_DIR/asm-list..."
594     for file in $ASM_HEADERS; do
595     echo "$file" >> $CURRENT_DIR/asm-list
596     done
597     echo "Files List to $CURRENT_DIR/linux-list..."
598     for file in $LINUX_HEADERS; do
599     echo "$file" >> $CURRENT_DIR/linux-list
600     done
601     exit
602     fi
603    
604     if [ "$DUMP" = "yes" ]; then
605     echo "Dumping Files List to $CURRENT_DIR/asm-headers..."
606     echo "ASM Files Generic" > $CURRENT_DIR/asm-headers
607     echo "-----" >> $CURRENT_DIR/asm-headers
608     for file in $ASM_HEADERS; do
609     echo "$file" >> $CURRENT_DIR/asm-headers
610     done
611     echo "-----" >> $CURRENT_DIR/asm-headers
612     echo "ASM Architecture Specific Files" >> $CURRENT_DIR/asm-headers
613     echo "-----" >> $CURRENT_DIR/asm-headers
614     for file in $ASM_ARCH_HEADERS; do
615     echo "$file" >> $CURRENT_DIR/asm-headers
616     done
617     echo "-----" >> $CURRENT_DIR/asm-headers
618     echo "ASM Architecture Non Santize Files" >> $CURRENT_DIR/asm-headers
619     echo "-----" >> $CURRENT_DIR/asm-headers
620     for file in $NOSANTIZE_ASM_HEADERS; do
621     echo "$file" >> $CURRENT_DIR/asm-headers
622     done
623     echo "Dumping Files List to $CURRENT_DIR/linux-headers..."
624     echo "Linux Files" > $CURRENT_DIR/linux-headers
625     echo "-----" >> $CURRENT_DIR/linux-headers
626     for file in $LINUX_HEADERS; do
627     echo "$file" >> $CURRENT_DIR/linux-headers
628     done
629     echo "-----" >> $CURRENT_DIR/linux-headers
630     echo "Linux Non Santize Files" >> $CURRENT_DIR/linux-headers
631     echo "-----" >> $CURRENT_DIR/linux-headers
632     for file in $NOSANTIZE_LINUX_HEADERS; do
633     echo "$file" >> $CURRENT_DIR/linux-headers
634     done
635     if [ "$DUMPONLY" = "yes" ]; then
636     echo "Exiting - Dump only requested..."
637     exit 0
638     fi
639     fi
640    
641     if ! [ -f linux-$VERSION.tar.bz2 ]; then
642     echo "Downloading kernel linux-$VERSION from kernel.org..."
643     wget --quiet http://www.kernel.org/pub/linux/kernel/v$P1.$P2/linux-$VERSION.tar.bz2
644     if [ "$?" != "0" ]; then
645     echo "Error during Download."
646     exit 255
647     fi
648     fi
649    
650     echo "Decompressing Kernel Headers only..."
651     rm -rf linux-$VERSION linux-headers-$VERSION linux-headers-$VERSION.orig
652     tar jxf linux-$VERSION.tar.bz2 linux-$VERSION/include/*
653    
654     echo "Renaming directory to linux-headers-$VERSION..."
655     mv linux-$VERSION linux-headers-$VERSION.orig
656    
657     echo "Creating directory Structure..."
658     install -d linux-headers-$VERSION
659     cd $ORIGDIR
660     DIRS=`find * -type d`
661     cd $CURRENT_DIR
662     for dir in $DIRS; do
663     install -d $NEWDIR/$dir
664     done
665    
666     DONT_CHANGE="no"
667     TYPE="asm"
668     HEADERS="$ASM_HEADERS"
669     if [ "$HEADERS" != "" ]; then
670     make_headers
671     fi
672    
673     TYPE="asm"
674     HEADERS="$ASM_ARCH_HEADERS"
675     if [ "$HEADERS" != "" ]; then
676     make_headers
677     fi
678    
679     TYPE="linux"
680     HEADERS="$LINUX_HEADERS"
681     if [ "$HEADERS" != "" ]; then
682     make_headers
683     fi
684    
685     SETTYPE="byteorder dvb isdn lockd mtd netfilter netfilter_arp netfilter_bridge netfilter_ipv4 netfilter_ipv6
686     nfsd raid sunrpc tc_act tc_ematch"
687     for type in $SETTYPE; do
688     TYPE="linux"
689     cd $ORIGDIR/linux
690     if [ -e $ORIGDIR/linux/$type ]; then
691     HEADERS=`find $type | grep .h | sed -e '/big_endian.h/d' | sed -e '/little_endian.h/d' | sort -u `
692     if [ "$HEADERS" != "" ]; then
693     make_headers
694     fi
695     fi
696     done
697    
698     SETTYPE="mtd scsi sound"
699     for type in $SETTYPE; do
700     TYPE="$type"
701     cd $ORIGDIR
702     if [ -e $ORIGDIR/$type ]; then
703     HEADERS=`find $type | grep .h | sort -u `
704     if [ "$HEADERS" != "" ]; then
705     make_headers
706     fi
707     fi
708     done
709    
710     DONT_CHANGE="yes"
711     TYPE="linux"
712     HEADERS="$NOSANTIZE_LINUX_HEADERS"
713     if [ "$HEADERS" != "" ]; then
714     make_headers
715     fi
716    
717     TYPE="asm"
718     HEADERS="$NOSANTIZE_ASM_HEADERS"
719     if [ "$HEADERS" != "" ]; then
720     make_headers
721     fi
722    
723     for header in $BLANK_HEADERS; do
724     CONTENT="/* Empty */"
725     TEST=`echo $header | grep -c linux/`
726     if [ "$TEST" = "1" ]; then
727     create_linux_header
728     else
729     DIRS=`echo $header | cut -f1 -d/`
730     header=`echo $header | sed -e "s@$DIRS/@@g"`
731     create_asm_header
732     fi
733     done
734    
735     for header in $ROOT_HEADERS; do
736     new_header=`echo $header | cut -f2 -d/`
737     HEADING=`echo $header | tr '[:lower:]' '[:upper:]' | cut -f2 -d/ | cut -f1 -d.`
738     CONTENT="#include <$new_header>"
739     create_linux_header
740     done
741    
742     for header in $SYS_HEADERS; do
743     new_header=`echo $header | cut -f2 -d/`
744     HEADING=`echo $header | tr '[:lower:]' '[:upper:]' | cut -f2 -d/ | cut -f1 -d.`
745     CONTENT="#include <sys/$new_header>"
746     create_linux_header
747     done
748    
749     cd $NEWDIR
750     PLATFORM=`ls -1 asm-* -d | sed -e 's/asm-generic//g'`
751     for platform in $PLATFORM; do
752     ELF_H=$NEWDIR/$platform/elf.h
753     echo "Fixing include/$platform/elf.h..."
754     if [ -e $ELF_H ]; then
755     if [ "$platform" = "asm-alpha" ]; then
756     sed -e '/#include <asm.auxvec.h>/d' \
757     $ELF_H > $ELF_H.new
758     fi
759     if [ "$platform" = "asm-arm" -o "$platform" = "asm-cris" ]; then
760     sed -e '/#include <asm.user.h>/d' \
761     -e '/#include <asm.procinfo.h>/d' \
762     $ELF_H > $ELF_H.new
763     fi
764     if [ "$platform" = "asm-h8300" -o "$platform" = "asm-m68k" -o \
765     "$platform" = "asm-sparc" -o "$platform" = "asm-sparc64" ]; then
766     sed -e '/#include <asm.ptrace.h>/d' \
767     $ELF_H > $ELF_H.new
768     fi
769     if [ "$platform" = "asm-i386" -o "$platform" = "asm-x86_64" ]; then
770     sed -e '/#include <asm.ptrace.h>/d' \
771     -e '/#include <asm.processor.h>/d' \
772     -e '/#include <asm.system.h>/d' \
773     -e '/#include <asm.auxvec.h>/d' \
774     -e '/#include <linux.utsname.h>/d' \
775     $ELF_H > $ELF_H.new
776     fi
777     if [ "$platform" = "asm-ia64" ]; then
778     sed -e '/#include <asm.fpu.h>/d' \
779     -e '/#include <asm.auxvec.h>/d' \
780     $ELF_H > $ELF_H.new
781     fi
782     if [ "$platform" = "asm-m32r" ]; then
783     sed -e 's@#include <asm/user.h>@#include <asm/user.h>\n#include <asm/page.h>@' \
784     $ELF_H > $ELF_H.new
785     fi
786     if [ "$platform" = "asm-m68knommu" ]; then
787     sed -e '/#include <asm.ptrace.h>/d' \
788     -e '/#include <asm.user.h>/d' \
789     $ELF_H > $ELF_H.new
790     fi
791     if [ "$platform" = "asm-parisc" ]; then
792     sed -e 's@#include <asm/ptrace.h>@#include <asm/types.h>@' \
793     $ELF_H > $ELF_H.new
794     fi
795     if [ "$platform" = "asm-powerpc" ]; then
796     sed -e '/#include <asm.auxvec.h>/d' \
797     $ELF_H > $ELF_H.new
798     fi
799     if [ "$platform" = "asm-s390" ]; then
800     sed -e 's/#define __ASMS390_ELF_H/#define __ASMS390_ELF_H\n\nNeXtLiNe/' \
801     $ELF_H > $ELF_H.new
802     cp $ELF_H.new $ELF_H
803     sed -e 's@NeXtLiNe@#include <asm/ptrace.h>\n#include <asm/system.h>\n@' \
804     $ELF_H > $ELF_H.new
805     fi
806     if [ "$platform" = "asm-sparc64" ]; then
807     sed -e 's@#define __ASM_SPARC64_ELF_H@#define __ASM_SPARC64_ELF_H\n\n#include <asm/spitfire.h>\n@' \
808     $ELF_H > $ELF_H.new
809     fi
810     if [ "$platform" = "asm-sh" ]; then
811     sed -e 's@#define __ASM_SH_ELF_H@#define __ASM_SH_ELF_H\n\n#include <asm/ptrace.h>\n@' \
812     $ELF_H > $ELF_H.new
813     fi
814     if [ "$platform" = "asm-v850" ]; then
815     sed -e '/#include <asm.user.h>/d' \
816     -e '/#include <asm.byteorder.h/d' \
817     $ELF_H > $ELF_H.new
818     fi
819     if [ -e $ELF_H.new ]; then
820     cp $ELF_H.new $ELF_H
821     fi
822     clean_header $ELF_H
823     fi
824     done
825    
826     cp $ORIGDIR/asm-ia64/page.h $NEWDIR/asm-ia64/page.h
827     PAGE_H=$NEWDIR/asm-ia64/page.h
828     echo "Processing include/asm-ia64/page.h..."
829     unifdef -UCONFIG_IA64_PAGE_SIZE_4KB -UCONFIG_IA64_PAGE_SIZE_8KB \
830     -UCONFIG_IA64_PAGE_SIZE_16KB -UCONFIG_IA64_PAGE_SIZE_64KB $PAGE_H > $PAGE_H.new
831     cp $PAGE_H.new $PAGE_H
832     sed -e 's/# error Unsupported page size./#define PAGE_SIZE\tsysconf (_SC_PAGE_SIZE)\nNeXtLiNe/' $PAGE_H > $PAGE_H.new
833     cp $PAGE_H.new $PAGE_H
834     sed -e 's/NeXtLiNe/\n#define PAGE_SHIFT\t(getpageshift())/' $PAGE_H > $PAGE_H.new
835     mv $PAGE_H.new $PAGE_H
836     clean_header $PAGE_H
837    
838     cd $NEWDIR
839     PLATFORM=`ls -1 asm-* -d | sed -e 's/asm-generic//g' -e 's/asm-ia64//g'`
840     for platform in $PLATFORM; do
841     PAGE_H=$NEWDIR/$platform/page.h
842     echo "Creating include/$platform/page.h..."
843     if [ "$platform" = "asm-alpha" ]; then
844     FILEHEADER="_ALPHA_PAGE_H"
845     fi
846     if [ "$platform" = "asm-arm" -o "$platform" = "asm-arm26" ]; then
847     FILEHEADER="_ASMARM_PAGE_H"
848     fi
849     if [ "$platform" = "asm-cris" ]; then
850     FILEHEADER="_CRIS_PAGE_H"
851     fi
852     if [ "$platform" = "asm-h8300" ]; then
853     FILEHEADER="_H8300_PAGE_H"
854     fi
855     if [ "$platform" = "asm-i386" ]; then
856     FILEHEADER="_I386_PAGE_H"
857     fi
858     if [ "$platform" = "asm-m68k" ]; then
859     FILEHEADER="_M68K_PAGE_H"
860     fi
861     if [ "$platform" = "asm-m68knommu" ]; then
862     FILEHEADER="_M68KNOMMU_PAGE_H"
863     fi
864     if [ "$platform" = "asm-mips" -o "$platform" = "asm-frv" ]; then
865     FILEHEADER="_ASM_PAGE_H"
866     fi
867     if [ "$platform" = "asm-parisc" ]; then
868     FILEHEADER="_PARISC_PAGE_H"
869     fi
870     if [ "$platform" = "asm-ppc" ]; then
871     FILEHEADER="_PPC_PAGE_H"
872     fi
873     if [ "$platform" = "asm-powerpc" ]; then
874     FILEHEADER="_ASM_POWERPC_PAGE_H"
875     fi
876     if [ "$platform" = "asm-s390" ]; then
877     FILEHEADER="_S390_PAGE_H"
878     fi
879     if [ "$platform" = "asm-sh" ]; then
880     FILEHEADER="__ASM_SH_PAGE_H"
881     fi
882     if [ "$platform" = "asm-sh64" ]; then
883     FILEHEADER="__ASM_SH64_PAGE_H"
884     fi
885     if [ "$platform" = "asm-sparc" ]; then
886     FILEHEADER="_SPARC_PAGE_H"
887     fi
888     if [ "$platform" = "asm-sparc64" ]; then
889     FILEHEADER="_SPARC64_PAGE_H"
890     fi
891     if [ "$platform" = "asm-um" ]; then
892     FILEHEADER="__UM_PAGE_H"
893     fi
894     if [ "$platform" = "asm-v850" ]; then
895     FILEHEADER="__V850_PAGE_H__"
896     fi
897     if [ "$platform" = "asm-x86_64" ]; then
898     FILEHEADER="_X86_64_PAGE_H"
899     fi
900     if [ "$platform" = "asm-xtensa" ]; then
901     FILEHEADER="_XTENSA_PAGE_H"
902     fi
903     echo "#ifndef $FILEHEADER" > $PAGE_H
904     echo "#define $FILEHEADER" >> $PAGE_H
905     echo "" >> $PAGE_H
906     if [ "$platform" = "asm-alpha" ]; then
907     echo "#include <asm/pal.h>" >> $PAGE_H
908     fi
909     echo "#include <unistd.h>" >> $PAGE_H
910     if [ "$platform" = "asm-arm26" ]; then
911     echo "#define EXEC_PAGESIZE 32768" >> $PAGE_H
912     fi
913     echo "" >> $PAGE_H
914     echo "#define PAGE_SIZE sysconf (_SC_PAGE_SIZE)" >> $PAGE_H
915     echo "#define PAGE_SHIFT (getpageshift())" >> $PAGE_H
916     echo "#define PAGE_MASK (~(PAGE_SIZE-1))" >> $PAGE_H
917     echo "" >> $PAGE_H
918     if [ "$platform" = "asm-arm26" ]; then
919     echo "#define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK)">> $PAGE_H
920     fi
921     if [ "$platform" = "asm-mips" ]; then
922     echo "#ifdef CONFIG_LIMITED_DMA" >> $PAGE_H
923     echo "#define WANT_PAGE_VIRTUAL" >> $PAGE_H
924     echo "#endif" >> $PAGE_H
925     echo "" >> $PAGE_H
926     fi
927     if [ "$platform" = "asm-v850" ]; then
928     echo "#ifndef PAGE_OFFSET" >> $PAGE_H
929     echo "#define PAGE_OFFSET 0x0000000" >> $PAGE_H
930     echo "#endif" >> $PAGE_H
931     echo "" >> $PAGE_H
932     fi
933     echo "#endif /* ($FILEHEADER) */" >> $PAGE_H
934     clean_header $PAGE_H
935     done
936    
937     PLATFORM="asm-m68k asm-sparc asm-sparc64"
938     for platform in $PLATFORM; do
939     KBIO_H=$NEWDIR/$platform/kbio.h
940     echo "Creating include/$platform/kbio.h..."
941     echo "#ifndef __LINUX_KBIO_H" > $KBIO_H
942     echo "#define __LINUX_KBIO_H" >> $KBIO_H
943     echo "" >> $KBIO_H
944     echo "#define KIOCTYPE _IOR('k', 9, int)" >> $KBIO_H
945     echo "" >> $KBIO_H
946     echo "#define KIOCLAYOUT _IOR('k', 20, int)" >> $KBIO_H
947     echo "" >> $KBIO_H
948     echo "enum {" >> $KBIO_H
949     echo " TR_NONE," >> $KBIO_H
950     echo " TR_ASCII," >> $KBIO_H
951     echo " TR_EVENT," >> $KBIO_H
952     echo " TR_UNTRANS_EVENT" >> $KBIO_H
953     echo "};" >> $KBIO_H
954     echo "" >> $KBIO_H
955     echo "#define KIOCGTRANS _IOR('k', 5, int)" >> $KBIO_H
956     echo "" >> $KBIO_H
957     echo "#define KIOCTRANS _IOW('k', 0, int)" >> $KBIO_H
958     echo "" >> $KBIO_H
959     echo "#define KIOCCMD _IOW('k', 8, int)" >> $KBIO_H
960     echo "" >> $KBIO_H
961     echo "#define KIOCSDIRECT _IOW('k', 10, int)" >> $KBIO_H
962     echo "" >> $KBIO_H
963     echo "#define KIOCSLED _IOW('k', 14, unsigned char)" >> $KBIO_H
964     echo "" >> $KBIO_H
965     echo "#define KIOCGLED _IOR('k', 15, unsigned char)" >> $KBIO_H
966     echo "struct kbd_rate {" >> $KBIO_H
967     echo " unsigned char delay;" >> $KBIO_H
968     echo " unsigned char rate; " >> $KBIO_H
969     echo "};" >> $KBIO_H
970     echo "" >> $KBIO_H
971     echo "#define KIOCSRATE _IOW('k', 40, struct kbd_rate)" >> $KBIO_H
972     echo "" >> $KBIO_H
973     echo "#define KIOCGRATE _IOW('k', 41, struct kbd_rate)" >> $KBIO_H
974     echo "" >> $KBIO_H
975     echo "#define KBD_UP 0x80" >> $KBIO_H
976     echo "" >> $KBIO_H
977     echo "#define KBD_KEYMASK 0x7f" >> $KBIO_H
978     echo "" >> $KBIO_H
979     echo "#define KBD_IDLE 0x75" >> $KBIO_H
980     echo "" >> $KBIO_H
981     echo "#endif /* __LINUX_KBIO_H */" >> $KBIO_H
982     clean_header $KBIO_H
983     done
984    
985     CACHE_H=$NEWDIR/asm-i386/cache.h
986     echo "Fixing include/asm-i386/cache.h..."
987     sed -e 's@CONFIG_X86_L1_CACHE_SHIFT@7@' $CACHE_H > $CACHE_H.new
988     mv $CACHE_H.new $CACHE_H
989     clean_header $CACHE_H
990    
991     CACHE_H=$NEWDIR/asm-x86_64/cache.h
992     echo "Fixing include/asm-x86_64/cache.h..."
993     sed -e 's@CONFIG_X86_L1_CACHE_SHIFT@7@' $CACHE_H > $CACHE_H.new
994     mv $CACHE_H.new $CACHE_H
995     clean_header $CACHE_H
996    
997     PARAM_H=$NEWDIR/asm-i386/param.h
998     echo "Fixing include/asm-i386/param.h..."
999     sed -e 's@#define HZ 100@#define HZ\t\t100\n#endif\n\nNeXtLiNe\n@' $PARAM_H > $PARAM_H.new
1000     cp $PARAM_H.new $PARAM_H
1001     sed -e 's@NeXtLiNe@#ifndef USER_HZ\n#define USER_HZ\t\t100@' $PARAM_H > $PARAM_H.new
1002     mv $PARAM_H.new $PARAM_H
1003     clean_header $PARAM_H
1004    
1005     PROCESSOR_H=$NEWDIR/asm-i386/processor.h
1006     echo "Fixing include/asm-i386/processor.h..."
1007     sed -e 's@#include <asm/segment.h>@#include <asm/segment.h>\n#include <asm/page.h>@' $PROCESSOR_H > $PROCESSOR_H.new
1008     mv $PROCESSOR_H.new $PROCESSOR_H
1009     clean_header $PROCESSOR_H
1010    
1011     PROCESSOR_H=$NEWDIR/asm-x86_64/processor.h
1012     echo "Fixing include/asm-x86_64/processor.h..."
1013     sed -e 's@#include <asm/segment.h>@#include <asm/segment.h>\n#include <asm/page.h>@' $PROCESSOR_H > $PROCESSOR_H.new
1014     mv $PROCESSOR_H.new $PROCESSOR_H
1015     clean_header $PROCESSOR_H
1016    
1017     TERMIOS_H=$NEWDIR/asm-sparc/termios.h
1018     echo "Fixing include/asm-sparc/termios.h..."
1019     sed -e 's@struct sunos_ttysize@#endif\n\nstruct sunos_ttysize@' $TERMIOS_H > $TERMIOS_H.new
1020     mv $TERMIOS_H.new $TERMIOS_H
1021     clean_header $TERMIOS_H
1022    
1023     TERMIOS_H=$NEWDIR/asm-sparc64/termios.h
1024     echo "Fixing include/asm-sparc64/termios.h..."
1025     sed -e 's@struct sunos_ttysize@#endif\n\nstruct sunos_ttysize@' $TERMIOS_H > $TERMIOS_H.new
1026     mv $TERMIOS_H.new $TERMIOS_H
1027     clean_header $TERMIOS_H
1028    
1029     cd $NEWDIR
1030     for header in `find * -name types.h` ; do
1031     echo "Fixing include/$header..."
1032     sed -e 's@&& !defined(__STRICT_ANSI__)@@' $header > $header.new
1033     mv $header.new $header
1034     clean_header $header
1035     done
1036    
1037     for header in $ASM_SYS_HEADERS; do
1038     cd $NEWDIR
1039     DIRS=`ls -1 asm-* -d | sed -e 's/asm-generic//g'`
1040     CONTENT="#include <sys/$header>"
1041     create_asm_header
1042     done
1043    
1044     VERSION_H=$NEWDIR/linux/version.h
1045     echo "Creating include/linux/version.h..."
1046     let LINUXCODE="($P1<<16)+($P2<<8)+$P3"
1047     echo "#ifndef _LINUX_VERSION_H" > $VERSION_H
1048     echo "#define _LINUX_VERSION_H" >> $VERSION_H
1049     echo "" >> $VERSION_H
1050     echo "#define UTS_RELEASE \"$P1.$P2.$P3\"" >> $VERSION_H
1051     echo "#define LINUX_VERSION_CODE $LINUXCODE" >> $VERSION_H
1052     echo "#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))" >> $VERSION_H
1053     echo "" >> $VERSION_H
1054     echo "#endif /* _LINUX_VERSION_H */" >> $VERSION_H
1055     clean_header $VERSION_H
1056    
1057     BIG_ENDIAN_H=include/linux/byteorder/big_endian.h
1058     LITTLE_ENDIAN_H=include/linux/byteorder/little_endian.h
1059     HEADERS="$BIG_ENDIAN_H $LITTLE_ENDIAN_H"
1060     for hdr in $HEADERS; do
1061     echo "Fixing $hdr..."
1062     sed -e 's/(__force __be..)//' \
1063     -e 's/(__force __u..)//' \
1064     -e 's/(__force __le..)//' \
1065     -e '/#include <linux.byteorder.generic.h>/d' \
1066     -e '/static/,/#define/d' \
1067     -e 's/\b[us]\(8\|16\|32\|64\)\b/__&/g' \
1068     -e 's/\b__\(be\|le\)\(16\|32\|64\)\b/__u\2/g' \
1069     $CURRENT_DIR/linux-headers-$VERSION/$hdr > $CURRENT_DIR/linux-headers-$VERSION/$hdr.new
1070     mv $CURRENT_DIR/linux-headers-$VERSION/$hdr.new $CURRENT_DIR/linux-headers-$VERSION/$hdr
1071     clean_header $CURRENT_DIR/linux-headers-$VERSION/$hdr
1072     done
1073    
1074     ATOMIC_H=$NEWDIR/asm-mips/atomic.h
1075     echo "Creating include/asm-mips/atomic.h..."
1076     echo "#ifndef _ASM_ATOMIC_H" > $ATOMIC_H
1077     echo "#define _ASM_ATOMIC_H" >> $ATOMIC_H
1078     echo "" >> $ATOMIC_H
1079     echo "typedef struct { volatile int counter; } atomic_t;" >> $ATOMIC_H
1080     echo "" >> $ATOMIC_H
1081     echo "#ifdef __mips64" >> $ATOMIC_H
1082     echo "typedef struct { volatile long counter; } atomic64_t;" >> $ATOMIC_H
1083     echo "#endif" >> $ATOMIC_H
1084     echo "" >> $ATOMIC_H
1085     echo "#endif /* _ASM_ATOMIC_H */" >> $ATOMIC_H
1086     clean_header $ATOMIC_H
1087    
1088     ATOMIC_H=$NEWDIR/asm-i386/atomic.h
1089     echo "Fixing include/asm-i386/atomic.h"
1090     if [ -e $NEWDIR/asm-i386/alternative.h ]; then
1091     sed -e 's@#include <asm.processor.h>@#include <asm/alternative.h>@g' $ATOMIC_H > $ATOMIC_H.new
1092     else
1093     sed -e '/#include <asm.processor.h>/d' $ATOMIC_H > $ATOMIC_H.new
1094     fi
1095     mv $ATOMIC_H.new $ATOMIC_H
1096     clean_header $ATOMIC_H
1097    
1098     HEADER_FILE="agpgart.h"
1099     HEADER_NAME="_AGP_H 1"
1100     HEADER_UPDATE="#include <asm/types.h>"
1101     change_header
1102    
1103     HEADER_FILE="atmarp.h"
1104     HEADER_NAME="_LINUX_ATMARP_H"
1105     HEADER_UPDATE="#include <linux/types.h>"
1106     change_header
1107    
1108     ATM_H=$NEWDIR/linux/atm.h
1109     echo "Fixing include/linux/atm.h..."
1110     sed -e 's@#include <linux/atmapi.h>@#include <linux/types.h>\n#include <linux/atmapi.h>@' $ATM_H > $ATM_H.new
1111     cp $ATM_H.new $ATM_H
1112     sed -e 's@#include <linux/atmioc.h>@#include <linux/atmioc.h>\n#include <stdint.h>@' $ATM_H > $ATM_H.new
1113     mv $ATM_H.new $ATM_H
1114     clean_header $ATM_H
1115    
1116     ATM_TCP_H=$NEWDIR/linux/atm_tcp.h
1117     echo "Fixing include/linux/atm_tcp.h..."
1118     sed -e 's@#include <linux/atmapi.h>@#include <linux/types.h>\n#include <linux/atmapi.h>@' $ATM_TCP_H > $ATM_TCP_H.new
1119     cp $ATM_TCP_H.new $ATM_TCP_H
1120     clean_header $ATM_TCP_H
1121    
1122     echo "Creating include/linux/ax25.h..."
1123     echo "#include <netax25/ax25.h>" > $NEWDIR/linux/ax25.h
1124    
1125     ELF_H=$NEWDIR/linux/elf.h
1126     echo "Fixing include/linux/elf.h..."
1127     sed -e 's@#include <elf.h>@#include <elf.h>\n#include <asm/elf.h>@' $ELF_H > $ELF_H.new
1128     mv $ELF_H.new $ELF_H
1129     clean_header $ELF_H
1130    
1131     HEADER_FILE="ethtool.h"
1132     HEADER_NAME="_LINUX_ETHTOOL_H"
1133     HEADER_UPDATE="#include <asm/types.h>"
1134     change_header
1135    
1136     FS_H=$NEWDIR/linux/fs.h
1137     echo "Fixing include/linux/fs.h..."
1138     sed -e 's@#include <linux/limits.h>@#include <linux/types.h>\n#include <linux/limits.h>@' $FS_H > $FS_H.new
1139     mv $FS_H.new $FS_H
1140     clean_header $FS_H
1141    
1142     HEADER_FILE="if_fc.h"
1143     HEADER_NAME="_LINUX_IF_FC_H"
1144     HEADER_UPDATE="#include <asm/types.h>"
1145     change_header
1146    
1147     IF_HIPPI_H=$NEWDIR/linux/if_hippi.h
1148     echo "Fixing include/linux/if_hippi.h..."
1149     sed -e 's@#include <asm/byteorder.h>@#include <endian.h>\n#include <byteswap.h>\nNeXtLiNe@' $IF_HIPPI_H > $IF_HIPPI_H.new
1150     cp $IF_HIPPI_H.new $IF_HIPPI_H
1151     sed -e 's@NeXtLiNe@#include <asm/types.h>@' $IF_HIPPI_H > $IF_HIPPI_H.new
1152     mv $IF_HIPPI_H.new $IF_HIPPI_H
1153     clean_header $IF_HIPPI_H
1154    
1155     IF_PPPOX_H=$NEWDIR/linux/if_pppox.h
1156     echo "Fixing include/linux/if_pppox.h..."
1157     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
1158     cp $IF_PPPOX_H.new $IF_PPPOX_H
1159     sed -e 's@NeXtLiNe@#include <linux/if_ether.h>@' $IF_PPPOX_H > $IF_PPPOX_H.new
1160     cp $IF_PPPOX_H.new $IF_PPPOX_H
1161     sed -e 's@#include <asm/byteorder.h>@#include <endian.h>\n#include <byteswap.h>\nNeXtLiNe@' $IF_PPPOX_H > $IF_PPPOX_H.new
1162     cp $IF_PPPOX_H.new $IF_PPPOX_H
1163     sed -e 's@NeXtLiNe@#include <asm/byteorder.h>@' $IF_PPPOX_H > $IF_PPPOX_H.new
1164     mv $IF_PPPOX_H.new $IF_PPPOX_H
1165     clean_header $IF_PPPOX_H
1166    
1167     HEADER_FILE="if_strip.h"
1168     HEADER_NAME="__LINUX_STRIP_H"
1169     HEADER_UPDATE="#include <asm/types.h>"
1170     change_header
1171    
1172     IF_TUNNEL_H=$NEWDIR/linux/if_tunnel.h
1173     echo "Fixing include/linux/if_tunnel.h..."
1174     sed -e 's/#define _IF_TUNNEL_H_/#define _IF_TUNNEL_H_\n\nNeXtLiNe/' $IF_TUNNEL_H > $IF_TUNNEL_H.new
1175     cp $IF_TUNNEL_H.new $IF_TUNNEL_H
1176     sed -e 's@NeXtLiNe@#include <linux/if.h>\nNeXtLiNe@' $IF_TUNNEL_H > $IF_TUNNEL_H.new
1177     cp $IF_TUNNEL_H.new $IF_TUNNEL_H
1178     sed -e 's@NeXtLiNe@#include <linux/ip.h>\nNeXtLiNe@' $IF_TUNNEL_H > $IF_TUNNEL_H.new
1179     cp $IF_TUNNEL_H.new $IF_TUNNEL_H
1180     sed -e 's@NeXtLiNe@#include <asm/types.h>\nNeXtLiNe@' $IF_TUNNEL_H > $IF_TUNNEL_H.new
1181     cp $IF_TUNNEL_H.new $IF_TUNNEL_H
1182     sed -e 's@NeXtLiNe@#include <asm/byteorder.h>@' $IF_TUNNEL_H > $IF_TUNNEL_H.new
1183     mv $IF_TUNNEL_H.new $IF_TUNNEL_H
1184     clean_header $IF_TUNNEL_H
1185    
1186     HEADER_FILE="if_tr.h"
1187     HEADER_NAME="_LINUX_IF_TR_H"
1188     HEADER_UPDATE="#include <asm/types.h>"
1189     change_header
1190    
1191     if [ "$LINUXCODE" -lt "132625" ]; then
1192     INPUT_H=$NEWDIR/linux/input.h
1193     echo "Fixing include/linux/input.h..."
1194     sed -e '/struct input_device_id/,/INPUT_DEVICE_ID_MATCH_SWBIT/d' $INPUT_H > $INPUT_H.new
1195     mv $INPUT_H.new $INPUT_H
1196     clean_header $INPUT_H
1197     fi
1198    
1199     JOYSTICK_H=$NEWDIR/linux/joystick.h
1200     echo "Fixing include/linux/joystick.h..."
1201     sed -e 's@int32_t@__s32@' $JOYSTICK_H > $JOYSTICK_H.new
1202     cp $JOYSTICK_H.new $JOYSTICK_H
1203     sed -e 's@int64_t@__s64@' $JOYSTICK_H > $JOYSTICK_H.new
1204     mv $JOYSTICK_H.new $JOYSTICK_H
1205     clean_header $JOYSTICK_H
1206    
1207     PCI_H=$NEWDIR/linux/pci.h
1208     echo "Fixing include/linux/pci.h..."
1209     sed -e '/#include <linux.mod_devicetable.h>/d' $PCI_H > $PCI_H.new
1210     mv $PCI_H.new $PCI_H
1211     clean_header $PCI_H
1212    
1213     echo "Creating include/linux/netrom.h..."
1214     echo "#include <netrom/netrom.h>" > $NEWDIR/linux/netrom.h
1215    
1216     NFS3_H=$NEWDIR/linux/nfs3.h
1217     echo "Fixing include/linux/nfs3.h..."
1218     sed -e 's@#endif /. _LINUX_NFS3_H ./@@' $NFS3_H > $NFS3_H.new
1219     cp $NFS3_H.new $NFS3_H
1220     echo "#endif /* NFS_NEED_KERNEL_TYPES */" >> $NFS3_H
1221     echo "#endif /* _LINUX_NFS3_H */" >> $NFS3_H
1222     clean_header $NFS3_H
1223    
1224     RTNETLINK_H=$NEWDIR/linux/rtnetlink.h
1225     echo "Fixing include/linux/rtnetlink.h..."
1226     sed -e 's@#define RTPROT_XORP 14 .* XORP *..@#define RTPROT_XORP\t14\t/* XORP */\nNeXtLiNe@' $RTNETLINK_H > $RTNETLINK_H.new
1227     cp $RTNETLINK_H.new $RTNETLINK_H
1228     sed -e 's@NeXtLiNe@#define RTPROT_NTK\t15\t/* Netsukuku */@' $RTNETLINK_H > $RTNETLINK_H.new
1229     mv $RTNETLINK_H.new $RTNETLINK_H
1230     clean_header $RTNETLINK_H
1231    
1232     SWAB_H=$NEWDIR/linux/byteorder/swab.h
1233     HEADER_FILE="byteorder/swab.h"
1234     HEADER_NAME="_LINUX_BYTEORDER_SWAB_H"
1235     HEADER_UPDATE="#include <byteswap.h>"
1236     change_header
1237     sed -e '/#ifndef __arch__swab16/,/#endif .* _LINUX_BYTEORDER_SWAB_H *./d' $SWAB_H > $SWAB_H.new
1238     cp $SWAB_H.new $SWAB_H
1239     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
1240     mv $SWAB_H.new $SWAB_H
1241     echo "" >> $SWAB_H
1242     echo "#define ___constant_swab16(x) __bswap_constant_16(x)" >> $SWAB_H
1243     echo "#define ___constant_swab32(x) __bswap_constant_32(x)" >> $SWAB_H
1244     echo "#define ___constant_swab64(x) __bswap_constant_64(x)" >> $SWAB_H
1245     echo "" >> $SWAB_H
1246     echo "#define __swab16(x) bswap_16(x)" >> $SWAB_H
1247     echo "#define __swab32(x) bswap_32(x)" >> $SWAB_H
1248     echo "#define __swab64(x) bswap_64(x)" >> $SWAB_H
1249     echo "" >> $SWAB_H
1250     echo "#define __swab16p(x) __swab16(*(x))" >> $SWAB_H
1251     echo "#define __swab32p(x) __swab32(*(x))" >> $SWAB_H
1252     echo "#define __swab64p(x) __swab64(*(x))" >> $SWAB_H
1253     echo "" >> $SWAB_H
1254     echo "#define __swab16s(x) do { *(x) = __swab16p((x)); } while (0)" >> $SWAB_H
1255     echo "#define __swab32s(x) do { *(x) = __swab32p((x)); } while (0)" >> $SWAB_H
1256     echo "#define __swab64s(x) do { *(x) = __swab64p((x)); } while (0)" >> $SWAB_H
1257     echo "" >> $SWAB_H
1258     echo "#endif /* _LINUX_BYTEORDER_SWAB_H */" >> $SWAB_H
1259     clean_header $SWAB_H
1260    
1261     TIME_H=$NEWDIR/linux/time.h
1262     echo "Creating include/linux/time.h..."
1263     echo "#ifndef LINUX_TIME_H" > $TIME_H
1264     echo "" >> $TIME_H
1265     echo "#define MSEC_PER_SEC 1000L" >> $TIME_H
1266     echo "#define USEC_PER_SEC 1000000L" >> $TIME_H
1267     echo "#define NSEC_PER_SEC 1000000000L" >> $TIME_H
1268     echo "#define NSEC_PER_USEC 1000L" >> $TIME_H
1269     echo "" >> $TIME_H
1270     echo "#include <sys/time.h>" >> $TIME_H
1271     echo "" >> $TIME_H
1272     echo "#endif" >> $TIME_H
1273    
1274     TYPES_H=$NEWDIR/linux/types.h
1275     echo "Fixing include/linux/types.h..."
1276     sed -e 's@#include <linux/posix_types.h>@#include <sys/types.h>\n#include <linux/posix_types.h>@' $TYPES_H > $TYPES_H.new
1277     cp $TYPES_H.new $TYPES_H
1278     if [ "$LINUXVERSION" = "2.6" ]; then
1279     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
1280     cp $TYPES_H.new $TYPES_H
1281     sed -e 's@#endif /. __KERNEL_STRICT_NAMES ./@\n#endif\n#endif\n\n@' $TYPES_H > $TYPES_H.new
1282     cp $TYPES_H.new $TYPES_H
1283     fi
1284     clean_header $TYPES_H
1285    
1286     for file in $REMOVE_HEADERS; do
1287     echo "Removing unused header $file..."
1288     rm -f $NEWDIR/$file
1289     done
1290    
1291     if [ "$LINUXCODE" -gt "132625" ]; then
1292     HEADER_FILE="videodev.h"
1293     HEADER_NAME="__LINUX_VIDEODEV_H"
1294     HEADER_UPDATE="#include <linux/types.h>"
1295     change_header
1296     fi
1297    
1298     echo "Removing any Kbuild files..."
1299     cd $CURRENT_DIR/linux-headers-$VERSION
1300     FILES=`find * -name Kbuild`
1301     for file in $FILES; do
1302     rm -f $file
1303     done
1304    
1305     echo "Cleaning up linux-headers-$VERSION directories..."
1306     PASS=1
1307     while [ "$PASS" -lt "4" ]; do
1308     cd $CURRENT_DIR/linux-headers-$VERSION
1309     DIRS=`find * -type d`
1310     cd $CURRENT_DIR
1311     for dir in $DIRS; do
1312     if [ -e $CURRENT_DIR/linux-headers-$VERSION/$dir ]; then
1313     rmdir $CURRENT_DIR/linux-headers-$VERSION/$dir > /dev/null 2>&1
1314     if [ "$?" = "0" ]; then
1315     echo "Removing empty directory linux-headers-$VERSION/$dir..."
1316     fi
1317     fi
1318     done
1319     PASS=$(($PASS + 1))
1320     done
1321    
1322     echo "Creating multilib headers for x86_64..."
1323     multilib_stubs x86_64 i386 __x86_64__
1324     echo "Creating multilib headers for Sparc64..."
1325     multilib_stubs sparc64 sparc __arch64__
1326    
1327     count=`find $CURRENT_DIR/linux-headers-$VERSION -type f | wc -l`
1328     echo "Processed $count headers..."
1329    
1330     creation="$CURRENT_DIR/linux-headers-$VERSION/creation"
1331     echo "Processed $count headers on `date +%m-%d-%Y` at `date +%r`" > $creation
1332     echo "based on $VERSION kernel." >> $creation
1333    
1334     bugreport="$CURRENT_DIR/linux-headers-$VERSION/bug-report"
1335     echo "Report bugs at http://headers.cross-lfs.org" > $bugreport
1336     echo "" >> $bugreport
1337     echo "Include the following information:" >> $bugreport
1338     echo " Program Name" >> $bugreport
1339     echo " Program Version" >> $bugreport
1340     echo " URL to Download Program" >> $bugreport
1341     echo " Name of Missing Header" >> $bugreport
1342     echo "" >> $bugreport
1343     echo "or" >> $bugreport
1344     echo "Use the headers_list script from" >> $bugreport
1345     echo "http://ftp.jg555.com/headers/headers_list" >> $bugreport
1346     echo "" >> $bugreport
1347     echo "Thank you for you support of Linux-Headers." >> $bugreport
1348    
1349     install -d $CURRENT_DIR/linux-headers-$VERSION/script
1350     cp $0 $CURRENT_DIR/linux-headers-$VERSION/script
1351    
1352     cp license $CURRENT_DIR/linux-headers-$VERSION/license
1353    
1354     echo "Creating linux-headers-$VERSION.tar.bz2..."
1355     cd $CURRENT_DIR
1356     tar -jcf linux-headers-$VERSION.tar.bz2 linux-headers-$VERSION