blob: db1591f869d52778ad143d9b49c88ae3405ccb6f [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
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])
Jake Farrell210d7662011-05-25 21:07:29 +0000151 AX_CHECK_ANT_VERSION($ANT, 1.7)
David Reissfff84d12009-05-22 19:50:33 +0000152 AC_SUBST(CLASSPATH)
David Reiss4ca0c8e2009-05-12 23:16:55 +0000153 AC_SUBST(ANT_FLAGS)
David Reiss5cc3ba82010-08-31 16:51:20 +0000154 if test "x$JAVAC" != "x" && test "x$JAVAC" != "x" && test "x$ANT" != "x" ; then
155 have_java="yes"
156 fi
David Reiss62d39812008-03-02 07:00:22 +0000157fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000158AM_CONDITIONAL([WITH_JAVA], [test "$have_java" = "yes"])
David Reiss1fdb5922008-02-06 22:10:12 +0000159
Christopher Pirob6f18c22008-03-04 07:09:12 +0000160AX_THRIFT_LIB(erlang, [Erlang], yes)
161if test "$with_erlang" = "yes"; then
David Reiss9e2fd792010-05-18 16:52:48 +0000162 AC_ERLANG_PATH_ERL
163 AC_ERLANG_PATH_ERLC
David Reiss31e1b6e2010-08-24 20:45:24 +0000164 if test -n "$ERLC" ; then
165 AC_ERLANG_SUBST_LIB_DIR
166 # Install into the detected Erlang directory instead of $libdir/erlang/lib
167 ERLANG_INSTALL_LIB_DIR="$ERLANG_LIB_DIR"
168 AC_ERLANG_SUBST_INSTALL_LIB_SUBDIR(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
169 fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000170 if test -n "$ERL" -a -n "$ERLC" ; then
171 have_erlang="yes"
172 fi
Christopher Pirob6f18c22008-03-04 07:09:12 +0000173fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000174AM_CONDITIONAL(WITH_ERLANG, [test "$have_erlang" = "yes"])
Christopher Pirob6f18c22008-03-04 07:09:12 +0000175
David Reiss5cc3ba82010-08-31 16:51:20 +0000176AX_THRIFT_LIB(python, [Python], yes)
177if test "$with_python" = "yes"; then
David Reiss1a140912008-06-11 01:16:37 +0000178 AM_PATH_PYTHON(2.4,, :)
David Reiss5cc3ba82010-08-31 16:51:20 +0000179 if test "x$PYTHON" != "x" && test "x$PYTHON" != "x:" ; then
180 have_python="yes"
181 fi
David Reiss1a140912008-06-11 01:16:37 +0000182fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000183AM_CONDITIONAL(WITH_PYTHON, [test "$have_python" = "yes"])
David Reiss1a140912008-06-11 01:16:37 +0000184
Roger Meier50e43492010-10-08 17:46:06 +0000185AC_PATH_PROG([TRIAL], [trial])
186
T Jake Luciani1952e542009-02-01 04:47:30 +0000187AX_THRIFT_LIB(perl, [Perl], yes)
188if test "$with_perl" = "yes"; then
189 AC_PATH_PROG([PERL], [perl])
David Reissdcc7e9b2010-08-31 16:51:22 +0000190 if test -n "$PERL" ; then
191 AC_PROG_PERL_MODULES([Bit::Vector], success="yes", success="no")
192 have_perl_bit_vector="$success"
Bryan Duxbury12373692010-08-19 05:23:59 +0000193 fi
David Reissdcc7e9b2010-08-31 16:51:22 +0000194 if test -n "$PERL" -a "$have_perl_bit_vector" = "yes" ; then
David Reiss5cc3ba82010-08-31 16:51:20 +0000195 have_perl="yes"
196 fi
T Jake Luciani1952e542009-02-01 04:47:30 +0000197fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000198AM_CONDITIONAL(WITH_PERL, [test "$have_perl" = "yes"])
T Jake Luciani1952e542009-02-01 04:47:30 +0000199
Bryan Duxbury6a681872010-05-02 22:39:31 +0000200AX_THRIFT_LIB(php, [PHP], yes)
201if test "$with_php" = "yes"; then
202 AC_PATH_PROG([PHP], [php])
David Reiss5cc3ba82010-08-31 16:51:20 +0000203 if test -n "$PHP" ; then
204 have_php="yes"
205 fi
Bryan Duxbury6a681872010-05-02 22:39:31 +0000206fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000207AM_CONDITIONAL(WITH_PHP, [test "$have_php" = "yes"])
Bryan Duxbury6a681872010-05-02 22:39:31 +0000208
Bryan Duxbury89200e12010-08-25 17:09:02 +0000209AX_THRIFT_LIB(php_extension, [PHP_EXTENSION], yes)
210if test "$with_php_extension" = "yes"; then
211 AC_PATH_PROG([PHP_CONFIG], [php-config])
Anthony F. Molinaroddcf32a2010-10-05 16:45:50 +0000212 if test -n "$PHP_CONFIG" ; then
213 AC_CONFIG_SUBDIRS([lib/php/src/ext/thrift_protocol])
214 have_php_extension="yes"
215 fi
Bryan Duxbury89200e12010-08-25 17:09:02 +0000216fi
Anthony F. Molinaroddcf32a2010-10-05 16:45:50 +0000217AM_CONDITIONAL(WITH_PHP_EXTENSION, [test "$have_php_extension" = "yes"])
Bryan Duxbury89200e12010-08-25 17:09:02 +0000218
Roger Meier33b720a2012-01-24 18:42:46 +0000219AC_PATH_PROG([PHPUNIT], [phpunit])
220AM_CONDITIONAL(HAVE_PHPUNIT, [test "x$PHPUNIT" != "x"])
221
Kevin Clark4bd89162008-07-08 00:47:49 +0000222AX_THRIFT_LIB(ruby, [Ruby], yes)
David Reiss5cc3ba82010-08-31 16:51:20 +0000223have_ruby=no
Kevin Clark4bd89162008-07-08 00:47:49 +0000224if test "$with_ruby" = "yes"; then
225 AC_PATH_PROG([RUBY], [ruby])
Jake Farrell9c39f772011-08-30 19:12:10 +0000226 AC_PATH_PROG([RAKE], [rake])
227 AC_PATH_PROG([BUNDLER], [bundle])
228 if test "x$RUBY" != "x" -a "x$RAKE" != "x"; then
David Reiss5cc3ba82010-08-31 16:51:20 +0000229 have_ruby="yes"
230 fi
Kevin Clark4bd89162008-07-08 00:47:49 +0000231fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000232AM_CONDITIONAL(WITH_RUBY, [test "$have_ruby" = "yes"])
Jake Farrell9c39f772011-08-30 19:12:10 +0000233AM_CONDITIONAL(HAVE_BUNDLER, [test "x$BUNDLER" != "x"])
Bryan Duxburyec473582009-04-07 16:31:04 +0000234
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000235AX_THRIFT_LIB(haskell, [Haskell], yes)
236have_haskell=no
237RUNHASKELL=true
Bryan Duxburyc6574472010-10-06 00:12:33 +0000238CABAL=true
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000239if test "$with_haskell" = "yes"; then
Bryan Duxburyc6574472010-10-06 00:12:33 +0000240 AC_PATH_PROG([CABAL], [cabal])
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000241 AC_PATH_PROG([RUNHASKELL], [runhaskell])
Bryan Duxburyc6574472010-10-06 00:12:33 +0000242 if test "x$CABAL" != "x" -a "x$RUNHASKELL" != "x"; then
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000243 have_haskell="yes"
244 else
245 RUNHASKELL=true
Bryan Duxburyc6574472010-10-06 00:12:33 +0000246 CABAL=true
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000247 fi
248fi
Bryan Duxburyc6574472010-10-06 00:12:33 +0000249AC_SUBST(CABAL)
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000250AC_SUBST(RUNHASKELL)
251AM_CONDITIONAL(WITH_HASKELL, [test "$have_haskell" = "yes"])
Kevin Clark4bd89162008-07-08 00:47:49 +0000252
Christian Lavoieafc6d8f2011-02-20 02:39:19 +0000253AX_THRIFT_LIB(go, [Go], yes)
254if test "$with_go" = "yes"; then
255 case X"$GOARCH" in
256 Xamd64)
257 GOARCH_NUM=6
258 ;;
259 X386)
260 GOARCH_NUM=8
261 ;;
262 Xarm)
263 GOARCH_NUM=5
264 ;;
265 *)
266 GOARCH_NUM=6
267 ;;
268 esac
269 GO_C=${GOBIN}/${GOARCH_NUM}g
270 GO_L=${GOBIN}/${GOARCH_NUM}l
271 GOMAKE=${GOBIN}/gomake
272 GOINSTALL=${GOBIN}/goinstall
273 AC_PATH_PROG([GO_C], [${GOARCH_NUM}g])
274 AC_PATH_PROG([GO_L], [${GOARCH_NUM}l])
275 AC_PATH_PROG([GOMAKE], [gomake])
276 AC_PATH_PROG([GOINSTALL], [goinstall])
277 if [[ -x "$GO_C" -a -x "$GO_L" -a -x "$GOMAKE" -a -x "$GOINSTALL" ]] ; then
278 have_go="yes"
279 fi
280fi
281AM_CONDITIONAL(WITH_GO, [test "$have_go" = "yes"])
282
Jake Farrell627f1a02011-09-14 03:43:49 +0000283have_tests=yes
284if test "$with_tests" = "no"; then
285 have_tests="no"
286fi
287AM_CONDITIONAL(WITH_TESTS, [test "$have_tests" = "yes"])
288
Roger Meier6e969652011-12-13 00:36:01 +0000289AM_CONDITIONAL(MINGW, false)
290case "${host_os}" in
291*mingw*)
292 mingw32_support="yes"
293 AC_CHECK_HEADER(windows.h)
294 AM_CONDITIONAL(MINGW, true)
295 ;;
296*)
297 AC_ISC_POSIX
298 ;;
299esac
300
David Reiss832b2622007-12-28 18:25:33 +0000301AC_C_CONST
302AC_C_INLINE
303AC_C_VOLATILE
304
305AC_HEADER_STDBOOL
306AC_HEADER_STDC
307AC_HEADER_TIME
Christian Lavoieafc6d8f2011-02-20 02:39:19 +0000308AC_HEADER_SYS_WAIT
309AC_TYPE_SIGNAL
David Reiss832b2622007-12-28 18:25:33 +0000310AC_CHECK_HEADERS([arpa/inet.h])
Bryan Duxbury184d2622010-08-17 17:43:58 +0000311AC_CHECK_HEADERS([sys/param.h])
David Reiss832b2622007-12-28 18:25:33 +0000312AC_CHECK_HEADERS([fcntl.h])
313AC_CHECK_HEADERS([inttypes.h])
David Reiss7ed4b982008-02-11 23:24:47 +0000314AC_CHECK_HEADERS([limits.h])
David Reiss832b2622007-12-28 18:25:33 +0000315AC_CHECK_HEADERS([netdb.h])
316AC_CHECK_HEADERS([netinet/in.h])
317AC_CHECK_HEADERS([pthread.h])
318AC_CHECK_HEADERS([stddef.h])
David Reissd7a16f42008-02-19 22:47:29 +0000319AC_CHECK_HEADERS([stdlib.h])
David Reiss832b2622007-12-28 18:25:33 +0000320AC_CHECK_HEADERS([sys/socket.h])
321AC_CHECK_HEADERS([sys/time.h])
Roger Meier2fa9c312011-09-05 19:15:53 +0000322AC_CHECK_HEADERS([sys/un.h])
323AC_CHECK_HEADERS([sys/poll.h])
324AC_CHECK_HEADERS([sys/resource.h])
David Reiss832b2622007-12-28 18:25:33 +0000325AC_CHECK_HEADERS([unistd.h])
326AC_CHECK_HEADERS([libintl.h])
327AC_CHECK_HEADERS([malloc.h])
Roger Meier9d9c4b92011-02-23 20:27:54 +0000328AC_CHECK_HEADERS([openssl/ssl.h])
329AC_CHECK_HEADERS([openssl/rand.h])
330AC_CHECK_HEADERS([openssl/x509v3.h])
Roger Meier12d70532011-12-14 23:35:28 +0000331AC_CHECK_HEADERS([sched.h])
David Reiss832b2622007-12-28 18:25:33 +0000332
333AC_CHECK_LIB(pthread, pthread_create)
David Reisse4ca1792009-05-21 02:28:19 +0000334dnl NOTE(dreiss): I haven't been able to find any really solid docs
335dnl on what librt is and how it fits into various Unix systems.
336dnl My best guess is that it is where glibc stashes its implementation
337dnl of the POSIX Real-Time Extensions. This seems necessary on Linux,
338dnl and we haven't yet found a system where this is a problem.
339AC_CHECK_LIB(rt, clock_gettime)
David Reiss9b903442009-10-21 05:51:28 +0000340AC_CHECK_LIB(socket, setsockopt)
Roger Meier68691122011-09-09 06:19:35 +0000341
342if test "$have_cpp" = "yes" ; then
343# mingw toolchain used to build "Thrift Compiler for Windows"
344# does not support libcrypto, so we just check if we building the cpp library
Jake Farrell012dfda2011-08-29 18:18:55 +0000345AC_CHECK_LIB(crypto,
346 BN_init,
347 [AC_CHECK_LIB(ssl,
348 SSL_ctrl,
349 [LIBS="-lssl -lcrypto $LIBS"],
350 [AC_MSG_ERROR(["Error: libssl required"])],
351 -lcrypto
352 )],
353 [AC_MSG_ERROR(["Error: libcrypto required."])]
354)
Roger Meier68691122011-09-09 06:19:35 +0000355fi
David Reiss832b2622007-12-28 18:25:33 +0000356
357AC_TYPE_INT16_T
358AC_TYPE_INT32_T
359AC_TYPE_INT64_T
360AC_TYPE_INT8_T
361AC_TYPE_MODE_T
362AC_TYPE_OFF_T
363AC_TYPE_SIZE_T
David Reiss847a2942008-04-21 18:07:43 +0000364AC_TYPE_SSIZE_T
David Reiss832b2622007-12-28 18:25:33 +0000365AC_TYPE_UINT16_T
366AC_TYPE_UINT32_T
367AC_TYPE_UINT64_T
368AC_TYPE_UINT8_T
David Reiss33fc5ad2008-05-09 07:17:34 +0000369AC_CHECK_TYPES([ptrdiff_t], [], [exit 1])
David Reiss832b2622007-12-28 18:25:33 +0000370
David Reiss7ed4b982008-02-11 23:24:47 +0000371AC_STRUCT_TM
372
David Reiss85a8f7b2009-05-21 02:28:16 +0000373dnl NOTE(dreiss): AI_ADDRCONFIG is not defined on OpenBSD.
374AC_CHECK_DECL([AI_ADDRCONFIG], [],
375 [AC_DEFINE([AI_ADDRCONFIG], 0,
376 [Define if the AI_ADDRCONFIG symbol is unavailable])],
377 [
378 #include <sys/types.h>
379 #include <sys/socket.h>
380 #include <netdb.h>
381])
382
David Reiss832b2622007-12-28 18:25:33 +0000383AC_FUNC_ALLOCA
Roger Meier213a6642010-10-27 12:30:11 +0000384AC_FUNC_FORK
David Reiss832b2622007-12-28 18:25:33 +0000385AC_FUNC_MALLOC
David Reiss7ed4b982008-02-11 23:24:47 +0000386AC_FUNC_MEMCMP
David Reiss832b2622007-12-28 18:25:33 +0000387AC_FUNC_REALLOC
388AC_FUNC_SELECT_ARGTYPES
389AC_FUNC_STAT
390AC_FUNC_STRERROR_R
David Reiss7ed4b982008-02-11 23:24:47 +0000391AC_FUNC_STRFTIME
David Reiss832b2622007-12-28 18:25:33 +0000392AC_FUNC_VPRINTF
393AC_CHECK_FUNCS([strtoul])
394AC_CHECK_FUNCS([bzero])
David Reiss7ed4b982008-02-11 23:24:47 +0000395AC_CHECK_FUNCS([ftruncate])
David Reiss832b2622007-12-28 18:25:33 +0000396AC_CHECK_FUNCS([gethostbyname])
397AC_CHECK_FUNCS([gettimeofday])
398AC_CHECK_FUNCS([memmove])
399AC_CHECK_FUNCS([memset])
400AC_CHECK_FUNCS([mkdir])
401AC_CHECK_FUNCS([realpath])
402AC_CHECK_FUNCS([select])
403AC_CHECK_FUNCS([socket])
404AC_CHECK_FUNCS([strchr])
405AC_CHECK_FUNCS([strdup])
David Reiss7ed4b982008-02-11 23:24:47 +0000406AC_CHECK_FUNCS([strerror])
David Reiss832b2622007-12-28 18:25:33 +0000407AC_CHECK_FUNCS([strstr])
408AC_CHECK_FUNCS([strtol])
409AC_CHECK_FUNCS([sqrt])
David Reisse4ca1792009-05-21 02:28:19 +0000410dnl The following functions are optional.
Roger Meier213a6642010-10-27 12:30:11 +0000411AC_CHECK_FUNCS([alarm])
David Reisse4ca1792009-05-21 02:28:19 +0000412AC_CHECK_FUNCS([clock_gettime])
413AC_CHECK_FUNCS([sched_get_priority_min])
414AC_CHECK_FUNCS([sched_get_priority_max])
David Reiss832b2622007-12-28 18:25:33 +0000415
David Reiss79db3e12010-08-31 16:51:31 +0000416if test "$cross_compiling" = "no" ; then
417 AX_SIGNED_RIGHT_SHIFT
418fi
David Reisse4d4ea02009-04-02 21:37:17 +0000419
David Reiss5ddabb82010-10-06 17:09:37 +0000420dnl autoscan thinks we need this macro because we have a member function
421dnl called "error". Invoke the macro but don't run the check so autoscan
422dnl thinks we are in the clear. It's highly unlikely that we will ever
423dnl actually use the function that this checks for.
424if false ; then
425 AC_FUNC_ERROR_AT_LINE
426fi
427
Roger Meier213a6642010-10-27 12:30:11 +0000428# --- Coverage hooks ---
429
430AC_ARG_ENABLE(coverage,
431 [ --enable-coverage turn on -fprofile-arcs -ftest-coverage],
432 [case "${enableval}" in
433 yes) ENABLE_COVERAGE=1 ;;
434 no) ENABLE_COVERAGE=0 ;;
435 *) AC_MSG_ERROR(bad value ${enableval} for --enable-cov) ;;
436 esac],
437 [ENABLE_COVERAGE=2])
438
439if test "x[$]ENABLE_COVERAGE" = "x1"; then
440 AC_MSG_WARN(enable coverage)
441 GCOV_CFLAGS="`echo \"[$]CFLAGS\" | perl -pe 's/-O\d+//g;'` -fprofile-arcs -ftest-coverage"
442 GCOV_CXXFLAGS="`echo \"[$]CXXFLAGS\" | perl -pe 's/-O\d+//g;'` -fprofile-arcs -ftest-coverage"
443 GCOV_LDFLAGS="-XCClinker -fprofile-arcs -XCClinker -ftest-coverage"
444fi
445
446AC_SUBST(ENABLE_COVERAGE)
447AC_SUBST(GCOV_CFLAGS)
448AC_SUBST(GCOV_CXXFLAGS)
449AC_SUBST(GCOV_LDFLAGS)
450
Roger Meier3faaedf2011-10-02 10:51:45 +0000451AC_ARG_ENABLE(boostthreads,
452 [ --enable-boostthreads use boost threads, instead of POSIX pthread (experimental) ],
453 [case "${enableval}" in
454 yes) ENABLE_BOOSTTHREADS=1 ;;
455 no) ENABLE_BOOSTTHREADS=0 ;;
456 *) AC_MSG_ERROR(bad value ${enableval} for --enable-cov) ;;
457 esac],
458 [ENABLE_BOOSTTHREADS=2])
459
460
461if test "x[$]ENABLE_BOOSTTHREADS" = "x1"; then
462 AC_MSG_WARN(enable boostthreads)
463 AC_DEFINE([USE_BOOST_THREAD], [1], [experimental --enable-boostthreads that replaces POSIX pthread by boost::thread])
Roger Meier38315782011-11-06 11:29:41 +0000464 LIBS="-lboost_thread $LIBS"
Roger Meier3faaedf2011-10-02 10:51:45 +0000465fi
466
467AM_CONDITIONAL([WITH_BOOSTTHREADS], [test "x[$]ENABLE_BOOSTTHREADS" = "x1"])
468
David Reiss832b2622007-12-28 18:25:33 +0000469AC_CONFIG_HEADERS(config.h:config.hin)
470
471AC_CONFIG_FILES([
472 Makefile
473 compiler/cpp/Makefile
Bryan Duxburya1e268c2010-05-03 21:33:00 +0000474 compiler/cpp/version.h
David Reiss832b2622007-12-28 18:25:33 +0000475 lib/Makefile
476 lib/cpp/Makefile
David Reiss351e22b2010-08-31 16:51:19 +0000477 lib/cpp/test/Makefile
David Reiss832b2622007-12-28 18:25:33 +0000478 lib/cpp/thrift-nb.pc
479 lib/cpp/thrift-z.pc
Bryan Duxburyc6574472010-10-06 00:12:33 +0000480 lib/cpp/thrift.pc
Roger Meier213a6642010-10-27 12:30:11 +0000481 lib/c_glib/Makefile
482 lib/c_glib/thrift_c_glib.pc
483 lib/c_glib/test/Makefile
David Reiss1fdb5922008-02-06 22:10:12 +0000484 lib/csharp/Makefile
Bryan Duxbury7173bd92010-05-02 22:54:22 +0000485 lib/erl/Makefile
Anthony F. Molinaro917d8982011-06-21 06:20:18 +0000486 lib/erl/src/thrift.app.src
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000487 lib/hs/Makefile
David Reissf8dcf032008-02-23 22:07:39 +0000488 lib/java/Makefile
Roger Meierf2495762011-03-17 19:13:36 +0000489 lib/js/test/Makefile
T Jake Luciani1952e542009-02-01 04:47:30 +0000490 lib/perl/Makefile
491 lib/perl/test/Makefile
Bryan Duxbury6a681872010-05-02 22:39:31 +0000492 lib/php/Makefile
Roger Meier33b720a2012-01-24 18:42:46 +0000493 lib/php/test/Makefile
David Reiss832b2622007-12-28 18:25:33 +0000494 lib/py/Makefile
Kevin Clark4bd89162008-07-08 00:47:49 +0000495 lib/rb/Makefile
David Reiss8180c0c2008-02-04 21:14:14 +0000496 test/Makefile
Roger Meierd3b9dca2011-06-24 14:01:10 +0000497 test/cpp/Makefile
Bryan Duxburyc6574472010-10-06 00:12:33 +0000498 test/hs/Makefile
Roger Meiereaa61d82012-01-12 21:38:29 +0000499 test/nodejs/Makefile
Roger Meierb33967b2012-01-21 09:18:05 +0000500 test/php/Makefile
Roger Meier01b568c2012-01-10 21:30:02 +0000501 test/perl/Makefile
David Reiss9ff3b9d2008-02-15 01:10:23 +0000502 test/py/Makefile
Roger Meier50e43492010-10-08 17:46:06 +0000503 test/py.twisted/Makefile
Kevin Clark4bd89162008-07-08 00:47:49 +0000504 test/rb/Makefile
David Reiss832b2622007-12-28 18:25:33 +0000505])
Marc Slemkob09f5882006-08-23 22:03:34 +0000506
507AC_OUTPUT
David Reiss5cc3ba82010-08-31 16:51:20 +0000508
509
510echo
511echo "$PACKAGE $VERSION"
512echo
513echo "Building code generators ..... :$thrift_generators"
514echo
David Reissea4c9812010-08-31 16:51:21 +0000515echo "Building C++ Library ......... : $have_cpp"
Roger Meier213a6642010-10-27 12:30:11 +0000516echo "Building C (GLib) Library .... : $have_c_glib"
David Reiss5cc3ba82010-08-31 16:51:20 +0000517echo "Building Java Library ........ : $have_java"
518echo "Building C# Library .......... : $have_csharp"
519echo "Building Python Library ...... : $have_python"
520echo "Building Ruby Library ........ : $have_ruby"
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000521echo "Building Haskell Library ..... : $have_haskell"
David Reiss5cc3ba82010-08-31 16:51:20 +0000522echo "Building Perl Library ........ : $have_perl"
523echo "Building PHP Library ......... : $have_php"
524echo "Building Erlang Library ...... : $have_erlang"
Christian Lavoieafc6d8f2011-02-20 02:39:19 +0000525echo "Building Go Library .......... : $have_go"
David Reiss5cc3ba82010-08-31 16:51:20 +0000526if test "$have_cpp" = "yes" ; then
527 echo
528 echo "Building TZlibTransport ...... : $have_zlib"
529 echo "Building TNonblockingServer .. : $have_libevent"
530fi
531if test "$have_java" = "yes" ; then
532 echo
533 echo "Using javac .................. : $JAVAC"
534 echo "Using java ................... : $JAVA"
535 echo "Using ant .................... : $ANT"
536fi
537if test "$have_csharp" = "yes" ; then
538 echo
539 echo "Using .NET 3.5 ............... : $net_3_5"
540fi
541if test "$have_python" = "yes" ; then
542 echo
543 echo "Using Python ................. : $PYTHON"
544fi
Anthony F. Molinaroddcf32a2010-10-05 16:45:50 +0000545if test "$have_php" = "yes" ; then
546 echo
547 echo "Using php-config ............. : $PHP_CONFIG"
548fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000549if test "$have_ruby" = "yes" ; then
550 echo
551 echo "Using Ruby ................... : $RUBY"
David Reiss5cc3ba82010-08-31 16:51:20 +0000552fi
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000553if test "$have_haskell" = "yes" ; then
554 echo
555 echo "Using Haskell ................ : $RUNHASKELL"
Bryan Duxburyc6574472010-10-06 00:12:33 +0000556 echo "Using Cabal .................. : $CABAL"
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000557fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000558if test "$have_perl" = "yes" ; then
559 echo
560 echo "Using Perl ................... : $PERL"
561fi
562if test "$have_erlang" = "yes" ; then
563 echo
564 echo "Using erlc ................... : $ERLC"
565fi
Christian Lavoieafc6d8f2011-02-20 02:39:19 +0000566if test "$have_go" = "yes" ; then
567 echo
568 echo "Using GOROOT.................. : $GOROOT"
569 echo "Using GOBIN................... : $GOBIN"
570 echo "Using GOARCH.................. : $GOARCH"
571 echo "Using GO Compiler............. : $GO_C"
572 echo "Using GO Linker............... : $GO_L"
573fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000574echo
575echo "If something is missing that you think should be present,"
576echo "please skim the output of configure to find the missing"
577echo "component. Details are present in config.log."