configure.ac 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798
  1. dnl -*- Autoconf -*-
  2. dnl Process this file with autoconf to produce a configure script.
  3. AC_PREREQ(2.57)
  4. AC_INIT([lighttpd], [1.4.33], [contact@lighttpd.net])
  5. AC_CONFIG_SRCDIR([src/server.c])
  6. AC_CONFIG_HEADER([config.h])
  7. AC_CONFIG_MACRO_DIR([m4])
  8. AC_CANONICAL_TARGET
  9. dnl HOW FUCKING BROKEN IS AUTOMAKE...
  10. dnl serial-tests is not recognized before 1.12, and required for serial tests with 1.13, sane version checks "impossible"
  11. dnl if you don't use the default (symlinked) automake on your box, set AUTOMAKE to the path you're using
  12. m4_define([serial_tests], [
  13. m4_esyscmd([case `${AUTOMAKE:-automake} --version | head -n 1` in
  14. *1.11.*|*1.10.*|*1.9.*);;
  15. *) echo serial-tests;;
  16. esac])
  17. ])
  18. AM_INIT_AUTOMAKE([-Wall -Wno-portability -Wno-override foreign dist-bzip2 tar-ustar] serial_tests)
  19. dnl enable with --enable-silent-rules or make V=0 (needs automake >= 1.11)
  20. m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES])
  21. dnl Checks for programs.
  22. AC_PROG_CC
  23. AM_PROG_CC_C_O
  24. AC_PROG_LD
  25. AC_PROG_INSTALL
  26. AC_PROG_AWK
  27. AC_PROG_CPP
  28. dnl AC_PROG_CXX
  29. AC_PROG_LN_S
  30. AC_PROG_MAKE_SET
  31. dnl AM_PROG_AR is needed for some linker stuff
  32. dnl AC_USE_SYSTEM_EXTENSIONS requires autoconf 2.60
  33. m4_ifdef([AC_USE_SYSTEM_EXTENSIONS], [AC_USE_SYSTEM_EXTENSIONS])
  34. dnl AM_PROG_AR requires automake 1.11 (and uses AC_COMPILE_IFELSE which wants AC_USE_SYSTEM_EXTENSIONS)
  35. m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
  36. dnl check environment
  37. AC_AIX
  38. AC_ISC_POSIX
  39. AC_MINIX
  40. dnl AC_CANONICAL_HOST
  41. case $host_os in
  42. *darwin*|*cygwin*|*aix*|*mingw* ) NO_RDYNAMIC=yes;;
  43. * ) NO_RDYNAMIC=no;;
  44. esac
  45. AM_CONDITIONAL(NO_RDYNAMIC, test x$NO_RDYNAMIC = xyes)
  46. AC_EXEEXT
  47. dnl libtool
  48. AC_DISABLE_STATIC
  49. AC_ENABLE_SHARED
  50. AC_LIBTOOL_DLOPEN
  51. AC_PROG_LIBTOOL
  52. dnl for solaris
  53. CPPFLAGS="${CPPFLAGS} -D_REENTRANT -D__EXTENSIONS__"
  54. dnl Checks for header files.
  55. AC_HEADER_STDC
  56. AC_HEADER_SYS_WAIT
  57. AC_CHECK_HEADERS([arpa/inet.h fcntl.h netinet/in.h stdlib.h string.h \
  58. sys/socket.h sys/time.h unistd.h sys/sendfile.h sys/uio.h \
  59. getopt.h sys/epoll.h sys/select.h poll.h sys/poll.h sys/devpoll.h sys/filio.h \
  60. sys/mman.h sys/event.h port.h pwd.h sys/syslimits.h \
  61. sys/resource.h sys/un.h syslog.h sys/prctl.h uuid/uuid.h])
  62. dnl Checks for typedefs, structures, and compiler characteristics.
  63. AC_C_CONST
  64. AC_C_INLINE
  65. AC_C_CHAR_UNSIGNED
  66. AC_TYPE_OFF_T
  67. AC_TYPE_PID_T
  68. AC_TYPE_SIZE_T
  69. AC_CHECK_MEMBER(struct tm.tm_gmtoff,[AC_DEFINE([HAVE_STRUCT_TM_GMTOFF],[1],[gmtoff in struct tm])],,[#include <time.h>])
  70. AC_CHECK_TYPES(struct sockaddr_storage,,,[#include <sys/socket.h>])
  71. AC_CHECK_TYPES(socklen_t,,,[#include <sys/types.h>
  72. #include <sys/socket.h>])
  73. dnl Checks for library functions.
  74. AC_FUNC_FORK
  75. dnl AC_FUNC_MALLOC
  76. dnl AC_FUNC_MMAP
  77. dnl AC_FUNC_REALLOC
  78. AC_TYPE_SIGNAL
  79. AC_FUNC_STAT
  80. AC_FUNC_STRFTIME
  81. AC_CHECK_FUNCS([issetugid inet_pton])
  82. if test -z "$PKG_CONFIG"; then
  83. AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
  84. fi
  85. dnl checking for libev
  86. AC_MSG_CHECKING(for libev support)
  87. AC_ARG_WITH(libev,
  88. AC_HELP_STRING([--with-libev@<:@=PATH@:>@],[Include libev support for fdevent handlers in PATH/include and PATH/lib]),
  89. [WITH_LIBEV=$withval],[WITH_LIBEV=no])
  90. LIBEV_CFLAGS=""
  91. LIBEV_LIBS=""
  92. if test "$WITH_LIBEV" != "no"; then
  93. PKG_CHECK_MODULES(LIBEV, libev, [], [
  94. dnl no pkg-config for libev, searching manually:
  95. if test "$WITH_LIBEV" != "yes"; then
  96. LIBEV_CFLAGS="-I$WITH_LIBEV/include"
  97. LIBEV_LIBS="-L$WITH_LIBEV/lib -lev"
  98. else
  99. AC_CHECK_HEADERS([ev.h],[
  100. AC_CHECK_LIB([ev], [ev_time], [
  101. LIBEV_CFLAGS=""
  102. LIBEV_LIBS="-lev"
  103. ],[
  104. AC_MSG_ERROR([libev not found])
  105. ]
  106. )],[
  107. AC_MSG_ERROR([libev not found])
  108. ]
  109. )
  110. fi
  111. ])
  112. AC_DEFINE([HAVE_LIBEV], [1], [libev support])
  113. fi
  114. AC_SUBST(LIBEV_CFLAGS)
  115. AC_SUBST(LIBEV_LIBS)
  116. dnl Checks for database.
  117. MYSQL_INCLUDE=""
  118. MYSQL_LIBS=""
  119. AC_MSG_CHECKING(for MySQL support)
  120. AC_ARG_WITH(mysql,
  121. AC_HELP_STRING([--with-mysql@<:@=PATH@:>@],[Include MySQL support. PATH is the path to 'mysql_config']),
  122. [WITH_MYSQL=$withval],[WITH_MYSQL=no])
  123. if test "$WITH_MYSQL" != "no"; then
  124. AC_MSG_RESULT(yes)
  125. if test "$WITH_MYSQL" = "yes"; then
  126. AC_PATH_PROG(MYSQL_CONFIG, mysql_config)
  127. else
  128. MYSQL_CONFIG=$WITH_MYSQL
  129. fi
  130. if test "$MYSQL_CONFIG" = ""; then
  131. AC_MSG_ERROR(mysql_config is not found)
  132. fi
  133. if test \! -x $MYSQL_CONFIG; then
  134. AC_MSG_ERROR(mysql_config not exists or not executable, use --with-mysql=path-to-mysql_config)
  135. fi
  136. if $MYSQL_CONFIG | grep -- '--include' > /dev/null ; then
  137. MYSQL_INCLUDE="`$MYSQL_CONFIG --include | sed s/\'//g`"
  138. else
  139. MYSQL_INCLUDE="`$MYSQL_CONFIG --cflags | sed s/\'//g`"
  140. fi
  141. MYSQL_LIBS="`$MYSQL_CONFIG --libs | sed s/\'//g`"
  142. AC_MSG_CHECKING(for MySQL includes at)
  143. AC_MSG_RESULT($MYSQL_INCLUDE)
  144. AC_MSG_CHECKING(for MySQL libraries at)
  145. AC_MSG_RESULT($MYSQL_LIBS)
  146. dnl check for errmsg.h, which isn't installed by some versions of 3.21
  147. old_CPPFLAGS="$CPPFLAGS"
  148. CPPFLAGS="$CPPFLAGS $MYSQL_INCLUDE"
  149. AC_CHECK_HEADERS(errmsg.h mysql.h)
  150. CPPFLAGS="$old_CPPFLAGS"
  151. AC_DEFINE([HAVE_MYSQL], [1], [mysql support])
  152. else
  153. AC_MSG_RESULT(no)
  154. fi
  155. AC_SUBST(MYSQL_LIBS)
  156. AC_SUBST(MYSQL_INCLUDE)
  157. dnl Check for LDAP
  158. AC_MSG_CHECKING(for LDAP support)
  159. AC_ARG_WITH(ldap, AC_HELP_STRING([--with-ldap],[enable LDAP support]),
  160. [WITH_LDAP=$withval], [WITH_LDAP=no])
  161. AC_MSG_RESULT([$withval])
  162. if test "$WITH_LDAP" != "no"; then
  163. AC_CHECK_LIB(ldap, ldap_bind, [
  164. AC_CHECK_HEADERS([ldap.h],[
  165. LDAP_LIB=-lldap
  166. AC_DEFINE([HAVE_LIBLDAP], [1], [libldap])
  167. AC_DEFINE([HAVE_LDAP_H], [1])
  168. AC_DEFINE([LDAP_DEPRECATED], [1], [Using deprecated ldap api])
  169. ])
  170. ])
  171. AC_SUBST(LDAP_LIB)
  172. AC_CHECK_LIB(lber, ber_printf, [
  173. AC_CHECK_HEADERS([lber.h],[
  174. LBER_LIB=-llber
  175. AC_DEFINE([HAVE_LIBLBER], [1], [liblber])
  176. AC_DEFINE([HAVE_LBER_H], [1])
  177. ])
  178. ])
  179. AC_SUBST(LBER_LIB)
  180. fi
  181. dnl Check for xattr
  182. AC_MSG_CHECKING(for extended attributes support)
  183. AC_ARG_WITH(attr, AC_HELP_STRING([--with-attr],[enable extended attribute support]),
  184. [WITH_ATTR=$withval],[WITH_ATTR=no])
  185. AC_MSG_RESULT($withval)
  186. if test "$WITH_ATTR" != "no"; then
  187. AC_CHECK_LIB(attr, attr_get, [
  188. AC_CHECK_HEADERS([attr/attributes.h],[
  189. ATTR_LIB=-lattr
  190. AC_DEFINE([HAVE_XATTR], [1], [libattr])
  191. AC_DEFINE([HAVE_ATTR_ATTRIBUTES_H], [1])
  192. ])
  193. ])
  194. AC_SUBST(ATTR_LIB)
  195. fi
  196. dnl openssl on solaris needs -lsocket -lnsl
  197. AC_SEARCH_LIBS(socket,socket)
  198. AC_SEARCH_LIBS(gethostbyname,nsl socket)
  199. AC_SEARCH_LIBS(hstrerror,resolv)
  200. save_LIBS=$LIBS
  201. AC_SEARCH_LIBS(dlopen,dl,[
  202. AC_CHECK_HEADERS([dlfcn.h],[
  203. if test "$ac_cv_search_dlopen" != no; then
  204. test "$ac_cv_search_dlopen" = "none required" || DL_LIB="$ac_cv_search_dlopen"
  205. fi
  206. AC_DEFINE([HAVE_LIBDL], [1], [libdl])
  207. AC_DEFINE([HAVE_DLFCN_H], [1])
  208. ])
  209. ])
  210. LIBS=$save_LIBS
  211. AC_SUBST(DL_LIB)
  212. dnl Check for valgrind
  213. AC_MSG_CHECKING(for valgrind)
  214. AC_ARG_WITH(valgrind, AC_HELP_STRING([--with-valgrind],[enable internal support for valgrind]),
  215. [WITH_VALGRIND=$withval],[WITH_VALGRIND=no])
  216. AC_MSG_RESULT([$WITH_VALGRIND])
  217. if test "$WITH_VALGRIND" != "no"; then
  218. AC_CHECK_HEADERS([valgrind/valgrind.h])
  219. fi
  220. dnl Check for openssl
  221. AC_MSG_CHECKING(for OpenSSL)
  222. AC_ARG_WITH(openssl,
  223. AC_HELP_STRING([--with-openssl@<:@=DIR@:>@],[Include openssl support (default no)]),
  224. [WITH_OPENSSL=$withval],[WITH_OPENSSL=no])
  225. if test "$WITH_OPENSSL" != "no"; then
  226. use_openssl=yes
  227. if test "$WITH_OPENSSL" != "yes"; then
  228. CPPFLAGS="$CPPFLAGS -I$WITH_OPENSSL/include"
  229. LDFLAGS="$LDFLAGS -L$WITH_OPENSSL/lib"
  230. fi
  231. else
  232. use_openssl=no
  233. fi
  234. AC_MSG_RESULT([$use_openssl])
  235. AC_ARG_WITH(openssl-includes,
  236. AC_HELP_STRING([--with-openssl-includes=DIR],[OpenSSL includes]),
  237. [ use_openssl=yes CPPFLAGS="$CPPFLAGS -I$withval" ]
  238. )
  239. AC_ARG_WITH(openssl-libs,
  240. AC_HELP_STRING([--with-openssl-libs=DIR],[OpenSSL libraries]),
  241. [ use_openssl=yes LDFLAGS="$LDFLAGS -L$withval" ]
  242. )
  243. AC_ARG_WITH(kerberos5,
  244. AC_HELP_STRING([--with-kerberos5],[use Kerberos5 support with OpenSSL]),
  245. [ use_kerberos=yes ], [use_kerberos=no]
  246. )
  247. if test "x$use_openssl" = "xyes"; then
  248. if test "x$use_kerberos" != "xyes"; then
  249. CPPFLAGS="$CPPFLAGS -DOPENSSL_NO_KRB5"
  250. fi
  251. AC_CHECK_HEADERS([openssl/ssl.h])
  252. OLDLIBS="$LIBS"
  253. AC_CHECK_LIB(crypto, BIO_f_base64, [
  254. AC_CHECK_LIB(ssl, SSL_new, [ SSL_LIB="-lssl -lcrypto"
  255. AC_DEFINE(HAVE_LIBSSL, [], [Have libssl]) ], [], [ -lcrypto "$DL_LIB" ])
  256. ], [], [])
  257. LIBS="$OLDLIBS"
  258. AC_SUBST(SSL_LIB)
  259. fi
  260. AC_MSG_CHECKING(for perl regular expressions support)
  261. AC_ARG_WITH(pcre, AC_HELP_STRING([--with-pcre],[Enable pcre support (default yes)]),
  262. [WITH_PCRE=$withval],[WITH_PCRE=yes])
  263. AC_MSG_RESULT([$WITH_PCRE])
  264. if test "$WITH_PCRE" != "no"; then
  265. AC_PATH_PROG(PCRECONFIG, pcre-config)
  266. if test x"$PCRECONFIG" != x; then
  267. PCRE_LIB=`$PCRECONFIG --libs`
  268. CPPFLAGS="$CPPFLAGS `$PCRECONFIG --cflags`"
  269. AC_DEFINE([HAVE_LIBPCRE], [1], [libpcre])
  270. AC_DEFINE([HAVE_PCRE_H], [1], [pcre.h])
  271. else
  272. AC_MSG_ERROR([pcre-config not found, install the pcre-devel package or build with --without-pcre])
  273. fi
  274. fi
  275. AC_SUBST(PCRE_LIB)
  276. AC_MSG_CHECKING(for zlib support)
  277. AC_ARG_WITH(zlib, AC_HELP_STRING([--with-zlib],[Enable zlib support for mod_compress]),
  278. [WITH_ZLIB=$withval],[WITH_ZLIB=yes])
  279. AC_MSG_RESULT([$WITH_ZLIB])
  280. if test "$WITH_ZLIB" != "no"; then
  281. AC_CHECK_LIB(z, deflate, [
  282. AC_CHECK_HEADERS([zlib.h],[
  283. Z_LIB=-lz
  284. AC_DEFINE([HAVE_LIBZ], [1], [libz])
  285. AC_DEFINE([HAVE_ZLIB_H], [1])
  286. ])
  287. ])
  288. if test x$Z_LIB = x; then
  289. AC_MSG_ERROR([zlib-headers and/or libs where not found, install them or build with --without-zlib])
  290. fi
  291. fi
  292. AC_SUBST(Z_LIB)
  293. AC_MSG_CHECKING(for bzip2 support)
  294. AC_ARG_WITH(bzip2, AC_HELP_STRING([--with-bzip2],[Enable bzip2 support for mod_compress]),
  295. [WITH_BZIP2=$withval],[WITH_BZIP2=yes])
  296. AC_MSG_RESULT([$WITH_BZIP2])
  297. if test "$WITH_BZIP2" != "no"; then
  298. AC_CHECK_LIB(bz2, BZ2_bzCompress, [
  299. AC_CHECK_HEADERS([bzlib.h],[
  300. BZ_LIB=-lbz2
  301. AC_DEFINE([HAVE_LIBBZ2], [1], [libbz2])
  302. AC_DEFINE([HAVE_BZLIB_H], [1])
  303. ])
  304. ])
  305. if test x$BZ_LIB = x; then
  306. AC_MSG_ERROR([bzip2-headers and/or libs where not found, install them or build with --without-bzip2])
  307. fi
  308. fi
  309. AC_SUBST(BZ_LIB)
  310. dnl Check for gamin
  311. AC_MSG_CHECKING(for FAM)
  312. AC_ARG_WITH(fam, AC_HELP_STRING([--with-fam],[fam/gamin for reducing number of stat() calls]),
  313. [WITH_FAM=$withval],[WITH_FAM=no])
  314. AC_MSG_RESULT([$WITH_FAM])
  315. if test "$WITH_FAM" != "no"; then
  316. AC_CHECK_LIB(fam, FAMOpen2, [
  317. AC_CHECK_HEADERS([fam.h],[
  318. FAM_LIBS=-lfam
  319. AC_DEFINE([HAVE_LIBFAM], [1], [libfam])
  320. AC_DEFINE([HAVE_FAM_H], [1], [fam.h])
  321. ])
  322. ])
  323. if test "x$FAM_LIBS" = x; then
  324. PKG_CHECK_MODULES(FAM, gamin >= 0.1.0, [
  325. AC_DEFINE([HAVE_LIBFAM], [1], [libfam])
  326. AC_DEFINE([HAVE_FAM_H], [1], [fam.h])
  327. ])
  328. fi
  329. OLD_LIBS=$LIBS
  330. LIBS=$FAM_LIBS
  331. AC_CHECK_FUNCS([FAMNoExists])
  332. LIBS=$OLD_LIBS
  333. if test x$FAM_LIBS = x; then
  334. AC_MSG_ERROR([fam/gamin-headers and/or libs where not found, install them or build with --without-fam])
  335. fi
  336. fi
  337. AC_MSG_CHECKING(for properties in mod_webdav)
  338. AC_ARG_WITH(webdav-props, AC_HELP_STRING([--with-webdav-props],[properties in mod_webdav]),
  339. [WITH_WEBDAV_PROPS=$withval],[WITH_WEBDAV_PROPS=no])
  340. AC_MSG_RESULT([$WITH_WEBDAV_PROPS])
  341. if test "$WITH_WEBDAV_PROPS" != "no"; then
  342. PKG_CHECK_MODULES(XML, libxml-2.0, [
  343. AC_DEFINE([HAVE_LIBXML2], [1], [libxml2])
  344. AC_DEFINE([HAVE_LIBXML_H], [1], [libxml.h])
  345. ])
  346. PKG_CHECK_MODULES(SQLITE, sqlite3, [
  347. AC_DEFINE([HAVE_SQLITE3], [1], [libsqlite3])
  348. AC_DEFINE([HAVE_SQLITE3_H], [1], [sqlite3.h])
  349. ])
  350. AC_MSG_CHECKING(for locks in mod_webdav)
  351. AC_ARG_WITH(webdav-locks, AC_HELP_STRING([--with-webdav-locks],[locks in mod_webdav]),
  352. [WITH_WEBDAV_LOCKS=$withval],[WITH_WEBDAV_LOCKS=no])
  353. AC_MSG_RESULT([$WITH_WEBDAV_LOCKS])
  354. if test "$WITH_WEBDAV_LOCKS" != "no"; then
  355. AC_CHECK_LIB(uuid, uuid_unparse, [
  356. AC_CHECK_HEADERS([uuid/uuid.h],[
  357. UUID_LIBS=-luuid
  358. AC_DEFINE([HAVE_UUID], [1], [libuuid])
  359. AC_DEFINE([HAVE_UUID_H], [1], [uuid/uuid.h is available])
  360. ])
  361. ])
  362. fi
  363. fi
  364. AC_SUBST(UUID_LIBS)
  365. dnl Check for gdbm
  366. AC_MSG_CHECKING(for gdbm)
  367. AC_ARG_WITH(gdbm, AC_HELP_STRING([--with-gdbm],[gdbm storage for mod_trigger_b4_dl]),
  368. [WITH_GDBM=$withval],[WITH_GDBM=no])
  369. AC_MSG_RESULT([$WITH_GDBM])
  370. if test "$WITH_GDBM" != "no"; then
  371. AC_CHECK_LIB(gdbm, gdbm_open, [
  372. AC_CHECK_HEADERS([gdbm.h],[
  373. GDBM_LIB=-lgdbm
  374. AC_DEFINE([HAVE_GDBM], [1], [libgdbm])
  375. AC_DEFINE([HAVE_GDBM_H], [1])
  376. ])
  377. ])
  378. AC_SUBST(GDBM_LIB)
  379. fi
  380. dnl Check for memcache
  381. AC_MSG_CHECKING(for memcache)
  382. AC_ARG_WITH(memcache, AC_HELP_STRING([--with-memcache],[memcached storage for mod_trigger_b4_dl]),
  383. [WITH_MEMCACHE=$withval],[WITH_MEMCACHE=no])
  384. AC_MSG_RESULT([$WITH_MEMCACHE])
  385. if test "$WITH_MEMCACHE" != "no"; then
  386. AC_CHECK_LIB(memcache, mc_new, [
  387. AC_CHECK_HEADERS([memcache.h],[
  388. MEMCACHE_LIB=-lmemcache
  389. AC_DEFINE([HAVE_MEMCACHE], [1], [libmemcache])
  390. AC_DEFINE([HAVE_MEMCACHE_H], [1], [memcache.h])
  391. ])
  392. ])
  393. AC_SUBST(MEMCACHE_LIB)
  394. fi
  395. dnl Check for lua
  396. AC_MSG_CHECKING(if lua-support is requested)
  397. AC_ARG_WITH(lua, AC_HELP_STRING([--with-lua],[lua engine for mod_cml]),
  398. [WITH_LUA=$withval],[WITH_LUA=no])
  399. AC_MSG_RESULT($WITH_LUA)
  400. if test "$WITH_LUA" != "no"; then
  401. if test "$WITH_LUA" = "yes"; then
  402. WITH_LUA=lua
  403. fi
  404. dnl first check for lua5.1 (debian and others), then lua-5.1 (freebsd), then $WITH_LUA (defaults to lua)
  405. dnl check "lua" last now that lua5.2 is out
  406. PKG_CHECK_MODULES(LUA, lua5.1 >= 5.1, [
  407. AC_DEFINE([HAVE_LUA], [1], [liblua])
  408. AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
  409. ],[
  410. PKG_CHECK_MODULES(LUA, lua-5.1 >= 5.1, [
  411. AC_DEFINE([HAVE_LUA], [1], [liblua])
  412. AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
  413. ],[
  414. PKG_CHECK_MODULES(LUA, $WITH_LUA >= 5.1, [
  415. AC_DEFINE([HAVE_LUA], [1], [liblua])
  416. AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
  417. ])
  418. ])
  419. ])
  420. AC_SUBST(LUA_CFLAGS)
  421. AC_SUBST(LUA_LIBS)
  422. fi
  423. save_LIBS=$LIBS
  424. AC_SEARCH_LIBS(crypt,crypt,[
  425. AC_CHECK_HEADERS([crypt.h],[
  426. AC_DEFINE([HAVE_CRYPT_H], [1])
  427. ])
  428. AC_DEFINE([HAVE_LIBCRYPT], [1], [libcrypt])
  429. if test "$ac_cv_search_crypt" != no; then
  430. test "$ac_cv_search_crypt" = "none required" || CRYPT_LIB="$ac_cv_search_crypt"
  431. fi
  432. ])
  433. LIBS=$save_LIBS
  434. AC_SUBST(CRYPT_LIB)
  435. save_LIBS=$LIBS
  436. AC_SEARCH_LIBS(sendfilev,sendfile,[
  437. if test "$ac_cv_search_sendfilev" != no; then
  438. test "$ac_cv_search_sendfilev" = "none required" || SENDFILE_LIB="$ac_cv_search_sendfilev"
  439. AC_DEFINE([HAVE_SENDFILEV], [1], [solaris sendfilev])
  440. fi
  441. ])
  442. LIBS=$save_LIBS
  443. AC_SUBST(SENDFILE_LIB)
  444. case $host_os in
  445. *mingw* ) LIBS="$LIBS -lwsock32";;
  446. * ) ;;
  447. esac
  448. AC_CHECK_FUNCS([dup2 getcwd inet_ntoa inet_ntop memset mmap munmap strchr \
  449. strdup strerror strstr strtol sendfile getopt socket lstat \
  450. gethostbyname poll epoll_ctl getrlimit chroot \
  451. getuid select signal pathconf madvise posix_fadvise posix_madvise \
  452. writev sigaction sendfile64 send_file kqueue port_create localtime_r gmtime_r])
  453. AC_MSG_CHECKING(for Large File System support)
  454. AC_ARG_ENABLE(lfs,
  455. AC_HELP_STRING([--enable-lfs],[Turn on Large File System (default)]),
  456. [case "${enableval}" in
  457. yes) CPPFLAGS="${CPPFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES" ;;
  458. no) ;;
  459. *) AC_MSG_ERROR(bad value ${enableval} for --enable-lfs) ;;
  460. esac],[CPPFLAGS="${CPPFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES"
  461. enable_lfs=yes])
  462. AC_MSG_RESULT($enableval)
  463. AC_CHECK_SIZEOF(long)
  464. AC_CHECK_SIZEOF(off_t)
  465. if test "x$ac_cv_func_sendfile" = xyes; then
  466. dnl check if sendfile works
  467. AC_MSG_CHECKING(if sendfile works)
  468. if test "x$cross_compiling" = xno; then
  469. AC_TRY_RUN([
  470. #ifdef HAVE_SYS_SENDFILE_H
  471. #include <sys/sendfile.h>
  472. #endif /* HAVE_SYS_SENDFILE_H */
  473. #include <errno.h>
  474. int main() {
  475. int o = 0;
  476. if (-1 == sendfile(-1, 0, &o, 0) && errno == ENOSYS) return -1;
  477. return 0;
  478. } ],
  479. AC_MSG_RESULT(yes),
  480. [ AC_MSG_RESULT(no)
  481. AC_DEFINE([HAVE_SENDFILE_BROKEN], [1], [broken sendfile]) ] )
  482. else
  483. AC_MSG_RESULT(no, cross-compiling)
  484. AC_DEFINE([HAVE_SENDFILE_BROKEN], [1], [broken sendfile])
  485. fi
  486. fi
  487. dnl Check for IPv6 support
  488. AC_ARG_ENABLE(ipv6,
  489. AC_HELP_STRING([--disable-ipv6],[disable IPv6 support]),
  490. [case "${enableval}" in
  491. yes) ipv6=true ;;
  492. no) ipv6=false ;;
  493. *) AC_MSG_ERROR(bad value ${enableval} for --enable-ipv6) ;;
  494. esac],[ipv6=true])
  495. if test x$ipv6 = xtrue; then
  496. AC_CACHE_CHECK([for IPv6 support], ac_cv_ipv6_support,
  497. [AC_TRY_LINK([ #include <sys/types.h>
  498. #include <sys/socket.h>
  499. #include <netinet/in.h>], [struct sockaddr_in6 s; struct in6_addr t=in6addr_any; int i=AF_INET6; s; t.s6_addr[0] = 0; ],
  500. [ac_cv_ipv6_support=yes], [ac_cv_ipv6_support=no])])
  501. if test "$ac_cv_ipv6_support" = yes; then
  502. AC_DEFINE(HAVE_IPV6,1,[Whether to enable IPv6 support])
  503. fi
  504. fi
  505. # disable mmap by default; if a mmapped file gets truncated, the process gets a SIGBUS signal
  506. # on reading the truncated area which we can't handle (yet).
  507. # lighttpd may always use mmap with files it owns (created tmp files)
  508. AC_ARG_ENABLE(mmap,
  509. AC_HELP_STRING([--enable-mmap],[use mmap if available (DANGEROUS, allows local users to trigger SIGBUS crashes)]),
  510. [case "${enableval}" in
  511. yes) mmap=true ;;
  512. no) mmap=false ;;
  513. *) AC_MSG_ERROR(bad value ${enableval} for --enable-mmap) ;;
  514. esac],[mmap=false])
  515. if test x$mmap = xtrue; then
  516. AC_DEFINE(ENABLE_MMAP, [1], [Use mmap if available])
  517. fi
  518. AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
  519. dnl check for fastcgi lib, for the tests only
  520. fastcgi_found=no
  521. AC_CHECK_LIB(fcgi, FCGI_Accept, [
  522. AC_CHECK_HEADERS([fastcgi.h fastcgi/fastcgi.h],[
  523. fastcgi_found=yes
  524. ])
  525. ])
  526. AM_CONDITIONAL(CHECK_WITH_FASTCGI, test "x$fastcgi_found" = xyes)
  527. dnl check for extra compiler options (warning options)
  528. if test "${GCC}" = "yes"; then
  529. CFLAGS="${CFLAGS} -Wall -W -Wshadow -pedantic -std=gnu99"
  530. fi
  531. AC_ARG_ENABLE(extra-warnings,
  532. AC_HELP_STRING([--enable-extra-warnings],[enable extra warnings (gcc specific)]),
  533. [case "${enableval}" in
  534. yes) extrawarnings=true ;;
  535. no) extrawarnings=false ;;
  536. *) AC_MSG_ERROR(bad value ${enableval} for --enable-extra-warnings) ;;
  537. esac],[extrawarnings=false])
  538. if test x$extrawarnings = xtrue; then
  539. CFLAGS="${CFLAGS} -g -O2 -g2 -Wall -Wmissing-declarations -Wdeclaration-after-statement -Wno-pointer-sign -Wcast-align -Winline -Wsign-compare -Wnested-externs -Wpointer-arith -Wl,--as-needed -Wformat-security"
  540. fi
  541. dnl build version-id
  542. LIGHTTPD_VERSION_ID=`echo $PACKAGE_VERSION | $AWK -F '.' '{print "(" $1 " << 16 | " $2 " << 8 | " $3 ")"}'`
  543. AC_DEFINE_UNQUOTED([LIGHTTPD_VERSION_ID], [$LIGHTTPD_VERSION_ID], [lighttpd-version-id])
  544. AC_CONFIG_FILES([Makefile src/Makefile
  545. doc/config/conf.d/Makefile \
  546. doc/config/vhosts.d/Makefile \
  547. doc/config/Makefile \
  548. doc/scripts/Makefile \
  549. doc/initscripts/Makefile \
  550. doc/systemd/Makefile \
  551. doc/outdated/Makefile \
  552. doc/Makefile \
  553. tests/Makefile \
  554. tests/docroot/Makefile \
  555. tests/docroot/123/Makefile \
  556. tests/docroot/www/Makefile \
  557. tests/docroot/www/go/Makefile \
  558. tests/docroot/www/indexfile/Makefile \
  559. tests/docroot/www/expire/Makefile \
  560. distribute.sh])
  561. AC_OUTPUT
  562. do_build="mod_cgi mod_fastcgi mod_extforward mod_proxy mod_evhost mod_simple_vhost mod_access mod_alias mod_setenv mod_usertrack mod_auth mod_status mod_accesslog"
  563. do_build="$do_build mod_rrdtool mod_secdownload mod_expire mod_compress mod_dirlisting mod_indexfile mod_userdir mod_webdav mod_staticfile mod_scgi mod_flv_streaming"
  564. plugins="mod_rewrite mod_redirect mod_ssi mod_trigger_b4_dl"
  565. features="regex-conditionals"
  566. if test ! "x$PCRE_LIB" = x; then
  567. do_build="$do_build $plugins"
  568. enable_feature="$features"
  569. else
  570. no_build="$no_build $plugins"
  571. disable_feature="$features"
  572. fi
  573. plugins="mod_mysql_vhost"
  574. if test ! "x$MYSQL_LIBS" = x; then
  575. do_build="$do_build $plugins"
  576. else
  577. no_build="$no_build $plugins"
  578. fi
  579. plugins="mod_cml mod_magnet"
  580. if test ! "x$LUA_LIBS" = x; then
  581. do_build="$do_build $plugins"
  582. else
  583. no_build="$no_build $plugins"
  584. fi
  585. features="storage-gdbm"
  586. if test ! "x$GDBM_LIB" = x; then
  587. enable_feature="$enable_feature $features"
  588. else
  589. disable_feature="$disable_feature $features"
  590. fi
  591. features="storage-memcache"
  592. if test ! "x$MEMCACHE_LIB" = x; then
  593. enable_feature="$enable_feature $features"
  594. else
  595. disable_feature="$disable_feature $features"
  596. fi
  597. features="compress-gzip compress-deflate"
  598. if test ! "x$Z_LIB" = x; then
  599. enable_feature="$enable_feature $features"
  600. else
  601. disable_feature="$disable_feature $features"
  602. fi
  603. features="compress-bzip2"
  604. if test ! "x$BZ_LIB" = x; then
  605. enable_feature="$enable_feature $features"
  606. else
  607. disable_feature="$disable_feature $features"
  608. fi
  609. features="auth-ldap"
  610. if test ! "x$LDAP_LIB" = x; then
  611. enable_feature="$enable_feature $features"
  612. else
  613. disable_feature="$disable_feature $features"
  614. fi
  615. features="network-openssl"
  616. if test ! "x$SSL_LIB" = x; then
  617. enable_feature="$enable_feature $features"
  618. else
  619. disable_feature="$disable_feature $features"
  620. fi
  621. dnl no crypt call
  622. features="auth-crypt"
  623. if test "$ac_cv_search_crypt" = no; then
  624. disable_feature="$disable_feature $features"
  625. else
  626. enable_feature="$enable_feature $features"
  627. fi
  628. features="network-ipv6"
  629. if test "$ac_cv_ipv6_support" = yes; then
  630. enable_feature="$enable_feature $features"
  631. else
  632. disable_feature="$disable_feature $features"
  633. fi
  634. features="large-files"
  635. if test "$enable_lfs" = yes; then
  636. enable_feature="$enable_feature $features"
  637. else
  638. disable_feature="$disable_feature $features"
  639. fi
  640. features="stat-cache-fam"
  641. if test ! "x$FAM_LIBS" = x; then
  642. enable_feature="$enable_feature $features"
  643. else
  644. disable_feature="$disable_feature $features"
  645. fi
  646. features="webdav-properties"
  647. if test "x$XML_LIBS" \!= x -a "x$SQLITE_LIBS" \!= x; then
  648. enable_feature="$enable_feature $features"
  649. else
  650. disable_feature="$disable_feature $features"
  651. fi
  652. features="webdav-locks"
  653. if test "x$UUID_LIBS" \!= x; then
  654. enable_feature="$enable_feature $features"
  655. else
  656. disable_feature="$disable_feature $features"
  657. fi
  658. dnl output
  659. $ECHO
  660. $ECHO "Plugins:"
  661. $ECHO
  662. $ECHO "enabled: "
  663. for p in $do_build; do
  664. $ECHO " $p"
  665. done | sort
  666. $ECHO "disabled: "
  667. for p in $no_build; do
  668. $ECHO " $p"
  669. done | sort
  670. $ECHO
  671. $ECHO "Features:"
  672. $ECHO
  673. $ECHO "enabled: "
  674. for p in $enable_feature; do
  675. $ECHO " $p"
  676. done | sort
  677. $ECHO "disabled: "
  678. for p in $disable_feature; do
  679. $ECHO " $p"
  680. done | sort
  681. $ECHO