acinclude.m4 26 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208
  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. dnl FIXME: make a better test
  8. dnl
  9. AC_DEFUN(EGG_CHECK_CC, [dnl
  10. if test "${cross_compiling-x}" = "x"
  11. then
  12. cat << 'EOF' >&2
  13. configure: error:
  14. This system does not appear to have a working C compiler.
  15. A working C compiler is required to compile Eggdrop.
  16. EOF
  17. exit 1
  18. fi
  19. ])dnl
  20. dnl EGG_IPV6_OPTIONS()
  21. dnl
  22. AC_DEFUN(EGG_IPV6_OPTIONS, [dnl
  23. AC_MSG_CHECKING(whether or not you disabled IPv6 support)
  24. AC_ARG_ENABLE(ipv6, [ --disable-ipv6 disable IPv6 support],
  25. [ ac_cv_dipv6="yes"
  26. AC_MSG_RESULT(yes)
  27. ],
  28. [ ac_cv_dipv6="no"
  29. if test "$egg_cv_ipv6_supported" = "no"; then
  30. ac_cv_dipv6="no"
  31. fi
  32. AC_MSG_RESULT($ac_cv_dipv6)
  33. ])
  34. if test "$ac_cv_dipv6" = "no"; then
  35. AC_DEFINE(USE_IPV6, 1, [Define if you want ipv6 support])
  36. fi
  37. ])dnl
  38. dnl EGG_CHECK_SOCKLEN_T()
  39. dnl
  40. AC_DEFUN(EGG_CHECK_SOCKLEN_T, [dnl
  41. AC_MSG_CHECKING(for socklen_t)
  42. AC_CACHE_VAL(egg_cv_socklen_t,[
  43. AC_TRY_RUN([
  44. #include <unistd.h>
  45. #include <sys/types.h>
  46. #include <sys/socket.h>
  47. #include <netinet/in.h>
  48. #include <arpa/inet.h>
  49. int main()
  50. {
  51. socklen_t test = sizeof(int);
  52. return 0;
  53. }
  54. ],
  55. egg_cv_socklen_t=yes, egg_cv_socklen_t=no, egg_cv_socklen_t=no)])
  56. if test "$egg_cv_socklen_t" = "yes"; then
  57. AC_DEFINE(HAVE_SOCKLEN_T, 1, [Define if you have support for socklen_t])
  58. AC_MSG_RESULT(yes)
  59. else
  60. AC_MSG_RESULT(no)
  61. fi
  62. ])dnl
  63. dnl EGG_CHECK_CCPIPE()
  64. dnl
  65. dnl Checks whether the compiler supports the `-pipe' flag, which
  66. dnl speeds up the compilation.
  67. AC_DEFUN(EGG_CHECK_CCPIPE, [dnl
  68. if test -z "$no_pipe"
  69. then
  70. if test -n "$GCC"
  71. then
  72. AC_CACHE_CHECK(whether the compiler understands -pipe, egg_cv_var_ccpipe, [dnl
  73. ac_old_CC="$CC"
  74. CC="$CC -pipe"
  75. AC_TRY_COMPILE(,, egg_cv_var_ccpipe="yes", egg_cv_var_ccpipe="no")
  76. CC="$ac_old_CC"
  77. ])
  78. if test "$egg_cv_var_ccpipe" = "yes"
  79. then
  80. CC="$CC -pipe"
  81. fi
  82. fi
  83. fi
  84. ])dnl
  85. dnl EGG_CHECK_CCSTATIC()
  86. dnl
  87. dnl Checks whether the compiler supports the `-static' flag.
  88. AC_DEFUN(EGG_CHECK_CCSTATIC, [dnl
  89. if test -z "$no_static"
  90. then
  91. if test -n "$GCC"
  92. then
  93. AC_CACHE_CHECK(whether the compiler understands -static, egg_cv_var_ccstatic, [dnl
  94. ac_old_CC="$CC"
  95. CC="$CC -static"
  96. AC_TRY_COMPILE(,, egg_cv_var_ccstatic="yes", egg_cv_var_ccstatic="no")
  97. CC="$ac_old_CC"
  98. ])
  99. if test "$egg_cv_var_ccstatic" = "yes"
  100. then
  101. CCDEBUG="$CC"
  102. CC="$CC -static"
  103. else
  104. cat << 'EOF' >&2
  105. configure: error:
  106. Your C compiler does not support -static.
  107. This compile flag is required for the botpack.
  108. EOF
  109. exit 1
  110. fi
  111. fi
  112. fi
  113. ])dnl
  114. dnl EGG_PROG_HEAD_1()
  115. dnl
  116. AC_DEFUN(EGG_PROG_HEAD_1,
  117. [cat << 'EOF' > conftest.head
  118. a
  119. b
  120. c
  121. EOF
  122. for ac_prog in 'head -1' 'head -n 1' 'sed 1q';
  123. do
  124. AC_MSG_CHECKING([whether $ac_prog works])
  125. AC_CACHE_VAL(ac_cv_prog_HEAD_1,
  126. [ if test -n "$HEAD_1"
  127. then
  128. ac_cv_prog_HEAD_1="$HEAD_1" # Let the user override the test.
  129. else
  130. if test "`cat conftest.head | $ac_prog`" = "a";
  131. then
  132. AC_MSG_RESULT([yes])
  133. ac_cv_prog_HEAD_1=$ac_prog
  134. else
  135. AC_MSG_RESULT([no])
  136. fi
  137. fi])dnl
  138. test -n "$ac_cv_prog_HEAD_1" && break
  139. done
  140. if test "${ac_cv_prog_HEAD_1-x}" = "x"
  141. then
  142. cat << 'EOF' >&2
  143. configure: error:
  144. This system seems to lack a working 'head -1' or 'head -n 1' command.
  145. A working 'head -1' (or equivalent) command is required to compile Eggdrop.
  146. EOF
  147. exit 1
  148. fi
  149. rm -f conftest.head
  150. HEAD_1=$ac_cv_prog_HEAD_1
  151. AC_SUBST(HEAD_1)dnl
  152. ])dnl
  153. dnl EGG_PROG_OBJCOPY()
  154. dnl
  155. AC_DEFUN(EGG_PROG_OBJCOPY, [dnl
  156. AC_CHECK_PROG(OBJCOPY, objcopy,)
  157. if ! test "${OBJCOPY-x}" = "x"
  158. then
  159. OBJCOPY="objcopy --remove-section=.note --remove-section=.comment"
  160. else
  161. OBJCOPY=touch
  162. fi
  163. ])dnl
  164. dnl EGG_PROG_AWK()
  165. dnl
  166. AC_DEFUN(EGG_PROG_AWK, [dnl
  167. # awk is needed for Tcl library and header checks, and eggdrop version subst
  168. AC_PROG_AWK
  169. if test "${AWK-x}" = "x"
  170. then
  171. cat << 'EOF' >&2
  172. configure: error:
  173. This system seems to lack a working 'awk' command.
  174. A working 'awk' command is required to compile Eggdrop.
  175. EOF
  176. exit 1
  177. fi
  178. ])dnl
  179. dnl EGG_PROG_BASENAME()
  180. dnl
  181. AC_DEFUN(EGG_PROG_BASENAME, [dnl
  182. # basename is needed for Tcl library and header checks
  183. AC_CHECK_PROG(BASENAME, basename, basename)
  184. if test "${BASENAME-x}" = "x"
  185. then
  186. cat << 'EOF' >&2
  187. configure: error:
  188. This system seems to lack a working 'basename' command.
  189. A working 'basename' command is required to compile Eggdrop.
  190. EOF
  191. exit 1
  192. fi
  193. ])dnl
  194. dnl EGG_CHECK_OS()
  195. dnl
  196. dnl FIXME/NOTICE:
  197. dnl This function is obsolete. Any NEW code/checks should be written
  198. dnl as individual tests that will be checked on ALL operating systems.
  199. dnl
  200. AC_DEFUN(EGG_CHECK_OS, [dnl
  201. LINUX=no
  202. IRIX=no
  203. SUNOS=no
  204. HPUX=no
  205. EGG_CYGWIN=no
  206. AC_CACHE_CHECK(system type, egg_cv_var_system_type, egg_cv_var_system_type=`$UNAME -s`)
  207. AC_CACHE_CHECK(system release, egg_cv_var_system_release, egg_cv_var_system_release=`$UNAME -r`)
  208. case "$egg_cv_var_system_type" in
  209. BSD/OS)
  210. case "`echo $egg_cv_var_system_release | cut -d . -f 1`" in
  211. 2)
  212. ;;
  213. *)
  214. CFLAGS="$CFLAGS -Wall"
  215. ;;
  216. esac
  217. ;;
  218. CYGWI*)
  219. case "`echo $egg_cv_var_system_release | cut -c 1-3`" in
  220. 1.*)
  221. AC_PROG_CC_WIN32
  222. CC="$CC $WIN32FLAGS"
  223. AC_MSG_CHECKING(for /usr/lib/binmode.o)
  224. if test -r /usr/lib/binmode.o
  225. then
  226. AC_MSG_RESULT(yes)
  227. LIBS="$LIBS /usr/lib/binmode.o"
  228. else
  229. AC_MSG_RESULT(no)
  230. AC_MSG_WARN(Make sure the directory Eggdrop is installed into is mounted in binary mode.)
  231. fi
  232. ;;
  233. *)
  234. AC_MSG_WARN(Make sure the directory Eggdrop is installed into is mounted in binary mode.)
  235. ;;
  236. esac
  237. EGG_CYGWIN=yes
  238. AC_DEFINE(CYGWIN_HACKS, 1, [Define if running under cygwin])
  239. ;;
  240. HP-UX)
  241. HPUX=yes
  242. AC_DEFINE(HPUX_HACKS, 1, [Define if running on hpux that supports dynamic linking])dnl
  243. if test "`echo $egg_cv_var_system_release | cut -d . -f 2`" = "10"
  244. then
  245. AC_DEFINE(HPUX10_HACKS, 1, [Define if running on hpux 10.x])dnl
  246. fi
  247. ;;
  248. dell)
  249. AC_MSG_RESULT(Dell SVR4)
  250. ;;
  251. IRIX)
  252. IRIX=yes
  253. ;;
  254. Ultrix)
  255. SHELL=/bin/sh5
  256. ;;
  257. SINIX*)
  258. ;;
  259. BeOS)
  260. ;;
  261. Linux)
  262. LINUX=yes
  263. CFLAGS="$CFLAGS -Wall"
  264. ;;
  265. Lynx)
  266. ;;
  267. QNX)
  268. ;;
  269. OSF1)
  270. case "`echo $egg_cv_var_system_release | cut -d . -f 1`" in
  271. V*)
  272. # FIXME: we should check this in a separate test
  273. # Digital OSF uses an ancient version of gawk
  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. if ! test "`echo $egg_cv_var_system_release | cut -d . -f 1`" = "5"
  293. then
  294. # SunOS 4
  295. SUNOS=yes
  296. fi
  297. ;;
  298. *BSD)
  299. # FreeBSD/OpenBSD/NetBSD
  300. ;;
  301. *)
  302. AC_MSG_CHECKING(if system is Mach based)
  303. if test -r /mach
  304. then
  305. AC_MSG_RESULT(yes)
  306. AC_DEFINE(BORGCUBES, 1, [Define if running on NeXT Step])dnl
  307. else
  308. AC_MSG_RESULT(no)
  309. AC_MSG_CHECKING(if system is QNX)
  310. if test -r /cmds
  311. then
  312. AC_MSG_RESULT(yes)
  313. else
  314. AC_MSG_RESULT(no)
  315. AC_MSG_RESULT(Something unknown!)
  316. AC_MSG_RESULT([If you get dynamic modules to work, be sure to let the devel team know HOW :)])
  317. fi
  318. fi
  319. ;;
  320. esac
  321. ])dnl
  322. dnl EGG_CHECK_LIBS()
  323. dnl
  324. AC_DEFUN(EGG_CHECK_LIBS, [dnl
  325. # FIXME: this needs to be fixed so that it works on IRIX
  326. if test "$IRIX" = "yes"
  327. then
  328. AC_MSG_WARN(Skipping library tests because they CONFUSE Irix.)
  329. else
  330. AC_CHECK_LIB(socket, socket)
  331. AC_CHECK_LIB(nsl, connect)
  332. AC_CHECK_LIB(dns, gethostbyname)
  333. AC_CHECK_LIB(z, gzopen, ZLIB="-lz")
  334. AC_CHECK_LIB(ssl, SSL_accept, SSL="-lssl -lcrypto", SSL="", -lcrypto)
  335. AC_CHECK_LIB(dl, dlopen)
  336. AC_CHECK_LIB(m, tan, EGG_MATH_LIB="-lm")
  337. # This is needed for Tcl libraries compiled with thread support
  338. AC_CHECK_LIB(pthread, pthread_mutex_init, [dnl
  339. ac_cv_lib_pthread_pthread_mutex_init=yes
  340. ac_cv_lib_pthread="-lpthread"], [dnl
  341. AC_CHECK_LIB(pthread, __pthread_mutex_init, [dnl
  342. ac_cv_lib_pthread_pthread_mutex_init=yes
  343. ac_cv_lib_pthread="-lpthread"], [dnl
  344. AC_CHECK_LIB(pthreads, pthread_mutex_init, [dnl
  345. ac_cv_lib_pthread_pthread_mutex_init=yes
  346. ac_cv_lib_pthread="-lpthreads"], [dnl
  347. AC_CHECK_FUNC(pthread_mutex_init, [dnl
  348. ac_cv_lib_pthread_pthread_mutex_init=yes
  349. ac_cv_lib_pthread=""],
  350. ac_cv_lib_pthread_pthread_mutex_init=no)])])])
  351. if test "$SUNOS" = "yes"
  352. then
  353. # For suns without yp or something like that
  354. AC_CHECK_LIB(dl, main)
  355. else
  356. if test "$HPUX" = "yes"
  357. then
  358. AC_CHECK_LIB(dld, shl_load)
  359. fi
  360. fi
  361. fi
  362. ])dnl
  363. dnl EGG_CHECK_FUNC_VSPRINTF()
  364. dnl
  365. AC_DEFUN(EGG_CHECK_FUNC_VSPRINTF, [dnl
  366. AC_CHECK_FUNCS(vsprintf)
  367. if test "$ac_cv_func_vsprintf" = "no"
  368. then
  369. cat << 'EOF' >&2
  370. configure: error:
  371. Your system does not have the sprintf/vsprintf libraries.
  372. These are required to compile almost anything. Sorry.
  373. EOF
  374. exit 1
  375. fi
  376. ])dnl
  377. dnl EGG_CHECK_FUNC_UNAME()
  378. dnl
  379. AC_DEFUN(EGG_CHECK_FUNC_UNAME, [dnl
  380. AC_CHECK_FUNCS(uname)
  381. if test "$ac_cv_func_uname" = "no"
  382. then
  383. cat << 'EOF' >&2
  384. configure: error:
  385. Your system does not have the uname() function.
  386. This is required for the botpack.
  387. EOF
  388. exit 1
  389. fi
  390. ])dnl
  391. dnl EGG_CHECK_ZLIB()
  392. dnl
  393. AC_DEFUN(EGG_CHECK_ZLIB, [dnl
  394. if test "x${ZLIB}" = x; then
  395. cat >&2 <<EOF
  396. configure: error:
  397. Your system does not provide a working zlib compression library.
  398. It is required.
  399. EOF
  400. exit 1
  401. else
  402. if test "${ac_cv_header_zlib_h}" != yes; then
  403. cat >&2 <<EOF
  404. configure: error:
  405. Your system does not provide the necessary zlib header file.
  406. It is required.
  407. EOF
  408. exit 1
  409. fi
  410. fi
  411. ])dnl
  412. dnl EGG_CHECK_SSL()
  413. dnl
  414. AC_DEFUN(EGG_CHECK_SSL, [dnl
  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. ])dnl
  433. dnl EGG_HEADER_STDC()
  434. dnl
  435. AC_DEFUN(EGG_HEADER_STDC, [dnl
  436. if test "$ac_cv_header_stdc" = "no"
  437. then
  438. cat << 'EOF' >&2
  439. configure: error:
  440. Your system must support ANSI C Header files.
  441. These are required for the language support. Sorry.
  442. EOF
  443. exit 1
  444. fi
  445. ])dnl
  446. dnl EGG_TCL_ARG_WITH()
  447. dnl
  448. AC_DEFUN(EGG_TCL_ARG_WITH, [dnl
  449. # oohh new configure --variables for those with multiple Tcl libs
  450. AC_ARG_WITH(tcllib, [ --with-tcllib=PATH full path to Tcl library], tcllibname="$withval")
  451. AC_ARG_WITH(tclinc, [ --with-tclinc=PATH full path to Tcl header], tclincname="$withval")
  452. WARN=0
  453. # Make sure either both or neither $tcllibname and $tclincname are set
  454. if test ! "${tcllibname-x}" = "x"
  455. then
  456. if test "${tclincname-x}" = "x"
  457. then
  458. WARN=1
  459. tcllibname=""
  460. TCLLIB=""
  461. TCLINC=""
  462. fi
  463. else
  464. if test ! "${tclincname-x}" = "x"
  465. then
  466. WARN=1
  467. tclincname=""
  468. TCLLIB=""
  469. TCLINC=""
  470. fi
  471. fi
  472. if test "$WARN" = 1
  473. then
  474. cat << 'EOF' >&2
  475. configure: warning:
  476. You must specify both --with-tcllib and --with-tclinc for them to work.
  477. configure will now attempt to autodetect both the Tcl library and header...
  478. EOF
  479. fi
  480. ])dnl
  481. dnl EGG_TCL_ENV()
  482. dnl
  483. AC_DEFUN(EGG_TCL_ENV, [dnl
  484. WARN=0
  485. # Make sure either both or neither $TCLLIB and $TCLINC are set
  486. if test ! "${TCLLIB-x}" = "x"
  487. then
  488. if test "${TCLINC-x}" = "x"
  489. then
  490. WARN=1
  491. WVAR1=TCLLIB
  492. WVAR2=TCLINC
  493. TCLLIB=""
  494. fi
  495. else
  496. if test ! "${TCLINC-x}" = "x"
  497. then
  498. WARN=1
  499. WVAR1=TCLINC
  500. WVAR2=TCLLIB
  501. TCLINC=""
  502. fi
  503. fi
  504. if test "$WARN" = 1
  505. then
  506. cat << EOF >&2
  507. configure: warning:
  508. Environment variable $WVAR1 was set, but I did not detect ${WVAR2}.
  509. Please set both TCLLIB and TCLINC correctly if you wish to use them.
  510. configure will now attempt to autodetect both the Tcl library and header...
  511. EOF
  512. fi
  513. ])dnl
  514. dnl EGG_TCL_WITH_TCLLIB()
  515. dnl
  516. AC_DEFUN(EGG_TCL_WITH_TCLLIB, [dnl
  517. # Look for Tcl library: if $tcllibname is set, check there first
  518. if test ! "${tcllibname-x}" = "x"
  519. then
  520. if test -f "$tcllibname" && test -r "$tcllibname"
  521. then
  522. TCLLIB=`echo $tcllibname | sed 's%/[[^/]][[^/]]*$%%'`
  523. TCLLIBFN=`$BASENAME $tcllibname | cut -c4-`
  524. TCLLIBEXT=".`echo $TCLLIBFN | $AWK '{j=split([$]1, i, "."); print i[[j]]}'`"
  525. TCLLIBFNS=`$BASENAME $tcllibname $TCLLIBEXT | cut -c4-`
  526. else
  527. cat << EOF >&2
  528. configure: warning:
  529. The file '$tcllibname' given to option --with-tcllib is not valid.
  530. configure will now attempt to autodetect both the Tcl library and header...
  531. EOF
  532. tcllibname=""
  533. tclincname=""
  534. TCLLIB=""
  535. TCLLIBFN=""
  536. TCLINC=""
  537. TCLINCFN=""
  538. fi
  539. fi
  540. ])dnl
  541. dnl EGG_TCL_WITH_TCLINC()
  542. dnl
  543. AC_DEFUN(EGG_TCL_WITH_TCLINC, [dnl
  544. # Look for Tcl header: if $tclincname is set, check there first
  545. if test ! "${tclincname-x}" = "x"
  546. then
  547. if test -f "$tclincname" && test -r "$tclincname"
  548. then
  549. TCLINC=`echo $tclincname | sed 's%/[[^/]][[^/]]*$%%'`
  550. TCLINCFN=`$BASENAME $tclincname`
  551. else
  552. cat << EOF >&2
  553. configure: warning:
  554. The file '$tclincname' given to option --with-tclinc is not valid.
  555. configure will now attempt to autodetect both the Tcl library and header...
  556. EOF
  557. tcllibname=""
  558. tclincname=""
  559. TCLLIB=""
  560. TCLLIBFN=""
  561. TCLINC=""
  562. TCLINCFN=""
  563. fi
  564. fi
  565. ])dnl
  566. dnl EGG_TCL_FIND_LIBRARY()
  567. dnl
  568. AC_DEFUN(EGG_TCL_FIND_LIBRARY, [dnl
  569. # Look for Tcl library: if $TCLLIB is set, check there first
  570. if test "${TCLLIBFN-x}" = "x"
  571. then
  572. if test ! "${TCLLIB-x}" = "x"
  573. then
  574. if test -d "$TCLLIB"
  575. then
  576. for tcllibfns in $tcllibnames
  577. do
  578. for tcllibext in $tcllibextensions
  579. do
  580. if test -r "$TCLLIB/lib$tcllibfns$tcllibext"
  581. then
  582. TCLLIBFN="$tcllibfns$tcllibext"
  583. TCLLIBEXT="$tcllibext"
  584. TCLLIBFNS="$tcllibfns"
  585. break 2
  586. fi
  587. done
  588. done
  589. fi
  590. if test "${TCLLIBFN-x}" = "x"
  591. then
  592. cat << 'EOF' >&2
  593. configure: warning:
  594. Environment variable TCLLIB was set, but incorrect.
  595. Please set both TCLLIB and TCLINC correctly if you wish to use them.
  596. configure will now attempt to autodetect both the Tcl library and header...
  597. EOF
  598. TCLLIB=""
  599. TCLLIBFN=""
  600. TCLINC=""
  601. TCLINCFN=""
  602. fi
  603. fi
  604. fi
  605. ])dnl
  606. dnl EGG_TCL_FIND_HEADER()
  607. dnl
  608. AC_DEFUN(EGG_TCL_FIND_HEADER, [dnl
  609. # Look for Tcl header: if $TCLINC is set, check there first
  610. if test "${TCLINCFN-x}" = "x"
  611. then
  612. if test ! "${TCLINC-x}" = "x"
  613. then
  614. if test -d "$TCLINC"
  615. then
  616. for tclheaderfn in $tclheadernames
  617. do
  618. if test -r "$TCLINC/$tclheaderfn"
  619. then
  620. TCLINCFN="$tclheaderfn"
  621. break
  622. fi
  623. done
  624. fi
  625. if test "${TCLINCFN-x}" = "x"
  626. then
  627. cat << 'EOF' >&2
  628. configure: warning:
  629. Environment variable TCLINC was set, but incorrect.
  630. Please set both TCLLIB and TCLINC correctly if you wish to use them.
  631. configure will now attempt to autodetect both the Tcl library and header...
  632. EOF
  633. TCLLIB=""
  634. TCLLIBFN=""
  635. TCLINC=""
  636. TCLINCFN=""
  637. fi
  638. fi
  639. fi
  640. ])dnl
  641. dnl EGG_TCL_CHECK_LIBRARY()
  642. dnl
  643. AC_DEFUN(EGG_TCL_CHECK_LIBRARY, [dnl
  644. AC_MSG_CHECKING(for Tcl library)
  645. # Attempt autodetect for $TCLLIBFN if it's not set
  646. if test ! "${TCLLIBFN-x}" = "x"
  647. then
  648. AC_MSG_RESULT(using $TCLLIB/lib$TCLLIBFN)
  649. else
  650. for tcllibfns in $tcllibnames
  651. do
  652. for tcllibext in $tcllibextensions
  653. do
  654. for tcllibpath in $tcllibpaths
  655. do
  656. if test -r "$tcllibpath/lib$tcllibfns$tcllibext"
  657. then
  658. AC_MSG_RESULT(found $tcllibpath/lib$tcllibfns$tcllibext)
  659. TCLLIB="$tcllibpath"
  660. TCLLIBFN="$tcllibfns$tcllibext"
  661. TCLLIBEXT="$tcllibext"
  662. TCLLIBFNS="$tcllibfns"
  663. break 3
  664. fi
  665. done
  666. done
  667. done
  668. fi
  669. # Show if $TCLLIBFN wasn't found
  670. if test "${TCLLIBFN-x}" = "x"
  671. then
  672. AC_MSG_RESULT(not found)
  673. fi
  674. AC_SUBST(TCLLIB)dnl
  675. AC_SUBST(TCLLIBFN)dnl
  676. ])dnl
  677. dnl EGG_TCL_CHECK_HEADER()
  678. dnl
  679. AC_DEFUN(EGG_TCL_CHECK_HEADER, [dnl
  680. AC_MSG_CHECKING(for Tcl header)
  681. # Attempt autodetect for $TCLINCFN if it's not set
  682. if test ! "${TCLINCFN-x}" = "x"
  683. then
  684. AC_MSG_RESULT(using $TCLINC/$TCLINCFN)
  685. else
  686. for tclheaderpath in $tclheaderpaths
  687. do
  688. for tclheaderfn in $tclheadernames
  689. do
  690. if test -r "$tclheaderpath/$tclheaderfn"
  691. then
  692. AC_MSG_RESULT(found $tclheaderpath/$tclheaderfn)
  693. TCLINC="$tclheaderpath"
  694. TCLINCFN="$tclheaderfn"
  695. break 2
  696. fi
  697. done
  698. done
  699. # FreeBSD hack ...
  700. if test "${TCLINCFN-x}" = "x"
  701. then
  702. for tcllibfns in $tcllibnames
  703. do
  704. for tclheaderpath in $tclheaderpaths
  705. do
  706. for tclheaderfn in $tclheadernames
  707. do
  708. if test -r "$tclheaderpath/$tcllibfns/$tclheaderfn"
  709. then
  710. AC_MSG_RESULT(found $tclheaderpath/$tcllibfns/$tclheaderfn)
  711. TCLINC="$tclheaderpath/$tcllibfns"
  712. TCLINCFN="$tclheaderfn"
  713. break 3
  714. fi
  715. done
  716. done
  717. done
  718. fi
  719. fi
  720. # Show if $TCLINCFN wasn't found
  721. if test "${TCLINCFN-x}" = "x"
  722. then
  723. AC_MSG_RESULT(not found)
  724. fi
  725. AC_SUBST(TCLINC)dnl
  726. AC_SUBST(TCLINCFN)dnl
  727. ])dnl
  728. dnl EGG_CACHE_UNSET(CACHE-ID)
  729. dnl
  730. dnl Unsets a certain cache item. Typically called before using
  731. dnl the AC_CACHE_*() macros.
  732. AC_DEFUN(EGG_CACHE_UNSET, [dnl
  733. unset $1
  734. ])
  735. dnl EGG_TCL_DETECT_CHANGE()
  736. dnl
  737. dnl Detect whether the Tcl system has changed since our last
  738. dnl configure run. Set egg_tcl_changed accordingly.
  739. dnl
  740. dnl Tcl related feature and version checks should re-run their
  741. dnl checks as soon as egg_tcl_changed is set to "yes".
  742. AC_DEFUN(EGG_TCL_DETECT_CHANGE, [dnl
  743. AC_MSG_CHECKING(whether the Tcl system has changed)
  744. egg_tcl_changed=yes
  745. egg_tcl_id="$TCLLIB:$TCLLIBFN:$TCLINC:$TCLINCFN"
  746. if test ! "$egg_tcl_id" = ":::"
  747. then
  748. egg_tcl_cached=yes
  749. AC_CACHE_VAL(egg_cv_var_tcl_id, [dnl
  750. egg_cv_var_tcl_id="$egg_tcl_id"
  751. egg_tcl_cached=no
  752. ])
  753. if test "$egg_tcl_cached" = "yes"
  754. then
  755. if test "${egg_cv_var_tcl_id-x}" = "${egg_tcl_id-x}"
  756. then
  757. egg_tcl_changed=no
  758. else
  759. egg_cv_var_tcl_id="$egg_tcl_id"
  760. fi
  761. fi
  762. fi
  763. if test "$egg_tcl_changed" = "yes"
  764. then
  765. AC_MSG_RESULT(yes)
  766. else
  767. AC_MSG_RESULT(no)
  768. fi
  769. ])
  770. dnl EGG_TCL_CHECK_VERSION()
  771. dnl
  772. AC_DEFUN(EGG_TCL_CHECK_VERSION, [dnl
  773. # Both TCLLIBFN & TCLINCFN must be set, or we bail
  774. TCL_FOUND=0
  775. if test ! "${TCLLIBFN-x}" = "x" && test ! "${TCLINCFN-x}" = "x"
  776. then
  777. TCL_FOUND=1
  778. # Check Tcl's version
  779. if test "$egg_tcl_changed" = "yes"
  780. then
  781. EGG_CACHE_UNSET(egg_cv_var_tcl_version)
  782. fi
  783. AC_MSG_CHECKING(for Tcl version)
  784. AC_CACHE_VAL(egg_cv_var_tcl_version, [dnl
  785. egg_cv_var_tcl_version=`grep TCL_VERSION $TCLINC/$TCLINCFN | $HEAD_1 | $AWK '{gsub(/\"/, "", [$]3); print [$]3}'`
  786. ])
  787. if test ! "${egg_cv_var_tcl_version-x}" = "x"
  788. then
  789. AC_MSG_RESULT($egg_cv_var_tcl_version)
  790. else
  791. AC_MSG_RESULT(not found)
  792. TCL_FOUND=0
  793. fi
  794. # Check Tcl's patch level (if available)
  795. if test "$egg_tcl_changed" = "yes"
  796. then
  797. EGG_CACHE_UNSET(egg_cv_var_tcl_patch_level)
  798. fi
  799. AC_MSG_CHECKING(for Tcl patch level)
  800. AC_CACHE_VAL(egg_cv_var_tcl_patch_level, [dnl
  801. eval "egg_cv_var_tcl_patch_level=`grep TCL_PATCH_LEVEL $TCLINC/$TCLINCFN | $HEAD_1 | $AWK '{gsub(/\"/, "", [$]3); print [$]3}'`"
  802. ])
  803. if test ! "${egg_cv_var_tcl_patch_level-x}" = "x"
  804. then
  805. AC_MSG_RESULT($egg_cv_var_tcl_patch_level)
  806. else
  807. egg_cv_var_tcl_patch_level="unknown"
  808. AC_MSG_RESULT(unknown)
  809. fi
  810. fi
  811. # Check if we found Tcl's version
  812. if test "$TCL_FOUND" = 0
  813. then
  814. cat << 'EOF' >&2
  815. configure: error:
  816. I can't find Tcl on this system.
  817. The download website is at:
  818. http://www.tcl.tk/software/tcltk/download84.html
  819. A nice direct link for the tarball is:
  820. http://aleron.dl.sourceforge.net/sourceforge/tcl/tcl8.4.4-src.tar.gz
  821. OR
  822. Just type: ./build -T
  823. EOF
  824. exit 1
  825. fi
  826. ])dnl
  827. dnl EGG_TCL_CHECK_PRE80()
  828. dnl
  829. AC_DEFUN(EGG_TCL_CHECK_PRE80, [dnl
  830. # Is this version of Tcl too old for us to use ?
  831. TCL_VER_PRE80=`echo $egg_cv_var_tcl_version | $AWK '{split([$]1, i, "."); if (i[[1]] < 8) print "yes"; else print "no"}'`
  832. if test "$TCL_VER_PRE80" = "yes"
  833. then
  834. cat << EOF >&2
  835. configure: error:
  836. Your Tcl version is much too old for Eggdrop to use.
  837. I suggest you download and compile a more recent version.
  838. The most reliable current version is $tclrecommendver and
  839. can be downloaded from $tclrecommendsite
  840. EOF
  841. exit 1
  842. fi
  843. ])dnl
  844. dnl EGG_TCL_TESTLIBS()
  845. dnl
  846. AC_DEFUN(EGG_TCL_TESTLIBS, [dnl
  847. # Set variables for Tcl library tests
  848. TCL_TEST_LIB="$TCLLIBFNS"
  849. TCL_TEST_OTHERLIBS="-L$TCLLIB $EGG_MATH_LIB"
  850. if test ! "${ac_cv_lib_pthread-x}" = "x"
  851. then
  852. TCL_TEST_OTHERLIBS="$TCL_TEST_OTHERLIBS $ac_cv_lib_pthread"
  853. fi
  854. ])dnl
  855. dnl EGG_TCL_CHECK_FREE()
  856. dnl
  857. AC_DEFUN(EGG_TCL_CHECK_FREE, [dnl
  858. if test "$egg_tcl_changed" = "yes"
  859. then
  860. EGG_CACHE_UNSET(egg_cv_var_tcl_free)
  861. fi
  862. # Check for Tcl_Free()
  863. AC_CHECK_LIB($TCL_TEST_LIB, Tcl_Free, egg_cv_var_tcl_free="yes", egg_cv_var_tcl_free="no", $TCL_TEST_OTHERLIBS)
  864. if test "$egg_cv_var_tcl_free" = "yes"
  865. then
  866. AC_DEFINE(HAVE_TCL_FREE, 1, [Define for Tcl that has Tcl_Free() (7.5p1 and later)])dnl
  867. fi
  868. ])dnl
  869. dnl EGG_TCL_CHECK_THREADS()
  870. dnl
  871. AC_DEFUN(EGG_TCL_CHECK_THREADS, [dnl
  872. if test "$egg_tcl_changed" = "yes"
  873. then
  874. EGG_CACHE_UNSET(egg_cv_var_tcl_threaded)
  875. fi
  876. # Check for TclpFinalizeThreadData()
  877. AC_CHECK_LIB($TCL_TEST_LIB, TclpFinalizeThreadData, egg_cv_var_tcl_threaded="yes", egg_cv_var_tcl_threaded="no", $TCL_TEST_OTHERLIBS)
  878. enable_tcl_threads=no
  879. if test "$egg_cv_var_tcl_threaded" = "yes"
  880. then
  881. if test "$enable_tcl_threads" = "no"
  882. then
  883. cat << 'EOF' >&2
  884. configure: warning:
  885. You have disabled threads support on a system with a threaded Tcl library.
  886. Tcl features that rely on scheduled events may not function properly.
  887. EOF
  888. fi
  889. # Add pthread library to $LIBS if we need it
  890. if test ! "${ac_cv_lib_pthread-x}" = "x"
  891. then
  892. LIBS="$ac_cv_lib_pthread $LIBS"
  893. fi
  894. fi
  895. ])dnl
  896. dnl EGG_TCL_LIB_REQS()
  897. dnl
  898. AC_DEFUN(EGG_TCL_LIB_REQS, [dnl
  899. if test "$EGG_CYGWIN" = "yes"
  900. then
  901. TCL_REQS="$TCLLIB/lib$TCLLIBFN"
  902. TCL_LIBS="-L$TCLLIB -l$TCLLIBFNS $EGG_MATH_LIB"
  903. else
  904. if test ! "$TCLLIBEXT" = ".a"
  905. then
  906. cat << 'EOF' >&2
  907. configure: warning:
  908. Your Tcl library is not compiled statically.
  909. You will need to compile Tcl statically to successfully compile wraith.
  910. EOF
  911. exit 1
  912. else
  913. # Was the --with-tcllib option given ?
  914. if test ! "${tcllibname-x}" = "x"
  915. then
  916. TCL_REQS="$TCLLIB/lib$TCLLIBFN"
  917. TCL_LIBS="$TCLLIB/lib$TCLLIBFN $EGG_MATH_LIB"
  918. else
  919. TCL_REQS="$TCLLIB/lib$TCLLIBFN"
  920. TCL_LIBS="-L$TCLLIB -l$TCLLIBFNS $EGG_MATH_LIB"
  921. fi
  922. fi
  923. fi
  924. AC_SUBST(TCL_REQS)dnl
  925. AC_SUBST(TCL_LIBS)dnl
  926. ])dnl
  927. dnl EGG_SUBST_VERSION()
  928. dnl
  929. AC_DEFUN(EGG_SUBST_VERSION, [dnl
  930. VERSION=`grep "char" $srcdir/src/main.c | $AWK '/egg_version/ {print [$]5}' | sed -e 's/\"//g' | sed -e 's/\;//g'`
  931. NUMVER=`grep "int" $srcdir/src/main.c | $AWK '/egg_numver =/ {print [$]5}' | sed -e 's/\;//g'`
  932. if ! test -f $srcdir/pack/pack.cfg; then
  933. cat << EOF >&2
  934. configure: error:
  935. Your pack cfg is missing, please copy it to $srcdir/pack/pack.cfg
  936. EOF
  937. exit 1
  938. fi
  939. PACKNAME=`grep "PACKNAME " $srcdir/pack/pack.cfg | $AWK '/PACKNAME/ {print [$]2}'`
  940. version_num=`echo $VERSION | $AWK 'BEGIN {FS = "."} {printf("%d%02d%02d", [$]1, [$]2, [$]3)}'`
  941. AC_DEFINE_UNQUOTED(EGG_VERSION, $version_num, [Defines the current pack version])dnl
  942. AC_SUBST(VERSION)dnl
  943. AC_SUBST(NUMVER)dnl
  944. AC_SUBST(PACKNAME)dnl
  945. ])dnl
  946. dnl EGG_SUBST_MOD_UPDIR()
  947. dnl
  948. dnl Since module's Makefiles aren't generated by configure, some
  949. dnl paths in src/mod/Makefile.in take care of them. For correct
  950. dnl path "calculation", we need to keep absolute paths in mind
  951. dnl (which don't need a "../" pre-pended).
  952. AC_DEFUN(EGG_SUBST_MOD_UPDIR, [dnl
  953. case "$srcdir" in
  954. [[\\/]]* | ?:[[\\/]]*)
  955. MOD_UPDIR=""
  956. ;;
  957. *)
  958. MOD_UPDIR="../"
  959. ;;
  960. esac
  961. AC_SUBST(MOD_UPDIR)dnl
  962. ])dnl
  963. dnl EGG_REPLACE_IF_CHANGED(FILE-NAME, CONTENTS-CMDS, INIT-CMDS)
  964. dnl
  965. dnl Replace FILE-NAME if the newly created contents differs from the existing
  966. dnl file contents. Otherwise, leave the file alone. This avoids needless
  967. dnl recompiles.
  968. m4_define(EGG_REPLACE_IF_CHANGED,
  969. [
  970. AC_CONFIG_COMMANDS([replace-if-changed],
  971. [[
  972. egg_replace_file="$1"
  973. $2
  974. if test -f "$egg_replace_file" && cmp -s conftest.out $egg_replace_file; then
  975. echo "$1 is unchanged"
  976. else
  977. echo "creating $1"
  978. mv conftest.out $egg_replace_file
  979. fi
  980. rm -f conftest.out
  981. ]],
  982. [[$3]])
  983. ])
  984. dnl EGG_TCL_LUSH()
  985. AC_DEFUN([EGG_TCL_LUSH],
  986. [
  987. EGG_REPLACE_IF_CHANGED(lush.h,
  988. [
  989. cat > conftest.out << EOF
  990. /* Ignore me but do not erase me. I am a kludge. */
  991. #include "${egg_tclinc}/${egg_tclincfn}"
  992. EOF
  993. ], [
  994. egg_tclinc="$TCLINC"
  995. egg_tclincfn="$TCLINCFN"
  996. ])
  997. ])
  998. dnl EGG_SAVE_PARAMETERS()
  999. dnl
  1000. AC_DEFUN(EGG_SAVE_PARAMETERS, [dnl
  1001. # Remove --cache-file and --srcdir arguments so they do not pile up.
  1002. egg_ac_parameters=
  1003. ac_prev=
  1004. for ac_arg in $ac_configure_args; do
  1005. if test -n "$ac_prev"; then
  1006. ac_prev=
  1007. continue
  1008. fi
  1009. case $ac_arg in
  1010. -cache-file | --cache-file | --cache-fil | --cache-fi \
  1011. | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
  1012. ac_prev=cache_file ;;
  1013. -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
  1014. | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \
  1015. | --c=*)
  1016. ;;
  1017. --config-cache | -C)
  1018. ;;
  1019. -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
  1020. ac_prev=srcdir ;;
  1021. -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
  1022. ;;
  1023. *) egg_ac_parameters="$egg_ac_parameters $ac_arg" ;;
  1024. esac
  1025. done
  1026. AC_SUBST(egg_ac_parameters)dnl
  1027. ])dnl
  1028. AC_DEFUN([AC_PROG_CC_WIN32], [
  1029. AC_MSG_CHECKING([how to access the Win32 API])
  1030. WIN32FLAGS=
  1031. AC_TRY_COMPILE(,[
  1032. #ifndef WIN32
  1033. # ifndef _WIN32
  1034. # error WIN32 or _WIN32 not defined
  1035. # endif
  1036. #endif], [
  1037. dnl found windows.h with the current config.
  1038. AC_MSG_RESULT([present by default])
  1039. ], [
  1040. dnl try -mwin32
  1041. ac_compile_save="$ac_compile"
  1042. dnl we change CC so config.log looks correct
  1043. save_CC="$CC"
  1044. ac_compile="$ac_compile -mwin32"
  1045. CC="$CC -mwin32"
  1046. AC_TRY_COMPILE(,[
  1047. #ifndef WIN32
  1048. # ifndef _WIN32
  1049. # error WIN32 or _WIN32 not defined
  1050. # endif
  1051. #endif], [
  1052. dnl found windows.h using -mwin32
  1053. AC_MSG_RESULT([found via -mwin32])
  1054. ac_compile="$ac_compile_save"
  1055. CC="$save_CC"
  1056. WIN32FLAGS="-mwin32"
  1057. ], [
  1058. ac_compile="$ac_compile_save"
  1059. CC="$save_CC"
  1060. AC_MSG_RESULT([not found])
  1061. ])
  1062. ])
  1063. ])
  1064. dnl