]>
Commit | Line | Data |
---|---|---|
4ea7ea00 TT |
1 | #!/bin/sh |
2 | ||
29a5deed | 3 | cat > sed.script << "EOF" |
4ea7ea00 TT |
4 | /^#/d |
5 | /^$/d | |
6 | s/__extension__ // | |
7 | s/typedef \(.*\) __u\([1-9]*\);/#define __U\2_TYPEDEF \1/ | |
8 | s/typedef \(.*\) __s\([1-9]*\);/#define __S\2_TYPEDEF \1/ | |
9 | EOF | |
10 | ||
318824c1 TT |
11 | if test -z "$CC"; then |
12 | CC=gcc | |
13 | fi | |
14 | ||
15 | if test -z "$CPP"; then | |
16 | CPP="$CC -E" | |
17 | fi | |
18 | ||
3a941bef AD |
19 | /bin/echo -n "checking for __uNN types... " |
20 | # can't check [ -f /usr/include/asm/types.h ] directly, since | |
21 | # the include path might be different if cross-compiling | |
22 | if echo '#include <asm/types.h>' | $CPP - 2> parse-types.log | \ | |
23 | sed -f sed.script | grep '^#' > asm_types.h; then | |
24 | echo "using <asm/types.h>" | |
25 | else | |
26 | echo "using generic types" | |
27 | fi | |
29a5deed TT |
28 | |
29 | rm sed.script | |
4ea7ea00 TT |
30 | |
31 | cp asm_types.h asm_types.c | |
32 | ||
33 | cat >> asm_types.c <<EOF | |
29a5deed TT |
34 | #include <stdio.h> |
35 | #include <stdlib.h> | |
b55705e0 | 36 | int main(int argc, char **argv) |
4ea7ea00 TT |
37 | { |
38 | #ifdef __U8_TYPEDEF | |
39 | if (sizeof(__U8_TYPEDEF) != 1) { | |
40 | printf("Sizeof(__U8__TYPEDEF) is %d should be 1\n", | |
da489dd2 | 41 | (int) sizeof(__U8_TYPEDEF)); |
4ea7ea00 TT |
42 | exit(1); |
43 | } | |
3a941bef | 44 | #elif defined(__linux__) |
4ea7ea00 TT |
45 | #warning __U8_TYPEDEF not defined |
46 | #endif | |
47 | #ifdef __S8_TYPEDEF | |
48 | if (sizeof(__S8_TYPEDEF) != 1) { | |
49 | printf("Sizeof(_S8__TYPEDEF) is %d should be 1\n", | |
da489dd2 | 50 | (int) sizeof(__S8_TYPEDEF)); |
4ea7ea00 TT |
51 | exit(1); |
52 | } | |
3a941bef | 53 | #elif defined(__linux__) |
4ea7ea00 TT |
54 | #warning __S8_TYPEDEF not defined |
55 | #endif | |
56 | #ifdef __U16_TYPEDEF | |
57 | if (sizeof(__U16_TYPEDEF) != 2) { | |
58 | printf("Sizeof(__U16__TYPEDEF) is %d should be 2\n", | |
da489dd2 | 59 | (int) sizeof(__U16_TYPEDEF)); |
4ea7ea00 TT |
60 | exit(1); |
61 | } | |
3a941bef | 62 | #elif defined(__linux__) |
4ea7ea00 TT |
63 | #warning __U16_TYPEDEF not defined |
64 | #endif | |
65 | #ifdef __S16_TYPEDEF | |
66 | if (sizeof(__S16_TYPEDEF) != 2) { | |
67 | printf("Sizeof(__S16__TYPEDEF) is %d should be 2\n", | |
da489dd2 | 68 | (int) sizeof(__S16_TYPEDEF)); |
4ea7ea00 TT |
69 | exit(1); |
70 | } | |
3a941bef | 71 | #elif defined(__linux__) |
4ea7ea00 TT |
72 | #warning __S16_TYPEDEF not defined |
73 | #endif | |
74 | ||
75 | #ifdef __U32_TYPEDEF | |
76 | if (sizeof(__U32_TYPEDEF) != 4) { | |
77 | printf("Sizeof(__U32__TYPEDEF) is %d should be 4\n", | |
da489dd2 | 78 | (int) sizeof(__U32_TYPEDEF)); |
4ea7ea00 TT |
79 | exit(1); |
80 | } | |
3a941bef | 81 | #elif defined(__linux__) |
4ea7ea00 TT |
82 | #warning __U32_TYPEDEF not defined |
83 | #endif | |
84 | #ifdef __S32_TYPEDEF | |
85 | if (sizeof(__S32_TYPEDEF) != 4) { | |
86 | printf("Sizeof(__S32__TYPEDEF) is %d should be 4\n", | |
da489dd2 | 87 | (int) sizeof(__S32_TYPEDEF)); |
4ea7ea00 TT |
88 | exit(1); |
89 | } | |
3a941bef | 90 | #elif defined(__linux__) |
4ea7ea00 TT |
91 | #warning __S32_TYPEDEF not defined |
92 | #endif | |
93 | ||
94 | #ifdef __U64_TYPEDEF | |
95 | if (sizeof(__U64_TYPEDEF) != 8) { | |
96 | printf("Sizeof(__U64__TYPEDEF) is %d should be 8\n", | |
da489dd2 | 97 | (int) sizeof(__U64_TYPEDEF)); |
4ea7ea00 TT |
98 | exit(1); |
99 | } | |
3a941bef | 100 | #elif defined(__linux__) |
4ea7ea00 TT |
101 | #warning __U64_TYPEDEF not defined |
102 | #endif | |
103 | #ifdef __S64_TYPEDEF | |
104 | if (sizeof(__S64_TYPEDEF) != 8) { | |
105 | printf("Sizeof(__S64__TYPEDEF) is %d should be 8\n", | |
da489dd2 | 106 | (int) sizeof(__S64_TYPEDEF)); |
4ea7ea00 TT |
107 | exit(1); |
108 | } | |
3a941bef | 109 | #elif defined(__linux__) |
4ea7ea00 TT |
110 | #warning __S64_TYPEDEF not defined |
111 | #endif | |
b55705e0 | 112 | return 0; |
4ea7ea00 TT |
113 | } |
114 | EOF | |
115 | ||
29a5deed | 116 | ${BUILD_CC-${CC-gcc}} -o asm_types asm_types.c |
318824c1 | 117 | if ./asm_types |
4ea7ea00 | 118 | then |
f56aa6e6 | 119 | true |
318824c1 | 120 | else |
91f04685 CQ |
121 | if [ "${CROSS_COMPILE}" != "1" ]; then |
122 | echo "Problem detected with asm_types.h" | |
123 | echo "" > asm_types.h | |
124 | fi | |
4ea7ea00 TT |
125 | fi |
126 | rm asm_types.c asm_types | |
127 |