Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 393 - (show 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 #!/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