]> git.ipfire.org Git - thirdparty/e2fsprogs.git/blame - config/parse-types.sh
Fix cross compilation problem in parse-types.sh
[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
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
22if 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>"
25else
26 echo "using generic types"
27fi
29a5deed
TT
28
29rm sed.script
4ea7ea00
TT
30
31cp asm_types.h asm_types.c
32
33cat >> asm_types.c <<EOF
29a5deed
TT
34#include <stdio.h>
35#include <stdlib.h>
b55705e0 36int 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}
114EOF
115
29a5deed 116${BUILD_CC-${CC-gcc}} -o asm_types asm_types.c
318824c1 117if ./asm_types
4ea7ea00 118then
f56aa6e6 119 true
318824c1 120else
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
125fi
126rm asm_types.c asm_types
127