1#!/bin/sh
2
3cat > sed.script << "EOF"
4/^#/d
5/^$/d
6s/__extension__ //
7s/typedef \(.*\) __u\([1-9]*\);/#define __U\2_TYPEDEF \1/
8s/typedef \(.*\) __s\([1-9]*\);/#define __S\2_TYPEDEF \1/
9EOF
10
11echo '#include <asm/types.h>' | ${CPP-${CC-gcc} -E} - | \
12    sed -f sed.script | grep ^# > asm_types.h
13
14rm sed.script
15
16cp asm_types.h asm_types.c
17
18cat >> asm_types.c <<EOF
19#include <stdio.h>
20#include <stdlib.h>
21main(int argc, char **argv)
22{
23#ifdef __U8_TYPEDEF
24	if (sizeof(__U8_TYPEDEF) != 1) {
25		printf("Sizeof(__U8__TYPEDEF) is %d should be 1\n", 
26		       sizeof(__U8_TYPEDEF));
27		exit(1);
28	}
29#else
30#warning __U8_TYPEDEF not defined
31#endif
32#ifdef __S8_TYPEDEF
33	if (sizeof(__S8_TYPEDEF) != 1) {
34		printf("Sizeof(_S8__TYPEDEF) is %d should be 1\n", 
35		       sizeof(__S8_TYPEDEF));
36		exit(1);
37	}
38#else
39#warning __S8_TYPEDEF not defined
40#endif
41#ifdef __U16_TYPEDEF
42	if (sizeof(__U16_TYPEDEF) != 2) {
43		printf("Sizeof(__U16__TYPEDEF) is %d should be 2\n", 
44		       sizeof(__U16_TYPEDEF));
45		exit(1);
46	}
47#else
48#warning __U16_TYPEDEF not defined
49#endif
50#ifdef __S16_TYPEDEF
51	if (sizeof(__S16_TYPEDEF) != 2) {
52		printf("Sizeof(__S16__TYPEDEF) is %d should be 2\n", 
53		       sizeof(__S16_TYPEDEF));
54		exit(1);
55	}
56#else
57#warning __S16_TYPEDEF not defined
58#endif
59
60#ifdef __U32_TYPEDEF
61	if (sizeof(__U32_TYPEDEF) != 4) {
62		printf("Sizeof(__U32__TYPEDEF) is %d should be 4\n", 
63		       sizeof(__U32_TYPEDEF));
64		exit(1);
65	}
66#else
67#warning __U32_TYPEDEF not defined
68#endif
69#ifdef __S32_TYPEDEF
70	if (sizeof(__S32_TYPEDEF) != 4) {
71		printf("Sizeof(__S32__TYPEDEF) is %d should be 4\n", 
72		       sizeof(__S32_TYPEDEF));
73		exit(1);
74	}
75#else
76#warning __S32_TYPEDEF not defined
77#endif
78
79#ifdef __U64_TYPEDEF
80	if (sizeof(__U64_TYPEDEF) != 8) {
81		printf("Sizeof(__U64__TYPEDEF) is %d should be 8\n", 
82		       sizeof(__U64_TYPEDEF));
83		exit(1);
84	}
85#else
86#warning __U64_TYPEDEF not defined
87#endif
88#ifdef __S64_TYPEDEF
89	if (sizeof(__S64_TYPEDEF) != 8) {
90		printf("Sizeof(__S64__TYPEDEF) is %d should be 8\n", 
91		       sizeof(__S64_TYPEDEF));
92		exit(1);
93	}
94#else
95#warning __S64_TYPEDEF not defined
96#endif
97	exit(0);
98}
99EOF
100
101${BUILD_CC-${CC-gcc}} -o asm_types asm_types.c
102if ! ./asm_types 
103then
104    echo "Problem detected with asm_types.h"
105    echo "" > asm_types.h
106fi
107rm asm_types.c asm_types
108
109