aboutsummaryrefslogtreecommitdiffstats
path: root/packages/autoconf/autoconf-2.59/sizeof_types.patch
blob: 30fd5c1926d02f3c3c4bdeade4aa0712131dc220 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#
# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
#

Index: autoconf-2.59/lib/autoconf/types.m4
===================================================================
--- autoconf-2.59.orig/lib/autoconf/types.m4	2003-05-22 14:05:14.000000000 +0200
+++ autoconf-2.59/lib/autoconf/types.m4	2006-08-06 02:05:02.000000000 +0200
@@ -380,26 +380,66 @@
 # Generic checks.  #
 # ---------------- #
 
+# Backport of AC_CHECK_TARGET_TOOL from autoconf 2.60
+# AC_CHECK_TARGET_TOOL(VARIABLE, PROG-TO-CHECK-FOR, [VALUE-IF-NOT-FOUND], [PATH )
+# ------------------------------------------------------------------------
+# (Use different variables $1 and ac_ct_$1 so that cache vars don't conflict.)
+AC_DEFUN([AC_CHECK_TARGET_TOOL],
+[AC_BEFORE([$0], [AC_CANONICAL_TARGET])dnl
+AC_CHECK_PROG([$1], [$target_alias-$2], [$target_alias-$2], , [$4])
+if test -z "$ac_cv_prog_$1"; then
+  if test "$build" = "$target"; then
+    ac_ct_$1=$$1
+    AC_CHECK_PROG([ac_ct_$1], [$2], [$2], [$3], [$4])
+    $1=ac_ct_$1
+  else
+    $1="$3"
+  fi
+else
+  $1="$ac_cv_prog_$1"
+fi
+])# AC_CHECK_TARGET_TOOL
+
+
+AC_DEFUN([AC_PROG_SIZE],
+[
+  AC_CHECK_TARGET_TOOL([SIZE], [size], [size], [$PATH])
+])
 
 # AC_CHECK_SIZEOF(TYPE, [IGNORED], [INCLUDES = DEFAULT-INCLUDES])
 # ---------------------------------------------------------------
 AC_DEFUN([AC_CHECK_SIZEOF],
-[AS_LITERAL_IF([$1], [],
+[AC_REQUIRE([AC_PROG_SIZE])
+AC_REQUIRE([AC_PROG_AWK])
+ AS_LITERAL_IF([$1], [],
 	       [AC_FATAL([$0: requires literal arguments])])dnl
 AC_CHECK_TYPE([$1], [], [], [$3])
 AC_CACHE_CHECK([size of $1], AS_TR_SH([ac_cv_sizeof_$1]),
-[if test "$AS_TR_SH([ac_cv_type_$1])" = yes; then
-  # The cast to unsigned long works around a bug in the HP C Compiler
-  # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-  # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-  # This bug is HP SR number 8606223364.
-  _AC_COMPUTE_INT([(long) (sizeof ($1))],
-		  [AS_TR_SH([ac_cv_sizeof_$1])],
-		  [AC_INCLUDES_DEFAULT([$3])],
-		  [AC_MSG_FAILURE([cannot compute sizeof ($1), 77])])
+[
+if test "$AS_TR_SH([ac_cv_type_$1])" = yes; then
+	if test "$cross_compiling" = yes; then
+	AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT([$3])],
+			   [extern void dummy($1); static const $1 x[[256]]; dummy(x);])],
+			   [
+			     AS_TR_SH([ac_cv_sizeof_$1])=`$SIZE conftest.$ac_objext | tail -n 1 | $AWK '{print [$]3/256}'`
+			   ],
+			   [
+			     AS_TR_SH([ac_cv_sizeof_$1])=0
+			   ])
+	else
+		# The cast to unsigned long works around a bug in the HP C Compiler
+		# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+		# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+		# This bug is HP SR number 8606223364.
+		_AC_COMPUTE_INT([(long) (sizeof ($1))],
+			[AS_TR_SH([ac_cv_sizeof_$1])],
+			[AC_INCLUDES_DEFAULT([$3])],
+			[AC_MSG_FAILURE([cannot compute sizeof ($1), 77])])
+	fi
 else
   AS_TR_SH([ac_cv_sizeof_$1])=0
-fi])dnl
+fi
+])dnl
 AC_DEFINE_UNQUOTED(AS_TR_CPP(sizeof_$1), $AS_TR_SH([ac_cv_sizeof_$1]),
 		   [The size of a `$1', as computed by sizeof.])
 ])# AC_CHECK_SIZEOF