acinclude.m4 26 KB

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