blob: faffa55818cb3dc81564a94b817048bea9777408 [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
Roger Meierf2100be2011-03-23 20:36:20 +000026AM_INIT_AUTOMAKE([1.9 tar-ustar])
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
Jake Farrell05e0cdb2011-05-05 13:45:26 +000059AC_ARG_VAR([INSTALLDIRS], [When installing Perl modules, specifies which
60 of the sets of installation directories
61 to choose: perl, site or vendor.
62 Default = "vendor"])
63AS_IF([test "x$INSTALLDIRS" = x], [INSTALLDIRS="vendor"])
64
David Reissc07057e2010-06-11 17:57:32 +000065AC_ARG_VAR([PERL_PREFIX], [Prefix for installing Perl modules.
66 (Normal --prefix is ignored for Perl because
67 Perl has different conventions.)
Jake Farrell05e0cdb2011-05-05 13:45:26 +000068 Ignored, when INSTALLDIRS set to site or vendor.
David Reissc07057e2010-06-11 17:57:32 +000069 Default = "/usr/local/lib"])
70AS_IF([test "x$PERL_PREFIX" = x], [PERL_PREFIX="/usr/local"])
71
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +000072AC_ARG_VAR([CABAL_CONFIGURE_FLAGS],
73 [Extra flags to pass to cabal: "cabal Setup.lhs configure $CABAL_CONFIGURE_FLAGS".
74 (Typically used to set --user or force --global.)])
75
76AC_SUBST(CABAL_CONFIGURE_FLAGS)
77
Christian Lavoieafc6d8f2011-02-20 02:39:19 +000078AC_ARG_VAR([GOROOT], [Prefix for the Go source directory.
79 (Normal --prefix is ignored for Go because
80 Go has different conventions.)
81 Default = "/usr/local/share/go"])
82AS_IF([test "x$GOROOT" = x], [GOROOT="/usr/local/share/go"])
83
84AC_ARG_VAR([GOARCH], [Architecture default for Go.
85 Default = "amd64"])
86AS_IF([test "x$GOARCH" = x], [GOARCH="amd64"])
87
88AC_ARG_VAR([GOBIN], [Binary directory for Go.
89 Default = "/usr/local/bin"])
90AS_IF([test "x$GOBIN" = x], [GOBIN="/usr/local/bin"])
91
David Reiss832b2622007-12-28 18:25:33 +000092AC_PROG_CC
93AC_PROG_CPP
94AC_PROG_CXX
95AC_PROG_INSTALL
96AC_PROG_LIBTOOL
97AC_PROG_MAKE_SET
98AC_PROG_YACC
99AC_PROG_LEX
100AM_PROG_LEX
David Reiss7ed4b982008-02-11 23:24:47 +0000101AC_PROG_LN_S
102AC_PROG_MKDIR_P
Christian Lavoieafc6d8f2011-02-20 02:39:19 +0000103AC_PROG_AWK
104AC_PROG_RANLIB
David Reiss832b2622007-12-28 18:25:33 +0000105
106AC_LANG([C++])
David Reiss832b2622007-12-28 18:25:33 +0000107
David Reissea4c9812010-08-31 16:51:21 +0000108AX_THRIFT_LIB(cpp, [C++], yes)
109have_cpp=no
110if test "$with_cpp" = "yes"; then
David Reissef5e81b2010-08-31 16:51:28 +0000111 AX_BOOST_BASE([1.33.1])
112 if test "x$succeeded" == "xyes" ; then
113 have_cpp="yes"
114 fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000115
David Reissea4c9812010-08-31 16:51:21 +0000116 AX_LIB_EVENT([1.0])
117 have_libevent=$success
David Reiss832b2622007-12-28 18:25:33 +0000118
David Reissea4c9812010-08-31 16:51:21 +0000119 AX_LIB_ZLIB([1.2.3])
120 have_zlib=$success
121fi
122AM_CONDITIONAL([WITH_CPP], [test "$have_cpp" = "yes"])
123AM_CONDITIONAL([AMX_HAVE_LIBEVENT], [test "$have_libevent" = "yes"])
124AM_CONDITIONAL([AMX_HAVE_ZLIB], [test "$have_zlib" = "yes"])
David Reiss832b2622007-12-28 18:25:33 +0000125
Roger Meier213a6642010-10-27 12:30:11 +0000126AX_THRIFT_LIB(c_glib, [C (GLib)], no)
127if test "$with_c_glib" = "yes"; then
128 PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.0], have_glib2=yes, have_glib2=no)
129 PKG_CHECK_MODULES([GOBJECT], [gobject-2.0 >= 2.0], have_gobject2=yes, have_gobject2=no)
130 if test "$have_glib2" = "yes" -a "$have_gobject2" = "yes" ; then
131 have_c_glib="yes"
132 fi
133fi
134AM_CONDITIONAL(WITH_C_GLIB, [test "$have_glib2" = "yes" -a "$have_gobject2" = "yes"])
135
David Reiss520b5ee2008-03-02 07:00:26 +0000136AX_THRIFT_LIB(csharp, [C#], yes)
137if test "$with_csharp" = "yes"; then
David Reissd831a212009-02-13 03:09:52 +0000138 PKG_CHECK_MODULES(MONO, mono >= 2.0.0, net_3_5=yes, net_3_5=no)
139 PKG_CHECK_MODULES(MONO, mono >= 1.2.4, have_mono=yes, have_mono=no)
David Reiss5cc3ba82010-08-31 16:51:20 +0000140 if test "$have_mono" = "yes" ; then
141 have_csharp="yes"
142 fi
David Reiss520b5ee2008-03-02 07:00:26 +0000143fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000144AM_CONDITIONAL(WITH_MONO, [test "$have_csharp" = "yes"])
David Reissd831a212009-02-13 03:09:52 +0000145AM_CONDITIONAL(NET_2_0, [test "$net_3_5" = "no"])
David Reiss1fdb5922008-02-06 22:10:12 +0000146
David Reiss62d39812008-03-02 07:00:22 +0000147AX_THRIFT_LIB(java, [Java], yes)
148if test "$with_java" = "yes"; then
David Reissd9cdf422009-03-13 21:25:29 +0000149 AX_JAVAC_AND_JAVA
Bryan Duxbury38bab122010-08-12 00:27:14 +0000150 AC_PATH_PROG([ANT], [ant])
Bryan Duxburyc27cda52009-08-14 20:04:15 +0000151 AX_CHECK_JAVA_CLASS(org.slf4j.Logger)
152 have_slf4j="$success"
153 AX_CHECK_JAVA_CLASS(org.slf4j.impl.SimpleLogger)
154 have_slf4j_simple="$success"
David Reissfdfcebd2009-05-22 19:50:29 +0000155 AX_CHECK_JAVA_CLASS(org.apache.commons.lang.builder.HashCodeBuilder)
156 have_hashcode="$success"
Bryan Duxburyc27cda52009-08-14 20:04:15 +0000157 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 +0000158 ANT_FLAGS="$ANT_FLAGS -Dnoivy="
159 fi
David Reissfff84d12009-05-22 19:50:33 +0000160 AC_SUBST(CLASSPATH)
David Reiss4ca0c8e2009-05-12 23:16:55 +0000161 AC_SUBST(ANT_FLAGS)
David Reiss5cc3ba82010-08-31 16:51:20 +0000162 if test "x$JAVAC" != "x" && test "x$JAVAC" != "x" && test "x$ANT" != "x" ; then
163 have_java="yes"
164 fi
David Reiss62d39812008-03-02 07:00:22 +0000165fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000166AM_CONDITIONAL([WITH_JAVA], [test "$have_java" = "yes"])
David Reiss1fdb5922008-02-06 22:10:12 +0000167
Christopher Pirob6f18c22008-03-04 07:09:12 +0000168AX_THRIFT_LIB(erlang, [Erlang], yes)
169if test "$with_erlang" = "yes"; then
David Reiss9e2fd792010-05-18 16:52:48 +0000170 AC_ERLANG_PATH_ERL
171 AC_ERLANG_PATH_ERLC
David Reiss31e1b6e2010-08-24 20:45:24 +0000172 if test -n "$ERLC" ; then
173 AC_ERLANG_SUBST_LIB_DIR
174 # Install into the detected Erlang directory instead of $libdir/erlang/lib
175 ERLANG_INSTALL_LIB_DIR="$ERLANG_LIB_DIR"
176 AC_ERLANG_SUBST_INSTALL_LIB_SUBDIR(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
177 fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000178 if test -n "$ERL" -a -n "$ERLC" ; then
179 have_erlang="yes"
180 fi
Christopher Pirob6f18c22008-03-04 07:09:12 +0000181fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000182AM_CONDITIONAL(WITH_ERLANG, [test "$have_erlang" = "yes"])
Christopher Pirob6f18c22008-03-04 07:09:12 +0000183
David Reiss5cc3ba82010-08-31 16:51:20 +0000184AX_THRIFT_LIB(python, [Python], yes)
185if test "$with_python" = "yes"; then
David Reiss1a140912008-06-11 01:16:37 +0000186 AM_PATH_PYTHON(2.4,, :)
David Reiss5cc3ba82010-08-31 16:51:20 +0000187 if test "x$PYTHON" != "x" && test "x$PYTHON" != "x:" ; then
188 have_python="yes"
189 fi
David Reiss1a140912008-06-11 01:16:37 +0000190fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000191AM_CONDITIONAL(WITH_PYTHON, [test "$have_python" = "yes"])
David Reiss1a140912008-06-11 01:16:37 +0000192
Roger Meier50e43492010-10-08 17:46:06 +0000193AC_PATH_PROG([TRIAL], [trial])
194
T Jake Luciani1952e542009-02-01 04:47:30 +0000195AX_THRIFT_LIB(perl, [Perl], yes)
196if test "$with_perl" = "yes"; then
197 AC_PATH_PROG([PERL], [perl])
David Reissdcc7e9b2010-08-31 16:51:22 +0000198 if test -n "$PERL" ; then
199 AC_PROG_PERL_MODULES([Bit::Vector], success="yes", success="no")
200 have_perl_bit_vector="$success"
Bryan Duxbury12373692010-08-19 05:23:59 +0000201 fi
David Reissdcc7e9b2010-08-31 16:51:22 +0000202 if test -n "$PERL" -a "$have_perl_bit_vector" = "yes" ; then
David Reiss5cc3ba82010-08-31 16:51:20 +0000203 have_perl="yes"
204 fi
T Jake Luciani1952e542009-02-01 04:47:30 +0000205fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000206AM_CONDITIONAL(WITH_PERL, [test "$have_perl" = "yes"])
T Jake Luciani1952e542009-02-01 04:47:30 +0000207
Bryan Duxbury6a681872010-05-02 22:39:31 +0000208AX_THRIFT_LIB(php, [PHP], yes)
209if test "$with_php" = "yes"; then
210 AC_PATH_PROG([PHP], [php])
David Reiss5cc3ba82010-08-31 16:51:20 +0000211 if test -n "$PHP" ; then
212 have_php="yes"
213 fi
Bryan Duxbury6a681872010-05-02 22:39:31 +0000214fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000215AM_CONDITIONAL(WITH_PHP, [test "$have_php" = "yes"])
Bryan Duxbury6a681872010-05-02 22:39:31 +0000216
Bryan Duxbury89200e12010-08-25 17:09:02 +0000217AX_THRIFT_LIB(php_extension, [PHP_EXTENSION], yes)
218if test "$with_php_extension" = "yes"; then
219 AC_PATH_PROG([PHP_CONFIG], [php-config])
Anthony F. Molinaroddcf32a2010-10-05 16:45:50 +0000220 if test -n "$PHP_CONFIG" ; then
221 AC_CONFIG_SUBDIRS([lib/php/src/ext/thrift_protocol])
222 have_php_extension="yes"
223 fi
Bryan Duxbury89200e12010-08-25 17:09:02 +0000224fi
Anthony F. Molinaroddcf32a2010-10-05 16:45:50 +0000225AM_CONDITIONAL(WITH_PHP_EXTENSION, [test "$have_php_extension" = "yes"])
Bryan Duxbury89200e12010-08-25 17:09:02 +0000226
Kevin Clark4bd89162008-07-08 00:47:49 +0000227AX_THRIFT_LIB(ruby, [Ruby], yes)
David Reiss5cc3ba82010-08-31 16:51:20 +0000228have_ruby=no
Kevin Clark4bd89162008-07-08 00:47:49 +0000229if test "$with_ruby" = "yes"; then
230 AC_PATH_PROG([RUBY], [ruby])
Bryan Duxburyec473582009-04-07 16:31:04 +0000231 AC_PATH_PROG([RSPEC], [spec])
David Reiss5cc3ba82010-08-31 16:51:20 +0000232 if test "x$RUBY" != "x" ; then
233 have_ruby="yes"
234 fi
Kevin Clark4bd89162008-07-08 00:47:49 +0000235fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000236AM_CONDITIONAL(WITH_RUBY, [test "$have_ruby" = "yes"])
237AM_CONDITIONAL(HAVE_RSPEC, [test "x$RSPEC" != "x"])
Bryan Duxburyec473582009-04-07 16:31:04 +0000238
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000239AX_THRIFT_LIB(haskell, [Haskell], yes)
240have_haskell=no
241RUNHASKELL=true
Bryan Duxburyc6574472010-10-06 00:12:33 +0000242CABAL=true
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000243if test "$with_haskell" = "yes"; then
Bryan Duxburyc6574472010-10-06 00:12:33 +0000244 AC_PATH_PROG([CABAL], [cabal])
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000245 AC_PATH_PROG([RUNHASKELL], [runhaskell])
Bryan Duxburyc6574472010-10-06 00:12:33 +0000246 if test "x$CABAL" != "x" -a "x$RUNHASKELL" != "x"; then
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000247 have_haskell="yes"
248 else
249 RUNHASKELL=true
Bryan Duxburyc6574472010-10-06 00:12:33 +0000250 CABAL=true
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000251 fi
252fi
Bryan Duxburyc6574472010-10-06 00:12:33 +0000253AC_SUBST(CABAL)
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000254AC_SUBST(RUNHASKELL)
255AM_CONDITIONAL(WITH_HASKELL, [test "$have_haskell" = "yes"])
Kevin Clark4bd89162008-07-08 00:47:49 +0000256
Christian Lavoieafc6d8f2011-02-20 02:39:19 +0000257AX_THRIFT_LIB(go, [Go], yes)
258if test "$with_go" = "yes"; then
259 case X"$GOARCH" in
260 Xamd64)
261 GOARCH_NUM=6
262 ;;
263 X386)
264 GOARCH_NUM=8
265 ;;
266 Xarm)
267 GOARCH_NUM=5
268 ;;
269 *)
270 GOARCH_NUM=6
271 ;;
272 esac
273 GO_C=${GOBIN}/${GOARCH_NUM}g
274 GO_L=${GOBIN}/${GOARCH_NUM}l
275 GOMAKE=${GOBIN}/gomake
276 GOINSTALL=${GOBIN}/goinstall
277 AC_PATH_PROG([GO_C], [${GOARCH_NUM}g])
278 AC_PATH_PROG([GO_L], [${GOARCH_NUM}l])
279 AC_PATH_PROG([GOMAKE], [gomake])
280 AC_PATH_PROG([GOINSTALL], [goinstall])
281 if [[ -x "$GO_C" -a -x "$GO_L" -a -x "$GOMAKE" -a -x "$GOINSTALL" ]] ; then
282 have_go="yes"
283 fi
284fi
285AM_CONDITIONAL(WITH_GO, [test "$have_go" = "yes"])
286
David Reiss832b2622007-12-28 18:25:33 +0000287AC_C_CONST
288AC_C_INLINE
289AC_C_VOLATILE
290
291AC_HEADER_STDBOOL
292AC_HEADER_STDC
293AC_HEADER_TIME
Christian Lavoieafc6d8f2011-02-20 02:39:19 +0000294AC_HEADER_SYS_WAIT
295AC_TYPE_SIGNAL
David Reiss832b2622007-12-28 18:25:33 +0000296AC_CHECK_HEADERS([arpa/inet.h])
Bryan Duxbury184d2622010-08-17 17:43:58 +0000297AC_CHECK_HEADERS([sys/param.h])
David Reiss832b2622007-12-28 18:25:33 +0000298AC_CHECK_HEADERS([fcntl.h])
299AC_CHECK_HEADERS([inttypes.h])
David Reiss7ed4b982008-02-11 23:24:47 +0000300AC_CHECK_HEADERS([limits.h])
David Reiss832b2622007-12-28 18:25:33 +0000301AC_CHECK_HEADERS([netdb.h])
302AC_CHECK_HEADERS([netinet/in.h])
303AC_CHECK_HEADERS([pthread.h])
304AC_CHECK_HEADERS([stddef.h])
David Reissd7a16f42008-02-19 22:47:29 +0000305AC_CHECK_HEADERS([stdlib.h])
David Reiss832b2622007-12-28 18:25:33 +0000306AC_CHECK_HEADERS([sys/socket.h])
307AC_CHECK_HEADERS([sys/time.h])
308AC_CHECK_HEADERS([unistd.h])
309AC_CHECK_HEADERS([libintl.h])
310AC_CHECK_HEADERS([malloc.h])
Roger Meier9d9c4b92011-02-23 20:27:54 +0000311AC_CHECK_HEADERS([openssl/ssl.h])
312AC_CHECK_HEADERS([openssl/rand.h])
313AC_CHECK_HEADERS([openssl/x509v3.h])
David Reiss832b2622007-12-28 18:25:33 +0000314
315AC_CHECK_LIB(pthread, pthread_create)
David Reisse4ca1792009-05-21 02:28:19 +0000316dnl NOTE(dreiss): I haven't been able to find any really solid docs
317dnl on what librt is and how it fits into various Unix systems.
318dnl My best guess is that it is where glibc stashes its implementation
319dnl of the POSIX Real-Time Extensions. This seems necessary on Linux,
320dnl and we haven't yet found a system where this is a problem.
321AC_CHECK_LIB(rt, clock_gettime)
David Reiss9b903442009-10-21 05:51:28 +0000322AC_CHECK_LIB(socket, setsockopt)
Roger Meier9d9c4b92011-02-23 20:27:54 +0000323AC_CHECK_LIB(ssl, SSL_ctrl)
David Reiss832b2622007-12-28 18:25:33 +0000324
325AC_TYPE_INT16_T
326AC_TYPE_INT32_T
327AC_TYPE_INT64_T
328AC_TYPE_INT8_T
329AC_TYPE_MODE_T
330AC_TYPE_OFF_T
331AC_TYPE_SIZE_T
David Reiss847a2942008-04-21 18:07:43 +0000332AC_TYPE_SSIZE_T
David Reiss832b2622007-12-28 18:25:33 +0000333AC_TYPE_UINT16_T
334AC_TYPE_UINT32_T
335AC_TYPE_UINT64_T
336AC_TYPE_UINT8_T
David Reiss33fc5ad2008-05-09 07:17:34 +0000337AC_CHECK_TYPES([ptrdiff_t], [], [exit 1])
David Reiss832b2622007-12-28 18:25:33 +0000338
David Reiss7ed4b982008-02-11 23:24:47 +0000339AC_STRUCT_TM
340
David Reiss85a8f7b2009-05-21 02:28:16 +0000341dnl NOTE(dreiss): AI_ADDRCONFIG is not defined on OpenBSD.
342AC_CHECK_DECL([AI_ADDRCONFIG], [],
343 [AC_DEFINE([AI_ADDRCONFIG], 0,
344 [Define if the AI_ADDRCONFIG symbol is unavailable])],
345 [
346 #include <sys/types.h>
347 #include <sys/socket.h>
348 #include <netdb.h>
349])
350
David Reiss832b2622007-12-28 18:25:33 +0000351AC_FUNC_ALLOCA
Roger Meier213a6642010-10-27 12:30:11 +0000352AC_FUNC_FORK
David Reiss832b2622007-12-28 18:25:33 +0000353AC_FUNC_MALLOC
David Reiss7ed4b982008-02-11 23:24:47 +0000354AC_FUNC_MEMCMP
David Reiss832b2622007-12-28 18:25:33 +0000355AC_FUNC_REALLOC
356AC_FUNC_SELECT_ARGTYPES
357AC_FUNC_STAT
358AC_FUNC_STRERROR_R
David Reiss7ed4b982008-02-11 23:24:47 +0000359AC_FUNC_STRFTIME
David Reiss832b2622007-12-28 18:25:33 +0000360AC_FUNC_VPRINTF
361AC_CHECK_FUNCS([strtoul])
362AC_CHECK_FUNCS([bzero])
David Reiss7ed4b982008-02-11 23:24:47 +0000363AC_CHECK_FUNCS([ftruncate])
David Reiss832b2622007-12-28 18:25:33 +0000364AC_CHECK_FUNCS([gethostbyname])
365AC_CHECK_FUNCS([gettimeofday])
366AC_CHECK_FUNCS([memmove])
367AC_CHECK_FUNCS([memset])
368AC_CHECK_FUNCS([mkdir])
369AC_CHECK_FUNCS([realpath])
370AC_CHECK_FUNCS([select])
371AC_CHECK_FUNCS([socket])
372AC_CHECK_FUNCS([strchr])
373AC_CHECK_FUNCS([strdup])
David Reiss7ed4b982008-02-11 23:24:47 +0000374AC_CHECK_FUNCS([strerror])
David Reiss832b2622007-12-28 18:25:33 +0000375AC_CHECK_FUNCS([strstr])
376AC_CHECK_FUNCS([strtol])
377AC_CHECK_FUNCS([sqrt])
David Reisse4ca1792009-05-21 02:28:19 +0000378dnl The following functions are optional.
Roger Meier213a6642010-10-27 12:30:11 +0000379AC_CHECK_FUNCS([alarm])
David Reisse4ca1792009-05-21 02:28:19 +0000380AC_CHECK_FUNCS([clock_gettime])
381AC_CHECK_FUNCS([sched_get_priority_min])
382AC_CHECK_FUNCS([sched_get_priority_max])
David Reiss832b2622007-12-28 18:25:33 +0000383
David Reiss79db3e12010-08-31 16:51:31 +0000384if test "$cross_compiling" = "no" ; then
385 AX_SIGNED_RIGHT_SHIFT
386fi
David Reisse4d4ea02009-04-02 21:37:17 +0000387
David Reiss5ddabb82010-10-06 17:09:37 +0000388dnl autoscan thinks we need this macro because we have a member function
389dnl called "error". Invoke the macro but don't run the check so autoscan
390dnl thinks we are in the clear. It's highly unlikely that we will ever
391dnl actually use the function that this checks for.
392if false ; then
393 AC_FUNC_ERROR_AT_LINE
394fi
395
David Reiss22585732008-02-27 01:55:33 +0000396AX_THRIFT_GEN(cpp, [C++], yes)
397AM_CONDITIONAL([THRIFT_GEN_cpp], [test "$ax_thrift_gen_cpp" = "yes"])
Roger Meier213a6642010-10-27 12:30:11 +0000398AX_THRIFT_GEN(c_glib, [C (GLib)], yes)
399AM_CONDITIONAL([THRIFT_GEN_c_glib], [test "$ax_thrift_gen_c_glib" = "yes"])
David Reisse8a87de2008-02-27 02:39:25 +0000400AX_THRIFT_GEN(java, [Java], yes)
401AM_CONDITIONAL([THRIFT_GEN_java], [test "$ax_thrift_gen_java" = "yes"])
Bryan Duxbury321eb7a2010-04-22 21:17:39 +0000402AX_THRIFT_GEN(as3, [AS3], yes)
403AM_CONDITIONAL([THRIFT_GEN_as3], [test "$ax_thrift_gen_as3" = "yes"])
David Reissce4f4f02008-03-27 21:41:31 +0000404AX_THRIFT_GEN(csharp, [C#], yes)
405AM_CONDITIONAL([THRIFT_GEN_csharp], [test "$ax_thrift_gen_csharp" = "yes"])
David Reissbfd26dc2008-03-27 21:41:49 +0000406AX_THRIFT_GEN(py, [Python], yes)
407AM_CONDITIONAL([THRIFT_GEN_py], [test "$ax_thrift_gen_py" = "yes"])
David Reissae253582008-03-27 21:42:11 +0000408AX_THRIFT_GEN(rb, [Ruby], yes)
409AM_CONDITIONAL([THRIFT_GEN_rb], [test "$ax_thrift_gen_rb" = "yes"])
David Reissfdc21aa2008-03-27 21:42:34 +0000410AX_THRIFT_GEN(perl, [Perl], yes)
411AM_CONDITIONAL([THRIFT_GEN_perl], [test "$ax_thrift_gen_perl" = "yes"])
David Reiss32272d92009-02-17 20:28:30 +0000412AX_THRIFT_GEN(php, [PHP], yes)
413AM_CONDITIONAL([THRIFT_GEN_php], [test "$ax_thrift_gen_php" = "yes"])
David Reissf3b0db32009-02-17 20:28:01 +0000414AX_THRIFT_GEN(erl, [Erlang], yes)
415AM_CONDITIONAL([THRIFT_GEN_erl], [test "$ax_thrift_gen_erl" = "yes"])
David Reiss4b349aa2008-03-27 21:41:02 +0000416AX_THRIFT_GEN(cocoa, [Cocoa], yes)
417AM_CONDITIONAL([THRIFT_GEN_cocoa], [test "$ax_thrift_gen_cocoa" = "yes"])
David Reissb3ac8a62008-03-27 21:40:42 +0000418AX_THRIFT_GEN(st, [Smalltalk], yes)
419AM_CONDITIONAL([THRIFT_GEN_st], [test "$ax_thrift_gen_st" = "yes"])
David Reiss3d671b52008-03-27 21:40:11 +0000420AX_THRIFT_GEN(ocaml, [OCaml], yes)
421AM_CONDITIONAL([THRIFT_GEN_ocaml], [test "$ax_thrift_gen_ocaml" = "yes"])
David Reiss22812f82008-03-27 21:40:26 +0000422AX_THRIFT_GEN(hs, [Haskell], yes)
423AM_CONDITIONAL([THRIFT_GEN_hs], [test "$ax_thrift_gen_hs" = "yes"])
David Reiss782cb672009-02-17 20:28:13 +0000424AX_THRIFT_GEN(xsd, [XSD], yes)
425AM_CONDITIONAL([THRIFT_GEN_xsd], [test "$ax_thrift_gen_xsd" = "yes"])
David Reissdc0aada2008-10-21 00:09:23 +0000426AX_THRIFT_GEN(html, [HTML], yes)
427AM_CONDITIONAL([THRIFT_GEN_html], [test "$ax_thrift_gen_html" = "yes"])
T Jake Luciani322caa22010-02-15 03:24:55 +0000428AX_THRIFT_GEN(js, [JavaScript], yes)
429AM_CONDITIONAL([THRIFT_GEN_js], [test "$ax_thrift_gen_js" = "yes"])
Bryan Duxbury1237dcb2010-09-20 17:49:09 +0000430AX_THRIFT_GEN(javame, [JavaME], yes)
431AM_CONDITIONAL([THRIFT_GEN_javame], [test "$ax_thrift_gen_javame" = "yes"])
Christian Lavoieafc6d8f2011-02-20 02:39:19 +0000432AX_THRIFT_GEN(go, [GO_C], yes)
433AM_CONDITIONAL([THRIFT_GEN_go], [test "$ax_thrift_gen_go" = "yes"])
David Reiss22585732008-02-27 01:55:33 +0000434
Roger Meier213a6642010-10-27 12:30:11 +0000435# --- Coverage hooks ---
436
437AC_ARG_ENABLE(coverage,
438 [ --enable-coverage turn on -fprofile-arcs -ftest-coverage],
439 [case "${enableval}" in
440 yes) ENABLE_COVERAGE=1 ;;
441 no) ENABLE_COVERAGE=0 ;;
442 *) AC_MSG_ERROR(bad value ${enableval} for --enable-cov) ;;
443 esac],
444 [ENABLE_COVERAGE=2])
445
446if test "x[$]ENABLE_COVERAGE" = "x1"; then
447 AC_MSG_WARN(enable coverage)
448 GCOV_CFLAGS="`echo \"[$]CFLAGS\" | perl -pe 's/-O\d+//g;'` -fprofile-arcs -ftest-coverage"
449 GCOV_CXXFLAGS="`echo \"[$]CXXFLAGS\" | perl -pe 's/-O\d+//g;'` -fprofile-arcs -ftest-coverage"
450 GCOV_LDFLAGS="-XCClinker -fprofile-arcs -XCClinker -ftest-coverage"
451fi
452
453AC_SUBST(ENABLE_COVERAGE)
454AC_SUBST(GCOV_CFLAGS)
455AC_SUBST(GCOV_CXXFLAGS)
456AC_SUBST(GCOV_LDFLAGS)
457
David Reiss832b2622007-12-28 18:25:33 +0000458AC_CONFIG_HEADERS(config.h:config.hin)
459
460AC_CONFIG_FILES([
461 Makefile
462 compiler/cpp/Makefile
Bryan Duxburya1e268c2010-05-03 21:33:00 +0000463 compiler/cpp/version.h
David Reiss832b2622007-12-28 18:25:33 +0000464 lib/Makefile
465 lib/cpp/Makefile
David Reiss351e22b2010-08-31 16:51:19 +0000466 lib/cpp/test/Makefile
David Reiss832b2622007-12-28 18:25:33 +0000467 lib/cpp/thrift-nb.pc
468 lib/cpp/thrift-z.pc
Bryan Duxburyc6574472010-10-06 00:12:33 +0000469 lib/cpp/thrift.pc
Roger Meier213a6642010-10-27 12:30:11 +0000470 lib/c_glib/Makefile
471 lib/c_glib/thrift_c_glib.pc
472 lib/c_glib/test/Makefile
David Reiss1fdb5922008-02-06 22:10:12 +0000473 lib/csharp/Makefile
Bryan Duxbury7173bd92010-05-02 22:54:22 +0000474 lib/erl/Makefile
Anthony F. Molinaroef164202010-09-07 03:35:30 +0000475 lib/erl/src/Makefile
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000476 lib/hs/Makefile
David Reissf8dcf032008-02-23 22:07:39 +0000477 lib/java/Makefile
Roger Meierf2495762011-03-17 19:13:36 +0000478 lib/js/test/Makefile
T Jake Luciani1952e542009-02-01 04:47:30 +0000479 lib/perl/Makefile
480 lib/perl/test/Makefile
Bryan Duxbury6a681872010-05-02 22:39:31 +0000481 lib/php/Makefile
David Reiss832b2622007-12-28 18:25:33 +0000482 lib/py/Makefile
Kevin Clark4bd89162008-07-08 00:47:49 +0000483 lib/rb/Makefile
David Reiss8180c0c2008-02-04 21:14:14 +0000484 test/Makefile
Bryan Duxburyc6574472010-10-06 00:12:33 +0000485 test/hs/Makefile
David Reiss9ff3b9d2008-02-15 01:10:23 +0000486 test/py/Makefile
Roger Meier50e43492010-10-08 17:46:06 +0000487 test/py.twisted/Makefile
Kevin Clark4bd89162008-07-08 00:47:49 +0000488 test/rb/Makefile
David Reiss832b2622007-12-28 18:25:33 +0000489])
Marc Slemkob09f5882006-08-23 22:03:34 +0000490
491AC_OUTPUT
David Reiss5cc3ba82010-08-31 16:51:20 +0000492
493
494echo
495echo "$PACKAGE $VERSION"
496echo
497echo "Building code generators ..... :$thrift_generators"
498echo
David Reissea4c9812010-08-31 16:51:21 +0000499echo "Building C++ Library ......... : $have_cpp"
Roger Meier213a6642010-10-27 12:30:11 +0000500echo "Building C (GLib) Library .... : $have_c_glib"
David Reiss5cc3ba82010-08-31 16:51:20 +0000501echo "Building Java Library ........ : $have_java"
502echo "Building C# Library .......... : $have_csharp"
503echo "Building Python Library ...... : $have_python"
504echo "Building Ruby Library ........ : $have_ruby"
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000505echo "Building Haskell Library ..... : $have_haskell"
David Reiss5cc3ba82010-08-31 16:51:20 +0000506echo "Building Perl Library ........ : $have_perl"
507echo "Building PHP Library ......... : $have_php"
508echo "Building Erlang Library ...... : $have_erlang"
Christian Lavoieafc6d8f2011-02-20 02:39:19 +0000509echo "Building Go Library .......... : $have_go"
David Reiss5cc3ba82010-08-31 16:51:20 +0000510if test "$have_cpp" = "yes" ; then
511 echo
512 echo "Building TZlibTransport ...... : $have_zlib"
513 echo "Building TNonblockingServer .. : $have_libevent"
514fi
515if test "$have_java" = "yes" ; then
516 echo
517 echo "Using javac .................. : $JAVAC"
518 echo "Using java ................... : $JAVA"
519 echo "Using ant .................... : $ANT"
520fi
521if test "$have_csharp" = "yes" ; then
522 echo
523 echo "Using .NET 3.5 ............... : $net_3_5"
524fi
525if test "$have_python" = "yes" ; then
526 echo
527 echo "Using Python ................. : $PYTHON"
528fi
Anthony F. Molinaroddcf32a2010-10-05 16:45:50 +0000529if test "$have_php" = "yes" ; then
530 echo
531 echo "Using php-config ............. : $PHP_CONFIG"
532fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000533if test "$have_ruby" = "yes" ; then
534 echo
535 echo "Using Ruby ................... : $RUBY"
536 echo "Using rspec .................. : $RSPEC"
537fi
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000538if test "$have_haskell" = "yes" ; then
539 echo
540 echo "Using Haskell ................ : $RUNHASKELL"
Bryan Duxburyc6574472010-10-06 00:12:33 +0000541 echo "Using Cabal .................. : $CABAL"
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000542fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000543if test "$have_perl" = "yes" ; then
544 echo
545 echo "Using Perl ................... : $PERL"
546fi
547if test "$have_erlang" = "yes" ; then
548 echo
549 echo "Using erlc ................... : $ERLC"
550fi
Christian Lavoieafc6d8f2011-02-20 02:39:19 +0000551if test "$have_go" = "yes" ; then
552 echo
553 echo "Using GOROOT.................. : $GOROOT"
554 echo "Using GOBIN................... : $GOBIN"
555 echo "Using GOARCH.................. : $GOARCH"
556 echo "Using GO Compiler............. : $GO_C"
557 echo "Using GO Linker............... : $GO_L"
558fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000559echo
560echo "If something is missing that you think should be present,"
561echo "please skim the output of configure to find the missing"
562echo "component. Details are present in config.log."