comparison config/tcl.m4 @ 0:a06113de4d67

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