blob: 3175a7be6a80e6ca326f1fbf595388e8a136bf6e [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
Bryan Duxbury5d742622010-08-19 21:02:19 +000020AC_PREREQ(2.65)
Marc Slemkob09f5882006-08-23 22:03:34 +000021
Bryan Duxbury4c9f25c2010-08-13 02:52:12 +000022AC_INIT([thrift], [0.5.0-dev])
Marc Slemkob09f5882006-08-23 22:03:34 +000023
24AC_CONFIG_AUX_DIR([.])
25
26AM_INIT_AUTOMAKE
27
David Reissd6832192007-09-05 00:47:32 +000028AC_ARG_VAR([PY_PREFIX], [Prefix for installing Python modules.
29 (Normal --prefix is ignored for Python because
30 Python has different conventions.)
31 Default = "/usr"])
David Reisscdd6f3c2008-03-04 21:10:29 +000032AS_IF([test "x$PY_PREFIX" = x], [PY_PREFIX="/usr"])
David Reissd6832192007-09-05 00:47:32 +000033
David Reissf0c21a72008-07-11 01:26:16 +000034AC_ARG_VAR([JAVA_PREFIX], [Prefix for installing the Java lib jar.
35 (Normal --prefix is ignored for Java because
36 Java has different conevntions.)
37 Default = "/usr/local/lib"])
38AS_IF([test "x$JAVA_PREFIX" = x], [JAVA_PREFIX="/usr/local/lib"])
David Reiss832b2622007-12-28 18:25:33 +000039
Bryan Duxbury3f0b5262010-05-12 21:31:58 +000040AC_ARG_VAR([RUBY_PREFIX], [Prefix for installing Ruby modules.
41 (Normal --prefix is ignored for Ruby because
42 Ruby has different conventions.)
43 Default = none, let ruby setup decide])
44
Bryan Duxbury6a681872010-05-02 22:39:31 +000045AC_ARG_VAR([PHP_PREFIX], [Prefix for installing PHP modules.
46 (Normal --prefix is ignored for PHP because
47 PHP has different conventions.)
48 Default = "/usr/lib/php"])
49AS_IF([test "x$PHP_PREFIX" = x], [PHP_PREFIX="/usr/lib/php"])
50
Bryan Duxbury89200e12010-08-25 17:09:02 +000051AC_ARG_VAR([PHP_CONFIG_PREFIX],
52 [Prefix for installing PHP extension module .ini file.
53 (Normal --prefix is ignored for PHP because PHP has
54 different conventions.)
55 Default = "/etc/php.d"])
56AS_IF([test "x$PHP_CONFIG_PREFIX" = x], [PHP_CONFIG_PREFIX="/etc/php.d"])
57
David Reissc07057e2010-06-11 17:57:32 +000058AC_ARG_VAR([PERL_PREFIX], [Prefix for installing Perl modules.
59 (Normal --prefix is ignored for Perl because
60 Perl has different conventions.)
61 Default = "/usr/local/lib"])
62AS_IF([test "x$PERL_PREFIX" = x], [PERL_PREFIX="/usr/local"])
63
David Reiss832b2622007-12-28 18:25:33 +000064AC_PROG_CC
65AC_PROG_CPP
66AC_PROG_CXX
67AC_PROG_INSTALL
68AC_PROG_LIBTOOL
69AC_PROG_MAKE_SET
70AC_PROG_YACC
71AC_PROG_LEX
72AM_PROG_LEX
David Reiss7ed4b982008-02-11 23:24:47 +000073AC_PROG_LN_S
74AC_PROG_MKDIR_P
David Reiss832b2622007-12-28 18:25:33 +000075
76AC_LANG([C++])
77AX_BOOST_BASE([1.33.1])
78
79AX_LIB_EVENT([1.0])
80AM_CONDITIONAL([AMX_HAVE_LIBEVENT], [test "$success" = "yes"])
81
82AX_LIB_ZLIB([1.2.3])
83AM_CONDITIONAL([AMX_HAVE_ZLIB], [test "$success" = "yes"])
84
David Reiss520b5ee2008-03-02 07:00:26 +000085AX_THRIFT_LIB(csharp, [C#], yes)
86if test "$with_csharp" = "yes"; then
David Reissd831a212009-02-13 03:09:52 +000087 PKG_CHECK_MODULES(MONO, mono >= 2.0.0, net_3_5=yes, net_3_5=no)
88 PKG_CHECK_MODULES(MONO, mono >= 1.2.4, have_mono=yes, have_mono=no)
David Reiss520b5ee2008-03-02 07:00:26 +000089fi
David Reiss82c1bab2008-06-11 01:16:53 +000090AM_CONDITIONAL(WITH_MONO, [test "$have_mono" = "yes"])
David Reissd831a212009-02-13 03:09:52 +000091AM_CONDITIONAL(NET_2_0, [test "$net_3_5" = "no"])
David Reiss1fdb5922008-02-06 22:10:12 +000092
David Reiss62d39812008-03-02 07:00:22 +000093AX_THRIFT_LIB(java, [Java], yes)
94if test "$with_java" = "yes"; then
David Reissd9cdf422009-03-13 21:25:29 +000095 AX_JAVAC_AND_JAVA
Bryan Duxbury38bab122010-08-12 00:27:14 +000096 AC_PATH_PROG([ANT], [ant])
Bryan Duxburyc27cda52009-08-14 20:04:15 +000097 AX_CHECK_JAVA_CLASS(org.slf4j.Logger)
98 have_slf4j="$success"
99 AX_CHECK_JAVA_CLASS(org.slf4j.impl.SimpleLogger)
100 have_slf4j_simple="$success"
David Reissfdfcebd2009-05-22 19:50:29 +0000101 AX_CHECK_JAVA_CLASS(org.apache.commons.lang.builder.HashCodeBuilder)
102 have_hashcode="$success"
Bryan Duxburyc27cda52009-08-14 20:04:15 +0000103 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 +0000104 ANT_FLAGS="$ANT_FLAGS -Dnoivy="
105 fi
David Reissfff84d12009-05-22 19:50:33 +0000106 AC_SUBST(CLASSPATH)
David Reiss4ca0c8e2009-05-12 23:16:55 +0000107 AC_SUBST(ANT_FLAGS)
David Reiss62d39812008-03-02 07:00:22 +0000108fi
David Reiss82c1bab2008-06-11 01:16:53 +0000109AM_CONDITIONAL([WITH_JAVA],
David Reissf8dcf032008-02-23 22:07:39 +0000110 [test -n "$ANT" -a -n "$JAVA" -a -n "$JAVAC"])
David Reiss1fdb5922008-02-06 22:10:12 +0000111
Christopher Pirob6f18c22008-03-04 07:09:12 +0000112AX_THRIFT_LIB(erlang, [Erlang], yes)
113if test "$with_erlang" = "yes"; then
David Reiss9e2fd792010-05-18 16:52:48 +0000114 AC_ERLANG_PATH_ERL
115 AC_ERLANG_PATH_ERLC
David Reiss31e1b6e2010-08-24 20:45:24 +0000116 if test -n "$ERLC" ; then
117 AC_ERLANG_SUBST_LIB_DIR
118 # Install into the detected Erlang directory instead of $libdir/erlang/lib
119 ERLANG_INSTALL_LIB_DIR="$ERLANG_LIB_DIR"
120 AC_ERLANG_SUBST_INSTALL_LIB_SUBDIR(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
121 fi
Christopher Pirob6f18c22008-03-04 07:09:12 +0000122fi
David Reiss9e2fd792010-05-18 16:52:48 +0000123AM_CONDITIONAL(WITH_ERLANG, [test -n "$ERL" -a -n "$ERLC"])
Christopher Pirob6f18c22008-03-04 07:09:12 +0000124
David Reiss1a140912008-06-11 01:16:37 +0000125AX_THRIFT_LIB(py, [Python], yes)
126if test "$with_py" = "yes"; then
127 AM_PATH_PYTHON(2.4,, :)
128fi
David Reiss82c1bab2008-06-11 01:16:53 +0000129AM_CONDITIONAL(WITH_PYTHON, [test -n "$PYTHON" -a "$PYTHON" != ":"])
David Reiss1a140912008-06-11 01:16:37 +0000130
T Jake Luciani1952e542009-02-01 04:47:30 +0000131AX_THRIFT_LIB(perl, [Perl], yes)
132if test "$with_perl" = "yes"; then
133 AC_PATH_PROG([PERL], [perl])
Bryan Duxbury12373692010-08-19 05:23:59 +0000134 if test -n "`$PERL -MBit::Vector -e exit 2>&1`"; then
135 AC_MSG_WARN([Perl Bit::Vector module not installed, skipping perl])
136 have_perl_bit_vector="no"
137 fi
T Jake Luciani1952e542009-02-01 04:47:30 +0000138fi
Bryan Duxbury12373692010-08-19 05:23:59 +0000139AM_CONDITIONAL(WITH_PERL, [test -n "$PERL" -a -z "$have_perl_bit_vector"])
T Jake Luciani1952e542009-02-01 04:47:30 +0000140
Bryan Duxbury6a681872010-05-02 22:39:31 +0000141AX_THRIFT_LIB(php, [PHP], yes)
142if test "$with_php" = "yes"; then
143 AC_PATH_PROG([PHP], [php])
144fi
145AM_CONDITIONAL(WITH_PHP, [test -n "$PHP"])
146
Bryan Duxbury89200e12010-08-25 17:09:02 +0000147AX_THRIFT_LIB(php_extension, [PHP_EXTENSION], yes)
148if test "$with_php_extension" = "yes"; then
149 AC_PATH_PROG([PHP_CONFIG], [php-config])
150 AC_CONFIG_SUBDIRS([lib/php/src/ext/thrift_protocol])
151fi
152AM_CONDITIONAL(WITH_PHP_EXTENSION, [test -n "$PHP_CONFIG"])
153
Kevin Clark4bd89162008-07-08 00:47:49 +0000154AX_THRIFT_LIB(ruby, [Ruby], yes)
155if test "$with_ruby" = "yes"; then
156 AC_PATH_PROG([RUBY], [ruby])
Bryan Duxburyec473582009-04-07 16:31:04 +0000157 AC_PATH_PROG([RSPEC], [spec])
Kevin Clark4bd89162008-07-08 00:47:49 +0000158fi
David Reiss8d07e1d2008-07-11 08:04:12 +0000159AM_CONDITIONAL(WITH_RUBY, [test -n "$RUBY"])
Bryan Duxburyec473582009-04-07 16:31:04 +0000160AM_CONDITIONAL(HAVE_RSPEC, [test -n "$RSPEC"])
161
Kevin Clark4bd89162008-07-08 00:47:49 +0000162
David Reiss832b2622007-12-28 18:25:33 +0000163AC_C_CONST
164AC_C_INLINE
165AC_C_VOLATILE
166
167AC_HEADER_STDBOOL
168AC_HEADER_STDC
169AC_HEADER_TIME
170AC_CHECK_HEADERS([arpa/inet.h])
Bryan Duxbury184d2622010-08-17 17:43:58 +0000171AC_CHECK_HEADERS([sys/param.h])
David Reiss832b2622007-12-28 18:25:33 +0000172AC_CHECK_HEADERS([fcntl.h])
173AC_CHECK_HEADERS([inttypes.h])
David Reiss7ed4b982008-02-11 23:24:47 +0000174AC_CHECK_HEADERS([limits.h])
David Reiss832b2622007-12-28 18:25:33 +0000175AC_CHECK_HEADERS([netdb.h])
176AC_CHECK_HEADERS([netinet/in.h])
177AC_CHECK_HEADERS([pthread.h])
178AC_CHECK_HEADERS([stddef.h])
David Reissd7a16f42008-02-19 22:47:29 +0000179AC_CHECK_HEADERS([stdlib.h])
David Reiss832b2622007-12-28 18:25:33 +0000180AC_CHECK_HEADERS([sys/socket.h])
181AC_CHECK_HEADERS([sys/time.h])
182AC_CHECK_HEADERS([unistd.h])
183AC_CHECK_HEADERS([libintl.h])
184AC_CHECK_HEADERS([malloc.h])
185
186AC_CHECK_LIB(pthread, pthread_create)
David Reisse4ca1792009-05-21 02:28:19 +0000187dnl NOTE(dreiss): I haven't been able to find any really solid docs
188dnl on what librt is and how it fits into various Unix systems.
189dnl My best guess is that it is where glibc stashes its implementation
190dnl of the POSIX Real-Time Extensions. This seems necessary on Linux,
191dnl and we haven't yet found a system where this is a problem.
192AC_CHECK_LIB(rt, clock_gettime)
David Reiss9b903442009-10-21 05:51:28 +0000193AC_CHECK_LIB(socket, setsockopt)
David Reiss832b2622007-12-28 18:25:33 +0000194
195AC_TYPE_INT16_T
196AC_TYPE_INT32_T
197AC_TYPE_INT64_T
198AC_TYPE_INT8_T
199AC_TYPE_MODE_T
200AC_TYPE_OFF_T
201AC_TYPE_SIZE_T
David Reiss847a2942008-04-21 18:07:43 +0000202AC_TYPE_SSIZE_T
David Reiss832b2622007-12-28 18:25:33 +0000203AC_TYPE_UINT16_T
204AC_TYPE_UINT32_T
205AC_TYPE_UINT64_T
206AC_TYPE_UINT8_T
David Reiss33fc5ad2008-05-09 07:17:34 +0000207AC_CHECK_TYPES([ptrdiff_t], [], [exit 1])
David Reiss832b2622007-12-28 18:25:33 +0000208
David Reiss7ed4b982008-02-11 23:24:47 +0000209AC_STRUCT_TM
210
David Reiss85a8f7b2009-05-21 02:28:16 +0000211dnl NOTE(dreiss): AI_ADDRCONFIG is not defined on OpenBSD.
212AC_CHECK_DECL([AI_ADDRCONFIG], [],
213 [AC_DEFINE([AI_ADDRCONFIG], 0,
214 [Define if the AI_ADDRCONFIG symbol is unavailable])],
215 [
216 #include <sys/types.h>
217 #include <sys/socket.h>
218 #include <netdb.h>
219])
220
David Reiss832b2622007-12-28 18:25:33 +0000221AC_FUNC_ALLOCA
222AC_FUNC_MALLOC
David Reiss7ed4b982008-02-11 23:24:47 +0000223AC_FUNC_MEMCMP
David Reiss832b2622007-12-28 18:25:33 +0000224AC_FUNC_REALLOC
225AC_FUNC_SELECT_ARGTYPES
226AC_FUNC_STAT
227AC_FUNC_STRERROR_R
David Reiss7ed4b982008-02-11 23:24:47 +0000228AC_FUNC_STRFTIME
David Reiss832b2622007-12-28 18:25:33 +0000229AC_FUNC_VPRINTF
230AC_CHECK_FUNCS([strtoul])
231AC_CHECK_FUNCS([bzero])
David Reiss7ed4b982008-02-11 23:24:47 +0000232AC_CHECK_FUNCS([ftruncate])
David Reiss832b2622007-12-28 18:25:33 +0000233AC_CHECK_FUNCS([gethostbyname])
234AC_CHECK_FUNCS([gettimeofday])
235AC_CHECK_FUNCS([memmove])
236AC_CHECK_FUNCS([memset])
237AC_CHECK_FUNCS([mkdir])
238AC_CHECK_FUNCS([realpath])
239AC_CHECK_FUNCS([select])
240AC_CHECK_FUNCS([socket])
241AC_CHECK_FUNCS([strchr])
242AC_CHECK_FUNCS([strdup])
David Reiss7ed4b982008-02-11 23:24:47 +0000243AC_CHECK_FUNCS([strerror])
David Reiss832b2622007-12-28 18:25:33 +0000244AC_CHECK_FUNCS([strstr])
245AC_CHECK_FUNCS([strtol])
246AC_CHECK_FUNCS([sqrt])
David Reisse4ca1792009-05-21 02:28:19 +0000247dnl The following functions are optional.
248AC_CHECK_FUNCS([clock_gettime])
249AC_CHECK_FUNCS([sched_get_priority_min])
250AC_CHECK_FUNCS([sched_get_priority_max])
David Reiss832b2622007-12-28 18:25:33 +0000251
David Reisse4d4ea02009-04-02 21:37:17 +0000252AX_SIGNED_RIGHT_SHIFT
253
David Reiss22585732008-02-27 01:55:33 +0000254AX_THRIFT_GEN(cpp, [C++], yes)
255AM_CONDITIONAL([THRIFT_GEN_cpp], [test "$ax_thrift_gen_cpp" = "yes"])
David Reisse8a87de2008-02-27 02:39:25 +0000256AX_THRIFT_GEN(java, [Java], yes)
257AM_CONDITIONAL([THRIFT_GEN_java], [test "$ax_thrift_gen_java" = "yes"])
Bryan Duxbury321eb7a2010-04-22 21:17:39 +0000258AX_THRIFT_GEN(as3, [AS3], yes)
259AM_CONDITIONAL([THRIFT_GEN_as3], [test "$ax_thrift_gen_as3" = "yes"])
David Reissce4f4f02008-03-27 21:41:31 +0000260AX_THRIFT_GEN(csharp, [C#], yes)
261AM_CONDITIONAL([THRIFT_GEN_csharp], [test "$ax_thrift_gen_csharp" = "yes"])
David Reissbfd26dc2008-03-27 21:41:49 +0000262AX_THRIFT_GEN(py, [Python], yes)
263AM_CONDITIONAL([THRIFT_GEN_py], [test "$ax_thrift_gen_py" = "yes"])
David Reissae253582008-03-27 21:42:11 +0000264AX_THRIFT_GEN(rb, [Ruby], yes)
265AM_CONDITIONAL([THRIFT_GEN_rb], [test "$ax_thrift_gen_rb" = "yes"])
David Reissfdc21aa2008-03-27 21:42:34 +0000266AX_THRIFT_GEN(perl, [Perl], yes)
267AM_CONDITIONAL([THRIFT_GEN_perl], [test "$ax_thrift_gen_perl" = "yes"])
David Reiss32272d92009-02-17 20:28:30 +0000268AX_THRIFT_GEN(php, [PHP], yes)
269AM_CONDITIONAL([THRIFT_GEN_php], [test "$ax_thrift_gen_php" = "yes"])
David Reissf3b0db32009-02-17 20:28:01 +0000270AX_THRIFT_GEN(erl, [Erlang], yes)
271AM_CONDITIONAL([THRIFT_GEN_erl], [test "$ax_thrift_gen_erl" = "yes"])
David Reiss4b349aa2008-03-27 21:41:02 +0000272AX_THRIFT_GEN(cocoa, [Cocoa], yes)
273AM_CONDITIONAL([THRIFT_GEN_cocoa], [test "$ax_thrift_gen_cocoa" = "yes"])
David Reissb3ac8a62008-03-27 21:40:42 +0000274AX_THRIFT_GEN(st, [Smalltalk], yes)
275AM_CONDITIONAL([THRIFT_GEN_st], [test "$ax_thrift_gen_st" = "yes"])
David Reiss3d671b52008-03-27 21:40:11 +0000276AX_THRIFT_GEN(ocaml, [OCaml], yes)
277AM_CONDITIONAL([THRIFT_GEN_ocaml], [test "$ax_thrift_gen_ocaml" = "yes"])
David Reiss22812f82008-03-27 21:40:26 +0000278AX_THRIFT_GEN(hs, [Haskell], yes)
279AM_CONDITIONAL([THRIFT_GEN_hs], [test "$ax_thrift_gen_hs" = "yes"])
David Reiss782cb672009-02-17 20:28:13 +0000280AX_THRIFT_GEN(xsd, [XSD], yes)
281AM_CONDITIONAL([THRIFT_GEN_xsd], [test "$ax_thrift_gen_xsd" = "yes"])
David Reissdc0aada2008-10-21 00:09:23 +0000282AX_THRIFT_GEN(html, [HTML], yes)
283AM_CONDITIONAL([THRIFT_GEN_html], [test "$ax_thrift_gen_html" = "yes"])
T Jake Luciani322caa22010-02-15 03:24:55 +0000284AX_THRIFT_GEN(js, [JavaScript], yes)
285AM_CONDITIONAL([THRIFT_GEN_js], [test "$ax_thrift_gen_js" = "yes"])
David Reiss22585732008-02-27 01:55:33 +0000286
David Reiss832b2622007-12-28 18:25:33 +0000287AC_CONFIG_HEADERS(config.h:config.hin)
288
289AC_CONFIG_FILES([
290 Makefile
291 compiler/cpp/Makefile
Bryan Duxburya1e268c2010-05-03 21:33:00 +0000292 compiler/cpp/version.h
David Reiss832b2622007-12-28 18:25:33 +0000293 lib/Makefile
294 lib/cpp/Makefile
295 lib/cpp/thrift.pc
296 lib/cpp/thrift-nb.pc
297 lib/cpp/thrift-z.pc
David Reiss1fdb5922008-02-06 22:10:12 +0000298 lib/csharp/Makefile
Bryan Duxbury7173bd92010-05-02 22:54:22 +0000299 lib/erl/Makefile
David Reissf8dcf032008-02-23 22:07:39 +0000300 lib/java/Makefile
T Jake Luciani1952e542009-02-01 04:47:30 +0000301 lib/perl/Makefile
302 lib/perl/test/Makefile
Bryan Duxbury6a681872010-05-02 22:39:31 +0000303 lib/php/Makefile
David Reiss832b2622007-12-28 18:25:33 +0000304 lib/py/Makefile
Kevin Clark4bd89162008-07-08 00:47:49 +0000305 lib/rb/Makefile
David Reiss8180c0c2008-02-04 21:14:14 +0000306 test/Makefile
David Reiss9ff3b9d2008-02-15 01:10:23 +0000307 test/py/Makefile
Kevin Clark4bd89162008-07-08 00:47:49 +0000308 test/rb/Makefile
David Reiss832b2622007-12-28 18:25:33 +0000309])
Marc Slemkob09f5882006-08-23 22:03:34 +0000310
311AC_OUTPUT