configure.ac 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. # Gearman server and library
  2. # Copyright (C) 2011-2013 Data Differential, http://datadifferential.com/
  3. # Copyright (C) 2008 Brian Aker, Eric Day, Monty Taylor
  4. # All rights reserved.
  5. #
  6. # Use and distribution licensed under the BSD license. See
  7. # the COPYING file in this directory for full text.
  8. m4_include([version.m4])
  9. AC_REVISION([m4_esyscmd_s([bzr revno])])
  10. AC_PREREQ([2.63])
  11. AC_INIT([gearmand],VERSION_NUMBER,[https://bugs.launchpad.net/gearmand],[gearmand],[http://gearman.info/])
  12. AC_CONFIG_AUX_DIR([build-aux])
  13. AC_CONFIG_MACRO_DIR([m4])
  14. AC_CANONICAL_TARGET
  15. AC_ARG_PROGRAM
  16. AC_USE_SYSTEM_EXTENSIONS
  17. AM_INIT_AUTOMAKE([1.11 color-tests -Wno-portability subdir-objects foreign tar-ustar])
  18. AC_CONFIG_HEADERS([gear_config.h:gear_config.in])dnl Keep filename to 8.3 for MS-DOS.
  19. AC_SUBST([AUTOHEADER_FILE],[gear_config.h])
  20. AC_CONFIG_SRCDIR([libgearman/gearman.cc])
  21. GEARMAN_LIBRARY_VERSION=8:0:0
  22. # | | |
  23. # +------+ | +---+
  24. # | | |
  25. # current:revision:age
  26. # | | |
  27. # | | +- increment if interfaces have been added
  28. # | | set to zero if interfaces have been removed
  29. # | | or changed
  30. # | +- increment if source code has changed
  31. # | set to zero if current is incremented
  32. # +- increment if interfaces have been added, removed or changed
  33. AC_SUBST([GEARMAN_LIBRARY_VERSION])
  34. LT_PREREQ([2.2])
  35. LT_INIT([disable-static])
  36. LT_LANG([C++])
  37. AC_PROG_CC_C99
  38. AS_IF([test "x${ac_cv_prog_cc_c99}" == "xno"],[AC_MSG_ERROR([No c99 compatible compiler found])])
  39. AX_PLATFORM
  40. m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
  41. AX_ASSERT
  42. # First look for Boost, maybe for a specific minimum version:
  43. AC_DEFUN([CHECK_BOOST],
  44. [BOOST_REQUIRE([1.39])
  45. BOOST_PROGRAM_OPTIONS])
  46. CHECK_BOOST
  47. m4_include([libhashkit/include.m4])
  48. AX_CXX_CINTTYPES
  49. CONFIG_EXTRA
  50. m4_include([libtest/yatl.m4])
  51. AM_CONDITIONAL([BUILDING_GEARMAN],true)
  52. AM_CONDITIONAL([HAVE_LIBGEARMAN],true)
  53. AC_SUBST([_WITH_LIBGEARMAN_SUPPORT],["_WITH_LIBGEARMAN_SUPPORT 0"])
  54. AC_DEFINE([GEARMAND_BINARY],["./gearmand/gearmand"],[Name of the gearmand binary used in make test])
  55. AC_DEFINE([HAVE_LIBGEARMAN],[1], [libgearman support])
  56. AC_DEFINE([HAVE_GEARMAND_BINARY],[1],[gearmand binary was found])
  57. AC_DEFUN([CHECK_CURL],
  58. [AX_LIB_CURL([7.21.7],
  59. [AX_CHECK_LIBRARY([LIBCURL],[curl/curl.h],[curl])],
  60. [AC_DEFINE([HAVE_LIBCURL],[0],[Have the LIBCURL library])
  61. ])
  62. ])
  63. CHECK_CURL
  64. AM_CONDITIONAL([HAVE_LIBCURL],[test "x${ax_cv_have_LIBCURL}" = "xyes"])
  65. m4_include([m4/drizzled.m4])
  66. WITH_LIBDRIZZLE
  67. AX_LIB_SQLITE3
  68. AS_IF([test "x${WANT_SQLITE3}" = "xyes"],
  69. [AC_DEFINE([HAVE_LIBSQLITE3],[1],[Have the SQLITE3 library])],
  70. [AC_DEFINE([HAVE_LIBSQLITE3],[0],[Have the SQLITE3 library])])
  71. AM_CONDITIONAL([HAVE_LIBSQLITE3],[test "x${WANT_SQLITE3}" = "xyes"])
  72. PANDORA_ENABLE_DTRACE
  73. AX_HAVE_LIBPQ
  74. PANDORA_HAVE_LIBTOKYOCABINET
  75. AC_FUNC_STRERROR_R
  76. SOCKET_SEND_FLAGS
  77. FCNTL_FLAGS
  78. AX_ENABLE_LIBHIREDIS
  79. # Checks for programs.
  80. AC_CHECK_PROGS([DPKG_GENSYMBOLS],[dpkg-gensymbols])
  81. AC_CHECK_PROGS([PERL],[perl])
  82. AC_CHECK_PROGS([VALGRIND],['valgrind'])
  83. AC_CHECK_PROGS([WINE],['wine'])
  84. AC_PATH_PROG([GPERF],['gperf'])
  85. AC_PROG_AWK
  86. AC_PROG_INSTALL
  87. AC_PROG_LN_S
  88. AC_PROG_MAKE_SET
  89. AX_PROG_MEMCACHED
  90. AX_PROG_SPHINX_BUILD(,[AC_MSG_WARN([sphinx-build version 1.0 or greater is required to build man pages])])
  91. AX_WITH_PROG([LCOV],[lcov])
  92. AX_WITH_PROG([LCOV_GENHTML],[genhtml])
  93. # Checks for header files.
  94. AC_HEADER_STDC
  95. AC_HEADER_SYS_WAIT
  96. AC_CHECK_HEADERS_ONCE([arpa/inet.h])
  97. AC_CHECK_HEADERS_ONCE([errno.h])
  98. AC_CHECK_HEADERS_ONCE([execinfo.h])
  99. AC_CHECK_HEADERS_ONCE([fcntl.h])
  100. AC_CHECK_HEADERS_ONCE([features.h])
  101. AC_CHECK_HEADERS_ONCE([fnmatch.h])
  102. AC_CHECK_HEADERS_ONCE([getopt.h])
  103. AC_CHECK_HEADERS_ONCE([inttypes.h])
  104. AC_CHECK_HEADERS_ONCE([limits.h])
  105. AC_CHECK_HEADERS_ONCE([mach/mach.h])
  106. AC_CHECK_HEADERS_ONCE([netdb.h])
  107. AC_CHECK_HEADERS_ONCE([netinet/in.h])
  108. AC_CHECK_HEADERS_ONCE([netinet/tcp.h])
  109. AC_CHECK_HEADERS_ONCE([poll.h])
  110. AC_CHECK_HEADERS_ONCE([pwd.h])
  111. AC_CHECK_HEADERS_ONCE([signal.h])
  112. AC_CHECK_HEADERS_ONCE([spawn.h])
  113. AC_CHECK_HEADERS_ONCE([stdarg.h])
  114. AC_CHECK_HEADERS_ONCE([stddef.h])
  115. AC_CHECK_HEADERS_ONCE([stdint.h])
  116. AC_CHECK_HEADERS_ONCE([stdio.h])
  117. AC_CHECK_HEADERS_ONCE([stdlib.h])
  118. AC_CHECK_HEADERS_ONCE([string.h])
  119. AC_CHECK_HEADERS_ONCE([strings.h])
  120. AC_CHECK_HEADERS_ONCE([sys/resource.h])
  121. AC_CHECK_HEADERS_ONCE([sys/socket.h])
  122. AC_CHECK_HEADERS_ONCE([sys/stat.h])
  123. AC_CHECK_HEADERS_ONCE([sys/time.h])
  124. AC_CHECK_HEADERS_ONCE([sys/types.h])
  125. AC_CHECK_HEADERS_ONCE([sys/utsname.h])
  126. AC_CHECK_HEADERS_ONCE([sys/wait.h])
  127. AC_CHECK_HEADERS_ONCE([syslog.h])
  128. AC_CHECK_HEADERS_ONCE([unistd.h])
  129. AC_CHECK_HEADERS_ONCE([winsock2.h])
  130. AC_CHECK_HEADERS_ONCE([libmemcached-1.0/types/return.h])
  131. AM_CONDITIONAL([BUILD_WIN32_WRAPPERS],[test "x$ac_cv_header_winsock2_h" = "xyes"])
  132. AS_IF([test "x$ac_cv_header_winsock2_h" = "xyes"],
  133. [AM_LDFLAGS="$AM_LDFLAGS -lws2_32"
  134. AM_CFLAGS="$AM_CFLAGS $NO_WERROR"
  135. AM_CXXFLAGS="$AM_CXXFLAGS $NO_WERROR"
  136. ])
  137. # Checks for typedefs, structures, and compiler characteristics.
  138. AC_CHECK_TYPES([ptrdiff_t])
  139. AC_C_CONST
  140. AC_C_INLINE
  141. AC_C_VOLATILE
  142. AC_HEADER_STDBOOL
  143. AC_HEADER_TIME
  144. AC_TYPE_INT32_T
  145. AC_TYPE_INT64_T
  146. AC_TYPE_OFF_T
  147. AC_TYPE_PID_T
  148. AC_TYPE_SIZE_T
  149. AC_TYPE_SSIZE_T
  150. AC_TYPE_UID_T
  151. AC_TYPE_UINT16_T
  152. AC_TYPE_UINT32_T
  153. AC_TYPE_UINT64_T
  154. AC_TYPE_UINT8_T
  155. # Checks for library functions.
  156. AC_FUNC_ERROR_AT_LINE
  157. AC_FUNC_FORK
  158. AC_FUNC_MEMCMP
  159. AC_FUNC_STRERROR_R
  160. AC_FUNC_VPRINTF
  161. AC_REPLACE_FNMATCH
  162. AC_CHECK_FUNCS([accept4])
  163. AC_CHECK_FUNCS([dup2])
  164. AC_CHECK_FUNCS([gettimeofday])
  165. AC_CHECK_FUNCS([memchr])
  166. AC_CHECK_FUNCS([memmove])
  167. AC_CHECK_FUNCS([memset])
  168. AC_CHECK_FUNCS([pipe])
  169. AC_CHECK_FUNCS([pipe2])
  170. AC_CHECK_FUNCS([select])
  171. AC_CHECK_FUNCS([setenv])
  172. AC_CHECK_FUNCS([socket])
  173. AC_CHECK_FUNCS([strcasecmp])
  174. AC_CHECK_FUNCS([strdup])
  175. AC_CHECK_FUNCS([strerror])
  176. AC_CHECK_FUNCS([strncasecmp])
  177. AC_CHECK_FUNCS([strtol])
  178. AC_CHECK_FUNCS([strtoul])
  179. AC_CHECK_FUNCS([uname])
  180. AC_CHECK_FUNCS([atexit])
  181. AC_CHECK_FUNCS([clock_gettime])
  182. AC_CHECK_FUNCS([getcwd])
  183. AC_CHECK_FUNCS([strstr])
  184. AC_CHECK_FUNC([setsockopt],[],[AC_CHECK_LIB([socket],[setsockopt])])
  185. AC_CHECK_FUNC([bind],[],[AC_CHECK_LIB([bind],[bind])])
  186. # Check for the ability to call dlopen (used in libhostile)
  187. AX_DLOPEN
  188. # Check for -lrt
  189. AC_CHECK_LIB([rt],[clock_gettime],
  190. [AC_SUBST([RT_LIB],[-lrt])
  191. AC_DEFINE([HAVE_LIBRT],[1],[Have clock_gettime])
  192. ])
  193. # Check for -lm
  194. LT_LIB_M
  195. # Check for CyaSSL
  196. AX_CHECK_LIBRARY([CYASSL],[cyassl/ssl.h],[cyassl])
  197. #AC_SUBST([CYASSL])
  198. #AC_SUBST([CYASSL_LIB])
  199. AX_ENABLE_LIBMEMCACHED
  200. AC_DEFINE([GEARMAND_BLOBSLAP_WORKER],[1],[Have Gearman Blobslap Worker])
  201. AX_LIBEVENT(,[AC_MSG_ERROR([Unable to find libevent])])
  202. AX_UUID_GENERATE_TIME_SAFE
  203. AX_AM_JOBSERVER([yes])
  204. AS_IF([test "x${TARGET_LINUX}" = "xtrue"],
  205. [AC_DEFINE([BUILD_LIBHOSTILE],[1],[Build libhostile])],[AC_DEFINE([BUILD_LIBHOSTILE],[0],[Build libhostile])])
  206. AM_CONDITIONAL([TARGET_HOSTILE],[test "x${TARGET_LINUX}" = "xtrue"])
  207. AX_PTHREAD(, [AC_MSG_ERROR(could not find libpthread)])
  208. AX_PTHREAD_TIMEDJOIN_NP
  209. AX_ENDIAN
  210. AX_HEX_VERSION([LIBGEARMAN],[$VERSION])
  211. AX_HARDEN_COMPILER_FLAGS
  212. AM_CONDITIONAL([TARGET_MINGW],[test "x${MINGW}" = "xtrue"])
  213. # backtrace(), others require shared builds
  214. AS_IF([test "x$enable_shared" = "xyes"],
  215. [AC_DEFINE([HAVE_SHARED_ENABLED],[1],[Enable code which requires shared library support. Like backtrace().])
  216. AX_CXX_GCC_ABI_DEMANGLE])
  217. AM_CONDITIONAL([SHARED_ENABLED],[test "x$enable_shared" = "xyes"])
  218. AC_CONFIG_FILES([Makefile
  219. docs/conf.py
  220. libgearman-1.0/version.h
  221. scripts/gearmand
  222. scripts/gearmand-init
  223. scripts/gearmand.xml
  224. scripts/smf_install.sh
  225. support/gearmand.pc
  226. support/gearmand.spec])
  227. AC_OUTPUT
  228. echo "---"
  229. echo "Configuration summary for $PACKAGE_NAME version $VERSION"
  230. echo ""
  231. echo " * Installation prefix: $prefix"
  232. echo " * System type: $host_vendor-$host_os"
  233. echo " * Host CPU: $host_cpu"
  234. echo " * C Compiler: $CC_VERSION"
  235. echo " * C Flags: $CFLAGS"
  236. echo " * C++ Compiler: $CXX_VERSION"
  237. echo " * C++ Flags: $CXXFLAGS"
  238. echo " * CPP Flags: $CPPFLAGS"
  239. echo " * LIBS: $LIBS"
  240. echo " * LDFLAGS Flags: $LDFLAGS"
  241. echo " * Assertions enabled: $ax_enable_assert"
  242. echo " * Debug enabled: $ax_enable_debug"
  243. echo " * Warnings as failure: $ac_cv_warnings_as_errors"
  244. echo " * Building with libsqlite3 $WANT_SQLITE3"
  245. echo " * Building with libdrizzle $ac_enable_libdrizzle"
  246. echo " * Building with libmemcached $ax_enable_libmemcached"
  247. echo " * Building with libpq $ac_cv_libpq"
  248. echo " * Building with tokyocabinet $ac_enable_libtokyocabinet"
  249. echo " * Building with libmysql $found_mysql"
  250. echo " * make -j: $enable_jobserver"
  251. echo " * VCS checkout: $ac_cv_vcs_checkout"
  252. echo ""
  253. echo "---"
  254. case "$host_os" in
  255. *freebsd*)
  256. echo "*****"
  257. echo "*"
  258. echo "* NOTE: You are on FreeBSD. BSD 'make' will not work."
  259. echo "*"
  260. echo "* use 'gmake' To build gearmand"
  261. echo "*"
  262. echo "*****"
  263. ;;
  264. esac