blob: 8cad0a1d7101b5c61e9f57f376c8fe427e9c4373 [file] [log] [blame]
David Reissfeab7732009-03-30 22:52:44 +00001#
2# Licensed to the Apache Software Foundation (ASF) under one
3# or more contributor license agreements. See the NOTICE file
4# distributed with this work for additional information
5# regarding copyright ownership. The ASF licenses this file
6# to you under the Apache License, Version 2.0 (the
7# "License"); you may not use this file except in compliance
8# with the License. You may obtain a copy of the License at
9#
10# http://www.apache.org/licenses/LICENSE-2.0
11#
12# Unless required by applicable law or agreed to in writing,
13# software distributed under the License is distributed on an
14# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15# KIND, either express or implied. See the License for the
16# specific language governing permissions and limitations
17# under the License.
18#
19
T Jake Luciani03ec1e42011-01-27 02:53:57 +000020AC_PREREQ(2.65)
Marc Slemkob09f5882006-08-23 22:03:34 +000021
Bryan Duxburyc2165562011-01-07 18:45:29 +000022AC_INIT([thrift], [0.7.0-dev])
Marc Slemkob09f5882006-08-23 22:03:34 +000023
24AC_CONFIG_AUX_DIR([.])
25
26AM_INIT_AUTOMAKE
Bryan Duxburyb005c1f2011-02-09 17:05:11 +000027PKG_PROG_PKG_CONFIG
Marc Slemkob09f5882006-08-23 22:03:34 +000028
David Reissd6832192007-09-05 00:47:32 +000029AC_ARG_VAR([PY_PREFIX], [Prefix for installing Python modules.
30 (Normal --prefix is ignored for Python because
31 Python has different conventions.)
32 Default = "/usr"])
David Reisscdd6f3c2008-03-04 21:10:29 +000033AS_IF([test "x$PY_PREFIX" = x], [PY_PREFIX="/usr"])
David Reissd6832192007-09-05 00:47:32 +000034
David Reissf0c21a72008-07-11 01:26:16 +000035AC_ARG_VAR([JAVA_PREFIX], [Prefix for installing the Java lib jar.
36 (Normal --prefix is ignored for Java because
Christian Lavoieafc6d8f2011-02-20 02:39:19 +000037 Java has different conventions.)
David Reissf0c21a72008-07-11 01:26:16 +000038 Default = "/usr/local/lib"])
39AS_IF([test "x$JAVA_PREFIX" = x], [JAVA_PREFIX="/usr/local/lib"])
David Reiss832b2622007-12-28 18:25:33 +000040
Bryan Duxbury3f0b5262010-05-12 21:31:58 +000041AC_ARG_VAR([RUBY_PREFIX], [Prefix for installing Ruby modules.
42 (Normal --prefix is ignored for Ruby because
43 Ruby has different conventions.)
44 Default = none, let ruby setup decide])
45
Bryan Duxbury6a681872010-05-02 22:39:31 +000046AC_ARG_VAR([PHP_PREFIX], [Prefix for installing PHP modules.
47 (Normal --prefix is ignored for PHP because
48 PHP has different conventions.)
49 Default = "/usr/lib/php"])
50AS_IF([test "x$PHP_PREFIX" = x], [PHP_PREFIX="/usr/lib/php"])
51
Bryan Duxbury89200e12010-08-25 17:09:02 +000052AC_ARG_VAR([PHP_CONFIG_PREFIX],
53 [Prefix for installing PHP extension module .ini file.
54 (Normal --prefix is ignored for PHP because PHP has
55 different conventions.)
56 Default = "/etc/php.d"])
57AS_IF([test "x$PHP_CONFIG_PREFIX" = x], [PHP_CONFIG_PREFIX="/etc/php.d"])
58
David Reissc07057e2010-06-11 17:57:32 +000059AC_ARG_VAR([PERL_PREFIX], [Prefix for installing Perl modules.
60 (Normal --prefix is ignored for Perl because
61 Perl has different conventions.)
62 Default = "/usr/local/lib"])
63AS_IF([test "x$PERL_PREFIX" = x], [PERL_PREFIX="/usr/local"])
64
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +000065AC_ARG_VAR([CABAL_CONFIGURE_FLAGS],
66 [Extra flags to pass to cabal: "cabal Setup.lhs configure $CABAL_CONFIGURE_FLAGS".
67 (Typically used to set --user or force --global.)])
68
69AC_SUBST(CABAL_CONFIGURE_FLAGS)
70
Christian Lavoieafc6d8f2011-02-20 02:39:19 +000071AC_ARG_VAR([GOROOT], [Prefix for the Go source directory.
72 (Normal --prefix is ignored for Go because
73 Go has different conventions.)
74 Default = "/usr/local/share/go"])
75AS_IF([test "x$GOROOT" = x], [GOROOT="/usr/local/share/go"])
76
77AC_ARG_VAR([GOARCH], [Architecture default for Go.
78 Default = "amd64"])
79AS_IF([test "x$GOARCH" = x], [GOARCH="amd64"])
80
81AC_ARG_VAR([GOBIN], [Binary directory for Go.
82 Default = "/usr/local/bin"])
83AS_IF([test "x$GOBIN" = x], [GOBIN="/usr/local/bin"])
84
David Reiss832b2622007-12-28 18:25:33 +000085AC_PROG_CC
86AC_PROG_CPP
87AC_PROG_CXX
88AC_PROG_INSTALL
89AC_PROG_LIBTOOL
90AC_PROG_MAKE_SET
91AC_PROG_YACC
92AC_PROG_LEX
93AM_PROG_LEX
David Reiss7ed4b982008-02-11 23:24:47 +000094AC_PROG_LN_S
95AC_PROG_MKDIR_P
Christian Lavoieafc6d8f2011-02-20 02:39:19 +000096AC_PROG_AWK
97AC_PROG_RANLIB
David Reiss832b2622007-12-28 18:25:33 +000098
99AC_LANG([C++])
David Reiss832b2622007-12-28 18:25:33 +0000100
David Reissea4c9812010-08-31 16:51:21 +0000101AX_THRIFT_LIB(cpp, [C++], yes)
102have_cpp=no
103if test "$with_cpp" = "yes"; then
David Reissef5e81b2010-08-31 16:51:28 +0000104 AX_BOOST_BASE([1.33.1])
105 if test "x$succeeded" == "xyes" ; then
106 have_cpp="yes"
107 fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000108
David Reissea4c9812010-08-31 16:51:21 +0000109 AX_LIB_EVENT([1.0])
110 have_libevent=$success
David Reiss832b2622007-12-28 18:25:33 +0000111
David Reissea4c9812010-08-31 16:51:21 +0000112 AX_LIB_ZLIB([1.2.3])
113 have_zlib=$success
114fi
115AM_CONDITIONAL([WITH_CPP], [test "$have_cpp" = "yes"])
116AM_CONDITIONAL([AMX_HAVE_LIBEVENT], [test "$have_libevent" = "yes"])
117AM_CONDITIONAL([AMX_HAVE_ZLIB], [test "$have_zlib" = "yes"])
David Reiss832b2622007-12-28 18:25:33 +0000118
Roger Meier213a6642010-10-27 12:30:11 +0000119AX_THRIFT_LIB(c_glib, [C (GLib)], no)
120if test "$with_c_glib" = "yes"; then
121 PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.0], have_glib2=yes, have_glib2=no)
122 PKG_CHECK_MODULES([GOBJECT], [gobject-2.0 >= 2.0], have_gobject2=yes, have_gobject2=no)
123 if test "$have_glib2" = "yes" -a "$have_gobject2" = "yes" ; then
124 have_c_glib="yes"
125 fi
126fi
127AM_CONDITIONAL(WITH_C_GLIB, [test "$have_glib2" = "yes" -a "$have_gobject2" = "yes"])
128
David Reiss520b5ee2008-03-02 07:00:26 +0000129AX_THRIFT_LIB(csharp, [C#], yes)
130if test "$with_csharp" = "yes"; then
David Reissd831a212009-02-13 03:09:52 +0000131 PKG_CHECK_MODULES(MONO, mono >= 2.0.0, net_3_5=yes, net_3_5=no)
132 PKG_CHECK_MODULES(MONO, mono >= 1.2.4, have_mono=yes, have_mono=no)
David Reiss5cc3ba82010-08-31 16:51:20 +0000133 if test "$have_mono" = "yes" ; then
134 have_csharp="yes"
135 fi
David Reiss520b5ee2008-03-02 07:00:26 +0000136fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000137AM_CONDITIONAL(WITH_MONO, [test "$have_csharp" = "yes"])
David Reissd831a212009-02-13 03:09:52 +0000138AM_CONDITIONAL(NET_2_0, [test "$net_3_5" = "no"])
David Reiss1fdb5922008-02-06 22:10:12 +0000139
David Reiss62d39812008-03-02 07:00:22 +0000140AX_THRIFT_LIB(java, [Java], yes)
141if test "$with_java" = "yes"; then
David Reissd9cdf422009-03-13 21:25:29 +0000142 AX_JAVAC_AND_JAVA
Bryan Duxbury38bab122010-08-12 00:27:14 +0000143 AC_PATH_PROG([ANT], [ant])
Bryan Duxburyc27cda52009-08-14 20:04:15 +0000144 AX_CHECK_JAVA_CLASS(org.slf4j.Logger)
145 have_slf4j="$success"
146 AX_CHECK_JAVA_CLASS(org.slf4j.impl.SimpleLogger)
147 have_slf4j_simple="$success"
David Reissfdfcebd2009-05-22 19:50:29 +0000148 AX_CHECK_JAVA_CLASS(org.apache.commons.lang.builder.HashCodeBuilder)
149 have_hashcode="$success"
Bryan Duxburyc27cda52009-08-14 20:04:15 +0000150 if test "x$have_slf4j_simple" = "xyes" && test "x$have_slf4j" = "xyes" && test "x$have_hashcode" = "xyes" ; then
David Reiss4ca0c8e2009-05-12 23:16:55 +0000151 ANT_FLAGS="$ANT_FLAGS -Dnoivy="
152 fi
David Reissfff84d12009-05-22 19:50:33 +0000153 AC_SUBST(CLASSPATH)
David Reiss4ca0c8e2009-05-12 23:16:55 +0000154 AC_SUBST(ANT_FLAGS)
David Reiss5cc3ba82010-08-31 16:51:20 +0000155 if test "x$JAVAC" != "x" && test "x$JAVAC" != "x" && test "x$ANT" != "x" ; then
156 have_java="yes"
157 fi
David Reiss62d39812008-03-02 07:00:22 +0000158fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000159AM_CONDITIONAL([WITH_JAVA], [test "$have_java" = "yes"])
David Reiss1fdb5922008-02-06 22:10:12 +0000160
Christopher Pirob6f18c22008-03-04 07:09:12 +0000161AX_THRIFT_LIB(erlang, [Erlang], yes)
162if test "$with_erlang" = "yes"; then
David Reiss9e2fd792010-05-18 16:52:48 +0000163 AC_ERLANG_PATH_ERL
164 AC_ERLANG_PATH_ERLC
David Reiss31e1b6e2010-08-24 20:45:24 +0000165 if test -n "$ERLC" ; then
166 AC_ERLANG_SUBST_LIB_DIR
167 # Install into the detected Erlang directory instead of $libdir/erlang/lib
168 ERLANG_INSTALL_LIB_DIR="$ERLANG_LIB_DIR"
169 AC_ERLANG_SUBST_INSTALL_LIB_SUBDIR(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
170 fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000171 if test -n "$ERL" -a -n "$ERLC" ; then
172 have_erlang="yes"
173 fi
Christopher Pirob6f18c22008-03-04 07:09:12 +0000174fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000175AM_CONDITIONAL(WITH_ERLANG, [test "$have_erlang" = "yes"])
Christopher Pirob6f18c22008-03-04 07:09:12 +0000176
David Reiss5cc3ba82010-08-31 16:51:20 +0000177AX_THRIFT_LIB(python, [Python], yes)
178if test "$with_python" = "yes"; then
David Reiss1a140912008-06-11 01:16:37 +0000179 AM_PATH_PYTHON(2.4,, :)
David Reiss5cc3ba82010-08-31 16:51:20 +0000180 if test "x$PYTHON" != "x" && test "x$PYTHON" != "x:" ; then
181 have_python="yes"
182 fi
David Reiss1a140912008-06-11 01:16:37 +0000183fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000184AM_CONDITIONAL(WITH_PYTHON, [test "$have_python" = "yes"])
David Reiss1a140912008-06-11 01:16:37 +0000185
Roger Meier50e43492010-10-08 17:46:06 +0000186AC_PATH_PROG([TRIAL], [trial])
187
T Jake Luciani1952e542009-02-01 04:47:30 +0000188AX_THRIFT_LIB(perl, [Perl], yes)
189if test "$with_perl" = "yes"; then
190 AC_PATH_PROG([PERL], [perl])
David Reissdcc7e9b2010-08-31 16:51:22 +0000191 if test -n "$PERL" ; then
192 AC_PROG_PERL_MODULES([Bit::Vector], success="yes", success="no")
193 have_perl_bit_vector="$success"
Bryan Duxbury12373692010-08-19 05:23:59 +0000194 fi
David Reissdcc7e9b2010-08-31 16:51:22 +0000195 if test -n "$PERL" -a "$have_perl_bit_vector" = "yes" ; then
David Reiss5cc3ba82010-08-31 16:51:20 +0000196 have_perl="yes"
197 fi
T Jake Luciani1952e542009-02-01 04:47:30 +0000198fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000199AM_CONDITIONAL(WITH_PERL, [test "$have_perl" = "yes"])
T Jake Luciani1952e542009-02-01 04:47:30 +0000200
Bryan Duxbury6a681872010-05-02 22:39:31 +0000201AX_THRIFT_LIB(php, [PHP], yes)
202if test "$with_php" = "yes"; then
203 AC_PATH_PROG([PHP], [php])
David Reiss5cc3ba82010-08-31 16:51:20 +0000204 if test -n "$PHP" ; then
205 have_php="yes"
206 fi
Bryan Duxbury6a681872010-05-02 22:39:31 +0000207fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000208AM_CONDITIONAL(WITH_PHP, [test "$have_php" = "yes"])
Bryan Duxbury6a681872010-05-02 22:39:31 +0000209
Bryan Duxbury89200e12010-08-25 17:09:02 +0000210AX_THRIFT_LIB(php_extension, [PHP_EXTENSION], yes)
211if test "$with_php_extension" = "yes"; then
212 AC_PATH_PROG([PHP_CONFIG], [php-config])
Anthony F. Molinaroddcf32a2010-10-05 16:45:50 +0000213 if test -n "$PHP_CONFIG" ; then
214 AC_CONFIG_SUBDIRS([lib/php/src/ext/thrift_protocol])
215 have_php_extension="yes"
216 fi
Bryan Duxbury89200e12010-08-25 17:09:02 +0000217fi
Anthony F. Molinaroddcf32a2010-10-05 16:45:50 +0000218AM_CONDITIONAL(WITH_PHP_EXTENSION, [test "$have_php_extension" = "yes"])
Bryan Duxbury89200e12010-08-25 17:09:02 +0000219
Kevin Clark4bd89162008-07-08 00:47:49 +0000220AX_THRIFT_LIB(ruby, [Ruby], yes)
David Reiss5cc3ba82010-08-31 16:51:20 +0000221have_ruby=no
Kevin Clark4bd89162008-07-08 00:47:49 +0000222if test "$with_ruby" = "yes"; then
223 AC_PATH_PROG([RUBY], [ruby])
Bryan Duxburyec473582009-04-07 16:31:04 +0000224 AC_PATH_PROG([RSPEC], [spec])
David Reiss5cc3ba82010-08-31 16:51:20 +0000225 if test "x$RUBY" != "x" ; then
226 have_ruby="yes"
227 fi
Kevin Clark4bd89162008-07-08 00:47:49 +0000228fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000229AM_CONDITIONAL(WITH_RUBY, [test "$have_ruby" = "yes"])
230AM_CONDITIONAL(HAVE_RSPEC, [test "x$RSPEC" != "x"])
Bryan Duxburyec473582009-04-07 16:31:04 +0000231
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000232AX_THRIFT_LIB(haskell, [Haskell], yes)
233have_haskell=no
234RUNHASKELL=true
Bryan Duxburyc6574472010-10-06 00:12:33 +0000235CABAL=true
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000236if test "$with_haskell" = "yes"; then
Bryan Duxburyc6574472010-10-06 00:12:33 +0000237 AC_PATH_PROG([CABAL], [cabal])
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000238 AC_PATH_PROG([RUNHASKELL], [runhaskell])
Bryan Duxburyc6574472010-10-06 00:12:33 +0000239 if test "x$CABAL" != "x" -a "x$RUNHASKELL" != "x"; then
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000240 have_haskell="yes"
241 else
242 RUNHASKELL=true
Bryan Duxburyc6574472010-10-06 00:12:33 +0000243 CABAL=true
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000244 fi
245fi
Bryan Duxburyc6574472010-10-06 00:12:33 +0000246AC_SUBST(CABAL)
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000247AC_SUBST(RUNHASKELL)
248AM_CONDITIONAL(WITH_HASKELL, [test "$have_haskell" = "yes"])
Kevin Clark4bd89162008-07-08 00:47:49 +0000249
Christian Lavoieafc6d8f2011-02-20 02:39:19 +0000250AX_THRIFT_LIB(go, [Go], yes)
251if test "$with_go" = "yes"; then
252 case X"$GOARCH" in
253 Xamd64)
254 GOARCH_NUM=6
255 ;;
256 X386)
257 GOARCH_NUM=8
258 ;;
259 Xarm)
260 GOARCH_NUM=5
261 ;;
262 *)
263 GOARCH_NUM=6
264 ;;
265 esac
266 GO_C=${GOBIN}/${GOARCH_NUM}g
267 GO_L=${GOBIN}/${GOARCH_NUM}l
268 GOMAKE=${GOBIN}/gomake
269 GOINSTALL=${GOBIN}/goinstall
270 AC_PATH_PROG([GO_C], [${GOARCH_NUM}g])
271 AC_PATH_PROG([GO_L], [${GOARCH_NUM}l])
272 AC_PATH_PROG([GOMAKE], [gomake])
273 AC_PATH_PROG([GOINSTALL], [goinstall])
274 if [[ -x "$GO_C" -a -x "$GO_L" -a -x "$GOMAKE" -a -x "$GOINSTALL" ]] ; then
275 have_go="yes"
276 fi
277fi
278AM_CONDITIONAL(WITH_GO, [test "$have_go" = "yes"])
279
David Reiss832b2622007-12-28 18:25:33 +0000280AC_C_CONST
281AC_C_INLINE
282AC_C_VOLATILE
283
284AC_HEADER_STDBOOL
285AC_HEADER_STDC
286AC_HEADER_TIME
Christian Lavoieafc6d8f2011-02-20 02:39:19 +0000287AC_HEADER_SYS_WAIT
288AC_TYPE_SIGNAL
David Reiss832b2622007-12-28 18:25:33 +0000289AC_CHECK_HEADERS([arpa/inet.h])
Bryan Duxbury184d2622010-08-17 17:43:58 +0000290AC_CHECK_HEADERS([sys/param.h])
David Reiss832b2622007-12-28 18:25:33 +0000291AC_CHECK_HEADERS([fcntl.h])
292AC_CHECK_HEADERS([inttypes.h])
David Reiss7ed4b982008-02-11 23:24:47 +0000293AC_CHECK_HEADERS([limits.h])
David Reiss832b2622007-12-28 18:25:33 +0000294AC_CHECK_HEADERS([netdb.h])
295AC_CHECK_HEADERS([netinet/in.h])
296AC_CHECK_HEADERS([pthread.h])
297AC_CHECK_HEADERS([stddef.h])
David Reissd7a16f42008-02-19 22:47:29 +0000298AC_CHECK_HEADERS([stdlib.h])
David Reiss832b2622007-12-28 18:25:33 +0000299AC_CHECK_HEADERS([sys/socket.h])
300AC_CHECK_HEADERS([sys/time.h])
301AC_CHECK_HEADERS([unistd.h])
302AC_CHECK_HEADERS([libintl.h])
303AC_CHECK_HEADERS([malloc.h])
304
305AC_CHECK_LIB(pthread, pthread_create)
David Reisse4ca1792009-05-21 02:28:19 +0000306dnl NOTE(dreiss): I haven't been able to find any really solid docs
307dnl on what librt is and how it fits into various Unix systems.
308dnl My best guess is that it is where glibc stashes its implementation
309dnl of the POSIX Real-Time Extensions. This seems necessary on Linux,
310dnl and we haven't yet found a system where this is a problem.
311AC_CHECK_LIB(rt, clock_gettime)
David Reiss9b903442009-10-21 05:51:28 +0000312AC_CHECK_LIB(socket, setsockopt)
David Reiss832b2622007-12-28 18:25:33 +0000313
314AC_TYPE_INT16_T
315AC_TYPE_INT32_T
316AC_TYPE_INT64_T
317AC_TYPE_INT8_T
318AC_TYPE_MODE_T
319AC_TYPE_OFF_T
320AC_TYPE_SIZE_T
David Reiss847a2942008-04-21 18:07:43 +0000321AC_TYPE_SSIZE_T
David Reiss832b2622007-12-28 18:25:33 +0000322AC_TYPE_UINT16_T
323AC_TYPE_UINT32_T
324AC_TYPE_UINT64_T
325AC_TYPE_UINT8_T
David Reiss33fc5ad2008-05-09 07:17:34 +0000326AC_CHECK_TYPES([ptrdiff_t], [], [exit 1])
David Reiss832b2622007-12-28 18:25:33 +0000327
David Reiss7ed4b982008-02-11 23:24:47 +0000328AC_STRUCT_TM
329
David Reiss85a8f7b2009-05-21 02:28:16 +0000330dnl NOTE(dreiss): AI_ADDRCONFIG is not defined on OpenBSD.
331AC_CHECK_DECL([AI_ADDRCONFIG], [],
332 [AC_DEFINE([AI_ADDRCONFIG], 0,
333 [Define if the AI_ADDRCONFIG symbol is unavailable])],
334 [
335 #include <sys/types.h>
336 #include <sys/socket.h>
337 #include <netdb.h>
338])
339
David Reiss832b2622007-12-28 18:25:33 +0000340AC_FUNC_ALLOCA
Roger Meier213a6642010-10-27 12:30:11 +0000341AC_FUNC_FORK
David Reiss832b2622007-12-28 18:25:33 +0000342AC_FUNC_MALLOC
David Reiss7ed4b982008-02-11 23:24:47 +0000343AC_FUNC_MEMCMP
David Reiss832b2622007-12-28 18:25:33 +0000344AC_FUNC_REALLOC
345AC_FUNC_SELECT_ARGTYPES
346AC_FUNC_STAT
347AC_FUNC_STRERROR_R
David Reiss7ed4b982008-02-11 23:24:47 +0000348AC_FUNC_STRFTIME
David Reiss832b2622007-12-28 18:25:33 +0000349AC_FUNC_VPRINTF
350AC_CHECK_FUNCS([strtoul])
351AC_CHECK_FUNCS([bzero])
David Reiss7ed4b982008-02-11 23:24:47 +0000352AC_CHECK_FUNCS([ftruncate])
David Reiss832b2622007-12-28 18:25:33 +0000353AC_CHECK_FUNCS([gethostbyname])
354AC_CHECK_FUNCS([gettimeofday])
355AC_CHECK_FUNCS([memmove])
356AC_CHECK_FUNCS([memset])
357AC_CHECK_FUNCS([mkdir])
358AC_CHECK_FUNCS([realpath])
359AC_CHECK_FUNCS([select])
360AC_CHECK_FUNCS([socket])
361AC_CHECK_FUNCS([strchr])
362AC_CHECK_FUNCS([strdup])
David Reiss7ed4b982008-02-11 23:24:47 +0000363AC_CHECK_FUNCS([strerror])
David Reiss832b2622007-12-28 18:25:33 +0000364AC_CHECK_FUNCS([strstr])
365AC_CHECK_FUNCS([strtol])
366AC_CHECK_FUNCS([sqrt])
David Reisse4ca1792009-05-21 02:28:19 +0000367dnl The following functions are optional.
Roger Meier213a6642010-10-27 12:30:11 +0000368AC_CHECK_FUNCS([alarm])
David Reisse4ca1792009-05-21 02:28:19 +0000369AC_CHECK_FUNCS([clock_gettime])
370AC_CHECK_FUNCS([sched_get_priority_min])
371AC_CHECK_FUNCS([sched_get_priority_max])
David Reiss832b2622007-12-28 18:25:33 +0000372
David Reiss79db3e12010-08-31 16:51:31 +0000373if test "$cross_compiling" = "no" ; then
374 AX_SIGNED_RIGHT_SHIFT
375fi
David Reisse4d4ea02009-04-02 21:37:17 +0000376
David Reiss5ddabb82010-10-06 17:09:37 +0000377dnl autoscan thinks we need this macro because we have a member function
378dnl called "error". Invoke the macro but don't run the check so autoscan
379dnl thinks we are in the clear. It's highly unlikely that we will ever
380dnl actually use the function that this checks for.
381if false ; then
382 AC_FUNC_ERROR_AT_LINE
383fi
384
David Reiss22585732008-02-27 01:55:33 +0000385AX_THRIFT_GEN(cpp, [C++], yes)
386AM_CONDITIONAL([THRIFT_GEN_cpp], [test "$ax_thrift_gen_cpp" = "yes"])
Roger Meier213a6642010-10-27 12:30:11 +0000387AX_THRIFT_GEN(c_glib, [C (GLib)], yes)
388AM_CONDITIONAL([THRIFT_GEN_c_glib], [test "$ax_thrift_gen_c_glib" = "yes"])
David Reisse8a87de2008-02-27 02:39:25 +0000389AX_THRIFT_GEN(java, [Java], yes)
390AM_CONDITIONAL([THRIFT_GEN_java], [test "$ax_thrift_gen_java" = "yes"])
Bryan Duxbury321eb7a2010-04-22 21:17:39 +0000391AX_THRIFT_GEN(as3, [AS3], yes)
392AM_CONDITIONAL([THRIFT_GEN_as3], [test "$ax_thrift_gen_as3" = "yes"])
David Reissce4f4f02008-03-27 21:41:31 +0000393AX_THRIFT_GEN(csharp, [C#], yes)
394AM_CONDITIONAL([THRIFT_GEN_csharp], [test "$ax_thrift_gen_csharp" = "yes"])
David Reissbfd26dc2008-03-27 21:41:49 +0000395AX_THRIFT_GEN(py, [Python], yes)
396AM_CONDITIONAL([THRIFT_GEN_py], [test "$ax_thrift_gen_py" = "yes"])
David Reissae253582008-03-27 21:42:11 +0000397AX_THRIFT_GEN(rb, [Ruby], yes)
398AM_CONDITIONAL([THRIFT_GEN_rb], [test "$ax_thrift_gen_rb" = "yes"])
David Reissfdc21aa2008-03-27 21:42:34 +0000399AX_THRIFT_GEN(perl, [Perl], yes)
400AM_CONDITIONAL([THRIFT_GEN_perl], [test "$ax_thrift_gen_perl" = "yes"])
David Reiss32272d92009-02-17 20:28:30 +0000401AX_THRIFT_GEN(php, [PHP], yes)
402AM_CONDITIONAL([THRIFT_GEN_php], [test "$ax_thrift_gen_php" = "yes"])
David Reissf3b0db32009-02-17 20:28:01 +0000403AX_THRIFT_GEN(erl, [Erlang], yes)
404AM_CONDITIONAL([THRIFT_GEN_erl], [test "$ax_thrift_gen_erl" = "yes"])
David Reiss4b349aa2008-03-27 21:41:02 +0000405AX_THRIFT_GEN(cocoa, [Cocoa], yes)
406AM_CONDITIONAL([THRIFT_GEN_cocoa], [test "$ax_thrift_gen_cocoa" = "yes"])
David Reissb3ac8a62008-03-27 21:40:42 +0000407AX_THRIFT_GEN(st, [Smalltalk], yes)
408AM_CONDITIONAL([THRIFT_GEN_st], [test "$ax_thrift_gen_st" = "yes"])
David Reiss3d671b52008-03-27 21:40:11 +0000409AX_THRIFT_GEN(ocaml, [OCaml], yes)
410AM_CONDITIONAL([THRIFT_GEN_ocaml], [test "$ax_thrift_gen_ocaml" = "yes"])
David Reiss22812f82008-03-27 21:40:26 +0000411AX_THRIFT_GEN(hs, [Haskell], yes)
412AM_CONDITIONAL([THRIFT_GEN_hs], [test "$ax_thrift_gen_hs" = "yes"])
David Reiss782cb672009-02-17 20:28:13 +0000413AX_THRIFT_GEN(xsd, [XSD], yes)
414AM_CONDITIONAL([THRIFT_GEN_xsd], [test "$ax_thrift_gen_xsd" = "yes"])
David Reissdc0aada2008-10-21 00:09:23 +0000415AX_THRIFT_GEN(html, [HTML], yes)
416AM_CONDITIONAL([THRIFT_GEN_html], [test "$ax_thrift_gen_html" = "yes"])
T Jake Luciani322caa22010-02-15 03:24:55 +0000417AX_THRIFT_GEN(js, [JavaScript], yes)
418AM_CONDITIONAL([THRIFT_GEN_js], [test "$ax_thrift_gen_js" = "yes"])
Bryan Duxbury1237dcb2010-09-20 17:49:09 +0000419AX_THRIFT_GEN(javame, [JavaME], yes)
420AM_CONDITIONAL([THRIFT_GEN_javame], [test "$ax_thrift_gen_javame" = "yes"])
Christian Lavoieafc6d8f2011-02-20 02:39:19 +0000421AX_THRIFT_GEN(go, [GO_C], yes)
422AM_CONDITIONAL([THRIFT_GEN_go], [test "$ax_thrift_gen_go" = "yes"])
David Reiss22585732008-02-27 01:55:33 +0000423
Roger Meier213a6642010-10-27 12:30:11 +0000424# --- Coverage hooks ---
425
426AC_ARG_ENABLE(coverage,
427 [ --enable-coverage turn on -fprofile-arcs -ftest-coverage],
428 [case "${enableval}" in
429 yes) ENABLE_COVERAGE=1 ;;
430 no) ENABLE_COVERAGE=0 ;;
431 *) AC_MSG_ERROR(bad value ${enableval} for --enable-cov) ;;
432 esac],
433 [ENABLE_COVERAGE=2])
434
435if test "x[$]ENABLE_COVERAGE" = "x1"; then
436 AC_MSG_WARN(enable coverage)
437 GCOV_CFLAGS="`echo \"[$]CFLAGS\" | perl -pe 's/-O\d+//g;'` -fprofile-arcs -ftest-coverage"
438 GCOV_CXXFLAGS="`echo \"[$]CXXFLAGS\" | perl -pe 's/-O\d+//g;'` -fprofile-arcs -ftest-coverage"
439 GCOV_LDFLAGS="-XCClinker -fprofile-arcs -XCClinker -ftest-coverage"
440fi
441
442AC_SUBST(ENABLE_COVERAGE)
443AC_SUBST(GCOV_CFLAGS)
444AC_SUBST(GCOV_CXXFLAGS)
445AC_SUBST(GCOV_LDFLAGS)
446
David Reiss832b2622007-12-28 18:25:33 +0000447AC_CONFIG_HEADERS(config.h:config.hin)
448
449AC_CONFIG_FILES([
450 Makefile
451 compiler/cpp/Makefile
Bryan Duxburya1e268c2010-05-03 21:33:00 +0000452 compiler/cpp/version.h
David Reiss832b2622007-12-28 18:25:33 +0000453 lib/Makefile
454 lib/cpp/Makefile
David Reiss351e22b2010-08-31 16:51:19 +0000455 lib/cpp/test/Makefile
David Reiss832b2622007-12-28 18:25:33 +0000456 lib/cpp/thrift-nb.pc
457 lib/cpp/thrift-z.pc
Bryan Duxburyc6574472010-10-06 00:12:33 +0000458 lib/cpp/thrift.pc
Roger Meier213a6642010-10-27 12:30:11 +0000459 lib/c_glib/Makefile
460 lib/c_glib/thrift_c_glib.pc
461 lib/c_glib/test/Makefile
David Reiss1fdb5922008-02-06 22:10:12 +0000462 lib/csharp/Makefile
Bryan Duxbury7173bd92010-05-02 22:54:22 +0000463 lib/erl/Makefile
Anthony F. Molinaroef164202010-09-07 03:35:30 +0000464 lib/erl/src/Makefile
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000465 lib/hs/Makefile
David Reissf8dcf032008-02-23 22:07:39 +0000466 lib/java/Makefile
T Jake Luciani1952e542009-02-01 04:47:30 +0000467 lib/perl/Makefile
468 lib/perl/test/Makefile
Bryan Duxbury6a681872010-05-02 22:39:31 +0000469 lib/php/Makefile
David Reiss832b2622007-12-28 18:25:33 +0000470 lib/py/Makefile
Kevin Clark4bd89162008-07-08 00:47:49 +0000471 lib/rb/Makefile
David Reiss8180c0c2008-02-04 21:14:14 +0000472 test/Makefile
Bryan Duxburyc6574472010-10-06 00:12:33 +0000473 test/hs/Makefile
David Reiss9ff3b9d2008-02-15 01:10:23 +0000474 test/py/Makefile
Roger Meier50e43492010-10-08 17:46:06 +0000475 test/py.twisted/Makefile
Kevin Clark4bd89162008-07-08 00:47:49 +0000476 test/rb/Makefile
David Reiss832b2622007-12-28 18:25:33 +0000477])
Marc Slemkob09f5882006-08-23 22:03:34 +0000478
479AC_OUTPUT
David Reiss5cc3ba82010-08-31 16:51:20 +0000480
481
482echo
483echo "$PACKAGE $VERSION"
484echo
485echo "Building code generators ..... :$thrift_generators"
486echo
David Reissea4c9812010-08-31 16:51:21 +0000487echo "Building C++ Library ......... : $have_cpp"
Roger Meier213a6642010-10-27 12:30:11 +0000488echo "Building C (GLib) Library .... : $have_c_glib"
David Reiss5cc3ba82010-08-31 16:51:20 +0000489echo "Building Java Library ........ : $have_java"
490echo "Building C# Library .......... : $have_csharp"
491echo "Building Python Library ...... : $have_python"
492echo "Building Ruby Library ........ : $have_ruby"
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000493echo "Building Haskell Library ..... : $have_haskell"
David Reiss5cc3ba82010-08-31 16:51:20 +0000494echo "Building Perl Library ........ : $have_perl"
495echo "Building PHP Library ......... : $have_php"
496echo "Building Erlang Library ...... : $have_erlang"
Christian Lavoieafc6d8f2011-02-20 02:39:19 +0000497echo "Building Go Library .......... : $have_go"
David Reiss5cc3ba82010-08-31 16:51:20 +0000498if test "$have_cpp" = "yes" ; then
499 echo
500 echo "Building TZlibTransport ...... : $have_zlib"
501 echo "Building TNonblockingServer .. : $have_libevent"
502fi
503if test "$have_java" = "yes" ; then
504 echo
505 echo "Using javac .................. : $JAVAC"
506 echo "Using java ................... : $JAVA"
507 echo "Using ant .................... : $ANT"
508fi
509if test "$have_csharp" = "yes" ; then
510 echo
511 echo "Using .NET 3.5 ............... : $net_3_5"
512fi
513if test "$have_python" = "yes" ; then
514 echo
515 echo "Using Python ................. : $PYTHON"
516fi
Anthony F. Molinaroddcf32a2010-10-05 16:45:50 +0000517if test "$have_php" = "yes" ; then
518 echo
519 echo "Using php-config ............. : $PHP_CONFIG"
520fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000521if test "$have_ruby" = "yes" ; then
522 echo
523 echo "Using Ruby ................... : $RUBY"
524 echo "Using rspec .................. : $RSPEC"
525fi
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000526if test "$have_haskell" = "yes" ; then
527 echo
528 echo "Using Haskell ................ : $RUNHASKELL"
Bryan Duxburyc6574472010-10-06 00:12:33 +0000529 echo "Using Cabal .................. : $CABAL"
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000530fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000531if test "$have_perl" = "yes" ; then
532 echo
533 echo "Using Perl ................... : $PERL"
534fi
535if test "$have_erlang" = "yes" ; then
536 echo
537 echo "Using erlc ................... : $ERLC"
538fi
Christian Lavoieafc6d8f2011-02-20 02:39:19 +0000539if test "$have_go" = "yes" ; then
540 echo
541 echo "Using GOROOT.................. : $GOROOT"
542 echo "Using GOBIN................... : $GOBIN"
543 echo "Using GOARCH.................. : $GOARCH"
544 echo "Using GO Compiler............. : $GO_C"
545 echo "Using GO Linker............... : $GO_L"
546fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000547echo
548echo "If something is missing that you think should be present,"
549echo "please skim the output of configure to find the missing"
550echo "component. Details are present in config.log."