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

通讯编程

开发平台:

Visual C++

  1. #------------------------------------------------------------------------
  2. # SC_PATH_TCLCONFIG --
  3. #
  4. # Locate the tclConfig.sh file and perform a sanity check on
  5. # the Tcl compile flags
  6. #
  7. # Arguments:
  8. # none
  9. #
  10. # Results:
  11. #
  12. # Adds the following arguments to configure:
  13. # --with-tcl=...
  14. #
  15. # Defines the following vars:
  16. # TCL_BIN_DIR Full path to the directory containing
  17. # the tclConfig.sh file
  18. #------------------------------------------------------------------------
  19. AC_DEFUN([SC_PATH_TCLCONFIG], [
  20.     #
  21.     # Ok, lets find the tcl configuration
  22.     # First, look for one uninstalled.
  23.     # the alternative search directory is invoked by --with-tcl
  24.     #
  25.     if test x"${no_tcl}" = x ; then
  26. # we reset no_tcl in case something fails here
  27. no_tcl=true
  28. AC_ARG_WITH(tcl, [  --with-tcl              directory containing tcl configuration (tclConfig.sh)], with_tclconfig=${withval})
  29. AC_MSG_CHECKING([for Tcl configuration])
  30. AC_CACHE_VAL(ac_cv_c_tclconfig,[
  31.     # First check to see if --with-tcl was specified.
  32.     if test x"${with_tclconfig}" != x ; then
  33. if test -f "${with_tclconfig}/tclConfig.sh" ; then
  34.     ac_cv_c_tclconfig=`(cd ${with_tclconfig}; pwd)`
  35. else
  36.     AC_MSG_ERROR([${with_tclconfig} directory doesn't contain tclConfig.sh])
  37. fi
  38.     fi
  39.     # then check for a private Tcl installation
  40.     if test x"${ac_cv_c_tclconfig}" = x ; then
  41. for i in 
  42. ../tcl 
  43. `ls -dr ../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` 
  44. `ls -dr ../tcl[[8-9]].[[0-9]] 2>/dev/null` 
  45. `ls -dr ../tcl[[8-9]].[[0-9]]* 2>/dev/null` 
  46. ../../tcl 
  47. `ls -dr ../../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` 
  48. `ls -dr ../../tcl[[8-9]].[[0-9]] 2>/dev/null` 
  49. `ls -dr ../../tcl[[8-9]].[[0-9]]* 2>/dev/null` 
  50. ../../../tcl 
  51. `ls -dr ../../../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` 
  52. `ls -dr ../../../tcl[[8-9]].[[0-9]] 2>/dev/null` 
  53. `ls -dr ../../../tcl[[8-9]].[[0-9]]* 2>/dev/null` ; do
  54.     if test -f "$i/unix/tclConfig.sh" ; then
  55. ac_cv_c_tclconfig=`(cd $i/unix; pwd)`
  56. break
  57.     fi
  58. done
  59.     fi
  60.     # on Darwin, check in Framework installation locations
  61.     if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tclconfig}" = x ; then
  62. for i in `ls -d ~/Library/Frameworks 2>/dev/null` 
  63. `ls -d /Library/Frameworks 2>/dev/null` 
  64. `ls -d /Network/Library/Frameworks 2>/dev/null` 
  65. `ls -d /System/Library/Frameworks 2>/dev/null` 
  66. ; do
  67.     if test -f "$i/Tcl.framework/tclConfig.sh" ; then
  68. ac_cv_c_tclconfig=`(cd $i/Tcl.framework; pwd)`
  69. break
  70.     fi
  71. done
  72.     fi
  73.     # check in a few common install locations
  74.     if test x"${ac_cv_c_tclconfig}" = x ; then
  75. for i in `ls -d ${libdir} 2>/dev/null` 
  76. `ls -d ${exec_prefix}/lib 2>/dev/null` 
  77. `ls -d ${prefix}/lib 2>/dev/null` 
  78. `ls -d /usr/local/lib 2>/dev/null` 
  79. `ls -d /usr/contrib/lib 2>/dev/null` 
  80. `ls -d /usr/lib 2>/dev/null` 
  81. ; do
  82.     if test -f "$i/tclConfig.sh" ; then
  83. ac_cv_c_tclconfig=`(cd $i; pwd)`
  84. break
  85.     fi
  86. done
  87.     fi
  88.     # check in a few other private locations
  89.     if test x"${ac_cv_c_tclconfig}" = x ; then
  90. for i in 
  91. ${srcdir}/../tcl 
  92. `ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` 
  93. `ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]] 2>/dev/null` 
  94. `ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]]* 2>/dev/null` ; do
  95.     if test -f "$i/unix/tclConfig.sh" ; then
  96.     ac_cv_c_tclconfig=`(cd $i/unix; pwd)`
  97.     break
  98. fi
  99. done
  100.     fi
  101. ])
  102. if test x"${ac_cv_c_tclconfig}" = x ; then
  103.     TCL_BIN_DIR="# no Tcl configs found"
  104.     AC_MSG_WARN([Can't find Tcl configuration definitions])
  105.     exit 0
  106. else
  107.     no_tcl=
  108.     TCL_BIN_DIR=${ac_cv_c_tclconfig}
  109.     AC_MSG_RESULT([found ${TCL_BIN_DIR}/tclConfig.sh])
  110. fi
  111.     fi
  112. ])
  113. #------------------------------------------------------------------------
  114. # SC_PATH_TKCONFIG --
  115. #
  116. # Locate the tkConfig.sh file
  117. #
  118. # Arguments:
  119. # none
  120. #
  121. # Results:
  122. #
  123. # Adds the following arguments to configure:
  124. # --with-tk=...
  125. #
  126. # Defines the following vars:
  127. # TK_BIN_DIR Full path to the directory containing
  128. # the tkConfig.sh file
  129. #------------------------------------------------------------------------
  130. AC_DEFUN([SC_PATH_TKCONFIG], [
  131.     #
  132.     # Ok, lets find the tk configuration
  133.     # First, look for one uninstalled.
  134.     # the alternative search directory is invoked by --with-tk
  135.     #
  136.     if test x"${no_tk}" = x ; then
  137. # we reset no_tk in case something fails here
  138. no_tk=true
  139. AC_ARG_WITH(tk, [  --with-tk               directory containing tk configuration (tkConfig.sh)], with_tkconfig=${withval})
  140. AC_MSG_CHECKING([for Tk configuration])
  141. AC_CACHE_VAL(ac_cv_c_tkconfig,[
  142.     # First check to see if --with-tkconfig was specified.
  143.     if test x"${with_tkconfig}" != x ; then
  144. if test -f "${with_tkconfig}/tkConfig.sh" ; then
  145.     ac_cv_c_tkconfig=`(cd ${with_tkconfig}; pwd)`
  146. else
  147.     AC_MSG_ERROR([${with_tkconfig} directory doesn't contain tkConfig.sh])
  148. fi
  149.     fi
  150.     # then check for a private Tk library
  151.     if test x"${ac_cv_c_tkconfig}" = x ; then
  152. for i in 
  153. ../tk 
  154. `ls -dr ../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` 
  155. `ls -dr ../tk[[8-9]].[[0-9]] 2>/dev/null` 
  156. `ls -dr ../tk[[8-9]].[[0-9]]* 2>/dev/null` 
  157. ../../tk 
  158. `ls -dr ../../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` 
  159. `ls -dr ../../tk[[8-9]].[[0-9]] 2>/dev/null` 
  160. `ls -dr ../../tk[[8-9]].[[0-9]]* 2>/dev/null` 
  161. ../../../tk 
  162. `ls -dr ../../../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` 
  163. `ls -dr ../../../tk[[8-9]].[[0-9]] 2>/dev/null` 
  164. `ls -dr ../../../tk[[8-9]].[[0-9]]* 2>/dev/null` ; do
  165.     if test -f "$i/unix/tkConfig.sh" ; then
  166. ac_cv_c_tkconfig=`(cd $i/unix; pwd)`
  167. break
  168.     fi
  169. done
  170.     fi
  171.     # on Darwin, check in Framework installation locations
  172.     if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tkconfig}" = x ; then
  173. for i in `ls -d ~/Library/Frameworks 2>/dev/null` 
  174. `ls -d /Library/Frameworks 2>/dev/null` 
  175. `ls -d /Network/Library/Frameworks 2>/dev/null` 
  176. `ls -d /System/Library/Frameworks 2>/dev/null` 
  177. ; do
  178.     if test -f "$i/Tk.framework/tkConfig.sh" ; then
  179. ac_cv_c_tkconfig=`(cd $i/Tk.framework; pwd)`
  180. break
  181.     fi
  182. done
  183.     fi
  184.     # check in a few common install locations
  185.     if test x"${ac_cv_c_tkconfig}" = x ; then
  186. for i in `ls -d ${libdir} 2>/dev/null` 
  187. `ls -d ${exec_prefix}/lib 2>/dev/null` 
  188. `ls -d ${prefix}/lib 2>/dev/null` 
  189. `ls -d /usr/local/lib 2>/dev/null` 
  190. `ls -d /usr/contrib/lib 2>/dev/null` 
  191. `ls -d /usr/lib 2>/dev/null` 
  192. ; do
  193.     if test -f "$i/tkConfig.sh" ; then
  194. ac_cv_c_tkconfig=`(cd $i; pwd)`
  195. break
  196.     fi
  197. done
  198.     fi
  199.     # check in a few other private locations
  200.     if test x"${ac_cv_c_tkconfig}" = x ; then
  201. for i in 
  202. ${srcdir}/../tk 
  203. `ls -dr ${srcdir}/../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` 
  204. `ls -dr ${srcdir}/../tk[[8-9]].[[0-9]] 2>/dev/null` 
  205. `ls -dr ${srcdir}/../tk[[8-9]].[[0-9]]* 2>/dev/null` ; do
  206.     if test -f "$i/unix/tkConfig.sh" ; then
  207. ac_cv_c_tkconfig=`(cd $i/unix; pwd)`
  208. break
  209.     fi
  210. done
  211.     fi
  212. ])
  213. if test x"${ac_cv_c_tkconfig}" = x ; then
  214.     TK_BIN_DIR="# no Tk configs found"
  215.     AC_MSG_WARN([Can't find Tk configuration definitions])
  216.     exit 0
  217. else
  218.     no_tk=
  219.     TK_BIN_DIR=${ac_cv_c_tkconfig}
  220.     AC_MSG_RESULT([found ${TK_BIN_DIR}/tkConfig.sh])
  221. fi
  222.     fi
  223. ])
  224. #------------------------------------------------------------------------
  225. # SC_LOAD_TCLCONFIG --
  226. #
  227. # Load the tclConfig.sh file
  228. #
  229. # Arguments:
  230. #
  231. # Requires the following vars to be set:
  232. # TCL_BIN_DIR
  233. #
  234. # Results:
  235. #
  236. # Subst the following vars:
  237. # TCL_BIN_DIR
  238. # TCL_SRC_DIR
  239. # TCL_LIB_FILE
  240. #
  241. #------------------------------------------------------------------------
  242. AC_DEFUN([SC_LOAD_TCLCONFIG], [
  243.     AC_MSG_CHECKING([for existence of ${TCL_BIN_DIR}/tclConfig.sh])
  244.     if test -f "${TCL_BIN_DIR}/tclConfig.sh" ; then
  245.         AC_MSG_RESULT([loading])
  246. . ${TCL_BIN_DIR}/tclConfig.sh
  247.     else
  248.         AC_MSG_RESULT([could not find ${TCL_BIN_DIR}/tclConfig.sh])
  249.     fi
  250.     # eval is required to do the TCL_DBGX substitution
  251.     eval "TCL_LIB_FILE="${TCL_LIB_FILE}""
  252.     eval "TCL_STUB_LIB_FILE="${TCL_STUB_LIB_FILE}""
  253.     # If the TCL_BIN_DIR is the build directory (not the install directory),
  254.     # then set the common variable name to the value of the build variables.
  255.     # For example, the variable TCL_LIB_SPEC will be set to the value
  256.     # of TCL_BUILD_LIB_SPEC. An extension should make use of TCL_LIB_SPEC
  257.     # instead of TCL_BUILD_LIB_SPEC since it will work with both an
  258.     # installed and uninstalled version of Tcl.
  259.     if test -f ${TCL_BIN_DIR}/Makefile ; then
  260.         TCL_LIB_SPEC=${TCL_BUILD_LIB_SPEC}
  261.         TCL_STUB_LIB_SPEC=${TCL_BUILD_STUB_LIB_SPEC}
  262.         TCL_STUB_LIB_PATH=${TCL_BUILD_STUB_LIB_PATH}
  263.     elif test "`uname -s`" = "Darwin"; then
  264. # If Tcl was built as a framework, attempt to use the libraries
  265. # from the framework at the given location so that linking works
  266. # against Tcl.framework installed in an arbitary location.
  267. case ${TCL_DEFS} in
  268.     *TCL_FRAMEWORK*)
  269. if test -f ${TCL_BIN_DIR}/${TCL_LIB_FILE}; then
  270.     for i in "`cd ${TCL_BIN_DIR}; pwd`" 
  271.      "`cd ${TCL_BIN_DIR}/../..; pwd`"; do
  272. if test "`basename "$i"`" = "${TCL_LIB_FILE}.framework"; then
  273.     TCL_LIB_SPEC="-F`dirname "$i"` -framework ${TCL_LIB_FILE}"
  274.     break
  275. fi
  276.     done
  277. fi
  278. if test -f ${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}; then
  279.     TCL_STUB_LIB_SPEC="-L${TCL_BIN_DIR} ${TCL_STUB_LIB_FLAG}"
  280.     TCL_STUB_LIB_PATH="${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}"
  281. fi
  282. ;;
  283. esac
  284.     fi
  285.     # eval is required to do the TCL_DBGX substitution
  286.     eval "TCL_LIB_FLAG="${TCL_LIB_FLAG}""
  287.     eval "TCL_LIB_SPEC="${TCL_LIB_SPEC}""
  288.     eval "TCL_STUB_LIB_FLAG="${TCL_STUB_LIB_FLAG}""
  289.     eval "TCL_STUB_LIB_SPEC="${TCL_STUB_LIB_SPEC}""
  290.     AC_SUBST(TCL_VERSION)
  291.     AC_SUBST(TCL_BIN_DIR)
  292.     AC_SUBST(TCL_SRC_DIR)
  293.     AC_SUBST(TCL_LIB_FILE)
  294.     AC_SUBST(TCL_LIB_FLAG)
  295.     AC_SUBST(TCL_LIB_SPEC)
  296.     AC_SUBST(TCL_STUB_LIB_FILE)
  297.     AC_SUBST(TCL_STUB_LIB_FLAG)
  298.     AC_SUBST(TCL_STUB_LIB_SPEC)
  299. ])
  300. #------------------------------------------------------------------------
  301. # SC_LOAD_TKCONFIG --
  302. #
  303. # Load the tkConfig.sh file
  304. #
  305. # Arguments:
  306. #
  307. # Requires the following vars to be set:
  308. # TK_BIN_DIR
  309. #
  310. # Results:
  311. #
  312. # Sets the following vars that should be in tkConfig.sh:
  313. # TK_BIN_DIR
  314. #------------------------------------------------------------------------
  315. AC_DEFUN([SC_LOAD_TKCONFIG], [
  316.     AC_MSG_CHECKING([for existence of ${TK_BIN_DIR}/tkConfig.sh])
  317.     if test -f "${TK_BIN_DIR}/tkConfig.sh" ; then
  318.         AC_MSG_RESULT([loading])
  319. . ${TK_BIN_DIR}/tkConfig.sh
  320.     else
  321.         AC_MSG_RESULT([could not find ${TK_BIN_DIR}/tkConfig.sh])
  322.     fi
  323.     # eval is required to do the TK_DBGX substitution
  324.     eval "TK_LIB_FILE="${TK_LIB_FILE}""
  325.     eval "TK_STUB_LIB_FILE="${TK_STUB_LIB_FILE}""
  326.     # If the TK_BIN_DIR is the build directory (not the install directory),
  327.     # then set the common variable name to the value of the build variables.
  328.     # For example, the variable TK_LIB_SPEC will be set to the value
  329.     # of TK_BUILD_LIB_SPEC. An extension should make use of TK_LIB_SPEC
  330.     # instead of TK_BUILD_LIB_SPEC since it will work with both an
  331.     # installed and uninstalled version of Tcl.
  332.     if test -f ${TK_BIN_DIR}/Makefile ; then
  333.         TK_LIB_SPEC=${TK_BUILD_LIB_SPEC}
  334.         TK_STUB_LIB_SPEC=${TK_BUILD_STUB_LIB_SPEC}
  335.         TK_STUB_LIB_PATH=${TK_BUILD_STUB_LIB_PATH}
  336.     elif test "`uname -s`" = "Darwin"; then
  337. # If Tk was built as a framework, attempt to use the libraries
  338. # from the framework at the given location so that linking works
  339. # against Tk.framework installed in an arbitary location.
  340. case ${TK_DEFS} in
  341.     *TK_FRAMEWORK*)
  342. if test -f ${TK_BIN_DIR}/${TK_LIB_FILE}; then
  343.     for i in "`cd ${TK_BIN_DIR}; pwd`" 
  344.      "`cd ${TK_BIN_DIR}/../..; pwd`"; do
  345. if test "`basename "$i"`" = "${TK_LIB_FILE}.framework"; then
  346.     TK_LIB_SPEC="-F`dirname "$i"` -framework ${TK_LIB_FILE}"
  347.     break
  348. fi
  349.     done
  350. fi
  351. if test -f ${TK_BIN_DIR}/${TK_STUB_LIB_FILE}; then
  352.     TK_STUB_LIB_SPEC="-L${TK_BIN_DIR} ${TK_STUB_LIB_FLAG}"
  353.     TK_STUB_LIB_PATH="${TK_BIN_DIR}/${TK_STUB_LIB_FILE}"
  354. fi
  355. ;;
  356. esac
  357.     fi
  358.     # eval is required to do the TK_DBGX substitution
  359.     eval "TK_LIB_FLAG="${TK_LIB_FLAG}""
  360.     eval "TK_LIB_SPEC="${TK_LIB_SPEC}""
  361.     eval "TK_STUB_LIB_FLAG="${TK_STUB_LIB_FLAG}""
  362.     eval "TK_STUB_LIB_SPEC="${TK_STUB_LIB_SPEC}""
  363.     AC_SUBST(TK_VERSION)
  364.     AC_SUBST(TK_BIN_DIR)
  365.     AC_SUBST(TK_SRC_DIR)
  366.     AC_SUBST(TK_LIB_FILE)
  367.     AC_SUBST(TK_LIB_FLAG)
  368.     AC_SUBST(TK_LIB_SPEC)
  369.     AC_SUBST(TK_STUB_LIB_FILE)
  370.     AC_SUBST(TK_STUB_LIB_FLAG)
  371.     AC_SUBST(TK_STUB_LIB_SPEC)
  372. ])
  373. #------------------------------------------------------------------------
  374. # SC_PROG_TCLSH
  375. # Locate a tclsh shell installed on the system path. This macro
  376. # will only find a Tcl shell that already exists on the system.
  377. # It will not find a Tcl shell in the Tcl build directory or
  378. # a Tcl shell that has been installed from the Tcl build directory.
  379. # If a Tcl shell can't be located on the PATH, then TCLSH_PROG will
  380. # be set to "". Extensions should take care not to create Makefile
  381. # rules that are run by default and depend on TCLSH_PROG. An
  382. # extension can't assume that an executable Tcl shell exists at
  383. # build time.
  384. #
  385. # Arguments
  386. # none
  387. #
  388. # Results
  389. # Subst's the following values:
  390. # TCLSH_PROG
  391. #------------------------------------------------------------------------
  392. AC_DEFUN([SC_PROG_TCLSH], [
  393.     AC_MSG_CHECKING([for tclsh])
  394.     AC_CACHE_VAL(ac_cv_path_tclsh, [
  395. search_path=`echo ${PATH} | sed -e 's/:/ /g'`
  396. for dir in $search_path ; do
  397.     for j in `ls -r $dir/tclsh[[8-9]]* 2> /dev/null` 
  398.     `ls -r $dir/tclsh* 2> /dev/null` ; do
  399. if test x"$ac_cv_path_tclsh" = x ; then
  400.     if test -f "$j" ; then
  401. ac_cv_path_tclsh=$j
  402. break
  403.     fi
  404. fi
  405.     done
  406. done
  407.     ])
  408.     if test -f "$ac_cv_path_tclsh" ; then
  409. TCLSH_PROG="$ac_cv_path_tclsh"
  410. AC_MSG_RESULT([$TCLSH_PROG])
  411.     else
  412. # It is not an error if an installed version of Tcl can't be located.
  413. TCLSH_PROG=""
  414. AC_MSG_RESULT([No tclsh found on PATH])
  415.     fi
  416.     AC_SUBST(TCLSH_PROG)
  417. ])
  418. #------------------------------------------------------------------------
  419. # SC_BUILD_TCLSH
  420. # Determine the fully qualified path name of the tclsh executable
  421. # in the Tcl build directory. This macro will correctly determine
  422. # the name of the tclsh executable even if tclsh has not yet
  423. # been built in the build directory. The build tclsh must be used
  424. # when running tests from an extension build directory. It is not
  425. # correct to use the TCLSH_PROG in cases like this.
  426. #
  427. # Arguments
  428. # none
  429. #
  430. # Results
  431. # Subst's the following values:
  432. # BUILD_TCLSH
  433. #------------------------------------------------------------------------
  434. AC_DEFUN([SC_BUILD_TCLSH], [
  435.     AC_MSG_CHECKING([for tclsh in Tcl build directory])
  436.     BUILD_TCLSH=${TCL_BIN_DIR}/tclsh
  437.     AC_MSG_RESULT([$BUILD_TCLSH])
  438.     AC_SUBST(BUILD_TCLSH)
  439. ])
  440. #------------------------------------------------------------------------
  441. # SC_ENABLE_SHARED --
  442. #
  443. # Allows the building of shared libraries
  444. #
  445. # Arguments:
  446. # none
  447. #
  448. # Results:
  449. #
  450. # Adds the following arguments to configure:
  451. # --enable-shared=yes|no
  452. #
  453. # Defines the following vars:
  454. # STATIC_BUILD Used for building import/export libraries
  455. # on Windows.
  456. #
  457. # Sets the following vars:
  458. # SHARED_BUILD Value of 1 or 0
  459. #------------------------------------------------------------------------
  460. AC_DEFUN([SC_ENABLE_SHARED], [
  461.     AC_MSG_CHECKING([how to build libraries])
  462.     AC_ARG_ENABLE(shared,
  463. [  --enable-shared         build and link with shared libraries [--enable-shared]],
  464. [tcl_ok=$enableval], [tcl_ok=yes])
  465.     if test "${enable_shared+set}" = set; then
  466. enableval="$enable_shared"
  467. tcl_ok=$enableval
  468.     else
  469. tcl_ok=yes
  470.     fi
  471.     if test "$tcl_ok" = "yes" ; then
  472. AC_MSG_RESULT([shared])
  473. SHARED_BUILD=1
  474.     else
  475. AC_MSG_RESULT([static])
  476. SHARED_BUILD=0
  477. AC_DEFINE(STATIC_BUILD)
  478.     fi
  479. ])
  480. #------------------------------------------------------------------------
  481. # SC_ENABLE_FRAMEWORK --
  482. #
  483. # Allows the building of shared libraries into frameworks
  484. #
  485. # Arguments:
  486. # none
  487. #
  488. # Results:
  489. #
  490. # Adds the following arguments to configure:
  491. # --enable-framework=yes|no
  492. #
  493. # Sets the following vars:
  494. # FRAMEWORK_BUILD Value of 1 or 0
  495. #------------------------------------------------------------------------
  496. AC_DEFUN([SC_ENABLE_FRAMEWORK], [
  497.     if test "`uname -s`" = "Darwin" ; then
  498. AC_MSG_CHECKING([how to package libraries])
  499. AC_ARG_ENABLE(framework,
  500.     [  --enable-framework      package shared libraries in MacOSX frameworks [--disable-framework]],
  501.     [enable_framework=$enableval], [enable_framework=no])
  502. if test $enable_framework = yes; then
  503.     if test $SHARED_BUILD = 0; then
  504. AC_MSG_WARN([Frameworks can only be built if --enable-shared is yes])
  505. enable_framework=no
  506.     fi
  507.     if test $tcl_corefoundation = no; then
  508. AC_MSG_WARN([Frameworks can only be used when CoreFoundation is available])
  509. enable_framework=no
  510.     fi
  511. fi
  512. if test $enable_framework = yes; then
  513.     AC_MSG_RESULT([framework])
  514.     FRAMEWORK_BUILD=1
  515. else
  516.     if test $SHARED_BUILD = 1; then
  517. AC_MSG_RESULT([shared library])
  518.     else
  519. AC_MSG_RESULT([static library])
  520.     fi
  521.     FRAMEWORK_BUILD=0
  522. fi
  523.     fi
  524. ])
  525. #------------------------------------------------------------------------
  526. # SC_ENABLE_THREADS --
  527. #
  528. # Specify if thread support should be enabled.  TCL_THREADS is
  529. # checked so that if you are compiling an extension against a
  530. # threaded core, your extension must be compiled threaded as well.
  531. #
  532. # Arguments:
  533. # none
  534. #
  535. # Results:
  536. #
  537. # Adds the following arguments to configure:
  538. # --enable-threads
  539. #
  540. # Sets the following vars:
  541. # THREADS_LIBS Thread library(s)
  542. #
  543. # Defines the following vars:
  544. # TCL_THREADS
  545. # _REENTRANT
  546. # _THREAD_SAFE
  547. #
  548. #------------------------------------------------------------------------
  549. AC_DEFUN([SC_ENABLE_THREADS], [
  550.     AC_ARG_ENABLE(threads, [  --enable-threads        build with threads],
  551. [tcl_ok=$enableval], [tcl_ok=no])
  552.     if test "${TCL_THREADS}" = 1; then
  553. tcl_threaded_core=1;
  554.     fi
  555.     if test "$tcl_ok" = "yes" -o "${TCL_THREADS}" = 1; then
  556. TCL_THREADS=1
  557. # USE_THREAD_ALLOC tells us to try the special thread-based
  558. # allocator that significantly reduces lock contention
  559. AC_DEFINE(USE_THREAD_ALLOC)
  560. AC_DEFINE(_REENTRANT)
  561. if test "`uname -s`" = "SunOS" ; then
  562.     AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
  563. fi
  564. AC_DEFINE(_THREAD_SAFE)
  565. AC_CHECK_LIB(pthread,pthread_mutex_init,tcl_ok=yes,tcl_ok=no)
  566. if test "$tcl_ok" = "no"; then
  567.     # Check a little harder for __pthread_mutex_init in the same
  568.     # library, as some systems hide it there until pthread.h is
  569.     # defined.  We could alternatively do an AC_TRY_COMPILE with
  570.     # pthread.h, but that will work with libpthread really doesn't
  571.     # exist, like AIX 4.2.  [Bug: 4359]
  572.     AC_CHECK_LIB(pthread, __pthread_mutex_init,
  573. tcl_ok=yes, tcl_ok=no)
  574. fi
  575. if test "$tcl_ok" = "yes"; then
  576.     # The space is needed
  577.     THREADS_LIBS=" -lpthread"
  578. else
  579.     AC_CHECK_LIB(pthreads, pthread_mutex_init,
  580. tcl_ok=yes, tcl_ok=no)
  581.     if test "$tcl_ok" = "yes"; then
  582. # The space is needed
  583. THREADS_LIBS=" -lpthreads"
  584.     else
  585. AC_CHECK_LIB(c, pthread_mutex_init,
  586.     tcl_ok=yes, tcl_ok=no)
  587. if test "$tcl_ok" = "no"; then
  588.     AC_CHECK_LIB(c_r, pthread_mutex_init,
  589. tcl_ok=yes, tcl_ok=no)
  590.     if test "$tcl_ok" = "yes"; then
  591. # The space is needed
  592. THREADS_LIBS=" -pthread"
  593.     else
  594. TCL_THREADS=0
  595. AC_MSG_WARN([Don't know how to find pthread lib on your system - you must disable thread support or edit the LIBS in the Makefile...])
  596.     fi
  597. fi
  598.     fi
  599. fi
  600. # Does the pthread-implementation provide
  601. # 'pthread_attr_setstacksize' ?
  602. ac_saved_libs=$LIBS
  603. LIBS="$LIBS $THREADS_LIBS"
  604. AC_CHECK_FUNCS(pthread_attr_setstacksize)
  605. AC_CHECK_FUNCS(pthread_atfork)
  606. LIBS=$ac_saved_libs
  607.     else
  608. TCL_THREADS=0
  609.     fi
  610.     # Do checking message here to not mess up interleaved configure output
  611.     AC_MSG_CHECKING([for building with threads])
  612.     if test "${TCL_THREADS}" = 1; then
  613. AC_DEFINE(TCL_THREADS, 1, [Are we building with threads enabled?])
  614. if test "${tcl_threaded_core}" = 1; then
  615.     AC_MSG_RESULT([yes (threaded core)])
  616. else
  617.     AC_MSG_RESULT([yes])
  618. fi
  619.     else
  620. AC_MSG_RESULT([no (default)])
  621.     fi
  622.     AC_SUBST(TCL_THREADS)
  623. ])
  624. #------------------------------------------------------------------------
  625. # SC_ENABLE_SYMBOLS --
  626. #
  627. # Specify if debugging symbols should be used.
  628. # Memory (TCL_MEM_DEBUG) and compile (TCL_COMPILE_DEBUG) debugging
  629. # can also be enabled.
  630. #
  631. # Arguments:
  632. # none
  633. #
  634. # Requires the following vars to be set in the Makefile:
  635. # CFLAGS_DEBUG
  636. # CFLAGS_OPTIMIZE
  637. # LDFLAGS_DEBUG
  638. # LDFLAGS_OPTIMIZE
  639. #
  640. # Results:
  641. #
  642. # Adds the following arguments to configure:
  643. # --enable-symbols
  644. #
  645. # Defines the following vars:
  646. # CFLAGS_DEFAULT Sets to $(CFLAGS_DEBUG) if true
  647. # Sets to $(CFLAGS_OPTIMIZE) if false
  648. # LDFLAGS_DEFAULT Sets to $(LDFLAGS_DEBUG) if true
  649. # Sets to $(LDFLAGS_OPTIMIZE) if false
  650. # DBGX Debug library extension
  651. #
  652. #------------------------------------------------------------------------
  653. AC_DEFUN([SC_ENABLE_SYMBOLS], [
  654.     AC_MSG_CHECKING([for build with symbols])
  655.     AC_ARG_ENABLE(symbols, [  --enable-symbols        build with debugging symbols [--disable-symbols]],    [tcl_ok=$enableval], [tcl_ok=no])
  656. # FIXME: Currently, LDFLAGS_DEFAULT is not used, it should work like CFLAGS_DEFAULT.
  657.     if test "$tcl_ok" = "no"; then
  658. CFLAGS_DEFAULT='$(CFLAGS_OPTIMIZE)'
  659. LDFLAGS_DEFAULT='$(LDFLAGS_OPTIMIZE)'
  660. DBGX=""
  661. AC_MSG_RESULT([no])
  662.     else
  663. CFLAGS_DEFAULT='$(CFLAGS_DEBUG)'
  664. LDFLAGS_DEFAULT='$(LDFLAGS_DEBUG)'
  665. DBGX=g
  666. if test "$tcl_ok" = "yes"; then
  667.     AC_MSG_RESULT([yes (standard debugging)])
  668. fi
  669.     fi
  670.     AC_SUBST(CFLAGS_DEFAULT)
  671.     AC_SUBST(LDFLAGS_DEFAULT)
  672.     if test "$tcl_ok" = "mem" -o "$tcl_ok" = "all"; then
  673. AC_DEFINE(TCL_MEM_DEBUG)
  674.     fi
  675.     if test "$tcl_ok" = "compile" -o "$tcl_ok" = "all"; then
  676. AC_DEFINE(TCL_COMPILE_DEBUG)
  677. AC_DEFINE(TCL_COMPILE_STATS)
  678.     fi
  679.     if test "$tcl_ok" != "yes" -a "$tcl_ok" != "no"; then
  680. if test "$tcl_ok" = "all"; then
  681.     AC_MSG_RESULT([enabled symbols mem compile debugging])
  682. else
  683.     AC_MSG_RESULT([enabled $tcl_ok debugging])
  684. fi
  685.     fi
  686. ])
  687. #------------------------------------------------------------------------
  688. # SC_ENABLE_LANGINFO --
  689. #
  690. # Allows use of modern nl_langinfo check for better l10n.
  691. # This is only relevant for Unix.
  692. #
  693. # Arguments:
  694. # none
  695. #
  696. # Results:
  697. #
  698. # Adds the following arguments to configure:
  699. # --enable-langinfo=yes|no (default is yes)
  700. #
  701. # Defines the following vars:
  702. # HAVE_LANGINFO Triggers use of nl_langinfo if defined.
  703. #
  704. #------------------------------------------------------------------------
  705. AC_DEFUN([SC_ENABLE_LANGINFO], [
  706.     AC_ARG_ENABLE(langinfo,
  707. [  --enable-langinfo   use nl_langinfo if possible to determine
  708.   encoding at startup, otherwise use old heuristic],
  709. [langinfo_ok=$enableval], [langinfo_ok=yes])
  710.     HAVE_LANGINFO=0
  711.     if test "$langinfo_ok" = "yes"; then
  712. AC_CHECK_HEADER(langinfo.h,[langinfo_ok=yes],[langinfo_ok=no])
  713.     fi
  714.     AC_MSG_CHECKING([whether to use nl_langinfo])
  715.     if test "$langinfo_ok" = "yes"; then
  716. AC_CACHE_VAL(tcl_cv_langinfo_h, [
  717.     AC_TRY_COMPILE([#include <langinfo.h>], [nl_langinfo(CODESET);],
  718.     [tcl_cv_langinfo_h=yes],[tcl_cv_langinfo_h=no])])
  719. AC_MSG_RESULT([$tcl_cv_langinfo_h])
  720. if test $tcl_cv_langinfo_h = yes; then
  721.     AC_DEFINE(HAVE_LANGINFO)
  722. fi
  723.     else 
  724. AC_MSG_RESULT([$langinfo_ok])
  725.     fi
  726. ])
  727. #--------------------------------------------------------------------
  728. # SC_CONFIG_MANPAGES
  729. #
  730. # Decide whether to use symlinks for linking the manpages,
  731. # whether to compress the manpages after installation, and
  732. # whether to add a package name suffix to the installed
  733. # manpages to avoidfile name clashes.
  734. # If compression is enabled also find out what file name suffix
  735. # the given compression program is using.
  736. #
  737. # Arguments:
  738. # none
  739. #
  740. # Results:
  741. #
  742. # Adds the following arguments to configure:
  743. # --enable-man-symlinks
  744. # --enable-man-compression=PROG
  745. # --enable-man-suffix[=STRING]
  746. #
  747. # Defines the following variable:
  748. #
  749. # MAN_FLAGS - The apropriate flags for installManPage
  750. # according to the user's selection.
  751. #
  752. #--------------------------------------------------------------------
  753. AC_DEFUN([SC_CONFIG_MANPAGES], [
  754.     AC_MSG_CHECKING([whether to use symlinks for manpages])
  755.     AC_ARG_ENABLE(man-symlinks,
  756.     [  --enable-man-symlinks   use symlinks for the manpages],
  757. test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --symlinks",
  758. enableval="no")
  759.     AC_MSG_RESULT([$enableval])
  760.     AC_MSG_CHECKING([whether to compress the manpages])
  761.     AC_ARG_ENABLE(man-compression,
  762.     [  --enable-man-compression=PROG
  763.       compress the manpages with PROG],
  764. [case $enableval in
  765.     yes) AC_MSG_ERROR([missing argument to --enable-man-compression]);;
  766.     no)  ;;
  767.     *)   MAN_FLAGS="$MAN_FLAGS --compress $enableval";;
  768. esac],
  769. enableval="no")
  770.     AC_MSG_RESULT([$enableval])
  771.     if test "$enableval" != "no"; then
  772. AC_MSG_CHECKING([for compressed file suffix])
  773. touch TeST
  774. $enableval TeST
  775. Z=`ls TeST* | sed 's/^....//'`
  776. rm -f TeST*
  777. MAN_FLAGS="$MAN_FLAGS --extension $Z"
  778. AC_MSG_RESULT([$Z])
  779.     fi
  780.     AC_MSG_CHECKING([whether to add a package name suffix for the manpages])
  781.     AC_ARG_ENABLE(man-suffix,
  782.     [  --enable-man-suffix=STRING
  783.       use STRING as a suffix to manpage file names
  784.       (default: $1)],
  785. [case $enableval in
  786.     yes) enableval="$1" MAN_FLAGS="$MAN_FLAGS --suffix $enableval";;
  787.     no)  ;;
  788.     *)   MAN_FLAGS="$MAN_FLAGS --suffix $enableval";;
  789. esac],
  790. enableval="no")
  791.     AC_MSG_RESULT([$enableval])
  792.     AC_SUBST(MAN_FLAGS)
  793. ])
  794. #--------------------------------------------------------------------
  795. # SC_CONFIG_SYSTEM
  796. #
  797. # Determine what the system is (some things cannot be easily checked
  798. # on a feature-driven basis, alas). This can usually be done via the
  799. # "uname" command, but there are a few systems, like Next, where
  800. # this doesn't work.
  801. #
  802. # Arguments:
  803. # none
  804. #
  805. # Results:
  806. # Defines the following var:
  807. #
  808. # system - System/platform/version identification code.
  809. #
  810. #--------------------------------------------------------------------
  811. AC_DEFUN([SC_CONFIG_SYSTEM], [
  812.     AC_CACHE_CHECK([system version], tcl_cv_sys_version, [
  813. if test -f /usr/lib/NextStep/software_version; then
  814.     tcl_cv_sys_version=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version`
  815. else
  816.     tcl_cv_sys_version=`uname -s`-`uname -r`
  817.     if test "$?" -ne 0 ; then
  818. AC_MSG_WARN([can't find uname command])
  819. tcl_cv_sys_version=unknown
  820.     else
  821. # Special check for weird MP-RAS system (uname returns weird
  822. # results, and the version is kept in special file).
  823. if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then
  824.     tcl_cv_sys_version=MP-RAS-`awk '{print $[3]}' /etc/.relid`
  825. fi
  826. if test "`uname -s`" = "AIX" ; then
  827.     tcl_cv_sys_version=AIX-`uname -v`.`uname -r`
  828. fi
  829.     fi
  830. fi
  831.     ])
  832.     system=$tcl_cv_sys_version
  833. ])
  834. #--------------------------------------------------------------------
  835. # SC_CONFIG_CFLAGS
  836. #
  837. # Try to determine the proper flags to pass to the compiler
  838. # for building shared libraries and other such nonsense.
  839. #
  840. # Arguments:
  841. # none
  842. #
  843. # Results:
  844. #
  845. # Defines and substitutes the following vars:
  846. #
  847. #       DL_OBJS -       Name of the object file that implements dynamic
  848. #                       loading for Tcl on this system.
  849. #       DL_LIBS -       Library file(s) to include in tclsh and other base
  850. #                       applications in order for the "load" command to work.
  851. #       LDFLAGS -      Flags to pass to the compiler when linking object
  852. #                       files into an executable application binary such
  853. #                       as tclsh.
  854. #       LD_SEARCH_FLAGS-Flags to pass to ld, such as "-R /usr/local/tcl/lib",
  855. #                       that tell the run-time dynamic linker where to look
  856. #                       for shared libraries such as libtcl.so.  Depends on
  857. #                       the variable LIB_RUNTIME_DIR in the Makefile. Could
  858. #                       be the same as CC_SEARCH_FLAGS if ${CC} is used to link.
  859. #       CC_SEARCH_FLAGS-Flags to pass to ${CC}, such as "-Wl,-rpath,/usr/local/tcl/lib",
  860. #                       that tell the run-time dynamic linker where to look
  861. #                       for shared libraries such as libtcl.so.  Depends on
  862. #                       the variable LIB_RUNTIME_DIR in the Makefile.
  863. #       MAKE_LIB -      Command to execute to build the a library;
  864. #                       differs when building shared or static.
  865. #       MAKE_STUB_LIB -
  866. #                       Command to execute to build a stub library.
  867. #       INSTALL_LIB -   Command to execute to install a library;
  868. #                       differs when building shared or static.
  869. #       INSTALL_STUB_LIB -
  870. #                       Command to execute to install a stub library.
  871. #       STLIB_LD -      Base command to use for combining object files
  872. #                       into a static library.
  873. #       SHLIB_CFLAGS -  Flags to pass to cc when compiling the components
  874. #                       of a shared library (may request position-independent
  875. #                       code, among other things).
  876. #       SHLIB_LD -      Base command to use for combining object files
  877. #                       into a shared library.
  878. #       SHLIB_LD_LIBS - Dependent libraries for the linker to scan when
  879. #                       creating shared libraries.  This symbol typically
  880. #                       goes at the end of the "ld" commands that build
  881. #                       shared libraries. The value of the symbol is
  882. #                       "${LIBS}" if all of the dependent libraries should
  883. #                       be specified when creating a shared library.  If
  884. #                       dependent libraries should not be specified (as on
  885. #                       SunOS 4.x, where they cause the link to fail, or in
  886. #                       general if Tcl and Tk aren't themselves shared
  887. #                       libraries), then this symbol has an empty string
  888. #                       as its value.
  889. #       SHLIB_SUFFIX -  Suffix to use for the names of dynamically loadable
  890. #                       extensions.  An empty string means we don't know how
  891. #                       to use shared libraries on this platform.
  892. # TCL_SHLIB_LD_EXTRAS - Additional element which are added to SHLIB_LD_LIBS
  893. #  TK_SHLIB_LD_EXTRAS   for the build of Tcl and Tk, but not recorded in the
  894. #                       tclConfig.sh, since they are only used for the build
  895. #                       of Tcl and Tk. 
  896. #                       Examples: MacOS X records the library version and
  897. #                       compatibility version in the shared library.  But
  898. #                       of course the Tcl version of this is only used for Tcl.
  899. #       LIB_SUFFIX -    Specifies everything that comes after the "libfoo"
  900. #                       in a static or shared library name, using the $VERSION variable
  901. #                       to put the version in the right place.  This is used
  902. #                       by platforms that need non-standard library names.
  903. #                       Examples:  ${VERSION}.so.1.1 on NetBSD, since it needs
  904. #                       to have a version after the .so, and ${VERSION}.a
  905. #                       on AIX, since a shared library needs to have
  906. #                       a .a extension whereas shared objects for loadable
  907. #                       extensions have a .so extension.  Defaults to
  908. #                       ${VERSION}${SHLIB_SUFFIX}.
  909. #       TCL_NEEDS_EXP_FILE -
  910. #                       1 means that an export file is needed to link to a
  911. #                       shared library.
  912. #       TCL_EXP_FILE -  The name of the installed export / import file which
  913. #                       should be used to link to the Tcl shared library.
  914. #                       Empty if Tcl is unshared.
  915. #       TCL_BUILD_EXP_FILE -
  916. #                       The name of the built export / import file which
  917. #                       should be used to link to the Tcl shared library.
  918. #                       Empty if Tcl is unshared.
  919. # CFLAGS_DEBUG -
  920. # Flags used when running the compiler in debug mode
  921. # CFLAGS_OPTIMIZE -
  922. # Flags used when running the compiler in optimize mode
  923. # CFLAGS - Additional CFLAGS added as necessary (usually 64-bit)
  924. #
  925. #--------------------------------------------------------------------
  926. AC_DEFUN([SC_CONFIG_CFLAGS], [
  927.     # Step 0.a: Enable 64 bit support?
  928.     AC_MSG_CHECKING([if 64bit support is requested])
  929.     AC_ARG_ENABLE(64bit,[  --enable-64bit          enable 64bit support (where applicable)],
  930. [do64bit=$enableval], [do64bit=no])
  931.     AC_MSG_RESULT([$do64bit])
  932.     # Step 0.b: Enable Solaris 64 bit VIS support?
  933.     AC_MSG_CHECKING([if 64bit Sparc VIS support is requested])
  934.     AC_ARG_ENABLE(64bit-vis,[  --enable-64bit-vis      enable 64bit Sparc VIS support],
  935. [do64bitVIS=$enableval], [do64bitVIS=no])
  936.     AC_MSG_RESULT([$do64bitVIS])
  937.     if test "$do64bitVIS" = "yes"; then
  938. # Force 64bit on with VIS
  939. do64bit=yes
  940.     fi
  941.     # Step 1: set the variable "system" to hold the name and version number
  942.     # for the system.
  943.     SC_CONFIG_SYSTEM
  944.     # Step 2: check for existence of -ldl library.  This is needed because
  945.     # Linux can use either -ldl or -ldld for dynamic loading.
  946.     AC_CHECK_LIB(dl, dlopen, have_dl=yes, have_dl=no)
  947.     # Require ranlib early so we can override it in special cases below.
  948.     AC_REQUIRE([AC_PROG_RANLIB])
  949.     # Step 3: set configuration options based on system name and version.
  950.     do64bit_ok=no
  951.     LDFLAGS_ORIG="$LDFLAGS"
  952.     TCL_EXPORT_FILE_SUFFIX=""
  953.     UNSHARED_LIB_SUFFIX=""
  954.     TCL_TRIM_DOTS='`echo ${VERSION} | tr -d .`'
  955.     ECHO_VERSION='`echo ${VERSION}`'
  956.     TCL_LIB_VERSIONS_OK=ok
  957.     CFLAGS_DEBUG=-g
  958.     CFLAGS_OPTIMIZE=-O
  959.     if test "$GCC" = "yes" ; then
  960. CFLAGS_WARNING="-Wall -Wno-implicit-int -fno-strict-aliasing"
  961.     else
  962. CFLAGS_WARNING=""
  963.     fi
  964.     TCL_NEEDS_EXP_FILE=0
  965.     TCL_BUILD_EXP_FILE=""
  966.     TCL_EXP_FILE=""
  967. dnl FIXME: Replace AC_CHECK_PROG with AC_CHECK_TOOL once cross compiling is fixed.
  968. dnl AC_CHECK_TOOL(AR, ar)
  969.     AC_CHECK_PROG(AR, ar, ar)
  970.     if test "${AR}" = "" ; then
  971. AC_MSG_ERROR([Required archive tool 'ar' not found on PATH.])
  972.     fi
  973.     STLIB_LD='${AR} cr'
  974.     LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH"
  975.     PLAT_OBJS=""
  976.     PLAT_SRCS=""
  977.     case $system in
  978. AIX-*)
  979.     if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then
  980. # AIX requires the _r compiler when gcc isn't being used
  981. case "${CC}" in
  982.     *_r)
  983. # ok ...
  984. ;;
  985.     *)
  986. CC=${CC}_r
  987. ;;
  988. esac
  989. AC_MSG_RESULT([Using $CC for compiling with threads])
  990.     fi
  991.     LIBS="$LIBS -lc"
  992.     SHLIB_CFLAGS=""
  993.     # Note: need the LIBS below, otherwise Tk won't find Tcl's
  994.     # symbols when dynamically loaded into tclsh.
  995.     SHLIB_LD_LIBS='${LIBS}'
  996.     SHLIB_SUFFIX=".so"
  997.     DL_OBJS="tclLoadDl.o"
  998.     LD_LIBRARY_PATH_VAR="LIBPATH"
  999.     # Check to enable 64-bit flags for compiler/linker on AIX 4+
  1000.     if test "$do64bit" = "yes" -a "`uname -v`" -gt "3" ; then
  1001. if test "$GCC" = "yes" ; then
  1002.     AC_MSG_WARN([64bit mode not supported with GCC on $system])
  1003. else 
  1004.     do64bit_ok=yes
  1005.     CFLAGS="$CFLAGS -q64"
  1006.     LDFLAGS="$LDFLAGS -q64"
  1007.     RANLIB="${RANLIB} -X64"
  1008.     AR="${AR} -X64"
  1009.     SHLIB_LD_FLAGS="-b64"
  1010. fi
  1011.     fi
  1012.     if test "`uname -m`" = "ia64" ; then
  1013. # AIX-5 uses ELF style dynamic libraries on IA-64, but not PPC
  1014. SHLIB_LD="/usr/ccs/bin/ld -G -z text"
  1015. # AIX-5 has dl* in libc.so
  1016. DL_LIBS=""
  1017. if test "$GCC" = "yes" ; then
  1018.     CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
  1019. else
  1020.     CC_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}'
  1021. fi
  1022. LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
  1023.     else
  1024. if test "$GCC" = "yes" ; then
  1025.     SHLIB_LD="gcc -shared"
  1026. else
  1027.     SHLIB_LD="/bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry"
  1028. fi
  1029. SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix ${SHLIB_LD} ${SHLIB_LD_FLAGS}"
  1030. DL_LIBS="-ldl"
  1031. CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
  1032. LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
  1033. TCL_NEEDS_EXP_FILE=1
  1034. TCL_EXPORT_FILE_SUFFIX='${VERSION}${DBGX}.exp'
  1035.     fi
  1036.     # AIX v<=4.1 has some different flags than 4.2+
  1037.     if test "$system" = "AIX-4.1" -o "`uname -v`" -lt "4" ; then
  1038. LIBOBJS="$LIBOBJS tclLoadAix.o"
  1039. DL_LIBS="-lld"
  1040.     fi
  1041.     # On AIX <=v4 systems, libbsd.a has to be linked in to support
  1042.     # non-blocking file IO.  This library has to be linked in after
  1043.     # the MATH_LIBS or it breaks the pow() function.  The way to
  1044.     # insure proper sequencing, is to add it to the tail of MATH_LIBS.
  1045.     # This library also supplies gettimeofday.
  1046.     #
  1047.     # AIX does not have a timezone field in struct tm. When the AIX
  1048.     # bsd library is used, the timezone global and the gettimeofday
  1049.     # methods are to be avoided for timezone deduction instead, we
  1050.     # deduce the timezone by comparing the localtime result on a
  1051.     # known GMT value.
  1052.     AC_CHECK_LIB(bsd, gettimeofday, libbsd=yes, libbsd=no)
  1053.     if test $libbsd = yes; then
  1054.      MATH_LIBS="$MATH_LIBS -lbsd"
  1055.      AC_DEFINE(USE_DELTA_FOR_TZ)
  1056.     fi
  1057.     ;;
  1058. BeOS*)
  1059.     SHLIB_CFLAGS="-fPIC"
  1060.     SHLIB_LD="${CC} -nostart"
  1061.     SHLIB_LD_LIBS='${LIBS}'
  1062.     SHLIB_SUFFIX=".so"
  1063.     DL_OBJS="tclLoadDl.o"
  1064.     DL_LIBS="-ldl"
  1065.     #-----------------------------------------------------------
  1066.     # Check for inet_ntoa in -lbind, for BeOS (which also needs
  1067.     # -lsocket, even if the network functions are in -lnet which
  1068.     # is always linked to, for compatibility.
  1069.     #-----------------------------------------------------------
  1070.     AC_CHECK_LIB(bind, inet_ntoa, [LIBS="$LIBS -lbind -lsocket"])
  1071.     ;;
  1072. BSD/OS-2.1*|BSD/OS-3*)
  1073.     SHLIB_CFLAGS=""
  1074.     SHLIB_LD="shlicc -r"
  1075.     SHLIB_LD_LIBS='${LIBS}'
  1076.     SHLIB_SUFFIX=".so"
  1077.     DL_OBJS="tclLoadDl.o"
  1078.     DL_LIBS="-ldl"
  1079.     CC_SEARCH_FLAGS=""
  1080.     LD_SEARCH_FLAGS=""
  1081.     ;;
  1082. BSD/OS-4.*)
  1083.     SHLIB_CFLAGS="-export-dynamic -fPIC"
  1084.     SHLIB_LD="cc -shared"
  1085.     SHLIB_LD_LIBS='${LIBS}'
  1086.     SHLIB_SUFFIX=".so"
  1087.     DL_OBJS="tclLoadDl.o"
  1088.     DL_LIBS="-ldl"
  1089.     LDFLAGS="$LDFLAGS -export-dynamic"
  1090.     CC_SEARCH_FLAGS=""
  1091.     LD_SEARCH_FLAGS=""
  1092.     ;;
  1093. dgux*)
  1094.     SHLIB_CFLAGS="-K PIC"
  1095.     SHLIB_LD="cc -G"
  1096.     SHLIB_LD_LIBS=""
  1097.     SHLIB_SUFFIX=".so"
  1098.     DL_OBJS="tclLoadDl.o"
  1099.     DL_LIBS="-ldl"
  1100.     CC_SEARCH_FLAGS=""
  1101.     LD_SEARCH_FLAGS=""
  1102.     ;;
  1103. HP-UX-*.11.*)
  1104.     # Use updated header definitions where possible
  1105.     AC_DEFINE(_XOPEN_SOURCE)          # Use the XOPEN network library
  1106.     AC_DEFINE(_XOPEN_SOURCE_EXTENDED) # Use the XOPEN network library
  1107.     LIBS="$LIBS -lxnet"               # Use the XOPEN network library
  1108.     if test "`uname -m`" = "ia64" ; then
  1109. SHLIB_SUFFIX=".so"
  1110.     else
  1111. SHLIB_SUFFIX=".sl"
  1112.     fi
  1113.     AC_CHECK_LIB(dld, shl_load, tcl_ok=yes, tcl_ok=no)
  1114.     if test "$tcl_ok" = yes; then
  1115. SHLIB_CFLAGS="+z"
  1116. SHLIB_LD="ld -b"
  1117. SHLIB_LD_LIBS='${LIBS}'
  1118. DL_OBJS="tclLoadShl.o"
  1119. DL_LIBS="-ldld"
  1120. LDFLAGS="$LDFLAGS -Wl,-E"
  1121. CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
  1122. LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.'
  1123. LD_LIBRARY_PATH_VAR="SHLIB_PATH"
  1124.     fi
  1125.     if test "$GCC" = "yes" ; then
  1126. SHLIB_LD="gcc -shared"
  1127. SHLIB_LD_LIBS='${LIBS}'
  1128. LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
  1129.     fi
  1130.     # Users may want PA-RISC 1.1/2.0 portable code - needs HP cc
  1131.     #CFLAGS="$CFLAGS +DAportable"
  1132.     # Check to enable 64-bit flags for compiler/linker
  1133.     if test "$do64bit" = "yes" ; then
  1134. if test "$GCC" = "yes" ; then
  1135.     hpux_arch=`${CC} -dumpmachine`
  1136.     case $hpux_arch in
  1137. hppa64*)
  1138.     # 64-bit gcc in use.  Fix flags for GNU ld.
  1139.     do64bit_ok=yes
  1140.     SHLIB_LD="${CC} -shared"
  1141.     SHLIB_LD_LIBS='${LIBS}'
  1142.     CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
  1143.     LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
  1144.     ;;
  1145. *)
  1146.     AC_MSG_WARN([64bit mode not supported with GCC on $system])
  1147.     ;;
  1148.     esac
  1149. else
  1150.     do64bit_ok=yes
  1151.     CFLAGS="$CFLAGS +DD64"
  1152.     LDFLAGS="$LDFLAGS +DD64"
  1153. fi
  1154.     fi
  1155.     ;;
  1156. HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*)
  1157.     SHLIB_SUFFIX=".sl"
  1158.     AC_CHECK_LIB(dld, shl_load, tcl_ok=yes, tcl_ok=no)
  1159.     if test "$tcl_ok" = yes; then
  1160. SHLIB_CFLAGS="+z"
  1161. SHLIB_LD="ld -b"
  1162. SHLIB_LD_LIBS=""
  1163. DL_OBJS="tclLoadShl.o"
  1164. DL_LIBS="-ldld"
  1165. LDFLAGS="$LDFLAGS -Wl,-E"
  1166. CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
  1167. LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.'
  1168. LD_LIBRARY_PATH_VAR="SHLIB_PATH"
  1169.     fi
  1170.     ;;
  1171. IRIX-4.*)
  1172.     SHLIB_CFLAGS="-G 0"
  1173.     SHLIB_SUFFIX=".a"
  1174.     SHLIB_LD="echo tclLdAout $CC {$SHLIB_CFLAGS} | `pwd`/tclsh -r -G 0"
  1175.     SHLIB_LD_LIBS='${LIBS}'
  1176.     DL_OBJS="tclLoadAout.o"
  1177.     DL_LIBS=""
  1178.     LDFLAGS="$LDFLAGS -Wl,-D,08000000"
  1179.     CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
  1180.     LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
  1181.     SHARED_LIB_SUFFIX='${VERSION}${DBGX}.a'
  1182.     ;;
  1183. IRIX-5.*)
  1184.     SHLIB_CFLAGS=""
  1185.     SHLIB_LD="ld -shared -rdata_shared"
  1186.     SHLIB_LD_LIBS='${LIBS}'
  1187.     SHLIB_SUFFIX=".so"
  1188.     DL_OBJS="tclLoadDl.o"
  1189.     DL_LIBS=""
  1190.     CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
  1191.     LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
  1192.     ;;
  1193. IRIX-6.*)
  1194.     SHLIB_CFLAGS=""
  1195.     SHLIB_LD="ld -n32 -shared -rdata_shared"
  1196.     SHLIB_LD_LIBS='${LIBS}'
  1197.     SHLIB_SUFFIX=".so"
  1198.     DL_OBJS="tclLoadDl.o"
  1199.     DL_LIBS=""
  1200.     CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
  1201.     LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
  1202.     if test "$GCC" = "yes" ; then
  1203. CFLAGS="$CFLAGS -mabi=n32"
  1204. LDFLAGS="$LDFLAGS -mabi=n32"
  1205.     else
  1206. case $system in
  1207.     IRIX-6.3)
  1208. # Use to build 6.2 compatible binaries on 6.3.
  1209. CFLAGS="$CFLAGS -n32 -D_OLD_TERMIOS"
  1210. ;;
  1211.     *)
  1212. CFLAGS="$CFLAGS -n32"
  1213. ;;
  1214. esac
  1215. LDFLAGS="$LDFLAGS -n32"
  1216.     fi
  1217.     ;;
  1218. IRIX64-6.*)
  1219.     SHLIB_CFLAGS=""
  1220.     SHLIB_LD="ld -n32 -shared -rdata_shared"
  1221.     SHLIB_LD_LIBS='${LIBS}'
  1222.     SHLIB_SUFFIX=".so"
  1223.     DL_OBJS="tclLoadDl.o"
  1224.     DL_LIBS=""
  1225.     CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
  1226.     LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
  1227.     # Check to enable 64-bit flags for compiler/linker
  1228.     if test "$do64bit" = "yes" ; then
  1229.         if test "$GCC" = "yes" ; then
  1230.             AC_MSG_WARN([64bit mode not supported by gcc])
  1231.         else
  1232.             do64bit_ok=yes
  1233.             SHLIB_LD="ld -64 -shared -rdata_shared"
  1234.             CFLAGS="$CFLAGS -64"
  1235.             LDFLAGS="$LDFLAGS -64"
  1236.         fi
  1237.     fi
  1238.     ;;
  1239. Linux*)
  1240.     SHLIB_CFLAGS="-fPIC"
  1241.     SHLIB_LD_LIBS='${LIBS}'
  1242.     SHLIB_SUFFIX=".so"
  1243.     CFLAGS_OPTIMIZE=-O2
  1244.     # egcs-2.91.66 on Redhat Linux 6.0 generates lots of warnings 
  1245.     # when you inline the string and math operations.  Turn this off to
  1246.     # get rid of the warnings.
  1247.     #CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES"
  1248.     if test "$have_dl" = yes; then
  1249. SHLIB_LD='${CC} -shared ${CFLAGS} ${LDFLAGS}'
  1250. DL_OBJS="tclLoadDl.o"
  1251. DL_LIBS="-ldl"
  1252. LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
  1253. CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
  1254. LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
  1255.     else
  1256. AC_CHECK_HEADER(dld.h, [
  1257.     SHLIB_LD="ld -shared"
  1258.     DL_OBJS="tclLoadDld.o"
  1259.     DL_LIBS="-ldld"
  1260.     CC_SEARCH_FLAGS=""
  1261.     LD_SEARCH_FLAGS=""])
  1262.     fi
  1263.     if test "`uname -m`" = "alpha" ; then
  1264. CFLAGS="$CFLAGS -mieee"
  1265.     fi
  1266.     if test $do64bit = yes; then
  1267. AC_CACHE_CHECK([if compiler accepts -m64 flag], tcl_cv_cc_m64, [
  1268.     hold_cflags=$CFLAGS
  1269.     CFLAGS="$CFLAGS -m64"
  1270.     AC_TRY_LINK(,, tcl_cv_cc_m64=yes, tcl_cv_cc_m64=no)
  1271.     CFLAGS=$hold_cflags])
  1272. if test $tcl_cv_cc_m64 = yes; then
  1273.     CFLAGS="$CFLAGS -m64"
  1274.     do64bit_ok=yes
  1275. fi
  1276.     fi
  1277.     # The combo of gcc + glibc has a bug related
  1278.     # to inlining of functions like strtod(). The
  1279.     # -fno-builtin flag should address this problem
  1280.     # but it does not work. The -fno-inline flag
  1281.     # is kind of overkill but it works.
  1282.     # Disable inlining only when one of the
  1283.     # files in compat/*.c is being linked in.
  1284.     if test x"${LIBOBJS}" != x ; then
  1285.         CFLAGS="$CFLAGS -fno-inline"
  1286.     fi
  1287.     # XIM peeking works under XFree86.
  1288.     AC_DEFINE(PEEK_XCLOSEIM)
  1289.     ;;
  1290. CYGWIN*)
  1291.     SHLIB_CFLAGS="-fPIC"
  1292.     SHLIB_LD_LIBS='${LIBS}'
  1293.     SHLIB_SUFFIX=".dll"
  1294.     CFLAGS_OPTIMIZE=-O2
  1295.     # egcs-2.91.66 on Redhat Linux 6.0 generates lots of warnings 
  1296.     # when you inline the string and math operations.  Turn this off to
  1297.     # get rid of the warnings.
  1298.     #CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES"
  1299.     if test "$have_dl" = yes; then
  1300. SHLIB_LD="${CC} -shared"
  1301. DL_OBJS="tclLoadDl.o"
  1302. DL_LIBS="-ldl"
  1303. LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
  1304. CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
  1305. LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
  1306.     else
  1307. AC_CHECK_HEADER(dld.h, [
  1308.     SHLIB_LD="ld -shared"
  1309.     DL_OBJS="tclLoadDld.o"
  1310.     DL_LIBS="-ldld"
  1311.     CC_SEARCH_FLAGS=""
  1312.     LD_SEARCH_FLAGS=""])
  1313.     fi
  1314.     if test "`uname -m`" = "alpha" ; then
  1315. CFLAGS="$CFLAGS -mieee"
  1316.     fi
  1317.     # The combo of gcc + glibc has a bug related
  1318.     # to inlining of functions like strtod(). The
  1319.     # -fno-builtin flag should address this problem
  1320.     # but it does not work. The -fno-inline flag
  1321.     # is kind of overkill but it works.
  1322.     # Disable inlining only when one of the
  1323.     # files in compat/*.c is being linked in.
  1324.     if test x"${LIBOBJS}" != x ; then
  1325.         CFLAGS="$CFLAGS -fno-inline"
  1326.     fi
  1327.     # XIM peeking works under XFree86.
  1328.     AC_DEFINE(PEEK_XCLOSEIM)
  1329.     ;;
  1330. GNU*)
  1331.     SHLIB_CFLAGS="-fPIC"
  1332.     SHLIB_LD_LIBS='${LIBS}'
  1333.     SHLIB_SUFFIX=".so"
  1334.     if test "$have_dl" = yes; then
  1335. SHLIB_LD="${CC} -shared"
  1336. DL_OBJS=""
  1337. DL_LIBS="-ldl"
  1338. LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
  1339. CC_SEARCH_FLAGS=""
  1340. LD_SEARCH_FLAGS=""
  1341.     else
  1342. AC_CHECK_HEADER(dld.h, [
  1343.     SHLIB_LD="ld -shared"
  1344.     DL_OBJS=""
  1345.     DL_LIBS="-ldld"
  1346.     CC_SEARCH_FLAGS=""
  1347.     LD_SEARCH_FLAGS=""])
  1348.     fi
  1349.     if test "`uname -m`" = "alpha" ; then
  1350. CFLAGS="$CFLAGS -mieee"
  1351.     fi
  1352.     ;;
  1353. Lynx*)
  1354.     SHLIB_CFLAGS="-fPIC"
  1355.     SHLIB_LD_LIBS='${LIBS}'
  1356.     SHLIB_SUFFIX=".so"
  1357.     CFLAGS_OPTIMIZE=-02
  1358.     SHLIB_LD="${CC} -shared "
  1359.     DL_OBJS="tclLoadDl.o"
  1360.     DL_LIBS="-mshared -ldl"
  1361.     LD_FLAGS="-Wl,--export-dynamic"
  1362.     CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
  1363.     LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
  1364.     ;;
  1365. MP-RAS-02*)
  1366.     SHLIB_CFLAGS="-K PIC"
  1367.     SHLIB_LD="cc -G"
  1368.     SHLIB_LD_LIBS=""
  1369.     SHLIB_SUFFIX=".so"
  1370.     DL_OBJS="tclLoadDl.o"
  1371.     DL_LIBS="-ldl"
  1372.     CC_SEARCH_FLAGS=""
  1373.     LD_SEARCH_FLAGS=""
  1374.     ;;
  1375. MP-RAS-*)
  1376.     SHLIB_CFLAGS="-K PIC"
  1377.     SHLIB_LD="cc -G"
  1378.     SHLIB_LD_LIBS=""
  1379.     SHLIB_SUFFIX=".so"
  1380.     DL_OBJS="tclLoadDl.o"
  1381.     DL_LIBS="-ldl"
  1382.     LDFLAGS="$LDFLAGS -Wl,-Bexport"
  1383.     CC_SEARCH_FLAGS=""
  1384.     LD_SEARCH_FLAGS=""
  1385.     ;;
  1386. NetBSD-*|FreeBSD-[[1-2]].*)
  1387.     # Not available on all versions:  check for include file.
  1388.     AC_CHECK_HEADER(dlfcn.h, [
  1389. # NetBSD/SPARC needs -fPIC, -fpic will not do.
  1390. SHLIB_CFLAGS="-fPIC"
  1391. SHLIB_LD="ld -Bshareable -x"
  1392. SHLIB_LD_LIBS='${LIBS}'
  1393. SHLIB_SUFFIX=".so"
  1394. DL_OBJS="tclLoadDl.o"
  1395. DL_LIBS=""
  1396. CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
  1397. LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
  1398. AC_CACHE_CHECK([for ELF], tcl_cv_ld_elf, [
  1399.     AC_EGREP_CPP(yes, [
  1400. #ifdef __ELF__
  1401. yes
  1402. #endif
  1403.     ], tcl_cv_ld_elf=yes, tcl_cv_ld_elf=no)])
  1404. if test $tcl_cv_ld_elf = yes; then
  1405.     SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}${DBGX}.so'
  1406. else
  1407.     SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}${DBGX}.so.1.0'
  1408. fi
  1409.     ], [
  1410. SHLIB_CFLAGS=""
  1411. SHLIB_LD="echo tclLdAout $CC {$SHLIB_CFLAGS} | `pwd`/tclsh -r"
  1412. SHLIB_LD_LIBS='${LIBS}'
  1413. SHLIB_SUFFIX=".a"
  1414. DL_OBJS="tclLoadAout.o"
  1415. DL_LIBS=""
  1416. CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
  1417. LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
  1418. SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}${DBGX}.a'
  1419.     ])
  1420.     # FreeBSD doesn't handle version numbers with dots.
  1421.     UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}${DBGX}.a'
  1422.     TCL_LIB_VERSIONS_OK=nodots
  1423.     ;;
  1424. OpenBSD-*)
  1425.     case `arch -s` in
  1426.     m88k|vax)
  1427. SHLIB_CFLAGS=""
  1428. SHLIB_LD="echo tclLdAout $CC {$SHLIB_CFLAGS} | `pwd`/tclsh -r"
  1429. SHLIB_LD_LIBS='${LIBS}'
  1430. SHLIB_SUFFIX=".a"
  1431. DL_OBJS="tclLoadAout.o"
  1432. DL_LIBS=""
  1433. LDFLAGS=""
  1434. CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
  1435. LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
  1436. SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}${DBGX}.a'
  1437. ;;
  1438.     *)
  1439. # OpenBSD/SPARC[64] needs -fPIC, -fpic will not do.
  1440. case `machine` in
  1441. sparc|sparc64)
  1442.     SHLIB_CFLAGS="-fPIC";;
  1443.         *)
  1444.     SHLIB_CFLAGS="-fpic";;
  1445.         esac
  1446. SHLIB_LD="${CC} -shared ${SHLIB_CFLAGS}"
  1447. SHLIB_LD_LIBS='${LIBS}'
  1448. SHLIB_SUFFIX=".so"
  1449. DL_OBJS="tclLoadDl.o"
  1450. DL_LIBS=""
  1451. CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
  1452. LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
  1453. SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}${DBGX}.so.1.0'
  1454. AC_CACHE_CHECK([for ELF], tcl_cv_ld_elf, [
  1455.     AC_EGREP_CPP(yes, [
  1456. #ifdef __ELF__
  1457. yes
  1458. #endif
  1459.     ], tcl_cv_ld_elf=yes, tcl_cv_ld_elf=no)])
  1460. if test $tcl_cv_ld_elf = yes; then
  1461.     LDFLAGS=-Wl,-export-dynamic
  1462. else
  1463.     LDFLAGS=""
  1464.         fi
  1465. ;;
  1466.     esac
  1467.     # OpenBSD doesn't do version numbers with dots.
  1468.     UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}${DBGX}.a'
  1469.     TCL_LIB_VERSIONS_OK=nodots
  1470.     ;;
  1471. FreeBSD-*)
  1472.     # FreeBSD 3.* and greater have ELF.
  1473.     SHLIB_CFLAGS="-fPIC"
  1474.     SHLIB_LD="ld -Bshareable -x"
  1475.     SHLIB_LD_LIBS='${LIBS}'
  1476.     SHLIB_SUFFIX=".so"
  1477.     DL_OBJS="tclLoadDl.o"
  1478.     DL_LIBS=""
  1479.     LDFLAGS="$LDFLAGS -export-dynamic"
  1480.     CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
  1481.     LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
  1482.     if test "${TCL_THREADS}" = "1" ; then
  1483. # The -pthread needs to go in the CFLAGS, not LIBS
  1484. LIBS=`echo $LIBS | sed s/-pthread//`
  1485. CFLAGS="$CFLAGS -pthread"
  1486.      LDFLAGS="$LDFLAGS -pthread"
  1487.     fi
  1488.     case $system in
  1489.     FreeBSD-3.*)
  1490.      # FreeBSD-3 doesn't handle version numbers with dots.
  1491.      UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}${DBGX}.a'
  1492.      SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}${DBGX}.so'
  1493.      TCL_LIB_VERSIONS_OK=nodots
  1494. ;;
  1495.     esac
  1496.     ;;
  1497. Darwin-*)
  1498.     CFLAGS_OPTIMIZE="-Os"
  1499.     SHLIB_CFLAGS="-fno-common"
  1500.     # To avoid discrepancies between what headers configure sees during
  1501.     # preprocessing tests and compiling tests, move any -isysroot and
  1502.     # -mmacosx-version-min flags from CFLAGS to CPPFLAGS:
  1503.     CPPFLAGS="${CPPFLAGS} `echo " ${CFLAGS}" | 
  1504. awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=2;i<=NF;i++) 
  1505. if ([$]i~/^(isysroot|mmacosx-version-min)/) print "-"[$]i}'`"
  1506.     CFLAGS="`echo " ${CFLAGS}" | 
  1507. awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=2;i<=NF;i++) 
  1508. if (!([$]i~/^(isysroot|mmacosx-version-min)/)) print "-"[$]i}'`"
  1509.     if test $do64bit = yes; then
  1510. case `arch` in
  1511.     ppc)
  1512. AC_CACHE_CHECK([if compiler accepts -arch ppc64 flag],
  1513. tcl_cv_cc_arch_ppc64, [
  1514.     hold_cflags=$CFLAGS
  1515.     CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5"
  1516.     AC_TRY_LINK(,, tcl_cv_cc_arch_ppc64=yes,
  1517.     tcl_cv_cc_arch_ppc64=no)
  1518.     CFLAGS=$hold_cflags])
  1519. if test $tcl_cv_cc_arch_ppc64 = yes; then
  1520.     CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5"
  1521.     do64bit_ok=yes
  1522. fi;;
  1523.     i386)
  1524. AC_CACHE_CHECK([if compiler accepts -arch x86_64 flag],
  1525. tcl_cv_cc_arch_x86_64, [
  1526.     hold_cflags=$CFLAGS
  1527.     CFLAGS="$CFLAGS -arch x86_64"
  1528.     AC_TRY_LINK(,, tcl_cv_cc_arch_x86_64=yes,
  1529.     tcl_cv_cc_arch_x86_64=no)
  1530.     CFLAGS=$hold_cflags])
  1531. if test $tcl_cv_cc_arch_x86_64 = yes; then
  1532.     CFLAGS="$CFLAGS -arch x86_64"
  1533.     do64bit_ok=yes
  1534. fi;;
  1535.     *)
  1536. AC_MSG_WARN([Don't know how enable 64-bit on architecture `arch`]);;
  1537. esac
  1538.     else
  1539. # Check for combined 32-bit and 64-bit fat build
  1540. echo "$CFLAGS " | grep -E -q -- '-arch (ppc64|x86_64) ' && 
  1541.     echo "$CFLAGS " | grep -E -q -- '-arch (ppc|i386) ' && 
  1542.     fat_32_64=yes
  1543.     fi
  1544.     SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}'
  1545.     AC_CACHE_CHECK([if ld accepts -single_module flag], tcl_cv_ld_single_module, [
  1546. hold_ldflags=$LDFLAGS
  1547. LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module"
  1548. AC_TRY_LINK(, [int i;], tcl_cv_ld_single_module=yes, tcl_cv_ld_single_module=no)
  1549. LDFLAGS=$hold_ldflags])
  1550.     if test $tcl_cv_ld_single_module = yes; then
  1551. SHLIB_LD="${SHLIB_LD} -Wl,-single_module"
  1552.     fi
  1553.     SHLIB_LD_LIBS='${LIBS}'
  1554.     SHLIB_SUFFIX=".dylib"
  1555.     DL_OBJS="tclLoadDyld.o"
  1556.     DL_LIBS=""
  1557.     # Don't use -prebind when building for Mac OS X 10.4 or later only:
  1558.     test "`echo "${MACOSX_DEPLOYMENT_TARGET}" | awk -F '10\.' '{print int([$]2)}'`" -lt 4 -a 
  1559. "`echo "${CPPFLAGS}" | awk -F '-mmacosx-version-min=10\.' '{print int([$]2)}'`" -lt 4 && 
  1560. LDFLAGS="$LDFLAGS -prebind"
  1561.     LDFLAGS="$LDFLAGS -headerpad_max_install_names"
  1562.     AC_CACHE_CHECK([if ld accepts -search_paths_first flag], tcl_cv_ld_search_paths_first, [
  1563. hold_ldflags=$LDFLAGS
  1564. LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
  1565. AC_TRY_LINK(, [int i;], tcl_cv_ld_search_paths_first=yes, tcl_cv_ld_search_paths_first=no)
  1566. LDFLAGS=$hold_ldflags])
  1567.     if test $tcl_cv_ld_search_paths_first = yes; then
  1568. LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
  1569.     fi
  1570.     CC_SEARCH_FLAGS=""
  1571.     LD_SEARCH_FLAGS=""
  1572.     LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH"
  1573.     PLAT_OBJS=$(MAC_OSX_OBJS)
  1574.     PLAT_SRCS=$(MAC_OSX_SRCS)
  1575.     AC_MSG_CHECKING([whether to use CoreFoundation])
  1576.     AC_ARG_ENABLE(corefoundation, [  --enable-corefoundation use CoreFoundation API [--enable-corefoundation]],
  1577. [tcl_corefoundation=$enableval], [tcl_corefoundation=yes])
  1578.     AC_MSG_RESULT([$tcl_corefoundation])
  1579.     if test $tcl_corefoundation = yes; then
  1580. AC_CACHE_CHECK([for CoreFoundation.framework], tcl_cv_lib_corefoundation, [
  1581.     hold_libs=$LIBS
  1582.     if test "$fat_32_64" = yes; then for v in CFLAGS CPPFLAGS LDFLAGS; do
  1583. # On Tiger there is no 64-bit CF, so remove 64-bit archs
  1584. # from CFLAGS et al. while testing for presence of CF.
  1585. # 64-bit CF is disabled in tclUnixPort.h if necessary.
  1586. eval 'hold_'$v'="$'$v'";'$v'="`echo "$'$v' "|sed -e "s/-arch ppc64 / /g" -e "s/-arch x86_64 / /g"`"'
  1587.     done; fi
  1588.     LIBS="$LIBS -framework CoreFoundation"
  1589.     AC_TRY_LINK([#include <CoreFoundation/CoreFoundation.h>], 
  1590. [CFBundleRef b = CFBundleGetMainBundle();], 
  1591. tcl_cv_lib_corefoundation=yes, tcl_cv_lib_corefoundation=no)
  1592.     if test "$fat_32_64" = yes; then for v in CFLAGS CPPFLAGS LDFLAGS; do
  1593. eval $v'="$hold_'$v'"'
  1594.     done; fi; LIBS=$hold_libs])
  1595. if test $tcl_cv_lib_corefoundation = yes; then
  1596.     LIBS="$LIBS -framework CoreFoundation"
  1597.     AC_DEFINE(HAVE_COREFOUNDATION)
  1598. else
  1599.     tcl_corefoundation=no
  1600. fi
  1601. if test "$fat_32_64" = yes -a $tcl_corefoundation = yes; then
  1602.     AC_CACHE_CHECK([for 64-bit CoreFoundation], tcl_cv_lib_corefoundation_64, [
  1603. for v in CFLAGS CPPFLAGS LDFLAGS; do
  1604.     eval 'hold_'$v'="$'$v'";'$v'="`echo "$'$v' "|sed -e "s/-arch ppc / /g" -e "s/-arch i386 / /g"`"'
  1605. done
  1606. AC_TRY_LINK([#include <CoreFoundation/CoreFoundation.h>], 
  1607.     [CFBundleRef b = CFBundleGetMainBundle();], 
  1608.     tcl_cv_lib_corefoundation_64=yes, tcl_cv_lib_corefoundation_64=no)
  1609. for v in CFLAGS CPPFLAGS LDFLAGS; do
  1610.     eval $v'="$hold_'$v'"'
  1611. done])
  1612.     if test $tcl_cv_lib_corefoundation_64 = no; then
  1613. AC_DEFINE(NO_COREFOUNDATION_64)
  1614.     fi
  1615. fi
  1616.     fi
  1617.     AC_DEFINE(MAC_OSX_TCL)
  1618.     ;;
  1619. NEXTSTEP-*)
  1620.     SHLIB_CFLAGS=""
  1621.     SHLIB_LD="cc -nostdlib -r"
  1622.     SHLIB_LD_LIBS=""
  1623.     SHLIB_SUFFIX=".so"
  1624.     DL_OBJS="tclLoadNext.o"
  1625.     DL_LIBS=""
  1626.     CC_SEARCH_FLAGS=""
  1627.     LD_SEARCH_FLAGS=""
  1628.     ;;
  1629. OS/390-*)
  1630.     CFLAGS_OPTIMIZE="" # Optimizer is buggy
  1631.     AC_DEFINE(_OE_SOCKETS) # needed in sys/socket.h
  1632.     ;;      
  1633. OSF1-1.0|OSF1-1.1|OSF1-1.2)
  1634.     # OSF/1 1.[012] from OSF, and derivatives, including Paragon OSF/1
  1635.     SHLIB_CFLAGS=""
  1636.     # Hack: make package name same as library name
  1637.     SHLIB_LD='ld -R -export $@:'
  1638.     SHLIB_LD_LIBS=""
  1639.     SHLIB_SUFFIX=".so"
  1640.     DL_OBJS="tclLoadOSF.o"
  1641.     DL_LIBS=""
  1642.     CC_SEARCH_FLAGS=""
  1643.     LD_SEARCH_FLAGS=""
  1644.     ;;
  1645. OSF1-1.*)
  1646.     # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2
  1647.     SHLIB_CFLAGS="-fPIC"
  1648.     if test "$SHARED_BUILD" = "1" ; then
  1649.         SHLIB_LD="ld -shared"
  1650.     else
  1651.         SHLIB_LD="ld -non_shared"
  1652.     fi
  1653.     SHLIB_LD_LIBS=""
  1654.     SHLIB_SUFFIX=".so"
  1655.     DL_OBJS="tclLoadDl.o"
  1656.     DL_LIBS=""
  1657.     CC_SEARCH_FLAGS=""
  1658.     LD_SEARCH_FLAGS=""
  1659.     ;;
  1660. OSF1-V*)
  1661.     # Digital OSF/1
  1662.     SHLIB_CFLAGS=""
  1663.     if test "$SHARED_BUILD" = "1" ; then
  1664.         SHLIB_LD='ld -shared -expect_unresolved "*"'
  1665.     else
  1666.         SHLIB_LD='ld -non_shared -expect_unresolved "*"'
  1667.     fi
  1668.     SHLIB_LD_LIBS=""
  1669.     SHLIB_SUFFIX=".so"
  1670.     DL_OBJS="tclLoadDl.o"
  1671.     DL_LIBS=""
  1672.     CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
  1673.     LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
  1674.     if test "$GCC" = "yes" ; then
  1675. CFLAGS="$CFLAGS -mieee"
  1676.             else
  1677. CFLAGS="$CFLAGS -DHAVE_TZSET -std1 -ieee"
  1678.     fi
  1679.     # see pthread_intro(3) for pthread support on osf1, k.furukawa
  1680.     if test "${TCL_THREADS}" = "1" ; then
  1681. CFLAGS="$CFLAGS -DHAVE_PTHREAD_ATTR_SETSTACKSIZE"
  1682. CFLAGS="$CFLAGS -DTCL_THREAD_STACK_MIN=PTHREAD_STACK_MIN*64"
  1683. LIBS=`echo $LIBS | sed s/-lpthreads//`
  1684. if test "$GCC" = "yes" ; then
  1685.     LIBS="$LIBS -lpthread -lmach -lexc"
  1686. else
  1687.     CFLAGS="$CFLAGS -pthread"
  1688.     LDFLAGS="$LDFLAGS -pthread"
  1689. fi
  1690.     fi
  1691.     ;;
  1692. QNX-6*)
  1693.     # QNX RTP
  1694.     # This may work for all QNX, but it was only reported for v6.
  1695.     SHLIB_CFLAGS="-fPIC"
  1696.     SHLIB_LD="ld -Bshareable -x"
  1697.     SHLIB_LD_LIBS=""
  1698.     SHLIB_SUFFIX=".so"
  1699.     DL_OBJS="tclLoadDl.o"
  1700.     # dlopen is in -lc on QNX
  1701.     DL_LIBS=""
  1702.     CC_SEARCH_FLAGS=""
  1703.     LD_SEARCH_FLAGS=""
  1704.     ;;
  1705. RISCos-*)
  1706.     SHLIB_CFLAGS="-G 0"
  1707.     SHLIB_LD="echo tclLdAout $CC {$SHLIB_CFLAGS} | `pwd`/tclsh -r -G 0"
  1708.     SHLIB_LD_LIBS='${LIBS}'
  1709.     SHLIB_SUFFIX=".a"
  1710.     DL_OBJS="tclLoadAout.o"
  1711.     DL_LIBS=""
  1712.     LDFLAGS="$LDFLAGS -Wl,-D,08000000"
  1713.     CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
  1714.     LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
  1715.     ;;
  1716. SCO_SV-3.2*)
  1717.     # Note, dlopen is available only on SCO 3.2.5 and greater. However,
  1718.     # this test works, since "uname -s" was non-standard in 3.2.4 and
  1719.     # below.
  1720.     if test "$GCC" = "yes" ; then
  1721.      SHLIB_CFLAGS="-fPIC -melf"
  1722.      LDFLAGS="$LDFLAGS -melf -Wl,-Bexport"
  1723.     else
  1724.      SHLIB_CFLAGS="-Kpic -belf"
  1725.      LDFLAGS="$LDFLAGS -belf -Wl,-Bexport"
  1726.     fi
  1727.     SHLIB_LD="ld -G"
  1728.     SHLIB_LD_LIBS=""
  1729.     SHLIB_SUFFIX=".so"
  1730.     DL_OBJS="tclLoadDl.o"
  1731.     DL_LIBS=""
  1732.     CC_SEARCH_FLAGS=""
  1733.     LD_SEARCH_FLAGS=""
  1734.     ;;
  1735. SINIX*5.4*)
  1736.     SHLIB_CFLAGS="-K PIC"
  1737.     SHLIB_LD="cc -G"
  1738.     SHLIB_LD_LIBS=""
  1739.     SHLIB_SUFFIX=".so"
  1740.     DL_OBJS="tclLoadDl.o"
  1741.     DL_LIBS="-ldl"
  1742.     CC_SEARCH_FLAGS=""
  1743.     LD_SEARCH_FLAGS=""
  1744.     ;;
  1745. SunOS-4*)
  1746.     SHLIB_CFLAGS="-PIC"
  1747.     SHLIB_LD="ld"
  1748.     SHLIB_LD_LIBS=""
  1749.     SHLIB_SUFFIX=".so"
  1750.     DL_OBJS="tclLoadDl.o"
  1751.     DL_LIBS="-ldl"
  1752.     CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
  1753.     LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
  1754.     # SunOS can't handle version numbers with dots in them in library
  1755.     # specs, like -ltcl7.5, so use -ltcl75 instead.  Also, it
  1756.     # requires an extra version number at the end of .so file names.
  1757.     # So, the library has to have a name like libtcl75.so.1.0
  1758.     SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}${DBGX}.so.1.0'
  1759.     UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}${DBGX}.a'
  1760.     TCL_LIB_VERSIONS_OK=nodots
  1761.     ;;
  1762. SunOS-5.[[0-6]])
  1763.     # Careful to not let 5.10+ fall into this case
  1764.     # Note: If _REENTRANT isn't defined, then Solaris
  1765.     # won't define thread-safe library routines.
  1766.     AC_DEFINE(_REENTRANT)
  1767.     AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
  1768.     SHLIB_CFLAGS="-KPIC"
  1769.     # Note: need the LIBS below, otherwise Tk won't find Tcl's
  1770.     # symbols when dynamically loaded into tclsh.
  1771.     SHLIB_LD_LIBS='${LIBS}'
  1772.     SHLIB_SUFFIX=".so"
  1773.     DL_OBJS="tclLoadDl.o"
  1774.     DL_LIBS="-ldl"
  1775.     if test "$GCC" = "yes" ; then
  1776. SHLIB_LD="$CC -shared"
  1777. CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
  1778. LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
  1779.     else
  1780. SHLIB_LD="/usr/ccs/bin/ld -G -z text"
  1781. CC_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
  1782. LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
  1783.     fi
  1784.     ;;
  1785. SunOS-5*)
  1786.     # Note: If _REENTRANT isn't defined, then Solaris
  1787.     # won't define thread-safe library routines.
  1788.     AC_DEFINE(_REENTRANT)
  1789.     AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
  1790.     SHLIB_CFLAGS="-KPIC"
  1791.     # Check to enable 64-bit flags for compiler/linker
  1792.     if test "$do64bit" = "yes" ; then
  1793. arch=`isainfo`
  1794. if test "$arch" = "sparcv9 sparc" ; then
  1795. if test "$GCC" = "yes" ; then
  1796.     if test "`gcc -dumpversion | awk -F. '{print [$]1}'`" -lt "3" ; then
  1797. AC_MSG_WARN([64bit mode not supported with GCC < 3.2 on $system])
  1798.     else
  1799. do64bit_ok=yes
  1800. CFLAGS="$CFLAGS -m64 -mcpu=v9"
  1801. LDFLAGS="$LDFLAGS -m64 -mcpu=v9"
  1802. SHLIB_CFLAGS="-fPIC"
  1803.     fi
  1804. else
  1805.     do64bit_ok=yes
  1806.     if test "$do64bitVIS" = "yes" ; then
  1807. CFLAGS="$CFLAGS -xarch=v9a"
  1808.      LDFLAGS="$LDFLAGS -xarch=v9a"
  1809.     else
  1810. CFLAGS="$CFLAGS -xarch=v9"
  1811.      LDFLAGS="$LDFLAGS -xarch=v9"
  1812.     fi
  1813.     # Solaris 64 uses this as well
  1814.     #LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH_64"
  1815. fi
  1816. elif test "$arch" = "amd64 i386" ; then
  1817.     if test "$GCC" = "yes" ; then
  1818. AC_MSG_WARN([64bit mode not supported with GCC on $system])
  1819.     else
  1820. do64bit_ok=yes
  1821. CFLAGS="$CFLAGS -xarch=amd64"
  1822. LDFLAGS="$LDFLAGS -xarch=amd64"
  1823.     fi
  1824. else
  1825.     AC_MSG_WARN([64bit mode not supported for $arch])
  1826. fi
  1827.     fi
  1828.     
  1829.     # Note: need the LIBS below, otherwise Tk won't find Tcl's
  1830.     # symbols when dynamically loaded into tclsh.
  1831.     SHLIB_LD_LIBS='${LIBS}'
  1832.     SHLIB_SUFFIX=".so"
  1833.     DL_OBJS="tclLoadDl.o"
  1834.     DL_LIBS="-ldl"
  1835.     if test "$GCC" = "yes" ; then
  1836. SHLIB_LD="$CC -shared"
  1837. CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
  1838. LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
  1839. if test "$do64bit_ok" = "yes" ; then
  1840.     # We need to specify -static-libgcc or we need to
  1841.     # add the path to the sparv9 libgcc.
  1842.     SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc"
  1843.     # for finding sparcv9 libgcc, get the regular libgcc
  1844.     # path, remove so name and append 'sparcv9'
  1845.     #v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..."
  1846.     #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir"
  1847. fi
  1848.     else
  1849. case $system in
  1850.     SunOS-5.[[1-9]][[0-9]]*)
  1851. SHLIB_LD='${CC} -G -z text';;
  1852.     *)
  1853. SHLIB_LD="/usr/ccs/bin/ld -G -z text";;
  1854. esac
  1855. CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
  1856. LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
  1857.     fi
  1858.     ;;
  1859. ULTRIX-4.*)
  1860.     SHLIB_CFLAGS="-G 0"
  1861.     SHLIB_SUFFIX=".a"
  1862.     SHLIB_LD="echo tclLdAout $CC {$SHLIB_CFLAGS} | `pwd`/tclsh -r -G 0"
  1863.     SHLIB_LD_LIBS='${LIBS}'
  1864.     DL_OBJS="tclLoadAout.o"
  1865.     DL_LIBS=""
  1866.     LDFLAGS="$LDFLAGS -Wl,-D,08000000"
  1867.     CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
  1868.     LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
  1869.     if test "$GCC" != "yes" ; then
  1870. CFLAGS="$CFLAGS -DHAVE_TZSET -std1"
  1871.     fi
  1872.     ;;
  1873. UNIX_SV* | UnixWare-5*)
  1874.     SHLIB_CFLAGS="-KPIC"
  1875.     SHLIB_LD="cc -G"
  1876.     SHLIB_LD_LIBS=""
  1877.     SHLIB_SUFFIX=".so"
  1878.     DL_OBJS="tclLoadDl.o"
  1879.     DL_LIBS="-ldl"
  1880.     # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers
  1881.     # that don't grok the -Bexport option.  Test that it does.
  1882.     AC_CACHE_CHECK([for ld accepts -Bexport flag], tcl_cv_ld_Bexport, [
  1883. hold_ldflags=$LDFLAGS
  1884. LDFLAGS="$LDFLAGS -Wl,-Bexport"
  1885. AC_TRY_LINK(, [int i;], tcl_cv_ld_Bexport=yes, tcl_cv_ld_Bexport=no)
  1886.         LDFLAGS=$hold_ldflags])
  1887.     if test $tcl_cv_ld_Bexport = yes; then
  1888. LDFLAGS="$LDFLAGS -Wl,-Bexport"
  1889.     fi
  1890.     CC_SEARCH_FLAGS=""
  1891.     LD_SEARCH_FLAGS=""
  1892.     ;;
  1893.     esac
  1894.     if test "$do64bit" = "yes" -a "$do64bit_ok" = "no" ; then
  1895. AC_MSG_WARN([64bit support being disabled -- don't know magic for this platform])
  1896.     fi
  1897. dnl # Add any CPPFLAGS set in the environment to our CFLAGS, but delay doing so
  1898. dnl # until the end of configure, as configure's compile and link tests use
  1899. dnl # both CPPFLAGS and CFLAGS (unlike our compile and link) but configure's
  1900. dnl # preprocessing tests use only CPPFLAGS.
  1901.     SC_CONFIG_COMMANDS_PRE([CFLAGS="${CFLAGS} ${CPPFLAGS}"; CPPFLAGS=""])
  1902.     # Step 4: If pseudo-static linking is in use (see K. B. Kenny, "Dynamic
  1903.     # Loading for Tcl -- What Became of It?".  Proc. 2nd Tcl/Tk Workshop,
  1904.     # New Orleans, LA, Computerized Processes Unlimited, 1994), then we need
  1905.     # to determine which of several header files defines the a.out file
  1906.     # format (a.out.h, sys/exec.h, or sys/exec_aout.h).  At present, we
  1907.     # support only a file format that is more or less version-7-compatible. 
  1908.     # In particular,
  1909.     # - a.out files must begin with `struct exec'.
  1910.     # - the N_TXTOFF on the `struct exec' must compute the seek address
  1911.     #   of the text segment
  1912.     # - The `struct exec' must contain a_magic, a_text, a_data, a_bss
  1913.     #   and a_entry fields.
  1914.     # The following compilation should succeed if and only if either sys/exec.h
  1915.     # or a.out.h is usable for the purpose.
  1916.     #
  1917.     # Note that the modified COFF format used on MIPS Ultrix 4.x is usable; the
  1918.     # `struct exec' includes a second header that contains information that
  1919.     # duplicates the v7 fields that are needed.
  1920.     if test "x$DL_OBJS" = "xtclLoadAout.o" ; then
  1921. AC_CACHE_CHECK([sys/exec.h], tcl_cv_sysexec_h, [
  1922. AC_TRY_COMPILE([#include <sys/exec.h>],[
  1923.     struct exec foo;
  1924.     unsigned long seek;
  1925.     int flag;
  1926. #if defined(__mips) || defined(mips)
  1927.     seek = N_TXTOFF (foo.ex_f, foo.ex_o);
  1928. #else
  1929.     seek = N_TXTOFF (foo);
  1930. #endif
  1931.     flag = (foo.a_magic == OMAGIC);
  1932.     return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
  1933.     ], tcl_cv_sysexec_h=usable, tcl_cv_sysexec_h=unusable)])
  1934. if test $tcl_cv_sysexec_h = usable; then
  1935.     AC_DEFINE(USE_SYS_EXEC_H)
  1936. else
  1937.     AC_CACHE_CHECK([a.out.h], tcl_cv_aout_h, [
  1938.     AC_TRY_COMPILE([#include <a.out.h>],[
  1939. struct exec foo;
  1940. unsigned long seek;
  1941. int flag;
  1942. #if defined(__mips) || defined(mips)
  1943. seek = N_TXTOFF (foo.ex_f, foo.ex_o);
  1944. #else
  1945. seek = N_TXTOFF (foo);
  1946. #endif
  1947. flag = (foo.a_magic == OMAGIC);
  1948. return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
  1949.     ], tcl_cv_aout_h=usable, tcl_cv_aout_h=unusable)])
  1950.     if test $tcl_cv_aout_h = usable; then
  1951. AC_DEFINE(USE_A_OUT_H)
  1952.     else
  1953. AC_CACHE_CHECK([sys/exec_aout.h], tcl_cv_sysexecaout_h, [
  1954. AC_TRY_COMPILE([#include <sys/exec_aout.h>],[
  1955.     struct exec foo;
  1956.     unsigned long seek;
  1957.     int flag;
  1958. #if defined(__mips) || defined(mips)
  1959.     seek = N_TXTOFF (foo.ex_f, foo.ex_o);
  1960. #else
  1961.     seek = N_TXTOFF (foo);
  1962. #endif
  1963.     flag = (foo.a_midmag == OMAGIC);
  1964.     return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
  1965. ], tcl_cv_sysexecaout_h=usable, tcl_cv_sysexecaout_h=unusable)])
  1966. if test $tcl_cv_sysexecaout_h = usable; then
  1967.     AC_DEFINE(USE_SYS_EXEC_AOUT_H)
  1968. else
  1969.     DL_OBJS=""
  1970. fi
  1971.     fi
  1972. fi
  1973.     fi
  1974.     # Step 5: disable dynamic loading if requested via a command-line switch.
  1975.     AC_ARG_ENABLE(load, [  --disable-load          disallow dynamic loading and "load" command],
  1976. [tcl_ok=$enableval], [tcl_ok=yes])
  1977.     if test "$tcl_ok" = "no"; then
  1978. DL_OBJS=""
  1979.     fi
  1980.     if test "x$DL_OBJS" != "x" ; then
  1981. BUILD_DLTEST="$(DLTEST_TARGETS)"
  1982.     else
  1983. echo "Can't figure out how to do dynamic loading or shared libraries"
  1984. echo "on this system."
  1985. SHLIB_CFLAGS=""
  1986. SHLIB_LD=""
  1987. SHLIB_SUFFIX=""
  1988. DL_OBJS="tclLoadNone.o"
  1989. DL_LIBS=""
  1990. LDFLAGS="$LDFLAGS_ORIG"
  1991. CC_SEARCH_FLAGS=""
  1992. LD_SEARCH_FLAGS=""
  1993. BUILD_DLTEST=""
  1994.     fi
  1995.     # If we're running gcc, then change the C flags for compiling shared
  1996.     # libraries to the right flags for gcc, instead of those for the
  1997.     # standard manufacturer compiler.
  1998.     if test "$DL_OBJS" != "tclLoadNone.o" ; then
  1999. if test "$GCC" = "yes" ; then
  2000.     case $system in
  2001. AIX-*)
  2002.     ;;
  2003. BSD/OS*)
  2004.     ;;
  2005. IRIX*)
  2006.     ;;
  2007. NetBSD-*|FreeBSD-*|OpenBSD-*)
  2008.     ;;
  2009. Darwin-*)
  2010.     ;;
  2011. RISCos-*)
  2012.     ;;
  2013. SCO_SV-3.2*)
  2014.     ;;
  2015. ULTRIX-4.*)
  2016.     ;;
  2017. *)
  2018.     SHLIB_CFLAGS="-fPIC"
  2019.     ;;
  2020.     esac
  2021. fi
  2022.     fi
  2023.     if test "$SHARED_LIB_SUFFIX" = "" ; then
  2024. SHARED_LIB_SUFFIX='${VERSION}${DBGX}${SHLIB_SUFFIX}'
  2025.     fi
  2026.     if test "$UNSHARED_LIB_SUFFIX" = "" ; then
  2027. UNSHARED_LIB_SUFFIX='${VERSION}${DBGX}.a'
  2028.     fi
  2029.     if test "${SHARED_BUILD}" = "1" && test "${SHLIB_SUFFIX}" != "" ; then
  2030.         LIB_SUFFIX=${SHARED_LIB_SUFFIX}
  2031.         MAKE_LIB='${SHLIB_LD} -o [$]@ ${OBJS} ${SHLIB_LD_LIBS} ${TCL_SHLIB_LD_EXTRAS} ${TK_SHLIB_LD_EXTRAS} ${LD_SEARCH_FLAGS}'
  2032.         INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE)'
  2033.     else
  2034.         LIB_SUFFIX=${UNSHARED_LIB_SUFFIX}
  2035.         if test "$RANLIB" = "" ; then
  2036.             MAKE_LIB='$(STLIB_LD) [$]@ ${OBJS}'
  2037.             INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE)'
  2038.         else
  2039.             MAKE_LIB='${STLIB_LD} [$]@ ${OBJS} ; ${RANLIB} [$]@'
  2040.             INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE) ; (cd $(LIB_INSTALL_DIR) ; $(RANLIB) $(LIB_FILE))'
  2041.         fi
  2042. dnl        Not at all clear what this was doing in Tcl's configure.in
  2043. dnl        or why it was needed was needed. In any event, this sort of
  2044. dnl        things needs to be done in the big loop above.
  2045. dnl        REMOVE THIS BLOCK LATER! (mdejong)
  2046. dnl        case $system in
  2047. dnl            BSD/OS*)
  2048. dnl                ;;
  2049. dnl            AIX-[[1-4]].*)
  2050. dnl                ;;
  2051. dnl            *)
  2052. dnl                SHLIB_LD_LIBS=""
  2053. dnl                ;;
  2054. dnl        esac
  2055.     fi
  2056.     # Stub lib does not depend on shared/static configuration
  2057.     if test "$RANLIB" = "" ; then
  2058.         MAKE_STUB_LIB='${STLIB_LD} [$]@ ${STUB_LIB_OBJS}'
  2059.         INSTALL_STUB_LIB='$(INSTALL_LIBRARY) $(STUB_LIB_FILE) $(LIB_INSTALL_DIR)/$(STUB_LIB_FILE)'
  2060.     else
  2061.         MAKE_STUB_LIB='${STLIB_LD} [$]@ ${STUB_LIB_OBJS} ; ${RANLIB} [$]@'
  2062.         INSTALL_STUB_LIB='$(INSTALL_LIBRARY) $(STUB_LIB_FILE) $(LIB_INSTALL_DIR)/$(STUB_LIB_FILE) ; (cd $(LIB_INSTALL_DIR) ; $(RANLIB) $(STUB_LIB_FILE))'
  2063.     fi
  2064.     AC_SUBST(DL_LIBS)
  2065.     AC_SUBST(DL_OBJS)
  2066.     AC_SUBST(PLAT_OBJS)
  2067.     AC_SUBST(PLAT_SRCS)
  2068.     AC_SUBST(CFLAGS)
  2069.     AC_SUBST(CFLAGS_DEBUG)
  2070.     AC_SUBST(CFLAGS_OPTIMIZE)
  2071.     AC_SUBST(CFLAGS_WARNING)
  2072.     AC_SUBST(LDFLAGS)
  2073.     AC_SUBST(LDFLAGS_DEBUG)
  2074.     AC_SUBST(LDFLAGS_OPTIMIZE)
  2075.     AC_SUBST(CC_SEARCH_FLAGS)
  2076.     AC_SUBST(LD_SEARCH_FLAGS)
  2077.     AC_SUBST(STLIB_LD)
  2078.     AC_SUBST(SHLIB_LD)
  2079.     AC_SUBST(TCL_SHLIB_LD_EXTRAS)
  2080.     AC_SUBST(TK_SHLIB_LD_EXTRAS)
  2081.     AC_SUBST(SHLIB_LD_LIBS)
  2082.     AC_SUBST(SHLIB_CFLAGS)
  2083.     AC_SUBST(SHLIB_SUFFIX)
  2084.     AC_SUBST(MAKE_LIB)
  2085.     AC_SUBST(MAKE_STUB_LIB)
  2086.     AC_SUBST(INSTALL_LIB)
  2087.     AC_SUBST(INSTALL_STUB_LIB)
  2088.     AC_SUBST(RANLIB)
  2089. ])
  2090. #--------------------------------------------------------------------
  2091. # SC_SERIAL_PORT
  2092. #
  2093. # Determine which interface to use to talk to the serial port.
  2094. # Note that #include lines must begin in leftmost column for
  2095. # some compilers to recognize them as preprocessor directives,
  2096. # and some build environments have stdin not pointing at a
  2097. # pseudo-terminal (usually /dev/null instead.)
  2098. #
  2099. # Arguments:
  2100. # none
  2101. #
  2102. # Results:
  2103. #
  2104. # Defines only one of the following vars:
  2105. # HAVE_SYS_MODEM_H
  2106. # USE_TERMIOS
  2107. # USE_TERMIO
  2108. # USE_SGTTY
  2109. #
  2110. #--------------------------------------------------------------------
  2111. AC_DEFUN([SC_SERIAL_PORT], [
  2112.     AC_CHECK_HEADERS(sys/modem.h)
  2113.     AC_CACHE_CHECK([termios vs. termio vs. sgtty], tcl_cv_api_serial, [
  2114.     AC_TRY_RUN([
  2115. #include <termios.h>
  2116. int main() {
  2117.     struct termios t;
  2118.     if (tcgetattr(0, &t) == 0) {
  2119. cfsetospeed(&t, 0);
  2120. t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB;
  2121. return 0;
  2122.     }
  2123.     return 1;
  2124. }], tcl_cv_api_serial=termios, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
  2125.     if test $tcl_cv_api_serial = no ; then
  2126. AC_TRY_RUN([
  2127. #include <termio.h>
  2128. int main() {
  2129.     struct termio t;
  2130.     if (ioctl(0, TCGETA, &t) == 0) {
  2131. t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB;
  2132. return 0;
  2133.     }
  2134.     return 1;
  2135. }], tcl_cv_api_serial=termio, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
  2136.     fi
  2137.     if test $tcl_cv_api_serial = no ; then
  2138. AC_TRY_RUN([
  2139. #include <sgtty.h>
  2140. int main() {
  2141.     struct sgttyb t;
  2142.     if (ioctl(0, TIOCGETP, &t) == 0) {
  2143. t.sg_ospeed = 0;
  2144. t.sg_flags |= ODDP | EVENP | RAW;
  2145. return 0;
  2146.     }
  2147.     return 1;
  2148. }], tcl_cv_api_serial=sgtty, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
  2149.     fi
  2150.     if test $tcl_cv_api_serial = no ; then
  2151. AC_TRY_RUN([
  2152. #include <termios.h>
  2153. #include <errno.h>
  2154. int main() {
  2155.     struct termios t;
  2156.     if (tcgetattr(0, &t) == 0
  2157. || errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
  2158. cfsetospeed(&t, 0);
  2159. t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB;
  2160. return 0;
  2161.     }
  2162.     return 1;
  2163. }], tcl_cv_api_serial=termios, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
  2164.     fi
  2165.     if test $tcl_cv_api_serial = no; then
  2166. AC_TRY_RUN([
  2167. #include <termio.h>
  2168. #include <errno.h>
  2169. int main() {
  2170.     struct termio t;
  2171.     if (ioctl(0, TCGETA, &t) == 0
  2172. || errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
  2173. t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB;
  2174. return 0;
  2175.     }
  2176.     return 1;
  2177.     }], tcl_cv_api_serial=termio, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
  2178.     fi
  2179.     if test $tcl_cv_api_serial = no; then
  2180. AC_TRY_RUN([
  2181. #include <sgtty.h>
  2182. #include <errno.h>
  2183. int main() {
  2184.     struct sgttyb t;
  2185.     if (ioctl(0, TIOCGETP, &t) == 0
  2186. || errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
  2187. t.sg_ospeed = 0;
  2188. t.sg_flags |= ODDP | EVENP | RAW;
  2189. return 0;
  2190.     }
  2191.     return 1;
  2192. }], tcl_cv_api_serial=sgtty, tcl_cv_api_serial=none, tcl_cv_api_serial=none)
  2193.     fi])
  2194.     case $tcl_cv_api_serial in
  2195. termios) AC_DEFINE(USE_TERMIOS);;
  2196. termio)  AC_DEFINE(USE_TERMIO);;
  2197. sgtty)   AC_DEFINE(USE_SGTTY);;
  2198.     esac
  2199. ])
  2200. #--------------------------------------------------------------------
  2201. # SC_MISSING_POSIX_HEADERS
  2202. #
  2203. # Supply substitutes for missing POSIX header files.  Special
  2204. # notes:
  2205. #     - stdlib.h doesn't define strtol, strtoul, or
  2206. #       strtod insome versions of SunOS
  2207. #     - some versions of string.h don't declare procedures such
  2208. #       as strstr
  2209. #
  2210. # Arguments:
  2211. # none
  2212. #
  2213. # Results:
  2214. #
  2215. # Defines some of the following vars:
  2216. # NO_DIRENT_H
  2217. # NO_ERRNO_H
  2218. # NO_VALUES_H
  2219. # HAVE_LIMITS_H or NO_LIMITS_H
  2220. # NO_STDLIB_H
  2221. # NO_STRING_H
  2222. # NO_SYS_WAIT_H
  2223. # NO_DLFCN_H
  2224. # HAVE_UNISTD_H
  2225. # HAVE_SYS_PARAM_H
  2226. #
  2227. # HAVE_STRING_H ?
  2228. #
  2229. #--------------------------------------------------------------------
  2230. AC_DEFUN([SC_MISSING_POSIX_HEADERS], [
  2231.     AC_CACHE_CHECK([dirent.h], tcl_cv_dirent_h, [
  2232.     AC_TRY_LINK([#include <sys/types.h>
  2233. #include <dirent.h>], [
  2234. #ifndef _POSIX_SOURCE
  2235. #   ifdef __Lynx__
  2236. /*
  2237.  * Generate compilation error to make the test fail:  Lynx headers
  2238.  * are only valid if really in the POSIX environment.
  2239.  */
  2240. missing_procedure();
  2241. #   endif
  2242. #endif
  2243. DIR *d;
  2244. struct dirent *entryPtr;
  2245. char *p;
  2246. d = opendir("foobar");
  2247. entryPtr = readdir(d);
  2248. p = entryPtr->d_name;
  2249. closedir(d);
  2250. ], tcl_cv_dirent_h=yes, tcl_cv_dirent_h=no)])
  2251.     if test $tcl_cv_dirent_h = no; then
  2252. AC_DEFINE(NO_DIRENT_H)
  2253.     fi
  2254.     AC_CHECK_HEADER(errno.h, , [AC_DEFINE(NO_ERRNO_H)])
  2255.     AC_CHECK_HEADER(float.h, , [AC_DEFINE(NO_FLOAT_H)])
  2256.     AC_CHECK_HEADER(values.h, , [AC_DEFINE(NO_VALUES_H)])
  2257.     AC_CHECK_HEADER(limits.h,
  2258. [AC_DEFINE(HAVE_LIMITS_H)], [AC_DEFINE(NO_LIMITS_H)])
  2259.     AC_CHECK_HEADER(stdlib.h, tcl_ok=1, tcl_ok=0)
  2260.     AC_EGREP_HEADER(strtol, stdlib.h, , tcl_ok=0)
  2261.     AC_EGREP_HEADER(strtoul, stdlib.h, , tcl_ok=0)
  2262.     AC_EGREP_HEADER(strtod, stdlib.h, , tcl_ok=0)
  2263.     if test $tcl_ok = 0; then
  2264. AC_DEFINE(NO_STDLIB_H)
  2265.     fi
  2266.     AC_CHECK_HEADER(string.h, tcl_ok=1, tcl_ok=0)
  2267.     AC_EGREP_HEADER(strstr, string.h, , tcl_ok=0)
  2268.     AC_EGREP_HEADER(strerror, string.h, , tcl_ok=0)
  2269.     # See also memmove check below for a place where NO_STRING_H can be
  2270.     # set and why.
  2271.     if test $tcl_ok = 0; then
  2272. AC_DEFINE(NO_STRING_H)
  2273.     fi
  2274.     AC_CHECK_HEADER(sys/wait.h, , [AC_DEFINE(NO_SYS_WAIT_H)])
  2275.     AC_CHECK_HEADER(dlfcn.h, , [AC_DEFINE(NO_DLFCN_H)])
  2276.     # OS/390 lacks sys/param.h (and doesn't need it, by chance).
  2277.     AC_HAVE_HEADERS(unistd.h sys/param.h)
  2278. ])
  2279. #--------------------------------------------------------------------
  2280. # SC_PATH_X
  2281. #
  2282. # Locate the X11 header files and the X11 library archive.  Try
  2283. # the ac_path_x macro first, but if it doesn't find the X stuff
  2284. # (e.g. because there's no xmkmf program) then check through
  2285. # a list of possible directories.  Under some conditions the
  2286. # autoconf macro will return an include directory that contains
  2287. # no include files, so double-check its result just to be safe.
  2288. #
  2289. # Arguments:
  2290. # none
  2291. #
  2292. # Results:
  2293. #
  2294. # Sets the the following vars:
  2295. # XINCLUDES
  2296. # XLIBSW
  2297. #
  2298. #--------------------------------------------------------------------
  2299. AC_DEFUN([SC_PATH_X], [
  2300.     AC_PATH_X
  2301.     not_really_there=""
  2302.     if test "$no_x" = ""; then
  2303. if test "$x_includes" = ""; then
  2304.     AC_TRY_CPP([#include <X11/XIntrinsic.h>], , not_really_there="yes")
  2305. else
  2306.     if test ! -r $x_includes/X11/Intrinsic.h; then
  2307. not_really_there="yes"
  2308.     fi
  2309. fi
  2310.     fi
  2311.     if test "$no_x" = "yes" -o "$not_really_there" = "yes"; then
  2312. AC_MSG_CHECKING([for X11 header files])
  2313. found_xincludes="no"
  2314. AC_TRY_CPP([#include <X11/Intrinsic.h>], found_xincludes="yes", found_xincludes="no")
  2315. if test "$found_xincludes" = "no"; then
  2316.     dirs="/usr/unsupported/include /usr/local/include /usr/X386/include /usr/X11R6/include /usr/X11R5/include /usr/include/X11R5 /usr/include/X11R4 /usr/openwin/include /usr/X11/include /usr/sww/include"
  2317.     for i in $dirs ; do
  2318. if test -r $i/X11/Intrinsic.h; then
  2319.     AC_MSG_RESULT([$i])
  2320.     XINCLUDES=" -I$i"
  2321.     found_xincludes="yes"
  2322.     break
  2323. fi
  2324.     done
  2325. fi
  2326.     else
  2327. if test "$x_includes" != ""; then
  2328.     XINCLUDES="-I$x_includes"
  2329.     found_xincludes="yes"
  2330. fi
  2331.     fi
  2332.     if test found_xincludes = "no"; then
  2333. AC_MSG_RESULT([couldn't find any!])
  2334.     fi
  2335.     if test "$no_x" = yes; then
  2336. AC_MSG_CHECKING([for X11 libraries])
  2337. XLIBSW=nope
  2338. dirs="/usr/unsupported/lib /usr/local/lib /usr/X386/lib /usr/X11R6/lib /usr/X11R5/lib /usr/lib/X11R5 /usr/lib/X11R4 /usr/openwin/lib /usr/X11/lib /usr/sww/X11/lib"
  2339. for i in $dirs ; do
  2340.     if test -r $i/libX11.a -o -r $i/libX11.so -o -r $i/libX11.sl; then
  2341. AC_MSG_RESULT([$i])
  2342. XLIBSW="-L$i -lX11"
  2343. x_libraries="$i"
  2344. break
  2345.     fi
  2346. done
  2347.     else
  2348. if test "$x_libraries" = ""; then
  2349.     XLIBSW=-lX11
  2350. else
  2351.     XLIBSW="-L$x_libraries -lX11"
  2352. fi
  2353.     fi
  2354.     if test "$XLIBSW" = nope ; then
  2355. AC_CHECK_LIB(Xwindow, XCreateWindow, XLIBSW=-lXwindow)
  2356.     fi
  2357.     if test "$XLIBSW" = nope ; then
  2358. AC_MSG_RESULT([could not find any!  Using -lX11.])
  2359. XLIBSW=-lX11
  2360.     fi
  2361. ])
  2362. #--------------------------------------------------------------------
  2363. # SC_BLOCKING_STYLE
  2364. #
  2365. # The statements below check for systems where POSIX-style
  2366. # non-blocking I/O (O_NONBLOCK) doesn't work or is unimplemented. 
  2367. # On these systems (mostly older ones), use the old BSD-style
  2368. # FIONBIO approach instead.
  2369. #
  2370. # Arguments:
  2371. # none
  2372. #
  2373. # Results:
  2374. #
  2375. # Defines some of the following vars:
  2376. # HAVE_SYS_IOCTL_H
  2377. # HAVE_SYS_FILIO_H
  2378. # USE_FIONBIO
  2379. # O_NONBLOCK
  2380. #
  2381. #--------------------------------------------------------------------
  2382. AC_DEFUN([SC_BLOCKING_STYLE], [
  2383.     AC_CHECK_HEADERS(sys/ioctl.h)
  2384.     AC_CHECK_HEADERS(sys/filio.h)
  2385.     SC_CONFIG_SYSTEM
  2386.     AC_MSG_CHECKING([FIONBIO vs. O_NONBLOCK for nonblocking I/O])
  2387.     case $system in
  2388. # There used to be code here to use FIONBIO under AIX.  However, it
  2389. # was reported that FIONBIO doesn't work under AIX 3.2.5.  Since
  2390. # using O_NONBLOCK seems fine under AIX 4.*, I removed the FIONBIO
  2391. # code (JO, 5/31/97).
  2392. OSF*)
  2393.     AC_DEFINE(USE_FIONBIO)
  2394.     AC_MSG_RESULT([FIONBIO])
  2395.     ;;
  2396. SunOS-4*)
  2397.     AC_DEFINE(USE_FIONBIO)
  2398.     AC_MSG_RESULT([FIONBIO])
  2399.     ;;
  2400. ULTRIX-4.*)
  2401.     AC_DEFINE(USE_FIONBIO)
  2402.     AC_MSG_RESULT([FIONBIO])
  2403.     ;;
  2404. *)
  2405.     AC_MSG_RESULT([O_NONBLOCK])
  2406.     ;;
  2407.     esac
  2408. ])
  2409. #--------------------------------------------------------------------
  2410. # SC_TIME_HANLDER
  2411. #
  2412. # Checks how the system deals with time.h, what time structures
  2413. # are used on the system, and what fields the structures have.
  2414. #
  2415. # Arguments:
  2416. # none
  2417. #
  2418. # Results:
  2419. #
  2420. # Defines some of the following vars:
  2421. # USE_DELTA_FOR_TZ
  2422. # HAVE_TM_GMTOFF
  2423. # HAVE_TM_TZADJ
  2424. # HAVE_TIMEZONE_VAR
  2425. #
  2426. #--------------------------------------------------------------------
  2427. AC_DEFUN([SC_TIME_HANDLER], [
  2428.     AC_CHECK_HEADERS(sys/time.h)
  2429.     AC_HEADER_TIME
  2430.     AC_STRUCT_TIMEZONE
  2431.     AC_CHECK_FUNCS(gmtime_r localtime_r)
  2432.     AC_CACHE_CHECK([tm_tzadj in struct tm], tcl_cv_member_tm_tzadj, [
  2433. AC_TRY_COMPILE([#include <time.h>], [struct tm tm; tm.tm_tzadj;],
  2434.     tcl_cv_member_tm_tzadj=yes, tcl_cv_member_tm_tzadj=no)])
  2435.     if test $tcl_cv_member_tm_tzadj = yes ; then
  2436. AC_DEFINE(HAVE_TM_TZADJ)
  2437.     fi
  2438.     AC_CACHE_CHECK([tm_gmtoff in struct tm], tcl_cv_member_tm_gmtoff, [
  2439. AC_TRY_COMPILE([#include <time.h>], [struct tm tm; tm.tm_gmtoff;],
  2440.     tcl_cv_member_tm_gmtoff=yes, tcl_cv_member_tm_gmtoff=no)])
  2441.     if test $tcl_cv_member_tm_gmtoff = yes ; then
  2442. AC_DEFINE(HAVE_TM_GMTOFF)
  2443.     fi
  2444.     #
  2445.     # Its important to include time.h in this check, as some systems
  2446.     # (like convex) have timezone functions, etc.
  2447.     #
  2448.     AC_CACHE_CHECK([long timezone variable], tcl_cv_timezone_long, [
  2449. AC_TRY_COMPILE([#include <time.h>],
  2450.     [extern long timezone;
  2451.     timezone += 1;
  2452.     exit (0);],
  2453.     tcl_cv_timezone_long=yes, tcl_cv_timezone_long=no)])
  2454.     if test $tcl_cv_timezone_long = yes ; then
  2455. AC_DEFINE(HAVE_TIMEZONE_VAR)
  2456.     else
  2457. #
  2458. # On some systems (eg IRIX 6.2), timezone is a time_t and not a long.
  2459. #
  2460. AC_CACHE_CHECK([time_t timezone variable], tcl_cv_timezone_time, [
  2461.     AC_TRY_COMPILE([#include <time.h>],
  2462. [extern time_t timezone;
  2463. timezone += 1;
  2464. exit (0);],
  2465. tcl_cv_timezone_time=yes, tcl_cv_timezone_time=no)])
  2466. if test $tcl_cv_timezone_time = yes ; then
  2467.     AC_DEFINE(HAVE_TIMEZONE_VAR)
  2468. fi
  2469.     fi
  2470. ])
  2471. #--------------------------------------------------------------------
  2472. # SC_BUGGY_STRTOD
  2473. #
  2474. # Under Solaris 2.4, strtod returns the wrong value for the
  2475. # terminating character under some conditions.  Check for this
  2476. # and if the problem exists use a substitute procedure
  2477. # "fixstrtod" (provided by Tcl) that corrects the error.
  2478. # Also, on Compaq's Tru64 Unix 5.0,
  2479. # strtod(" ") returns 0.0 instead of a failure to convert.
  2480. #
  2481. # Arguments:
  2482. # none
  2483. #
  2484. # Results:
  2485. #
  2486. # Might defines some of the following vars:
  2487. # strtod (=fixstrtod)
  2488. #
  2489. #--------------------------------------------------------------------
  2490. AC_DEFUN([SC_BUGGY_STRTOD], [
  2491.     AC_CHECK_FUNC(strtod, tcl_strtod=1, tcl_strtod=0)
  2492.     if test "$tcl_strtod" = 1; then
  2493. AC_CACHE_CHECK([for Solaris2.4/Tru64 strtod bugs], tcl_cv_strtod_buggy,[
  2494.     AC_TRY_RUN([
  2495. extern double strtod();
  2496. int main() {
  2497.     char *infString="Inf", *nanString="NaN", *spaceString=" ";
  2498.     char *term;
  2499.     double value;
  2500.     value = strtod(infString, &term);
  2501.     if ((term != infString) && (term[-1] == 0)) {
  2502. exit(1);
  2503.     }
  2504.     value = strtod(nanString, &term);
  2505.     if ((term != nanString) && (term[-1] == 0)) {
  2506. exit(1);
  2507.     }
  2508.     value = strtod(spaceString, &term);
  2509.     if (term == (spaceString+1)) {
  2510. exit(1);
  2511.     }
  2512.     exit(0);
  2513. }], tcl_cv_strtod_buggy=ok, tcl_cv_strtod_buggy=buggy,
  2514.     tcl_cv_strtod_buggy=buggy)])
  2515. if test "$tcl_cv_strtod_buggy" = buggy; then
  2516.     LIBOBJS="$LIBOBJS fixstrtod.o"
  2517.     AC_DEFINE(strtod, fixstrtod)
  2518. fi
  2519.     fi
  2520. ])
  2521. #--------------------------------------------------------------------
  2522. # SC_TCL_LINK_LIBS
  2523. #
  2524. # Search for the libraries needed to link the Tcl shell.
  2525. # Things like the math library (-lm) and socket stuff (-lsocket vs.
  2526. # -lnsl) are dealt with here.
  2527. #
  2528. # Arguments:
  2529. # Requires the following vars to be set in the Makefile:
  2530. # DL_LIBS
  2531. # LIBS
  2532. # MATH_LIBS
  2533. #
  2534. # Results:
  2535. #
  2536. # Subst's the following var:
  2537. # TCL_LIBS
  2538. # MATH_LIBS
  2539. #
  2540. # Might append to the following vars:
  2541. # LIBS
  2542. #
  2543. # Might define the following vars:
  2544. # HAVE_NET_ERRNO_H
  2545. #
  2546. #--------------------------------------------------------------------
  2547. AC_DEFUN([SC_TCL_LINK_LIBS], [
  2548.     #--------------------------------------------------------------------
  2549.     # On a few very rare systems, all of the libm.a stuff is
  2550.     # already in libc.a.  Set compiler flags accordingly.
  2551.     # Also, Linux requires the "ieee" library for math to work
  2552.     # right (and it must appear before "-lm").
  2553.     #--------------------------------------------------------------------
  2554.     AC_CHECK_FUNC(sin, MATH_LIBS="", MATH_LIBS="-lm")
  2555.     AC_CHECK_LIB(ieee, main, [MATH_LIBS="-lieee $MATH_LIBS"])
  2556.     #--------------------------------------------------------------------
  2557.     # Interactive UNIX requires -linet instead of -lsocket, plus it
  2558.     # needs net/errno.h to define the socket-related error codes.
  2559.     #--------------------------------------------------------------------
  2560.     AC_CHECK_LIB(inet, main, [LIBS="$LIBS -linet"])
  2561.     AC_CHECK_HEADER(net/errno.h, [AC_DEFINE(HAVE_NET_ERRNO_H)])
  2562.     #--------------------------------------------------------------------
  2563.     # Check for the existence of the -lsocket and -lnsl libraries.
  2564.     # The order here is important, so that they end up in the right
  2565.     # order in the command line generated by make.  Here are some
  2566.     # special considerations:
  2567.     # 1. Use "connect" and "accept" to check for -lsocket, and
  2568.     #    "gethostbyname" to check for -lnsl.
  2569.     # 2. Use each function name only once:  can't redo a check because
  2570.     #    autoconf caches the results of the last check and won't redo it.
  2571.     # 3. Use -lnsl and -lsocket only if they supply procedures that
  2572.     #    aren't already present in the normal libraries.  This is because
  2573.     #    IRIX 5.2 has libraries, but they aren't needed and they're
  2574.     #    bogus:  they goof up name resolution if used.
  2575.     # 4. On some SVR4 systems, can't use -lsocket without -lnsl too.
  2576.     #    To get around this problem, check for both libraries together
  2577.     #    if -lsocket doesn't work by itself.
  2578.     #--------------------------------------------------------------------
  2579.     tcl_checkBoth=0
  2580.     AC_CHECK_FUNC(connect, tcl_checkSocket=0, tcl_checkSocket=1)
  2581.     if test "$tcl_checkSocket" = 1; then
  2582. AC_CHECK_FUNC(setsockopt, , [AC_CHECK_LIB(socket, setsockopt,
  2583.     LIBS="$LIBS -lsocket", tcl_checkBoth=1)])
  2584.     fi
  2585.     if test "$tcl_checkBoth" = 1; then
  2586. tk_oldLibs=$LIBS
  2587. LIBS="$LIBS -lsocket -lnsl"
  2588. AC_CHECK_FUNC(accept, tcl_checkNsl=0, [LIBS=$tk_oldLibs])
  2589.     fi
  2590.     AC_CHECK_FUNC(gethostbyname, , [AC_CHECK_LIB(nsl, gethostbyname,
  2591.     [LIBS="$LIBS -lnsl"])])
  2592.     
  2593.     # Don't perform the eval of the libraries here because DL_LIBS
  2594.     # won't be set until we call SC_CONFIG_CFLAGS
  2595.     TCL_LIBS='${DL_LIBS} ${LIBS} ${MATH_LIBS}'
  2596.     AC_SUBST(TCL_LIBS)
  2597.     AC_SUBST(MATH_LIBS)
  2598. ])
  2599. #--------------------------------------------------------------------
  2600. # SC_TCL_EARLY_FLAGS
  2601. #
  2602. # Check for what flags are needed to be passed so the correct OS
  2603. # features are available.
  2604. #
  2605. # Arguments:
  2606. # None
  2607. #
  2608. # Results:
  2609. #
  2610. # Might define the following vars:
  2611. # _ISOC99_SOURCE
  2612. # _LARGEFILE64_SOURCE
  2613. # _LARGEFILE_SOURCE64
  2614. #
  2615. #--------------------------------------------------------------------
  2616. AC_DEFUN([SC_TCL_EARLY_FLAG],[
  2617.     AC_CACHE_VAL([tcl_cv_flag_]translit($1,[A-Z],[a-z]),
  2618. AC_TRY_COMPILE([$2], $3, [tcl_cv_flag_]translit($1,[A-Z],[a-z])=no,
  2619.     AC_TRY_COMPILE([[#define ]$1[ 1
  2620. ]$2], $3,
  2621. [tcl_cv_flag_]translit($1,[A-Z],[a-z])=yes,
  2622. [tcl_cv_flag_]translit($1,[A-Z],[a-z])=no)))
  2623.     if test ["x${tcl_cv_flag_]translit($1,[A-Z],[a-z])[}" = "xyes"] ; then
  2624. AC_DEFINE($1)
  2625. tcl_flags="$tcl_flags $1"
  2626.     fi
  2627. ])
  2628. AC_DEFUN([SC_TCL_EARLY_FLAGS],[
  2629.     AC_MSG_CHECKING([for required early compiler flags])
  2630.     tcl_flags=""
  2631.     SC_TCL_EARLY_FLAG(_ISOC99_SOURCE,[#include <stdlib.h>],
  2632. [char *p = (char *)strtoll; char *q = (char *)strtoull;])
  2633.     SC_TCL_EARLY_FLAG(_LARGEFILE64_SOURCE,[#include <sys/stat.h>],
  2634. [struct stat64 buf; int i = stat64("/", &buf);])
  2635.     SC_TCL_EARLY_FLAG(_LARGEFILE_SOURCE64,[#include <sys/stat.h>],
  2636. [char *p = (char *)open64;])
  2637.     if test "x${tcl_flags}" = "x" ; then
  2638. AC_MSG_RESULT([none])
  2639.     else
  2640. AC_MSG_RESULT([${tcl_flags}])
  2641.     fi
  2642. ])
  2643. #--------------------------------------------------------------------
  2644. # SC_TCL_64BIT_FLAGS
  2645. #
  2646. # Check for what is defined in the way of 64-bit features.
  2647. #
  2648. # Arguments:
  2649. # None
  2650. #
  2651. # Results:
  2652. #
  2653. # Might define the following vars:
  2654. # TCL_WIDE_INT_IS_LONG
  2655. # TCL_WIDE_INT_TYPE
  2656. # HAVE_STRUCT_DIRENT64
  2657. # HAVE_STRUCT_STAT64
  2658. # HAVE_TYPE_OFF64_T
  2659. #
  2660. #--------------------------------------------------------------------
  2661. AC_DEFUN([SC_TCL_64BIT_FLAGS], [
  2662.     AC_MSG_CHECKING([for 64-bit integer type])
  2663.     AC_CACHE_VAL(tcl_cv_type_64bit,[
  2664. tcl_cv_type_64bit=none
  2665. # See if the compiler knows natively about __int64
  2666. AC_TRY_COMPILE(,[__int64 value = (__int64) 0;],
  2667.     tcl_type_64bit=__int64, tcl_type_64bit="long long")
  2668. # See if we should use long anyway  Note that we substitute in the
  2669. # type that is our current guess for a 64-bit type inside this check
  2670. # program, so it should be modified only carefully...
  2671.         AC_TRY_COMPILE(,[switch (0) { 
  2672.             case 1: case (sizeof(]${tcl_type_64bit}[)==sizeof(long)): ; 
  2673.         }],tcl_cv_type_64bit=${tcl_type_64bit})])
  2674.     if test "${tcl_cv_type_64bit}" = none ; then
  2675. AC_DEFINE(TCL_WIDE_INT_IS_LONG)
  2676. AC_MSG_RESULT([using long])
  2677.     else
  2678. AC_DEFINE_UNQUOTED(TCL_WIDE_INT_TYPE,${tcl_cv_type_64bit})
  2679. AC_MSG_RESULT([${tcl_cv_type_64bit}])
  2680. # Now check for auxiliary declarations
  2681. AC_CACHE_CHECK([for struct dirent64], tcl_cv_struct_dirent64,[
  2682.     AC_TRY_COMPILE([#include <sys/types.h>
  2683. #include <sys/dirent.h>],[struct dirent64 p;],
  2684. tcl_cv_struct_dirent64=yes,tcl_cv_struct_dirent64=no)])
  2685. if test "x${tcl_cv_struct_dirent64}" = "xyes" ; then
  2686.     AC_DEFINE(HAVE_STRUCT_DIRENT64)
  2687. fi
  2688. AC_CACHE_CHECK([for struct stat64], tcl_cv_struct_stat64,[
  2689.     AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat64 p;
  2690. ],
  2691. tcl_cv_struct_stat64=yes,tcl_cv_struct_stat64=no)])
  2692. if test "x${tcl_cv_struct_stat64}" = "xyes" ; then
  2693.     AC_DEFINE(HAVE_STRUCT_STAT64)
  2694. fi
  2695. AC_CHECK_FUNCS(open64 lseek64)
  2696. AC_MSG_CHECKING([for off64_t])
  2697. AC_CACHE_VAL(tcl_cv_type_off64_t,[
  2698.     AC_TRY_COMPILE([#include <sys/types.h>],[off64_t offset;
  2699. ],
  2700. tcl_cv_type_off64_t=yes,tcl_cv_type_off64_t=no)])
  2701. dnl Define HAVE_TYPE_OFF64_T only when the off64_t type and the
  2702. dnl functions lseek64 and open64 are defined.
  2703. if test "x${tcl_cv_type_off64_t}" = "xyes" && 
  2704.         test "x${ac_cv_func_lseek64}" = "xyes" && 
  2705.         test "x${ac_cv_func_open64}" = "xyes" ; then
  2706.     AC_DEFINE(HAVE_TYPE_OFF64_T)
  2707.     AC_MSG_RESULT([yes])
  2708. else
  2709.     AC_MSG_RESULT([no])
  2710. fi
  2711.     fi
  2712. ])
  2713. #--------------------------------------------------------------------
  2714. # SC_TCL_GETHOSTBYADDR_R
  2715. #
  2716. # Check if we have MT-safe variant of gethostbyaddr().
  2717. #
  2718. # Arguments:
  2719. # None
  2720. #
  2721. # Results:
  2722. #
  2723. # Might define the following vars:
  2724. # HAVE_GETHOSTBYADDR_R
  2725. # HAVE_GETHOSTBYADDR_R_7
  2726. # HAVE_GETHOSTBYADDR_R_8
  2727. #
  2728. #--------------------------------------------------------------------
  2729. AC_DEFUN([SC_TCL_GETHOSTBYADDR_R], [AC_CHECK_FUNC(gethostbyaddr_r, [
  2730.     AC_CACHE_CHECK([for gethostbyaddr_r with 7 args], tcl_cv_api_gethostbyaddr_r_7, [
  2731.     AC_TRY_COMPILE([
  2732. #include <netdb.h>
  2733.     ], [
  2734. char *addr;
  2735. int length;
  2736. int type;
  2737. struct hostent *result;
  2738. char buffer[2048];
  2739. int buflen = 2048;
  2740. int h_errnop;
  2741. (void) gethostbyaddr_r(addr, length, type, result, buffer, buflen,
  2742.        &h_errnop);
  2743.     ], tcl_cv_api_gethostbyaddr_r_7=yes, tcl_cv_api_gethostbyaddr_r_7=no)])
  2744.     tcl_ok=$tcl_cv_api_gethostbyaddr_r_7
  2745.     if test "$tcl_ok" = yes; then
  2746. AC_DEFINE(HAVE_GETHOSTBYADDR_R_7)
  2747.     else
  2748. AC_CACHE_CHECK([for gethostbyaddr_r with 8 args], tcl_cv_api_gethostbyaddr_r_8, [
  2749. AC_TRY_COMPILE([
  2750.     #include <netdb.h>
  2751. ], [
  2752.     char *addr;
  2753.     int length;
  2754.     int type;
  2755.     struct hostent *result, *resultp;
  2756.     char buffer[2048];
  2757.     int buflen = 2048;
  2758.     int h_errnop;
  2759.     (void) gethostbyaddr_r(addr, length, type, result, buffer, buflen,
  2760.    &resultp, &h_errnop);
  2761. ], tcl_cv_api_gethostbyaddr_r_8=yes, tcl_cv_api_gethostbyaddr_r_8=no)])
  2762. tcl_ok=$tcl_cv_api_gethostbyaddr_r_8
  2763. if test "$tcl_ok" = yes; then
  2764.     AC_DEFINE(HAVE_GETHOSTBYADDR_R_8)
  2765. fi
  2766.     fi
  2767.     if test "$tcl_ok" = yes; then
  2768. AC_DEFINE(HAVE_GETHOSTBYADDR_R)
  2769.     fi
  2770. ])])
  2771. #--------------------------------------------------------------------
  2772. # SC_TCL_GETHOSTBYNAME_R
  2773. #
  2774. # Check to see what variant of gethostbyname_r() we have.
  2775. # Based on David Arnold's example from the comp.programming.threads
  2776. # FAQ Q213
  2777. #
  2778. # Arguments:
  2779. # None
  2780. #
  2781. # Results:
  2782. #
  2783. # Might define the following vars:
  2784. # HAVE_GETHOSTBYADDR_R
  2785. # HAVE_GETHOSTBYADDR_R_3
  2786. # HAVE_GETHOSTBYADDR_R_5
  2787. # HAVE_GETHOSTBYADDR_R_6
  2788. #
  2789. #--------------------------------------------------------------------
  2790. AC_DEFUN([SC_TCL_GETHOSTBYNAME_R], [AC_CHECK_FUNC(gethostbyname_r, [
  2791.     AC_CACHE_CHECK([for gethostbyname_r with 6 args], tcl_cv_api_gethostbyname_r_6, [
  2792.     AC_TRY_COMPILE([
  2793. #include <netdb.h>
  2794.     ], [
  2795. char *name;
  2796. struct hostent *he, *res;
  2797. char buffer[2048];
  2798. int buflen = 2048;
  2799. int h_errnop;
  2800. (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop);
  2801.     ], tcl_cv_api_gethostbyname_r_6=yes, tcl_cv_api_gethostbyname_r_6=no)])
  2802.     tcl_ok=$tcl_cv_api_gethostbyname_r_6
  2803.     if test "$tcl_ok" = yes; then
  2804. AC_DEFINE(HAVE_GETHOSTBYNAME_R_6)
  2805.     else
  2806. AC_CACHE_CHECK([for gethostbyname_r with 5 args], tcl_cv_api_gethostbyname_r_5, [
  2807. AC_TRY_COMPILE([
  2808.     #include <netdb.h>
  2809. ], [
  2810.     char *name;
  2811.     struct hostent *he;
  2812.     char buffer[2048];
  2813.     int buflen = 2048;
  2814.     int h_errnop;
  2815.     (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop);
  2816. ], tcl_cv_api_gethostbyname_r_5=yes, tcl_cv_api_gethostbyname_r_5=no)])
  2817. tcl_ok=$tcl_cv_api_gethostbyname_r_5
  2818. if test "$tcl_ok" = yes; then
  2819.     AC_DEFINE(HAVE_GETHOSTBYNAME_R_5)
  2820. else
  2821.     AC_CACHE_CHECK([for gethostbyname_r with 3 args], tcl_cv_api_gethostbyname_r_3, [
  2822.     AC_TRY_COMPILE([
  2823. #include <netdb.h>
  2824.     ], [
  2825. char *name;
  2826. struct hostent *he;
  2827. struct hostent_data data;
  2828. (void) gethostbyname_r(name, he, &data);
  2829.     ], tcl_cv_api_gethostbyname_r_3=yes, tcl_cv_api_gethostbyname_r_3=no)])
  2830.     tcl_ok=$tcl_cv_api_gethostbyname_r_3
  2831.     if test "$tcl_ok" = yes; then
  2832. AC_DEFINE(HAVE_GETHOSTBYNAME_R_3)
  2833.     fi
  2834. fi
  2835.     fi
  2836.     if test "$tcl_ok" = yes; then
  2837. AC_DEFINE(HAVE_GETHOSTBYNAME_R)
  2838.     fi
  2839. ])])
  2840. #--------------------------------------------------------------------
  2841. # SC_TCL_GETPWUID_R
  2842. #
  2843. # Check if we have MT-safe variant of getpwuid() and if yes,
  2844. # which one exactly.
  2845. #
  2846. # Arguments:
  2847. # None
  2848. #
  2849. # Results:
  2850. #
  2851. # Might define the following vars:
  2852. # HAVE_GETPWUID_R
  2853. # HAVE_GETPWUID_R_4
  2854. # HAVE_GETPWUID_R_5
  2855. #
  2856. #--------------------------------------------------------------------
  2857. AC_DEFUN([SC_TCL_GETPWUID_R], [AC_CHECK_FUNC(getpwuid_r, [
  2858.     AC_CACHE_CHECK([for getpwuid_r with 5 args], tcl_cv_api_getpwuid_r_5, [
  2859.     AC_TRY_COMPILE([
  2860. #include <sys/types.h>
  2861. #include <pwd.h>
  2862.     ], [
  2863. uid_t uid;
  2864. struct passwd pw, *pwp;
  2865. char buf[512];
  2866. int buflen = 512;
  2867. (void) getpwuid_r(uid, &pw, buf, buflen, &pwp);
  2868.     ], tcl_cv_api_getpwuid_r_5=yes, tcl_cv_api_getpwuid_r_5=no)])
  2869.     tcl_ok=$tcl_cv_api_getpwuid_r_5
  2870.     if test "$tcl_ok" = yes; then
  2871. AC_DEFINE(HAVE_GETPWUID_R_5)
  2872.     else
  2873. AC_CACHE_CHECK([for getpwuid_r with 4 args], tcl_cv_api_getpwuid_r_4, [
  2874. AC_TRY_COMPILE([
  2875.     #include <sys/types.h>
  2876.     #include <pwd.h>
  2877. ], [
  2878.     uid_t uid;
  2879.     struct passwd pw;
  2880.     char buf[512];
  2881.     int buflen = 512;
  2882.     (void)getpwnam_r(uid, &pw, buf, buflen);
  2883. ], tcl_cv_api_getpwuid_r_4=yes, tcl_cv_api_getpwuid_r_4=no)])
  2884. tcl_ok=$tcl_cv_api_getpwuid_r_4
  2885. if test "$tcl_ok" = yes; then
  2886.     AC_DEFINE(HAVE_GETPWUID_R_4)
  2887. fi
  2888.     fi
  2889.     if test "$tcl_ok" = yes; then
  2890. AC_DEFINE(HAVE_GETPWUID_R)
  2891.     fi
  2892. ])])
  2893. #--------------------------------------------------------------------
  2894. # SC_TCL_GETPWNAM_R
  2895. #
  2896. # Check if we have MT-safe variant of getpwnam() and if yes,
  2897. # which one exactly.
  2898. #
  2899. # Arguments:
  2900. # None
  2901. #
  2902. # Results:
  2903. #
  2904. # Might define the following vars:
  2905. # HAVE_GETPWNAM_R
  2906. # HAVE_GETPWNAM_R_4
  2907. # HAVE_GETPWNAM_R_5
  2908. #
  2909. #--------------------------------------------------------------------
  2910. AC_DEFUN([SC_TCL_GETPWNAM_R], [AC_CHECK_FUNC(getpwnam_r, [
  2911.     AC_CACHE_CHECK([for getpwnam_r with 5 args], tcl_cv_api_getpwnam_r_5, [
  2912.     AC_TRY_COMPILE([
  2913. #include <sys/types.h>
  2914. #include <pwd.h>
  2915.     ], [
  2916. char *name;
  2917. struct passwd pw, *pwp;
  2918. char buf[512];
  2919. int buflen = 512;
  2920. (void) getpwnam_r(name, &pw, buf, buflen, &pwp);
  2921.     ], tcl_cv_api_getpwnam_r_5=yes, tcl_cv_api_getpwnam_r_5=no)])
  2922.     tcl_ok=$tcl_cv_api_getpwnam_r_5
  2923.     if test "$tcl_ok" = yes; then
  2924. AC_DEFINE(HAVE_GETPWNAM_R_5)
  2925.     else
  2926. AC_CACHE_CHECK([for getpwnam_r with 4 args], tcl_cv_api_getpwnam_r_4, [
  2927. AC_TRY_COMPILE([
  2928.     #include <sys/types.h>
  2929.     #include <pwd.h>
  2930. ], [
  2931.     char *name;
  2932.     struct passwd pw;
  2933.     char buf[512];
  2934.     int buflen = 512;
  2935.     (void)getpwnam_r(name, &pw, buf, buflen);
  2936. ], tcl_cv_api_getpwnam_r_4=yes, tcl_cv_api_getpwnam_r_4=no)])
  2937. tcl_ok=$tcl_cv_api_getpwnam_r_4
  2938. if test "$tcl_ok" = yes; then
  2939.     AC_DEFINE(HAVE_GETPWNAM_R_4)
  2940. fi
  2941.     fi
  2942.     if test "$tcl_ok" = yes; then
  2943. AC_DEFINE(HAVE_GETPWNAM_R)
  2944.     fi
  2945. ])])
  2946. #--------------------------------------------------------------------
  2947. # SC_TCL_GETGRGID_R
  2948. #
  2949. # Check if we have MT-safe variant of getgrgid() and if yes,
  2950. # which one exactly.
  2951. #
  2952. # Arguments:
  2953. # None
  2954. #
  2955. # Results:
  2956. #
  2957. # Might define the following vars:
  2958. # HAVE_GETGRGID_R
  2959. # HAVE_GETGRGID_R_4
  2960. # HAVE_GETGRGID_R_5
  2961. #
  2962. #--------------------------------------------------------------------
  2963. AC_DEFUN([SC_TCL_GETGRGID_R], [AC_CHECK_FUNC(getgrgid_r, [
  2964.     AC_CACHE_CHECK([for getgrgid_r with 5 args], tcl_cv_api_getgrgid_r_5, [
  2965.     AC_TRY_COMPILE([
  2966. #include <sys/types.h>
  2967. #include <grp.h>
  2968.     ], [
  2969. gid_t gid;
  2970. struct group gr, *grp;
  2971. char buf[512];
  2972. int buflen = 512;
  2973. (void) getgrgid_r(gid, &gr, buf, buflen, &grp);
  2974.     ], tcl_cv_api_getgrgid_r_5=yes, tcl_cv_api_getgrgid_r_5=no)])
  2975.     tcl_ok=$tcl_cv_api_getgrgid_r_5
  2976.     if test "$tcl_ok" = yes; then
  2977. AC_DEFINE(HAVE_GETGRGID_R_5)
  2978.     else
  2979. AC_CACHE_CHECK([for getgrgid_r with 4 args], tcl_cv_api_getgrgid_r_4, [
  2980. AC_TRY_COMPILE([
  2981.     #include <sys/types.h>
  2982.     #include <grp.h>
  2983. ], [
  2984.     gid_t gid;
  2985.     struct group gr;
  2986.     char buf[512];
  2987.     int buflen = 512;
  2988.     (void)getgrgid_r(gid, &gr, buf, buflen);
  2989. ], tcl_cv_api_getgrgid_r_4=yes, tcl_cv_api_getgrgid_r_4=no)])
  2990. tcl_ok=$tcl_cv_api_getgrgid_r_4
  2991. if test "$tcl_ok" = yes; then
  2992.     AC_DEFINE(HAVE_GETGRGID_R_4)
  2993. fi
  2994.     fi
  2995.     if test "$tcl_ok" = yes; then
  2996. AC_DEFINE(HAVE_GETGRGID_R)
  2997.     fi
  2998. ])])
  2999. #--------------------------------------------------------------------
  3000. # SC_TCL_GETGRNAM_R
  3001. #
  3002. # Check if we have MT-safe variant of getgrnam() and if yes,
  3003. # which one exactly.
  3004. #
  3005. # Arguments:
  3006. # None
  3007. #
  3008. # Results:
  3009. #
  3010. # Might define the following vars:
  3011. # HAVE_GETGRNAM_R
  3012. # HAVE_GETGRNAM_R_4
  3013. # HAVE_GETGRNAM_R_5
  3014. #
  3015. #--------------------------------------------------------------------
  3016. AC_DEFUN([SC_TCL_GETGRNAM_R], [AC_CHECK_FUNC(getgrnam_r, [
  3017.     AC_CACHE_CHECK([for getgrnam_r with 5 args], tcl_cv_api_getgrnam_r_5, [
  3018.     AC_TRY_COMPILE([
  3019. #include <sys/types.h>
  3020. #include <grp.h>
  3021.     ], [
  3022. char *name;
  3023. struct group gr, *grp;
  3024. char buf[512];
  3025. int buflen = 512;
  3026. (void) getgrnam_r(name, &gr, buf, buflen, &grp);
  3027.     ], tcl_cv_api_getgrnam_r_5=yes, tcl_cv_api_getgrnam_r_5=no)])
  3028.     tcl_ok=$tcl_cv_api_getgrnam_r_5
  3029.     if test "$tcl_ok" = yes; then
  3030. AC_DEFINE(HAVE_GETGRNAM_R_5)
  3031.     else
  3032. AC_CACHE_CHECK([for getgrnam_r with 4 args], tcl_cv_api_getgrnam_r_4, [
  3033. AC_TRY_COMPILE([
  3034.     #include <sys/types.h>
  3035.     #include <grp.h>
  3036. ], [
  3037.     char *name;
  3038.     struct group gr;
  3039.     char buf[512];
  3040.     int buflen = 512;
  3041.     (void)getgrnam_r(name, &gr, buf, buflen);
  3042. ], tcl_cv_api_getgrnam_r_4=yes, tcl_cv_api_getgrnam_r_4=no)])
  3043. tcl_ok=$tcl_cv_api_getgrnam_r_4
  3044. if test "$tcl_ok" = yes; then
  3045.     AC_DEFINE(HAVE_GETGRNAM_R_4)
  3046. fi
  3047.     fi
  3048.     if test "$tcl_ok" = yes; then
  3049. AC_DEFINE(HAVE_GETGRNAM_R)
  3050.     fi
  3051. ])])
  3052. #--------------------------------------------------------------------
  3053. # SC_CONFIG_COMMANDS_PRE(CMDS)
  3054. #
  3055. # Replacement for autoconf 2.5x AC_COMMANDS_PRE:
  3056. # Commands to run right before config.status is
  3057. # created. Accumulates.
  3058. #
  3059. # Requires presence of SC_OUTPUT_COMMANDS_PRE at the end
  3060. # of configure.in (right before AC_OUTPUT).
  3061. #
  3062. #--------------------------------------------------------------------
  3063. AC_DEFUN([SC_CONFIG_COMMANDS_PRE], [
  3064.     define([SC_OUTPUT_COMMANDS_PRE], defn([SC_OUTPUT_COMMANDS_PRE])[$1
  3065. ])])
  3066. AC_DEFUN([SC_OUTPUT_COMMANDS_PRE])