xref: /netbsd-src/external/gpl3/binutils/dist/config/tcl.m4 (revision 4fee23f98c45552038ad6b5bd05124a41302fb01)
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
20AC_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
144AC_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
268AC_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
351AC_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
437AC_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
482AC_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
510AC_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
550AC_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
605AC_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
717AC_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
774AC_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
825AC_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
888AC_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
1006AC_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=""
1060dnl FIXME: Replace AC_CHECK_PROG with AC_CHECK_TOOL once cross compiling is fixed.
1061dnl 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
1985dnl # Add any CPPFLAGS set in the environment to our CFLAGS, but delay doing so
1986dnl # until the end of configure, as configure's compile and link tests use
1987dnl # both CPPFLAGS and CFLAGS (unlike our compile and link) but configure's
1988dnl # 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
2141dnl        Not at all clear what this was doing in Tcl's configure.in
2142dnl        or why it was needed was needed. In any event, this sort of
2143dnl        things needs to be done in the big loop above.
2144dnl        REMOVE THIS BLOCK LATER! (mdejong)
2145dnl        case $system in
2146dnl            BSD/OS*)
2147dnl                ;;
2148dnl            AIX-[[1-4]].*)
2149dnl                ;;
2150dnl            *)
2151dnl                SHLIB_LD_LIBS=""
2152dnl                ;;
2153dnl        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
2220AC_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
2226int 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
2239int 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
2252int 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
2267int 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
2283int 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
2298int 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
2347AC_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
2361DIR *d;
2362struct dirent *entryPtr;
2363char *p;
2364d = opendir("foobar");
2365entryPtr = readdir(d);
2366p = entryPtr->d_name;
2367closedir(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
2425AC_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
2511AC_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
2559AC_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
2628AC_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
2687AC_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
2764AC_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
2777AC_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
2812AC_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
2885AC_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
2950AC_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
3022AC_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
3079AC_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
3136AC_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
3193AC_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
3244AC_DEFUN([SC_CONFIG_COMMANDS_PRE], [
3245    define([SC_OUTPUT_COMMANDS_PRE], defn([SC_OUTPUT_COMMANDS_PRE])[$1
3246])])
3247AC_DEFUN([SC_OUTPUT_COMMANDS_PRE])
3248
3249