configure.in
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:28k
源码类别:

通讯编程

开发平台:

Visual C++

  1. #! /bin/bash -norc
  2. dnl This file is an input file used by the GNU "autoconf" program to
  3. dnl generate the file "configure", which is run during Tcl installation
  4. dnl to configure the system for the local environment.
  5. #
  6. # RCS: @(#) $Id: configure.in,v 1.106.2.42 2008/02/06 15:25:27 dgp Exp $
  7. AC_INIT(../generic/tcl.h)
  8. AC_PREREQ(2.13)
  9. TCL_VERSION=8.4
  10. TCL_MAJOR_VERSION=8
  11. TCL_MINOR_VERSION=4
  12. TCL_PATCH_LEVEL=".18"
  13. VERSION=${TCL_VERSION}
  14. #------------------------------------------------------------------------
  15. # Handle the --prefix=... option
  16. #------------------------------------------------------------------------
  17. if test "${prefix}" = "NONE"; then
  18.     prefix=/usr/local
  19. fi
  20. if test "${exec_prefix}" = "NONE"; then
  21.     exec_prefix=$prefix
  22. fi
  23. # Make sure srcdir is fully qualified!
  24. srcdir=`cd $srcdir ; pwd`
  25. TCL_SRC_DIR=`cd $srcdir/..; pwd`
  26. #------------------------------------------------------------------------
  27. # Compress and/or soft link the manpages?
  28. #------------------------------------------------------------------------
  29. SC_CONFIG_MANPAGES([tcl])
  30. #------------------------------------------------------------------------
  31. # Standard compiler checks
  32. #------------------------------------------------------------------------
  33. # If the user did not set CFLAGS, set it now to keep
  34. # the AC_PROG_CC macro from adding "-g -O2".
  35. if test "${CFLAGS+set}" != "set" ; then
  36.     CFLAGS=""
  37. fi
  38. AC_PROG_CC
  39. #--------------------------------------------------------------------
  40. # Supply substitutes for missing POSIX header files.  Special notes:
  41. # - stdlib.h doesn't define strtol, strtoul, or
  42. #   strtod insome versions of SunOS
  43. # - some versions of string.h don't declare procedures such
  44. #   as strstr
  45. # Do this early, otherwise an autoconf bug throws errors on configure
  46. #--------------------------------------------------------------------
  47. SC_MISSING_POSIX_HEADERS
  48. #------------------------------------------------------------------------
  49. # If we're using GCC, see if the compiler understands -pipe.  If so, use it.
  50. # It makes compiling go faster.  (This is only a performance feature.)
  51. #------------------------------------------------------------------------
  52. if test -z "$no_pipe" && test -n "$GCC"; then
  53.     AC_CACHE_CHECK([if the compiler understands -pipe],
  54. tcl_cv_cc_pipe, [
  55. hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -pipe"
  56. AC_TRY_COMPILE(,, tcl_cv_cc_pipe=yes, tcl_cv_cc_pipe=no)
  57. CFLAGS=$hold_cflags])
  58.     if test $tcl_cv_cc_pipe = yes; then
  59. CFLAGS="$CFLAGS -pipe"
  60.     fi
  61. fi
  62. #------------------------------------------------------------------------
  63. # Threads support
  64. #------------------------------------------------------------------------
  65. SC_ENABLE_THREADS
  66. #--------------------------------------------------------------------
  67. # Look for libraries that we will need when compiling the Tcl shell
  68. #--------------------------------------------------------------------
  69. SC_TCL_LINK_LIBS
  70. # Add the threads support libraries
  71. LIBS="$LIBS$THREADS_LIBS"
  72. SC_ENABLE_SHARED
  73. #--------------------------------------------------------------------
  74. # The statements below define a collection of compile flags.  This
  75. # macro depends on the value of SHARED_BUILD, and should be called
  76. # after SC_ENABLE_SHARED checks the configure switches.
  77. #--------------------------------------------------------------------
  78. SC_CONFIG_CFLAGS
  79. SC_ENABLE_SYMBOLS
  80. TCL_DBGX=${DBGX}
  81. #--------------------------------------------------------------------
  82. # Detect what compiler flags to set for 64-bit support.
  83. #--------------------------------------------------------------------
  84. SC_TCL_EARLY_FLAGS
  85. SC_TCL_64BIT_FLAGS
  86. #--------------------------------------------------------------------
  87. # Check endianness because we can optimize comparisons of
  88. # Tcl_UniChar strings to memcmp on big-endian systems.
  89. #--------------------------------------------------------------------
  90. AC_C_BIGENDIAN
  91. #--------------------------------------------------------------------
  92. # Supply substitutes for missing POSIX library procedures, or
  93. # set flags so Tcl uses alternate procedures.
  94. #--------------------------------------------------------------------
  95. # Check if Posix compliant getcwd exists, if not we'll use getwd.
  96. AC_CHECK_FUNCS(getcwd, , [AC_DEFINE(USEGETWD)])
  97. # Nb: if getcwd uses popen and pwd(1) (like SunOS 4) we should really
  98. # define USEGETWD even if the posix getcwd exists. Add a test ?
  99. AC_REPLACE_FUNCS(opendir strstr strtol strtoll strtoull tmpnam waitpid)
  100. AC_CHECK_FUNC(strerror, , [AC_DEFINE(NO_STRERROR)])
  101. AC_CHECK_FUNC(getwd, , [AC_DEFINE(NO_GETWD)])
  102. AC_CHECK_FUNC(wait3, , [AC_DEFINE(NO_WAIT3)])
  103. AC_CHECK_FUNC(uname, , [AC_DEFINE(NO_UNAME)])
  104. if test "`uname -s`" = "Darwin" && test "${TCL_THREADS}" = 1 && 
  105. test "`uname -r | awk -F. '{print [$]1}'`" -lt 7; then
  106.     # prior to Darwin 7, realpath is not threadsafe, so don't
  107.     # use it when threads are enabled, c.f. bug # 711232
  108.     ac_cv_func_realpath=no
  109. fi
  110. AC_CHECK_FUNC(realpath, , [AC_DEFINE(NO_REALPATH)])
  111. #--------------------------------------------------------------------
  112. # Look for thread-safe variants of some library functions.
  113. #--------------------------------------------------------------------
  114. if test "${TCL_THREADS}" = 1; then
  115.     SC_TCL_GETPWUID_R
  116.     SC_TCL_GETPWNAM_R
  117.     SC_TCL_GETGRGID_R
  118.     SC_TCL_GETGRNAM_R
  119.     if test "`uname -s`" = "Darwin" && 
  120.     test "`uname -r | awk -F. '{print [$]1}'`" -gt 5; then
  121. # Starting with Darwin 6 (Mac OSX 10.2), gethostbyX 
  122. # are actually MT-safe as they always return pointers
  123. # from the TSD instead of the static storage.
  124. AC_DEFINE(HAVE_MTSAFE_GETHOSTBYNAME)
  125. AC_DEFINE(HAVE_MTSAFE_GETHOSTBYADDR)
  126.     elif test "`uname -s`" = "HP-UX" && 
  127.       test "`uname -r|sed -e 's|B.||' -e 's|..*$||'`" -gt 10; then
  128.         # Starting with HPUX 11.00 (we believe), gethostbyX
  129.         # are actually MT-safe as they always return pointers
  130. # from TSD instead of static storage.
  131. AC_DEFINE(HAVE_MTSAFE_GETHOSTBYNAME)
  132. AC_DEFINE(HAVE_MTSAFE_GETHOSTBYADDR)
  133.     else
  134. SC_TCL_GETHOSTBYNAME_R
  135. SC_TCL_GETHOSTBYADDR_R
  136.     fi
  137. fi
  138. #---------------------------------------------------------------------------
  139. # Determine which interface to use to talk to the serial port.
  140. # Note that #include lines must begin in leftmost column for
  141. # some compilers to recognize them as preprocessor directives.
  142. #---------------------------------------------------------------------------
  143. SC_SERIAL_PORT
  144. #--------------------------------------------------------------------
  145. # Include sys/select.h if it exists and if it supplies things
  146. # that appear to be useful and aren't already in sys/types.h.
  147. # This appears to be true only on the RS/6000 under AIX.  Some
  148. # systems like OSF/1 have a sys/select.h that's of no use, and
  149. # other systems like SCO UNIX have a sys/select.h that's
  150. # pernicious.  If "fd_set" isn't defined anywhere then set a
  151. # special flag.
  152. #--------------------------------------------------------------------
  153. AC_CACHE_CHECK([for fd_set in sys/types], tcl_cv_type_fd_set, [
  154.     AC_TRY_COMPILE([#include <sys/types.h>],[fd_set readMask, writeMask;],
  155. tcl_cv_type_fd_set=yes, tcl_cv_type_fd_set=no)])
  156. tcl_ok=$tcl_cv_type_fd_set
  157. if test $tcl_ok = no; then
  158.     AC_CACHE_CHECK([for fd_mask in sys/select], tcl_cv_grep_fd_mask, [
  159. AC_EGREP_HEADER(fd_mask, sys/select.h,
  160.      tcl_cv_grep_fd_mask=present, tcl_cv_grep_fd_mask=missing)])
  161.     if test $tcl_cv_grep_fd_mask = present; then
  162. AC_DEFINE(HAVE_SYS_SELECT_H)
  163. tcl_ok=yes
  164.     fi
  165. fi
  166. if test $tcl_ok = no; then
  167.     AC_DEFINE(NO_FD_SET)
  168. fi
  169. #------------------------------------------------------------------------------
  170. #       Find out all about time handling differences.
  171. #------------------------------------------------------------------------------
  172. SC_TIME_HANDLER
  173. #--------------------------------------------------------------------
  174. # Some systems (e.g., IRIX 4.0.5) lack the st_blksize field
  175. # in struct stat.  But we might be able to use fstatfs instead.
  176. #--------------------------------------------------------------------
  177. AC_STRUCT_ST_BLKSIZE
  178. AC_CHECK_FUNC(fstatfs, , [AC_DEFINE(NO_FSTATFS)])
  179. #--------------------------------------------------------------------
  180. #       Some system have no memcmp or it does not work with 8 bit
  181. #       data, this checks it and add memcmp.o to LIBOBJS if needed
  182. #--------------------------------------------------------------------
  183. AC_FUNC_MEMCMP
  184. #--------------------------------------------------------------------
  185. #       Some system like SunOS 4 and other BSD like systems
  186. #       have no memmove (we assume they have bcopy instead).
  187. #       {The replacement define is in compat/string.h}
  188. #--------------------------------------------------------------------
  189. AC_CHECK_FUNC(memmove, , [AC_DEFINE(NO_MEMMOVE) AC_DEFINE(NO_STRING_H)])
  190. #--------------------------------------------------------------------
  191. # On some systems strstr is broken: it returns a pointer even
  192. # even if the original string is empty.
  193. #--------------------------------------------------------------------
  194. dnl only run if AC_REPLACE_FUNCS(strstr) hasn't already added strstr.o
  195. if test "x${ac_cv_func_strstr}" = "xyes"; then
  196.     AC_CACHE_CHECK([proper strstr implementation], tcl_cv_strstr_unbroken, [
  197. AC_TRY_RUN([
  198. extern int strstr();
  199. int main()
  200. {
  201.     exit(strstr("test", "test") ? 1 : 0);
  202. }], tcl_cv_strstr_unbroken=ok, tcl_cv_strstr_unbroken=broken,
  203.     tcl_cv_strstr_unbroken=broken)])
  204.     if test $tcl_cv_strstr_unbroken = broken; then
  205.         LIBOBJS="$LIBOBJS strstr.o"
  206.     fi
  207. fi
  208. #--------------------------------------------------------------------
  209. # Check for strtoul function.  This is tricky because under some
  210. # versions of AIX strtoul returns an incorrect terminator
  211. # pointer for the string "0".
  212. #--------------------------------------------------------------------
  213. AC_CHECK_FUNC(strtoul, tcl_ok=1, tcl_ok=0)
  214. if test $tcl_ok = 1; then
  215.     AC_CACHE_CHECK([proper strtoul implementation], tcl_cv_strtoul_unbroken, [
  216. AC_TRY_RUN([
  217. extern int strtoul();
  218. int main()
  219. {
  220.     char *string = "0";
  221.     char *term;
  222.     int value;
  223.     value = strtoul(string, &term, 0);
  224.     if ((value != 0) || (term != (string+1))) {
  225. exit(1);
  226.     }
  227.     exit(0);
  228. }], tcl_cv_strtoul_unbroken=ok , tcl_cv_strtoul_unbroken=broken,
  229.     tcl_cv_strtoul_unbroken=broken)])
  230.     if test $tcl_cv_strtoul_unbroken = broken; then
  231. tcl_ok=0
  232.     fi
  233. fi
  234. if test $tcl_ok = 0; then
  235.     LIBOBJS="$LIBOBJS strtoul.o"
  236. fi
  237. #--------------------------------------------------------------------
  238. # Check for the strtod function.  This is tricky because in some
  239. # versions of Linux strtod mis-parses strings starting with "+".
  240. #--------------------------------------------------------------------
  241. AC_CHECK_FUNC(strtod, tcl_ok=1, tcl_ok=0)
  242. if test $tcl_ok = 1; then
  243.     AC_CACHE_CHECK([proper strtod implementation], tcl_cv_strtod_unbroken, [
  244. AC_TRY_RUN([
  245. extern double strtod();
  246. int main()
  247. {
  248.     char *string = " +69";
  249.     char *term;
  250.     double value;
  251.     value = strtod(string, &term);
  252.     if ((value != 69) || (term != (string+4))) {
  253. exit(1);
  254.     }
  255.     exit(0);
  256. }], tcl_cv_strtod_unbroken=ok , tcl_cv_strtod_unbroken=broken,
  257.     tcl_cv_strtod_unbroken=broken)])
  258.     if test $tcl_cv_strtod_unbroken = broken; then
  259. tcl_ok=0
  260.     fi
  261. fi
  262. if test $tcl_ok = 0; then
  263.     LIBOBJS="$LIBOBJS strtod.o"
  264. fi
  265. #--------------------------------------------------------------------
  266. # Under Solaris 2.4, strtod returns the wrong value for the
  267. # terminating character under some conditions.  Check for this
  268. # and if the problem exists use a substitute procedure
  269. # "fixstrtod" that corrects the error.
  270. #--------------------------------------------------------------------
  271. SC_BUGGY_STRTOD
  272. #--------------------------------------------------------------------
  273. # Check for various typedefs and provide substitutes if
  274. # they don't exist.
  275. #--------------------------------------------------------------------
  276. AC_TYPE_MODE_T
  277. AC_TYPE_PID_T
  278. AC_TYPE_SIZE_T
  279. AC_TYPE_UID_T
  280. AC_CACHE_CHECK([for socklen_t], ac_cv_type_socklen_t, [
  281.     AC_EGREP_CPP(changequote(<<,>>)dnl
  282. <<(^|[^a-zA-Z_0-9])socklen_t[^a-zA-Z_0-9]>>dnl
  283. changequote([,]),[
  284.     #include <sys/types.h>
  285.     #include <sys/socket.h>
  286.     #if STDC_HEADERS
  287.     #include <stdlib.h>
  288.     #include <stddef.h>
  289.     #endif
  290.     ], ac_cv_type_socklen_t=yes, ac_cv_type_socklen_t=no)])
  291. if test $ac_cv_type_socklen_t = no; then
  292.     AC_DEFINE(socklen_t, unsigned)
  293. fi
  294. #--------------------------------------------------------------------
  295. # If a system doesn't have an opendir function (man, that's old!)
  296. # then we have to supply a different version of dirent.h which
  297. # is compatible with the substitute version of opendir that's
  298. # provided.  This version only works with V7-style directories.
  299. #--------------------------------------------------------------------
  300. AC_CHECK_FUNC(opendir, , [AC_DEFINE(USE_DIRENT2_H)])
  301. #--------------------------------------------------------------------
  302. # The check below checks whether <sys/wait.h> defines the type
  303. # "union wait" correctly.  It's needed because of weirdness in
  304. # HP-UX where "union wait" is defined in both the BSD and SYS-V
  305. # environments.  Checking the usability of WIFEXITED seems to do
  306. # the trick.
  307. #--------------------------------------------------------------------
  308. AC_CACHE_CHECK([union wait], tcl_cv_union_wait, [
  309.     AC_TRY_LINK([#include <sys/types.h> 
  310. #include <sys/wait.h>], [
  311. union wait x;
  312. WIFEXITED(x); /* Generates compiler error if WIFEXITED
  313.  * uses an int. */
  314.     ], tcl_cv_union_wait=yes, tcl_cv_union_wait=no)])
  315. if test $tcl_cv_union_wait = no; then
  316.     AC_DEFINE(NO_UNION_WAIT)
  317. fi
  318. #--------------------------------------------------------------------
  319. # Check whether there is an strncasecmp function on this system.
  320. # This is a bit tricky because under SCO it's in -lsocket and
  321. # under Sequent Dynix it's in -linet.
  322. #--------------------------------------------------------------------
  323. AC_CHECK_FUNC(strncasecmp, tcl_ok=1, tcl_ok=0)
  324. if test "$tcl_ok" = 0; then
  325.     AC_CHECK_LIB(socket, strncasecmp, tcl_ok=1, tcl_ok=0)
  326. fi
  327. if test "$tcl_ok" = 0; then
  328.     AC_CHECK_LIB(inet, strncasecmp, tcl_ok=1, tcl_ok=0)
  329. fi
  330. if test "$tcl_ok" = 0; then
  331.     LIBOBJS="$LIBOBJS strncasecmp.o"
  332. fi
  333. #--------------------------------------------------------------------
  334. # The code below deals with several issues related to gettimeofday:
  335. # 1. Some systems don't provide a gettimeofday function at all
  336. #    (set NO_GETTOD if this is the case).
  337. # 2. SGI systems don't use the BSD form of the gettimeofday function,
  338. #    but they have a BSDgettimeofday function that can be used instead.
  339. # 3. See if gettimeofday is declared in the <sys/time.h> header file.
  340. #    if not, set the GETTOD_NOT_DECLARED flag so that tclPort.h can
  341. #    declare it.
  342. #--------------------------------------------------------------------
  343. AC_CHECK_FUNC(BSDgettimeofday,
  344.     [AC_DEFINE(HAVE_BSDGETTIMEOFDAY)], [
  345.     AC_CHECK_FUNC(gettimeofday, , [AC_DEFINE(NO_GETTOD)])
  346. ])
  347. AC_CACHE_CHECK([for gettimeofday declaration], tcl_cv_grep_gettimeofday, [
  348.     AC_EGREP_HEADER(gettimeofday, sys/time.h,
  349. tcl_cv_grep_gettimeofday=present, tcl_cv_grep_gettimeofday=missing)])
  350. if test $tcl_cv_grep_gettimeofday = missing ; then
  351.     AC_DEFINE(GETTOD_NOT_DECLARED)
  352. fi
  353. #--------------------------------------------------------------------
  354. # The following code checks to see whether it is possible to get
  355. # signed chars on this platform.  This is needed in order to
  356. # properly generate sign-extended ints from character values.
  357. #--------------------------------------------------------------------
  358. AC_C_CHAR_UNSIGNED
  359. AC_CACHE_CHECK([signed char declarations], tcl_cv_char_signed, [
  360.     AC_TRY_COMPILE(, [
  361. signed char *p;
  362. p = 0;
  363. ], tcl_cv_char_signed=yes, tcl_cv_char_signed=no)])
  364. if test $tcl_cv_char_signed = yes; then
  365.     AC_DEFINE(HAVE_SIGNED_CHAR)
  366. fi
  367. #--------------------------------------------------------------------
  368. #  Does putenv() copy or not?  We need to know to avoid memory leaks.
  369. #--------------------------------------------------------------------
  370. AC_CACHE_CHECK([for a putenv() that copies the buffer], tcl_cv_putenv_copy, [
  371.     AC_TRY_RUN([
  372. #include <stdlib.h>
  373. #define OURVAR "havecopy=yes"
  374. int main (int argc, char *argv[])
  375. {
  376.     char *foo, *bar;
  377.     foo = (char *)strdup(OURVAR);
  378.     putenv(foo);
  379.     strcpy((char *)(strchr(foo, '=') + 1), "no");
  380.     bar = getenv("havecopy");
  381.     if (!strcmp(bar, "no")) {
  382. /* doesnt copy */
  383. return 0;
  384.     } else {
  385. /* does copy */
  386. return 1;
  387.     }
  388. }
  389.     ],
  390.     tcl_cv_putenv_copy=no,
  391.     tcl_cv_putenv_copy=yes,
  392.     tcl_cv_putenv_copy=no)])
  393. if test $tcl_cv_putenv_copy = yes; then
  394.     AC_DEFINE(HAVE_PUTENV_THAT_COPIES)
  395. fi
  396. #--------------------------------------------------------------------
  397. # Check for support of nl_langinfo function
  398. #--------------------------------------------------------------------
  399. SC_ENABLE_LANGINFO
  400. #--------------------------------------------------------------------
  401. # Darwin specific API checks and defines
  402. #--------------------------------------------------------------------
  403. if test "`uname -s`" = "Darwin" ; then
  404.     AC_CHECK_HEADERS(copyfile.h)
  405.     AC_CHECK_FUNCS(copyfile)
  406.     if test $tcl_corefoundation = yes; then
  407. AC_CHECK_HEADERS(libkern/OSAtomic.h)
  408. AC_CHECK_FUNCS(OSSpinLockLock)
  409. AC_CHECK_FUNCS(pthread_atfork)
  410.     fi
  411.     AC_DEFINE(USE_VFORK)
  412.     AC_DEFINE(TCL_DEFAULT_ENCODING, "utf-8")
  413.     AC_DEFINE(TCL_LOAD_FROM_MEMORY)
  414.     AC_CHECK_HEADERS(AvailabilityMacros.h)
  415.     if test "$ac_cv_header_AvailabilityMacros_h" = yes; then
  416. AC_CACHE_CHECK([if weak import is available], tcl_cv_cc_weak_import, [
  417.     hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror"
  418.     AC_TRY_LINK([
  419.     #ifdef __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
  420.     #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1020
  421.     #error __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1020
  422.     #endif
  423.     #elif MAC_OS_X_VERSION_MIN_REQUIRED < 1020
  424.     #error MAC_OS_X_VERSION_MIN_REQUIRED < 1020
  425.     #endif
  426.     int rand(void) __attribute__((weak_import));
  427. ], [rand();],
  428. tcl_cv_cc_weak_import=yes, tcl_cv_cc_weak_import=no)
  429.     CFLAGS=$hold_cflags])
  430. if test $tcl_cv_cc_weak_import = yes; then
  431.     AC_DEFINE(HAVE_WEAK_IMPORT)
  432. fi
  433.     fi
  434. fi
  435. #--------------------------------------------------------------------
  436. # Check for support of fts functions (readdir replacement)
  437. #--------------------------------------------------------------------
  438. AC_CACHE_CHECK([for fts], tcl_cv_api_fts, [
  439.     AC_TRY_LINK([
  440.     #include <sys/param.h>
  441.     #include <sys/stat.h>
  442.     #include <fts.h>
  443. ], [
  444.     char*const p[2] = {"/", NULL};
  445.     FTS *f = fts_open(p, FTS_PHYSICAL|FTS_NOCHDIR|FTS_NOSTAT, NULL);
  446.     FTSENT *e = fts_read(f); fts_close(f);
  447. ], tcl_cv_api_fts=yes, tcl_cv_api_fts=no)])
  448. if test $tcl_cv_api_fts = yes; then
  449.     AC_DEFINE(HAVE_FTS)
  450. fi
  451. #--------------------------------------------------------------------
  452. # The statements below check for systems where POSIX-style
  453. # non-blocking I/O (O_NONBLOCK) doesn't work or is unimplemented. 
  454. # On these systems (mostly older ones), use the old BSD-style
  455. # FIONBIO approach instead.
  456. #--------------------------------------------------------------------
  457. SC_BLOCKING_STYLE
  458. #--------------------------------------------------------------------
  459. # DTrace support
  460. #--------------------------------------------------------------------
  461. AC_ARG_ENABLE(dtrace,
  462.     [  --enable-dtrace         build with DTrace support [--disable-dtrace]],
  463.     [tcl_ok=$enableval], [tcl_ok=no])
  464. if test $tcl_ok = yes; then
  465.     AC_CHECK_HEADER(sys/sdt.h, [tcl_ok=yes], [tcl_ok=no])
  466. fi
  467. if test $tcl_ok = yes; then
  468.     AC_PATH_PROG(DTRACE, dtrace,, [$PATH:/usr/sbin])
  469.     test -z "$ac_cv_path_DTRACE" && tcl_ok=no
  470. fi
  471. AC_MSG_CHECKING([whether to enable DTrace support])
  472. if test $tcl_ok = yes; then
  473.     AC_DEFINE(USE_DTRACE)
  474.     DTRACE_SRC="${DTRACE_SRC}"
  475.     DTRACE_HDR="${DTRACE_HDR}"
  476.     if test "`uname -s`" != "Darwin" ; then
  477. DTRACE_OBJ="${DTRACE_OBJ}"
  478.     fi
  479. fi
  480. AC_MSG_RESULT([$tcl_ok])
  481. #--------------------------------------------------------------------
  482. # The statements below define a collection of symbols related to
  483. # building libtcl as a shared library instead of a static library.
  484. #--------------------------------------------------------------------
  485. TCL_UNSHARED_LIB_SUFFIX=${UNSHARED_LIB_SUFFIX}
  486. TCL_SHARED_LIB_SUFFIX=${SHARED_LIB_SUFFIX}
  487. eval "TCL_LIB_FILE=libtcl${LIB_SUFFIX}"
  488. # tclConfig.sh needs a version of the _LIB_SUFFIX that has been eval'ed
  489. # so that the backslashes quoting the DBX braces are dropped.
  490. # Trick to replace DBGX with TCL_DBGX
  491. DBGX='${TCL_DBGX}'
  492. eval "TCL_LIB_FILE=${TCL_LIB_FILE}"
  493. TCL_LIBRARY='$(prefix)/lib/tcl$(VERSION)'
  494. PRIVATE_INCLUDE_DIR='$(includedir)'
  495. HTML_DIR='$(DISTDIR)/html'
  496. # Note:  in the following variable, it's important to use the absolute
  497. # path name of the Tcl directory rather than "..":  this is because
  498. # AIX remembers this path and will attempt to use it at run-time to look
  499. # up the Tcl library.
  500. if test "`uname -s`" = "Darwin" ; then
  501.     SC_ENABLE_FRAMEWORK
  502.     TCL_SHLIB_LD_EXTRAS="-compatibility_version ${TCL_VERSION} -current_version ${TCL_VERSION}`echo ${TCL_PATCH_LEVEL} | awk ['{match($0, "\.[0-9]+"); print substr($0,RSTART,RLENGTH)}']`"
  503.     TCL_SHLIB_LD_EXTRAS="${TCL_SHLIB_LD_EXTRAS}"' -install_name ${DYLIB_INSTALL_DIR}/${TCL_LIB_FILE}'
  504.     echo "$LDFLAGS " | grep -q -- '-prebind ' && TCL_SHLIB_LD_EXTRAS="${TCL_SHLIB_LD_EXTRAS}"' -seg1addr 0xa000000'
  505.     TCL_SHLIB_LD_EXTRAS="${TCL_SHLIB_LD_EXTRAS}"' -sectcreate __TEXT __info_plist Tcl-Info.plist'
  506.     EXTRA_TCLSH_LIBS='-sectcreate __TEXT __info_plist Tclsh-Info.plist'
  507.     EXTRA_APP_CC_SWITCHES='-mdynamic-no-pic'
  508.     tcl_config_files="${tcl_config_files} [Tcl-Info.plist:../macosx/Tcl-Info.plist.in Tclsh-Info.plist:../macosx/Tclsh-Info.plist.in]"
  509.     TCL_YEAR="`date +%Y`"
  510. fi
  511. if test "$FRAMEWORK_BUILD" = "1" ; then
  512.     AC_DEFINE(TCL_FRAMEWORK)
  513.     # Construct a fake local framework structure to make linking with
  514.     # '-framework Tcl' and running of tcltest work
  515.     AC_OUTPUT_COMMANDS([test "$FRAMEWORK_BUILD" = "1" && n=Tcl &&
  516. f=$n.framework && v=Versions/$VERSION &&
  517. echo "creating $f" && rm -rf $f && mkdir -p $f/$v/Resources &&
  518. ln -s $v/$n $v/Resources $f && ln -s ../../../$n $f/$v &&
  519. ln -s ../../../../$n-Info.plist $f/$v/Resources/Info.plist &&
  520. unset n f v
  521.     ], [VERSION=${TCL_VERSION} FRAMEWORK_BUILD=${FRAMEWORK_BUILD}])
  522.     LD_LIBRARY_PATH_VAR="DYLD_FRAMEWORK_PATH"
  523.     if test "${libdir}" = '${exec_prefix}/lib'; then
  524.         # override libdir default
  525.         libdir="/Library/Frameworks"
  526.     fi
  527.     TCL_LIB_FILE="Tcl"
  528.     TCL_LIB_FLAG="-framework Tcl"
  529.     TCL_BUILD_LIB_SPEC="-F`pwd` -framework Tcl"
  530.     TCL_LIB_SPEC="-F${libdir} -framework Tcl"
  531.     libdir="${libdir}/Tcl.framework/Versions/${VERSION}"
  532.     TCL_LIBRARY="${libdir}/Resources/Scripts"
  533.     includedir="${libdir}/Headers"
  534.     PRIVATE_INCLUDE_DIR="${libdir}/PrivateHeaders"
  535.     HTML_DIR="${libdir}/Resources/Documentation/Reference/Tcl"
  536.     EXTRA_INSTALL="install-private-headers html-tcl"
  537.     EXTRA_BUILD_HTML='@ln -fs contents.htm $(HTML_INSTALL_DIR)/TclTOC.html' 
  538.     EXTRA_INSTALL_BINARIES='@echo "Installing Info.plist to $(LIB_INSTALL_DIR)/Resources" && mkdir -p "$(LIB_INSTALL_DIR)/Resources" && $(INSTALL_DATA) Tcl-Info.plist "$(LIB_INSTALL_DIR)/Resources/Info.plist"'
  539.     EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Installing license.terms to $(LIB_INSTALL_DIR)/Resources" && $(INSTALL_DATA) "$(TOP_DIR)/license.terms" "$(LIB_INSTALL_DIR)/Resources"'
  540.     EXTRA_INSTALL_BINARIES="$EXTRA_INSTALL_BINARIES"' && echo "Finalizing Tcl.framework" && rm -f "$(LIB_INSTALL_DIR)/../Current" && ln -s "$(VERSION)" "$(LIB_INSTALL_DIR)/../Current" && for f in "$(LIB_FILE)" tclConfig.sh Resources Headers PrivateHeaders; do rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/Current/$$f" "$(LIB_INSTALL_DIR)/../.."; done && f="$(STUB_LIB_FILE)" && rm -f "$(LIB_INSTALL_DIR)/../../$$f" && ln -s "Versions/$(VERSION)/$$f" "$(LIB_INSTALL_DIR)/../.."'
  541.     # Don't use AC_DEFINE for the following as the framework version define 
  542.     # needs to go into the Makefile even when using autoheader, so that we  
  543.     # can pick up a potential make override of VERSION. Also, don't put this
  544.     # into CFLAGS as it should not go into tclConfig.sh
  545.     EXTRA_CC_SWITCHES='-DTCL_FRAMEWORK_VERSION="$(VERSION)"'
  546. else
  547.     # libdir must be a fully qualified path and not ${exec_prefix}/lib
  548.     eval libdir="$libdir"
  549.     if test "$SHARED_BUILD" = "0" || test "$TCL_NEEDS_EXP_FILE" = "0"; then
  550.         if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
  551.             TCL_LIB_FLAG="-ltcl${TCL_VERSION}${TCL_DBGX}"
  552.         else
  553.             TCL_LIB_FLAG="-ltcl`echo ${TCL_VERSION} | tr -d .`${TCL_DBGX}"
  554.         fi
  555.         TCL_BUILD_LIB_SPEC="-L`pwd` ${TCL_LIB_FLAG}"
  556.         TCL_LIB_SPEC="-L${libdir} ${TCL_LIB_FLAG}"
  557.     else
  558.         TCL_BUILD_EXP_FILE="lib.exp"
  559.         eval "TCL_EXP_FILE=libtcl${TCL_EXPORT_FILE_SUFFIX}"
  560.     
  561.         # Replace DBGX with TCL_DBGX
  562.         eval "TCL_EXP_FILE="${TCL_EXP_FILE}""
  563.         
  564.         if test "$GCC" = "yes" ; then
  565.             TCL_BUILD_LIB_SPEC="-Wl,-bI:`pwd`/${TCL_BUILD_EXP_FILE} -L`pwd`"
  566.             TCL_LIB_SPEC="-Wl,-bI:${libdir}/${TCL_EXP_FILE} -L`pwd`"
  567.         else
  568.             TCL_BUILD_LIB_SPEC="-bI:`pwd`/${TCL_BUILD_EXP_FILE}"
  569.             TCL_LIB_SPEC="-bI:${libdir}/${TCL_EXP_FILE}"
  570.         fi
  571.     fi
  572. fi
  573. VERSION='${VERSION}'
  574. eval "CFG_TCL_SHARED_LIB_SUFFIX=${TCL_SHARED_LIB_SUFFIX}"
  575. eval "CFG_TCL_UNSHARED_LIB_SUFFIX=${TCL_UNSHARED_LIB_SUFFIX}"
  576. eval "CFG_TCL_EXPORT_FILE_SUFFIX=${TCL_EXPORT_FILE_SUFFIX}"
  577. VERSION=${TCL_VERSION}
  578. #--------------------------------------------------------------------
  579. # The statements below define the symbol TCL_PACKAGE_PATH, which
  580. # gives a list of directories that may contain packages.  The list
  581. # consists of one directory for machine-dependent binaries and
  582. # another for platform-independent scripts.
  583. #--------------------------------------------------------------------
  584. if test "$FRAMEWORK_BUILD" = "1" ; then
  585.     test -z "$TCL_PACKAGE_PATH" && 
  586.         TCL_PACKAGE_PATH="~/Library/Tcl /Library/Tcl /Network/Library/Tcl /System/Library/Tcl ~/Library/Frameworks /Library/Frameworks /Network/Library/Frameworks /System/Library/Frameworks"
  587. elif test "$prefix" != "$exec_prefix"; then
  588.     TCL_PACKAGE_PATH="${libdir} ${prefix}/lib ${TCL_PACKAGE_PATH}"
  589. else
  590.     TCL_PACKAGE_PATH="${prefix}/lib ${TCL_PACKAGE_PATH}"
  591. fi
  592. #--------------------------------------------------------------------
  593. #       The statements below define various symbols relating to Tcl
  594. #       stub support.
  595. #--------------------------------------------------------------------
  596. # Replace ${VERSION} with contents of ${TCL_VERSION}
  597. eval "TCL_STUB_LIB_FILE=libtclstub${TCL_UNSHARED_LIB_SUFFIX}"
  598. # Replace DBGX with TCL_DBGX
  599. eval "TCL_STUB_LIB_FILE="${TCL_STUB_LIB_FILE}""
  600. eval "TCL_STUB_LIB_DIR=${libdir}"
  601. if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
  602.     TCL_STUB_LIB_FLAG="-ltclstub${TCL_VERSION}${TCL_DBGX}"
  603. else
  604.     TCL_STUB_LIB_FLAG="-ltclstub`echo ${TCL_VERSION} | tr -d .`${TCL_DBGX}"
  605. fi
  606. TCL_BUILD_STUB_LIB_SPEC="-L`pwd` ${TCL_STUB_LIB_FLAG}"
  607. TCL_STUB_LIB_SPEC="-L${TCL_STUB_LIB_DIR} ${TCL_STUB_LIB_FLAG}"
  608. TCL_BUILD_STUB_LIB_PATH="`pwd`/${TCL_STUB_LIB_FILE}"
  609. TCL_STUB_LIB_PATH="${TCL_STUB_LIB_DIR}/${TCL_STUB_LIB_FILE}"
  610. # Install time header dir can be set via --includedir
  611. eval "TCL_INCLUDE_SPEC="-I${includedir}""
  612. #------------------------------------------------------------------------
  613. # tclConfig.sh refers to this by a different name
  614. #------------------------------------------------------------------------
  615. TCL_SHARED_BUILD=${SHARED_BUILD}
  616. AC_SUBST(TCL_VERSION)
  617. AC_SUBST(TCL_MAJOR_VERSION)
  618. AC_SUBST(TCL_MINOR_VERSION)
  619. AC_SUBST(TCL_PATCH_LEVEL)
  620. AC_SUBST(TCL_YEAR)
  621. AC_SUBST(TCL_LIB_FILE)
  622. AC_SUBST(TCL_LIB_FLAG)
  623. AC_SUBST(TCL_LIB_SPEC)
  624. AC_SUBST(TCL_STUB_LIB_FILE)
  625. AC_SUBST(TCL_STUB_LIB_FLAG)
  626. AC_SUBST(TCL_STUB_LIB_SPEC)
  627. AC_SUBST(TCL_STUB_LIB_PATH)
  628. AC_SUBST(TCL_INCLUDE_SPEC)
  629. AC_SUBST(TCL_BUILD_STUB_LIB_SPEC)
  630. AC_SUBST(TCL_BUILD_STUB_LIB_PATH)
  631. AC_SUBST(TCL_SRC_DIR)
  632. AC_SUBST(TCL_DBGX)
  633. AC_SUBST(CFG_TCL_SHARED_LIB_SUFFIX)
  634. AC_SUBST(CFG_TCL_UNSHARED_LIB_SUFFIX)
  635. AC_SUBST(CFG_TCL_EXPORT_FILE_SUFFIX)
  636. AC_SUBST(TCL_SHARED_BUILD)
  637. AC_SUBST(LD_LIBRARY_PATH_VAR)
  638. AC_SUBST(TCL_BUILD_LIB_SPEC)
  639. AC_SUBST(TCL_NEEDS_EXP_FILE)
  640. AC_SUBST(TCL_BUILD_EXP_FILE)
  641. AC_SUBST(TCL_EXP_FILE)
  642. AC_SUBST(TCL_LIB_VERSIONS_OK)
  643. AC_SUBST(TCL_SHARED_LIB_SUFFIX)
  644. AC_SUBST(TCL_UNSHARED_LIB_SUFFIX)
  645. AC_SUBST(TCL_HAS_LONGLONG)
  646. AC_SUBST(DTRACE_SRC)
  647. AC_SUBST(DTRACE_HDR)
  648. AC_SUBST(DTRACE_OBJ)
  649. AC_SUBST(BUILD_DLTEST)
  650. AC_SUBST(TCL_PACKAGE_PATH)
  651. AC_SUBST(TCL_LIBRARY)
  652. AC_SUBST(PRIVATE_INCLUDE_DIR)
  653. AC_SUBST(HTML_DIR)
  654. AC_SUBST(EXTRA_CC_SWITCHES)
  655. AC_SUBST(EXTRA_APP_CC_SWITCHES)
  656. AC_SUBST(EXTRA_INSTALL)
  657. AC_SUBST(EXTRA_INSTALL_BINARIES)
  658. AC_SUBST(EXTRA_BUILD_HTML)
  659. AC_SUBST(EXTRA_TCLSH_LIBS)
  660. SC_OUTPUT_COMMANDS_PRE
  661. tcl_config_files="${tcl_config_files} [Makefile dltest/Makefile tclConfig.sh]"
  662. AC_OUTPUT([${tcl_config_files}])