configure.ac 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405
  1. # configure.ac -*- autoconf -*- vim: filetype=config
  2. #
  3. # Gearman server and library
  4. # Copyright (C) 2011-2014 Data Differential, http://datadifferential.com/
  5. # Copyright (C) 2008 Brian Aker, Eric Day, Monty Taylor
  6. # All rights reserved.
  7. #
  8. # Use and distribution licensed under the BSD license. See
  9. # the COPYING file in this directory for full text.
  10. m4_include([version.m4])
  11. AC_REVISION([m4_esyscmd_s([git describe --always])])
  12. AC_PREREQ([2.63])
  13. AC_INIT([gearmand],VERSION_NUMBER,[https://github.com/gearman/gearmand/issues],[gearmand],[http://gearman.info/])
  14. AC_CONFIG_AUX_DIR([build-aux])
  15. # Setup the compilers early on
  16. AC_PROG_CC([cc gcc clang])
  17. AC_PROG_CXX([c++ g++ clang++])
  18. AC_CONFIG_MACRO_DIR([m4])
  19. AC_CANONICAL_HOST
  20. AC_ARG_PROGRAM
  21. AC_USE_SYSTEM_EXTENSIONS
  22. AX_GENERATE_CHANGELOG
  23. AM_INIT_AUTOMAKE([1.11 color-tests -Wno-portability subdir-objects foreign tar-ustar])
  24. AC_CONFIG_HEADERS([gear_config.h:gear_config.in])dnl Keep filename to 8.3 for MS-DOS.
  25. AC_SUBST([AUTOHEADER_FILE],[gear_config.h])
  26. AC_CONFIG_SRCDIR([libgearman/gearman.cc])
  27. GEARMAN_LIBRARY_VERSION=8:0:0
  28. # | | |
  29. # +------+ | +---+
  30. # | | |
  31. # current:revision:age
  32. # | | |
  33. # | | +- increment if interfaces have been added
  34. # | | set to zero if interfaces have been removed
  35. # | | or changed
  36. # | +- increment if source code has changed
  37. # | set to zero if current is incremented
  38. # +- increment if interfaces have been added, removed or changed
  39. AC_SUBST([GEARMAN_LIBRARY_VERSION])
  40. LT_PREREQ([2.2])
  41. LT_INIT([dlopen])
  42. LT_LANG([C++])
  43. LT_LIB_M
  44. AC_SUBST([lt_cv_dlopen_libs])
  45. AC_PROG_CC_C99
  46. AS_IF([test "x${ac_cv_prog_cc_c99}" == "xno"],[AC_MSG_ERROR([No c99 compatible compiler found])])
  47. AC_DEFUN([CHECK_CXX0X],[
  48. AC_LANG_PUSH([C++])
  49. AX_CHECK_COMPILE_FLAG([-std=c++0x],[
  50. CXX_STD="c++0x"])
  51. AC_LANG_POP([C++])
  52. ])
  53. CHECK_CXX0X
  54. AX_PLATFORM
  55. m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
  56. # First look for Boost, maybe for a specific minimum version:
  57. AC_DEFUN([CHECK_BOOST],
  58. [AX_BOOST_BASE([1.39],,[AC_MSG_ERROR(could not find boost)])
  59. AX_BOOST_PROGRAM_OPTIONS])
  60. CHECK_BOOST
  61. m4_include([libhashkit/include.m4])
  62. AX_CXX_CINTTYPES
  63. CONFIG_EXTRA
  64. m4_include([libtest/yatl.m4])
  65. AM_CONDITIONAL([BUILDING_GEARMAN],true)
  66. AM_CONDITIONAL([HAVE_LIBGEARMAN],true)
  67. AC_SUBST([_WITH_LIBGEARMAN_SUPPORT],["_WITH_LIBGEARMAN_SUPPORT 0"])
  68. AC_DEFINE([GEARMAND_BINARY],["./gearmand/gearmand"],[Name of the gearmand binary used in make test])
  69. AC_DEFINE([HAVE_LIBGEARMAN],[1], [libgearman support])
  70. AC_DEFINE([HAVE_GEARMAND_BINARY],[1],[gearmand binary was found])
  71. AC_DEFUN([CHECK_CURL],
  72. [AX_LIB_CURL([7.21.7],
  73. [AX_CHECK_LIBRARY([LIBCURL],[curl/curl.h],[curl])],
  74. [AC_DEFINE([HAVE_LIBCURL],[0],[Have the LIBCURL library])
  75. ])
  76. ])
  77. CHECK_CURL
  78. AM_CONDITIONAL([HAVE_LIBCURL],[test "x${ax_cv_have_LIBCURL}" = "xyes"])
  79. m4_include([m4/drizzled.m4])
  80. WITH_LIBDRIZZLE
  81. AX_LIB_SQLITE3
  82. AS_IF([test "x${WANT_SQLITE3}" = "xyes"],
  83. [AC_DEFINE([HAVE_LIBSQLITE3],[1],[Have the SQLITE3 library])],
  84. [AC_DEFINE([HAVE_LIBSQLITE3],[0],[Have the SQLITE3 library])])
  85. AM_CONDITIONAL([HAVE_LIBSQLITE3],[test "x${WANT_SQLITE3}" = "xyes"])
  86. PANDORA_ENABLE_DTRACE
  87. AX_HAVE_LIBPQ
  88. PANDORA_HAVE_LIBTOKYOCABINET
  89. AC_FUNC_STRERROR_R
  90. SOCKET_SEND_FLAGS
  91. FCNTL_FLAGS
  92. AX_ENABLE_LIBHIREDIS
  93. # Checks for programs.
  94. AC_CHECK_PROGS([DPKG_GENSYMBOLS],[dpkg-gensymbols])
  95. AC_CHECK_PROGS([OPENSSL],[openssl])
  96. AC_CHECK_PROGS([VALGRIND],['valgrind'])
  97. AC_CHECK_PROGS([WINE],['wine'])
  98. AC_CHECK_PROGS([RPMBUILD],[rpmbuild --nocheck])
  99. AC_CHECK_PROGS([RPMDEV_SETUPTREE],[rpmdev-setuptree])
  100. AC_CHECK_PROGS([RPM],[rpm])
  101. AC_PATH_PROG([GPERF],['gperf'],[])
  102. AS_IF([test -z "$GPERF"],
  103. [AC_MSG_ERROR([could not find gperf])]])
  104. AC_PROG_AWK
  105. AC_PROG_INSTALL
  106. AC_PROG_LN_S
  107. AC_PROG_MAKE_SET
  108. AX_PROG_MEMCACHED
  109. AX_PROG_SPHINX_BUILD(,[AC_MSG_WARN([sphinx-build version 1.0 or greater is required to build man pages])])
  110. AX_WITH_PROG([LCOV],[lcov])
  111. AX_WITH_PROG([LCOV_GENHTML],[genhtml])
  112. # Checks for header files.
  113. AC_HEADER_STDC
  114. AC_HEADER_SYS_WAIT
  115. AC_CHECK_HEADERS_ONCE([arpa/inet.h])
  116. AC_CHECK_HEADERS_ONCE([errno.h])
  117. AC_CHECK_HEADERS_ONCE([execinfo.h])
  118. AC_CHECK_HEADERS_ONCE([fcntl.h])
  119. AC_CHECK_HEADERS_ONCE([features.h])
  120. AC_CHECK_HEADERS_ONCE([fnmatch.h])
  121. AC_CHECK_HEADERS_ONCE([getopt.h])
  122. AC_CHECK_HEADERS_ONCE([inttypes.h])
  123. AC_CHECK_HEADERS_ONCE([limits.h])
  124. AC_CHECK_HEADERS_ONCE([mach/mach.h])
  125. AC_CHECK_HEADERS_ONCE([netdb.h])
  126. AC_CHECK_HEADERS_ONCE([netinet/in.h])
  127. AC_CHECK_HEADERS_ONCE([netinet/tcp.h])
  128. AC_CHECK_HEADERS_ONCE([poll.h])
  129. AC_CHECK_HEADERS_ONCE([pwd.h])
  130. AC_CHECK_HEADERS_ONCE([signal.h])
  131. AC_CHECK_HEADERS_ONCE([spawn.h])
  132. AC_CHECK_HEADERS_ONCE([stdarg.h])
  133. AC_CHECK_HEADERS_ONCE([stddef.h])
  134. AC_CHECK_HEADERS_ONCE([stdint.h])
  135. AC_CHECK_HEADERS_ONCE([stdio.h])
  136. AC_CHECK_HEADERS_ONCE([stdlib.h])
  137. AC_CHECK_HEADERS_ONCE([string.h])
  138. AC_CHECK_HEADERS_ONCE([strings.h])
  139. AC_CHECK_HEADERS_ONCE([sys/epoll.h])
  140. AC_CHECK_HEADERS_ONCE([sys/resource.h])
  141. AC_CHECK_HEADERS_ONCE([sys/socket.h])
  142. AC_CHECK_HEADERS_ONCE([sys/stat.h])
  143. AC_CHECK_HEADERS_ONCE([sys/time.h])
  144. AC_CHECK_HEADERS_ONCE([sys/types.h])
  145. AC_CHECK_HEADERS_ONCE([sys/utsname.h])
  146. AC_CHECK_HEADERS_ONCE([sys/wait.h])
  147. AC_CHECK_HEADERS_ONCE([syslog.h])
  148. AC_CHECK_HEADERS_ONCE([unistd.h])
  149. AC_CHECK_HEADERS_ONCE([winsock2.h])
  150. AC_CHECK_HEADERS_ONCE([libmemcached-1.0/types/return.h])
  151. AC_CHECK_DECL([htonll],[AC_DEFINE([HAVE_HTONLL],[1],
  152. [Define to 1 if you have htonll.])])
  153. AM_CONDITIONAL([BUILD_WIN32_WRAPPERS],[test "x$ac_cv_header_winsock2_h" = "xyes"])
  154. AS_IF([test "x$ac_cv_header_winsock2_h" = "xyes"],
  155. [AM_LDFLAGS="$AM_LDFLAGS -lws2_32"
  156. AM_CFLAGS="$AM_CFLAGS $NO_WERROR"
  157. AM_CXXFLAGS="$AM_CXXFLAGS $NO_WERROR"
  158. ])
  159. # Checks for typedefs, structures, and compiler characteristics.
  160. AC_CHECK_TYPES([ptrdiff_t])
  161. AC_C_CONST
  162. AC_C_INLINE
  163. AC_C_VOLATILE
  164. AC_HEADER_STDBOOL
  165. AC_HEADER_TIME
  166. AC_TYPE_INT32_T
  167. AC_TYPE_INT64_T
  168. AC_TYPE_OFF_T
  169. AC_TYPE_PID_T
  170. AC_TYPE_SIZE_T
  171. AC_TYPE_SSIZE_T
  172. AC_TYPE_UID_T
  173. AC_TYPE_UINT16_T
  174. AC_TYPE_UINT32_T
  175. AC_TYPE_UINT64_T
  176. AC_TYPE_UINT8_T
  177. # Checks for library functions.
  178. AC_FUNC_ERROR_AT_LINE
  179. AC_FUNC_FORK
  180. AC_FUNC_MEMCMP
  181. AC_FUNC_STRERROR_R
  182. AC_FUNC_VPRINTF
  183. AC_REPLACE_FNMATCH
  184. AC_CHECK_FUNCS([accept4])
  185. AC_CHECK_FUNCS([dup2])
  186. AC_CHECK_FUNCS([fork])
  187. AC_CHECK_FUNCS([gettimeofday])
  188. AC_CHECK_FUNCS([memchr])
  189. AC_CHECK_FUNCS([memmove])
  190. AC_CHECK_FUNCS([memset])
  191. AC_CHECK_FUNCS([pipe])
  192. AC_CHECK_FUNCS([pipe2])
  193. AC_CHECK_FUNCS([select])
  194. AC_CHECK_FUNCS([setenv])
  195. AC_CHECK_FUNCS([socket])
  196. AC_CHECK_FUNCS([strcasecmp])
  197. AC_CHECK_FUNCS([strdup])
  198. AC_CHECK_FUNCS([strerror])
  199. AC_CHECK_FUNCS([strncasecmp])
  200. AC_CHECK_FUNCS([strtol])
  201. AC_CHECK_FUNCS([strtoul])
  202. AC_CHECK_FUNCS([uname])
  203. AC_CHECK_FUNCS([atexit])
  204. AC_CHECK_FUNCS([getcwd])
  205. AC_CHECK_FUNCS([strstr])
  206. AC_CHECK_FUNC([setsockopt],[],[AC_CHECK_LIB([socket],[setsockopt])])
  207. AC_CHECK_FUNC([bind],[],[AC_CHECK_LIB([bind],[bind])])
  208. # Check for -lrt
  209. AC_CHECK_LIB([rt],[clock_gettime],
  210. [AX_SAVE_FLAGS
  211. LIBS="$LIB -lrt"
  212. AC_CHECK_FUNCS([clock_gettime])
  213. AX_RESTORE_FLAGS
  214. AC_SUBST([RT_LIB],[-lrt])
  215. AC_DEFINE([HAVE_LIBRT],[1],[Have -lrt])
  216. ],
  217. [AC_CHECK_FUNCS([clock_gettime])])
  218. # Check for OPENSSL
  219. AX_CHECK_OPENSSL([have_openssl=yes
  220. AC_DEFINE([HAVE_OPENSSL],[1],[Enable openssl Support])],
  221. [have_openssl=no])
  222. AM_CONDITIONAL([ENABLE_OPENSSL],[test "x${have_openssl}" = "xyes"])
  223. # Check for wolfSSL
  224. AX_CHECK_WOLFSSL([have_wolfssl=yes],[have_wolfssl=no])
  225. AM_CONDITIONAL([ENABLE_WOLFSSL],[test "x${have_wolfssl}" = "xyes"])
  226. AC_DEFUN([AX_ENABLE_SSL],
  227. [AC_PREREQ([2.63])dnl
  228. m4_define([_SSL_ENABLE_DEFAULT], [m4_if($1, no, no, no)])dnl
  229. AC_ARG_ENABLE([ssl],
  230. [AS_HELP_STRING([--enable-ssl],
  231. [Enable ssl support for Gearman @<:@default=]_SSL_ENABLE_DEFAULT[@:>@])],
  232. [AS_CASE([$enableval],
  233. [yes],[enable_ssl=yes],
  234. [no],[enable_ssl=no],
  235. [enable_ssl=no])
  236. ],
  237. [enable_ssl=]_SSL_ENABLE_DEFAULT)
  238. AS_IF([test "x${enable_ssl}" = "xyes"],
  239. [AS_IF([test "x${have_wolfssl}" = "xyes"],
  240. [AC_DEFINE([HAVE_SSL],[1],[Enable SSL Support])
  241. AC_DEFINE([HAVE_OPENSSL],[0],[Enable OPENSSL Support])
  242. ],
  243. [AS_IF([test "x${have_openssl}" = "xyes"],
  244. [AC_DEFINE([HAVE_SSL],[1],[Enable SSL Support])]
  245. )]
  246. )
  247. ]
  248. )
  249. AM_CONDITIONAL([ENABLE_SSL],[test "x${enable_ssl}" = "xyes"])
  250. ])
  251. if [ test "x${enable_ssl}" = "xyes" ]; then
  252. if ! [ test "x${have_openssl}" = "xyes" ] && ! [ test "x${have_wolfssl}" = "xyes" ]; then
  253. AC_MSG_ERROR([Unable to find either openssl or wolfssl])
  254. fi
  255. fi
  256. AX_ENABLE_SSL
  257. AX_ENABLE_LIBMEMCACHED
  258. AC_DEFINE([GEARMAND_BLOBSLAP_WORKER],[1],[Have Gearman Blobslap Worker])
  259. AX_LIBEVENT(,[AC_MSG_ERROR([Unable to find libevent])])
  260. AX_UUID(,[AC_MSG_ERROR([Unable to find libuuid])])
  261. AX_UUID_GENERATE_TIME_SAFE
  262. AX_AM_JOBSERVER([yes])
  263. AS_IF([test "x${TARGET_LINUX}" = "xtrue"],
  264. [AC_DEFINE([BUILD_LIBHOSTILE],[1],[Build libhostile])],[AC_DEFINE([BUILD_LIBHOSTILE],[0],[Build libhostile])])
  265. AM_CONDITIONAL([TARGET_HOSTILE],[test "x${TARGET_LINUX}" = "xtrue"])
  266. AC_DEFUN([CHECK_FOR_PTHREAD_AND_SASL],
  267. [AC_LANG_PUSH([C++])
  268. AX_PTHREAD(, [AC_MSG_ERROR(could not find Posix Pthread support)])
  269. AX_PTHREAD_TIMEDJOIN_NP
  270. AC_LANG_POP([C++])
  271. ])
  272. CHECK_FOR_PTHREAD_AND_SASL
  273. AX_ENDIAN
  274. AX_HEX_VERSION([LIBGEARMAN],[$VERSION])
  275. AC_SUBST([RPM_RELEASE],[1])
  276. AX_HARDEN_COMPILER_FLAGS
  277. AM_CONDITIONAL([TARGET_MINGW],[test "x${MINGW}" = "xtrue"])
  278. # backtrace(), others require shared builds
  279. AS_IF([test "x$enable_shared" = "xyes"],
  280. [AC_DEFINE([HAVE_SHARED_ENABLED],[1],[Enable code which requires shared library support. Like backtrace().])
  281. AX_CXX_GCC_ABI_DEMANGLE])
  282. AM_CONDITIONAL([SHARED_ENABLED],[test "x$enable_shared" = "xyes"])
  283. AC_CONFIG_FILES([Makefile
  284. docs/source/conf.py
  285. libgearman-1.0/version.h
  286. scripts/gearmand
  287. scripts/gearmand.xml
  288. scripts/smf_install.sh
  289. support/gearmand.init
  290. support/gearmand.pc
  291. support/gearmand.spec])
  292. AS_IF([test "x${ax_enable_debug}" = "xyes"],
  293. [AC_DEFUN([CHECK_CXX11],
  294. [AC_LANG_PUSH([C++])
  295. AX_CHECK_COMPILE_FLAG([-std=c++11], [CXX_STD="c++11"])
  296. AC_LANG_POP([C++])
  297. ])
  298. CHECK_CXX11])
  299. CXXFLAGS=" $CXXFLAGS -std=$CXX_STD"
  300. AC_OUTPUT
  301. echo "---"
  302. echo "Configuration summary for $PACKAGE_NAME version $VERSION"
  303. echo ""
  304. echo " * Installation prefix: $prefix"
  305. echo " * System type: $host_vendor-$host_os"
  306. echo " * Host CPU: $host_cpu"
  307. echo " * C Compiler: $CC $CC_VERSION"
  308. echo " * C Flags: $CFLAGS"
  309. echo " * C++ Compiler: $CXX $CXX_VERSION"
  310. echo " * C++ Flags: $CXXFLAGS"
  311. echo " * CPP Flags: $CPPFLAGS"
  312. echo " * LIBS: $LIBS"
  313. echo " * LDFLAGS Flags: $LDFLAGS"
  314. echo " * Assertions enabled: $ax_enable_assert"
  315. echo " * Debug enabled: $ax_enable_debug"
  316. echo " * Warnings as failure: $ac_cv_warnings_as_errors"
  317. echo " * Building with hiredis $ac_enable_hiredis"
  318. echo " * Building with libsqlite3 $WANT_SQLITE3"
  319. echo " * Building with libdrizzle $ac_enable_libdrizzle"
  320. echo " * Building with libmemcached $ax_enable_libmemcached"
  321. echo " * Building with libpq $ac_cv_libpq"
  322. echo " * Building with tokyocabinet $ac_enable_libtokyocabinet"
  323. echo " * Building with libmysql $found_mysql"
  324. echo " * SSL enabled: $enable_ssl"
  325. echo " * wolfssl found: $have_wolfssl"
  326. echo " * openssl found: $have_openssl"
  327. echo " * make -j: $enable_jobserver"
  328. echo " * VCS checkout: $ac_cv_vcs_checkout"
  329. echo " * sphinx-build: $SPHINXBUILD"
  330. echo ""
  331. echo "---"
  332. if [test "x${ax_enable_debug}" = "xyes"]; then
  333. echo "*****"
  334. echo "*"
  335. echo "* NOTE: You should execute gearmand with --threads 0 when --enable-debug is specified."
  336. echo "*"
  337. echo "*****"
  338. fi
  339. case "$host_os" in
  340. *freebsd*)
  341. echo "*****"
  342. echo "*"
  343. echo "* NOTE: You are on FreeBSD. BSD 'make' will not work."
  344. echo "*"
  345. echo "* use 'gmake' To build gearmand"
  346. echo "*"
  347. echo "*****"
  348. ;;
  349. esac