Whamcloud - gitweb
e2fsck: add support for dirdata feature
[tools/e2fsprogs.git] / config / parse-types.sh
index 0887054..24d2a99 100755 (executable)
@@ -16,8 +16,15 @@ if test -z "$CPP"; then
     CPP="$CC -E"
 fi
 
-echo '#include <asm/types.h>' | $CPP - | \
-    sed -f sed.script | grep '^#' > asm_types.h
+/bin/echo -n "checking for __uNN types... "
+# can't check [ -f /usr/include/asm/types.h ] directly, since
+# the include path might be different if cross-compiling
+if echo '#include <asm/types.h>' | $CPP - 2> parse-types.log | \
+       sed -f sed.script | grep '^#' > asm_types.h; then
+       echo "using <asm/types.h>"
+else
+       echo "using generic types"
+fi
 
 rm sed.script
 
@@ -26,93 +33,95 @@ cp asm_types.h asm_types.c
 cat >> asm_types.c <<EOF
 #include <stdio.h>
 #include <stdlib.h>
-main(int argc, char **argv)
+int main(int argc, char **argv)
 {
 #ifdef __U8_TYPEDEF
        if (sizeof(__U8_TYPEDEF) != 1) {
                printf("Sizeof(__U8__TYPEDEF) is %d should be 1\n", 
-                      sizeof(__U8_TYPEDEF));
+                      (int) sizeof(__U8_TYPEDEF));
                exit(1);
        }
-#else
+#elif defined(__linux__)
 #warning __U8_TYPEDEF not defined
 #endif
 #ifdef __S8_TYPEDEF
        if (sizeof(__S8_TYPEDEF) != 1) {
                printf("Sizeof(_S8__TYPEDEF) is %d should be 1\n", 
-                      sizeof(__S8_TYPEDEF));
+                      (int) sizeof(__S8_TYPEDEF));
                exit(1);
        }
-#else
+#elif defined(__linux__)
 #warning __S8_TYPEDEF not defined
 #endif
 #ifdef __U16_TYPEDEF
        if (sizeof(__U16_TYPEDEF) != 2) {
                printf("Sizeof(__U16__TYPEDEF) is %d should be 2\n", 
-                      sizeof(__U16_TYPEDEF));
+                      (int) sizeof(__U16_TYPEDEF));
                exit(1);
        }
-#else
+#elif defined(__linux__)
 #warning __U16_TYPEDEF not defined
 #endif
 #ifdef __S16_TYPEDEF
        if (sizeof(__S16_TYPEDEF) != 2) {
                printf("Sizeof(__S16__TYPEDEF) is %d should be 2\n", 
-                      sizeof(__S16_TYPEDEF));
+                      (int) sizeof(__S16_TYPEDEF));
                exit(1);
        }
-#else
+#elif defined(__linux__)
 #warning __S16_TYPEDEF not defined
 #endif
 
 #ifdef __U32_TYPEDEF
        if (sizeof(__U32_TYPEDEF) != 4) {
                printf("Sizeof(__U32__TYPEDEF) is %d should be 4\n", 
-                      sizeof(__U32_TYPEDEF));
+                      (int) sizeof(__U32_TYPEDEF));
                exit(1);
        }
-#else
+#elif defined(__linux__)
 #warning __U32_TYPEDEF not defined
 #endif
 #ifdef __S32_TYPEDEF
        if (sizeof(__S32_TYPEDEF) != 4) {
                printf("Sizeof(__S32__TYPEDEF) is %d should be 4\n", 
-                      sizeof(__S32_TYPEDEF));
+                      (int) sizeof(__S32_TYPEDEF));
                exit(1);
        }
-#else
+#elif defined(__linux__)
 #warning __S32_TYPEDEF not defined
 #endif
 
 #ifdef __U64_TYPEDEF
        if (sizeof(__U64_TYPEDEF) != 8) {
                printf("Sizeof(__U64__TYPEDEF) is %d should be 8\n", 
-                      sizeof(__U64_TYPEDEF));
+                      (int) sizeof(__U64_TYPEDEF));
                exit(1);
        }
-#else
+#elif defined(__linux__)
 #warning __U64_TYPEDEF not defined
 #endif
 #ifdef __S64_TYPEDEF
        if (sizeof(__S64_TYPEDEF) != 8) {
                printf("Sizeof(__S64__TYPEDEF) is %d should be 8\n", 
-                      sizeof(__S64_TYPEDEF));
+                      (int) sizeof(__S64_TYPEDEF));
                exit(1);
        }
-#else
+#elif defined(__linux__)
 #warning __S64_TYPEDEF not defined
 #endif
-       exit(0);
+       return 0;
 }
 EOF
 
 ${BUILD_CC-${CC-gcc}} -o asm_types asm_types.c
 if ./asm_types
 then
-    /bin/true
+    true
 else
-    echo "Problem detected with asm_types.h"
-    echo "" > asm_types.h
+    if [ "${CROSS_COMPILE}" != "1" ]; then
+       echo "Problem detected with asm_types.h"
+       echo "" > asm_types.h
+    fi
 fi
 rm asm_types.c asm_types