summaryrefslogtreecommitdiff
blob: a86e745b6dbb177d6b27340a425c32af826e2e26 (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
already sent upstream

From ceff276b495884e0b6904814f2bcc93dc98da132 Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vapier@gentoo.org>
Date: Thu, 15 Dec 2011 14:16:50 -0500
Subject: [PATCH] add compile-only tests for shift sizes

We can take advantage of array limits to calculate the shift size
required for constants.  If we compile to a value we don't like,
then the array limit will be -1 and trigger a compile error.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 configure.in |   15 ++++++++++++++-
 1 files changed, 14 insertions(+), 1 deletions(-)

diff --git a/configure.in b/configure.in
index 45cb88a..15c4d7d 100644
--- a/configure.in
+++ b/configure.in
@@ -1331,7 +1331,20 @@ AC_CACHE_CHECK(shift offset of $1, $2,
  ],
  [$2=`cat $conftestoffset`],
  [$2=-1],
- [AC_MSG_RESULT(please determine $1_SHIFT manually)]
+ [
+  i=0
+  $2=-1
+  while test $i -lt 64 -a $$2 -eq -1; do
+   AC_TRY_COMPILE([
+   #include <errno.h>
+   #include <stdio.h>
+   #include <termios.h>
+   #include <string.h>
+   ],[char c[(($1 >> $i) & 1) - 1];],
+   [$2=$i])
+   i=$(( $i + 1 ))
+  done
+ ]
 )
  LIBS="$LIBS1"])
 AC_DEFINE_UNQUOTED($1_SHIFT, ${$2})
-- 
1.7.6.1

From a3e300ce4cde7e326ecffe1035017874d85d796e Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vapier@gentoo.org>
Date: Thu, 15 Dec 2011 15:00:37 -0500
Subject: [PATCH] let compiler handle ISPEED_OFFSET when cross-compiling

While I can't devise a compile-only test that'll calculate the offset
(which doesn't involve inspecting the compiled object file), at least
gcc is good enough with a offsetof()-like value.  So use that in the
cross-compile fallback case.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 configure.in |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/configure.in b/configure.in
index 15c4d7d..87e1029 100644
--- a/configure.in
+++ b/configure.in
@@ -918,11 +918,11 @@ AC_CACHE_VAL(ac_cv_ispeed_offset,
  ],
  [ac_cv_ispeed_offset=`cat $conftestspeedoff`],
  [ac_cv_ispeed_offset=-1],
- [ac_cv_ispeed_offset=-1]	#!
+ [ac_cv_ispeed_offset="((unsigned long)&((struct termios *)0)->c_ispeed / sizeof(speed_t))"]	#!
 )])
 LIBS="$LIBS1"
 AC_MSG_RESULT($ac_cv_ispeed_offset)
- if test $ac_cv_ispeed_offset -ge 0; then
+ if test "$ac_cv_ispeed_offset" != "-1"; then
    AC_DEFINE_UNQUOTED(ISPEED_OFFSET, $ac_cv_ispeed_offset)
  fi
 fi
-- 
1.7.6.1