blob: 223c17920c6da1cb5f2344a8c3079c90b623cfc6 [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
Marc Slemkob09f5882006-08-23 22:03:34 +000020AC_PREREQ(2.59)
21
Bryan Duxburyadf5f192010-04-30 21:39:54 +000022AC_INIT([thrift], [0.4.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
David Reiss832b2622007-12-28 18:25:33 +000051AC_PROG_CC
52AC_PROG_CPP
53AC_PROG_CXX
54AC_PROG_INSTALL
55AC_PROG_LIBTOOL
56AC_PROG_MAKE_SET
57AC_PROG_YACC
58AC_PROG_LEX
59AM_PROG_LEX
David Reiss7ed4b982008-02-11 23:24:47 +000060AC_PROG_LN_S
61AC_PROG_MKDIR_P
David Reiss832b2622007-12-28 18:25:33 +000062
63AC_LANG([C++])
64AX_BOOST_BASE([1.33.1])
65
66AX_LIB_EVENT([1.0])
67AM_CONDITIONAL([AMX_HAVE_LIBEVENT], [test "$success" = "yes"])
68
69AX_LIB_ZLIB([1.2.3])
70AM_CONDITIONAL([AMX_HAVE_ZLIB], [test "$success" = "yes"])
71
David Reiss520b5ee2008-03-02 07:00:26 +000072AX_THRIFT_LIB(csharp, [C#], yes)
73if test "$with_csharp" = "yes"; then
David Reissd831a212009-02-13 03:09:52 +000074 PKG_CHECK_MODULES(MONO, mono >= 2.0.0, net_3_5=yes, net_3_5=no)
75 PKG_CHECK_MODULES(MONO, mono >= 1.2.4, have_mono=yes, have_mono=no)
David Reiss520b5ee2008-03-02 07:00:26 +000076fi
David Reiss82c1bab2008-06-11 01:16:53 +000077AM_CONDITIONAL(WITH_MONO, [test "$have_mono" = "yes"])
David Reissd831a212009-02-13 03:09:52 +000078AM_CONDITIONAL(NET_2_0, [test "$net_3_5" = "no"])
David Reiss1fdb5922008-02-06 22:10:12 +000079
David Reiss62d39812008-03-02 07:00:22 +000080AX_THRIFT_LIB(java, [Java], yes)
81if test "$with_java" = "yes"; then
David Reissd9cdf422009-03-13 21:25:29 +000082 AX_JAVAC_AND_JAVA
David Reiss62d39812008-03-02 07:00:22 +000083 AC_PATH_PROG([ANT], [ant])
Bryan Duxburyc27cda52009-08-14 20:04:15 +000084 AX_CHECK_JAVA_CLASS(org.slf4j.Logger)
85 have_slf4j="$success"
86 AX_CHECK_JAVA_CLASS(org.slf4j.impl.SimpleLogger)
87 have_slf4j_simple="$success"
David Reissfdfcebd2009-05-22 19:50:29 +000088 AX_CHECK_JAVA_CLASS(org.apache.commons.lang.builder.HashCodeBuilder)
89 have_hashcode="$success"
Bryan Duxburyc27cda52009-08-14 20:04:15 +000090 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 +000091 ANT_FLAGS="$ANT_FLAGS -Dnoivy="
92 fi
David Reissfff84d12009-05-22 19:50:33 +000093 AC_SUBST(CLASSPATH)
David Reiss4ca0c8e2009-05-12 23:16:55 +000094 AC_SUBST(ANT_FLAGS)
David Reiss62d39812008-03-02 07:00:22 +000095fi
David Reiss82c1bab2008-06-11 01:16:53 +000096AM_CONDITIONAL([WITH_JAVA],
David Reissf8dcf032008-02-23 22:07:39 +000097 [test -n "$ANT" -a -n "$JAVA" -a -n "$JAVAC"])
David Reiss1fdb5922008-02-06 22:10:12 +000098
Christopher Pirob6f18c22008-03-04 07:09:12 +000099AX_THRIFT_LIB(erlang, [Erlang], yes)
100if test "$with_erlang" = "yes"; then
David Reiss9e2fd792010-05-18 16:52:48 +0000101 AC_ERLANG_PATH_ERL
102 AC_ERLANG_PATH_ERLC
103 AC_ERLANG_SUBST_INSTALL_LIB_SUBDIR(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
Christopher Pirob6f18c22008-03-04 07:09:12 +0000104fi
David Reiss9e2fd792010-05-18 16:52:48 +0000105AM_CONDITIONAL(WITH_ERLANG, [test -n "$ERL" -a -n "$ERLC"])
Christopher Pirob6f18c22008-03-04 07:09:12 +0000106
David Reiss1a140912008-06-11 01:16:37 +0000107AX_THRIFT_LIB(py, [Python], yes)
108if test "$with_py" = "yes"; then
109 AM_PATH_PYTHON(2.4,, :)
110fi
David Reiss82c1bab2008-06-11 01:16:53 +0000111AM_CONDITIONAL(WITH_PYTHON, [test -n "$PYTHON" -a "$PYTHON" != ":"])
David Reiss1a140912008-06-11 01:16:37 +0000112
T Jake Luciani1952e542009-02-01 04:47:30 +0000113AX_THRIFT_LIB(perl, [Perl], yes)
114if test "$with_perl" = "yes"; then
115 AC_PATH_PROG([PERL], [perl])
116fi
117AM_CONDITIONAL(WITH_PERL, [test -n "$PERL"])
118
Bryan Duxbury6a681872010-05-02 22:39:31 +0000119AX_THRIFT_LIB(php, [PHP], yes)
120if test "$with_php" = "yes"; then
121 AC_PATH_PROG([PHP], [php])
122fi
123AM_CONDITIONAL(WITH_PHP, [test -n "$PHP"])
124
Kevin Clark4bd89162008-07-08 00:47:49 +0000125AX_THRIFT_LIB(ruby, [Ruby], yes)
126if test "$with_ruby" = "yes"; then
127 AC_PATH_PROG([RUBY], [ruby])
Bryan Duxburyec473582009-04-07 16:31:04 +0000128 AC_PATH_PROG([RSPEC], [spec])
Kevin Clark4bd89162008-07-08 00:47:49 +0000129fi
David Reiss8d07e1d2008-07-11 08:04:12 +0000130AM_CONDITIONAL(WITH_RUBY, [test -n "$RUBY"])
Bryan Duxburyec473582009-04-07 16:31:04 +0000131AM_CONDITIONAL(HAVE_RSPEC, [test -n "$RSPEC"])
132
Kevin Clark4bd89162008-07-08 00:47:49 +0000133
David Reiss832b2622007-12-28 18:25:33 +0000134AC_C_CONST
135AC_C_INLINE
136AC_C_VOLATILE
137
138AC_HEADER_STDBOOL
139AC_HEADER_STDC
140AC_HEADER_TIME
141AC_CHECK_HEADERS([arpa/inet.h])
142AC_CHECK_HEADERS([endian.h])
143AC_CHECK_HEADERS([fcntl.h])
144AC_CHECK_HEADERS([inttypes.h])
David Reiss7ed4b982008-02-11 23:24:47 +0000145AC_CHECK_HEADERS([limits.h])
David Reiss832b2622007-12-28 18:25:33 +0000146AC_CHECK_HEADERS([netdb.h])
147AC_CHECK_HEADERS([netinet/in.h])
148AC_CHECK_HEADERS([pthread.h])
149AC_CHECK_HEADERS([stddef.h])
David Reissd7a16f42008-02-19 22:47:29 +0000150AC_CHECK_HEADERS([stdlib.h])
David Reiss832b2622007-12-28 18:25:33 +0000151AC_CHECK_HEADERS([sys/socket.h])
152AC_CHECK_HEADERS([sys/time.h])
153AC_CHECK_HEADERS([unistd.h])
154AC_CHECK_HEADERS([libintl.h])
155AC_CHECK_HEADERS([malloc.h])
156
157AC_CHECK_LIB(pthread, pthread_create)
David Reisse4ca1792009-05-21 02:28:19 +0000158dnl NOTE(dreiss): I haven't been able to find any really solid docs
159dnl on what librt is and how it fits into various Unix systems.
160dnl My best guess is that it is where glibc stashes its implementation
161dnl of the POSIX Real-Time Extensions. This seems necessary on Linux,
162dnl and we haven't yet found a system where this is a problem.
163AC_CHECK_LIB(rt, clock_gettime)
David Reiss9b903442009-10-21 05:51:28 +0000164AC_CHECK_LIB(socket, setsockopt)
David Reiss832b2622007-12-28 18:25:33 +0000165
166AC_TYPE_INT16_T
167AC_TYPE_INT32_T
168AC_TYPE_INT64_T
169AC_TYPE_INT8_T
170AC_TYPE_MODE_T
171AC_TYPE_OFF_T
172AC_TYPE_SIZE_T
David Reiss847a2942008-04-21 18:07:43 +0000173AC_TYPE_SSIZE_T
David Reiss832b2622007-12-28 18:25:33 +0000174AC_TYPE_UINT16_T
175AC_TYPE_UINT32_T
176AC_TYPE_UINT64_T
177AC_TYPE_UINT8_T
David Reiss33fc5ad2008-05-09 07:17:34 +0000178AC_CHECK_TYPES([ptrdiff_t], [], [exit 1])
David Reiss832b2622007-12-28 18:25:33 +0000179
David Reiss7ed4b982008-02-11 23:24:47 +0000180AC_STRUCT_TM
181
David Reiss85a8f7b2009-05-21 02:28:16 +0000182dnl NOTE(dreiss): AI_ADDRCONFIG is not defined on OpenBSD.
183AC_CHECK_DECL([AI_ADDRCONFIG], [],
184 [AC_DEFINE([AI_ADDRCONFIG], 0,
185 [Define if the AI_ADDRCONFIG symbol is unavailable])],
186 [
187 #include <sys/types.h>
188 #include <sys/socket.h>
189 #include <netdb.h>
190])
191
David Reiss832b2622007-12-28 18:25:33 +0000192AC_FUNC_ALLOCA
193AC_FUNC_MALLOC
David Reiss7ed4b982008-02-11 23:24:47 +0000194AC_FUNC_MEMCMP
David Reiss832b2622007-12-28 18:25:33 +0000195AC_FUNC_REALLOC
196AC_FUNC_SELECT_ARGTYPES
197AC_FUNC_STAT
198AC_FUNC_STRERROR_R
David Reiss7ed4b982008-02-11 23:24:47 +0000199AC_FUNC_STRFTIME
David Reiss832b2622007-12-28 18:25:33 +0000200AC_FUNC_VPRINTF
201AC_CHECK_FUNCS([strtoul])
202AC_CHECK_FUNCS([bzero])
David Reiss7ed4b982008-02-11 23:24:47 +0000203AC_CHECK_FUNCS([ftruncate])
David Reiss832b2622007-12-28 18:25:33 +0000204AC_CHECK_FUNCS([gethostbyname])
205AC_CHECK_FUNCS([gettimeofday])
206AC_CHECK_FUNCS([memmove])
207AC_CHECK_FUNCS([memset])
208AC_CHECK_FUNCS([mkdir])
209AC_CHECK_FUNCS([realpath])
210AC_CHECK_FUNCS([select])
211AC_CHECK_FUNCS([socket])
212AC_CHECK_FUNCS([strchr])
213AC_CHECK_FUNCS([strdup])
David Reiss7ed4b982008-02-11 23:24:47 +0000214AC_CHECK_FUNCS([strerror])
David Reiss832b2622007-12-28 18:25:33 +0000215AC_CHECK_FUNCS([strstr])
216AC_CHECK_FUNCS([strtol])
217AC_CHECK_FUNCS([sqrt])
David Reisse4ca1792009-05-21 02:28:19 +0000218dnl The following functions are optional.
219AC_CHECK_FUNCS([clock_gettime])
220AC_CHECK_FUNCS([sched_get_priority_min])
221AC_CHECK_FUNCS([sched_get_priority_max])
David Reiss832b2622007-12-28 18:25:33 +0000222
David Reisse4d4ea02009-04-02 21:37:17 +0000223AX_SIGNED_RIGHT_SHIFT
224
David Reiss22585732008-02-27 01:55:33 +0000225AX_THRIFT_GEN(cpp, [C++], yes)
226AM_CONDITIONAL([THRIFT_GEN_cpp], [test "$ax_thrift_gen_cpp" = "yes"])
David Reisse8a87de2008-02-27 02:39:25 +0000227AX_THRIFT_GEN(java, [Java], yes)
228AM_CONDITIONAL([THRIFT_GEN_java], [test "$ax_thrift_gen_java" = "yes"])
Bryan Duxbury321eb7a2010-04-22 21:17:39 +0000229AX_THRIFT_GEN(as3, [AS3], yes)
230AM_CONDITIONAL([THRIFT_GEN_as3], [test "$ax_thrift_gen_as3" = "yes"])
David Reissce4f4f02008-03-27 21:41:31 +0000231AX_THRIFT_GEN(csharp, [C#], yes)
232AM_CONDITIONAL([THRIFT_GEN_csharp], [test "$ax_thrift_gen_csharp" = "yes"])
David Reissbfd26dc2008-03-27 21:41:49 +0000233AX_THRIFT_GEN(py, [Python], yes)
234AM_CONDITIONAL([THRIFT_GEN_py], [test "$ax_thrift_gen_py" = "yes"])
David Reissae253582008-03-27 21:42:11 +0000235AX_THRIFT_GEN(rb, [Ruby], yes)
236AM_CONDITIONAL([THRIFT_GEN_rb], [test "$ax_thrift_gen_rb" = "yes"])
David Reissfdc21aa2008-03-27 21:42:34 +0000237AX_THRIFT_GEN(perl, [Perl], yes)
238AM_CONDITIONAL([THRIFT_GEN_perl], [test "$ax_thrift_gen_perl" = "yes"])
David Reiss32272d92009-02-17 20:28:30 +0000239AX_THRIFT_GEN(php, [PHP], yes)
240AM_CONDITIONAL([THRIFT_GEN_php], [test "$ax_thrift_gen_php" = "yes"])
David Reissf3b0db32009-02-17 20:28:01 +0000241AX_THRIFT_GEN(erl, [Erlang], yes)
242AM_CONDITIONAL([THRIFT_GEN_erl], [test "$ax_thrift_gen_erl" = "yes"])
David Reiss4b349aa2008-03-27 21:41:02 +0000243AX_THRIFT_GEN(cocoa, [Cocoa], yes)
244AM_CONDITIONAL([THRIFT_GEN_cocoa], [test "$ax_thrift_gen_cocoa" = "yes"])
David Reissb3ac8a62008-03-27 21:40:42 +0000245AX_THRIFT_GEN(st, [Smalltalk], yes)
246AM_CONDITIONAL([THRIFT_GEN_st], [test "$ax_thrift_gen_st" = "yes"])
David Reiss3d671b52008-03-27 21:40:11 +0000247AX_THRIFT_GEN(ocaml, [OCaml], yes)
248AM_CONDITIONAL([THRIFT_GEN_ocaml], [test "$ax_thrift_gen_ocaml" = "yes"])
David Reiss22812f82008-03-27 21:40:26 +0000249AX_THRIFT_GEN(hs, [Haskell], yes)
250AM_CONDITIONAL([THRIFT_GEN_hs], [test "$ax_thrift_gen_hs" = "yes"])
David Reiss782cb672009-02-17 20:28:13 +0000251AX_THRIFT_GEN(xsd, [XSD], yes)
252AM_CONDITIONAL([THRIFT_GEN_xsd], [test "$ax_thrift_gen_xsd" = "yes"])
David Reissdc0aada2008-10-21 00:09:23 +0000253AX_THRIFT_GEN(html, [HTML], yes)
254AM_CONDITIONAL([THRIFT_GEN_html], [test "$ax_thrift_gen_html" = "yes"])
T Jake Luciani322caa22010-02-15 03:24:55 +0000255AX_THRIFT_GEN(js, [JavaScript], yes)
256AM_CONDITIONAL([THRIFT_GEN_js], [test "$ax_thrift_gen_js" = "yes"])
David Reiss22585732008-02-27 01:55:33 +0000257
David Reiss832b2622007-12-28 18:25:33 +0000258AC_CONFIG_HEADERS(config.h:config.hin)
259
260AC_CONFIG_FILES([
261 Makefile
262 compiler/cpp/Makefile
Bryan Duxburya1e268c2010-05-03 21:33:00 +0000263 compiler/cpp/version.h
David Reiss832b2622007-12-28 18:25:33 +0000264 lib/Makefile
265 lib/cpp/Makefile
266 lib/cpp/thrift.pc
267 lib/cpp/thrift-nb.pc
268 lib/cpp/thrift-z.pc
David Reiss1fdb5922008-02-06 22:10:12 +0000269 lib/csharp/Makefile
Bryan Duxbury7173bd92010-05-02 22:54:22 +0000270 lib/erl/Makefile
David Reissf8dcf032008-02-23 22:07:39 +0000271 lib/java/Makefile
T Jake Luciani1952e542009-02-01 04:47:30 +0000272 lib/perl/Makefile
273 lib/perl/test/Makefile
Bryan Duxbury6a681872010-05-02 22:39:31 +0000274 lib/php/Makefile
David Reiss832b2622007-12-28 18:25:33 +0000275 lib/py/Makefile
Kevin Clark4bd89162008-07-08 00:47:49 +0000276 lib/rb/Makefile
David Reiss8180c0c2008-02-04 21:14:14 +0000277 test/Makefile
David Reiss9ff3b9d2008-02-15 01:10:23 +0000278 test/py/Makefile
Kevin Clark4bd89162008-07-08 00:47:49 +0000279 test/rb/Makefile
David Reiss832b2622007-12-28 18:25:33 +0000280])
Marc Slemkob09f5882006-08-23 22:03:34 +0000281
282AC_OUTPUT