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