OSDN Git Service

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