1114.1.1
by Monty Taylor
Merged InnoDB Plugin 1.0.4 |
1 |
#
|
2 |
# Copyright (c) 2006, 2009, Innobase Oy. All Rights Reserved. |
|
3 |
# |
|
4 |
# This program is free software; you can redistribute it and/or modify it under |
|
5 |
# the terms of the GNU General Public License as published by the Free Software |
|
6 |
# Foundation; version 2 of the License. |
|
7 |
# |
|
8 |
# This program is distributed in the hope that it will be useful, but WITHOUT |
|
9 |
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
|
10 |
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. |
|
11 |
# |
|
12 |
# You should have received a copy of the GNU General Public License along with |
|
13 |
# this program; if not, write to the Free Software Foundation, Inc., 59 Temple |
|
14 |
# Place, Suite 330, Boston, MA 02111-1307 USA |
|
15 |
#
|
|
16 |
||
17 |
AC_DEFUN([AC_INNODB_ACTIONS],[ |
|
18 |
AC_REQUIRE([AC_PROG_LEX]) |
|
19 |
AC_REQUIRE([AC_FUNC_MMAP]) |
|
20 |
||
21 |
AC_CHECK_LIB(rt, aio_read, [innodb_system_libs="-lrt"]) |
|
22 |
AC_SUBST(innodb_system_libs) |
|
23 |
AC_CHECK_HEADERS(aio.h sched.h) |
|
24 |
AC_CHECK_SIZEOF(int, 4) |
|
25 |
AC_CHECK_SIZEOF(long, 4) |
|
26 |
AC_CHECK_SIZEOF(void*, 4) |
|
1192.3.43
by Monty Taylor
Removed many, many checks for functions that do not need to be checked. |
27 |
AC_CHECK_FUNCS(sched_yield fdatasync localtime_r pread) |
1114.1.1
by Monty Taylor
Merged InnoDB Plugin 1.0.4 |
28 |
AC_CHECK_FUNCS([uname munmap memchr getpagesize bzero]) |
29 |
AC_C_BIGENDIAN |
|
30 |
case "$target_os" in |
|
31 |
lin*) |
|
32 |
AM_CFLAGS="$AM_CFLAGS -DUNIV_LINUX";; |
|
33 |
hpux10*) |
|
34 |
AM_CFLAGS="$AM_CFLAGS -DUNIV_MUST_NOT_INLINE -DUNIV_HPUX -DUNIV_HPUX10";; |
|
35 |
hp*) |
|
36 |
AM_CFLAGS="$AM_CFLAGS -DUNIV_MUST_NOT_INLINE -DUNIV_HPUX";; |
|
37 |
aix*) |
|
38 |
AM_CFLAGS="$AM_CFLAGS -DUNIV_AIX";; |
|
39 |
irix*|osf*|sysv5uw7*|openbsd*) |
|
40 |
AM_CFLAGS="$AM_CFLAGS -DUNIV_MUST_NOT_INLINE";; |
|
41 |
*solaris*|*SunOS*) |
|
42 |
# Begin Solaris atomic function checks |
|
1114.1.6
by Monty Taylor
Fixed plugin.ac file. (I hope) |
43 |
AC_CHECK_FUNCS([atomic_cas_ulong atomic_cas_32 \ |
44 |
atomic_cas_64 atomic_add_long], |
|
45 |
[plugin_innodb_have_solaris_atomics=yes], |
|
46 |
[plugin_innodb_have_solaris_atomics=no]) |
|
47 |
|
|
48 |
AS_IF([test "${plugin_innodb_have_solaris_atomics}" = "yes"],[ |
|
49 |
AC_DEFINE([HAVE_SOLARIS_ATOMICS], |
|
50 |
[1], |
|
51 |
[Define to 1 if Solaris supports \ |
|
52 |
atomic functions.]) |
|
53 |
]) |
|
1114.1.1
by Monty Taylor
Merged InnoDB Plugin 1.0.4 |
54 |
### End Solaris atomic function checks |
55 |
AM_CFLAGS="$AM_CFLAGS -DUNIV_SOLARIS";; |
|
56 |
esac |
|
1114.1.6
by Monty Taylor
Fixed plugin.ac file. (I hope) |
57 |
INNODB_DYNAMIC_CFLAGS="-DPANDORA_DYNAMIC_PLUGIN" |
1114.1.1
by Monty Taylor
Merged InnoDB Plugin 1.0.4 |
58 |
case "$target_cpu" in |
59 |
x86_64) |
|
60 |
# The AMD64 ABI forbids absolute addresses in shared libraries |
|
61 |
;; |
|
62 |
*86) |
|
63 |
# Use absolute addresses on IA-32 |
|
64 |
INNODB_DYNAMIC_CFLAGS="$INNODB_DYNAMIC_CFLAGS -prefer-non-pic" |
|
65 |
;; |
|
66 |
esac |
|
67 |
AC_SUBST(INNODB_DYNAMIC_CFLAGS) |
|
1114.1.6
by Monty Taylor
Fixed plugin.ac file. (I hope) |
68 |
|
69 |
AC_CACHE_CHECK([whether pthread_t can be used by GCC atomic builtins], |
|
70 |
[ac_cv_plugin_innodb_have_gcc_atomic],[ |
|
71 |
AC_RUN_IFELSE([
|
|
72 |
AC_LANG_PROGRAM([[
|
|
1114.1.1
by Monty Taylor
Merged InnoDB Plugin 1.0.4 |
73 |
#include <pthread.h>
|
74 |
#include <string.h>
|
|
1114.1.6
by Monty Taylor
Fixed plugin.ac file. (I hope) |
75 |
]],[[ |
1114.1.1
by Monty Taylor
Merged InnoDB Plugin 1.0.4 |
76 |
pthread_t x1;
|
77 |
pthread_t x2;
|
|
78 |
pthread_t x3;
|
|
79 |
||
80 |
memset(&x1, 0x0, sizeof(x1));
|
|
81 |
memset(&x2, 0x0, sizeof(x2));
|
|
82 |
memset(&x3, 0x0, sizeof(x3));
|
|
83 |
||
84 |
__sync_bool_compare_and_swap(&x1, x2, x3);
|
|
1114.1.6
by Monty Taylor
Fixed plugin.ac file. (I hope) |
85 |
]])], |
86 |
[ac_cv_plugin_innodb_have_gcc_atomic=yes], |
|
87 |
[ac_cv_plugin_innodb_have_gcc_atomic=no]) |
|
88 |
]) |
|
89 |
AS_IF([test "${ac_cv_plugin_innodb_have_gcc_atomic}" = "yes"],[ |
|
1114.1.1
by Monty Taylor
Merged InnoDB Plugin 1.0.4 |
90 |
AC_DEFINE([HAVE_ATOMIC_PTHREAD_T], [1], |
91 |
[pthread_t can be used by GCC atomic builtins]) |
|
1114.1.6
by Monty Taylor
Fixed plugin.ac file. (I hope) |
92 |
]) |
93 |
||
94 |
AC_CACHE_CHECK( |
|
95 |
[whether __attribute__ visibility "hidden" is supported], |
|
96 |
[ac_cv_can_use_hidden_],[ |
|
97 |
AC_LANG_PUSH(C++)
|
|
98 |
dnl Must be done once we turn on warnings and such
|
|
99 |
save_CXXFLAGS="${CXXFLAGS}"
|
|
100 |
CXXFLAGS="${AM_CXXFLAGS} ${CXXFLAGS}"
|
|
101 |
AC_LINK_IFELSE([
|
|
102 |
AC_LANG_PROGRAM(
|
|
103 |
[[
|
|
104 |
__attribute__((visibility ("hidden")))
|
|
105 |
void testme() { }
|
|
106 |
]],[[testme()]] |
|
107 |
)], |
|
108 |
[ac_cv_can_use_hidden_=yes], |
|
109 |
[ac_cv_can_use_hidden_=no]) |
|
110 |
CXXFLAGS="${save_CXXFLAGS}" |
|
111 |
AC_LANG_POP()]) |
|
112 |
AS_IF([test "$ac_cv_can_use_hidden_" = "yes"],[ |
|
113 |
AC_DEFINE(HAVE_ATTR_HIDDEN, 1,
|
|
114 |
[Define to 1 if you have support for __attribute__((visibility("hidden")))]) |
|
115 |
]) |
|
1114.1.1
by Monty Taylor
Merged InnoDB Plugin 1.0.4 |
116 |
|
117 |
# Try using solaris atomics on SunOS if GCC atomics are not available |
|
1114.1.6
by Monty Taylor
Fixed plugin.ac file. (I hope) |
118 |
AS_IF([test "${ac_cv_plugin_innodb_have_gcc_atomic}" = "yes"],[ |
119 |
AC_MSG_NOTICE([no need to check pthread_t size]) |
|
120 |
],[ |
|
121 |
AS_IF([test "${ac_cv_plugin_innodb_have_solaris_atomics}" = "yes"],[ |
|
122 |
AC_CACHE_CHECK([checking if pthread_t size is integral], |
|
123 |
[ac_cv_plugin_innodb_pthread_integral],[ |
|
124 |
AC_COMPILE_IFELSE([
|
|
125 |
AC_LANG_PROGRAM([[
|
|
1114.1.1
by Monty Taylor
Merged InnoDB Plugin 1.0.4 |
126 |
#include <pthread.h>
|
1114.1.6
by Monty Taylor
Fixed plugin.ac file. (I hope) |
127 |
]],[[ |
1114.1.1
by Monty Taylor
Merged InnoDB Plugin 1.0.4 |
128 |
pthread_t x = 0;
|
1114.1.6
by Monty Taylor
Fixed plugin.ac file. (I hope) |
129 |
]])],[ |
130 |
ac_cv_plugin_innodb_pthread_integral=yes
|
|
131 |
],[ |
|
132 |
ac_cv_plugin_innodb_pthread_integral=no
|
|
133 |
]) |
|
134 |
]) |
|
135 |
AS_IF([test "${ac_cv_plugin_innodb_pthread_integral}" = "yes"],[ |
|
136 |
AC_DEFINE([HAVE_ATOMIC_PTHREAD_T], [1], |
|
1114.1.1
by Monty Taylor
Merged InnoDB Plugin 1.0.4 |
137 |
[pthread_t can be used by solaris atomics]) |
1114.1.6
by Monty Taylor
Fixed plugin.ac file. (I hope) |
138 |
]) |
139 |
# size of pthread_t is needed for typed solaris atomics |
|
140 |
AC_CHECK_SIZEOF([pthread_t], [], [ |
|
141 |
#include <pthread.h>
|
|
1114.1.1
by Monty Taylor
Merged InnoDB Plugin 1.0.4 |
142 |
]) |
143 |
]) |
|
1114.1.6
by Monty Taylor
Fixed plugin.ac file. (I hope) |
144 |
]) |
145 |
||
1114.1.1
by Monty Taylor
Merged InnoDB Plugin 1.0.4 |
146 |
# Check for x86 PAUSE instruction |
1114.1.6
by Monty Taylor
Fixed plugin.ac file. (I hope) |
147 |
AC_CACHE_CHECK([for x86 PAUSE instruction],[ac_cv_plugin_innodb_has_pause],[ |
1114.1.1
by Monty Taylor
Merged InnoDB Plugin 1.0.4 |
148 |
# We have to actually try running the test program, because of a bug
|
149 |
# in Solaris on x86_64, where it wrongly reports that PAUSE is not
|
|
150 |
# supported when trying to run an application. See
|
|
151 |
# http://bugs.opensolaris.org/bugdatabase/printableBug.do?bug_id=6478684
|
|
152 |
# We use ib_ prefix to avoid collisoins if this code is added to
|
|
153 |
# mysql's configure.in.
|
|
1114.1.8
by Monty Taylor
Fixed Pause test. |
154 |
dnl Must be done once we turn on warnings and such
|
155 |
save_CFLAGS="${CFLAGS}"
|
|
156 |
CFLAGS="${AM_CFLAGS} ${CFLAGS}"
|
|
1114.1.6
by Monty Taylor
Fixed plugin.ac file. (I hope) |
157 |
AC_RUN_IFELSE([AC_LANG_PROGRAM([[]],[[ |
1114.1.1
by Monty Taylor
Merged InnoDB Plugin 1.0.4 |
158 |
__asm__ __volatile__ ("pause");
|
1114.1.6
by Monty Taylor
Fixed plugin.ac file. (I hope) |
159 |
]])],[ |
160 |
ac_cv_plugin_innodb_has_pause=yes
|
|
161 |
],[ |
|
162 |
ac_cv_plugin_innodb_has_pause=no
|
|
163 |
]) |
|
164 |
]) |
|
1114.1.8
by Monty Taylor
Fixed Pause test. |
165 |
CFLAGS="${save_CFLAGS}" |
1114.1.6
by Monty Taylor
Fixed plugin.ac file. (I hope) |
166 |
AS_IF([test "${ac_cv_plugin_innodb_has_pause}" = "yes"],[ |
167 |
AC_DEFINE([IB_HAVE_PAUSE_INSTRUCTION], [1], |
|
168 |
[Does x86 PAUSE instruction exist]) |
|
169 |
]) |
|
170 |
||
171 |
]) |
|
1114.1.1
by Monty Taylor
Merged InnoDB Plugin 1.0.4 |
172 |
|
173 |
AC_INNODB_ACTIONS
|
|
174 |
# vim: set ft=config: |