OSDN Git Service

Code drop from //branches/cupcake/...@124589
[android-x86/external-e2fsprogs.git] / config / parse-types.sh
1 #!/bin/sh
2
3 cat > sed.script << "EOF"
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
11 echo '#include <asm/types.h>' | ${CPP-${CC-gcc} -E} - | \
12     sed -f sed.script | grep ^# > asm_types.h
13
14 rm sed.script
15
16 cp asm_types.h asm_types.c
17
18 cat >> asm_types.c <<EOF
19 #include <stdio.h>
20 #include <stdlib.h>
21 main(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 }
99 EOF
100
101 ${BUILD_CC-${CC-gcc}} -o asm_types asm_types.c
102 if ! ./asm_types 
103 then
104     echo "Problem detected with asm_types.h"
105     echo "" > asm_types.h
106 fi
107 rm asm_types.c asm_types
108