blob: 27ef8d4209da44a90b146a2d7aecf141c501d554 [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
Jake Farrell99010692011-11-30 02:09:46 +000022AC_INIT([thrift], [0.9.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])
Jake Farrell3ad80812011-06-09 19:14:22 +0000112 if test "x$succeeded" = "xyes" ; then
David Reissef5e81b2010-08-31 16:51:28 +0000113 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
Roger Meier86e89862012-02-10 19:53:20 +0000121
122 PKG_CHECK_MODULES([QT], [QtCore >= 4.3, QtNetwork >= 4.3], have_qt=yes, have_qt=no)
123 if test "$have_qt" = "yes"; then
124 AC_PATH_PROGS([QT_MOC], [moc-qt4 moc])
125 have_qt=$success
126 fi
David Reissea4c9812010-08-31 16:51:21 +0000127fi
128AM_CONDITIONAL([WITH_CPP], [test "$have_cpp" = "yes"])
129AM_CONDITIONAL([AMX_HAVE_LIBEVENT], [test "$have_libevent" = "yes"])
130AM_CONDITIONAL([AMX_HAVE_ZLIB], [test "$have_zlib" = "yes"])
Roger Meier86e89862012-02-10 19:53:20 +0000131AM_CONDITIONAL([AMX_HAVE_QT], [test "$have_qt" = "yes"])
David Reiss832b2622007-12-28 18:25:33 +0000132
Roger Meier213a6642010-10-27 12:30:11 +0000133AX_THRIFT_LIB(c_glib, [C (GLib)], no)
134if test "$with_c_glib" = "yes"; then
135 PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.0], have_glib2=yes, have_glib2=no)
136 PKG_CHECK_MODULES([GOBJECT], [gobject-2.0 >= 2.0], have_gobject2=yes, have_gobject2=no)
137 if test "$have_glib2" = "yes" -a "$have_gobject2" = "yes" ; then
138 have_c_glib="yes"
139 fi
140fi
141AM_CONDITIONAL(WITH_C_GLIB, [test "$have_glib2" = "yes" -a "$have_gobject2" = "yes"])
142
David Reiss520b5ee2008-03-02 07:00:26 +0000143AX_THRIFT_LIB(csharp, [C#], yes)
144if test "$with_csharp" = "yes"; then
David Reissd831a212009-02-13 03:09:52 +0000145 PKG_CHECK_MODULES(MONO, mono >= 2.0.0, net_3_5=yes, net_3_5=no)
146 PKG_CHECK_MODULES(MONO, mono >= 1.2.4, have_mono=yes, have_mono=no)
David Reiss5cc3ba82010-08-31 16:51:20 +0000147 if test "$have_mono" = "yes" ; then
148 have_csharp="yes"
149 fi
David Reiss520b5ee2008-03-02 07:00:26 +0000150fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000151AM_CONDITIONAL(WITH_MONO, [test "$have_csharp" = "yes"])
David Reissd831a212009-02-13 03:09:52 +0000152AM_CONDITIONAL(NET_2_0, [test "$net_3_5" = "no"])
David Reiss1fdb5922008-02-06 22:10:12 +0000153
David Reiss62d39812008-03-02 07:00:22 +0000154AX_THRIFT_LIB(java, [Java], yes)
155if test "$with_java" = "yes"; then
David Reissd9cdf422009-03-13 21:25:29 +0000156 AX_JAVAC_AND_JAVA
Bryan Duxbury38bab122010-08-12 00:27:14 +0000157 AC_PATH_PROG([ANT], [ant])
Jake Farrell210d7662011-05-25 21:07:29 +0000158 AX_CHECK_ANT_VERSION($ANT, 1.7)
David Reissfff84d12009-05-22 19:50:33 +0000159 AC_SUBST(CLASSPATH)
David Reiss4ca0c8e2009-05-12 23:16:55 +0000160 AC_SUBST(ANT_FLAGS)
David Reiss5cc3ba82010-08-31 16:51:20 +0000161 if test "x$JAVAC" != "x" && test "x$JAVAC" != "x" && test "x$ANT" != "x" ; then
162 have_java="yes"
163 fi
David Reiss62d39812008-03-02 07:00:22 +0000164fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000165AM_CONDITIONAL([WITH_JAVA], [test "$have_java" = "yes"])
David Reiss1fdb5922008-02-06 22:10:12 +0000166
Christopher Pirob6f18c22008-03-04 07:09:12 +0000167AX_THRIFT_LIB(erlang, [Erlang], yes)
168if test "$with_erlang" = "yes"; then
David Reiss9e2fd792010-05-18 16:52:48 +0000169 AC_ERLANG_PATH_ERL
170 AC_ERLANG_PATH_ERLC
David Reiss31e1b6e2010-08-24 20:45:24 +0000171 if test -n "$ERLC" ; then
172 AC_ERLANG_SUBST_LIB_DIR
173 # Install into the detected Erlang directory instead of $libdir/erlang/lib
174 ERLANG_INSTALL_LIB_DIR="$ERLANG_LIB_DIR"
175 AC_ERLANG_SUBST_INSTALL_LIB_SUBDIR(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
176 fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000177 if test -n "$ERL" -a -n "$ERLC" ; then
178 have_erlang="yes"
179 fi
Christopher Pirob6f18c22008-03-04 07:09:12 +0000180fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000181AM_CONDITIONAL(WITH_ERLANG, [test "$have_erlang" = "yes"])
Christopher Pirob6f18c22008-03-04 07:09:12 +0000182
David Reiss5cc3ba82010-08-31 16:51:20 +0000183AX_THRIFT_LIB(python, [Python], yes)
184if test "$with_python" = "yes"; then
David Reiss1a140912008-06-11 01:16:37 +0000185 AM_PATH_PYTHON(2.4,, :)
David Reiss5cc3ba82010-08-31 16:51:20 +0000186 if test "x$PYTHON" != "x" && test "x$PYTHON" != "x:" ; then
187 have_python="yes"
188 fi
David Reiss1a140912008-06-11 01:16:37 +0000189fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000190AM_CONDITIONAL(WITH_PYTHON, [test "$have_python" = "yes"])
David Reiss1a140912008-06-11 01:16:37 +0000191
Roger Meier50e43492010-10-08 17:46:06 +0000192AC_PATH_PROG([TRIAL], [trial])
193
T Jake Luciani1952e542009-02-01 04:47:30 +0000194AX_THRIFT_LIB(perl, [Perl], yes)
195if test "$with_perl" = "yes"; then
196 AC_PATH_PROG([PERL], [perl])
David Reissdcc7e9b2010-08-31 16:51:22 +0000197 if test -n "$PERL" ; then
198 AC_PROG_PERL_MODULES([Bit::Vector], success="yes", success="no")
199 have_perl_bit_vector="$success"
Bryan Duxbury12373692010-08-19 05:23:59 +0000200 fi
David Reissdcc7e9b2010-08-31 16:51:22 +0000201 if test -n "$PERL" -a "$have_perl_bit_vector" = "yes" ; then
David Reiss5cc3ba82010-08-31 16:51:20 +0000202 have_perl="yes"
203 fi
T Jake Luciani1952e542009-02-01 04:47:30 +0000204fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000205AM_CONDITIONAL(WITH_PERL, [test "$have_perl" = "yes"])
T Jake Luciani1952e542009-02-01 04:47:30 +0000206
Bryan Duxbury6a681872010-05-02 22:39:31 +0000207AX_THRIFT_LIB(php, [PHP], yes)
208if test "$with_php" = "yes"; then
209 AC_PATH_PROG([PHP], [php])
David Reiss5cc3ba82010-08-31 16:51:20 +0000210 if test -n "$PHP" ; then
211 have_php="yes"
212 fi
Bryan Duxbury6a681872010-05-02 22:39:31 +0000213fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000214AM_CONDITIONAL(WITH_PHP, [test "$have_php" = "yes"])
Bryan Duxbury6a681872010-05-02 22:39:31 +0000215
Bryan Duxbury89200e12010-08-25 17:09:02 +0000216AX_THRIFT_LIB(php_extension, [PHP_EXTENSION], yes)
217if test "$with_php_extension" = "yes"; then
218 AC_PATH_PROG([PHP_CONFIG], [php-config])
Anthony F. Molinaroddcf32a2010-10-05 16:45:50 +0000219 if test -n "$PHP_CONFIG" ; then
220 AC_CONFIG_SUBDIRS([lib/php/src/ext/thrift_protocol])
221 have_php_extension="yes"
222 fi
Bryan Duxbury89200e12010-08-25 17:09:02 +0000223fi
Anthony F. Molinaroddcf32a2010-10-05 16:45:50 +0000224AM_CONDITIONAL(WITH_PHP_EXTENSION, [test "$have_php_extension" = "yes"])
Bryan Duxbury89200e12010-08-25 17:09:02 +0000225
Roger Meier33b720a2012-01-24 18:42:46 +0000226AC_PATH_PROG([PHPUNIT], [phpunit])
227AM_CONDITIONAL(HAVE_PHPUNIT, [test "x$PHPUNIT" != "x"])
228
Kevin Clark4bd89162008-07-08 00:47:49 +0000229AX_THRIFT_LIB(ruby, [Ruby], yes)
David Reiss5cc3ba82010-08-31 16:51:20 +0000230have_ruby=no
Kevin Clark4bd89162008-07-08 00:47:49 +0000231if test "$with_ruby" = "yes"; then
232 AC_PATH_PROG([RUBY], [ruby])
Jake Farrell9c39f772011-08-30 19:12:10 +0000233 AC_PATH_PROG([RAKE], [rake])
234 AC_PATH_PROG([BUNDLER], [bundle])
235 if test "x$RUBY" != "x" -a "x$RAKE" != "x"; then
David Reiss5cc3ba82010-08-31 16:51:20 +0000236 have_ruby="yes"
237 fi
Kevin Clark4bd89162008-07-08 00:47:49 +0000238fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000239AM_CONDITIONAL(WITH_RUBY, [test "$have_ruby" = "yes"])
Jake Farrell9c39f772011-08-30 19:12:10 +0000240AM_CONDITIONAL(HAVE_BUNDLER, [test "x$BUNDLER" != "x"])
Bryan Duxburyec473582009-04-07 16:31:04 +0000241
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000242AX_THRIFT_LIB(haskell, [Haskell], yes)
243have_haskell=no
244RUNHASKELL=true
Bryan Duxburyc6574472010-10-06 00:12:33 +0000245CABAL=true
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000246if test "$with_haskell" = "yes"; then
Bryan Duxburyc6574472010-10-06 00:12:33 +0000247 AC_PATH_PROG([CABAL], [cabal])
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000248 AC_PATH_PROG([RUNHASKELL], [runhaskell])
Bryan Duxburyc6574472010-10-06 00:12:33 +0000249 if test "x$CABAL" != "x" -a "x$RUNHASKELL" != "x"; then
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000250 have_haskell="yes"
251 else
252 RUNHASKELL=true
Bryan Duxburyc6574472010-10-06 00:12:33 +0000253 CABAL=true
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000254 fi
255fi
Bryan Duxburyc6574472010-10-06 00:12:33 +0000256AC_SUBST(CABAL)
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000257AC_SUBST(RUNHASKELL)
258AM_CONDITIONAL(WITH_HASKELL, [test "$have_haskell" = "yes"])
Kevin Clark4bd89162008-07-08 00:47:49 +0000259
Christian Lavoieafc6d8f2011-02-20 02:39:19 +0000260AX_THRIFT_LIB(go, [Go], yes)
261if test "$with_go" = "yes"; then
262 case X"$GOARCH" in
263 Xamd64)
264 GOARCH_NUM=6
265 ;;
266 X386)
267 GOARCH_NUM=8
268 ;;
269 Xarm)
270 GOARCH_NUM=5
271 ;;
272 *)
273 GOARCH_NUM=6
274 ;;
275 esac
276 GO_C=${GOBIN}/${GOARCH_NUM}g
277 GO_L=${GOBIN}/${GOARCH_NUM}l
278 GOMAKE=${GOBIN}/gomake
279 GOINSTALL=${GOBIN}/goinstall
280 AC_PATH_PROG([GO_C], [${GOARCH_NUM}g])
281 AC_PATH_PROG([GO_L], [${GOARCH_NUM}l])
282 AC_PATH_PROG([GOMAKE], [gomake])
283 AC_PATH_PROG([GOINSTALL], [goinstall])
284 if [[ -x "$GO_C" -a -x "$GO_L" -a -x "$GOMAKE" -a -x "$GOINSTALL" ]] ; then
285 have_go="yes"
286 fi
287fi
288AM_CONDITIONAL(WITH_GO, [test "$have_go" = "yes"])
289
Jake Farrell627f1a02011-09-14 03:43:49 +0000290have_tests=yes
291if test "$with_tests" = "no"; then
292 have_tests="no"
293fi
294AM_CONDITIONAL(WITH_TESTS, [test "$have_tests" = "yes"])
295
Roger Meier6e969652011-12-13 00:36:01 +0000296AM_CONDITIONAL(MINGW, false)
297case "${host_os}" in
298*mingw*)
299 mingw32_support="yes"
300 AC_CHECK_HEADER(windows.h)
301 AM_CONDITIONAL(MINGW, true)
302 ;;
303*)
304 AC_ISC_POSIX
305 ;;
306esac
307
David Reiss832b2622007-12-28 18:25:33 +0000308AC_C_CONST
309AC_C_INLINE
310AC_C_VOLATILE
311
312AC_HEADER_STDBOOL
313AC_HEADER_STDC
314AC_HEADER_TIME
Christian Lavoieafc6d8f2011-02-20 02:39:19 +0000315AC_HEADER_SYS_WAIT
316AC_TYPE_SIGNAL
David Reiss832b2622007-12-28 18:25:33 +0000317AC_CHECK_HEADERS([arpa/inet.h])
Bryan Duxbury184d2622010-08-17 17:43:58 +0000318AC_CHECK_HEADERS([sys/param.h])
David Reiss832b2622007-12-28 18:25:33 +0000319AC_CHECK_HEADERS([fcntl.h])
320AC_CHECK_HEADERS([inttypes.h])
David Reiss7ed4b982008-02-11 23:24:47 +0000321AC_CHECK_HEADERS([limits.h])
David Reiss832b2622007-12-28 18:25:33 +0000322AC_CHECK_HEADERS([netdb.h])
323AC_CHECK_HEADERS([netinet/in.h])
324AC_CHECK_HEADERS([pthread.h])
325AC_CHECK_HEADERS([stddef.h])
David Reissd7a16f42008-02-19 22:47:29 +0000326AC_CHECK_HEADERS([stdlib.h])
David Reiss832b2622007-12-28 18:25:33 +0000327AC_CHECK_HEADERS([sys/socket.h])
328AC_CHECK_HEADERS([sys/time.h])
Roger Meier2fa9c312011-09-05 19:15:53 +0000329AC_CHECK_HEADERS([sys/un.h])
330AC_CHECK_HEADERS([sys/poll.h])
331AC_CHECK_HEADERS([sys/resource.h])
David Reiss832b2622007-12-28 18:25:33 +0000332AC_CHECK_HEADERS([unistd.h])
333AC_CHECK_HEADERS([libintl.h])
334AC_CHECK_HEADERS([malloc.h])
Roger Meier9d9c4b92011-02-23 20:27:54 +0000335AC_CHECK_HEADERS([openssl/ssl.h])
336AC_CHECK_HEADERS([openssl/rand.h])
337AC_CHECK_HEADERS([openssl/x509v3.h])
Roger Meier12d70532011-12-14 23:35:28 +0000338AC_CHECK_HEADERS([sched.h])
David Reiss832b2622007-12-28 18:25:33 +0000339
340AC_CHECK_LIB(pthread, pthread_create)
David Reisse4ca1792009-05-21 02:28:19 +0000341dnl NOTE(dreiss): I haven't been able to find any really solid docs
342dnl on what librt is and how it fits into various Unix systems.
343dnl My best guess is that it is where glibc stashes its implementation
344dnl of the POSIX Real-Time Extensions. This seems necessary on Linux,
345dnl and we haven't yet found a system where this is a problem.
346AC_CHECK_LIB(rt, clock_gettime)
David Reiss9b903442009-10-21 05:51:28 +0000347AC_CHECK_LIB(socket, setsockopt)
Roger Meier68691122011-09-09 06:19:35 +0000348
349if test "$have_cpp" = "yes" ; then
350# mingw toolchain used to build "Thrift Compiler for Windows"
351# does not support libcrypto, so we just check if we building the cpp library
Jake Farrell012dfda2011-08-29 18:18:55 +0000352AC_CHECK_LIB(crypto,
353 BN_init,
354 [AC_CHECK_LIB(ssl,
355 SSL_ctrl,
356 [LIBS="-lssl -lcrypto $LIBS"],
357 [AC_MSG_ERROR(["Error: libssl required"])],
358 -lcrypto
359 )],
360 [AC_MSG_ERROR(["Error: libcrypto required."])]
361)
Roger Meier68691122011-09-09 06:19:35 +0000362fi
David Reiss832b2622007-12-28 18:25:33 +0000363
364AC_TYPE_INT16_T
365AC_TYPE_INT32_T
366AC_TYPE_INT64_T
367AC_TYPE_INT8_T
368AC_TYPE_MODE_T
369AC_TYPE_OFF_T
370AC_TYPE_SIZE_T
David Reiss847a2942008-04-21 18:07:43 +0000371AC_TYPE_SSIZE_T
David Reiss832b2622007-12-28 18:25:33 +0000372AC_TYPE_UINT16_T
373AC_TYPE_UINT32_T
374AC_TYPE_UINT64_T
375AC_TYPE_UINT8_T
David Reiss33fc5ad2008-05-09 07:17:34 +0000376AC_CHECK_TYPES([ptrdiff_t], [], [exit 1])
David Reiss832b2622007-12-28 18:25:33 +0000377
David Reiss7ed4b982008-02-11 23:24:47 +0000378AC_STRUCT_TM
379
David Reiss85a8f7b2009-05-21 02:28:16 +0000380dnl NOTE(dreiss): AI_ADDRCONFIG is not defined on OpenBSD.
381AC_CHECK_DECL([AI_ADDRCONFIG], [],
382 [AC_DEFINE([AI_ADDRCONFIG], 0,
383 [Define if the AI_ADDRCONFIG symbol is unavailable])],
384 [
385 #include <sys/types.h>
386 #include <sys/socket.h>
387 #include <netdb.h>
388])
389
David Reiss832b2622007-12-28 18:25:33 +0000390AC_FUNC_ALLOCA
Roger Meier213a6642010-10-27 12:30:11 +0000391AC_FUNC_FORK
David Reiss832b2622007-12-28 18:25:33 +0000392AC_FUNC_MALLOC
David Reiss7ed4b982008-02-11 23:24:47 +0000393AC_FUNC_MEMCMP
David Reiss832b2622007-12-28 18:25:33 +0000394AC_FUNC_REALLOC
395AC_FUNC_SELECT_ARGTYPES
396AC_FUNC_STAT
397AC_FUNC_STRERROR_R
David Reiss7ed4b982008-02-11 23:24:47 +0000398AC_FUNC_STRFTIME
David Reiss832b2622007-12-28 18:25:33 +0000399AC_FUNC_VPRINTF
400AC_CHECK_FUNCS([strtoul])
401AC_CHECK_FUNCS([bzero])
David Reiss7ed4b982008-02-11 23:24:47 +0000402AC_CHECK_FUNCS([ftruncate])
David Reiss832b2622007-12-28 18:25:33 +0000403AC_CHECK_FUNCS([gethostbyname])
404AC_CHECK_FUNCS([gettimeofday])
405AC_CHECK_FUNCS([memmove])
406AC_CHECK_FUNCS([memset])
407AC_CHECK_FUNCS([mkdir])
408AC_CHECK_FUNCS([realpath])
409AC_CHECK_FUNCS([select])
410AC_CHECK_FUNCS([socket])
411AC_CHECK_FUNCS([strchr])
412AC_CHECK_FUNCS([strdup])
David Reiss7ed4b982008-02-11 23:24:47 +0000413AC_CHECK_FUNCS([strerror])
David Reiss832b2622007-12-28 18:25:33 +0000414AC_CHECK_FUNCS([strstr])
415AC_CHECK_FUNCS([strtol])
416AC_CHECK_FUNCS([sqrt])
David Reisse4ca1792009-05-21 02:28:19 +0000417dnl The following functions are optional.
Roger Meier213a6642010-10-27 12:30:11 +0000418AC_CHECK_FUNCS([alarm])
David Reisse4ca1792009-05-21 02:28:19 +0000419AC_CHECK_FUNCS([clock_gettime])
420AC_CHECK_FUNCS([sched_get_priority_min])
421AC_CHECK_FUNCS([sched_get_priority_max])
David Reiss832b2622007-12-28 18:25:33 +0000422
David Reiss79db3e12010-08-31 16:51:31 +0000423if test "$cross_compiling" = "no" ; then
424 AX_SIGNED_RIGHT_SHIFT
425fi
David Reisse4d4ea02009-04-02 21:37:17 +0000426
David Reiss5ddabb82010-10-06 17:09:37 +0000427dnl autoscan thinks we need this macro because we have a member function
428dnl called "error". Invoke the macro but don't run the check so autoscan
429dnl thinks we are in the clear. It's highly unlikely that we will ever
430dnl actually use the function that this checks for.
431if false ; then
432 AC_FUNC_ERROR_AT_LINE
433fi
434
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
Roger Meier3faaedf2011-10-02 10:51:45 +0000458AC_ARG_ENABLE(boostthreads,
459 [ --enable-boostthreads use boost threads, instead of POSIX pthread (experimental) ],
460 [case "${enableval}" in
461 yes) ENABLE_BOOSTTHREADS=1 ;;
462 no) ENABLE_BOOSTTHREADS=0 ;;
463 *) AC_MSG_ERROR(bad value ${enableval} for --enable-cov) ;;
464 esac],
465 [ENABLE_BOOSTTHREADS=2])
466
467
468if test "x[$]ENABLE_BOOSTTHREADS" = "x1"; then
469 AC_MSG_WARN(enable boostthreads)
470 AC_DEFINE([USE_BOOST_THREAD], [1], [experimental --enable-boostthreads that replaces POSIX pthread by boost::thread])
Roger Meier38315782011-11-06 11:29:41 +0000471 LIBS="-lboost_thread $LIBS"
Roger Meier3faaedf2011-10-02 10:51:45 +0000472fi
473
474AM_CONDITIONAL([WITH_BOOSTTHREADS], [test "x[$]ENABLE_BOOSTTHREADS" = "x1"])
475
David Reiss832b2622007-12-28 18:25:33 +0000476AC_CONFIG_HEADERS(config.h:config.hin)
477
478AC_CONFIG_FILES([
479 Makefile
480 compiler/cpp/Makefile
Bryan Duxburya1e268c2010-05-03 21:33:00 +0000481 compiler/cpp/version.h
David Reiss832b2622007-12-28 18:25:33 +0000482 lib/Makefile
483 lib/cpp/Makefile
David Reiss351e22b2010-08-31 16:51:19 +0000484 lib/cpp/test/Makefile
David Reiss832b2622007-12-28 18:25:33 +0000485 lib/cpp/thrift-nb.pc
486 lib/cpp/thrift-z.pc
Roger Meier86e89862012-02-10 19:53:20 +0000487 lib/cpp/thrift-qt.pc
Bryan Duxburyc6574472010-10-06 00:12:33 +0000488 lib/cpp/thrift.pc
Roger Meier213a6642010-10-27 12:30:11 +0000489 lib/c_glib/Makefile
490 lib/c_glib/thrift_c_glib.pc
491 lib/c_glib/test/Makefile
David Reiss1fdb5922008-02-06 22:10:12 +0000492 lib/csharp/Makefile
Bryan Duxbury7173bd92010-05-02 22:54:22 +0000493 lib/erl/Makefile
Anthony F. Molinaro917d8982011-06-21 06:20:18 +0000494 lib/erl/src/thrift.app.src
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000495 lib/hs/Makefile
David Reissf8dcf032008-02-23 22:07:39 +0000496 lib/java/Makefile
Roger Meierf2495762011-03-17 19:13:36 +0000497 lib/js/test/Makefile
T Jake Luciani1952e542009-02-01 04:47:30 +0000498 lib/perl/Makefile
499 lib/perl/test/Makefile
Bryan Duxbury6a681872010-05-02 22:39:31 +0000500 lib/php/Makefile
Roger Meier33b720a2012-01-24 18:42:46 +0000501 lib/php/test/Makefile
David Reiss832b2622007-12-28 18:25:33 +0000502 lib/py/Makefile
Kevin Clark4bd89162008-07-08 00:47:49 +0000503 lib/rb/Makefile
David Reiss8180c0c2008-02-04 21:14:14 +0000504 test/Makefile
Roger Meierd3b9dca2011-06-24 14:01:10 +0000505 test/cpp/Makefile
Bryan Duxburyc6574472010-10-06 00:12:33 +0000506 test/hs/Makefile
Roger Meiereaa61d82012-01-12 21:38:29 +0000507 test/nodejs/Makefile
Roger Meierb33967b2012-01-21 09:18:05 +0000508 test/php/Makefile
Roger Meier01b568c2012-01-10 21:30:02 +0000509 test/perl/Makefile
David Reiss9ff3b9d2008-02-15 01:10:23 +0000510 test/py/Makefile
Roger Meier50e43492010-10-08 17:46:06 +0000511 test/py.twisted/Makefile
Kevin Clark4bd89162008-07-08 00:47:49 +0000512 test/rb/Makefile
David Reiss832b2622007-12-28 18:25:33 +0000513])
Marc Slemkob09f5882006-08-23 22:03:34 +0000514
515AC_OUTPUT
David Reiss5cc3ba82010-08-31 16:51:20 +0000516
517
518echo
519echo "$PACKAGE $VERSION"
520echo
Roger Meier86e89862012-02-10 19:53:20 +0000521echo "Building code generators ..... : $thrift_generators"
David Reiss5cc3ba82010-08-31 16:51:20 +0000522echo
David Reissea4c9812010-08-31 16:51:21 +0000523echo "Building C++ Library ......... : $have_cpp"
Roger Meier213a6642010-10-27 12:30:11 +0000524echo "Building C (GLib) Library .... : $have_c_glib"
David Reiss5cc3ba82010-08-31 16:51:20 +0000525echo "Building Java Library ........ : $have_java"
526echo "Building C# Library .......... : $have_csharp"
527echo "Building Python Library ...... : $have_python"
528echo "Building Ruby Library ........ : $have_ruby"
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000529echo "Building Haskell Library ..... : $have_haskell"
David Reiss5cc3ba82010-08-31 16:51:20 +0000530echo "Building Perl Library ........ : $have_perl"
531echo "Building PHP Library ......... : $have_php"
532echo "Building Erlang Library ...... : $have_erlang"
Christian Lavoieafc6d8f2011-02-20 02:39:19 +0000533echo "Building Go Library .......... : $have_go"
David Reiss5cc3ba82010-08-31 16:51:20 +0000534if test "$have_cpp" = "yes" ; then
535 echo
Roger Meier86e89862012-02-10 19:53:20 +0000536 echo "C++ Library:"
537 echo " Build TZlibTransport ...... : $have_zlib"
538 echo " Build TNonblockingServer .. : $have_libevent"
539 echo " Build TQTcpServer (Qt) .... : $have_qt"
David Reiss5cc3ba82010-08-31 16:51:20 +0000540fi
541if test "$have_java" = "yes" ; then
542 echo
Roger Meier86e89862012-02-10 19:53:20 +0000543 echo "Java Library:"
544 echo " Using javac ............... : $JAVAC"
545 echo " Using java ................ : $JAVA"
546 echo " Using ant ................. : $ANT"
David Reiss5cc3ba82010-08-31 16:51:20 +0000547fi
548if test "$have_csharp" = "yes" ; then
549 echo
Roger Meier86e89862012-02-10 19:53:20 +0000550 echo "C# Library:"
551 echo " Using .NET 3.5 ............ : $net_3_5"
David Reiss5cc3ba82010-08-31 16:51:20 +0000552fi
553if test "$have_python" = "yes" ; then
554 echo
Roger Meier86e89862012-02-10 19:53:20 +0000555 echo "Python Library:"
556 echo " Using Python .............. : $PYTHON"
David Reiss5cc3ba82010-08-31 16:51:20 +0000557fi
Anthony F. Molinaroddcf32a2010-10-05 16:45:50 +0000558if test "$have_php" = "yes" ; then
559 echo
Roger Meier86e89862012-02-10 19:53:20 +0000560 echo "PHP Library:"
561 echo " Using php-config .......... : $PHP_CONFIG"
Anthony F. Molinaroddcf32a2010-10-05 16:45:50 +0000562fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000563if test "$have_ruby" = "yes" ; then
564 echo
Roger Meier86e89862012-02-10 19:53:20 +0000565 echo "Ruby Library:"
566 echo " Using Ruby ................ : $RUBY"
David Reiss5cc3ba82010-08-31 16:51:20 +0000567fi
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000568if test "$have_haskell" = "yes" ; then
569 echo
Roger Meier86e89862012-02-10 19:53:20 +0000570 echo "Haskell Library:"
571 echo " Using Haskell ............. : $RUNHASKELL"
572 echo " Using Cabal ............... : $CABAL"
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000573fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000574if test "$have_perl" = "yes" ; then
575 echo
Roger Meier86e89862012-02-10 19:53:20 +0000576 echo "Perl Library:"
577 echo " Using Perl ................ : $PERL"
David Reiss5cc3ba82010-08-31 16:51:20 +0000578fi
579if test "$have_erlang" = "yes" ; then
580 echo
Roger Meier86e89862012-02-10 19:53:20 +0000581 echo "Erlang Library:"
582 echo " Using erlc ................ : $ERLC"
David Reiss5cc3ba82010-08-31 16:51:20 +0000583fi
Christian Lavoieafc6d8f2011-02-20 02:39:19 +0000584if test "$have_go" = "yes" ; then
585 echo
Roger Meier86e89862012-02-10 19:53:20 +0000586 echo "Go Library:"
587 echo " Using GOROOT............... : $GOROOT"
588 echo " Using GOBIN................ : $GOBIN"
589 echo " Using GOARCH............... : $GOARCH"
590 echo " Using GO Compiler.......... : $GO_C"
591 echo " Using GO Linker............ : $GO_L"
Christian Lavoieafc6d8f2011-02-20 02:39:19 +0000592fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000593echo
594echo "If something is missing that you think should be present,"
595echo "please skim the output of configure to find the missing"
596echo "component. Details are present in config.log."