acinclude.m4 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660
  1. dnl aclocal.m4
  2. dnl macros autoconf uses when building configure from configure.in
  3. dnl
  4. dnl
  5. dnl EGG_CHECK_CC()
  6. dnl
  7. AC_DEFUN([EGG_CHECK_CC],
  8. [
  9. if test "${cross_compiling-x}" = "x"
  10. then
  11. cat << 'EOF' >&2
  12. configure: error:
  13. This system does not appear to have a working C compiler.
  14. A working C compiler is required to compile Eggdrop.
  15. EOF
  16. exit 1
  17. fi
  18. if test -n "$GXX"; then
  19. CXXFLAGS="$CXXFLAGS -O3"
  20. fi
  21. ])
  22. dnl EGG_IPV6_OPTIONS()
  23. dnl
  24. AC_DEFUN([EGG_IPV6_OPTIONS],
  25. [
  26. AC_MSG_CHECKING(whether or not you disabled IPv6 support)
  27. AC_ARG_ENABLE(ipv6, [ --disable-ipv6 disable IPv6 support],
  28. [ ac_cv_dipv6="yes"
  29. AC_MSG_RESULT(yes)
  30. ],
  31. [ ac_cv_dipv6="no"
  32. if test "$egg_cv_ipv6_supported" = "no"; then
  33. ac_cv_dipv6="no"
  34. fi
  35. AC_MSG_RESULT($ac_cv_dipv6)
  36. ])
  37. if ! test "$EGG_CYGWIN" = "yes"; then
  38. if test "$ac_cv_dipv6" = "no"; then
  39. AC_DEFINE(USE_IPV6, 1, [Define if you want ipv6 support])
  40. fi
  41. fi
  42. ])
  43. dnl EGG_CHECK_SOCKLEN_T()
  44. dnl
  45. AC_DEFUN([EGG_CHECK_SOCKLEN_T],
  46. [
  47. AC_MSG_CHECKING(for socklen_t)
  48. AC_CACHE_VAL(egg_cv_socklen_t,[
  49. AC_TRY_RUN([
  50. #include <unistd.h>
  51. #include <sys/types.h>
  52. #include <sys/socket.h>
  53. #include <netinet/in.h>
  54. #include <arpa/inet.h>
  55. int main()
  56. {
  57. socklen_t test = sizeof(int);
  58. return 0;
  59. }
  60. ],
  61. egg_cv_socklen_t=yes, egg_cv_socklen_t=no, egg_cv_socklen_t=no)])
  62. if test "$egg_cv_socklen_t" = "yes"; then
  63. AC_DEFINE(HAVE_SOCKLEN_T, 1, [Define if you have support for socklen_t])
  64. AC_MSG_RESULT(yes)
  65. else
  66. AC_MSG_RESULT(no)
  67. fi
  68. ])
  69. dnl EGG_CHECK_CCPIPE()
  70. dnl
  71. dnl This function checks whether or not the compiler supports the `-pipe' flag,
  72. dnl which speeds up the compilation.
  73. dnl
  74. AC_DEFUN([EGG_CHECK_CCPIPE],
  75. [
  76. if test -n "$GXX" && test -z "$no_pipe"; then
  77. AC_CACHE_CHECK([whether the compiler understands -pipe], egg_cv_var_ccpipe, [
  78. ac_old_CXX="$CXX"
  79. CXX="$CXX -pipe"
  80. AC_COMPILE_IFELSE([[
  81. int main ()
  82. {
  83. return(0);
  84. }
  85. ]], [
  86. egg_cv_var_ccpipe="yes"
  87. ], [
  88. egg_cv_var_ccpipe="no"
  89. ])
  90. CXX="$ac_old_CXX"
  91. ])
  92. if test "$egg_cv_var_ccpipe" = "yes"; then
  93. CXX="$CXX -pipe"
  94. fi
  95. fi
  96. ])
  97. dnl EGG_CHECK_CCWALL()
  98. dnl
  99. dnl See if the compiler supports -Wall.
  100. dnl
  101. AC_DEFUN([EGG_CHECK_CCWALL],
  102. [
  103. if test -n "$GXX" && test -z "$no_wall"; then
  104. AC_CACHE_CHECK([whether the compiler understands -Wall], egg_cv_var_ccwall, [
  105. ac_old_CXXFLAGS="$CXXFLAGS"
  106. CXXFLAGS="$CXXFLAGS -Wall"
  107. AC_COMPILE_IFELSE([[
  108. int main ()
  109. {
  110. return(0);
  111. }
  112. ]], [
  113. egg_cv_var_ccwall="yes"
  114. ], [
  115. egg_cv_var_ccwall="no"
  116. ])
  117. CXXFLAGS="$ac_old_CXXFLAGS"
  118. ])
  119. if test "$egg_cv_var_ccwall" = "yes"; then
  120. CXXFLAGS="$CXXFLAGS -Wall"
  121. fi
  122. fi
  123. ])
  124. dnl EGG_CHECK_CCSTATIC()
  125. dnl
  126. dnl Checks whether the compiler supports the `-static' flag.
  127. AC_DEFUN([EGG_CHECK_CCSTATIC],
  128. [
  129. if test -z "$no_static"
  130. then
  131. if test -n "$GXX"
  132. then
  133. AC_CACHE_CHECK(whether the compiler understands -static, egg_cv_var_ccstatic, [dnl
  134. ac_old_CXX="$CXX"
  135. CXX="$CXX -static"
  136. AC_TRY_COMPILE(,, egg_cv_var_ccstatic="yes", egg_cv_var_ccstatic="no")
  137. CXX="$ac_old_CXX"
  138. ])
  139. if test "$egg_cv_var_ccstatic" = "yes"
  140. then
  141. CCDEBUG="$CXX"
  142. CXX="$CXX -static"
  143. else
  144. cat << 'EOF' >&2
  145. configure: error:
  146. Your C compiler does not support -static.
  147. This compile flag is required for the botpack.
  148. EOF
  149. exit 1
  150. fi
  151. fi
  152. fi
  153. ])
  154. dnl EGG_PROG_HEAD_1()
  155. dnl
  156. AC_DEFUN([EGG_PROG_HEAD_1],
  157. [
  158. cat << 'EOF' > conftest.head
  159. a
  160. b
  161. c
  162. EOF
  163. for ac_prog in 'head -1' 'head -n 1' 'sed 1q';
  164. do
  165. AC_MSG_CHECKING([whether $ac_prog works])
  166. AC_CACHE_VAL(ac_cv_prog_HEAD_1,
  167. [ if test -n "$HEAD_1"
  168. then
  169. ac_cv_prog_HEAD_1="$HEAD_1" # Let the user override the test.
  170. else
  171. if test "`cat conftest.head | $ac_prog`" = "a";
  172. then
  173. AC_MSG_RESULT([yes])
  174. ac_cv_prog_HEAD_1=$ac_prog
  175. else
  176. AC_MSG_RESULT([no])
  177. fi
  178. fi])dnl
  179. test -n "$ac_cv_prog_HEAD_1" && break
  180. done
  181. if test "${ac_cv_prog_HEAD_1-x}" = "x"
  182. then
  183. cat << 'EOF' >&2
  184. configure: error:
  185. This system seems to lack a working 'head -1' or 'head -n 1' command.
  186. A working 'head -1' (or equivalent) command is required to compile Eggdrop.
  187. EOF
  188. exit 1
  189. fi
  190. rm -f conftest.head
  191. HEAD_1=$ac_cv_prog_HEAD_1
  192. AC_SUBST(HEAD_1)dnl
  193. ])
  194. dnl EGG_PROG_AWK()
  195. dnl
  196. AC_DEFUN([EGG_PROG_AWK],
  197. [
  198. # awk is needed for Tcl library and header checks, and eggdrop version subst
  199. AC_PROG_AWK
  200. if test "${AWK-x}" = "x"
  201. then
  202. cat << 'EOF' >&2
  203. configure: error:
  204. This system seems to lack a working 'awk' command.
  205. A working 'awk' command is required to compile Eggdrop.
  206. EOF
  207. exit 1
  208. fi
  209. ])
  210. dnl EGG_PROG_BASENAME()
  211. dnl
  212. AC_DEFUN([EGG_PROG_BASENAME],
  213. [
  214. # basename is needed for Tcl library and header checks
  215. AC_CHECK_PROG(BASENAME, basename, basename)
  216. if test "${BASENAME-x}" = "x"
  217. then
  218. cat << 'EOF' >&2
  219. configure: error:
  220. This system seems to lack a working 'basename' command.
  221. A working 'basename' command is required to compile Eggdrop.
  222. EOF
  223. exit 1
  224. fi
  225. ])
  226. dnl EGG_CHECK_OS()
  227. dnl
  228. dnl
  229. AC_DEFUN([EGG_CHECK_OS],
  230. [
  231. EGG_CYGWIN=no
  232. AC_CACHE_CHECK(system type, egg_cv_var_system_type, egg_cv_var_system_type=`$UNAME -s`)
  233. AC_CACHE_CHECK(system release, egg_cv_var_system_release, egg_cv_var_system_release=`$UNAME -r`)
  234. AC_CACHE_CHECK(system machine, egg_cv_var_system_machine, egg_cv_var_system_machine=`$UNAME -m`)
  235. case "$egg_cv_var_system_machine" in
  236. i*)
  237. CXX="$CXX -march=i486"
  238. ;;
  239. *)
  240. ;;
  241. esac
  242. case "$egg_cv_var_system_type" in
  243. BSD/OS)
  244. ;;
  245. CYGWI*)
  246. AC_PROG_CC_WIN32
  247. CXX="$CXX $WIN32FLAGS"
  248. EGG_CYGWIN="yes"
  249. EGG_CYGWIN_BINMODE
  250. AC_DEFINE(CYGWIN_HACKS, 1, [Define if running under cygwin])
  251. AC_DEFINE(WIN32_LEAN_AND_MEAN, 1, [Define if windows])
  252. ;;
  253. IRIX)
  254. ;;
  255. HP-UX)
  256. AC_DEFINE(MD32_XARRAY, 1, [Define under HPUX])
  257. ;;
  258. Ultrix)
  259. SHELL=/bin/sh5
  260. ;;
  261. SINIX*)
  262. ;;
  263. BeOS)
  264. ;;
  265. Linux)
  266. ;;
  267. Lynx)
  268. ;;
  269. QNX)
  270. ;;
  271. OSF1)
  272. case "`echo $egg_cv_var_system_release | cut -d . -f 1`" in
  273. V*)
  274. if test "$AWK" = "gawk"
  275. then
  276. AWK=awk
  277. fi
  278. ;;
  279. 1.0|1.1|1.2)
  280. AC_DEFINE(OSF1_HACKS, 1, [Define if running on OSF/1 platform])dnl
  281. ;;
  282. 1.*)
  283. AC_DEFINE(OSF1_HACKS, 1, [Define if running on OSF/1 platform])dnl
  284. ;;
  285. *)
  286. ;;
  287. esac
  288. AC_DEFINE(STOP_UAC, 1, [Define if running on OSF/1 platform])dnl
  289. AC_DEFINE(BROKEN_SNPRINTF, 1, [Define to use Eggdrop's snprintf functions without regard to HAVE_SNPRINTF])dnl
  290. ;;
  291. SunOS)
  292. ;;
  293. *BSD)
  294. # FreeBSD/OpenBSD/NetBSD
  295. ;;
  296. *)
  297. AC_MSG_CHECKING(if system is Mach based)
  298. if test -r /mach
  299. then
  300. AC_MSG_RESULT(yes)
  301. AC_DEFINE(BORGCUBES, 1, [Define if running on NeXT Step])dnl
  302. else
  303. AC_MSG_RESULT(no)
  304. AC_MSG_CHECKING(if system is QNX)
  305. if test -r /cmds
  306. then
  307. AC_MSG_RESULT(yes)
  308. else
  309. AC_MSG_RESULT(no)
  310. AC_MSG_RESULT(Something unknown!)
  311. AC_MSG_RESULT([If you get dynamic modules to work, be sure to let the devel team know HOW :)])
  312. fi
  313. fi
  314. ;;
  315. esac
  316. ])
  317. dnl EGG_CYGWIN_BINMODE
  318. dnl
  319. dnl Check for binmode.o on Cygwin.
  320. dnl
  321. AC_DEFUN([EGG_CYGWIN_BINMODE],
  322. [
  323. if test $EGG_CYGWIN = "yes"; then
  324. AC_MSG_CHECKING([for /usr/lib/binmode.o])
  325. if test -r /usr/lib/binmode.o; then
  326. AC_MSG_RESULT([yes])
  327. LIBS="$LIBS /usr/lib/binmode.o"
  328. else
  329. AC_MSG_RESULT([no])
  330. AC_MSG_WARN([Make sure the directory Eggdrop is installed into is mounted in binary mode.])
  331. fi
  332. fi
  333. ])
  334. dnl EGG_CHECK_LIBS()
  335. dnl
  336. AC_DEFUN([EGG_CHECK_LIBS],
  337. [
  338. AC_CHECK_LIB(socket, socket)
  339. # AC_CHECK_LIB(nsl, connect)
  340. AC_CHECK_LIB(dns, gethostbyname)
  341. # AC_CHECK_LIB(z, gzopen, ZLIB="-lz")
  342. # AC_CHECK_LIB(ssl, SSL_accept, SSL="-lssl -lcrypto", SSL="", -lcrypto)
  343. # AC_CHECK_LIB(ssl, SSL_accept, SSL="-lcrypto", SSL="", -lcrypto)
  344. # This is needed for Tcl libraries compiled with thread support
  345. # AC_CHECK_LIB(pthread, pthread_mutex_init, [dnl
  346. # ac_cv_lib_pthread_pthread_mutex_init=yes
  347. # ac_cv_lib_pthread="-lpthread"], [dnl
  348. # AC_CHECK_LIB(pthread, __pthread_mutex_init, [dnl
  349. # ac_cv_lib_pthread_pthread_mutex_init=yes
  350. # ac_cv_lib_pthread="-lpthread"], [dnl
  351. # AC_CHECK_LIB(pthreads, pthread_mutex_init, [dnl
  352. # ac_cv_lib_pthread_pthread_mutex_init=yes
  353. # ac_cv_lib_pthread="-lpthreads"], [dnl
  354. # AC_CHECK_FUNC(pthread_mutex_init, [dnl
  355. # ac_cv_lib_pthread_pthread_mutex_init=yes
  356. # ac_cv_lib_pthread=""],
  357. # ac_cv_lib_pthread_pthread_mutex_init=no)])])])
  358. ])
  359. dnl EGG_CHECK_FUNC_VSPRINTF()
  360. dnl
  361. AC_DEFUN([EGG_CHECK_FUNC_VSPRINTF],
  362. [
  363. AC_CHECK_FUNCS(vsprintf)
  364. if test "$ac_cv_func_vsprintf" = "no"
  365. then
  366. cat << 'EOF' >&2
  367. configure: error:
  368. Your system does not have the sprintf/vsprintf libraries.
  369. These are required to compile almost anything. Sorry.
  370. EOF
  371. exit 1
  372. fi
  373. ])
  374. dnl EGG_CHECK_FUNC_UNAME()
  375. dnl
  376. AC_DEFUN([EGG_CHECK_FUNC_UNAME],
  377. [
  378. AC_CHECK_FUNCS(uname)
  379. if test "$ac_cv_func_uname" = "no"
  380. then
  381. cat << 'EOF' >&2
  382. configure: error:
  383. Your system does not have the uname() function.
  384. This is required for the botpack.
  385. EOF
  386. exit 1
  387. fi
  388. ])
  389. dnl EGG_CHECK_ZLIB()
  390. dnl
  391. AC_DEFUN([EGG_CHECK_ZLIB],
  392. [
  393. if test "x${ZLIB}" = x; then
  394. cat >&2 <<EOF
  395. configure: error:
  396. Your system does not provide a working zlib compression library.
  397. It is required.
  398. EOF
  399. exit 1
  400. else
  401. if test "${ac_cv_header_zlib_h}" != yes; then
  402. cat >&2 <<EOF
  403. configure: error:
  404. Your system does not provide the necessary zlib header file.
  405. It is required.
  406. EOF
  407. exit 1
  408. fi
  409. fi
  410. ])
  411. dnl EGG_CHECK_SSL()
  412. dnl
  413. AC_DEFUN([EGG_CHECK_SSL],
  414. [
  415. if test "x${SSL}" = x; then
  416. cat >&2 <<EOF
  417. configure: error:
  418. Your system does not provide a working ssl library.
  419. It is required. Download openssl at www.openssl.org
  420. EOF
  421. exit 1
  422. else
  423. if test "${ac_cv_header_openssl_ssl_h}" != yes; then
  424. cat >&2 <<EOF
  425. configure: error:
  426. Your system does not provide the necessary ssl header file.
  427. It is required. Download openssl at www.openssl.org
  428. EOF
  429. exit 1
  430. fi
  431. fi
  432. ])
  433. dnl EGG_HEADER_STDC()
  434. dnl
  435. AC_DEFUN([EGG_HEADER_STDC],
  436. [
  437. if test "$ac_cv_header_stdc" = "no"
  438. then
  439. cat << 'EOF' >&2
  440. configure: error:
  441. Your system must support ANSI C Header files.
  442. These are required for the language support. Sorry.
  443. EOF
  444. exit 1
  445. fi
  446. ])
  447. dnl EGG_CACHE_UNSET(CACHE-ID)
  448. dnl
  449. dnl Unsets a certain cache item. Typically called before using
  450. dnl the AC_CACHE_*() macros.
  451. AC_DEFUN([EGG_CACHE_UNSET],
  452. [
  453. unset $1
  454. ])
  455. dnl EGG_SUBST_VERSION()
  456. dnl
  457. AC_DEFUN([EGG_SUBST_VERSION],
  458. [
  459. VERSION=`grep "char" $srcdir/src/main.c | $AWK '/egg_version/ {print [$]5}' | sed -e 's/\"//g' | sed -e 's/\;//g'`
  460. version_num=`echo $VERSION | $AWK 'BEGIN {FS = "."} {printf("%d%02d%02d", [$]1, [$]2, [$]3)}'`
  461. AC_DEFINE_UNQUOTED(EGG_VERSION, $version_num, [Defines the current pack version])dnl
  462. AC_SUBST(VERSION)dnl
  463. AC_SUBST(NUMVER)dnl
  464. ])
  465. dnl EGG_SUBST_MOD_UPDIR()
  466. dnl
  467. dnl Since module's Makefiles aren't generated by configure, some
  468. dnl paths in src/mod/Makefile.in take care of them. For correct
  469. dnl path "calculation", we need to keep absolute paths in mind
  470. dnl (which don't need a "../" pre-pended).
  471. AC_DEFUN([EGG_SUBST_MOD_UPDIR],
  472. [
  473. case "$srcdir" in
  474. [[\\/]]* | ?:[[\\/]]*)
  475. MOD_UPDIR=""
  476. ;;
  477. *)
  478. MOD_UPDIR="../"
  479. ;;
  480. esac
  481. AC_SUBST(MOD_UPDIR)dnl
  482. ])dnl
  483. dnl EGG_REPLACE_IF_CHANGED(FILE-NAME, CONTENTS-CMDS, INIT-CMDS)
  484. dnl
  485. dnl Replace FILE-NAME if the newly created contents differs from the existing
  486. dnl file contents. Otherwise, leave the file alone. This avoids needless
  487. dnl recompiles.
  488. m4_define(EGG_REPLACE_IF_CHANGED,
  489. [
  490. AC_CONFIG_COMMANDS([replace-if-changed],
  491. [[
  492. egg_replace_file="$1"
  493. $2
  494. if test -f "$egg_replace_file" && cmp -s conftest.out $egg_replace_file; then
  495. echo "$1 is unchanged"
  496. else
  497. echo "creating $1"
  498. mv conftest.out $egg_replace_file
  499. fi
  500. rm -f conftest.out
  501. ]],
  502. [[$3]])
  503. ])
  504. dnl EGG_SAVE_PARAMETERS()
  505. dnl
  506. AC_DEFUN([EGG_SAVE_PARAMETERS],
  507. [
  508. # Remove --cache-file and --srcdir arguments so they do not pile up.
  509. egg_ac_parameters=
  510. ac_prev=
  511. for ac_arg in $ac_configure_args; do
  512. if test -n "$ac_prev"; then
  513. ac_prev=
  514. continue
  515. fi
  516. case $ac_arg in
  517. -cache-file | --cache-file | --cache-fil | --cache-fi \
  518. | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
  519. ac_prev=cache_file ;;
  520. -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
  521. | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \
  522. | --c=*)
  523. ;;
  524. --config-cache | -C)
  525. ;;
  526. -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
  527. ac_prev=srcdir ;;
  528. -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
  529. ;;
  530. *) egg_ac_parameters="$egg_ac_parameters $ac_arg" ;;
  531. esac
  532. done
  533. AC_SUBST(egg_ac_parameters)dnl
  534. ])
  535. AC_DEFUN([AC_PROG_CC_WIN32],
  536. [
  537. AC_MSG_CHECKING([how to access the Win32 API])
  538. WIN32FLAGS=
  539. AC_TRY_COMPILE(,[
  540. #ifndef WIN32
  541. # ifndef _WIN32
  542. # error WIN32 or _WIN32 not defined
  543. # endif
  544. #endif], [
  545. dnl found windows.h with the current config.
  546. AC_MSG_RESULT([present by default])
  547. ], [
  548. dnl try -mwin32
  549. ac_compile_save="$ac_compile"
  550. dnl we change CC so config.log looks correct
  551. save_CXX="$CXX"
  552. ac_compile="$ac_compile -mwin32"
  553. CXX="$CXX -mwin32"
  554. AC_TRY_COMPILE(,[
  555. #ifndef WIN32
  556. # ifndef _WIN32
  557. # error WIN32 or _WIN32 not defined
  558. # endif
  559. #endif], [
  560. dnl found windows.h using -mwin32
  561. AC_MSG_RESULT([found via -mwin32])
  562. ac_compile="$ac_compile_save"
  563. CXX="$save_CC"
  564. WIN32FLAGS="-mwin32"
  565. ], [
  566. ac_compile="$ac_compile_save"
  567. CXX="$save_CC"
  568. AC_MSG_RESULT([not found])
  569. ])
  570. ])
  571. ])
  572. AC_DEFUN([EGG_CHECK_RANDOM_MAX],
  573. [
  574. AC_MSG_CHECKING([for random limit])
  575. case "$egg_cv_var_system_type" in
  576. SunOS) RMAX=0x7FFFFFFF
  577. ;;
  578. *) RMAX=RAND_MAX
  579. ;;
  580. esac
  581. AC_MSG_RESULT([$RMAX])
  582. AC_DEFINE_UNQUOTED(RANDOM_MAX, $RMAX, [Define limit of random() function.])
  583. ])