configure.ac 47 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824
  1. dnl -*- Autoconf -*-
  2. dnl Process this file with autoconf to produce a configure script.
  3. dnl
  4. dnl Indentation rules:
  5. dnl - closing braces not at the beginning of a line must match opening
  6. dnl braces earlier on that line
  7. dnl - closing braces at the beginning of a line:
  8. dnl - must not be followed by anything else apart from "," or comments
  9. dnl - must match opening braces from another line and indented the
  10. dnl same as that other line
  11. dnl - if one argument was put on a new line, all following arguments
  12. dnl must be on their own line too
  13. dnl - if an argument uses more than one line and is not a single
  14. dnl function call, the argument should be on different lines than the
  15. dnl wrapping braces
  16. AC_PREREQ([2.60])
  17. AC_INIT([lighttpd],[1.4.64],[https://redmine.lighttpd.net/projects/lighttpd/boards/2],[lighttpd],[https://www.lighttpd.net/])
  18. AC_CONFIG_SRCDIR([src/server.c])
  19. AC_CONFIG_HEADERS([config.h])
  20. AC_CONFIG_MACRO_DIR([m4])
  21. AC_CANONICAL_HOST
  22. AM_INIT_AUTOMAKE([1.13 -Wall -Wno-portability -Wno-override foreign dist-xz tar-ustar serial-tests silent-rules subdir-objects])
  23. dnl @synopsis TRY_CFLAGS [compiler flags]
  24. dnl @summary check whether compiler supports given flags and adds them to CFLAGS
  25. AC_DEFUN([TRY_CFLAGS],
  26. [dnl
  27. AC_MSG_CHECKING([if $CC supports $1])
  28. AC_LANG_PUSH([C])
  29. ac_try_cflags_saved_cflags="${CFLAGS}"
  30. CFLAGS="${CFLAGS} $1"
  31. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
  32. [AC_MSG_RESULT([yes])],
  33. [
  34. AC_MSG_ERROR([no])
  35. CFLAGS="${ac_try_cflags_saved_cflags}"
  36. ]
  37. )
  38. AC_LANG_POP([C])
  39. ])
  40. dnl @synopsis TRY_LDFLAGS [linker flags]
  41. dnl @summary check whether linker supports given flags and adds them to LDFLAGS
  42. AC_DEFUN([TRY_LDFLAGS],
  43. [dnl
  44. AC_MSG_CHECKING([if $LD supports $1])
  45. AC_LANG_PUSH([C])
  46. ac_try_ldflags_saved_ldflags="${LDFLAGS}"
  47. LDFLAGS="${LDFLAGS} $1"
  48. AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
  49. [AC_MSG_RESULT([yes])],
  50. [
  51. AC_MSG_ERROR([no])
  52. LDFLAGS="${ac_try_ldflags_saved_cflags}"
  53. ]
  54. )
  55. AC_LANG_POP([C])
  56. ])
  57. dnl Checks for programs.
  58. AC_PROG_CC
  59. AC_PROG_CC_C99
  60. AX_PROG_CC_FOR_BUILD
  61. LT_PATH_LD
  62. AC_PROG_INSTALL
  63. AC_PROG_CPP
  64. AC_PROG_MAKE_SET
  65. AC_USE_SYSTEM_EXTENSIONS
  66. AM_PROG_AR
  67. AC_C_INLINE
  68. AC_C_RESTRICT
  69. dnl AC_CANONICAL_HOST
  70. case "$host_os" in
  71. *darwin*|*cygwin*|*aix*|*mingw*|*midipix* ) NO_RDYNAMIC=yes ;;
  72. * ) NO_RDYNAMIC=no ;;
  73. esac
  74. AM_CONDITIONAL([NO_RDYNAMIC], [test "$NO_RDYNAMIC" = yes])
  75. AM_CONDITIONAL([LIGHTTPD_STATIC], [test "$LIGHTTPD_STATIC" = yes])
  76. AC_EXEEXT
  77. dnl libtool
  78. LT_INIT([dlopen disable-static shared])
  79. dnl for solaris
  80. CPPFLAGS="${CPPFLAGS} -D_REENTRANT"
  81. dnl Checks for header files.
  82. dnl checks for sys/wait.h => HAVE_SYS_WAIT_H
  83. AC_HEADER_SYS_WAIT
  84. AC_CHECK_HEADERS([\
  85. getopt.h \
  86. inttypes.h \
  87. poll.h \
  88. pwd.h \
  89. stdlib.h \
  90. stdint.h \
  91. strings.h \
  92. sys/inotify.h \
  93. sys/loadavg.h \
  94. sys/poll.h \
  95. sys/prctl.h \
  96. sys/procctl.h \
  97. sys/sendfile.h \
  98. sys/time.h \
  99. sys/uio.h \
  100. sys/un.h \
  101. syslog.h \
  102. uuid/uuid.h \
  103. ])
  104. dnl Checks for typedefs, structures, and compiler characteristics.
  105. AC_C_CONST
  106. AC_C_INLINE
  107. AC_TYPE_OFF_T
  108. AC_TYPE_PID_T
  109. AC_TYPE_SIZE_T
  110. AC_CHECK_MEMBER([struct tm.tm_gmtoff],
  111. [AC_DEFINE([HAVE_STRUCT_TM_GMTOFF], [1], [gmtoff in struct tm])],
  112. [],
  113. [#include <time.h>]
  114. )
  115. AC_CHECK_TYPES([socklen_t],
  116. [], dnl defines HAVE_SOCKLEN_T
  117. [],
  118. [
  119. #include <sys/types.h>
  120. #include <sys/socket.h>
  121. ]
  122. )
  123. dnl solaris needs -lsocket -lnsl
  124. dnl Haiku needs -lnetwork
  125. AC_SEARCH_LIBS([socket], [socket network])
  126. AC_SEARCH_LIBS([gethostbyname], [nsl socket network])
  127. dnl clock_gettime() needs -lrt with glibc < 2.17, and possibly other platforms
  128. AC_SEARCH_LIBS([clock_gettime], [rt])
  129. dnl FreeBSD elftc_copyfile()
  130. save_LIBS=$LIBS
  131. LIBS=
  132. AC_SEARCH_LIBS([elftc_copyfile], [elftc], [
  133. AC_CHECK_HEADERS([libelftc.h], [
  134. ELFTC_LIB=$LIBS
  135. AC_DEFINE([HAVE_LIBELFTC], [1], [libelftc])
  136. AC_DEFINE([HAVE_ELFTC_COPYFILE], [1], [elftc_copyfile])
  137. ])
  138. ])
  139. LIBS=$save_LIBS
  140. AC_SUBST([ELFTC_LIB])
  141. dnl need dlopen/-ldl to load plugins (when not on windows)
  142. save_LIBS=$LIBS
  143. LIBS=
  144. AC_SEARCH_LIBS([dlopen], [dl], [
  145. AC_CHECK_HEADERS([dlfcn.h], [
  146. DL_LIB=$LIBS
  147. AC_DEFINE([HAVE_LIBDL], [1], [libdl])
  148. AC_DEFINE([HAVE_DLFCN_H], [1])
  149. ])
  150. ])
  151. LIBS=$save_LIBS
  152. AC_SUBST([DL_LIB])
  153. dnl prepare pkg-config usage below
  154. PKG_PROG_PKG_CONFIG
  155. dnl checking for libev
  156. AC_MSG_NOTICE([----------------------------------------])
  157. AC_MSG_CHECKING([for libev support])
  158. AC_ARG_WITH([libev],
  159. [AS_HELP_STRING([--with-libev@<:@=PATH@:>@],
  160. [Include libev support for fdevent handlers in PATH/include and PATH/lib]
  161. )],
  162. [WITH_LIBEV=$withval],
  163. [WITH_LIBEV=no]
  164. )
  165. AC_MSG_RESULT([$WITH_LIBEV])
  166. LIBEV_CFLAGS=
  167. LIBEV_LIBS=
  168. if test "$WITH_LIBEV" != no; then
  169. PKG_CHECK_MODULES([LIBEV], [libev], [], [
  170. dnl no pkg-config for libev, searching manually:
  171. if test "$WITH_LIBEV" != yes; then
  172. LIBEV_CFLAGS="-I$WITH_LIBEV/include"
  173. LIBEV_LIBS="-L$WITH_LIBEV/lib -lev"
  174. else
  175. AC_CHECK_HEADERS([ev.h],
  176. [AC_CHECK_LIB([ev], [ev_time],
  177. [
  178. LIBEV_CFLAGS=
  179. LIBEV_LIBS="-lev"
  180. ],
  181. [AC_MSG_ERROR([libev not found])]
  182. )],
  183. [AC_MSG_ERROR([libev header not found])]
  184. )
  185. fi
  186. ])
  187. AC_DEFINE([HAVE_LIBEV], [1], [libev support])
  188. fi
  189. AC_SUBST([LIBEV_CFLAGS])
  190. AC_SUBST([LIBEV_LIBS])
  191. dnl Checks for mysql
  192. AC_MSG_NOTICE([----------------------------------------])
  193. AC_MSG_CHECKING([for MySQL support])
  194. AC_ARG_WITH([mysql],
  195. [AS_HELP_STRING([--with-mysql@<:@=PATH@:>@],
  196. [Include MySQL support. PATH is the path to 'mysql_config']
  197. )],
  198. [WITH_MYSQL=$withval],
  199. [WITH_MYSQL=no]
  200. )
  201. AC_MSG_RESULT([$WITH_MYSQL])
  202. MYSQL_CFLAGS=
  203. MYSQL_LIBS=
  204. if test "$WITH_MYSQL" != no; then
  205. if test "$WITH_MYSQL" = yes; then
  206. PKG_CHECK_MODULES([MYSQL],[mariadb],[
  207. MYSQL_CONFIG=$PKG_CONFIG
  208. ],[
  209. PKG_CHECK_MODULES([MYSQL],[mysqlclient],[
  210. MYSQL_CONFIG=$PKG_CONFIG
  211. ],[
  212. AC_PATH_PROG([MYSQL_CONFIG], [mysql_config])
  213. ])
  214. ])
  215. else
  216. MYSQL_CONFIG=$WITH_MYSQL
  217. fi
  218. if test "$MYSQL_CONFIG" != "$PKG_CONFIG"; then
  219. if test -z "$MYSQL_CONFIG"; then
  220. AC_MSG_ERROR([mysql_config is not found])
  221. fi
  222. if test ! -x "$MYSQL_CONFIG"; then
  223. AC_MSG_ERROR([mysql_config not exists or not executable, use --with-mysql=path-to-mysql_config])
  224. fi
  225. if "$MYSQL_CONFIG" | grep -- '--include' > /dev/null ; then
  226. MYSQL_CFLAGS=`"$MYSQL_CONFIG" --include | sed s/\'//g`
  227. else
  228. MYSQL_CFLAGS=`"$MYSQL_CONFIG" --cflags | sed s/\'//g`
  229. fi
  230. MYSQL_LIBS=`"$MYSQL_CONFIG" --libs | sed s/\'//g`
  231. fi
  232. AC_MSG_CHECKING([for MySQL includes at])
  233. AC_MSG_RESULT([$MYSQL_CFLAGS])
  234. AC_MSG_CHECKING([for MySQL libraries at])
  235. AC_MSG_RESULT([$MYSQL_LIBS])
  236. AC_DEFINE([HAVE_MYSQL], [1], [mysql support])
  237. fi
  238. AM_CONDITIONAL([BUILD_WITH_MYSQL], [test "$WITH_MYSQL" != no])
  239. AC_SUBST([MYSQL_LIBS])
  240. AC_SUBST([MYSQL_CFLAGS])
  241. dnl Checks for pgsql
  242. AC_MSG_NOTICE([----------------------------------------])
  243. AC_MSG_CHECKING([for PgSQL support])
  244. AC_ARG_WITH([pgsql],
  245. [AS_HELP_STRING([--with-pgsql@<:@=PATH@:>@],
  246. [Include PgSQL support. PATH is the path to 'pg_config']
  247. )],
  248. [WITH_PGSQL=$withval],
  249. [WITH_PGSQL=no]
  250. )
  251. AC_MSG_RESULT([$WITH_PGSQL])
  252. PGSQL_CFLAGS=
  253. PGSQL_LIBS=
  254. if test "$WITH_PGSQL" != no; then
  255. if test "$WITH_PGSQL" = yes; then
  256. PKG_CHECK_MODULES([PGSQL],[libpq],[
  257. PGSQL_CONFIG=$PKG_CONFIG
  258. ],[
  259. AC_PATH_PROG([PGSQL_CONFIG], [pg_config])
  260. ])
  261. else
  262. PGSQL_CONFIG=$WITH_PGSQL
  263. fi
  264. if test "$PGSQL_CONFIG" != "$PKG_CONFIG"; then
  265. if test -z "$PGSQL_CONFIG"; then
  266. AC_MSG_ERROR([pg_config is not found])
  267. fi
  268. if test ! -x "$PGSQL_CONFIG"; then
  269. AC_MSG_ERROR([pg_config not exists or not executable, use --with-pgsql=path-to-pg_config])
  270. fi
  271. PGSQL_CFLAGS="-I`"$PGSQL_CONFIG" --includedir`"
  272. PGSQL_LIBS="-L`"$PGSQL_CONFIG" --libdir` -lpq"
  273. fi
  274. AC_MSG_CHECKING([for PgSQL includes at])
  275. AC_MSG_RESULT([$PGSQL_CFLAGS])
  276. AC_MSG_CHECKING([for PgSQL libraries at])
  277. AC_MSG_RESULT([$PGSQL_LIBS])
  278. AC_DEFINE([HAVE_PGSQL], [1], [pgsql support])
  279. fi
  280. AM_CONDITIONAL([BUILD_WITH_PGSQL], [test "$WITH_PGSQL" != no])
  281. AC_SUBST([PGSQL_LIBS])
  282. AC_SUBST([PGSQL_CFLAGS])
  283. dnl Checks for libdbi library
  284. AC_MSG_NOTICE([----------------------------------------])
  285. AC_MSG_CHECKING([for LibDBI support])
  286. AC_ARG_WITH([dbi],
  287. [AS_HELP_STRING([--with-dbi@<:@=PATH@:>@],
  288. [Include DBI support in PATH/include/dbi.h and PATH/lib]
  289. )],
  290. [WITH_DBI=$withval],
  291. [WITH_DBI=no]
  292. )
  293. AC_MSG_RESULT([$WITH_DBI])
  294. DBI_INCLUDE=
  295. DBI_LIBS=
  296. if test "$WITH_DBI" != no; then
  297. if test "$WITH_DBI" != yes; then
  298. DBI_CFLAGS="-I$WITH_DBI/include"
  299. DBI_LIBS="-L$WITH_DBI/lib -ldbi"
  300. else
  301. AC_CHECK_HEADERS([dbi/dbi.h],
  302. [AC_CHECK_LIB([dbi], [dbi_version],
  303. [
  304. DBI_CFLAGS=
  305. DBI_LIBS="-ldbi"
  306. ],
  307. [AC_MSG_ERROR([LibDBI not found])]
  308. )],
  309. [AC_MSG_ERROR([LibDBI header not found])]
  310. )
  311. fi
  312. AC_DEFINE([HAVE_DBI], [1], [LibDBI support])
  313. fi
  314. AM_CONDITIONAL([BUILD_WITH_DBI], [test "$WITH_DBI" != no])
  315. AC_SUBST([DBI_LIBS])
  316. AC_SUBST([DBI_CFLAGS])
  317. dnl Checks for libsasl2 library
  318. AC_MSG_NOTICE([----------------------------------------])
  319. AC_MSG_CHECKING([for LibSASL support])
  320. AC_ARG_WITH([sasl],
  321. [AS_HELP_STRING([--with-sasl@<:@=PATH@:>@],
  322. [Include SASL support in PATH/include/sasl/sasl.h and PATH/lib]
  323. )],
  324. [WITH_SASL=$withval],
  325. [WITH_SASL=no]
  326. )
  327. AC_MSG_RESULT([$WITH_SASL])
  328. SASL_INCLUDE=
  329. SASL_LIBS=
  330. if test "$WITH_SASL" != no; then
  331. if test "$WITH_SASL" != yes; then
  332. SASL_CFLAGS="-I$WITH_SASL/include"
  333. SASL_LIBS="-L$WITH_SASL/lib -lsasl2"
  334. else
  335. AC_CHECK_HEADERS([sasl/sasl.h],
  336. [AC_CHECK_LIB([sasl2], [sasl_server_init],
  337. [
  338. SASL_CFLAGS=
  339. SASL_LIBS="-lsasl2"
  340. ],
  341. [AC_MSG_ERROR([libsasl2 not found])]
  342. )],
  343. [AC_MSG_ERROR([SASL header not found])]
  344. )
  345. fi
  346. AC_DEFINE([HAVE_SASL], [1], [LibSASL support])
  347. fi
  348. AM_CONDITIONAL([BUILD_WITH_SASL], [test "$WITH_SASL" != no])
  349. AC_SUBST([SASL_LIBS])
  350. AC_SUBST([SASL_CFLAGS])
  351. dnl Check for LDAP
  352. AC_MSG_NOTICE([----------------------------------------])
  353. AC_MSG_CHECKING([for LDAP support])
  354. AC_ARG_WITH([ldap],
  355. [AS_HELP_STRING([--with-ldap], [enable LDAP support])],
  356. [WITH_LDAP=$withval],
  357. [WITH_LDAP=no]
  358. )
  359. AC_MSG_RESULT([$WITH_LDAP])
  360. if test "$WITH_LDAP" != no; then
  361. AC_CHECK_LIB([ldap], [ldap_sasl_bind_s],
  362. [AC_CHECK_HEADERS([ldap.h],
  363. [
  364. LDAP_LIB=-lldap
  365. AC_DEFINE([HAVE_LIBLDAP], [1], [libldap])
  366. AC_DEFINE([HAVE_LDAP_H], [1])
  367. ],
  368. [AC_MSG_ERROR([ldap headers not found, install them or build without --with-ldap])]
  369. )],
  370. [AC_MSG_ERROR([ldap library not found, install it or build without --with-ldap])]
  371. )
  372. AC_SUBST([LDAP_LIB])
  373. AC_CHECK_LIB([lber], [ber_printf],
  374. [AC_CHECK_HEADERS([lber.h],
  375. [
  376. LBER_LIB=-llber
  377. AC_DEFINE([HAVE_LIBLBER], [1], [liblber])
  378. AC_DEFINE([HAVE_LBER_H], [1])
  379. ],
  380. [AC_MSG_ERROR([lber headers not found, install them or build without --with-ldap])]
  381. )],
  382. [AC_MSG_ERROR([lber library not found, install it or build without --with-ldap])]
  383. )
  384. AC_SUBST([LBER_LIB])
  385. fi
  386. AM_CONDITIONAL([BUILD_WITH_LDAP], [test "$WITH_LDAP" != no])
  387. dnl Check for PAM
  388. AC_MSG_NOTICE([----------------------------------------])
  389. AC_MSG_CHECKING(for PAM support)
  390. AC_ARG_WITH([pam],
  391. [AS_HELP_STRING([--with-pam],[enable PAM support])],
  392. [WITH_PAM=$withval],
  393. [WITH_PAM=no]
  394. )
  395. AC_MSG_RESULT([$withval])
  396. if test "$WITH_PAM" != "no"; then
  397. AC_CHECK_LIB([pam], [pam_start],
  398. [AC_CHECK_HEADERS([security/pam_appl.h],[
  399. PAM_LIB=-lpam
  400. AC_DEFINE([HAVE_PAM], [1], [libpam])
  401. AC_DEFINE([HAVE_SECURITY_PAM_APPL_H], [1])
  402. ],
  403. [AC_MSG_ERROR([pam headers not found, install them or build without --with-pam])]
  404. )],
  405. [AC_MSG_ERROR([pam library not found, install it or build without --with-pam])]
  406. )
  407. AC_SUBST(PAM_LIB)
  408. fi
  409. AM_CONDITIONAL([BUILD_WITH_PAM], [test "$WITH_PAM" != no])
  410. dnl Check for xattr
  411. AC_MSG_NOTICE([----------------------------------------])
  412. AC_MSG_CHECKING([for extended attributes support])
  413. AC_ARG_WITH([attr],
  414. [AS_HELP_STRING([--with-attr], [enable extended attribute support])],
  415. [WITH_ATTR=$withval],
  416. [WITH_ATTR=no]
  417. )
  418. AC_MSG_RESULT([$WITH_ATTR])
  419. if test "$WITH_ATTR" != no; then
  420. have_xattr=no
  421. # Linux getxattr
  422. AC_CHECK_FUNC([getxattr], [
  423. AC_CHECK_HEADERS([sys/xattr.h], [
  424. AC_DEFINE([HAVE_XATTR], [1], [Linux extended attributes])
  425. AC_DEFINE([HAVE_SYS_XATTR_H], [1])
  426. have_xattr=yes
  427. ])
  428. ])
  429. # (Free)BSD extattr
  430. AC_CHECK_FUNC([extattr_get_file], [
  431. AC_CHECK_HEADERS([sys/extattr.h], [
  432. AC_DEFINE([HAVE_EXTATTR], [1], [BSD extended attributes])
  433. AC_DEFINE([HAVE_SYS_EXTATTR_H], [1])
  434. have_xattr=yes
  435. ])
  436. ])
  437. # libattr (linux only?)
  438. if test "$have_xattr" = no; then
  439. AC_CHECK_LIB([attr], [attr_get], [
  440. AC_CHECK_HEADERS([attr/attributes.h], [
  441. ATTR_LIB=-lattr
  442. AC_DEFINE([HAVE_XATTR], [1], [libattr])
  443. AC_DEFINE([HAVE_ATTR_ATTRIBUTES_H], [1])
  444. have_xattr=yes
  445. ])
  446. ])
  447. fi
  448. AC_SUBST([ATTR_LIB])
  449. if test "$have_xattr" = no; then
  450. AC_MSG_ERROR([no backend found implementing extended attributes])
  451. fi
  452. fi
  453. dnl Check for valgrind
  454. AC_MSG_NOTICE([----------------------------------------])
  455. AC_MSG_CHECKING([for valgrind])
  456. AC_ARG_WITH([valgrind],
  457. [AS_HELP_STRING([--with-valgrind],
  458. [enable internal support for valgrind]
  459. )],
  460. [WITH_VALGRIND=$withval],
  461. [WITH_VALGRIND=no]
  462. )
  463. AC_MSG_RESULT([$WITH_VALGRIND])
  464. if test "$WITH_VALGRIND" != no; then
  465. AC_CHECK_HEADERS([valgrind/valgrind.h], [], [
  466. AC_MSG_ERROR([valgrind headers not found. install them or build without --with-valgrind])
  467. ])
  468. fi
  469. dnl Checking for libunwind
  470. AC_MSG_NOTICE([----------------------------------------])
  471. AC_MSG_CHECKING([for libunwind])
  472. AC_ARG_WITH([libunwind],
  473. [AS_HELP_STRING([--with-libunwind],
  474. [Include libunwind support for backtraces on assert failures]
  475. )],
  476. [WITH_LIBUNWIND=$withval],
  477. [WITH_LIBUNWIND=no]
  478. )
  479. AC_MSG_RESULT([$WITH_LIBUNWIND])
  480. if test "$WITH_LIBUNWIND" != no; then
  481. PKG_CHECK_MODULES([LIBUNWIND], [libunwind], [], [
  482. AC_MSG_ERROR([libunwind not found. install it or build without --with-libunwind])
  483. ])
  484. AC_DEFINE([HAVE_LIBUNWIND], [1], [Have libunwind support])
  485. fi
  486. dnl Checking for kerberos5
  487. AC_MSG_NOTICE([----------------------------------------])
  488. AC_MSG_CHECKING([for kerberos5])
  489. AC_ARG_WITH([krb5],
  490. [AS_HELP_STRING([--with-krb5@<:@=DIR@:>@], [Use Kerberos 5])],
  491. [WITH_KRB5=$withval],
  492. [WITH_KRB5=no]
  493. )
  494. AC_MSG_RESULT([$WITH_KRB5])
  495. if test "$WITH_KRB5" != no; then
  496. if test "$WITH_KRB5" != yes; then
  497. krb5_append_CPPFLAGS=" -I$WITH_KRB5/include"
  498. krb5_append_LDFLAGS=" -L$WITH_KRB5/lib"
  499. fi
  500. fi
  501. AC_MSG_CHECKING([custom include directory for kerberos5])
  502. AC_ARG_WITH([krb5-includes],
  503. [AS_HELP_STRING([--with-krb5-includes=DIR], [Kerberos includes])],
  504. [
  505. if test "$WITH_KRB5" = no; then
  506. AC_MSG_ERROR([build --with-krb5 to use --with-krb5-includes])
  507. fi
  508. krb5_append_CPPFLAGS=" -I$withval"
  509. AC_MSG_RESULT([$withval])
  510. ],
  511. [AC_MSG_RESULT([no])]
  512. )
  513. AC_MSG_CHECKING([custom lib directory for kerberos5])
  514. AC_ARG_WITH([krb5-libs],
  515. [AS_HELP_STRING([--with-krb5-libs=DIR], [Kerberos libraries])],
  516. [
  517. if test "$WITH_KRB5" = no; then
  518. AC_MSG_ERROR([build --with-krb5 to use --with-krb5-libs])
  519. fi
  520. krb5_append_LDFLAGS=" -L$withval"
  521. AC_MSG_RESULT([$withval])
  522. ],
  523. [AC_MSG_RESULT([no])]
  524. )
  525. if test "$WITH_KRB5" != no; then
  526. CPPFLAGS="${CPPFLAGS}${krb5_append_CPPFLAGS}"
  527. LDFLAGS="${LDFLAGS}${krb5_append_LDFLAGS}"
  528. AC_CHECK_LIB([gssapi_krb5], [gss_acquire_cred],
  529. [AC_CHECK_HEADERS([gssapi/gssapi_krb5.h],
  530. [
  531. KRB5_LIB="-lkrb5 -lgssapi_krb5"
  532. AC_DEFINE([HAVE_KRB5], [1], [libgssapi_krb5])
  533. ],
  534. [AC_MSG_ERROR([gssapi_krb5 headers were not found, install them or build without --with-krb5])]
  535. )],
  536. [AC_MSG_ERROR([gssapi_krb5 libs were not found, install them or build without --with-krb5])]
  537. )
  538. case "$host_os" in
  539. *darwin*|*cygwin* ) KRB5_LIB="$KRB5_LIB -lcom_err" ;;
  540. * ) ;;
  541. esac
  542. fi
  543. AM_CONDITIONAL([BUILD_WITH_KRB5], [test "$WITH_KRB5" != no])
  544. AC_SUBST([KRB5_LIB])
  545. dnl Check for openssl
  546. AC_MSG_NOTICE([----------------------------------------])
  547. AC_MSG_CHECKING([for OpenSSL])
  548. AC_ARG_WITH([openssl],
  549. [AS_HELP_STRING([--with-openssl@<:@=DIR@:>@],
  550. [Include openssl support (default no)]
  551. )],
  552. [WITH_OPENSSL=$withval],
  553. [WITH_OPENSSL=no]
  554. )
  555. AC_MSG_RESULT([$WITH_OPENSSL])
  556. AM_CONDITIONAL([BUILD_WITH_OPENSSL], test ! "$WITH_OPENSSL" = no)
  557. if test "$WITH_OPENSSL" != no; then
  558. if test "$WITH_OPENSSL" != yes; then
  559. openssl_append_CPPFLAGS=" -I$WITH_OPENSSL/include"
  560. openssl_append_LDFLAGS=" -L$WITH_OPENSSL/lib"
  561. fi
  562. fi
  563. AC_MSG_CHECKING([custom include directory for openssl])
  564. AC_ARG_WITH([openssl-includes],
  565. [AS_HELP_STRING([--with-openssl-includes=DIR], [OpenSSL includes])],
  566. [
  567. if test "$WITH_OPENSSL" = no; then
  568. AC_MSG_ERROR([build --with-openssl to use --with-openssl-includes])
  569. fi
  570. openssl_append_CPPFLAGS=" -I$withval"
  571. AC_MSG_RESULT([$withval])
  572. ],
  573. [AC_MSG_RESULT([no])]
  574. )
  575. AC_MSG_CHECKING([custom lib directory for openssl])
  576. AC_ARG_WITH([openssl-libs],
  577. [AS_HELP_STRING([--with-openssl-libs=DIR], [OpenSSL libraries])],
  578. [
  579. if test "$WITH_OPENSSL" = no; then
  580. AC_MSG_ERROR([build --with-openssl to use --with-openssl-libs])
  581. fi
  582. openssl_append_LDFLAGS=" -L$withval"
  583. AC_MSG_RESULT([$withval])
  584. ],
  585. [AC_MSG_RESULT([no])]
  586. )
  587. if test "$WITH_OPENSSL" != no; then
  588. if test "$WITH_KRB5" != no; then
  589. AC_DEFINE([USE_OPENSSL_KERBEROS], [1], [with kerberos])
  590. fi
  591. CPPFLAGS="${CPPFLAGS}${openssl_append_CPPFLAGS}"
  592. LDFLAGS="${LDFLAGS}${openssl_append_LDFLAGS}"
  593. AC_CHECK_HEADERS([openssl/ssl.h], [], [
  594. AC_MSG_ERROR([openssl headers not found. install them or build without --with-openssl])
  595. ])
  596. AC_CHECK_LIB([crypto], [RAND_bytes],
  597. [CRYPTO_LIB="-lcrypto"],
  598. [AC_MSG_ERROR([openssl crypto library not found. install it or build without --with-openssl])]
  599. )
  600. AC_CHECK_LIB([ssl], [SSL_new],
  601. [OPENSSL_LIBS="${openssl_append_LDFLAGS} -lssl -lcrypto"],
  602. [AC_MSG_ERROR([openssl ssl library not found. install it or build without --with-openssl])],
  603. [ -lcrypto "$DL_LIB" ]
  604. )
  605. AC_DEFINE([HAVE_LIBSSL], [1], [Have libssl])
  606. OPENSSL_CFLAGS="${openssl_append_CPPFLAGS}"
  607. AC_SUBST([OPENSSL_CFLAGS])
  608. AC_SUBST([OPENSSL_LIBS])
  609. AC_SUBST([CRYPTO_LIB])
  610. fi
  611. dnl Check for wolfSSL
  612. AC_MSG_NOTICE([----------------------------------------])
  613. AC_MSG_CHECKING([for wolfSSL])
  614. AC_ARG_WITH([wolfssl],
  615. [AS_HELP_STRING([--with-wolfssl@<:@=DIR@:>@],
  616. [Include wolfSSL support (default no)]
  617. )],
  618. [WITH_WOLFSSL=$withval],
  619. [WITH_WOLFSSL=no]
  620. )
  621. AC_MSG_RESULT([$WITH_WOLFSSL])
  622. AM_CONDITIONAL([BUILD_WITH_WOLFSSL], test ! "$WITH_WOLFSSL" = no)
  623. if test "$WITH_WOLFSSL" != no; then
  624. CPPFLAGS_SAVE="${CPPFLAGS}"
  625. LDFLAGS_SAVE="${LDFLAGS}"
  626. if test "$WITH_WOLFSSL" != yes; then
  627. WOLFSSL_CFLAGS="-I$WITH_WOLFSSL/include -I$WITH_WOLFSSL/include/wolfssl"
  628. WOLFSSL_LIBS="-L$WITH_WOLFSSL/lib -lwolfssl"
  629. LDFLAGS="${LDFLAGS} -L$WITH_WOLFSSL/lib"
  630. else
  631. PKG_CHECK_MODULES([WOLFSSL], [wolfssl], [], [
  632. AC_MSG_ERROR([wolfssl not found, install it or build without --with-wolfssl])
  633. ])
  634. if test "$WOLFSSL_LIBS" != "-lwolfssl"; then
  635. LDFLAGS="${LDFLAGS} ${WOLFSSL_LIBS% -lwolfssl}"
  636. fi
  637. fi
  638. CPPFLAGS="${CPPFLAGS} $WOLFSSL_CFLAGS"
  639. AC_CHECK_HEADERS([wolfssl/ssl.h], [], [
  640. AC_MSG_ERROR([wolfssl headers not found. install them or build without --with-wolfssl])
  641. ])
  642. AC_CHECK_LIB([wolfssl], [wolfSSL_Init],
  643. [WOLFSSL_CRYPTO_LIB="-lwolfssl"],
  644. [AC_MSG_ERROR([wolfssl crypto library not found. install it or build without --with-wolfssl])]
  645. )
  646. AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
  647. #include <wolfssl/options.h>
  648. #if !defined(HAVE_LIGHTY) && !defined(OPENSSL_EXTRA)
  649. #error HAVE_LIGHTY macro not defined
  650. #endif
  651. ]])], [], [AC_MSG_ERROR([wolfssl must be built with ./configure --enable-lighty])])
  652. AC_SUBST([WOLFSSL_CFLAGS])
  653. AC_SUBST([WOLFSSL_LIBS])
  654. if test "$WITH_OPENSSL" = no; then
  655. CRYPTO_LIB="$WOLFSSL_CRYPTO_LIB"
  656. AC_SUBST([CRYPTO_LIB])
  657. else
  658. CPPFLAGS="${CPPFLAGS_SAVE}"
  659. LDFLAGS="${LDFLAGS_SAVE}"
  660. fi
  661. fi
  662. dnl Check for mbedTLS
  663. AC_MSG_NOTICE([----------------------------------------])
  664. AC_MSG_CHECKING([for mbedTLS])
  665. AC_ARG_WITH([mbedtls],
  666. AS_HELP_STRING([--with-mbedtls@<:@=DIR@:>@],[Include mbedTLS support. DIR points to the installation root. (default no)]),
  667. [WITH_MBEDTLS=$withval],
  668. [WITH_MBEDTLS=no]
  669. )
  670. if test "$WITH_MBEDTLS" != "no"; then
  671. use_mbedtls=yes
  672. if test "$WITH_MBEDTLS" != "yes"; then
  673. CPPFLAGS="$CPPFLAGS -I$WITH_MBEDTLS/include"
  674. LDFLAGS="$LDFLAGS -L$WITH_MBEDTLS/lib"
  675. fi
  676. else
  677. use_mbedtls=no
  678. fi
  679. AC_MSG_RESULT([$use_mbedtls])
  680. AM_CONDITIONAL(BUILD_WITH_MBEDTLS, test ! $WITH_MBEDTLS = no)
  681. if test "x$use_mbedtls" = "xyes"; then
  682. AC_CHECK_HEADERS([mbedtls/ssl.h])
  683. OLDLIBS="$LIBS"
  684. AC_CHECK_LIB(mbedcrypto, mbedtls_base64_encode,
  685. [AC_CHECK_LIB(mbedx509, mbedtls_x509_get_name,
  686. [AC_CHECK_LIB(mbedtls, mbedtls_ssl_init,
  687. [MTLS_LIBS="-lmbedtls -lmbedx509 -lmbedcrypto"
  688. CRYPTO_LIB="-lmbedcrypto"
  689. AC_DEFINE(HAVE_LIBMBEDTLS, [1], [Have libmbedtls library])
  690. AC_DEFINE(HAVE_LIBMBEDX509, [1], [Have libmbedx509 library])
  691. AC_DEFINE(HAVE_LIBMBEDCRYPTO, [1], [Have libmbedcrypto library]) ],
  692. [],[-lmbedcrypto "$DL_LIB"])
  693. ],[],[-lmbedcrypto "$DL_LIB"])
  694. ],[],[])
  695. LIBS="$OLDLIBS"
  696. AC_SUBST(MTLS_LIBS)
  697. AC_SUBST(CRYPTO_LIB)
  698. fi
  699. dnl Check for Nettle (and overwrite CRYPTO_LIB if set by OpenSSL or wolfSSL)
  700. AC_MSG_NOTICE([----------------------------------------])
  701. AC_MSG_CHECKING([for Nettle])
  702. AC_ARG_WITH([nettle],
  703. [AS_HELP_STRING([--with-nettle@<:@=DIR@:>@],
  704. [Include Nettle support (default no)]
  705. )],
  706. [WITH_NETTLE=$withval],
  707. [WITH_NETTLE=no]
  708. )
  709. AC_MSG_RESULT([$WITH_NETTLE])
  710. if test "$WITH_NETTLE" != no; then
  711. if test "$WITH_NETTLE" != yes; then
  712. CPPFLAGS="${CPPFLAGS} -I$WITH_NETTLE/include"
  713. LDFLAGS="${LDFLAGS} -L$WITH_NETTLE/lib"
  714. fi
  715. AC_CHECK_HEADERS([nettle/nettle-types.h], [], [
  716. AC_MSG_ERROR([nettle headers not found. install them or build without --with-nettle])
  717. ])
  718. AC_CHECK_LIB([nettle], [nettle_md5_init],
  719. [CRYPTO_LIB="-lnettle"],
  720. [AC_MSG_ERROR([nettle crypto library not found. install it or build without --with-nettle])]
  721. )
  722. AC_SUBST([CRYPTO_LIB])
  723. fi
  724. dnl Check for GnuTLS
  725. AC_MSG_NOTICE([----------------------------------------])
  726. AC_MSG_CHECKING([for GnuTLS])
  727. AC_ARG_WITH([gnutls],
  728. AS_HELP_STRING([--with-gnutls@<:@=DIR@:>@],[Include GnuTLS support. DIR points to the installation root. (default no)]),
  729. [WITH_GNUTLS=$withval],
  730. [WITH_GNUTLS=no]
  731. )
  732. if test "$WITH_GNUTLS" != "no"; then
  733. use_gnutls=yes
  734. else
  735. use_gnutls=no
  736. fi
  737. AC_MSG_RESULT([$use_gnutls])
  738. AM_CONDITIONAL(BUILD_WITH_GNUTLS, test ! $WITH_GNUTLS = no)
  739. GNUTLS_CFLAGS=
  740. GNUTLS_LIBS=
  741. if test "x$use_gnutls" = "xyes"; then
  742. if test "$WITH_GNUTLS" != "yes"; then
  743. GNUTLS_CFLAGS="-I$WITH_GNUTLS/include"
  744. GNUTLS_LIBS="-L$WITH_GNUTLS/lib -lgnutls"
  745. else
  746. dnl oldest GnuTLS supported release is 3.3.x at time this is being written
  747. PKG_CHECK_MODULES([GNUTLS], [gnutls >= 3.3.0])
  748. fi
  749. AC_SUBST([GNUTLS_CFLAGS])
  750. AC_SUBST([GNUTLS_LIBS])
  751. AC_DEFINE([HAVE_GNUTLS_CRYPTO_H], [1], [gnutls/crypto.h])
  752. if test "$WITH_OPENSSL" = no && test "$WITH_WOLFSSL" = no && \
  753. test "$WITH_MBEDTLS" = no && test "$WITH_NETTLE" = no; then
  754. AC_SUBST([CRYPTO_LIB],[$GNUTLS_LIBS])
  755. fi
  756. fi
  757. dnl Check for NSS
  758. AC_MSG_NOTICE([----------------------------------------])
  759. AC_MSG_CHECKING([for NSS])
  760. AC_ARG_WITH([nss],
  761. AS_HELP_STRING([--with-nss@<:@=DIR@:>@],[Include NSS support. DIR points to the installation root. (default no)]),
  762. [WITH_NSS=$withval],
  763. [WITH_NSS=no]
  764. )
  765. if test "$WITH_NSS" != "no"; then
  766. use_nss=yes
  767. else
  768. use_nss=no
  769. fi
  770. AC_MSG_RESULT([$use_nss])
  771. AM_CONDITIONAL(BUILD_WITH_NSS, test ! $WITH_NSS = no)
  772. NSS_CFLAGS=
  773. NSS_LIBS=
  774. if test "x$use_nss" = "xyes"; then
  775. if test "$WITH_NSS" != "yes"; then
  776. NSS_CFLAGS="-I$WITH_NSS/include"
  777. NSS_LIBS="-L$WITH_NSS/lib -lnss3"
  778. else
  779. PKG_CHECK_MODULES([NSS],[nss])
  780. if test "x$CRYPTO_LIB" = "x"; then
  781. PKG_CHECK_MODULES([NSPR],[nspr])
  782. CPPFLAGS="$CPPFLAGS $NSPR_CFLAGS"
  783. fi
  784. fi
  785. AC_DEFINE([HAVE_NSS_NSS_H], [1], [nss/nss.h])
  786. AC_DEFINE([HAVE_NSS3_NSS_H], [1], [nss3/nss.h])
  787. AC_SUBST([NSS_CFLAGS])
  788. AC_SUBST([NSS_LIBS])
  789. if test "x$CRYPTO_LIB" = "x"; then
  790. CRYPTO_LIB="-lnss3"
  791. AC_SUBST([CRYPTO_LIB])
  792. fi
  793. fi
  794. dnl pcre support
  795. AC_MSG_NOTICE([----------------------------------------])
  796. AC_MSG_CHECKING([for perl regular expressions support])
  797. AC_ARG_WITH([pcre],
  798. [AS_HELP_STRING([--with-pcre], [Enable pcre support (default no)])],
  799. [WITH_PCRE=$withval],
  800. [WITH_PCRE=no]
  801. )
  802. AC_MSG_RESULT([$WITH_PCRE])
  803. dnl pcre2 support
  804. AC_MSG_NOTICE([----------------------------------------])
  805. AC_MSG_CHECKING([for perl regular expressions support])
  806. AC_ARG_WITH([pcre2],
  807. [AS_HELP_STRING([--with-pcre2], [Enable pcre2 support (default yes)])],
  808. [WITH_PCRE2=$withval],
  809. [WITH_PCRE2=yes]
  810. )
  811. AC_MSG_RESULT([$WITH_PCRE2])
  812. if test "$WITH_PCRE2" != no && test "$WITH_PCRE" = "no"; then
  813. if test "$WITH_PCRE2" != yes; then
  814. PCRE_LIB="-L$WITH_PCRE2/lib -lpcre2-8"
  815. CPPFLAGS="$CPPFLAGS -I$WITH_PCRE/include"
  816. else
  817. PKG_CHECK_MODULES([PCRE2],[libpcre2-8],[
  818. PCRE_LIB="$PCRE2_LIBS"
  819. CPPFLAGS="$CPPFLAGS $PCRE2_CFLAGS"
  820. ],[
  821. AC_PATH_PROG([PCRE2CONFIG], [pcre2-config])
  822. if test -n "$PCRE2CONFIG"; then
  823. PCRE_LIB=`"$PCRE2CONFIG" --libs8`
  824. CPPFLAGS="$CPPFLAGS `"$PCRE2CONFIG" --cflags`"
  825. fi
  826. ])
  827. fi
  828. if test -z "$PCRE_LIB"; then
  829. AC_MSG_ERROR([pcre2-config not found, install the pcre2-devel package or build with --without-pcre2])
  830. fi
  831. AC_DEFINE([HAVE_PCRE], [1], [libpcre2-8])
  832. AC_DEFINE([HAVE_PCRE2_H], [1], [pcre.h])
  833. AC_SUBST([PCRE_LIB])
  834. fi
  835. if test "$WITH_PCRE" != no; then
  836. if test "$WITH_PCRE" != yes; then
  837. PCRE_LIB="-L$WITH_PCRE/lib -lpcre"
  838. CPPFLAGS="$CPPFLAGS -I$WITH_PCRE/include"
  839. else
  840. AC_PATH_PROG([PCRECONFIG], [pcre-config])
  841. if test -n "$PCRECONFIG"; then
  842. PCRE_LIB=`"$PCRECONFIG" --libs`
  843. CPPFLAGS="$CPPFLAGS `"$PCRECONFIG" --cflags`"
  844. fi
  845. fi
  846. if test -z "$PCRE_LIB"; then
  847. AC_MSG_ERROR([pcre-config not found, install the pcre-devel package or build with --without-pcre])
  848. fi
  849. AC_DEFINE([HAVE_PCRE], [1], [libpcre])
  850. AC_DEFINE([HAVE_PCRE_H], [1], [pcre.h])
  851. AC_SUBST([PCRE_LIB])
  852. fi
  853. dnl zlib
  854. AC_MSG_NOTICE([----------------------------------------])
  855. AC_MSG_CHECKING([for zlib support])
  856. AC_ARG_WITH([zlib],
  857. [AS_HELP_STRING([--with-zlib],
  858. [Enable zlib support for mod_deflate]
  859. )],
  860. [WITH_ZLIB=$withval],
  861. [WITH_ZLIB=yes]
  862. )
  863. AC_MSG_RESULT([$WITH_ZLIB])
  864. if test "$WITH_ZLIB" != no; then
  865. if test "$WITH_ZLIB" != yes; then
  866. Z_LIB="-L$WITH_ZLIB -lz"
  867. CPPFLAGS="$CPPFLAGS -I$WITH_ZLIB"
  868. else
  869. AC_CHECK_HEADERS([zlib.h], [],
  870. [AC_MSG_ERROR([zlib headers not found, install them or build without --with-zlib])]
  871. )
  872. AC_CHECK_LIB([z], [deflate],
  873. [Z_LIB=-lz],
  874. [AC_MSG_ERROR([zlib library not found, install it or build without --with-zlib])]
  875. )
  876. fi
  877. AC_DEFINE([HAVE_LIBZ], [1], [libz])
  878. AC_DEFINE([HAVE_ZLIB_H], [1])
  879. AC_SUBST([Z_LIB])
  880. fi
  881. dnl zstd
  882. AC_MSG_NOTICE([----------------------------------------])
  883. AC_MSG_CHECKING([for zstd support])
  884. AC_ARG_WITH([zstd],
  885. [AS_HELP_STRING([--with-zstd],
  886. [Enable zstd support for mod_deflate]
  887. )],
  888. [WITH_ZSTD=$withval],
  889. [WITH_ZSTD=no]
  890. )
  891. AC_MSG_RESULT([$WITH_ZSTD])
  892. if test "$WITH_ZSTD" != no; then
  893. if test "$WITH_ZSTD" != yes; then
  894. ZSTD_LIB="-L$WITH_ZSTD -lzstd"
  895. CPPFLAGS="$CPPFLAGS -I$WITH_ZSTD"
  896. else
  897. AC_CHECK_HEADERS([zstd.h], [],
  898. [AC_MSG_ERROR([zstd headers not found, install them or build without --with-zstd])]
  899. )
  900. AC_CHECK_LIB([zstd], [ZSTD_versionNumber],
  901. [ZSTD_LIB=-lzstd],
  902. [AC_MSG_ERROR([zstd library not found, install it or build without --with-zstd])]
  903. )
  904. fi
  905. AC_DEFINE([HAVE_ZSTD], [1], [libzstd])
  906. AC_DEFINE([HAVE_ZSTD_H], [1])
  907. AC_SUBST([ZSTD_LIB])
  908. fi
  909. dnl bzip2
  910. AC_MSG_NOTICE([----------------------------------------])
  911. AC_MSG_CHECKING([for bzip2 support])
  912. AC_ARG_WITH([bzip2],
  913. [AS_HELP_STRING([--with-bzip2],
  914. [Enable bzip2 support for mod_deflate]
  915. )],
  916. [WITH_BZIP2=$withval],
  917. [WITH_BZIP2=no]
  918. )
  919. AC_MSG_RESULT([$WITH_BZIP2])
  920. if test "$WITH_BZIP2" != no; then
  921. if test "$WITH_BZIP2" != yes; then
  922. BZ_LIB="-L$WITH_BZIP2 -lbz2"
  923. CPPFLAGS="$CPPFLAGS -I$WITH_BZIP2"
  924. else
  925. AC_CHECK_HEADERS([bzlib.h], [], [
  926. AC_MSG_ERROR([bzip2 headers not found, install them or build without --with-bzip2])
  927. ])
  928. AC_CHECK_LIB([bz2], [BZ2_bzCompress],
  929. [BZ_LIB=-lbz2],
  930. [AC_MSG_ERROR([bzip2 library not found, install it or build without --with-bzip2])]
  931. )
  932. fi
  933. AC_DEFINE([HAVE_LIBBZ2], [1], [libbz2])
  934. AC_DEFINE([HAVE_BZLIB_H], [1])
  935. AC_SUBST([BZ_LIB])
  936. fi
  937. dnl brotli
  938. AC_MSG_NOTICE([----------------------------------------])
  939. AC_MSG_CHECKING([for brotli support])
  940. AC_ARG_WITH([brotli],
  941. [AS_HELP_STRING([--with-brotli],
  942. [Enable brotli support for mod_deflate]
  943. )],
  944. [WITH_BROTLI=$withval],
  945. [WITH_BROTLI=no]
  946. )
  947. AC_MSG_RESULT([$WITH_BROTLI])
  948. if test "$WITH_BROTLI" != no; then
  949. if test "$WITH_BROTLI" != yes; then
  950. BROTLI_LIBS="-L$WITH_BROTLI -lbrotlienc"
  951. CPPFLAGS="$CPPFLAGS -I$WITH_BROTLI"
  952. else
  953. PKG_CHECK_MODULES([BROTLI], [libbrotlienc], [], [
  954. AC_MSG_ERROR([brotli not found, install it or build without --with-brotli])
  955. ])
  956. fi
  957. AC_DEFINE([HAVE_BROTLI_ENCODE_H], [1], [brotli/encode.h])
  958. AC_DEFINE([HAVE_BROTLI], [1], [libbrotlienc])
  959. AC_SUBST([BROTLI_CFLAGS])
  960. AC_SUBST([BROTLI_LIBS])
  961. fi
  962. dnl Check for fam/gamin
  963. AC_MSG_NOTICE([----------------------------------------])
  964. AC_MSG_CHECKING([for FAM])
  965. AC_ARG_WITH([fam],
  966. [AS_HELP_STRING([--with-fam],
  967. [fam/gamin for reducing number of stat() calls]
  968. )],
  969. [WITH_FAM=$withval],
  970. [WITH_FAM=no]
  971. )
  972. AC_MSG_RESULT([$WITH_FAM])
  973. dnl "$ac_cv_func_kqueue" is set further below
  974. case "$host_os" in
  975. *bsd*|*darwin* ) WITH_FAM=no ;;
  976. * ) ;;
  977. esac
  978. if test "$ac_cv_header_sys_inotify_h" != no; then
  979. WITH_FAM=no
  980. fi
  981. if test "$WITH_FAM" != no; then
  982. if test "$WITH_FAM" != yes; then
  983. FAM_LIBS="-L$WITH_FAM -lfam"
  984. CPPFLAGS="$CPPFLAGS -I$WITH_FAM"
  985. else
  986. AC_CHECK_LIB([fam], [FAMOpen2], [
  987. AC_CHECK_HEADERS([fam.h], [FAM_LIBS=-lfam])
  988. ])
  989. dnl fam has no pkg-config so far, so just search for gamin as fallback
  990. if test -z "$FAM_LIBS"; then
  991. PKG_CHECK_MODULES([FAM], [gamin >= 0.1.0])
  992. fi
  993. fi
  994. if test -z "$FAM_LIBS"; then
  995. AC_MSG_ERROR([fam/gamin headers and/or libs were not found, install them or build without --with-fam])
  996. fi
  997. OLD_LIBS=$LIBS
  998. LIBS=$FAM_LIBS
  999. AC_CHECK_FUNCS([FAMNoExists])
  1000. LIBS=$OLD_LIBS
  1001. AC_DEFINE([HAVE_LIBFAM], [1], [libfam])
  1002. AC_DEFINE([HAVE_FAM_H], [1], [fam.h])
  1003. AC_SUBST([FAM_LIBS])
  1004. fi
  1005. dnl webdav props (xml2 and sqlite3)
  1006. AC_MSG_NOTICE([----------------------------------------])
  1007. AC_MSG_CHECKING([for properties in mod_webdav])
  1008. AC_ARG_WITH([webdav-props],
  1009. [AS_HELP_STRING([--with-webdav-props], [properties in mod_webdav])],
  1010. [WITH_WEBDAV_PROPS=$withval],
  1011. [WITH_WEBDAV_PROPS=no]
  1012. )
  1013. AC_MSG_RESULT([$WITH_WEBDAV_PROPS])
  1014. if test "$WITH_WEBDAV_PROPS" != no; then
  1015. AC_MSG_CHECKING([for libxml2])
  1016. AC_ARG_WITH([libxml],
  1017. [AS_HELP_STRING([--with-libxml],
  1018. [libxml2 for properties in mod_webdav]
  1019. )],
  1020. [WITH_LIBXML=$withval],
  1021. [WITH_LIBXML=yes]
  1022. )
  1023. AC_MSG_RESULT([$WITH_LIBXML])
  1024. if test "$WITH_LIBXML" = no; then
  1025. AC_MSG_ERROR([--with-webdav-props requires libxml])
  1026. fi
  1027. if test "$WITH_LIBXML" != yes; then
  1028. XML_LIBS="-L$WITH_LIBXML/.libs -lxml2"
  1029. XML_CFLAGS="-I$WITH_LIBXML/include"
  1030. else
  1031. PKG_CHECK_MODULES([XML], [libxml-2.0], [], [
  1032. AC_MSG_ERROR([libxml2 not found, install it or build without --with-webdav-props])
  1033. ])
  1034. fi
  1035. AC_DEFINE([HAVE_LIBXML2], [1], [libxml2])
  1036. AC_DEFINE([HAVE_LIBXML_H], [1], [libxml.h])
  1037. AC_SUBST([XML_LIBS])
  1038. AC_SUBST([XML_CFLAGS])
  1039. AC_MSG_CHECKING([for sqlite])
  1040. AC_ARG_WITH([sqlite],
  1041. [AS_HELP_STRING([--with-sqlite],
  1042. [sqlite for properties in mod_webdav]
  1043. )],
  1044. [WITH_SQLITE=$withval],
  1045. [WITH_SQLITE=yes]
  1046. )
  1047. AC_MSG_RESULT([$WITH_SQLITE])
  1048. if test "$WITH_SQLITE" = no; then
  1049. AC_MSG_ERROR([--with-webdav-props requires sqlite])
  1050. fi
  1051. if test "$WITH_SQLITE" != yes; then
  1052. SQLITE_LIBS="-L$WITH_SQLITE/.libs -lsqlite3"
  1053. SQLITE_CFLAGS="-I$WITH_SQLITE"
  1054. else
  1055. PKG_CHECK_MODULES([SQLITE], [sqlite3], [], [
  1056. AC_MSG_ERROR([sqlite3 not found, install it or build without --with-webdav-props])
  1057. ])
  1058. fi
  1059. AC_DEFINE([HAVE_SQLITE3], [1], [libsqlite3])
  1060. AC_DEFINE([HAVE_SQLITE3_H], [1], [sqlite3.h])
  1061. AC_SUBST([SQLITE_LIBS])
  1062. AC_SUBST([SQLITE_CFLAGS])
  1063. fi
  1064. dnl webdav locks (uuid)
  1065. AC_MSG_NOTICE([----------------------------------------])
  1066. AC_MSG_CHECKING([for locks in mod_webdav])
  1067. AC_ARG_WITH([webdav-locks],
  1068. [AS_HELP_STRING([--with-webdav-locks],
  1069. [locks in mod_webdav (requires webdav properties)]
  1070. )],
  1071. [WITH_WEBDAV_LOCKS=$withval],
  1072. [WITH_WEBDAV_LOCKS=no]
  1073. )
  1074. AC_MSG_RESULT([$WITH_WEBDAV_LOCKS])
  1075. if test "$WITH_WEBDAV_LOCKS" != no; then
  1076. if test "$WITH_WEBDAV_PROPS" = no; then
  1077. AC_MSG_ERROR([--with-webdav-locks requires --with-webdav-props])
  1078. fi
  1079. AC_MSG_CHECKING([for libuuid])
  1080. AC_ARG_WITH([uuid],
  1081. [AS_HELP_STRING([--with-uuid], [uuid for locks in mod_webdav])],
  1082. [WITH_UUID=$withval],
  1083. [WITH_UUID=yes]
  1084. )
  1085. AC_MSG_RESULT([$WITH_UUID])
  1086. if test "$WITH_UUID" = no; then
  1087. AC_MSG_ERROR([--with-webdav-locks requires uuid])
  1088. fi
  1089. if test "$WITH_UUID" != yes; then
  1090. UUID_LIBS="-L$WITH_UUID -luuid"
  1091. CPPFLAGS="$CPPFLAGS -I$WITH_UUID"
  1092. else
  1093. AC_CHECK_LIB([uuid], [uuid_unparse],
  1094. [UUID_LIBS=-luuid],
  1095. [AC_MSG_ERROR([uuid lib not found, install it or build without --with-webdav-locks])]
  1096. )
  1097. AC_CHECK_HEADERS([uuid/uuid.h], [],
  1098. [AC_MSG_ERROR([uuid headers not found, install them or build without --with-webdav-locks])]
  1099. )
  1100. fi
  1101. AC_DEFINE([HAVE_LIBUUID], [1], [libuuid])
  1102. AC_DEFINE([HAVE_UUID_UUID_H], [1], [uuid/uuid.h is available])
  1103. AC_SUBST([UUID_LIBS])
  1104. fi
  1105. dnl xxhash
  1106. AC_MSG_NOTICE([----------------------------------------])
  1107. AC_MSG_CHECKING([for xxhash support])
  1108. AC_ARG_WITH([xxhash],
  1109. [AS_HELP_STRING([--with-xxhash],
  1110. [Enable system-provided xxhash]
  1111. )],
  1112. [WITH_XXHASH=$withval],
  1113. [WITH_XXHASH=no]
  1114. )
  1115. AC_MSG_RESULT([$WITH_XXHASH])
  1116. if test "$WITH_XXHASH" != no; then
  1117. if test "$WITH_XXHASH" != yes; then
  1118. XXHASH_LIBS="-L$WITH_XXHASH -lxxhash"
  1119. CPPFLAGS="$CPPFLAGS -I$WITH_XXHASH"
  1120. else
  1121. PKG_CHECK_MODULES([XXHASH], [libxxhash], [], [
  1122. AC_CHECK_LIB([xxhash], [XXH_versionNumber],
  1123. [XXHASH_LIBS=-lxxhash],
  1124. [AC_MSG_ERROR([xxhash not found, install it or build without --with-xxhash])]
  1125. )
  1126. AC_CHECK_HEADERS([xxhash.h], [],
  1127. [AC_MSG_ERROR([xxhash not found, install it or build without --with-xxhash])]
  1128. )
  1129. ])
  1130. fi
  1131. AC_DEFINE([HAVE_XXHASH_H], [1], [xxhash.h])
  1132. AC_DEFINE([HAVE_XXHASH], [1], [xxhash])
  1133. AC_SUBST([XXHASH_CFLAGS])
  1134. AC_SUBST([XXHASH_LIBS])
  1135. fi
  1136. dnl Check for maxminddb
  1137. AC_MSG_NOTICE([----------------------------------------])
  1138. AC_MSG_CHECKING([for maxminddb])
  1139. AC_ARG_WITH([maxminddb],
  1140. [AS_HELP_STRING([--with-maxminddb], [IP-based geolocation lookup])],
  1141. [WITH_MAXMINDDB=$withval],
  1142. [WITH_MAXMINDDB=no]
  1143. )
  1144. AC_MSG_RESULT([$WITH_MAXMINDDB])
  1145. if test "$WITH_MAXMINDDB" != no; then
  1146. if test "$WITH_MAXMINDDB" != yes; then
  1147. MAXMINDDB_LIB="-L$WITH_MAXMINDDB -lmaxminddb"
  1148. CPPFLAGS="$CPPFLAGS -I$WITH_MAXMINDDB"
  1149. else
  1150. AC_CHECK_LIB([maxminddb], [MMDB_open],
  1151. [MAXMINDDB_LIB=-lmaxminddb],
  1152. [AC_MSG_ERROR([maxminddb lib not found, install it or build without --with-maxminddb])]
  1153. )
  1154. AC_CHECK_HEADERS([maxminddb.h], [],
  1155. [AC_MSG_ERROR([maxminddb headers not found, install them or build without --with-maxminddb])]
  1156. )
  1157. fi
  1158. AC_DEFINE([HAVE_MAXMINDDB], [1], [libmaxminddb])
  1159. AC_DEFINE([HAVE_MAXMINDDB_H], [1])
  1160. AC_SUBST([MAXMINDDB_LIB])
  1161. fi
  1162. AM_CONDITIONAL([BUILD_WITH_MAXMINDDB], [test "$WITH_MAXMINDDB" != no])
  1163. dnl Check for lua
  1164. AC_MSG_NOTICE([----------------------------------------])
  1165. AC_MSG_CHECKING([if lua-support is requested])
  1166. AC_ARG_WITH([lua],
  1167. [AS_HELP_STRING([--with-lua], [lua engine for mod_magnet])],
  1168. [WITH_LUA=$withval],
  1169. [WITH_LUA=no]
  1170. )
  1171. AC_MSG_RESULT([$WITH_LUA])
  1172. if test "$WITH_LUA" != no; then
  1173. found_lua=0
  1174. if test "$WITH_LUA" != yes; then
  1175. PKG_CHECK_MODULES([LUA], [$WITH_LUA >= 5.1],
  1176. [found_lua=1],
  1177. [AC_MSG_NOTICE([Couldn\'t find requested lua pkg-config module $WITH_LUA])]
  1178. )
  1179. if test "$found_lua" = "0"; then
  1180. LUA_LIBS="-L$WITH_LUA -llua"
  1181. LUA_CFLAGS="-I$WITH_LUA"
  1182. fi
  1183. else
  1184. for luaname in lua5.4 lua-5.4 lua5.3 lua-5.3 lua5.2 lua-5.2 lua5.1 lua-5.1 lua; do
  1185. if test "$found_lua" = "0"; then
  1186. PKG_CHECK_MODULES([LUA], [$luaname >= 5.1],
  1187. [found_lua=1],
  1188. [AC_MSG_NOTICE([Couldn\'t find $luaname])]
  1189. )
  1190. fi
  1191. done
  1192. if test "$found_lua" = "0"; then
  1193. AC_MSG_ERROR([Couldn\'t find any lua pkg-config module])
  1194. fi
  1195. fi
  1196. AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
  1197. AC_SUBST([LUA_LIBS])
  1198. AC_SUBST([LUA_CFLAGS])
  1199. fi
  1200. AM_CONDITIONAL([BUILD_WITH_LUA], [test "$WITH_LUA" != no])
  1201. dnl "--with-FEATURE" blocks end
  1202. AC_MSG_NOTICE([----------------------------------------])
  1203. dnl search for crypt_r and (fallback) for crypt
  1204. save_LIBS=$LIBS
  1205. LIBS=
  1206. found_crypt=no
  1207. AC_SEARCH_LIBS([crypt_r], [crypt],
  1208. [
  1209. AC_DEFINE([HAVE_CRYPT_R], [1], [crypt_r])
  1210. AC_CHECK_HEADERS([crypt.h])
  1211. CRYPT_LIB=$LIBS
  1212. found_crypt=crypt_r
  1213. ],
  1214. [AC_SEARCH_LIBS([crypt], [crypt], [
  1215. AC_DEFINE([HAVE_CRYPT], [1], [crypt])
  1216. AC_CHECK_HEADERS([crypt.h])
  1217. CRYPT_LIB=$LIBS
  1218. found_crypt=crypt
  1219. ])]
  1220. )
  1221. LIBS=$save_LIBS
  1222. AC_SUBST([CRYPT_LIB])
  1223. AC_MSG_CHECKING([crypt_r/crypt support])
  1224. AC_MSG_RESULT([$found_crypt])
  1225. dnl check whether sendfilev needs -lsendfile
  1226. case "$host_os" in
  1227. *sunos*|*solaris* )
  1228. AC_MSG_NOTICE([----------------------------------------])
  1229. save_LIBS=$LIBS
  1230. LIBS=
  1231. have_sendfilev=no
  1232. AC_SEARCH_LIBS([sendfilev], [sendfile], [
  1233. if test -z "$LIBS"; then
  1234. have_sendfilev=yes
  1235. else
  1236. have_sendfilev=$LIBS
  1237. fi
  1238. SENDFILE_LIB=$LIBS
  1239. AC_DEFINE([HAVE_SENDFILEV], [1], [solaris sendfilev])
  1240. ])
  1241. LIBS=$save_LIBS
  1242. AC_SUBST([SENDFILE_LIB])
  1243. AC_MSG_CHECKING([solaris sendfilev present])
  1244. AC_MSG_RESULT([$have_sendfilev])
  1245. ;;
  1246. * ) ;;
  1247. esac
  1248. AC_MSG_NOTICE([----------------------------------------])
  1249. case "$host_os" in
  1250. *mingw* ) LIBS="$LIBS -lwsock32" ;;
  1251. * ) ;;
  1252. esac
  1253. AC_CHECK_FUNCS([\
  1254. arc4random_buf \
  1255. chroot \
  1256. clock_gettime \
  1257. copy_file_range \
  1258. explicit_bzero \
  1259. explicit_memset \
  1260. fork \
  1261. getloadavg \
  1262. getuid \
  1263. gmtime_r \
  1264. inet_aton \
  1265. inet_pton \
  1266. issetugid \
  1267. jrand48 \
  1268. localtime_r \
  1269. lstat \
  1270. madvise \
  1271. mempcpy \
  1272. memset_s \
  1273. mkostemp \
  1274. pipe2 \
  1275. poll \
  1276. pread \
  1277. pwrite \
  1278. sendfile \
  1279. sendfile64 \
  1280. splice \
  1281. srandom \
  1282. strerror_r \
  1283. timegm \
  1284. ])
  1285. AC_CHECK_HEADERS([linux/random.h], [AC_CHECK_FUNCS([getrandom])])
  1286. AC_CHECK_HEADERS([malloc.h], [AC_CHECK_FUNCS([malloc_trim mallopt])])
  1287. AC_CHECK_HEADERS([signal.h], [AC_CHECK_FUNCS([signal sigaction])])
  1288. AC_CHECK_HEADERS([sys/epoll.h], [AC_CHECK_FUNCS([epoll_ctl])])
  1289. AC_CHECK_HEADERS([sys/event.h], [AC_CHECK_FUNCS([kqueue])])
  1290. AC_CHECK_HEADERS([sys/mman.h], [AC_CHECK_FUNCS([mmap])])
  1291. AC_CHECK_HEADERS([sys/random.h], [AC_CHECK_FUNCS([getentropy])])
  1292. AC_CHECK_HEADERS([sys/resource.h], [AC_CHECK_FUNCS([getrlimit])])
  1293. AC_CHECK_HEADERS([sys/uio.h], [AC_CHECK_FUNCS([preadv pwritev writev])])
  1294. if test "$ac_cv_func_poll" = no; then
  1295. AC_CHECK_HEADERS([sys/select.h])
  1296. AC_CHECK_FUNCS([select])
  1297. fi
  1298. case "$host_os" in
  1299. *sunos*|*solaris* )
  1300. AC_CHECK_HEADERS([priv.h], [AC_CHECK_FUNCS([setpflags])])
  1301. AC_CHECK_HEADERS([port.h], [AC_CHECK_FUNCS([port_create])])
  1302. AC_CHECK_HEADERS([\
  1303. sys/devpoll.h \
  1304. sys/filio.h \
  1305. ])
  1306. ;;
  1307. * ) ;;
  1308. esac
  1309. AC_MSG_NOTICE([----------------------------------------])
  1310. AC_MSG_CHECKING([if weak symbols are supported])
  1311. AC_LINK_IFELSE(
  1312. [AC_LANG_PROGRAM([[
  1313. __attribute__((weak)) void __dummy(void *x) { }
  1314. void f(void *x) { __dummy(x); }
  1315. ]])],
  1316. [
  1317. AC_MSG_RESULT([yes])
  1318. AC_DEFINE([HAVE_WEAK_SYMBOLS], [1], [weak symbols are supported])
  1319. ],
  1320. [AC_MSG_RESULT([no])]
  1321. )
  1322. AC_MSG_NOTICE([----------------------------------------])
  1323. AC_MSG_CHECKING([for Large File System support])
  1324. AC_ARG_ENABLE([lfs],
  1325. [AS_HELP_STRING([--enable-lfs],
  1326. [Turn on Large File System (default)]
  1327. )],
  1328. [
  1329. case "${enableval}" in
  1330. yes) ENABLE_LFS=yes ;;
  1331. no) ENABLE_LFS=no ;;
  1332. *) AC_MSG_ERROR([bad value ${enableval} for --enable-lfs]) ;;
  1333. esac
  1334. ],
  1335. [ ENABLE_LFS=yes ]
  1336. )
  1337. AC_MSG_RESULT([$ENABLE_LFS])
  1338. if test "$ENABLE_LFS" = yes; then
  1339. CPPFLAGS="${CPPFLAGS} -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES"
  1340. AC_SYS_LARGEFILE
  1341. fi
  1342. dnl check if sendfile works
  1343. if test "$ac_cv_func_sendfile" = yes; then
  1344. AC_MSG_NOTICE([----------------------------------------])
  1345. AC_MSG_CHECKING([if sendfile works])
  1346. if test "$cross_compiling" = no; then
  1347. AC_RUN_IFELSE([AC_LANG_SOURCE(
  1348. [[
  1349. #ifdef HAVE_SYS_SENDFILE_H
  1350. #include <sys/sendfile.h>
  1351. #endif /* HAVE_SYS_SENDFILE_H */
  1352. #include <errno.h>
  1353. #include <sys/types.h>
  1354. #include <sys/socket.h>
  1355. #include <sys/uio.h>
  1356. int main() {
  1357. int o = 0;
  1358. if (-1 == sendfile(-1, 0, &o, 0) && errno == ENOSYS) return -1;
  1359. return 0;
  1360. }
  1361. ]])],
  1362. [AC_MSG_RESULT([yes])],
  1363. [
  1364. AC_MSG_RESULT([no])
  1365. AC_DEFINE([HAVE_SENDFILE_BROKEN], [1], [broken sendfile])
  1366. ],[]
  1367. )
  1368. fi
  1369. fi
  1370. dnl Check for IPv6 support
  1371. AC_MSG_NOTICE([----------------------------------------])
  1372. AC_ARG_ENABLE([ipv6],
  1373. [AS_HELP_STRING([--disable-ipv6], [disable IPv6 support])],
  1374. [
  1375. case "${enableval}" in
  1376. yes) ipv6=true ;;
  1377. no) ipv6=false ;;
  1378. *) AC_MSG_ERROR([bad value ${enableval} for --enable-ipv6]) ;;
  1379. esac
  1380. ],
  1381. [ipv6=true]
  1382. )
  1383. if test "$ipv6" = true; then
  1384. AC_CACHE_CHECK([for IPv6 support], [ac_cv_ipv6_support], [
  1385. AC_LINK_IFELSE([AC_LANG_PROGRAM(
  1386. [[
  1387. #include <sys/types.h>
  1388. #include <sys/socket.h>
  1389. #include <netinet/in.h>
  1390. ]],
  1391. [[
  1392. struct sockaddr_in6 s; struct in6_addr t=in6addr_any; int i=AF_INET6; s; t.s6_addr[0] = 0;
  1393. ]])],
  1394. [ac_cv_ipv6_support=yes],
  1395. [ac_cv_ipv6_support=no]
  1396. )
  1397. ])
  1398. if test "$ac_cv_ipv6_support" = yes; then
  1399. AC_DEFINE([HAVE_IPV6], [1], [Whether to enable IPv6 support])
  1400. else
  1401. AC_MSG_ERROR([IPv6 seems broken. Fix it or build with --disable-ipv6])
  1402. fi
  1403. fi
  1404. # disable mmap by default
  1405. # lighttpd may always use mmap with files it owns (created tmp files)
  1406. AC_MSG_NOTICE([----------------------------------------])
  1407. AC_MSG_CHECKING([use mmap if available])
  1408. AC_ARG_ENABLE([mmap],
  1409. [AS_HELP_STRING([--enable-mmap],
  1410. [use mmap if available]
  1411. )],
  1412. [
  1413. case "${enableval}" in
  1414. yes) mmap=true ;;
  1415. no) mmap=false ;;
  1416. *) AC_MSG_ERROR([bad value ${enableval} for --enable-mmap]) ;;
  1417. esac
  1418. ],
  1419. [mmap=false]
  1420. )
  1421. AC_MSG_RESULT([$mmap])
  1422. if test "$mmap" = true; then
  1423. AC_DEFINE([ENABLE_MMAP], [1], [Use mmap if available])
  1424. fi
  1425. AC_MSG_NOTICE([----------------------------------------])
  1426. dnl check for extra compiler options (warning options)
  1427. if test "${GCC}" = yes; then
  1428. TRY_CFLAGS([-pipe -Wall -W -Wshadow -pedantic])
  1429. fi
  1430. AC_ARG_ENABLE([extra-warnings],
  1431. [AS_HELP_STRING([--enable-extra-warnings],
  1432. [enable extra warnings (gcc specific)]
  1433. )],
  1434. [
  1435. case "${enableval}" in
  1436. error) extrawarnings=error ;;
  1437. yes) extrawarnings=true ;;
  1438. no) extrawarnings=false ;;
  1439. *) AC_MSG_ERROR([bad value ${enableval} for --enable-extra-warnings]) ;;
  1440. esac
  1441. ],
  1442. [extrawarnings=false]
  1443. )
  1444. if test "$extrawarnings" = true || test "$extrawarnings" = error; then
  1445. TRY_CFLAGS([-g -O2 -g2 -Wall -Wmissing-declarations -Wcast-align -Wsign-compare -Wnested-externs -Wpointer-arith -D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security])
  1446. TRY_CFLAGS([-fstack-protector-strong])
  1447. case "$host_os" in
  1448. *darwin* ) ;;
  1449. * ) TRY_LDFLAGS([-Wl,--as-needed]) ;;
  1450. esac
  1451. if test "$extrawarnings" = error; then
  1452. AS_VAR_APPEND([CFLAGS], [" -Werror"])
  1453. case "$host_os" in
  1454. *darwin* ) ;;
  1455. * ) AS_VAR_APPEND([LDFLAGS], [" -Wl,--fatal-warnings"]) ;;
  1456. esac
  1457. fi
  1458. fi
  1459. dnl build version-id
  1460. LIGHTTPD_VERSION_ID=m4_format([0x%x%02x%02x], m4_unquote(m4_split(AC_PACKAGE_VERSION, [\.])))
  1461. AC_DEFINE_UNQUOTED([LIGHTTPD_VERSION_ID], [$LIGHTTPD_VERSION_ID], [lighttpd-version-id])
  1462. AC_CONFIG_FILES([\
  1463. distribute.sh \
  1464. doc/config/conf.d/Makefile \
  1465. doc/config/Makefile \
  1466. doc/config/vhosts.d/Makefile \
  1467. doc/Makefile \
  1468. doc/outdated/Makefile \
  1469. doc/scripts/Makefile \
  1470. doc/systemd/Makefile \
  1471. Makefile \
  1472. src/Makefile \
  1473. tests/docroot/Makefile \
  1474. tests/Makefile \
  1475. ])
  1476. AC_OUTPUT
  1477. do_build="\
  1478. mod_access \
  1479. mod_accesslog \
  1480. mod_ajp13 \
  1481. mod_alias \
  1482. mod_auth \
  1483. mod_authn_file \
  1484. mod_cgi \
  1485. mod_deflate \
  1486. mod_dirlisting \
  1487. mod_evhost \
  1488. mod_expire \
  1489. mod_extforward \
  1490. mod_fastcgi \
  1491. mod_indexfile \
  1492. mod_proxy \
  1493. mod_redirect \
  1494. mod_rewrite \
  1495. mod_rrdtool \
  1496. mod_scgi \
  1497. mod_secdownload \
  1498. mod_setenv \
  1499. mod_simple_vhost \
  1500. mod_sockproxy \
  1501. mod_ssi \
  1502. mod_staticfile \
  1503. mod_status \
  1504. mod_userdir \
  1505. mod_usertrack \
  1506. mod_vhostdb \
  1507. mod_webdav \
  1508. mod_wstunnel \
  1509. "
  1510. lighty_track_feature() {
  1511. if eval "$3"; then
  1512. enable_feature="$enable_feature $1"
  1513. do_build="$do_build $2"
  1514. else
  1515. disable_feature="$disable_feature $1"
  1516. no_build="$no_build $2"
  1517. fi
  1518. }
  1519. lighty_track_feature "regex-conditionals" "" \
  1520. 'test "$WITH_PCRE" != no || test "$WITH_PCRE2" != no'
  1521. lighty_track_feature "mysql" "mod_vhostdb_mysql" \
  1522. 'test "$WITH_MYSQL" != no'
  1523. lighty_track_feature "postgresql" "mod_vhostdb_pgsql" \
  1524. 'test "$WITH_PGSQL" != no'
  1525. lighty_track_feature "dbi" "mod_authn_dbi mod_vhostdb_dbi" \
  1526. 'test "$WITH_DBI" != no'
  1527. lighty_track_feature "lua" "mod_magnet" \
  1528. 'test "$WITH_LUA" != no'
  1529. lighty_track_feature "maxminddb" "mod_maxminddb" \
  1530. 'test "$WITH_MAXMINDDB" != no'
  1531. lighty_track_feature "compress-gzip compress-deflate" "" \
  1532. 'test "$WITH_ZLIB" != no'
  1533. lighty_track_feature "compress-bzip2" "" \
  1534. 'test "$WITH_BZIP2" != no'
  1535. lighty_track_feature "compress-brotli" "" \
  1536. 'test "$WITH_BROTLI" != no'
  1537. lighty_track_feature "kerberos" "mod_authn_gssapi" \
  1538. 'test "$WITH_KRB5" != no'
  1539. lighty_track_feature "ldap" "mod_authn_ldap mod_vhostdb_ldap" \
  1540. 'test "$WITH_LDAP" != no'
  1541. lighty_track_feature "pam" "mod_authn_pam" \
  1542. 'test "$WITH_PAM" != no'
  1543. lighty_track_feature "network-openssl" "mod_openssl" \
  1544. 'test "$WITH_OPENSSL" != no'
  1545. lighty_track_feature "network-mbedtls" "mod_mbedtls" \
  1546. 'test "$WITH_MBEDTLS" != no'
  1547. lighty_track_feature "network-gnutls" "mod_gnutls" \
  1548. 'test "$WITH_GNUTLS" != no'
  1549. lighty_track_feature "network-nss" "mod_nss" \
  1550. 'test "$WITH_NSS" != no'
  1551. lighty_track_feature "network-wolfssl" "mod_wolfssl" \
  1552. 'test "$WITH_WOLFSSL" != no'
  1553. lighty_track_feature "auth-crypt" "" \
  1554. 'test "$found_crypt" != no'
  1555. lighty_track_feature "network-ipv6" "" \
  1556. 'test "$ac_cv_ipv6_support" != no'
  1557. lighty_track_feature "large-files" "" \
  1558. 'test "$ENABLE_LFS" = yes'
  1559. case "$host_os" in
  1560. *linux* )
  1561. lighty_track_feature "stat-cache-inotify" "" \
  1562. 'test "$ac_cv_header_sys_inotify_h" != no'
  1563. ;;
  1564. * ) ;;
  1565. esac
  1566. case "$host_os" in
  1567. *bsd*|*darwin* )
  1568. lighty_track_feature "stat-cache-kqueue" "" \
  1569. 'test "$ac_cv_func_kqueue" != no'
  1570. ;;
  1571. * ) ;;
  1572. esac
  1573. case "$host_os" in
  1574. *bsd*|*darwin*|*linux* )
  1575. ;;
  1576. * )
  1577. lighty_track_feature "stat-cache-fam" "" \
  1578. 'test "$WITH_FAM" != no'
  1579. ;;
  1580. esac
  1581. lighty_track_feature "webdav-properties" "" \
  1582. 'test "$WITH_WEBDAV_PROPS" != no'
  1583. lighty_track_feature "webdav-locks" "" \
  1584. 'test "$WITH_WEBDAV_LOCKS" != no'
  1585. dnl output
  1586. $ECHO
  1587. $ECHO "Plugins:"
  1588. $ECHO
  1589. $ECHO "enabled: "
  1590. for p in $do_build; do
  1591. $ECHO " $p"
  1592. done | sort
  1593. $ECHO "disabled: "
  1594. for p in $no_build; do
  1595. $ECHO " $p"
  1596. done | sort
  1597. $ECHO
  1598. $ECHO "Features:"
  1599. $ECHO
  1600. $ECHO "enabled: "
  1601. for p in $enable_feature; do
  1602. $ECHO " $p"
  1603. done | sort
  1604. $ECHO "disabled: "
  1605. for p in $disable_feature; do
  1606. $ECHO " $p"
  1607. done | sort
  1608. $ECHO