blob: dad10a72f86a5c375c4055b429031e8a2d1b4078 [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)
Jens Geyer4aa95df2015-04-03 12:37:03 +020021AC_CONFIG_MACRO_DIR([./aclocal])
Marc Slemkob09f5882006-08-23 22:03:34 +000022
Jake Farrell6fcecd42012-10-11 20:34:25 +000023AC_INIT([thrift], [1.0.0-dev])
Marc Slemkob09f5882006-08-23 22:03:34 +000024
25AC_CONFIG_AUX_DIR([.])
26
Jens Geyer86777192015-07-25 15:59:46 +020027AM_INIT_AUTOMAKE([1.13 subdir-objects tar-ustar])
Bryan Duxburyb005c1f2011-02-09 17:05:11 +000028PKG_PROG_PKG_CONFIG
Marc Slemkob09f5882006-08-23 22:03:34 +000029
David Reissd6832192007-09-05 00:47:32 +000030AC_ARG_VAR([PY_PREFIX], [Prefix for installing Python modules.
31 (Normal --prefix is ignored for Python because
32 Python has different conventions.)
33 Default = "/usr"])
David Reisscdd6f3c2008-03-04 21:10:29 +000034AS_IF([test "x$PY_PREFIX" = x], [PY_PREFIX="/usr"])
David Reissd6832192007-09-05 00:47:32 +000035
David Reissf0c21a72008-07-11 01:26:16 +000036AC_ARG_VAR([JAVA_PREFIX], [Prefix for installing the Java lib jar.
Randy Abernethyc295c822016-02-16 08:22:49 -080037 Default = "/usr/local/lib"])
38AS_IF([test "x$JAVA_PREFIX" != x], [JAVA_PREFIX="$JAVA_PREFIX/usr/local/lib"],
39 [test "x$PREFIX" != x], [JAVA_PREFIX="$PREFIX/usr/local/lib"],
40 [JAVA_PREFIX="/usr/local/lib"])
David Reiss832b2622007-12-28 18:25:33 +000041
Bryan Duxbury3f0b5262010-05-12 21:31:58 +000042AC_ARG_VAR([RUBY_PREFIX], [Prefix for installing Ruby modules.
43 (Normal --prefix is ignored for Ruby because
44 Ruby has different conventions.)
45 Default = none, let ruby setup decide])
46
Bryan Duxbury6a681872010-05-02 22:39:31 +000047AC_ARG_VAR([PHP_PREFIX], [Prefix for installing PHP modules.
48 (Normal --prefix is ignored for PHP because
49 PHP has different conventions.)
50 Default = "/usr/lib/php"])
51AS_IF([test "x$PHP_PREFIX" = x], [PHP_PREFIX="/usr/lib/php"])
52
Bryan Duxbury89200e12010-08-25 17:09:02 +000053AC_ARG_VAR([PHP_CONFIG_PREFIX],
54 [Prefix for installing PHP extension module .ini file.
55 (Normal --prefix is ignored for PHP because PHP has
56 different conventions.)
57 Default = "/etc/php.d"])
58AS_IF([test "x$PHP_CONFIG_PREFIX" = x], [PHP_CONFIG_PREFIX="/etc/php.d"])
59
Jake Farrell05e0cdb2011-05-05 13:45:26 +000060AC_ARG_VAR([INSTALLDIRS], [When installing Perl modules, specifies which
61 of the sets of installation directories
62 to choose: perl, site or vendor.
63 Default = "vendor"])
64AS_IF([test "x$INSTALLDIRS" = x], [INSTALLDIRS="vendor"])
65
David Reissc07057e2010-06-11 17:57:32 +000066AC_ARG_VAR([PERL_PREFIX], [Prefix for installing Perl modules.
67 (Normal --prefix is ignored for Perl because
68 Perl has different conventions.)
Jake Farrell05e0cdb2011-05-05 13:45:26 +000069 Ignored, when INSTALLDIRS set to site or vendor.
David Reissc07057e2010-06-11 17:57:32 +000070 Default = "/usr/local/lib"])
71AS_IF([test "x$PERL_PREFIX" = x], [PERL_PREFIX="/usr/local"])
72
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +000073AC_ARG_VAR([CABAL_CONFIGURE_FLAGS],
74 [Extra flags to pass to cabal: "cabal Setup.lhs configure $CABAL_CONFIGURE_FLAGS".
75 (Typically used to set --user or force --global.)])
76
77AC_SUBST(CABAL_CONFIGURE_FLAGS)
78
Jake Farrellb95b0ff2012-03-22 21:49:10 +000079AC_ARG_VAR([D_IMPORT_PREFIX], [Prefix for installing D modules.
80 [INCLUDEDIR/d2]])
81AS_IF([test "x$D_IMPORT_PREFIX" = x], [D_IMPORT_PREFIX="${includedir}/d2"])
82
83AC_ARG_VAR([DMD_LIBEVENT_FLAGS], [DMD flags for linking libevent (auto-detected if not set).])
84AC_ARG_VAR([DMD_OPENSSL_FLAGS], [DMD flags for linking OpenSSL (auto-detected if not set).])
85
David Reiss832b2622007-12-28 18:25:33 +000086AC_PROG_CC
87AC_PROG_CPP
88AC_PROG_CXX
89AC_PROG_INSTALL
90AC_PROG_LIBTOOL
91AC_PROG_MAKE_SET
Roger Meier3974aab2014-07-14 20:22:12 +020092AC_PROG_BISON(2.5)
David Reiss832b2622007-12-28 18:25:33 +000093AC_PROG_YACC
94AC_PROG_LEX
95AM_PROG_LEX
David Reiss7ed4b982008-02-11 23:24:47 +000096AC_PROG_LN_S
97AC_PROG_MKDIR_P
Christian Lavoieafc6d8f2011-02-20 02:39:19 +000098AC_PROG_AWK
99AC_PROG_RANLIB
David Reiss832b2622007-12-28 18:25:33 +0000100
101AC_LANG([C++])
Gustavo Zacariase856d682015-04-25 17:53:28 +0200102AX_CXX_COMPILE_STDCXX_11([noext], [optional])
David Reiss832b2622007-12-28 18:25:33 +0000103
Konrad Grochowski16a23a62014-11-13 15:33:38 +0100104AM_EXTRA_RECURSIVE_TARGETS([style])
105AC_SUBST(CPPSTYLE_CMD, 'find . -type f \( -iname "*.h" -or -iname "*.cpp" -or -iname "*.cc" -or -iname "*.tcc" \) -printf "Reformatting: %h/%f\n" -exec clang-format -i {} \;')
106
Roger Meierc92cda02014-02-09 21:13:53 +0100107AC_ARG_ENABLE([libs],
108 AS_HELP_STRING([--enable-libs], [build the Apache Thrift libraries [default=yes]]),
109 [], enable_libs=yes
110)
111have_libs=yes
112if test "$enable_libs" = "no"; then
113 have_libs="no"
114 with_cpp="no"
115 with_c_glib="no"
116 with_java="no"
117 with_csharp="no"
118 with_python="no"
119 with_ruby="no"
120 with_haskell="no"
Jens Geyerbd52f1a2014-07-28 01:25:30 +0200121 with_haxe="no"
Volodymyr Gotrab587a122016-09-14 19:18:48 -0500122 with_dotnetcore="no"
Roger Meierc92cda02014-02-09 21:13:53 +0100123 with_perl="no"
124 with_php="no"
125 with_php_extension="no"
Mark Erickson932c4702015-08-29 10:46:51 -0500126 with_dart="no"
Roger Meierc92cda02014-02-09 21:13:53 +0100127 with_erlang="no"
128 with_go="no"
129 with_d="no"
130 with_nodejs="no"
Roger Meier6cf0ffc2014-04-05 00:45:42 +0200131 with_lua="no"
Roger Meierc92cda02014-02-09 21:13:53 +0100132fi
133
134
David Reissea4c9812010-08-31 16:51:21 +0000135AX_THRIFT_LIB(cpp, [C++], yes)
136have_cpp=no
137if test "$with_cpp" = "yes"; then
Sergei Nikulov283899b2015-02-11 16:55:22 +0300138 AX_BOOST_BASE([1.53.0])
Jake Farrell3ad80812011-06-09 19:14:22 +0000139 if test "x$succeeded" = "xyes" ; then
Konrad Grochowskiec8d8772014-12-20 12:19:00 +0100140 AC_SUBST([BOOST_LIB_DIR], [$(echo "$BOOST_LDFLAGS" | sed -e 's/^\-L//')])
Ben Craig1684c422015-04-24 08:52:44 -0500141 AC_SUBST([BOOST_CHRONO_LDADD], [$(echo "$BOOST_LIB_DIR/libboost_chrono.a")])
Jim Kingb0b710a2015-07-28 13:31:27 -0400142 AC_SUBST([BOOST_FILESYSTEM_LDADD], [$(echo "$BOOST_LIB_DIR/libboost_filesystem.a")])
Ben Craig1684c422015-04-24 08:52:44 -0500143 AC_SUBST([BOOST_SYSTEM_LDADD], [$(echo "$BOOST_LIB_DIR/libboost_system.a")])
Konrad Grochowskiec8d8772014-12-20 12:19:00 +0100144 AC_SUBST([BOOST_TEST_LDADD], [$(echo "$BOOST_LIB_DIR/libboost_unit_test_framework.a")])
Ben Craig1684c422015-04-24 08:52:44 -0500145 AC_SUBST([BOOST_THREAD_LDADD], [$(echo "$BOOST_LIB_DIR/libboost_thread.a")])
David Reissef5e81b2010-08-31 16:51:28 +0000146 have_cpp="yes"
147 fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000148
Jon Parisea195a252014-12-11 17:36:12 -0800149 AX_CHECK_OPENSSL()
150
David Reissea4c9812010-08-31 16:51:21 +0000151 AX_LIB_EVENT([1.0])
152 have_libevent=$success
David Reiss832b2622007-12-28 18:25:33 +0000153
David Reissea4c9812010-08-31 16:51:21 +0000154 AX_LIB_ZLIB([1.2.3])
155 have_zlib=$success
Chris Piro20c81ad2013-03-07 11:32:48 -0500156
Jake Farrelld6d3e372012-07-27 16:01:33 +0000157 AX_THRIFT_LIB(qt4, [Qt], yes)
158 have_qt=no
159 if test "$with_qt4" = "yes"; then
160 PKG_CHECK_MODULES([QT], [QtCore >= 4.3, QtNetwork >= 4.3], have_qt=yes, have_qt=no)
161 fi
Roger Meier86e89862012-02-10 19:53:20 +0000162 if test "$have_qt" = "yes"; then
Jens Geyer2ac3a3c2014-12-23 18:18:58 +0100163 AC_PATH_PROGS([QT_MOC], [moc-qt4 moc], "fail")
164 if test "$QT_MOC" = "fail"; then
165 have_qt=no
166 fi
Roger Meier86e89862012-02-10 19:53:20 +0000167 fi
Nobuaki Sukegawa66228772014-12-07 21:45:33 +0900168
169 AX_THRIFT_LIB(qt5, [Qt5], yes)
170 have_qt5=no
171 qt_reduce_reloc=""
172 if test "$with_qt5" = "yes"; then
173 PKG_CHECK_MODULES([QT5], [Qt5Core >= 5.0, Qt5Network >= 5.0],
174 [have_qt5=yes;qt_reduce_reloc=`$PKG_CONFIG --variable=qt_config Qt5Core | grep "reduce_relocations"`],
175 [have_qt5=no])
176 fi
177 if test "$have_qt5" = "yes"; then
Jens Geyer2ac3a3c2014-12-23 18:18:58 +0100178 AC_PATH_PROGS([QT5_MOC], [moc-qt5 moc], "fail")
179 if test "$QT5_MOC" = "fail"; then
180 have_qt5=no
181 fi
Nobuaki Sukegawa66228772014-12-07 21:45:33 +0900182 fi
David Reissea4c9812010-08-31 16:51:21 +0000183fi
184AM_CONDITIONAL([WITH_CPP], [test "$have_cpp" = "yes"])
185AM_CONDITIONAL([AMX_HAVE_LIBEVENT], [test "$have_libevent" = "yes"])
186AM_CONDITIONAL([AMX_HAVE_ZLIB], [test "$have_zlib" = "yes"])
Roger Meier86e89862012-02-10 19:53:20 +0000187AM_CONDITIONAL([AMX_HAVE_QT], [test "$have_qt" = "yes"])
Nobuaki Sukegawa66228772014-12-07 21:45:33 +0900188AM_CONDITIONAL([AMX_HAVE_QT5], [test "$have_qt5" = "yes"])
189AM_CONDITIONAL([QT5_REDUCE_RELOCATIONS], [test "x$qt_reduce_reloc" != "x"])
David Reiss832b2622007-12-28 18:25:33 +0000190
Roger Meier32177232012-05-01 11:19:53 +0000191AX_THRIFT_LIB(c_glib, [C (GLib)], yes)
Roger Meier213a6642010-10-27 12:30:11 +0000192if test "$with_c_glib" = "yes"; then
193 PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.0], have_glib2=yes, have_glib2=no)
194 PKG_CHECK_MODULES([GOBJECT], [gobject-2.0 >= 2.0], have_gobject2=yes, have_gobject2=no)
195 if test "$have_glib2" = "yes" -a "$have_gobject2" = "yes" ; then
196 have_c_glib="yes"
197 fi
198fi
199AM_CONDITIONAL(WITH_C_GLIB, [test "$have_glib2" = "yes" -a "$have_gobject2" = "yes"])
200
David Reiss520b5ee2008-03-02 07:00:26 +0000201AX_THRIFT_LIB(csharp, [C#], yes)
202if test "$with_csharp" = "yes"; then
Jens Geyer96d80202015-09-03 21:14:30 +0200203 PKG_CHECK_MODULES(MONO, mono >= 2.11.0, mono_2_11=yes, mono_2_11=no)
204 if test "$mono_2_11" == "yes"; then
205 AC_PATH_PROG([MCS], [mcs])
206 if test "x$MCS" != "x"; then
207 mono_mcs="yes"
208 fi
209 fi
David Reissd831a212009-02-13 03:09:52 +0000210 PKG_CHECK_MODULES(MONO, mono >= 2.0.0, net_3_5=yes, net_3_5=no)
211 PKG_CHECK_MODULES(MONO, mono >= 1.2.4, have_mono=yes, have_mono=no)
David Reiss5cc3ba82010-08-31 16:51:20 +0000212 if test "$have_mono" = "yes" ; then
213 have_csharp="yes"
214 fi
David Reiss520b5ee2008-03-02 07:00:26 +0000215fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000216AM_CONDITIONAL(WITH_MONO, [test "$have_csharp" = "yes"])
David Reissd831a212009-02-13 03:09:52 +0000217AM_CONDITIONAL(NET_2_0, [test "$net_3_5" = "no"])
Jens Geyer96d80202015-09-03 21:14:30 +0200218AM_CONDITIONAL(MONO_MCS, [test "$mono_mcs" = "yes"])
David Reiss1fdb5922008-02-06 22:10:12 +0000219
David Reiss62d39812008-03-02 07:00:22 +0000220AX_THRIFT_LIB(java, [Java], yes)
221if test "$with_java" = "yes"; then
David Reissd9cdf422009-03-13 21:25:29 +0000222 AX_JAVAC_AND_JAVA
Bryan Duxbury38bab122010-08-12 00:27:14 +0000223 AC_PATH_PROG([ANT], [ant])
Jake Farrell210d7662011-05-25 21:07:29 +0000224 AX_CHECK_ANT_VERSION($ANT, 1.7)
David Reissfff84d12009-05-22 19:50:33 +0000225 AC_SUBST(CLASSPATH)
David Reiss4ca0c8e2009-05-12 23:16:55 +0000226 AC_SUBST(ANT_FLAGS)
jfarrellea2fbcf2014-11-21 10:06:01 -0500227 if test "x$JAVA" != "x" && test "x$JAVAC" != "x" && test "x$ANT" != "x" ; then
David Reiss5cc3ba82010-08-31 16:51:20 +0000228 have_java="yes"
229 fi
David Reiss62d39812008-03-02 07:00:22 +0000230fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000231AM_CONDITIONAL([WITH_JAVA], [test "$have_java" = "yes"])
David Reiss1fdb5922008-02-06 22:10:12 +0000232
Christopher Pirob6f18c22008-03-04 07:09:12 +0000233AX_THRIFT_LIB(erlang, [Erlang], yes)
234if test "$with_erlang" = "yes"; then
David Reiss9e2fd792010-05-18 16:52:48 +0000235 AC_ERLANG_PATH_ERL
236 AC_ERLANG_PATH_ERLC
Roger Meierc7b30862015-11-14 10:08:33 +0100237 AC_PATH_PROG([REBAR], [rebar])
David Reiss31e1b6e2010-08-24 20:45:24 +0000238 if test -n "$ERLC" ; then
239 AC_ERLANG_SUBST_LIB_DIR
240 # Install into the detected Erlang directory instead of $libdir/erlang/lib
241 ERLANG_INSTALL_LIB_DIR="$ERLANG_LIB_DIR"
242 AC_ERLANG_SUBST_INSTALL_LIB_SUBDIR(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
243 fi
Roger Meierc7b30862015-11-14 10:08:33 +0100244 if test -n "$ERL" -a -n "$ERLC" && test "x$REBAR" != "x" ; then
David Reiss5cc3ba82010-08-31 16:51:20 +0000245 have_erlang="yes"
Jens Geyer57ac33e2015-07-28 23:12:10 +0200246
247 # otp_release is simply a number (like "17") for OTP17+ while "R16..." for OTP16 or less.
248 # OTP version is currently only used for running tests.
249 if $ERL -eval 'erlang:display(erlang:system_info(otp_release)),halt().' -noshell | grep "^\"R" >/dev/null; then
250 erlang_otp16_or_less="yes"
251 fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000252 fi
Christopher Pirob6f18c22008-03-04 07:09:12 +0000253fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000254AM_CONDITIONAL(WITH_ERLANG, [test "$have_erlang" = "yes"])
Jens Geyer57ac33e2015-07-28 23:12:10 +0200255AM_CONDITIONAL(ERLANG_OTP16, [test "$erlang_otp16_or_less" = "yes"])
Christopher Pirob6f18c22008-03-04 07:09:12 +0000256
Roger Meier8909cbd2014-01-26 11:44:27 +0100257AX_THRIFT_LIB(nodejs, [Nodejs], yes)
258have_nodejs=no
259if test "$with_nodejs" = "yes"; then
260 AC_PATH_PROGS([NODEJS], [nodejs node])
261 AC_PATH_PROG([NPM], [npm])
262 if test "x$NODEJS" != "x" -a "x$NPM" != "x"; then
263 have_nodejs="yes"
264 fi
265fi
266AM_CONDITIONAL(WITH_NODEJS, [test "$have_nodejs" = "yes"])
267AM_CONDITIONAL(HAVE_NPM, [test "x$NPM" != "x"])
268
Roger Meier6cf0ffc2014-04-05 00:45:42 +0200269AX_THRIFT_LIB(lua, [Lua], yes)
270have_lua=no
271if test "$with_lua" = "yes"; then
Jens Geyer468e63b2015-02-08 14:43:15 +0100272 AX_PROG_LUA(5.2,, have_lua="yes", have_lua="no")
273 if test "$have_lua" = "yes"; then
274 AX_LUA_HEADERS(, have_lua="no")
275 AX_LUA_LIBS(, have_lua="no")
Roger Meier6cf0ffc2014-04-05 00:45:42 +0200276 fi
277fi
278AM_CONDITIONAL(WITH_LUA, [test "$have_lua" = "yes"])
279
Nobuaki Sukegawaffc2bb32016-01-12 19:20:05 +0900280# Find python regardless of with_python value, because it's needed by make cross
281AM_PATH_PYTHON(2.6,, :)
David Reiss5cc3ba82010-08-31 16:51:20 +0000282AX_THRIFT_LIB(python, [Python], yes)
283if test "$with_python" = "yes"; then
Nobuaki Sukegawabf9fa902016-09-04 18:49:21 +0900284 if test -n "$PYTHON"; then
David Reiss5cc3ba82010-08-31 16:51:20 +0000285 have_python="yes"
286 fi
Nobuaki Sukegawabf9fa902016-09-04 18:49:21 +0900287 AC_PATH_PROG([TRIAL], [trial])
288 if test -n "$TRIAL"; then
289 have_trial="yes"
290 fi
David Reiss1a140912008-06-11 01:16:37 +0000291fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000292AM_CONDITIONAL(WITH_PYTHON, [test "$have_python" = "yes"])
Nobuaki Sukegawabf9fa902016-09-04 18:49:21 +0900293AM_CONDITIONAL(WITH_TWISTED_TEST, [test "$have_trial" = "yes"])
David Reiss1a140912008-06-11 01:16:37 +0000294
Nobuaki Sukegawaa185d7e2015-11-06 21:24:24 +0900295# Find "python3" executable.
296# It's distro specific and far from ideal but needed to cross test py2-3 at once.
Nobuaki Sukegawabf9fa902016-09-04 18:49:21 +0900297# TODO: find "python2" if it's 3.x
298if python --version 2>&1 | grep -q "Python 2"; then
299 AC_PATH_PROGS([PYTHON3], [python3 python3.5 python35 python3.4 python34])
300 if test -n "$PYTHON3"; then
301 have_py3="yes"
302 fi
Nobuaki Sukegawaa185d7e2015-11-06 21:24:24 +0900303fi
304AM_CONDITIONAL(WITH_PY3, [test "$have_py3" = "yes"])
305
T Jake Luciani1952e542009-02-01 04:47:30 +0000306AX_THRIFT_LIB(perl, [Perl], yes)
307if test "$with_perl" = "yes"; then
308 AC_PATH_PROG([PERL], [perl])
David Reissdcc7e9b2010-08-31 16:51:22 +0000309 if test -n "$PERL" ; then
310 AC_PROG_PERL_MODULES([Bit::Vector], success="yes", success="no")
311 have_perl_bit_vector="$success"
Roger Meieraae8acb2014-01-15 13:55:09 +0100312 AC_PROG_PERL_MODULES([Class::Accessor], success="yes", success="no")
313 have_perl_class_accessor="$success"
Bryan Duxbury12373692010-08-19 05:23:59 +0000314 fi
David Reissdcc7e9b2010-08-31 16:51:22 +0000315 if test -n "$PERL" -a "$have_perl_bit_vector" = "yes" ; then
Roger Meieraae8acb2014-01-15 13:55:09 +0100316 if test -n "$PERL" -a "$have_perl_class_accessor" = "yes" ; then
317 have_perl="yes"
318 fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000319 fi
T Jake Luciani1952e542009-02-01 04:47:30 +0000320fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000321AM_CONDITIONAL(WITH_PERL, [test "$have_perl" = "yes"])
T Jake Luciani1952e542009-02-01 04:47:30 +0000322
Bryan Duxbury6a681872010-05-02 22:39:31 +0000323AX_THRIFT_LIB(php, [PHP], yes)
324if test "$with_php" = "yes"; then
325 AC_PATH_PROG([PHP], [php])
David Reiss5cc3ba82010-08-31 16:51:20 +0000326 if test -n "$PHP" ; then
327 have_php="yes"
328 fi
Bryan Duxbury6a681872010-05-02 22:39:31 +0000329fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000330AM_CONDITIONAL(WITH_PHP, [test "$have_php" = "yes"])
Bryan Duxbury6a681872010-05-02 22:39:31 +0000331
Bryan Duxbury89200e12010-08-25 17:09:02 +0000332AX_THRIFT_LIB(php_extension, [PHP_EXTENSION], yes)
333if test "$with_php_extension" = "yes"; then
jfarrell30a472e2014-07-10 18:42:30 -0400334 if test -f "lib/php/src/ext/thrift_protocol/configure"; then
335 AC_PATH_PROG([PHP_CONFIG], [php-config])
336 if test -n "$PHP_CONFIG" ; then
337 AC_CONFIG_SUBDIRS([lib/php/src/ext/thrift_protocol])
338 have_php_extension="yes"
339 fi
Anthony F. Molinaroddcf32a2010-10-05 16:45:50 +0000340 fi
Bryan Duxbury89200e12010-08-25 17:09:02 +0000341fi
Anthony F. Molinaroddcf32a2010-10-05 16:45:50 +0000342AM_CONDITIONAL(WITH_PHP_EXTENSION, [test "$have_php_extension" = "yes"])
Bryan Duxbury89200e12010-08-25 17:09:02 +0000343
Roger Meier33b720a2012-01-24 18:42:46 +0000344AC_PATH_PROG([PHPUNIT], [phpunit])
345AM_CONDITIONAL(HAVE_PHPUNIT, [test "x$PHPUNIT" != "x"])
346
Mark Erickson932c4702015-08-29 10:46:51 -0500347AX_THRIFT_LIB(dart, [DART], yes)
348if test "$with_dart" = "yes"; then
349 AC_PATH_PROG([DART], [dart])
350 AC_PATH_PROG([DARTPUB], [pub])
351 if test "x$DART" != "x" -a "x$DARTPUB" != "x"; then
352 have_dart="yes"
353 fi
354fi
355AM_CONDITIONAL(WITH_DART, [test "$have_dart" = "yes"])
356
Kevin Clark4bd89162008-07-08 00:47:49 +0000357AX_THRIFT_LIB(ruby, [Ruby], yes)
David Reiss5cc3ba82010-08-31 16:51:20 +0000358have_ruby=no
Kevin Clark4bd89162008-07-08 00:47:49 +0000359if test "$with_ruby" = "yes"; then
360 AC_PATH_PROG([RUBY], [ruby])
Jake Farrell9c39f772011-08-30 19:12:10 +0000361 AC_PATH_PROG([BUNDLER], [bundle])
jfarrell507740c2014-01-22 22:20:21 -0500362 if test "x$RUBY" != "x" -a "x$BUNDLER" != "x"; then
David Reiss5cc3ba82010-08-31 16:51:20 +0000363 have_ruby="yes"
364 fi
Kevin Clark4bd89162008-07-08 00:47:49 +0000365fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000366AM_CONDITIONAL(WITH_RUBY, [test "$have_ruby" = "yes"])
Jake Farrell9c39f772011-08-30 19:12:10 +0000367AM_CONDITIONAL(HAVE_BUNDLER, [test "x$BUNDLER" != "x"])
Bryan Duxburyec473582009-04-07 16:31:04 +0000368
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000369AX_THRIFT_LIB(haskell, [Haskell], yes)
370have_haskell=no
371RUNHASKELL=true
Bryan Duxburyc6574472010-10-06 00:12:33 +0000372CABAL=true
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000373if test "$with_haskell" = "yes"; then
Bryan Duxburyc6574472010-10-06 00:12:33 +0000374 AC_PATH_PROG([CABAL], [cabal])
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000375 AC_PATH_PROG([RUNHASKELL], [runhaskell])
Bryan Duxburyc6574472010-10-06 00:12:33 +0000376 if test "x$CABAL" != "x" -a "x$RUNHASKELL" != "x"; then
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000377 have_haskell="yes"
378 else
379 RUNHASKELL=true
Bryan Duxburyc6574472010-10-06 00:12:33 +0000380 CABAL=true
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000381 fi
382fi
Bryan Duxburyc6574472010-10-06 00:12:33 +0000383AC_SUBST(CABAL)
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000384AC_SUBST(RUNHASKELL)
385AM_CONDITIONAL(WITH_HASKELL, [test "$have_haskell" = "yes"])
Kevin Clark4bd89162008-07-08 00:47:49 +0000386
Christian Lavoieafc6d8f2011-02-20 02:39:19 +0000387AX_THRIFT_LIB(go, [Go], yes)
388if test "$with_go" = "yes"; then
Jens Geyer0e87c462013-06-18 22:25:07 +0200389 AC_PATH_PROG([GO], [go])
390 if [[ -x "$GO" ]] ; then
Jens Geyer0cfdf7c2015-03-18 23:38:43 +0200391 AS_IF([test -n "$GO"],[
392 ax_go_version="1.4"
393
394 AC_MSG_CHECKING([for Go version])
395 golang_version=`$GO version 2>&1 | $SED -e 's/\(go \)\(version \)\(go\)\(@<:@0-9@:>@.@<:@0-9@:>@.@<:@0-9@:>@\)\(@<:@\*@:>@*\).*/\4/'`
396 AC_MSG_RESULT($golang_version)
397 AC_SUBST([golang_version],[$golang_version])
398 AX_COMPARE_VERSION([$ax_go_version],[le],[$golang_version],[
399 :
400 have_go="yes"
401 ],[
402 :
403 have_go="no"
404 ])
405 ],[
406 AC_MSG_WARN([could not find Go ])
407 have_go="no"
408 ])
Christian Lavoieafc6d8f2011-02-20 02:39:19 +0000409 fi
410fi
411AM_CONDITIONAL(WITH_GO, [test "$have_go" = "yes"])
412
Jake Farrellb95b0ff2012-03-22 21:49:10 +0000413
Jens Geyerbd52f1a2014-07-28 01:25:30 +0200414AX_THRIFT_LIB(haxe, [Haxe], yes)
415if test "$with_haxe" = "yes"; then
416 AC_PATH_PROG([HAXE], [haxe])
417 if [[ -x "$HAXE" ]] ; then
Jens Geyer22dddc92015-02-11 02:14:14 +0100418 AX_PROG_HAXE_VERSION( [3.1.3], have_haxe="yes", have_haxe="no")
Jens Geyerbd52f1a2014-07-28 01:25:30 +0200419 fi
420fi
421AM_CONDITIONAL(WITH_HAXE, [test "$have_haxe" = "yes"])
422
423
Volodymyr Gotrab587a122016-09-14 19:18:48 -0500424AX_THRIFT_LIB(dotnetcore, [.NET Core], yes)
425if test "$with_dotnetcore" = "yes"; then
426 AC_PATH_PROG([DOTNETCORE], [dotnet])
427 if [[ -x "$DOTNETCORE" ]] ; then
428 AX_PROG_DOTNETCORE_VERSION( [1.0.0], have_dotnetcore="yes", have_dotnetcore="no")
429 fi
430fi
431AM_CONDITIONAL(WITH_DOTNETCORE, [test "$have_dotnetcore" = "yes"])
432
433
Jake Farrellb95b0ff2012-03-22 21:49:10 +0000434AX_THRIFT_LIB(d, [D], yes)
435if test "$with_d" = "yes"; then
436 AX_DMD
437 AC_SUBST(DMD)
438 if test "x$DMD" != "x"; then
439 have_d="yes"
440 fi
441fi
442
443# Determine actual name of the generated D library for use in the command line
444# when compiling tests. This is needed because the -l<lib> syntax doesn't work
445# with OPTLINK (Windows).
446lib_prefix=lib
447lib_suffix=a
448case "$host_os" in
449 cygwin* | mingw* | pw32* | cegcc*)
450 lib_prefix=""
451 lib_suffix=lib
452 ;;
453esac
454D_LIB_NAME="${lib_prefix}thriftd.${lib_suffix}"
455AC_SUBST(D_LIB_NAME)
456D_EVENT_LIB_NAME="${lib_prefix}thriftd-event.${lib_suffix}"
457AC_SUBST(D_EVENT_LIB_NAME)
458D_SSL_LIB_NAME="${lib_prefix}thriftd-ssl.${lib_suffix}"
459AC_SUBST(D_SSL_LIB_NAME)
460
461if test "$have_d" = "yes"; then
462 AX_CHECK_D_MODULE(deimos.event2.event)
463 have_deimos_event2=$success
464
465 with_d_event_tests="no"
466 if test "$have_deimos_event2" = "yes"; then
467 if test "x$DMD_LIBEVENT_FLAGS" = "x"; then
468 if test "$dmd_optlink" = "yes"; then
469 AC_MSG_WARN([D libevent interface found, but cannot auto-detect \
470linker flags for OPTLINK. Please set DMD_LIBEVENT_FLAGS manually.])
471 else
472 AX_LIB_EVENT([2.0])
473 if test "$success" = "yes"; then
474 DMD_LIBEVENT_FLAGS=$(echo "$LIBEVENT_LDFLAGS $LIBEVENT_LIBS" | \
475 sed -e 's/^ *//g;s/ *$//g;s/^\(.\)/-L\1/g;s/ */ -L/g')
476 with_d_event_tests="yes"
477 else
478 AC_MSG_WARN([D libevent interface present, but libevent library not found.])
479 fi
480 fi
481 else
482 with_d_event_tests="yes"
483 fi
484 fi
485
486 AX_CHECK_D_MODULE(deimos.openssl.ssl)
487 have_deimos_openssl=$success
488
489 with_d_ssl_tests="no"
490 if test "$have_deimos_openssl" = "yes"; then
491 if test "x$DMD_OPENSSL_FLAGS" = "x"; then
492 if test "$dmd_optlink" = "yes"; then
493 AC_MSG_WARN([D OpenSSL interface found, but cannot auto-detect \
494linker flags for OPTLINK. Please set DMD_OPENSSL_FLAGS manually.])
495 else
496 AX_CHECK_OPENSSL([with_d_ssl_tests="yes"])
497 if test "$with_d_ssl_tests" = "yes"; then
498 DMD_OPENSSL_FLAGS=$(echo "$OPENSSL_LDFLAGS $OPENSSL_LIBS" | \
499 sed -e 's/^ *//g;s/ *$//g;s/^\(.\)/-L\1/g;s/ */ -L/g')
500 else
501 AC_MSG_WARN([D OpenSSL interface present, but OpenSSL library not found.])
502 fi
503 fi
504 else
505 with_d_ssl_tests="yes"
506 fi
507 fi
508fi
509
510AM_CONDITIONAL(WITH_D, [test "$have_d" = "yes"])
511AM_CONDITIONAL(DMD_OPTLINK, [test "$dmd_optlink" = "yes"])
512AC_SUBST(DMD_OF_DIRSEP, "$dmd_of_dirsep")
513AM_CONDITIONAL(HAVE_DEIMOS_EVENT2, [test "$have_deimos_event2" = "yes"])
514AM_CONDITIONAL(WITH_D_EVENT_TESTS, [test "$with_d_event_tests" = "yes"])
515AC_SUBST(DMD_LIBEVENT_FLAGS)
516AM_CONDITIONAL(HAVE_DEIMOS_OPENSSL, [test "$have_deimos_openssl" = "yes"])
517AM_CONDITIONAL(WITH_D_SSL_TESTS, [test "$with_d_ssl_tests" = "yes"])
518AC_SUBST(DMD_OPENSSL_FLAGS)
519
Roger Meierc88d5812014-01-26 11:51:26 +0100520AC_ARG_ENABLE([tests],
521 AS_HELP_STRING([--enable-tests], [build tests [default=yes]]),
522 [], enable_tests=yes
523)
Jake Farrell627f1a02011-09-14 03:43:49 +0000524have_tests=yes
Roger Meierc88d5812014-01-26 11:51:26 +0100525if test "$enable_tests" = "no"; then
Jake Farrell627f1a02011-09-14 03:43:49 +0000526 have_tests="no"
527fi
528AM_CONDITIONAL(WITH_TESTS, [test "$have_tests" = "yes"])
529
Nobuaki Sukegawa11da87e2016-09-10 14:02:19 +0900530AC_ARG_ENABLE([plugin],
531 AS_HELP_STRING([--enable-plugin], [build compiler plugin support [default=yes]]),
532 [], enable_plugin=yes
533)
534have_plugin=yes
535if test "$have_cpp" = "no" ; then
536 have_plugin="no"
537fi
538if test "$enable_plugin" = "no"; then
539 have_plugin="no"
540fi
541if test "$have_plugin" = "yes" ; then
dtmuller052abc32016-07-26 11:58:28 +0200542 AC_CONFIG_LINKS([compiler/cpp/test/plugin/t_cpp_generator.cc:compiler/cpp/src/thrift/generate/t_cpp_generator.cc])
Nobuaki Sukegawa11da87e2016-09-10 14:02:19 +0900543fi
544AM_CONDITIONAL(WITH_PLUGIN, [test "$have_plugin" = "yes"])
545
Roger Meierc88d5812014-01-26 11:51:26 +0100546AC_ARG_ENABLE([tutorial],
547 AS_HELP_STRING([--enable-tutorial], [build tutorial [default=yes]]),
548 [], enable_tutorial=yes
549)
550have_tutorial=yes
551if test "$enable_tutorial" = "no"; then
552 have_tutorial="no"
553fi
554AM_CONDITIONAL(WITH_TUTORIAL, [test "$have_tutorial" = "yes"])
555
Roger Meier6e969652011-12-13 00:36:01 +0000556AM_CONDITIONAL(MINGW, false)
557case "${host_os}" in
558*mingw*)
559 mingw32_support="yes"
560 AC_CHECK_HEADER(windows.h)
561 AM_CONDITIONAL(MINGW, true)
562 ;;
563*)
564 AC_ISC_POSIX
565 ;;
566esac
567
David Reiss832b2622007-12-28 18:25:33 +0000568AC_C_CONST
569AC_C_INLINE
570AC_C_VOLATILE
571
572AC_HEADER_STDBOOL
573AC_HEADER_STDC
574AC_HEADER_TIME
Christian Lavoieafc6d8f2011-02-20 02:39:19 +0000575AC_HEADER_SYS_WAIT
576AC_TYPE_SIGNAL
David Reiss832b2622007-12-28 18:25:33 +0000577AC_CHECK_HEADERS([arpa/inet.h])
Bryan Duxbury184d2622010-08-17 17:43:58 +0000578AC_CHECK_HEADERS([sys/param.h])
David Reiss832b2622007-12-28 18:25:33 +0000579AC_CHECK_HEADERS([fcntl.h])
580AC_CHECK_HEADERS([inttypes.h])
David Reiss7ed4b982008-02-11 23:24:47 +0000581AC_CHECK_HEADERS([limits.h])
David Reiss832b2622007-12-28 18:25:33 +0000582AC_CHECK_HEADERS([netdb.h])
583AC_CHECK_HEADERS([netinet/in.h])
584AC_CHECK_HEADERS([pthread.h])
585AC_CHECK_HEADERS([stddef.h])
David Reissd7a16f42008-02-19 22:47:29 +0000586AC_CHECK_HEADERS([stdlib.h])
David Reiss832b2622007-12-28 18:25:33 +0000587AC_CHECK_HEADERS([sys/socket.h])
588AC_CHECK_HEADERS([sys/time.h])
Roger Meier2fa9c312011-09-05 19:15:53 +0000589AC_CHECK_HEADERS([sys/un.h])
590AC_CHECK_HEADERS([sys/poll.h])
591AC_CHECK_HEADERS([sys/resource.h])
David Reiss832b2622007-12-28 18:25:33 +0000592AC_CHECK_HEADERS([unistd.h])
593AC_CHECK_HEADERS([libintl.h])
594AC_CHECK_HEADERS([malloc.h])
Roger Meier9d9c4b92011-02-23 20:27:54 +0000595AC_CHECK_HEADERS([openssl/ssl.h])
596AC_CHECK_HEADERS([openssl/rand.h])
597AC_CHECK_HEADERS([openssl/x509v3.h])
Roger Meier12d70532011-12-14 23:35:28 +0000598AC_CHECK_HEADERS([sched.h])
Roger Meier93576362013-03-15 19:49:23 +0100599AC_CHECK_HEADERS([wchar.h])
David Reiss832b2622007-12-28 18:25:33 +0000600
601AC_CHECK_LIB(pthread, pthread_create)
David Reisse4ca1792009-05-21 02:28:19 +0000602dnl NOTE(dreiss): I haven't been able to find any really solid docs
603dnl on what librt is and how it fits into various Unix systems.
604dnl My best guess is that it is where glibc stashes its implementation
605dnl of the POSIX Real-Time Extensions. This seems necessary on Linux,
606dnl and we haven't yet found a system where this is a problem.
607AC_CHECK_LIB(rt, clock_gettime)
David Reiss9b903442009-10-21 05:51:28 +0000608AC_CHECK_LIB(socket, setsockopt)
Roger Meier68691122011-09-09 06:19:35 +0000609
David Reiss832b2622007-12-28 18:25:33 +0000610AC_TYPE_INT16_T
611AC_TYPE_INT32_T
612AC_TYPE_INT64_T
613AC_TYPE_INT8_T
614AC_TYPE_MODE_T
615AC_TYPE_OFF_T
616AC_TYPE_SIZE_T
David Reiss847a2942008-04-21 18:07:43 +0000617AC_TYPE_SSIZE_T
David Reiss832b2622007-12-28 18:25:33 +0000618AC_TYPE_UINT16_T
619AC_TYPE_UINT32_T
620AC_TYPE_UINT64_T
621AC_TYPE_UINT8_T
David Reiss33fc5ad2008-05-09 07:17:34 +0000622AC_CHECK_TYPES([ptrdiff_t], [], [exit 1])
David Reiss832b2622007-12-28 18:25:33 +0000623
David Reiss7ed4b982008-02-11 23:24:47 +0000624AC_STRUCT_TM
625
David Reiss85a8f7b2009-05-21 02:28:16 +0000626dnl NOTE(dreiss): AI_ADDRCONFIG is not defined on OpenBSD.
627AC_CHECK_DECL([AI_ADDRCONFIG], [],
628 [AC_DEFINE([AI_ADDRCONFIG], 0,
629 [Define if the AI_ADDRCONFIG symbol is unavailable])],
630 [
631 #include <sys/types.h>
632 #include <sys/socket.h>
633 #include <netdb.h>
634])
635
David Reiss832b2622007-12-28 18:25:33 +0000636AC_FUNC_ALLOCA
Roger Meier213a6642010-10-27 12:30:11 +0000637AC_FUNC_FORK
David Reiss832b2622007-12-28 18:25:33 +0000638AC_FUNC_MALLOC
David Reiss7ed4b982008-02-11 23:24:47 +0000639AC_FUNC_MEMCMP
David Reiss832b2622007-12-28 18:25:33 +0000640AC_FUNC_REALLOC
641AC_FUNC_SELECT_ARGTYPES
642AC_FUNC_STAT
643AC_FUNC_STRERROR_R
David Reiss7ed4b982008-02-11 23:24:47 +0000644AC_FUNC_STRFTIME
David Reiss832b2622007-12-28 18:25:33 +0000645AC_FUNC_VPRINTF
646AC_CHECK_FUNCS([strtoul])
647AC_CHECK_FUNCS([bzero])
David Reiss7ed4b982008-02-11 23:24:47 +0000648AC_CHECK_FUNCS([ftruncate])
David Reiss832b2622007-12-28 18:25:33 +0000649AC_CHECK_FUNCS([gethostbyname])
Roger Meierbea31442014-04-08 23:52:01 +0200650AC_CHECK_FUNCS([gethostbyname_r])
David Reiss832b2622007-12-28 18:25:33 +0000651AC_CHECK_FUNCS([gettimeofday])
652AC_CHECK_FUNCS([memmove])
653AC_CHECK_FUNCS([memset])
654AC_CHECK_FUNCS([mkdir])
655AC_CHECK_FUNCS([realpath])
656AC_CHECK_FUNCS([select])
Jens Geyer4aa95df2015-04-03 12:37:03 +0200657AC_CHECK_FUNCS([setlocale])
David Reiss832b2622007-12-28 18:25:33 +0000658AC_CHECK_FUNCS([socket])
659AC_CHECK_FUNCS([strchr])
660AC_CHECK_FUNCS([strdup])
David Reiss7ed4b982008-02-11 23:24:47 +0000661AC_CHECK_FUNCS([strerror])
David Reiss832b2622007-12-28 18:25:33 +0000662AC_CHECK_FUNCS([strstr])
663AC_CHECK_FUNCS([strtol])
664AC_CHECK_FUNCS([sqrt])
David Reisse4ca1792009-05-21 02:28:19 +0000665dnl The following functions are optional.
Roger Meier213a6642010-10-27 12:30:11 +0000666AC_CHECK_FUNCS([alarm])
David Reisse4ca1792009-05-21 02:28:19 +0000667AC_CHECK_FUNCS([clock_gettime])
668AC_CHECK_FUNCS([sched_get_priority_min])
669AC_CHECK_FUNCS([sched_get_priority_max])
Jens Geyer0cf802a2014-05-27 23:10:11 +0200670AC_CHECK_FUNCS([inet_ntoa])
671AC_CHECK_FUNCS([pow])
David Reiss832b2622007-12-28 18:25:33 +0000672
David Reiss79db3e12010-08-31 16:51:31 +0000673if test "$cross_compiling" = "no" ; then
674 AX_SIGNED_RIGHT_SHIFT
675fi
David Reisse4d4ea02009-04-02 21:37:17 +0000676
David Reiss5ddabb82010-10-06 17:09:37 +0000677dnl autoscan thinks we need this macro because we have a member function
678dnl called "error". Invoke the macro but don't run the check so autoscan
679dnl thinks we are in the clear. It's highly unlikely that we will ever
680dnl actually use the function that this checks for.
681if false ; then
682 AC_FUNC_ERROR_AT_LINE
683fi
684
Roger Meier213a6642010-10-27 12:30:11 +0000685# --- Coverage hooks ---
686
687AC_ARG_ENABLE(coverage,
688 [ --enable-coverage turn on -fprofile-arcs -ftest-coverage],
689 [case "${enableval}" in
690 yes) ENABLE_COVERAGE=1 ;;
691 no) ENABLE_COVERAGE=0 ;;
692 *) AC_MSG_ERROR(bad value ${enableval} for --enable-cov) ;;
693 esac],
694 [ENABLE_COVERAGE=2])
695
696if test "x[$]ENABLE_COVERAGE" = "x1"; then
697 AC_MSG_WARN(enable coverage)
698 GCOV_CFLAGS="`echo \"[$]CFLAGS\" | perl -pe 's/-O\d+//g;'` -fprofile-arcs -ftest-coverage"
699 GCOV_CXXFLAGS="`echo \"[$]CXXFLAGS\" | perl -pe 's/-O\d+//g;'` -fprofile-arcs -ftest-coverage"
700 GCOV_LDFLAGS="-XCClinker -fprofile-arcs -XCClinker -ftest-coverage"
701fi
702
703AC_SUBST(ENABLE_COVERAGE)
704AC_SUBST(GCOV_CFLAGS)
705AC_SUBST(GCOV_CXXFLAGS)
706AC_SUBST(GCOV_LDFLAGS)
707
Roger Meier3faaedf2011-10-02 10:51:45 +0000708AC_ARG_ENABLE(boostthreads,
709 [ --enable-boostthreads use boost threads, instead of POSIX pthread (experimental) ],
710 [case "${enableval}" in
711 yes) ENABLE_BOOSTTHREADS=1 ;;
712 no) ENABLE_BOOSTTHREADS=0 ;;
713 *) AC_MSG_ERROR(bad value ${enableval} for --enable-cov) ;;
714 esac],
715 [ENABLE_BOOSTTHREADS=2])
716
717
718if test "x[$]ENABLE_BOOSTTHREADS" = "x1"; then
719 AC_MSG_WARN(enable boostthreads)
720 AC_DEFINE([USE_BOOST_THREAD], [1], [experimental --enable-boostthreads that replaces POSIX pthread by boost::thread])
Roger Meier38315782011-11-06 11:29:41 +0000721 LIBS="-lboost_thread $LIBS"
Roger Meier3faaedf2011-10-02 10:51:45 +0000722fi
723
724AM_CONDITIONAL([WITH_BOOSTTHREADS], [test "x[$]ENABLE_BOOSTTHREADS" = "x1"])
725
David Reiss832b2622007-12-28 18:25:33 +0000726AC_CONFIG_HEADERS(config.h:config.hin)
Roger Meier58fe5362013-06-22 22:05:22 +0200727AC_CONFIG_HEADERS(lib/cpp/src/thrift/config.h:config.hin)
Chandler Mayccd998a2016-01-10 06:01:10 +0000728AC_CONFIG_HEADERS(lib/c_glib/src/thrift/config.h:config.hin)
Jake Farrell240df172013-06-04 23:59:34 -0400729# gruard against pre defined config.h
730AH_TOP([
731#ifndef CONFIG_H
Roger Meier8909cbd2014-01-26 11:44:27 +0100732#define CONFIG_H
Jake Farrell240df172013-06-04 23:59:34 -0400733])
734AH_BOTTOM([
735#endif
736])
737
David Reiss832b2622007-12-28 18:25:33 +0000738
739AC_CONFIG_FILES([
740 Makefile
741 compiler/cpp/Makefile
Nobuaki Sukegawa11da87e2016-09-10 14:02:19 +0900742 compiler/cpp/src/Makefile
dtmuller052abc32016-07-26 11:58:28 +0200743 compiler/cpp/src/thrift/plugin/Makefile
Nobuaki Sukegawa11da87e2016-09-10 14:02:19 +0900744 compiler/cpp/test/Makefile
dtmuller052abc32016-07-26 11:58:28 +0200745 compiler/cpp/src/thrift/version.h
David Reiss832b2622007-12-28 18:25:33 +0000746 lib/Makefile
747 lib/cpp/Makefile
David Reiss351e22b2010-08-31 16:51:19 +0000748 lib/cpp/test/Makefile
David Reiss832b2622007-12-28 18:25:33 +0000749 lib/cpp/thrift-nb.pc
750 lib/cpp/thrift-z.pc
Roger Meier86e89862012-02-10 19:53:20 +0000751 lib/cpp/thrift-qt.pc
Nobuaki Sukegawa66228772014-12-07 21:45:33 +0900752 lib/cpp/thrift-qt5.pc
Bryan Duxburyc6574472010-10-06 00:12:33 +0000753 lib/cpp/thrift.pc
Roger Meier213a6642010-10-27 12:30:11 +0000754 lib/c_glib/Makefile
755 lib/c_glib/thrift_c_glib.pc
756 lib/c_glib/test/Makefile
David Reiss1fdb5922008-02-06 22:10:12 +0000757 lib/csharp/Makefile
Nobuaki Sukegawa88c5ee72016-09-04 18:49:18 +0900758 lib/csharp/test/Multiplex/Makefile
Jake Farrellb95b0ff2012-03-22 21:49:10 +0000759 lib/d/Makefile
760 lib/d/test/Makefile
Bryan Duxbury7173bd92010-05-02 22:54:22 +0000761 lib/erl/Makefile
Jens Geyer0e87c462013-06-18 22:25:07 +0200762 lib/go/Makefile
Jens Geyera7da4882013-07-18 00:33:05 +0200763 lib/go/test/Makefile
Jens Geyerfea00ac2014-10-01 02:22:48 +0200764 lib/haxe/test/Makefile
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000765 lib/hs/Makefile
David Reissf8dcf032008-02-23 22:07:39 +0000766 lib/java/Makefile
Nobuaki Sukegawa4b7dbe32016-05-25 12:09:02 +0900767 lib/js/Makefile
Roger Meierf2495762011-03-17 19:13:36 +0000768 lib/js/test/Makefile
Stig Bakkenae3775a2014-12-02 09:21:24 +0100769 lib/json/Makefile
770 lib/json/test/Makefile
Volodymyr Gotrab587a122016-09-14 19:18:48 -0500771 lib/netcore/Makefile
Roger Meier8909cbd2014-01-26 11:44:27 +0100772 lib/nodejs/Makefile
T Jake Luciani1952e542009-02-01 04:47:30 +0000773 lib/perl/Makefile
774 lib/perl/test/Makefile
Bryan Duxbury6a681872010-05-02 22:39:31 +0000775 lib/php/Makefile
Roger Meier33b720a2012-01-24 18:42:46 +0000776 lib/php/test/Makefile
Mark Erickson932c4702015-08-29 10:46:51 -0500777 lib/dart/Makefile
David Reiss832b2622007-12-28 18:25:33 +0000778 lib/py/Makefile
Kevin Clark4bd89162008-07-08 00:47:49 +0000779 lib/rb/Makefile
Roger Meier6cf0ffc2014-04-05 00:45:42 +0200780 lib/lua/Makefile
BCGde0b4b52015-12-28 01:15:00 -0500781 lib/xml/Makefile
782 lib/xml/test/Makefile
David Reiss8180c0c2008-02-04 21:14:14 +0000783 test/Makefile
Nobuaki Sukegawabd165302016-01-19 11:10:07 +0900784 test/features/Makefile
Roger Meierb3c84092014-09-01 21:53:40 +0200785 test/c_glib/Makefile
Roger Meierd3b9dca2011-06-24 14:01:10 +0000786 test/cpp/Makefile
Nobuaki Sukegawa88c5ee72016-09-04 18:49:18 +0900787 test/csharp/Makefile
alisdair sullivan06d0fa02014-08-05 19:54:57 -0700788 test/erl/Makefile
Jens Geyerf4598682014-05-08 23:18:44 +0200789 test/go/Makefile
Jens Geyerbd52f1a2014-07-28 01:25:30 +0200790 test/haxe/Makefile
Bryan Duxburyc6574472010-10-06 00:12:33 +0000791 test/hs/Makefile
Nobuaki Sukegawad094e792016-02-01 21:47:49 +0900792 test/lua/Makefile
Volodymyr Gotrab587a122016-09-14 19:18:48 -0500793 test/netcore/Makefile
Roger Meierb33967b2012-01-21 09:18:05 +0000794 test/php/Makefile
Mark Erickson932c4702015-08-29 10:46:51 -0500795 test/dart/Makefile
Roger Meier01b568c2012-01-10 21:30:02 +0000796 test/perl/Makefile
David Reiss9ff3b9d2008-02-15 01:10:23 +0000797 test/py/Makefile
Roger Meier50e43492010-10-08 17:46:06 +0000798 test/py.twisted/Makefile
Chris Piro20c81ad2013-03-07 11:32:48 -0500799 test/py.tornado/Makefile
Kevin Clark4bd89162008-07-08 00:47:49 +0000800 test/rb/Makefile
Roger Meierfa899322012-10-22 19:27:38 +0000801 tutorial/Makefile
Roger Meier2814c2e2014-07-29 23:28:46 +0200802 tutorial/c_glib/Makefile
Roger Meier18a90d12012-10-24 18:40:06 +0000803 tutorial/cpp/Makefile
Nobuaki Sukegawa402f6412016-02-22 22:41:25 +0900804 tutorial/d/Makefile
Jens Geyer0e87c462013-06-18 22:25:07 +0200805 tutorial/go/Makefile
Jens Geyerbd52f1a2014-07-28 01:25:30 +0200806 tutorial/haxe/Makefile
Roger Meier303eb1b2014-05-14 00:49:41 +0200807 tutorial/hs/Makefile
Roger Meierfa899322012-10-22 19:27:38 +0000808 tutorial/java/Makefile
809 tutorial/js/Makefile
Volodymyr Gotrab587a122016-09-14 19:18:48 -0500810 tutorial/netcore/Makefile
Roger Meier64998e22014-01-27 21:15:56 +0100811 tutorial/nodejs/Makefile
Mark Erickson932c4702015-08-29 10:46:51 -0500812 tutorial/dart/Makefile
Roger Meier1d66d062012-10-26 21:46:18 +0000813 tutorial/py/Makefile
814 tutorial/py.twisted/Makefile
Chris Piro20c81ad2013-03-07 11:32:48 -0500815 tutorial/py.tornado/Makefile
Roger Meiered817d02013-06-09 23:10:06 +0200816 tutorial/rb/Makefile
David Reiss832b2622007-12-28 18:25:33 +0000817])
Marc Slemkob09f5882006-08-23 22:03:34 +0000818
Nobuaki Sukegawa03f0e182015-05-09 18:33:42 +0900819if test "$have_cpp" = "yes" ; then MAYBE_CPP="cpp" ; else MAYBE_CPP="" ; fi
820AC_SUBST([MAYBE_CPP])
821if test "$have_c_glib" = "yes" ; then MAYBE_C_GLIB="c_glib" ; else MAYBE_C_GLIB="" ; fi
822AC_SUBST([MAYBE_C_GLIB])
Nobuaki Sukegawa8b791b22016-03-05 13:40:25 +0900823if test "$have_d" = "yes" -a "$have_deimos_event2" = "yes" -a "$have_deimos_openssl" = "yes"; then MAYBE_D="d" ; else MAYBE_D="" ; fi
824AC_SUBST([MAYBE_D])
Nobuaki Sukegawa03f0e182015-05-09 18:33:42 +0900825if test "$have_java" = "yes" ; then MAYBE_JAVA="java" ; else MAYBE_JAVA="" ; fi
826AC_SUBST([MAYBE_JAVA])
827if test "$have_csharp" = "yes" ; then MAYBE_CSHARP="csharp" ; else MAYBE_CSHARP="" ; fi
828AC_SUBST([MAYBE_CSHARP])
Randy Abernethy983bf7d2015-10-09 12:28:57 -0700829if test "$have_python" = "yes" ; then MAYBE_PYTHON="py" ; else MAYBE_PYTHON="" ; fi
Nobuaki Sukegawa03f0e182015-05-09 18:33:42 +0900830AC_SUBST([MAYBE_PYTHON])
Nobuaki Sukegawaa185d7e2015-11-06 21:24:24 +0900831if test "$have_py3" = "yes" ; then MAYBE_PY3="py3" ; else MAYBE_PY3="" ; fi
832AC_SUBST([MAYBE_PY3])
Nobuaki Sukegawa03f0e182015-05-09 18:33:42 +0900833if test "$have_ruby" = "yes" ; then MAYBE_RUBY="rb" ; else MAYBE_RUBY="" ; fi
834AC_SUBST([MAYBE_RUBY])
Randy Abernethy983bf7d2015-10-09 12:28:57 -0700835if test "$have_haskell" = "yes" ; then MAYBE_HASKELL="hs" ; else MAYBE_HASKELL="" ; fi
Nobuaki Sukegawa03f0e182015-05-09 18:33:42 +0900836AC_SUBST([MAYBE_HASKELL])
837if test "$have_perl" = "yes" ; then MAYBE_PERL="perl" ; else MAYBE_PERL="" ; fi
838AC_SUBST([MAYBE_PERL])
839if test "$have_php" = "yes" ; then MAYBE_PHP="php" ; else MAYBE_PHP="" ; fi
840AC_SUBST([MAYBE_PHP])
Mark Erickson932c4702015-08-29 10:46:51 -0500841if test "$have_dart" = "yes" ; then MAYBE_DART="dart" ; else MAYBE_DART="" ; fi
842AC_SUBST([MAYBE_DART])
Nobuaki Sukegawa03f0e182015-05-09 18:33:42 +0900843if test "$have_go" = "yes" ; then MAYBE_GO="go" ; else MAYBE_GO="" ; fi
844AC_SUBST([MAYBE_GO])
845if test "$have_nodejs" = "yes" ; then MAYBE_NODEJS="nodejs" ; else MAYBE_NODEJS="" ; fi
846AC_SUBST([MAYBE_NODEJS])
Nobuaki Sukegawa826ea992015-10-28 22:19:45 +0900847if test "$have_erlang" = "yes" ; then MAYBE_ERLANG="erl" ; else MAYBE_ERLANG="" ; fi
848AC_SUBST([MAYBE_ERLANG])
Nobuaki Sukegawad094e792016-02-01 21:47:49 +0900849if test "$have_lua" = "yes" ; then MAYBE_LUA="lua" ; else MAYBE_LUA="" ; fi
850AC_SUBST([MAYBE_LUA])
Nobuaki Sukegawa03f0e182015-05-09 18:33:42 +0900851
Marc Slemkob09f5882006-08-23 22:03:34 +0000852AC_OUTPUT
David Reiss5cc3ba82010-08-31 16:51:20 +0000853
854
855echo
856echo "$PACKAGE $VERSION"
857echo
Nobuaki Sukegawa11da87e2016-09-10 14:02:19 +0900858echo "Building Plugin Support ...... : $have_plugin"
David Reissea4c9812010-08-31 16:51:21 +0000859echo "Building C++ Library ......... : $have_cpp"
Roger Meier213a6642010-10-27 12:30:11 +0000860echo "Building C (GLib) Library .... : $have_c_glib"
David Reiss5cc3ba82010-08-31 16:51:20 +0000861echo "Building Java Library ........ : $have_java"
862echo "Building C# Library .......... : $have_csharp"
Volodymyr Gotrab587a122016-09-14 19:18:48 -0500863echo "Building .NET Core Library ... : $have_dotnetcore"
David Reiss5cc3ba82010-08-31 16:51:20 +0000864echo "Building Python Library ...... : $have_python"
865echo "Building Ruby Library ........ : $have_ruby"
Jens Geyerbd52f1a2014-07-28 01:25:30 +0200866echo "Building Haxe Library ........ : $have_haxe"
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000867echo "Building Haskell Library ..... : $have_haskell"
David Reiss5cc3ba82010-08-31 16:51:20 +0000868echo "Building Perl Library ........ : $have_perl"
869echo "Building PHP Library ......... : $have_php"
Mark Erickson932c4702015-08-29 10:46:51 -0500870echo "Building Dart Library ........ : $have_dart"
David Reiss5cc3ba82010-08-31 16:51:20 +0000871echo "Building Erlang Library ...... : $have_erlang"
Christian Lavoieafc6d8f2011-02-20 02:39:19 +0000872echo "Building Go Library .......... : $have_go"
Jake Farrellb95b0ff2012-03-22 21:49:10 +0000873echo "Building D Library ........... : $have_d"
Roger Meier8909cbd2014-01-26 11:44:27 +0100874echo "Building NodeJS Library ...... : $have_nodejs"
Roger Meier6cf0ffc2014-04-05 00:45:42 +0200875echo "Building Lua Library ......... : $have_lua"
Jake Farrellc9c972b2012-07-24 17:28:24 +0000876
David Reiss5cc3ba82010-08-31 16:51:20 +0000877if test "$have_cpp" = "yes" ; then
878 echo
Roger Meier86e89862012-02-10 19:53:20 +0000879 echo "C++ Library:"
880 echo " Build TZlibTransport ...... : $have_zlib"
881 echo " Build TNonblockingServer .. : $have_libevent"
Nobuaki Sukegawa66228772014-12-07 21:45:33 +0900882 echo " Build TQTcpServer (Qt4) .... : $have_qt"
883 echo " Build TQTcpServer (Qt5) .... : $have_qt5"
David Reiss5cc3ba82010-08-31 16:51:20 +0000884fi
885if test "$have_java" = "yes" ; then
886 echo
Roger Meier86e89862012-02-10 19:53:20 +0000887 echo "Java Library:"
888 echo " Using javac ............... : $JAVAC"
889 echo " Using java ................ : $JAVA"
890 echo " Using ant ................. : $ANT"
David Reiss5cc3ba82010-08-31 16:51:20 +0000891fi
892if test "$have_csharp" = "yes" ; then
893 echo
Roger Meier86e89862012-02-10 19:53:20 +0000894 echo "C# Library:"
895 echo " Using .NET 3.5 ............ : $net_3_5"
David Reiss5cc3ba82010-08-31 16:51:20 +0000896fi
Volodymyr Gotrab587a122016-09-14 19:18:48 -0500897if test "$have_dotnetcore" = "yes" ; then
898 echo
899 echo ".NET Core Library:"
900 echo " Using .NET Core ........... : $DOTNETCORE"
901 echo " Using .NET Core version ... : $DOTNETCORE_VERSION"
902fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000903if test "$have_python" = "yes" ; then
904 echo
Roger Meier86e89862012-02-10 19:53:20 +0000905 echo "Python Library:"
906 echo " Using Python .............. : $PYTHON"
Nobuaki Sukegawabf9fa902016-09-04 18:49:21 +0900907 if test "$have_py3" = "yes" ; then
908 echo " Using Python3 ............. : $PYTHON3"
909 fi
910 if test "$have_trial" = "yes"; then
911 echo " Using trial ............... : $TRIAL"
912 fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000913fi
Anthony F. Molinaroddcf32a2010-10-05 16:45:50 +0000914if test "$have_php" = "yes" ; then
915 echo
Roger Meier86e89862012-02-10 19:53:20 +0000916 echo "PHP Library:"
917 echo " Using php-config .......... : $PHP_CONFIG"
Anthony F. Molinaroddcf32a2010-10-05 16:45:50 +0000918fi
Mark Erickson932c4702015-08-29 10:46:51 -0500919if test "$have_dart" = "yes" ; then
920 echo
921 echo "Dart Library:"
922 echo " Using Dart ................ : $DART"
923 echo " Using Pub ................. : $DARTPUB"
924fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000925if test "$have_ruby" = "yes" ; then
926 echo
Roger Meier86e89862012-02-10 19:53:20 +0000927 echo "Ruby Library:"
928 echo " Using Ruby ................ : $RUBY"
David Reiss5cc3ba82010-08-31 16:51:20 +0000929fi
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000930if test "$have_haskell" = "yes" ; then
931 echo
Roger Meier86e89862012-02-10 19:53:20 +0000932 echo "Haskell Library:"
933 echo " Using Haskell ............. : $RUNHASKELL"
934 echo " Using Cabal ............... : $CABAL"
Anthony F. Molinaroa5df7c72010-09-27 17:22:17 +0000935fi
Jens Geyerbd52f1a2014-07-28 01:25:30 +0200936if test "$have_haxe" = "yes" ; then
937 echo
938 echo "Haxe Library:"
939 echo " Using Haxe ................ : $HAXE"
Jens Geyer22dddc92015-02-11 02:14:14 +0100940 echo " Using Haxe version ........ : $HAXE_VERSION"
Jens Geyerbd52f1a2014-07-28 01:25:30 +0200941fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000942if test "$have_perl" = "yes" ; then
943 echo
Roger Meier86e89862012-02-10 19:53:20 +0000944 echo "Perl Library:"
945 echo " Using Perl ................ : $PERL"
David Reiss5cc3ba82010-08-31 16:51:20 +0000946fi
947if test "$have_erlang" = "yes" ; then
948 echo
Roger Meier86e89862012-02-10 19:53:20 +0000949 echo "Erlang Library:"
950 echo " Using erlc ................ : $ERLC"
Roger Meierc7b30862015-11-14 10:08:33 +0100951 echo " Using rebar ............... : $REBAR"
David Reiss5cc3ba82010-08-31 16:51:20 +0000952fi
Christian Lavoieafc6d8f2011-02-20 02:39:19 +0000953if test "$have_go" = "yes" ; then
954 echo
Roger Meier86e89862012-02-10 19:53:20 +0000955 echo "Go Library:"
Jens Geyer0e87c462013-06-18 22:25:07 +0200956 echo " Using Go................... : $GO"
Jens Geyera7da4882013-07-18 00:33:05 +0200957 echo " Using Go version........... : $($GO version)"
Christian Lavoieafc6d8f2011-02-20 02:39:19 +0000958fi
Jake Farrellb95b0ff2012-03-22 21:49:10 +0000959if test "$have_d" = "yes" ; then
960 echo
Jens Geyerbcca1d92013-12-26 19:24:30 +0100961 echo "D Library:"
962 echo " Using D Compiler .......... : $DMD"
963 echo " Building D libevent tests . : $with_d_event_tests"
964 echo " Building D SSL tests ...... : $with_d_ssl_tests"
Jake Farrellb95b0ff2012-03-22 21:49:10 +0000965fi
Roger Meier8909cbd2014-01-26 11:44:27 +0100966if test "$have_nodejs" = "yes" ; then
967 echo
968 echo "NodeJS Library:"
969 echo " Using NodeJS .............. : $NODEJS"
970 echo " Using NodeJS version....... : $($NODEJS --version)"
971fi
Roger Meier6cf0ffc2014-04-05 00:45:42 +0200972if test "$have_lua" = "yes" ; then
973 echo
974 echo "Lua Library:"
975 echo " Using Lua .............. : $LUA"
976fi
David Reiss5cc3ba82010-08-31 16:51:20 +0000977echo
978echo "If something is missing that you think should be present,"
979echo "please skim the output of configure to find the missing"
980echo "component. Details are present in config.log."