]> git.ipfire.org Git - thirdparty/e2fsprogs.git/blame - config/parse-types.sh
libext2fs: don't error out when punching a totally sparse file
[thirdparty/e2fsprogs.git] / config / parse-types.sh
CommitLineData
4ea7ea00
TT
1#!/bin/sh
2
29a5deed 3cat > sed.script << "EOF"
4ea7ea00
TT
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
318824c1
TT
11if test -z "$CC"; then
12 CC=gcc
13fi
14
15if test -z "$CPP"; then
16 CPP="$CC -E"
17fi
18
19echo '#include <asm/types.h>' | $CPP - | \
20 sed -f sed.script | grep '^#' > asm_types.h
29a5deed
TT
21
22rm sed.script
4ea7ea00
TT
23
24cp asm_types.h asm_types.c
25
26cat >> asm_types.c <<EOF
29a5deed
TT
27#include <stdio.h>
28#include <stdlib.h>
b55705e0 29int main(int argc, char **argv)
4ea7ea00
TT
30{
31#ifdef __U8_TYPEDEF
32 if (sizeof(__U8_TYPEDEF) != 1) {
33 printf("Sizeof(__U8__TYPEDEF) is %d should be 1\n",
da489dd2 34 (int) sizeof(__U8_TYPEDEF));
4ea7ea00
TT
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",
da489dd2 43 (int) sizeof(__S8_TYPEDEF));
4ea7ea00
TT
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",
da489dd2 52 (int) sizeof(__U16_TYPEDEF));
4ea7ea00
TT
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",
da489dd2 61 (int) sizeof(__S16_TYPEDEF));
4ea7ea00
TT
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",
da489dd2 71 (int) sizeof(__U32_TYPEDEF));
4ea7ea00
TT
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",
da489dd2 80 (int) sizeof(__S32_TYPEDEF));
4ea7ea00
TT
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",
da489dd2 90 (int) sizeof(__U64_TYPEDEF));
4ea7ea00
TT
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",
da489dd2 99 (int) sizeof(__S64_TYPEDEF));
4ea7ea00
TT
100 exit(1);
101 }
102#else
103#warning __S64_TYPEDEF not defined
104#endif
b55705e0 105 return 0;
4ea7ea00
TT
106}
107EOF
108
29a5deed 109${BUILD_CC-${CC-gcc}} -o asm_types asm_types.c
318824c1 110if ./asm_types
4ea7ea00 111then
f56aa6e6 112 true
318824c1 113else
4ea7ea00
TT
114 echo "Problem detected with asm_types.h"
115 echo "" > asm_types.h
116fi
117rm asm_types.c asm_types
118