xref: /freebsd/contrib/sqlite3/tea/tclconfig/tcl.m4 (revision 0957b409)
1# tcl.m4 --
2#
3#	This file provides a set of autoconf macros to help TEA-enable
4#	a Tcl extension.
5#
6# Copyright (c) 1999-2000 Ajuba Solutions.
7# Copyright (c) 2002-2005 ActiveState Corporation.
8#
9# See the file "license.terms" for information on usage and redistribution
10# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
11
12AC_PREREQ(2.57)
13
14dnl TEA extensions pass us the version of TEA they think they
15dnl are compatible with (must be set in TEA_INIT below)
16dnl TEA_VERSION="3.9"
17
18# Possible values for key variables defined:
19#
20# TEA_WINDOWINGSYSTEM - win32 aqua x11 (mirrors 'tk windowingsystem')
21# TEA_PLATFORM        - windows unix
22#
23
24#------------------------------------------------------------------------
25# TEA_PATH_TCLCONFIG --
26#
27#	Locate the tclConfig.sh file and perform a sanity check on
28#	the Tcl compile flags
29#
30# Arguments:
31#	none
32#
33# Results:
34#
35#	Adds the following arguments to configure:
36#		--with-tcl=...
37#
38#	Defines the following vars:
39#		TCL_BIN_DIR	Full path to the directory containing
40#				the tclConfig.sh file
41#------------------------------------------------------------------------
42
43AC_DEFUN([TEA_PATH_TCLCONFIG], [
44    dnl TEA specific: Make sure we are initialized
45    AC_REQUIRE([TEA_INIT])
46    #
47    # Ok, lets find the tcl configuration
48    # First, look for one uninstalled.
49    # the alternative search directory is invoked by --with-tcl
50    #
51
52    if test x"${no_tcl}" = x ; then
53	# we reset no_tcl in case something fails here
54	no_tcl=true
55	AC_ARG_WITH(tcl,
56	    AC_HELP_STRING([--with-tcl],
57		[directory containing tcl configuration (tclConfig.sh)]),
58	    with_tclconfig="${withval}")
59	AC_MSG_CHECKING([for Tcl configuration])
60	AC_CACHE_VAL(ac_cv_c_tclconfig,[
61
62	    # First check to see if --with-tcl was specified.
63	    if test x"${with_tclconfig}" != x ; then
64		case "${with_tclconfig}" in
65		    */tclConfig.sh )
66			if test -f "${with_tclconfig}"; then
67			    AC_MSG_WARN([--with-tcl argument should refer to directory containing tclConfig.sh, not to tclConfig.sh itself])
68			    with_tclconfig="`echo "${with_tclconfig}" | sed 's!/tclConfig\.sh$!!'`"
69			fi ;;
70		esac
71		if test -f "${with_tclconfig}/tclConfig.sh" ; then
72		    ac_cv_c_tclconfig="`(cd "${with_tclconfig}"; pwd)`"
73		else
74		    AC_MSG_ERROR([${with_tclconfig} directory doesn't contain tclConfig.sh])
75		fi
76	    fi
77
78	    # then check for a private Tcl installation
79	    if test x"${ac_cv_c_tclconfig}" = x ; then
80		for i in \
81			../tcl \
82			`ls -dr ../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
83			`ls -dr ../tcl[[8-9]].[[0-9]] 2>/dev/null` \
84			`ls -dr ../tcl[[8-9]].[[0-9]]* 2>/dev/null` \
85			../../tcl \
86			`ls -dr ../../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
87			`ls -dr ../../tcl[[8-9]].[[0-9]] 2>/dev/null` \
88			`ls -dr ../../tcl[[8-9]].[[0-9]]* 2>/dev/null` \
89			../../../tcl \
90			`ls -dr ../../../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
91			`ls -dr ../../../tcl[[8-9]].[[0-9]] 2>/dev/null` \
92			`ls -dr ../../../tcl[[8-9]].[[0-9]]* 2>/dev/null` ; do
93		    if test "${TEA_PLATFORM}" = "windows" \
94			    -a -f "$i/win/tclConfig.sh" ; then
95			ac_cv_c_tclconfig="`(cd $i/win; pwd)`"
96			break
97		    fi
98		    if test -f "$i/unix/tclConfig.sh" ; then
99			ac_cv_c_tclconfig="`(cd $i/unix; pwd)`"
100			break
101		    fi
102		done
103	    fi
104
105	    # on Darwin, check in Framework installation locations
106	    if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tclconfig}" = x ; then
107		for i in `ls -d ~/Library/Frameworks 2>/dev/null` \
108			`ls -d /Library/Frameworks 2>/dev/null` \
109			`ls -d /Network/Library/Frameworks 2>/dev/null` \
110			`ls -d /System/Library/Frameworks 2>/dev/null` \
111			; do
112		    if test -f "$i/Tcl.framework/tclConfig.sh" ; then
113			ac_cv_c_tclconfig="`(cd $i/Tcl.framework; pwd)`"
114			break
115		    fi
116		done
117	    fi
118
119	    # TEA specific: on Windows, check in common installation locations
120	    if test "${TEA_PLATFORM}" = "windows" \
121		-a x"${ac_cv_c_tclconfig}" = x ; then
122		for i in `ls -d C:/Tcl/lib 2>/dev/null` \
123			`ls -d C:/Progra~1/Tcl/lib 2>/dev/null` \
124			; do
125		    if test -f "$i/tclConfig.sh" ; then
126			ac_cv_c_tclconfig="`(cd $i; pwd)`"
127			break
128		    fi
129		done
130	    fi
131
132	    # check in a few common install locations
133	    if test x"${ac_cv_c_tclconfig}" = x ; then
134		for i in `ls -d ${libdir} 2>/dev/null` \
135			`ls -d ${exec_prefix}/lib 2>/dev/null` \
136			`ls -d ${prefix}/lib 2>/dev/null` \
137			`ls -d /usr/local/lib 2>/dev/null` \
138			`ls -d /usr/contrib/lib 2>/dev/null` \
139			`ls -d /usr/lib 2>/dev/null` \
140			`ls -d /usr/lib64 2>/dev/null` \
141			`ls -d /usr/lib/tcl8.6 2>/dev/null` \
142			`ls -d /usr/lib/tcl8.5 2>/dev/null` \
143			; do
144		    if test -f "$i/tclConfig.sh" ; then
145			ac_cv_c_tclconfig="`(cd $i; pwd)`"
146			break
147		    fi
148		done
149	    fi
150
151	    # check in a few other private locations
152	    if test x"${ac_cv_c_tclconfig}" = x ; then
153		for i in \
154			${srcdir}/../tcl \
155			`ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
156			`ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]] 2>/dev/null` \
157			`ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]]* 2>/dev/null` ; do
158		    if test "${TEA_PLATFORM}" = "windows" \
159			    -a -f "$i/win/tclConfig.sh" ; then
160			ac_cv_c_tclconfig="`(cd $i/win; pwd)`"
161			break
162		    fi
163		    if test -f "$i/unix/tclConfig.sh" ; then
164			ac_cv_c_tclconfig="`(cd $i/unix; pwd)`"
165			break
166		    fi
167		done
168	    fi
169	])
170
171	if test x"${ac_cv_c_tclconfig}" = x ; then
172	    TCL_BIN_DIR="# no Tcl configs found"
173	    AC_MSG_ERROR([Can't find Tcl configuration definitions. Use --with-tcl to specify a directory containing tclConfig.sh])
174	else
175	    no_tcl=
176	    TCL_BIN_DIR="${ac_cv_c_tclconfig}"
177	    AC_MSG_RESULT([found ${TCL_BIN_DIR}/tclConfig.sh])
178	fi
179    fi
180])
181
182#------------------------------------------------------------------------
183# TEA_PATH_TKCONFIG --
184#
185#	Locate the tkConfig.sh file
186#
187# Arguments:
188#	none
189#
190# Results:
191#
192#	Adds the following arguments to configure:
193#		--with-tk=...
194#
195#	Defines the following vars:
196#		TK_BIN_DIR	Full path to the directory containing
197#				the tkConfig.sh file
198#------------------------------------------------------------------------
199
200AC_DEFUN([TEA_PATH_TKCONFIG], [
201    #
202    # Ok, lets find the tk configuration
203    # First, look for one uninstalled.
204    # the alternative search directory is invoked by --with-tk
205    #
206
207    if test x"${no_tk}" = x ; then
208	# we reset no_tk in case something fails here
209	no_tk=true
210	AC_ARG_WITH(tk,
211	    AC_HELP_STRING([--with-tk],
212		[directory containing tk configuration (tkConfig.sh)]),
213	    with_tkconfig="${withval}")
214	AC_MSG_CHECKING([for Tk configuration])
215	AC_CACHE_VAL(ac_cv_c_tkconfig,[
216
217	    # First check to see if --with-tkconfig was specified.
218	    if test x"${with_tkconfig}" != x ; then
219		case "${with_tkconfig}" in
220		    */tkConfig.sh )
221			if test -f "${with_tkconfig}"; then
222			    AC_MSG_WARN([--with-tk argument should refer to directory containing tkConfig.sh, not to tkConfig.sh itself])
223			    with_tkconfig="`echo "${with_tkconfig}" | sed 's!/tkConfig\.sh$!!'`"
224			fi ;;
225		esac
226		if test -f "${with_tkconfig}/tkConfig.sh" ; then
227		    ac_cv_c_tkconfig="`(cd "${with_tkconfig}"; pwd)`"
228		else
229		    AC_MSG_ERROR([${with_tkconfig} directory doesn't contain tkConfig.sh])
230		fi
231	    fi
232
233	    # then check for a private Tk library
234	    if test x"${ac_cv_c_tkconfig}" = x ; then
235		for i in \
236			../tk \
237			`ls -dr ../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
238			`ls -dr ../tk[[8-9]].[[0-9]] 2>/dev/null` \
239			`ls -dr ../tk[[8-9]].[[0-9]]* 2>/dev/null` \
240			../../tk \
241			`ls -dr ../../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
242			`ls -dr ../../tk[[8-9]].[[0-9]] 2>/dev/null` \
243			`ls -dr ../../tk[[8-9]].[[0-9]]* 2>/dev/null` \
244			../../../tk \
245			`ls -dr ../../../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
246			`ls -dr ../../../tk[[8-9]].[[0-9]] 2>/dev/null` \
247			`ls -dr ../../../tk[[8-9]].[[0-9]]* 2>/dev/null` ; do
248		    if test "${TEA_PLATFORM}" = "windows" \
249			    -a -f "$i/win/tkConfig.sh" ; then
250			ac_cv_c_tkconfig="`(cd $i/win; pwd)`"
251			break
252		    fi
253		    if test -f "$i/unix/tkConfig.sh" ; then
254			ac_cv_c_tkconfig="`(cd $i/unix; pwd)`"
255			break
256		    fi
257		done
258	    fi
259
260	    # on Darwin, check in Framework installation locations
261	    if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tkconfig}" = x ; then
262		for i in `ls -d ~/Library/Frameworks 2>/dev/null` \
263			`ls -d /Library/Frameworks 2>/dev/null` \
264			`ls -d /Network/Library/Frameworks 2>/dev/null` \
265			`ls -d /System/Library/Frameworks 2>/dev/null` \
266			; do
267		    if test -f "$i/Tk.framework/tkConfig.sh" ; then
268			ac_cv_c_tkconfig="`(cd $i/Tk.framework; pwd)`"
269			break
270		    fi
271		done
272	    fi
273
274	    # check in a few common install locations
275	    if test x"${ac_cv_c_tkconfig}" = x ; then
276		for i in `ls -d ${libdir} 2>/dev/null` \
277			`ls -d ${exec_prefix}/lib 2>/dev/null` \
278			`ls -d ${prefix}/lib 2>/dev/null` \
279			`ls -d /usr/local/lib 2>/dev/null` \
280			`ls -d /usr/contrib/lib 2>/dev/null` \
281			`ls -d /usr/lib 2>/dev/null` \
282			`ls -d /usr/lib64 2>/dev/null` \
283			; do
284		    if test -f "$i/tkConfig.sh" ; then
285			ac_cv_c_tkconfig="`(cd $i; pwd)`"
286			break
287		    fi
288		done
289	    fi
290
291	    # TEA specific: on Windows, check in common installation locations
292	    if test "${TEA_PLATFORM}" = "windows" \
293		-a x"${ac_cv_c_tkconfig}" = x ; then
294		for i in `ls -d C:/Tcl/lib 2>/dev/null` \
295			`ls -d C:/Progra~1/Tcl/lib 2>/dev/null` \
296			; do
297		    if test -f "$i/tkConfig.sh" ; then
298			ac_cv_c_tkconfig="`(cd $i; pwd)`"
299			break
300		    fi
301		done
302	    fi
303
304	    # check in a few other private locations
305	    if test x"${ac_cv_c_tkconfig}" = x ; then
306		for i in \
307			${srcdir}/../tk \
308			`ls -dr ${srcdir}/../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
309			`ls -dr ${srcdir}/../tk[[8-9]].[[0-9]] 2>/dev/null` \
310			`ls -dr ${srcdir}/../tk[[8-9]].[[0-9]]* 2>/dev/null` ; do
311		    if test "${TEA_PLATFORM}" = "windows" \
312			    -a -f "$i/win/tkConfig.sh" ; then
313			ac_cv_c_tkconfig="`(cd $i/win; pwd)`"
314			break
315		    fi
316		    if test -f "$i/unix/tkConfig.sh" ; then
317			ac_cv_c_tkconfig="`(cd $i/unix; pwd)`"
318			break
319		    fi
320		done
321	    fi
322	])
323
324	if test x"${ac_cv_c_tkconfig}" = x ; then
325	    TK_BIN_DIR="# no Tk configs found"
326	    AC_MSG_ERROR([Can't find Tk configuration definitions. Use --with-tk to specify a directory containing tkConfig.sh])
327	else
328	    no_tk=
329	    TK_BIN_DIR="${ac_cv_c_tkconfig}"
330	    AC_MSG_RESULT([found ${TK_BIN_DIR}/tkConfig.sh])
331	fi
332    fi
333])
334
335#------------------------------------------------------------------------
336# TEA_LOAD_TCLCONFIG --
337#
338#	Load the tclConfig.sh file
339#
340# Arguments:
341#
342#	Requires the following vars to be set:
343#		TCL_BIN_DIR
344#
345# Results:
346#
347#	Substitutes the following vars:
348#		TCL_BIN_DIR
349#		TCL_SRC_DIR
350#		TCL_LIB_FILE
351#------------------------------------------------------------------------
352
353AC_DEFUN([TEA_LOAD_TCLCONFIG], [
354    AC_MSG_CHECKING([for existence of ${TCL_BIN_DIR}/tclConfig.sh])
355
356    if test -f "${TCL_BIN_DIR}/tclConfig.sh" ; then
357        AC_MSG_RESULT([loading])
358	. "${TCL_BIN_DIR}/tclConfig.sh"
359    else
360        AC_MSG_RESULT([could not find ${TCL_BIN_DIR}/tclConfig.sh])
361    fi
362
363    # eval is required to do the TCL_DBGX substitution
364    eval "TCL_LIB_FILE=\"${TCL_LIB_FILE}\""
365    eval "TCL_STUB_LIB_FILE=\"${TCL_STUB_LIB_FILE}\""
366
367    # If the TCL_BIN_DIR is the build directory (not the install directory),
368    # then set the common variable name to the value of the build variables.
369    # For example, the variable TCL_LIB_SPEC will be set to the value
370    # of TCL_BUILD_LIB_SPEC. An extension should make use of TCL_LIB_SPEC
371    # instead of TCL_BUILD_LIB_SPEC since it will work with both an
372    # installed and uninstalled version of Tcl.
373    if test -f "${TCL_BIN_DIR}/Makefile" ; then
374        TCL_LIB_SPEC="${TCL_BUILD_LIB_SPEC}"
375        TCL_STUB_LIB_SPEC="${TCL_BUILD_STUB_LIB_SPEC}"
376        TCL_STUB_LIB_PATH="${TCL_BUILD_STUB_LIB_PATH}"
377    elif test "`uname -s`" = "Darwin"; then
378	# If Tcl was built as a framework, attempt to use the libraries
379	# from the framework at the given location so that linking works
380	# against Tcl.framework installed in an arbitrary location.
381	case ${TCL_DEFS} in
382	    *TCL_FRAMEWORK*)
383		if test -f "${TCL_BIN_DIR}/${TCL_LIB_FILE}"; then
384		    for i in "`cd "${TCL_BIN_DIR}"; pwd`" \
385			     "`cd "${TCL_BIN_DIR}"/../..; pwd`"; do
386			if test "`basename "$i"`" = "${TCL_LIB_FILE}.framework"; then
387			    TCL_LIB_SPEC="-F`dirname "$i" | sed -e 's/ /\\\\ /g'` -framework ${TCL_LIB_FILE}"
388			    break
389			fi
390		    done
391		fi
392		if test -f "${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}"; then
393		    TCL_STUB_LIB_SPEC="-L`echo "${TCL_BIN_DIR}"  | sed -e 's/ /\\\\ /g'` ${TCL_STUB_LIB_FLAG}"
394		    TCL_STUB_LIB_PATH="${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}"
395		fi
396		;;
397	esac
398    fi
399
400    # eval is required to do the TCL_DBGX substitution
401    eval "TCL_LIB_FLAG=\"${TCL_LIB_FLAG}\""
402    eval "TCL_LIB_SPEC=\"${TCL_LIB_SPEC}\""
403    eval "TCL_STUB_LIB_FLAG=\"${TCL_STUB_LIB_FLAG}\""
404    eval "TCL_STUB_LIB_SPEC=\"${TCL_STUB_LIB_SPEC}\""
405
406    AC_SUBST(TCL_VERSION)
407    AC_SUBST(TCL_PATCH_LEVEL)
408    AC_SUBST(TCL_BIN_DIR)
409    AC_SUBST(TCL_SRC_DIR)
410
411    AC_SUBST(TCL_LIB_FILE)
412    AC_SUBST(TCL_LIB_FLAG)
413    AC_SUBST(TCL_LIB_SPEC)
414
415    AC_SUBST(TCL_STUB_LIB_FILE)
416    AC_SUBST(TCL_STUB_LIB_FLAG)
417    AC_SUBST(TCL_STUB_LIB_SPEC)
418
419    AC_MSG_CHECKING([platform])
420    hold_cc=$CC; CC="$TCL_CC"
421    AC_TRY_COMPILE(,[
422	    #ifdef _WIN32
423		#error win32
424	    #endif
425    ], TEA_PLATFORM="unix",
426	    TEA_PLATFORM="windows"
427    )
428    CC=$hold_cc
429    AC_MSG_RESULT($TEA_PLATFORM)
430
431    # The BUILD_$pkg is to define the correct extern storage class
432    # handling when making this package
433    AC_DEFINE_UNQUOTED(BUILD_${PACKAGE_NAME}, [],
434	    [Building extension source?])
435    # Do this here as we have fully defined TEA_PLATFORM now
436    if test "${TEA_PLATFORM}" = "windows" ; then
437	EXEEXT=".exe"
438	CLEANFILES="$CLEANFILES *.lib *.dll *.pdb *.exp"
439    fi
440
441    # TEA specific:
442    AC_SUBST(CLEANFILES)
443    AC_SUBST(TCL_LIBS)
444    AC_SUBST(TCL_DEFS)
445    AC_SUBST(TCL_EXTRA_CFLAGS)
446    AC_SUBST(TCL_LD_FLAGS)
447    AC_SUBST(TCL_SHLIB_LD_LIBS)
448])
449
450#------------------------------------------------------------------------
451# TEA_LOAD_TKCONFIG --
452#
453#	Load the tkConfig.sh file
454#
455# Arguments:
456#
457#	Requires the following vars to be set:
458#		TK_BIN_DIR
459#
460# Results:
461#
462#	Sets the following vars that should be in tkConfig.sh:
463#		TK_BIN_DIR
464#------------------------------------------------------------------------
465
466AC_DEFUN([TEA_LOAD_TKCONFIG], [
467    AC_MSG_CHECKING([for existence of ${TK_BIN_DIR}/tkConfig.sh])
468
469    if test -f "${TK_BIN_DIR}/tkConfig.sh" ; then
470        AC_MSG_RESULT([loading])
471	. "${TK_BIN_DIR}/tkConfig.sh"
472    else
473        AC_MSG_RESULT([could not find ${TK_BIN_DIR}/tkConfig.sh])
474    fi
475
476    # eval is required to do the TK_DBGX substitution
477    eval "TK_LIB_FILE=\"${TK_LIB_FILE}\""
478    eval "TK_STUB_LIB_FILE=\"${TK_STUB_LIB_FILE}\""
479
480    # If the TK_BIN_DIR is the build directory (not the install directory),
481    # then set the common variable name to the value of the build variables.
482    # For example, the variable TK_LIB_SPEC will be set to the value
483    # of TK_BUILD_LIB_SPEC. An extension should make use of TK_LIB_SPEC
484    # instead of TK_BUILD_LIB_SPEC since it will work with both an
485    # installed and uninstalled version of Tcl.
486    if test -f "${TK_BIN_DIR}/Makefile" ; then
487        TK_LIB_SPEC="${TK_BUILD_LIB_SPEC}"
488        TK_STUB_LIB_SPEC="${TK_BUILD_STUB_LIB_SPEC}"
489        TK_STUB_LIB_PATH="${TK_BUILD_STUB_LIB_PATH}"
490    elif test "`uname -s`" = "Darwin"; then
491	# If Tk was built as a framework, attempt to use the libraries
492	# from the framework at the given location so that linking works
493	# against Tk.framework installed in an arbitrary location.
494	case ${TK_DEFS} in
495	    *TK_FRAMEWORK*)
496		if test -f "${TK_BIN_DIR}/${TK_LIB_FILE}"; then
497		    for i in "`cd "${TK_BIN_DIR}"; pwd`" \
498			     "`cd "${TK_BIN_DIR}"/../..; pwd`"; do
499			if test "`basename "$i"`" = "${TK_LIB_FILE}.framework"; then
500			    TK_LIB_SPEC="-F`dirname "$i" | sed -e 's/ /\\\\ /g'` -framework ${TK_LIB_FILE}"
501			    break
502			fi
503		    done
504		fi
505		if test -f "${TK_BIN_DIR}/${TK_STUB_LIB_FILE}"; then
506		    TK_STUB_LIB_SPEC="-L` echo "${TK_BIN_DIR}"  | sed -e 's/ /\\\\ /g'` ${TK_STUB_LIB_FLAG}"
507		    TK_STUB_LIB_PATH="${TK_BIN_DIR}/${TK_STUB_LIB_FILE}"
508		fi
509		;;
510	esac
511    fi
512
513    # eval is required to do the TK_DBGX substitution
514    eval "TK_LIB_FLAG=\"${TK_LIB_FLAG}\""
515    eval "TK_LIB_SPEC=\"${TK_LIB_SPEC}\""
516    eval "TK_STUB_LIB_FLAG=\"${TK_STUB_LIB_FLAG}\""
517    eval "TK_STUB_LIB_SPEC=\"${TK_STUB_LIB_SPEC}\""
518
519    # TEA specific: Ensure windowingsystem is defined
520    if test "${TEA_PLATFORM}" = "unix" ; then
521	case ${TK_DEFS} in
522	    *MAC_OSX_TK*)
523		AC_DEFINE(MAC_OSX_TK, 1, [Are we building against Mac OS X TkAqua?])
524		TEA_WINDOWINGSYSTEM="aqua"
525		;;
526	    *)
527		TEA_WINDOWINGSYSTEM="x11"
528		;;
529	esac
530    elif test "${TEA_PLATFORM}" = "windows" ; then
531	TEA_WINDOWINGSYSTEM="win32"
532    fi
533
534    AC_SUBST(TK_VERSION)
535    AC_SUBST(TK_BIN_DIR)
536    AC_SUBST(TK_SRC_DIR)
537
538    AC_SUBST(TK_LIB_FILE)
539    AC_SUBST(TK_LIB_FLAG)
540    AC_SUBST(TK_LIB_SPEC)
541
542    AC_SUBST(TK_STUB_LIB_FILE)
543    AC_SUBST(TK_STUB_LIB_FLAG)
544    AC_SUBST(TK_STUB_LIB_SPEC)
545
546    # TEA specific:
547    AC_SUBST(TK_LIBS)
548    AC_SUBST(TK_XINCLUDES)
549])
550
551#------------------------------------------------------------------------
552# TEA_PROG_TCLSH
553#	Determine the fully qualified path name of the tclsh executable
554#	in the Tcl build directory or the tclsh installed in a bin
555#	directory. This macro will correctly determine the name
556#	of the tclsh executable even if tclsh has not yet been
557#	built in the build directory. The tclsh found is always
558#	associated with a tclConfig.sh file. This tclsh should be used
559#	only for running extension test cases. It should never be
560#	or generation of files (like pkgIndex.tcl) at build time.
561#
562# Arguments:
563#	none
564#
565# Results:
566#	Substitutes the following vars:
567#		TCLSH_PROG
568#------------------------------------------------------------------------
569
570AC_DEFUN([TEA_PROG_TCLSH], [
571    AC_MSG_CHECKING([for tclsh])
572    if test -f "${TCL_BIN_DIR}/Makefile" ; then
573        # tclConfig.sh is in Tcl build directory
574        if test "${TEA_PLATFORM}" = "windows"; then
575            TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}${EXEEXT}"
576        else
577            TCLSH_PROG="${TCL_BIN_DIR}/tclsh"
578        fi
579    else
580        # tclConfig.sh is in install location
581        if test "${TEA_PLATFORM}" = "windows"; then
582            TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}${EXEEXT}"
583        else
584            TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION}${TCL_DBGX}"
585        fi
586        list="`ls -d ${TCL_BIN_DIR}/../bin 2>/dev/null` \
587              `ls -d ${TCL_BIN_DIR}/..     2>/dev/null` \
588              `ls -d ${TCL_PREFIX}/bin     2>/dev/null`"
589        for i in $list ; do
590            if test -f "$i/${TCLSH_PROG}" ; then
591                REAL_TCL_BIN_DIR="`cd "$i"; pwd`/"
592                break
593            fi
594        done
595        TCLSH_PROG="${REAL_TCL_BIN_DIR}${TCLSH_PROG}"
596    fi
597    AC_MSG_RESULT([${TCLSH_PROG}])
598    AC_SUBST(TCLSH_PROG)
599])
600
601#------------------------------------------------------------------------
602# TEA_PROG_WISH
603#	Determine the fully qualified path name of the wish executable
604#	in the Tk build directory or the wish installed in a bin
605#	directory. This macro will correctly determine the name
606#	of the wish executable even if wish has not yet been
607#	built in the build directory. The wish found is always
608#	associated with a tkConfig.sh file. This wish should be used
609#	only for running extension test cases. It should never be
610#	or generation of files (like pkgIndex.tcl) at build time.
611#
612# Arguments:
613#	none
614#
615# Results:
616#	Substitutes the following vars:
617#		WISH_PROG
618#------------------------------------------------------------------------
619
620AC_DEFUN([TEA_PROG_WISH], [
621    AC_MSG_CHECKING([for wish])
622    if test -f "${TK_BIN_DIR}/Makefile" ; then
623        # tkConfig.sh is in Tk build directory
624        if test "${TEA_PLATFORM}" = "windows"; then
625            WISH_PROG="${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}${TK_DBGX}${EXEEXT}"
626        else
627            WISH_PROG="${TK_BIN_DIR}/wish"
628        fi
629    else
630        # tkConfig.sh is in install location
631        if test "${TEA_PLATFORM}" = "windows"; then
632            WISH_PROG="wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}${TK_DBGX}${EXEEXT}"
633        else
634            WISH_PROG="wish${TK_MAJOR_VERSION}.${TK_MINOR_VERSION}${TK_DBGX}"
635        fi
636        list="`ls -d ${TK_BIN_DIR}/../bin 2>/dev/null` \
637              `ls -d ${TK_BIN_DIR}/..     2>/dev/null` \
638              `ls -d ${TK_PREFIX}/bin     2>/dev/null`"
639        for i in $list ; do
640            if test -f "$i/${WISH_PROG}" ; then
641                REAL_TK_BIN_DIR="`cd "$i"; pwd`/"
642                break
643            fi
644        done
645        WISH_PROG="${REAL_TK_BIN_DIR}${WISH_PROG}"
646    fi
647    AC_MSG_RESULT([${WISH_PROG}])
648    AC_SUBST(WISH_PROG)
649])
650
651#------------------------------------------------------------------------
652# TEA_ENABLE_SHARED --
653#
654#	Allows the building of shared libraries
655#
656# Arguments:
657#	none
658#
659# Results:
660#
661#	Adds the following arguments to configure:
662#		--enable-shared=yes|no
663#
664#	Defines the following vars:
665#		STATIC_BUILD	Used for building import/export libraries
666#				on Windows.
667#
668#	Sets the following vars:
669#		SHARED_BUILD	Value of 1 or 0
670#------------------------------------------------------------------------
671
672AC_DEFUN([TEA_ENABLE_SHARED], [
673    AC_MSG_CHECKING([how to build libraries])
674    AC_ARG_ENABLE(shared,
675	AC_HELP_STRING([--enable-shared],
676	    [build and link with shared libraries (default: on)]),
677	[tcl_ok=$enableval], [tcl_ok=yes])
678
679    if test "${enable_shared+set}" = set; then
680	enableval="$enable_shared"
681	tcl_ok=$enableval
682    else
683	tcl_ok=yes
684    fi
685
686    if test "$tcl_ok" = "yes" ; then
687	AC_MSG_RESULT([shared])
688	SHARED_BUILD=1
689    else
690	AC_MSG_RESULT([static])
691	SHARED_BUILD=0
692	AC_DEFINE(STATIC_BUILD, 1, [Is this a static build?])
693    fi
694    AC_SUBST(SHARED_BUILD)
695])
696
697#------------------------------------------------------------------------
698# TEA_ENABLE_THREADS --
699#
700#	Specify if thread support should be enabled.  If "yes" is specified
701#	as an arg (optional), threads are enabled by default, "no" means
702#	threads are disabled.  "yes" is the default.
703#
704#	TCL_THREADS is checked so that if you are compiling an extension
705#	against a threaded core, your extension must be compiled threaded
706#	as well.
707#
708#	Note that it is legal to have a thread enabled extension run in a
709#	threaded or non-threaded Tcl core, but a non-threaded extension may
710#	only run in a non-threaded Tcl core.
711#
712# Arguments:
713#	none
714#
715# Results:
716#
717#	Adds the following arguments to configure:
718#		--enable-threads
719#
720#	Sets the following vars:
721#		THREADS_LIBS	Thread library(s)
722#
723#	Defines the following vars:
724#		TCL_THREADS
725#		_REENTRANT
726#		_THREAD_SAFE
727#------------------------------------------------------------------------
728
729AC_DEFUN([TEA_ENABLE_THREADS], [
730    AC_ARG_ENABLE(threads,
731	AC_HELP_STRING([--enable-threads],
732	    [build with threads]),
733	[tcl_ok=$enableval], [tcl_ok=yes])
734
735    if test "${enable_threads+set}" = set; then
736	enableval="$enable_threads"
737	tcl_ok=$enableval
738    else
739	tcl_ok=yes
740    fi
741
742    if test "$tcl_ok" = "yes" -o "${TCL_THREADS}" = 1; then
743	TCL_THREADS=1
744
745	if test "${TEA_PLATFORM}" != "windows" ; then
746	    # We are always OK on Windows, so check what this platform wants:
747
748	    # USE_THREAD_ALLOC tells us to try the special thread-based
749	    # allocator that significantly reduces lock contention
750	    AC_DEFINE(USE_THREAD_ALLOC, 1,
751		[Do we want to use the threaded memory allocator?])
752	    AC_DEFINE(_REENTRANT, 1, [Do we want the reentrant OS API?])
753	    if test "`uname -s`" = "SunOS" ; then
754		AC_DEFINE(_POSIX_PTHREAD_SEMANTICS, 1,
755			[Do we really want to follow the standard? Yes we do!])
756	    fi
757	    AC_DEFINE(_THREAD_SAFE, 1, [Do we want the thread-safe OS API?])
758	    AC_CHECK_LIB(pthread,pthread_mutex_init,tcl_ok=yes,tcl_ok=no)
759	    if test "$tcl_ok" = "no"; then
760		# Check a little harder for __pthread_mutex_init in the same
761		# library, as some systems hide it there until pthread.h is
762		# defined.  We could alternatively do an AC_TRY_COMPILE with
763		# pthread.h, but that will work with libpthread really doesn't
764		# exist, like AIX 4.2.  [Bug: 4359]
765		AC_CHECK_LIB(pthread, __pthread_mutex_init,
766		    tcl_ok=yes, tcl_ok=no)
767	    fi
768
769	    if test "$tcl_ok" = "yes"; then
770		# The space is needed
771		THREADS_LIBS=" -lpthread"
772	    else
773		AC_CHECK_LIB(pthreads, pthread_mutex_init,
774		    tcl_ok=yes, tcl_ok=no)
775		if test "$tcl_ok" = "yes"; then
776		    # The space is needed
777		    THREADS_LIBS=" -lpthreads"
778		else
779		    AC_CHECK_LIB(c, pthread_mutex_init,
780			tcl_ok=yes, tcl_ok=no)
781		    if test "$tcl_ok" = "no"; then
782			AC_CHECK_LIB(c_r, pthread_mutex_init,
783			    tcl_ok=yes, tcl_ok=no)
784			if test "$tcl_ok" = "yes"; then
785			    # The space is needed
786			    THREADS_LIBS=" -pthread"
787			else
788			    TCL_THREADS=0
789			    AC_MSG_WARN([Do not know how to find pthread lib on your system - thread support disabled])
790			fi
791		    fi
792		fi
793	    fi
794	fi
795    else
796	TCL_THREADS=0
797    fi
798    # Do checking message here to not mess up interleaved configure output
799    AC_MSG_CHECKING([for building with threads])
800    if test "${TCL_THREADS}" = 1; then
801	AC_DEFINE(TCL_THREADS, 1, [Are we building with threads enabled?])
802	AC_MSG_RESULT([yes (default)])
803    else
804	AC_MSG_RESULT([no])
805    fi
806    # TCL_THREADS sanity checking.  See if our request for building with
807    # threads is the same as the way Tcl was built.  If not, warn the user.
808    case ${TCL_DEFS} in
809	*THREADS=1*)
810	    if test "${TCL_THREADS}" = "0"; then
811		AC_MSG_WARN([
812    Building ${PACKAGE_NAME} without threads enabled, but building against Tcl
813    that IS thread-enabled.  It is recommended to use --enable-threads.])
814	    fi
815	    ;;
816	*)
817	    if test "${TCL_THREADS}" = "1"; then
818		AC_MSG_WARN([
819    --enable-threads requested, but building against a Tcl that is NOT
820    thread-enabled.  This is an OK configuration that will also run in
821    a thread-enabled core.])
822	    fi
823	    ;;
824    esac
825    AC_SUBST(TCL_THREADS)
826])
827
828#------------------------------------------------------------------------
829# TEA_ENABLE_SYMBOLS --
830#
831#	Specify if debugging symbols should be used.
832#	Memory (TCL_MEM_DEBUG) debugging can also be enabled.
833#
834# Arguments:
835#	none
836#
837#	TEA varies from core Tcl in that C|LDFLAGS_DEFAULT receives
838#	the value of C|LDFLAGS_OPTIMIZE|DEBUG already substituted.
839#	Requires the following vars to be set in the Makefile:
840#		CFLAGS_DEFAULT
841#		LDFLAGS_DEFAULT
842#
843# Results:
844#
845#	Adds the following arguments to configure:
846#		--enable-symbols
847#
848#	Defines the following vars:
849#		CFLAGS_DEFAULT	Sets to $(CFLAGS_DEBUG) if true
850#				Sets to "$(CFLAGS_OPTIMIZE) -DNDEBUG" if false
851#		LDFLAGS_DEFAULT	Sets to $(LDFLAGS_DEBUG) if true
852#				Sets to $(LDFLAGS_OPTIMIZE) if false
853#		DBGX		Formerly used as debug library extension;
854#				always blank now.
855#------------------------------------------------------------------------
856
857AC_DEFUN([TEA_ENABLE_SYMBOLS], [
858    dnl TEA specific: Make sure we are initialized
859    AC_REQUIRE([TEA_CONFIG_CFLAGS])
860    AC_MSG_CHECKING([for build with symbols])
861    AC_ARG_ENABLE(symbols,
862	AC_HELP_STRING([--enable-symbols],
863	    [build with debugging symbols (default: off)]),
864	[tcl_ok=$enableval], [tcl_ok=no])
865    DBGX=""
866    if test "$tcl_ok" = "no"; then
867	CFLAGS_DEFAULT="${CFLAGS_OPTIMIZE} -DNDEBUG"
868	LDFLAGS_DEFAULT="${LDFLAGS_OPTIMIZE}"
869	AC_MSG_RESULT([no])
870    else
871	CFLAGS_DEFAULT="${CFLAGS_DEBUG}"
872	LDFLAGS_DEFAULT="${LDFLAGS_DEBUG}"
873	if test "$tcl_ok" = "yes"; then
874	    AC_MSG_RESULT([yes (standard debugging)])
875	fi
876    fi
877    # TEA specific:
878    if test "${TEA_PLATFORM}" != "windows" ; then
879	LDFLAGS_DEFAULT="${LDFLAGS}"
880    fi
881    AC_SUBST(CFLAGS_DEFAULT)
882    AC_SUBST(LDFLAGS_DEFAULT)
883    AC_SUBST(TCL_DBGX)
884
885    if test "$tcl_ok" = "mem" -o "$tcl_ok" = "all"; then
886	AC_DEFINE(TCL_MEM_DEBUG, 1, [Is memory debugging enabled?])
887    fi
888
889    if test "$tcl_ok" != "yes" -a "$tcl_ok" != "no"; then
890	if test "$tcl_ok" = "all"; then
891	    AC_MSG_RESULT([enabled symbols mem debugging])
892	else
893	    AC_MSG_RESULT([enabled $tcl_ok debugging])
894	fi
895    fi
896])
897
898#------------------------------------------------------------------------
899# TEA_ENABLE_LANGINFO --
900#
901#	Allows use of modern nl_langinfo check for better l10n.
902#	This is only relevant for Unix.
903#
904# Arguments:
905#	none
906#
907# Results:
908#
909#	Adds the following arguments to configure:
910#		--enable-langinfo=yes|no (default is yes)
911#
912#	Defines the following vars:
913#		HAVE_LANGINFO	Triggers use of nl_langinfo if defined.
914#------------------------------------------------------------------------
915
916AC_DEFUN([TEA_ENABLE_LANGINFO], [
917    AC_ARG_ENABLE(langinfo,
918	AC_HELP_STRING([--enable-langinfo],
919	    [use nl_langinfo if possible to determine encoding at startup, otherwise use old heuristic (default: on)]),
920	[langinfo_ok=$enableval], [langinfo_ok=yes])
921
922    HAVE_LANGINFO=0
923    if test "$langinfo_ok" = "yes"; then
924	AC_CHECK_HEADER(langinfo.h,[langinfo_ok=yes],[langinfo_ok=no])
925    fi
926    AC_MSG_CHECKING([whether to use nl_langinfo])
927    if test "$langinfo_ok" = "yes"; then
928	AC_CACHE_VAL(tcl_cv_langinfo_h, [
929	    AC_TRY_COMPILE([#include <langinfo.h>], [nl_langinfo(CODESET);],
930		    [tcl_cv_langinfo_h=yes],[tcl_cv_langinfo_h=no])])
931	AC_MSG_RESULT([$tcl_cv_langinfo_h])
932	if test $tcl_cv_langinfo_h = yes; then
933	    AC_DEFINE(HAVE_LANGINFO, 1, [Do we have nl_langinfo()?])
934	fi
935    else
936	AC_MSG_RESULT([$langinfo_ok])
937    fi
938])
939
940#--------------------------------------------------------------------
941# TEA_CONFIG_SYSTEM
942#
943#	Determine what the system is (some things cannot be easily checked
944#	on a feature-driven basis, alas). This can usually be done via the
945#	"uname" command.
946#
947# Arguments:
948#	none
949#
950# Results:
951#	Defines the following var:
952#
953#	system -	System/platform/version identification code.
954#--------------------------------------------------------------------
955
956AC_DEFUN([TEA_CONFIG_SYSTEM], [
957    AC_CACHE_CHECK([system version], tcl_cv_sys_version, [
958	# TEA specific:
959	if test "${TEA_PLATFORM}" = "windows" ; then
960	    tcl_cv_sys_version=windows
961	else
962	    tcl_cv_sys_version=`uname -s`-`uname -r`
963	    if test "$?" -ne 0 ; then
964		AC_MSG_WARN([can't find uname command])
965		tcl_cv_sys_version=unknown
966	    else
967		if test "`uname -s`" = "AIX" ; then
968		    tcl_cv_sys_version=AIX-`uname -v`.`uname -r`
969		fi
970	    fi
971	fi
972    ])
973    system=$tcl_cv_sys_version
974])
975
976#--------------------------------------------------------------------
977# TEA_CONFIG_CFLAGS
978#
979#	Try to determine the proper flags to pass to the compiler
980#	for building shared libraries and other such nonsense.
981#
982# Arguments:
983#	none
984#
985# Results:
986#
987#	Defines and substitutes the following vars:
988#
989#	DL_OBJS, DL_LIBS - removed for TEA, only needed by core.
990#       LDFLAGS -      Flags to pass to the compiler when linking object
991#                       files into an executable application binary such
992#                       as tclsh.
993#       LD_SEARCH_FLAGS-Flags to pass to ld, such as "-R /usr/local/tcl/lib",
994#                       that tell the run-time dynamic linker where to look
995#                       for shared libraries such as libtcl.so.  Depends on
996#                       the variable LIB_RUNTIME_DIR in the Makefile. Could
997#                       be the same as CC_SEARCH_FLAGS if ${CC} is used to link.
998#       CC_SEARCH_FLAGS-Flags to pass to ${CC}, such as "-Wl,-rpath,/usr/local/tcl/lib",
999#                       that tell the run-time dynamic linker where to look
1000#                       for shared libraries such as libtcl.so.  Depends on
1001#                       the variable LIB_RUNTIME_DIR in the Makefile.
1002#       SHLIB_CFLAGS -  Flags to pass to cc when compiling the components
1003#                       of a shared library (may request position-independent
1004#                       code, among other things).
1005#       SHLIB_LD -      Base command to use for combining object files
1006#                       into a shared library.
1007#       SHLIB_LD_LIBS - Dependent libraries for the linker to scan when
1008#                       creating shared libraries.  This symbol typically
1009#                       goes at the end of the "ld" commands that build
1010#                       shared libraries. The value of the symbol defaults to
1011#                       "${LIBS}" if all of the dependent libraries should
1012#                       be specified when creating a shared library.  If
1013#                       dependent libraries should not be specified (as on
1014#                       SunOS 4.x, where they cause the link to fail, or in
1015#                       general if Tcl and Tk aren't themselves shared
1016#                       libraries), then this symbol has an empty string
1017#                       as its value.
1018#       SHLIB_SUFFIX -  Suffix to use for the names of dynamically loadable
1019#                       extensions.  An empty string means we don't know how
1020#                       to use shared libraries on this platform.
1021#       LIB_SUFFIX -    Specifies everything that comes after the "libfoo"
1022#                       in a static or shared library name, using the $PACKAGE_VERSION variable
1023#                       to put the version in the right place.  This is used
1024#                       by platforms that need non-standard library names.
1025#                       Examples:  ${PACKAGE_VERSION}.so.1.1 on NetBSD, since it needs
1026#                       to have a version after the .so, and ${PACKAGE_VERSION}.a
1027#                       on AIX, since a shared library needs to have
1028#                       a .a extension whereas shared objects for loadable
1029#                       extensions have a .so extension.  Defaults to
1030#                       ${PACKAGE_VERSION}${SHLIB_SUFFIX}.
1031#	CFLAGS_DEBUG -
1032#			Flags used when running the compiler in debug mode
1033#	CFLAGS_OPTIMIZE -
1034#			Flags used when running the compiler in optimize mode
1035#	CFLAGS -	Additional CFLAGS added as necessary (usually 64-bit)
1036#--------------------------------------------------------------------
1037
1038AC_DEFUN([TEA_CONFIG_CFLAGS], [
1039    dnl TEA specific: Make sure we are initialized
1040    AC_REQUIRE([TEA_INIT])
1041
1042    # Step 0.a: Enable 64 bit support?
1043
1044    AC_MSG_CHECKING([if 64bit support is requested])
1045    AC_ARG_ENABLE(64bit,
1046	AC_HELP_STRING([--enable-64bit],
1047	    [enable 64bit support (default: off)]),
1048	[do64bit=$enableval], [do64bit=no])
1049    AC_MSG_RESULT([$do64bit])
1050
1051    # Step 0.b: Enable Solaris 64 bit VIS support?
1052
1053    AC_MSG_CHECKING([if 64bit Sparc VIS support is requested])
1054    AC_ARG_ENABLE(64bit-vis,
1055	AC_HELP_STRING([--enable-64bit-vis],
1056	    [enable 64bit Sparc VIS support (default: off)]),
1057	[do64bitVIS=$enableval], [do64bitVIS=no])
1058    AC_MSG_RESULT([$do64bitVIS])
1059    # Force 64bit on with VIS
1060    AS_IF([test "$do64bitVIS" = "yes"], [do64bit=yes])
1061
1062    # Step 0.c: Check if visibility support is available. Do this here so
1063    # that platform specific alternatives can be used below if this fails.
1064
1065    AC_CACHE_CHECK([if compiler supports visibility "hidden"],
1066	tcl_cv_cc_visibility_hidden, [
1067	hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -Werror"
1068	AC_TRY_LINK([
1069	    extern __attribute__((__visibility__("hidden"))) void f(void);
1070	    void f(void) {}], [f();], tcl_cv_cc_visibility_hidden=yes,
1071	    tcl_cv_cc_visibility_hidden=no)
1072	CFLAGS=$hold_cflags])
1073    AS_IF([test $tcl_cv_cc_visibility_hidden = yes], [
1074	AC_DEFINE(MODULE_SCOPE,
1075	    [extern __attribute__((__visibility__("hidden")))],
1076	    [Compiler support for module scope symbols])
1077	AC_DEFINE(HAVE_HIDDEN, [1], [Compiler support for module scope symbols])
1078    ])
1079
1080    # Step 0.d: Disable -rpath support?
1081
1082    AC_MSG_CHECKING([if rpath support is requested])
1083    AC_ARG_ENABLE(rpath,
1084	AC_HELP_STRING([--disable-rpath],
1085	    [disable rpath support (default: on)]),
1086	[doRpath=$enableval], [doRpath=yes])
1087    AC_MSG_RESULT([$doRpath])
1088
1089    # TEA specific: Cross-compiling options for Windows/CE builds?
1090
1091    AS_IF([test "${TEA_PLATFORM}" = windows], [
1092	AC_MSG_CHECKING([if Windows/CE build is requested])
1093	AC_ARG_ENABLE(wince,
1094	    AC_HELP_STRING([--enable-wince],
1095		[enable Win/CE support (where applicable)]),
1096	    [doWince=$enableval], [doWince=no])
1097	AC_MSG_RESULT([$doWince])
1098    ])
1099
1100    # Set the variable "system" to hold the name and version number
1101    # for the system.
1102
1103    TEA_CONFIG_SYSTEM
1104
1105    # Require ranlib early so we can override it in special cases below.
1106
1107    AC_REQUIRE([AC_PROG_RANLIB])
1108
1109    # Set configuration options based on system name and version.
1110    # This is similar to Tcl's unix/tcl.m4 except that we've added a
1111    # "windows" case and removed some core-only vars.
1112
1113    do64bit_ok=no
1114    # default to '{$LIBS}' and set to "" on per-platform necessary basis
1115    SHLIB_LD_LIBS='${LIBS}'
1116    # When ld needs options to work in 64-bit mode, put them in
1117    # LDFLAGS_ARCH so they eventually end up in LDFLAGS even if [load]
1118    # is disabled by the user. [Bug 1016796]
1119    LDFLAGS_ARCH=""
1120    UNSHARED_LIB_SUFFIX=""
1121    # TEA specific: use PACKAGE_VERSION instead of VERSION
1122    TCL_TRIM_DOTS='`echo ${PACKAGE_VERSION} | tr -d .`'
1123    ECHO_VERSION='`echo ${PACKAGE_VERSION}`'
1124    TCL_LIB_VERSIONS_OK=ok
1125    CFLAGS_DEBUG=-g
1126    AS_IF([test "$GCC" = yes], [
1127	CFLAGS_OPTIMIZE=-O2
1128	CFLAGS_WARNING="-Wall"
1129    ], [
1130	CFLAGS_OPTIMIZE=-O
1131	CFLAGS_WARNING=""
1132    ])
1133    AC_CHECK_TOOL(AR, ar)
1134    STLIB_LD='${AR} cr'
1135    LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH"
1136    AS_IF([test "x$SHLIB_VERSION" = x],[SHLIB_VERSION="1.0"])
1137    case $system in
1138	# TEA specific:
1139	windows)
1140	    # This is a 2-stage check to make sure we have the 64-bit SDK
1141	    # We have to know where the SDK is installed.
1142	    # This magic is based on MS Platform SDK for Win2003 SP1 - hobbs
1143	    # MACHINE is IX86 for LINK, but this is used by the manifest,
1144	    # which requires x86|amd64|ia64.
1145	    MACHINE="X86"
1146	    if test "$do64bit" != "no" ; then
1147		if test "x${MSSDK}x" = "xx" ; then
1148		    MSSDK="C:/Progra~1/Microsoft Platform SDK"
1149		fi
1150		MSSDK=`echo "$MSSDK" | sed -e  's!\\\!/!g'`
1151		PATH64=""
1152		case "$do64bit" in
1153		    amd64|x64|yes)
1154			MACHINE="AMD64" ; # default to AMD64 64-bit build
1155			PATH64="${MSSDK}/Bin/Win64/x86/AMD64"
1156			;;
1157		    ia64)
1158			MACHINE="IA64"
1159			PATH64="${MSSDK}/Bin/Win64"
1160			;;
1161		esac
1162		if test "$GCC" != "yes" -a ! -d "${PATH64}" ; then
1163		    AC_MSG_WARN([Could not find 64-bit $MACHINE SDK to enable 64bit mode])
1164		    AC_MSG_WARN([Ensure latest Platform SDK is installed])
1165		    do64bit="no"
1166		else
1167		    AC_MSG_RESULT([   Using 64-bit $MACHINE mode])
1168		    do64bit_ok="yes"
1169		fi
1170	    fi
1171
1172	    if test "$doWince" != "no" ; then
1173		if test "$do64bit" != "no" ; then
1174		    AC_MSG_ERROR([Windows/CE and 64-bit builds incompatible])
1175		fi
1176		if test "$GCC" = "yes" ; then
1177		    AC_MSG_ERROR([Windows/CE and GCC builds incompatible])
1178		fi
1179		TEA_PATH_CELIB
1180		# Set defaults for common evc4/PPC2003 setup
1181		# Currently Tcl requires 300+, possibly 420+ for sockets
1182		CEVERSION=420; 		# could be 211 300 301 400 420 ...
1183		TARGETCPU=ARMV4;	# could be ARMV4 ARM MIPS SH3 X86 ...
1184		ARCH=ARM;		# could be ARM MIPS X86EM ...
1185		PLATFORM="Pocket PC 2003"; # or "Pocket PC 2002"
1186		if test "$doWince" != "yes"; then
1187		    # If !yes then the user specified something
1188		    # Reset ARCH to allow user to skip specifying it
1189		    ARCH=
1190		    eval `echo $doWince | awk -F, '{ \
1191	    if (length([$]1)) { printf "CEVERSION=\"%s\"\n", [$]1; \
1192	    if ([$]1 < 400)   { printf "PLATFORM=\"Pocket PC 2002\"\n" } }; \
1193	    if (length([$]2)) { printf "TARGETCPU=\"%s\"\n", toupper([$]2) }; \
1194	    if (length([$]3)) { printf "ARCH=\"%s\"\n", toupper([$]3) }; \
1195	    if (length([$]4)) { printf "PLATFORM=\"%s\"\n", [$]4 }; \
1196		    }'`
1197		    if test "x${ARCH}" = "x" ; then
1198			ARCH=$TARGETCPU;
1199		    fi
1200		fi
1201		OSVERSION=WCE$CEVERSION;
1202	    	if test "x${WCEROOT}" = "x" ; then
1203			WCEROOT="C:/Program Files/Microsoft eMbedded C++ 4.0"
1204		    if test ! -d "${WCEROOT}" ; then
1205			WCEROOT="C:/Program Files/Microsoft eMbedded Tools"
1206		    fi
1207		fi
1208		if test "x${SDKROOT}" = "x" ; then
1209		    SDKROOT="C:/Program Files/Windows CE Tools"
1210		    if test ! -d "${SDKROOT}" ; then
1211			SDKROOT="C:/Windows CE Tools"
1212		    fi
1213		fi
1214		WCEROOT=`echo "$WCEROOT" | sed -e 's!\\\!/!g'`
1215		SDKROOT=`echo "$SDKROOT" | sed -e 's!\\\!/!g'`
1216		if test ! -d "${SDKROOT}/${OSVERSION}/${PLATFORM}/Lib/${TARGETCPU}" \
1217		    -o ! -d "${WCEROOT}/EVC/${OSVERSION}/bin"; then
1218		    AC_MSG_ERROR([could not find PocketPC SDK or target compiler to enable WinCE mode [$CEVERSION,$TARGETCPU,$ARCH,$PLATFORM]])
1219		    doWince="no"
1220		else
1221		    # We could PATH_NOSPACE these, but that's not important,
1222		    # as long as we quote them when used.
1223		    CEINCLUDE="${SDKROOT}/${OSVERSION}/${PLATFORM}/include"
1224		    if test -d "${CEINCLUDE}/${TARGETCPU}" ; then
1225			CEINCLUDE="${CEINCLUDE}/${TARGETCPU}"
1226		    fi
1227		    CELIBPATH="${SDKROOT}/${OSVERSION}/${PLATFORM}/Lib/${TARGETCPU}"
1228    		fi
1229	    fi
1230
1231	    if test "$GCC" != "yes" ; then
1232	        if test "${SHARED_BUILD}" = "0" ; then
1233		    runtime=-MT
1234	        else
1235		    runtime=-MD
1236	        fi
1237
1238                if test "$do64bit" != "no" ; then
1239		    # All this magic is necessary for the Win64 SDK RC1 - hobbs
1240		    CC="\"${PATH64}/cl.exe\""
1241		    CFLAGS="${CFLAGS} -I\"${MSSDK}/Include\" -I\"${MSSDK}/Include/crt\" -I\"${MSSDK}/Include/crt/sys\""
1242		    RC="\"${MSSDK}/bin/rc.exe\""
1243		    lflags="-nologo -MACHINE:${MACHINE} -LIBPATH:\"${MSSDK}/Lib/${MACHINE}\""
1244		    LINKBIN="\"${PATH64}/link.exe\""
1245		    CFLAGS_DEBUG="-nologo -Zi -Od -W3 ${runtime}d"
1246		    CFLAGS_OPTIMIZE="-nologo -O2 -W2 ${runtime}"
1247		    # Avoid 'unresolved external symbol __security_cookie'
1248		    # errors, c.f. http://support.microsoft.com/?id=894573
1249		    TEA_ADD_LIBS([bufferoverflowU.lib])
1250		elif test "$doWince" != "no" ; then
1251		    CEBINROOT="${WCEROOT}/EVC/${OSVERSION}/bin"
1252		    if test "${TARGETCPU}" = "X86"; then
1253			CC="\"${CEBINROOT}/cl.exe\""
1254		    else
1255			CC="\"${CEBINROOT}/cl${ARCH}.exe\""
1256		    fi
1257		    CFLAGS="$CFLAGS -I\"${CELIB_DIR}/inc\" -I\"${CEINCLUDE}\""
1258		    RC="\"${WCEROOT}/Common/EVC/bin/rc.exe\""
1259		    arch=`echo ${ARCH} | awk '{print tolower([$]0)}'`
1260		    defs="${ARCH} _${ARCH}_ ${arch} PALM_SIZE _MT _WINDOWS"
1261		    if test "${SHARED_BUILD}" = "1" ; then
1262			# Static CE builds require static celib as well
1263		    	defs="${defs} _DLL"
1264		    fi
1265		    for i in $defs ; do
1266			AC_DEFINE_UNQUOTED($i, 1, [WinCE def ]$i)
1267		    done
1268		    AC_DEFINE_UNQUOTED(_WIN32_WCE, $CEVERSION, [_WIN32_WCE version])
1269		    AC_DEFINE_UNQUOTED(UNDER_CE, $CEVERSION, [UNDER_CE version])
1270		    CFLAGS_DEBUG="-nologo -Zi -Od"
1271		    CFLAGS_OPTIMIZE="-nologo -Ox"
1272		    lversion=`echo ${CEVERSION} | sed -e 's/\(.\)\(..\)/\1\.\2/'`
1273		    lflags="-MACHINE:${ARCH} -LIBPATH:\"${CELIBPATH}\" -subsystem:windowsce,${lversion} -nologo"
1274		    LINKBIN="\"${CEBINROOT}/link.exe\""
1275		    AC_SUBST(CELIB_DIR)
1276		else
1277		    RC="rc"
1278		    lflags="-nologo"
1279		    LINKBIN="link"
1280		    CFLAGS_DEBUG="-nologo -Z7 -Od -W3 -WX ${runtime}d"
1281		    CFLAGS_OPTIMIZE="-nologo -O2 -W2 ${runtime}"
1282		fi
1283	    fi
1284
1285	    if test "$GCC" = "yes"; then
1286		# mingw gcc mode
1287		AC_CHECK_TOOL(RC, windres)
1288		CFLAGS_DEBUG="-g"
1289		CFLAGS_OPTIMIZE="-O2 -fomit-frame-pointer"
1290		SHLIB_LD='${CC} -shared'
1291		UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
1292		LDFLAGS_CONSOLE="-wl,--subsystem,console ${lflags}"
1293		LDFLAGS_WINDOW="-wl,--subsystem,windows ${lflags}"
1294
1295		AC_CACHE_CHECK(for cross-compile version of gcc,
1296			ac_cv_cross,
1297			AC_TRY_COMPILE([
1298			    #ifdef _WIN32
1299				#error cross-compiler
1300			    #endif
1301			], [],
1302			ac_cv_cross=yes,
1303			ac_cv_cross=no)
1304		      )
1305		      if test "$ac_cv_cross" = "yes"; then
1306			case "$do64bit" in
1307			    amd64|x64|yes)
1308				CC="x86_64-w64-mingw32-gcc"
1309				LD="x86_64-w64-mingw32-ld"
1310				AR="x86_64-w64-mingw32-ar"
1311				RANLIB="x86_64-w64-mingw32-ranlib"
1312				RC="x86_64-w64-mingw32-windres"
1313			    ;;
1314			    *)
1315				CC="i686-w64-mingw32-gcc"
1316				LD="i686-w64-mingw32-ld"
1317				AR="i686-w64-mingw32-ar"
1318				RANLIB="i686-w64-mingw32-ranlib"
1319				RC="i686-w64-mingw32-windres"
1320			    ;;
1321			esac
1322		fi
1323
1324	    else
1325		SHLIB_LD="${LINKBIN} -dll ${lflags}"
1326		# link -lib only works when -lib is the first arg
1327		STLIB_LD="${LINKBIN} -lib ${lflags}"
1328		UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.lib'
1329		PATHTYPE=-w
1330		# For information on what debugtype is most useful, see:
1331		# http://msdn.microsoft.com/library/en-us/dnvc60/html/gendepdebug.asp
1332		# and also
1333		# http://msdn2.microsoft.com/en-us/library/y0zzbyt4%28VS.80%29.aspx
1334		# This essentially turns it all on.
1335		LDFLAGS_DEBUG="-debug -debugtype:cv"
1336		LDFLAGS_OPTIMIZE="-release"
1337		if test "$doWince" != "no" ; then
1338		    LDFLAGS_CONSOLE="-link ${lflags}"
1339		    LDFLAGS_WINDOW=${LDFLAGS_CONSOLE}
1340		else
1341		    LDFLAGS_CONSOLE="-link -subsystem:console ${lflags}"
1342		    LDFLAGS_WINDOW="-link -subsystem:windows ${lflags}"
1343		fi
1344	    fi
1345
1346	    SHLIB_SUFFIX=".dll"
1347	    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.dll'
1348
1349	    TCL_LIB_VERSIONS_OK=nodots
1350    	    ;;
1351	AIX-*)
1352	    AS_IF([test "${TCL_THREADS}" = "1" -a "$GCC" != "yes"], [
1353		# AIX requires the _r compiler when gcc isn't being used
1354		case "${CC}" in
1355		    *_r|*_r\ *)
1356			# ok ...
1357			;;
1358		    *)
1359			# Make sure only first arg gets _r
1360		    	CC=`echo "$CC" | sed -e 's/^\([[^ ]]*\)/\1_r/'`
1361			;;
1362		esac
1363		AC_MSG_RESULT([Using $CC for compiling with threads])
1364	    ])
1365	    LIBS="$LIBS -lc"
1366	    SHLIB_CFLAGS=""
1367	    SHLIB_SUFFIX=".so"
1368
1369	    LD_LIBRARY_PATH_VAR="LIBPATH"
1370
1371	    # Check to enable 64-bit flags for compiler/linker
1372	    AS_IF([test "$do64bit" = yes], [
1373		AS_IF([test "$GCC" = yes], [
1374		    AC_MSG_WARN([64bit mode not supported with GCC on $system])
1375		], [
1376		    do64bit_ok=yes
1377		    CFLAGS="$CFLAGS -q64"
1378		    LDFLAGS_ARCH="-q64"
1379		    RANLIB="${RANLIB} -X64"
1380		    AR="${AR} -X64"
1381		    SHLIB_LD_FLAGS="-b64"
1382		])
1383	    ])
1384
1385	    AS_IF([test "`uname -m`" = ia64], [
1386		# AIX-5 uses ELF style dynamic libraries on IA-64, but not PPC
1387		SHLIB_LD="/usr/ccs/bin/ld -G -z text"
1388		AS_IF([test "$GCC" = yes], [
1389		    CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
1390		], [
1391		    CC_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}'
1392		])
1393		LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
1394	    ], [
1395		AS_IF([test "$GCC" = yes], [
1396		    SHLIB_LD='${CC} -shared -Wl,-bexpall'
1397		], [
1398		    SHLIB_LD="/bin/ld -bhalt:4 -bM:SRE -bexpall -H512 -T512 -bnoentry"
1399		    LDFLAGS="$LDFLAGS -brtl"
1400		])
1401		SHLIB_LD="${SHLIB_LD} ${SHLIB_LD_FLAGS}"
1402		CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
1403		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
1404	    ])
1405	    ;;
1406	BeOS*)
1407	    SHLIB_CFLAGS="-fPIC"
1408	    SHLIB_LD='${CC} -nostart'
1409	    SHLIB_SUFFIX=".so"
1410
1411	    #-----------------------------------------------------------
1412	    # Check for inet_ntoa in -lbind, for BeOS (which also needs
1413	    # -lsocket, even if the network functions are in -lnet which
1414	    # is always linked to, for compatibility.
1415	    #-----------------------------------------------------------
1416	    AC_CHECK_LIB(bind, inet_ntoa, [LIBS="$LIBS -lbind -lsocket"])
1417	    ;;
1418	BSD/OS-4.*)
1419	    SHLIB_CFLAGS="-export-dynamic -fPIC"
1420	    SHLIB_LD='${CC} -shared'
1421	    SHLIB_SUFFIX=".so"
1422	    LDFLAGS="$LDFLAGS -export-dynamic"
1423	    CC_SEARCH_FLAGS=""
1424	    LD_SEARCH_FLAGS=""
1425	    ;;
1426	CYGWIN_*)
1427	    SHLIB_CFLAGS=""
1428	    SHLIB_LD='${CC} -shared'
1429	    SHLIB_SUFFIX=".dll"
1430	    EXEEXT=".exe"
1431	    do64bit_ok=yes
1432	    CC_SEARCH_FLAGS=""
1433	    LD_SEARCH_FLAGS=""
1434	    ;;
1435	Haiku*)
1436	    LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
1437	    SHLIB_CFLAGS="-fPIC"
1438	    SHLIB_SUFFIX=".so"
1439	    SHLIB_LD='${CC} -shared ${CFLAGS} ${LDFLAGS}'
1440	    AC_CHECK_LIB(network, inet_ntoa, [LIBS="$LIBS -lnetwork"])
1441	    ;;
1442	HP-UX-*.11.*)
1443	    # Use updated header definitions where possible
1444	    AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, [Do we want to use the XOPEN network library?])
1445	    # TEA specific: Needed by Tcl, but not most extensions
1446	    #AC_DEFINE(_XOPEN_SOURCE, 1, [Do we want to use the XOPEN network library?])
1447	    #LIBS="$LIBS -lxnet"               # Use the XOPEN network library
1448
1449	    AS_IF([test "`uname -m`" = ia64], [
1450		SHLIB_SUFFIX=".so"
1451		# Use newer C++ library for C++ extensions
1452		#if test "$GCC" != "yes" ; then
1453		#   CPPFLAGS="-AA"
1454		#fi
1455	    ], [
1456		SHLIB_SUFFIX=".sl"
1457	    ])
1458	    AC_CHECK_LIB(dld, shl_load, tcl_ok=yes, tcl_ok=no)
1459	    AS_IF([test "$tcl_ok" = yes], [
1460		LDFLAGS="$LDFLAGS -Wl,-E"
1461		CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
1462		LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.'
1463		LD_LIBRARY_PATH_VAR="SHLIB_PATH"
1464	    ])
1465	    AS_IF([test "$GCC" = yes], [
1466		SHLIB_LD='${CC} -shared'
1467		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
1468	    ], [
1469		CFLAGS="$CFLAGS -z"
1470		# Users may want PA-RISC 1.1/2.0 portable code - needs HP cc
1471		#CFLAGS="$CFLAGS +DAportable"
1472		SHLIB_CFLAGS="+z"
1473		SHLIB_LD="ld -b"
1474	    ])
1475
1476	    # Check to enable 64-bit flags for compiler/linker
1477	    AS_IF([test "$do64bit" = "yes"], [
1478		AS_IF([test "$GCC" = yes], [
1479		    case `${CC} -dumpmachine` in
1480			hppa64*)
1481			    # 64-bit gcc in use.  Fix flags for GNU ld.
1482			    do64bit_ok=yes
1483			    SHLIB_LD='${CC} -shared'
1484			    AS_IF([test $doRpath = yes], [
1485				CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'])
1486			    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
1487			    ;;
1488			*)
1489			    AC_MSG_WARN([64bit mode not supported with GCC on $system])
1490			    ;;
1491		    esac
1492		], [
1493		    do64bit_ok=yes
1494		    CFLAGS="$CFLAGS +DD64"
1495		    LDFLAGS_ARCH="+DD64"
1496		])
1497	    ]) ;;
1498	IRIX-6.*)
1499	    SHLIB_CFLAGS=""
1500	    SHLIB_LD="ld -n32 -shared -rdata_shared"
1501	    SHLIB_SUFFIX=".so"
1502	    AS_IF([test $doRpath = yes], [
1503		CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
1504		LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'])
1505	    AS_IF([test "$GCC" = yes], [
1506		CFLAGS="$CFLAGS -mabi=n32"
1507		LDFLAGS="$LDFLAGS -mabi=n32"
1508	    ], [
1509		case $system in
1510		    IRIX-6.3)
1511			# Use to build 6.2 compatible binaries on 6.3.
1512			CFLAGS="$CFLAGS -n32 -D_OLD_TERMIOS"
1513			;;
1514		    *)
1515			CFLAGS="$CFLAGS -n32"
1516			;;
1517		esac
1518		LDFLAGS="$LDFLAGS -n32"
1519	    ])
1520	    ;;
1521	IRIX64-6.*)
1522	    SHLIB_CFLAGS=""
1523	    SHLIB_LD="ld -n32 -shared -rdata_shared"
1524	    SHLIB_SUFFIX=".so"
1525	    AS_IF([test $doRpath = yes], [
1526		CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
1527		LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'])
1528
1529	    # Check to enable 64-bit flags for compiler/linker
1530
1531	    AS_IF([test "$do64bit" = yes], [
1532	        AS_IF([test "$GCC" = yes], [
1533	            AC_MSG_WARN([64bit mode not supported by gcc])
1534	        ], [
1535	            do64bit_ok=yes
1536	            SHLIB_LD="ld -64 -shared -rdata_shared"
1537	            CFLAGS="$CFLAGS -64"
1538	            LDFLAGS_ARCH="-64"
1539	        ])
1540	    ])
1541	    ;;
1542	Linux*|GNU*|NetBSD-Debian)
1543	    SHLIB_CFLAGS="-fPIC"
1544	    SHLIB_SUFFIX=".so"
1545
1546	    # TEA specific:
1547	    CFLAGS_OPTIMIZE="-O2 -fomit-frame-pointer"
1548
1549	    # TEA specific: use LDFLAGS_DEFAULT instead of LDFLAGS
1550	    SHLIB_LD='${CC} -shared ${CFLAGS} ${LDFLAGS_DEFAULT}'
1551	    LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
1552	    AS_IF([test $doRpath = yes], [
1553		CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'])
1554	    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
1555	    AS_IF([test "`uname -m`" = "alpha"], [CFLAGS="$CFLAGS -mieee"])
1556	    AS_IF([test $do64bit = yes], [
1557		AC_CACHE_CHECK([if compiler accepts -m64 flag], tcl_cv_cc_m64, [
1558		    hold_cflags=$CFLAGS
1559		    CFLAGS="$CFLAGS -m64"
1560		    AC_TRY_LINK(,, tcl_cv_cc_m64=yes, tcl_cv_cc_m64=no)
1561		    CFLAGS=$hold_cflags])
1562		AS_IF([test $tcl_cv_cc_m64 = yes], [
1563		    CFLAGS="$CFLAGS -m64"
1564		    do64bit_ok=yes
1565		])
1566	   ])
1567
1568	    # The combo of gcc + glibc has a bug related to inlining of
1569	    # functions like strtod(). The -fno-builtin flag should address
1570	    # this problem but it does not work. The -fno-inline flag is kind
1571	    # of overkill but it works. Disable inlining only when one of the
1572	    # files in compat/*.c is being linked in.
1573
1574	    AS_IF([test x"${USE_COMPAT}" != x],[CFLAGS="$CFLAGS -fno-inline"])
1575	    ;;
1576	Lynx*)
1577	    SHLIB_CFLAGS="-fPIC"
1578	    SHLIB_SUFFIX=".so"
1579	    CFLAGS_OPTIMIZE=-02
1580	    SHLIB_LD='${CC} -shared'
1581	    LD_FLAGS="-Wl,--export-dynamic"
1582	    AS_IF([test $doRpath = yes], [
1583		CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
1584		LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'])
1585	    ;;
1586	OpenBSD-*)
1587	    arch=`arch -s`
1588	    case "$arch" in
1589	    vax)
1590		SHLIB_SUFFIX=""
1591		SHARED_LIB_SUFFIX=""
1592		LDFLAGS=""
1593		;;
1594	    *)
1595		SHLIB_CFLAGS="-fPIC"
1596		SHLIB_LD='${CC} -shared ${SHLIB_CFLAGS}'
1597		SHLIB_SUFFIX=".so"
1598		AS_IF([test $doRpath = yes], [
1599		    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'])
1600		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
1601		SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.${SHLIB_VERSION}'
1602		LDFLAGS="-Wl,-export-dynamic"
1603		;;
1604	    esac
1605	    case "$arch" in
1606	    vax)
1607		CFLAGS_OPTIMIZE="-O1"
1608		;;
1609	    *)
1610		CFLAGS_OPTIMIZE="-O2"
1611		;;
1612	    esac
1613	    AS_IF([test "${TCL_THREADS}" = "1"], [
1614		# On OpenBSD:	Compile with -pthread
1615		#		Don't link with -lpthread
1616		LIBS=`echo $LIBS | sed s/-lpthread//`
1617		CFLAGS="$CFLAGS -pthread"
1618	    ])
1619	    # OpenBSD doesn't do version numbers with dots.
1620	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
1621	    TCL_LIB_VERSIONS_OK=nodots
1622	    ;;
1623	NetBSD-*)
1624	    # NetBSD has ELF and can use 'cc -shared' to build shared libs
1625	    SHLIB_CFLAGS="-fPIC"
1626	    SHLIB_LD='${CC} -shared ${SHLIB_CFLAGS}'
1627	    SHLIB_SUFFIX=".so"
1628	    LDFLAGS="$LDFLAGS -export-dynamic"
1629	    AS_IF([test $doRpath = yes], [
1630		CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'])
1631	    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
1632	    AS_IF([test "${TCL_THREADS}" = "1"], [
1633		# The -pthread needs to go in the CFLAGS, not LIBS
1634		LIBS=`echo $LIBS | sed s/-pthread//`
1635		CFLAGS="$CFLAGS -pthread"
1636	    	LDFLAGS="$LDFLAGS -pthread"
1637	    ])
1638	    ;;
1639	FreeBSD-*)
1640	    # This configuration from FreeBSD Ports.
1641	    SHLIB_CFLAGS="-fPIC"
1642	    SHLIB_LD="${CC} -shared"
1643	    TCL_SHLIB_LD_EXTRAS="-Wl,-soname=\$[@]"
1644	    TK_SHLIB_LD_EXTRAS="-Wl,-soname,\$[@]"
1645	    SHLIB_SUFFIX=".so"
1646	    LDFLAGS=""
1647	    AS_IF([test $doRpath = yes], [
1648		CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
1649		LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'])
1650	    AS_IF([test "${TCL_THREADS}" = "1"], [
1651		# The -pthread needs to go in the LDFLAGS, not LIBS
1652		LIBS=`echo $LIBS | sed s/-pthread//`
1653		CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
1654		LDFLAGS="$LDFLAGS $PTHREAD_LIBS"])
1655	    case $system in
1656	    FreeBSD-3.*)
1657		# Version numbers are dot-stripped by system policy.
1658		TCL_TRIM_DOTS=`echo ${VERSION} | tr -d .`
1659		UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
1660		SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so'
1661		TCL_LIB_VERSIONS_OK=nodots
1662		;;
1663	    esac
1664	    ;;
1665	Darwin-*)
1666	    CFLAGS_OPTIMIZE="-Os"
1667	    SHLIB_CFLAGS="-fno-common"
1668	    # To avoid discrepancies between what headers configure sees during
1669	    # preprocessing tests and compiling tests, move any -isysroot and
1670	    # -mmacosx-version-min flags from CFLAGS to CPPFLAGS:
1671	    CPPFLAGS="${CPPFLAGS} `echo " ${CFLAGS}" | \
1672		awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=2;i<=NF;i++) \
1673		if ([$]i~/^(isysroot|mmacosx-version-min)/) print "-"[$]i}'`"
1674	    CFLAGS="`echo " ${CFLAGS}" | \
1675		awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=2;i<=NF;i++) \
1676		if (!([$]i~/^(isysroot|mmacosx-version-min)/)) print "-"[$]i}'`"
1677	    AS_IF([test $do64bit = yes], [
1678		case `arch` in
1679		    ppc)
1680			AC_CACHE_CHECK([if compiler accepts -arch ppc64 flag],
1681				tcl_cv_cc_arch_ppc64, [
1682			    hold_cflags=$CFLAGS
1683			    CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5"
1684			    AC_TRY_LINK(,, tcl_cv_cc_arch_ppc64=yes,
1685				    tcl_cv_cc_arch_ppc64=no)
1686			    CFLAGS=$hold_cflags])
1687			AS_IF([test $tcl_cv_cc_arch_ppc64 = yes], [
1688			    CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5"
1689			    do64bit_ok=yes
1690			]);;
1691		    i386)
1692			AC_CACHE_CHECK([if compiler accepts -arch x86_64 flag],
1693				tcl_cv_cc_arch_x86_64, [
1694			    hold_cflags=$CFLAGS
1695			    CFLAGS="$CFLAGS -arch x86_64"
1696			    AC_TRY_LINK(,, tcl_cv_cc_arch_x86_64=yes,
1697				    tcl_cv_cc_arch_x86_64=no)
1698			    CFLAGS=$hold_cflags])
1699			AS_IF([test $tcl_cv_cc_arch_x86_64 = yes], [
1700			    CFLAGS="$CFLAGS -arch x86_64"
1701			    do64bit_ok=yes
1702			]);;
1703		    *)
1704			AC_MSG_WARN([Don't know how enable 64-bit on architecture `arch`]);;
1705		esac
1706	    ], [
1707		# Check for combined 32-bit and 64-bit fat build
1708		AS_IF([echo "$CFLAGS " |grep -E -q -- '-arch (ppc64|x86_64) ' \
1709		    && echo "$CFLAGS " |grep -E -q -- '-arch (ppc|i386) '], [
1710		    fat_32_64=yes])
1711	    ])
1712	    # TEA specific: use LDFLAGS_DEFAULT instead of LDFLAGS
1713	    SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS_DEFAULT}'
1714	    AC_CACHE_CHECK([if ld accepts -single_module flag], tcl_cv_ld_single_module, [
1715		hold_ldflags=$LDFLAGS
1716		LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module"
1717		AC_TRY_LINK(, [int i;], tcl_cv_ld_single_module=yes, tcl_cv_ld_single_module=no)
1718		LDFLAGS=$hold_ldflags])
1719	    AS_IF([test $tcl_cv_ld_single_module = yes], [
1720		SHLIB_LD="${SHLIB_LD} -Wl,-single_module"
1721	    ])
1722	    # TEA specific: link shlib with current and compatibility version flags
1723	    vers=`echo ${PACKAGE_VERSION} | sed -e 's/^\([[0-9]]\{1,5\}\)\(\(\.[[0-9]]\{1,3\}\)\{0,2\}\).*$/\1\2/p' -e d`
1724	    SHLIB_LD="${SHLIB_LD} -current_version ${vers:-0} -compatibility_version ${vers:-0}"
1725	    SHLIB_SUFFIX=".dylib"
1726	    # Don't use -prebind when building for Mac OS X 10.4 or later only:
1727	    AS_IF([test "`echo "${MACOSX_DEPLOYMENT_TARGET}" | awk -F '10\\.' '{print int([$]2)}'`" -lt 4 -a \
1728		"`echo "${CPPFLAGS}" | awk -F '-mmacosx-version-min=10\\.' '{print int([$]2)}'`" -lt 4], [
1729		LDFLAGS="$LDFLAGS -prebind"])
1730	    LDFLAGS="$LDFLAGS -headerpad_max_install_names"
1731	    AC_CACHE_CHECK([if ld accepts -search_paths_first flag],
1732		    tcl_cv_ld_search_paths_first, [
1733		hold_ldflags=$LDFLAGS
1734		LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
1735		AC_TRY_LINK(, [int i;], tcl_cv_ld_search_paths_first=yes,
1736			tcl_cv_ld_search_paths_first=no)
1737		LDFLAGS=$hold_ldflags])
1738	    AS_IF([test $tcl_cv_ld_search_paths_first = yes], [
1739		LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
1740	    ])
1741	    AS_IF([test "$tcl_cv_cc_visibility_hidden" != yes], [
1742		AC_DEFINE(MODULE_SCOPE, [__private_extern__],
1743		    [Compiler support for module scope symbols])
1744		tcl_cv_cc_visibility_hidden=yes
1745	    ])
1746	    CC_SEARCH_FLAGS=""
1747	    LD_SEARCH_FLAGS=""
1748	    LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH"
1749	    # TEA specific: for combined 32 & 64 bit fat builds of Tk
1750	    # extensions, verify that 64-bit build is possible.
1751	    AS_IF([test "$fat_32_64" = yes && test -n "${TK_BIN_DIR}"], [
1752		AS_IF([test "${TEA_WINDOWINGSYSTEM}" = x11], [
1753		    AC_CACHE_CHECK([for 64-bit X11], tcl_cv_lib_x11_64, [
1754			for v in CFLAGS CPPFLAGS LDFLAGS; do
1755			    eval 'hold_'$v'="$'$v'";'$v'="`echo "$'$v' "|sed -e "s/-arch ppc / /g" -e "s/-arch i386 / /g"`"'
1756			done
1757			CPPFLAGS="$CPPFLAGS -I/usr/X11R6/include"
1758			LDFLAGS="$LDFLAGS -L/usr/X11R6/lib -lX11"
1759			AC_TRY_LINK([#include <X11/Xlib.h>], [XrmInitialize();],
1760			    tcl_cv_lib_x11_64=yes, tcl_cv_lib_x11_64=no)
1761			for v in CFLAGS CPPFLAGS LDFLAGS; do
1762			    eval $v'="$hold_'$v'"'
1763			done])
1764		])
1765		AS_IF([test "${TEA_WINDOWINGSYSTEM}" = aqua], [
1766		    AC_CACHE_CHECK([for 64-bit Tk], tcl_cv_lib_tk_64, [
1767			for v in CFLAGS CPPFLAGS LDFLAGS; do
1768			    eval 'hold_'$v'="$'$v'";'$v'="`echo "$'$v' "|sed -e "s/-arch ppc / /g" -e "s/-arch i386 / /g"`"'
1769			done
1770			CPPFLAGS="$CPPFLAGS -DUSE_TCL_STUBS=1 -DUSE_TK_STUBS=1 ${TCL_INCLUDES} ${TK_INCLUDES}"
1771			LDFLAGS="$LDFLAGS ${TCL_STUB_LIB_SPEC} ${TK_STUB_LIB_SPEC}"
1772			AC_TRY_LINK([#include <tk.h>], [Tk_InitStubs(NULL, "", 0);],
1773			    tcl_cv_lib_tk_64=yes, tcl_cv_lib_tk_64=no)
1774			for v in CFLAGS CPPFLAGS LDFLAGS; do
1775			    eval $v'="$hold_'$v'"'
1776			done])
1777		])
1778		# remove 64-bit arch flags from CFLAGS et al. if configuration
1779		# does not support 64-bit.
1780		AS_IF([test "$tcl_cv_lib_tk_64" = no -o "$tcl_cv_lib_x11_64" = no], [
1781		    AC_MSG_NOTICE([Removing 64-bit architectures from compiler & linker flags])
1782		    for v in CFLAGS CPPFLAGS LDFLAGS; do
1783			eval $v'="`echo "$'$v' "|sed -e "s/-arch ppc64 / /g" -e "s/-arch x86_64 / /g"`"'
1784		    done])
1785	    ])
1786	    ;;
1787	OS/390-*)
1788	    CFLAGS_OPTIMIZE=""		# Optimizer is buggy
1789	    AC_DEFINE(_OE_SOCKETS, 1,	# needed in sys/socket.h
1790		[Should OS/390 do the right thing with sockets?])
1791	    ;;
1792	OSF1-V*)
1793	    # Digital OSF/1
1794	    SHLIB_CFLAGS=""
1795	    AS_IF([test "$SHARED_BUILD" = 1], [
1796	        SHLIB_LD='ld -shared -expect_unresolved "*"'
1797	    ], [
1798	        SHLIB_LD='ld -non_shared -expect_unresolved "*"'
1799	    ])
1800	    SHLIB_SUFFIX=".so"
1801	    AS_IF([test $doRpath = yes], [
1802		CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
1803		LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'])
1804	    AS_IF([test "$GCC" = yes], [CFLAGS="$CFLAGS -mieee"], [
1805		CFLAGS="$CFLAGS -DHAVE_TZSET -std1 -ieee"])
1806	    # see pthread_intro(3) for pthread support on osf1, k.furukawa
1807	    AS_IF([test "${TCL_THREADS}" = 1], [
1808		CFLAGS="$CFLAGS -DHAVE_PTHREAD_ATTR_SETSTACKSIZE"
1809		CFLAGS="$CFLAGS -DTCL_THREAD_STACK_MIN=PTHREAD_STACK_MIN*64"
1810		LIBS=`echo $LIBS | sed s/-lpthreads//`
1811		AS_IF([test "$GCC" = yes], [
1812		    LIBS="$LIBS -lpthread -lmach -lexc"
1813		], [
1814		    CFLAGS="$CFLAGS -pthread"
1815		    LDFLAGS="$LDFLAGS -pthread"
1816		])
1817	    ])
1818	    ;;
1819	QNX-6*)
1820	    # QNX RTP
1821	    # This may work for all QNX, but it was only reported for v6.
1822	    SHLIB_CFLAGS="-fPIC"
1823	    SHLIB_LD="ld -Bshareable -x"
1824	    SHLIB_LD_LIBS=""
1825	    SHLIB_SUFFIX=".so"
1826	    CC_SEARCH_FLAGS=""
1827	    LD_SEARCH_FLAGS=""
1828	    ;;
1829	SCO_SV-3.2*)
1830	    AS_IF([test "$GCC" = yes], [
1831		SHLIB_CFLAGS="-fPIC -melf"
1832		LDFLAGS="$LDFLAGS -melf -Wl,-Bexport"
1833	    ], [
1834		SHLIB_CFLAGS="-Kpic -belf"
1835		LDFLAGS="$LDFLAGS -belf -Wl,-Bexport"
1836	    ])
1837	    SHLIB_LD="ld -G"
1838	    SHLIB_LD_LIBS=""
1839	    SHLIB_SUFFIX=".so"
1840	    CC_SEARCH_FLAGS=""
1841	    LD_SEARCH_FLAGS=""
1842	    ;;
1843	SunOS-5.[[0-6]])
1844	    # Careful to not let 5.10+ fall into this case
1845
1846	    # Note: If _REENTRANT isn't defined, then Solaris
1847	    # won't define thread-safe library routines.
1848
1849	    AC_DEFINE(_REENTRANT, 1, [Do we want the reentrant OS API?])
1850	    AC_DEFINE(_POSIX_PTHREAD_SEMANTICS, 1,
1851		[Do we really want to follow the standard? Yes we do!])
1852
1853	    SHLIB_CFLAGS="-KPIC"
1854	    SHLIB_SUFFIX=".so"
1855	    AS_IF([test "$GCC" = yes], [
1856		SHLIB_LD='${CC} -shared'
1857		CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
1858		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
1859	    ], [
1860		SHLIB_LD="/usr/ccs/bin/ld -G -z text"
1861		CC_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
1862		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
1863	    ])
1864	    ;;
1865	SunOS-5*)
1866	    # Note: If _REENTRANT isn't defined, then Solaris
1867	    # won't define thread-safe library routines.
1868
1869	    AC_DEFINE(_REENTRANT, 1, [Do we want the reentrant OS API?])
1870	    AC_DEFINE(_POSIX_PTHREAD_SEMANTICS, 1,
1871		[Do we really want to follow the standard? Yes we do!])
1872
1873	    SHLIB_CFLAGS="-KPIC"
1874
1875	    # Check to enable 64-bit flags for compiler/linker
1876	    AS_IF([test "$do64bit" = yes], [
1877		arch=`isainfo`
1878		AS_IF([test "$arch" = "sparcv9 sparc"], [
1879		    AS_IF([test "$GCC" = yes], [
1880			AS_IF([test "`${CC} -dumpversion | awk -F. '{print [$]1}'`" -lt 3], [
1881			    AC_MSG_WARN([64bit mode not supported with GCC < 3.2 on $system])
1882			], [
1883			    do64bit_ok=yes
1884			    CFLAGS="$CFLAGS -m64 -mcpu=v9"
1885			    LDFLAGS="$LDFLAGS -m64 -mcpu=v9"
1886			    SHLIB_CFLAGS="-fPIC"
1887			])
1888		    ], [
1889			do64bit_ok=yes
1890			AS_IF([test "$do64bitVIS" = yes], [
1891			    CFLAGS="$CFLAGS -xarch=v9a"
1892			    LDFLAGS_ARCH="-xarch=v9a"
1893			], [
1894			    CFLAGS="$CFLAGS -xarch=v9"
1895			    LDFLAGS_ARCH="-xarch=v9"
1896			])
1897			# Solaris 64 uses this as well
1898			#LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH_64"
1899		    ])
1900		], [AS_IF([test "$arch" = "amd64 i386"], [
1901		    AS_IF([test "$GCC" = yes], [
1902			case $system in
1903			    SunOS-5.1[[1-9]]*|SunOS-5.[[2-9]][[0-9]]*)
1904				do64bit_ok=yes
1905				CFLAGS="$CFLAGS -m64"
1906				LDFLAGS="$LDFLAGS -m64";;
1907			    *)
1908				AC_MSG_WARN([64bit mode not supported with GCC on $system]);;
1909			esac
1910		    ], [
1911			do64bit_ok=yes
1912			case $system in
1913			    SunOS-5.1[[1-9]]*|SunOS-5.[[2-9]][[0-9]]*)
1914				CFLAGS="$CFLAGS -m64"
1915				LDFLAGS="$LDFLAGS -m64";;
1916			    *)
1917				CFLAGS="$CFLAGS -xarch=amd64"
1918				LDFLAGS="$LDFLAGS -xarch=amd64";;
1919			esac
1920		    ])
1921		], [AC_MSG_WARN([64bit mode not supported for $arch])])])
1922	    ])
1923
1924	    SHLIB_SUFFIX=".so"
1925	    AS_IF([test "$GCC" = yes], [
1926		SHLIB_LD='${CC} -shared'
1927		CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
1928		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
1929		AS_IF([test "$do64bit_ok" = yes], [
1930		    AS_IF([test "$arch" = "sparcv9 sparc"], [
1931			# We need to specify -static-libgcc or we need to
1932			# add the path to the sparv9 libgcc.
1933			# JH: static-libgcc is necessary for core Tcl, but may
1934			# not be necessary for extensions.
1935			SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc"
1936			# for finding sparcv9 libgcc, get the regular libgcc
1937			# path, remove so name and append 'sparcv9'
1938			#v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..."
1939			#CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir"
1940		    ], [AS_IF([test "$arch" = "amd64 i386"], [
1941			# JH: static-libgcc is necessary for core Tcl, but may
1942			# not be necessary for extensions.
1943			SHLIB_LD="$SHLIB_LD -m64 -static-libgcc"
1944		    ])])
1945		])
1946	    ], [
1947		case $system in
1948		    SunOS-5.[[1-9]][[0-9]]*)
1949			# TEA specific: use LDFLAGS_DEFAULT instead of LDFLAGS
1950			SHLIB_LD='${CC} -G -z text ${LDFLAGS_DEFAULT}';;
1951		    *)
1952			SHLIB_LD='/usr/ccs/bin/ld -G -z text';;
1953		esac
1954		CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
1955		LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
1956	    ])
1957	    ;;
1958	UNIX_SV* | UnixWare-5*)
1959	    SHLIB_CFLAGS="-KPIC"
1960	    SHLIB_LD='${CC} -G'
1961	    SHLIB_LD_LIBS=""
1962	    SHLIB_SUFFIX=".so"
1963	    # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers
1964	    # that don't grok the -Bexport option.  Test that it does.
1965	    AC_CACHE_CHECK([for ld accepts -Bexport flag], tcl_cv_ld_Bexport, [
1966		hold_ldflags=$LDFLAGS
1967		LDFLAGS="$LDFLAGS -Wl,-Bexport"
1968		AC_TRY_LINK(, [int i;], tcl_cv_ld_Bexport=yes, tcl_cv_ld_Bexport=no)
1969	        LDFLAGS=$hold_ldflags])
1970	    AS_IF([test $tcl_cv_ld_Bexport = yes], [
1971		LDFLAGS="$LDFLAGS -Wl,-Bexport"
1972	    ])
1973	    CC_SEARCH_FLAGS=""
1974	    LD_SEARCH_FLAGS=""
1975	    ;;
1976    esac
1977
1978    AS_IF([test "$do64bit" = yes -a "$do64bit_ok" = no], [
1979	AC_MSG_WARN([64bit support being disabled -- don't know magic for this platform])
1980    ])
1981
1982dnl # Add any CPPFLAGS set in the environment to our CFLAGS, but delay doing so
1983dnl # until the end of configure, as configure's compile and link tests use
1984dnl # both CPPFLAGS and CFLAGS (unlike our compile and link) but configure's
1985dnl # preprocessing tests use only CPPFLAGS.
1986    AC_CONFIG_COMMANDS_PRE([CFLAGS="${CFLAGS} ${CPPFLAGS}"; CPPFLAGS=""])
1987
1988    # Add in the arch flags late to ensure it wasn't removed.
1989    # Not necessary in TEA, but this is aligned with core
1990    LDFLAGS="$LDFLAGS $LDFLAGS_ARCH"
1991
1992    # If we're running gcc, then change the C flags for compiling shared
1993    # libraries to the right flags for gcc, instead of those for the
1994    # standard manufacturer compiler.
1995
1996    AS_IF([test "$GCC" = yes], [
1997	case $system in
1998	    AIX-*) ;;
1999	    BSD/OS*) ;;
2000	    CYGWIN_*|MINGW32_*) ;;
2001	    IRIX*) ;;
2002	    NetBSD-*|FreeBSD-*|OpenBSD-*) ;;
2003	    Darwin-*) ;;
2004	    SCO_SV-3.2*) ;;
2005	    windows) ;;
2006	    *) SHLIB_CFLAGS="-fPIC" ;;
2007	esac])
2008
2009    AS_IF([test "$tcl_cv_cc_visibility_hidden" != yes], [
2010	AC_DEFINE(MODULE_SCOPE, [extern],
2011	    [No Compiler support for module scope symbols])
2012    ])
2013
2014    AS_IF([test "$SHARED_LIB_SUFFIX" = ""], [
2015    # TEA specific: use PACKAGE_VERSION instead of VERSION
2016    SHARED_LIB_SUFFIX='${PACKAGE_VERSION}${SHLIB_SUFFIX}'])
2017    AS_IF([test "$UNSHARED_LIB_SUFFIX" = ""], [
2018    # TEA specific: use PACKAGE_VERSION instead of VERSION
2019    UNSHARED_LIB_SUFFIX='${PACKAGE_VERSION}.a'])
2020
2021    if test "${GCC}" = "yes" -a ${SHLIB_SUFFIX} = ".dll"; then
2022	AC_CACHE_CHECK(for SEH support in compiler,
2023	    tcl_cv_seh,
2024	AC_TRY_RUN([
2025#define WIN32_LEAN_AND_MEAN
2026#include <windows.h>
2027#undef WIN32_LEAN_AND_MEAN
2028
2029	    int main(int argc, char** argv) {
2030		int a, b = 0;
2031		__try {
2032		    a = 666 / b;
2033		}
2034		__except (EXCEPTION_EXECUTE_HANDLER) {
2035		    return 0;
2036		}
2037		return 1;
2038	    }
2039	],
2040	    tcl_cv_seh=yes,
2041	    tcl_cv_seh=no,
2042	    tcl_cv_seh=no)
2043	)
2044	if test "$tcl_cv_seh" = "no" ; then
2045	    AC_DEFINE(HAVE_NO_SEH, 1,
2046		    [Defined when mingw does not support SEH])
2047	fi
2048
2049	#
2050	# Check to see if the excpt.h include file provided contains the
2051	# definition for EXCEPTION_DISPOSITION; if not, which is the case
2052	# with Cygwin's version as of 2002-04-10, define it to be int,
2053	# sufficient for getting the current code to work.
2054	#
2055	AC_CACHE_CHECK(for EXCEPTION_DISPOSITION support in include files,
2056	    tcl_cv_eh_disposition,
2057	    AC_TRY_COMPILE([
2058#	    define WIN32_LEAN_AND_MEAN
2059#	    include <windows.h>
2060#	    undef WIN32_LEAN_AND_MEAN
2061	    ],[
2062		EXCEPTION_DISPOSITION x;
2063	    ],
2064		tcl_cv_eh_disposition=yes,
2065		tcl_cv_eh_disposition=no)
2066	)
2067	if test "$tcl_cv_eh_disposition" = "no" ; then
2068	AC_DEFINE(EXCEPTION_DISPOSITION, int,
2069		[Defined when cygwin/mingw does not support EXCEPTION DISPOSITION])
2070	fi
2071
2072	# Check to see if winnt.h defines CHAR, SHORT, and LONG
2073	# even if VOID has already been #defined. The win32api
2074	# used by mingw and cygwin is known to do this.
2075
2076	AC_CACHE_CHECK(for winnt.h that ignores VOID define,
2077	    tcl_cv_winnt_ignore_void,
2078	    AC_TRY_COMPILE([
2079#define VOID void
2080#define WIN32_LEAN_AND_MEAN
2081#include <windows.h>
2082#undef WIN32_LEAN_AND_MEAN
2083	    ], [
2084		CHAR c;
2085		SHORT s;
2086		LONG l;
2087	    ],
2088        tcl_cv_winnt_ignore_void=yes,
2089        tcl_cv_winnt_ignore_void=no)
2090	)
2091	if test "$tcl_cv_winnt_ignore_void" = "yes" ; then
2092	    AC_DEFINE(HAVE_WINNT_IGNORE_VOID, 1,
2093		    [Defined when cygwin/mingw ignores VOID define in winnt.h])
2094	fi
2095    fi
2096
2097	# See if the compiler supports casting to a union type.
2098	# This is used to stop gcc from printing a compiler
2099	# warning when initializing a union member.
2100
2101	AC_CACHE_CHECK(for cast to union support,
2102	    tcl_cv_cast_to_union,
2103	    AC_TRY_COMPILE([],
2104	    [
2105		  union foo { int i; double d; };
2106		  union foo f = (union foo) (int) 0;
2107	    ],
2108	    tcl_cv_cast_to_union=yes,
2109	    tcl_cv_cast_to_union=no)
2110	)
2111	if test "$tcl_cv_cast_to_union" = "yes"; then
2112	    AC_DEFINE(HAVE_CAST_TO_UNION, 1,
2113		    [Defined when compiler supports casting to union type.])
2114	fi
2115
2116    AC_SUBST(CFLAGS_DEBUG)
2117    AC_SUBST(CFLAGS_OPTIMIZE)
2118    AC_SUBST(CFLAGS_WARNING)
2119
2120    AC_SUBST(STLIB_LD)
2121    AC_SUBST(SHLIB_LD)
2122
2123    AC_SUBST(SHLIB_LD_LIBS)
2124    AC_SUBST(SHLIB_CFLAGS)
2125
2126    AC_SUBST(LD_LIBRARY_PATH_VAR)
2127
2128    # These must be called after we do the basic CFLAGS checks and
2129    # verify any possible 64-bit or similar switches are necessary
2130    TEA_TCL_EARLY_FLAGS
2131    TEA_TCL_64BIT_FLAGS
2132])
2133
2134#--------------------------------------------------------------------
2135# TEA_SERIAL_PORT
2136#
2137#	Determine which interface to use to talk to the serial port.
2138#	Note that #include lines must begin in leftmost column for
2139#	some compilers to recognize them as preprocessor directives,
2140#	and some build environments have stdin not pointing at a
2141#	pseudo-terminal (usually /dev/null instead.)
2142#
2143# Arguments:
2144#	none
2145#
2146# Results:
2147#
2148#	Defines only one of the following vars:
2149#		HAVE_SYS_MODEM_H
2150#		USE_TERMIOS
2151#		USE_TERMIO
2152#		USE_SGTTY
2153#--------------------------------------------------------------------
2154
2155AC_DEFUN([TEA_SERIAL_PORT], [
2156    AC_CHECK_HEADERS(sys/modem.h)
2157    AC_CACHE_CHECK([termios vs. termio vs. sgtty], tcl_cv_api_serial, [
2158    AC_TRY_RUN([
2159#include <termios.h>
2160
2161int main() {
2162    struct termios t;
2163    if (tcgetattr(0, &t) == 0) {
2164	cfsetospeed(&t, 0);
2165	t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB;
2166	return 0;
2167    }
2168    return 1;
2169}], tcl_cv_api_serial=termios, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
2170    if test $tcl_cv_api_serial = no ; then
2171	AC_TRY_RUN([
2172#include <termio.h>
2173
2174int main() {
2175    struct termio t;
2176    if (ioctl(0, TCGETA, &t) == 0) {
2177	t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB;
2178	return 0;
2179    }
2180    return 1;
2181}], tcl_cv_api_serial=termio, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
2182    fi
2183    if test $tcl_cv_api_serial = no ; then
2184	AC_TRY_RUN([
2185#include <sgtty.h>
2186
2187int main() {
2188    struct sgttyb t;
2189    if (ioctl(0, TIOCGETP, &t) == 0) {
2190	t.sg_ospeed = 0;
2191	t.sg_flags |= ODDP | EVENP | RAW;
2192	return 0;
2193    }
2194    return 1;
2195}], tcl_cv_api_serial=sgtty, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
2196    fi
2197    if test $tcl_cv_api_serial = no ; then
2198	AC_TRY_RUN([
2199#include <termios.h>
2200#include <errno.h>
2201
2202int main() {
2203    struct termios t;
2204    if (tcgetattr(0, &t) == 0
2205	|| errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
2206	cfsetospeed(&t, 0);
2207	t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB;
2208	return 0;
2209    }
2210    return 1;
2211}], tcl_cv_api_serial=termios, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
2212    fi
2213    if test $tcl_cv_api_serial = no; then
2214	AC_TRY_RUN([
2215#include <termio.h>
2216#include <errno.h>
2217
2218int main() {
2219    struct termio t;
2220    if (ioctl(0, TCGETA, &t) == 0
2221	|| errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
2222	t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB;
2223	return 0;
2224    }
2225    return 1;
2226    }], tcl_cv_api_serial=termio, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
2227    fi
2228    if test $tcl_cv_api_serial = no; then
2229	AC_TRY_RUN([
2230#include <sgtty.h>
2231#include <errno.h>
2232
2233int main() {
2234    struct sgttyb t;
2235    if (ioctl(0, TIOCGETP, &t) == 0
2236	|| errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
2237	t.sg_ospeed = 0;
2238	t.sg_flags |= ODDP | EVENP | RAW;
2239	return 0;
2240    }
2241    return 1;
2242}], tcl_cv_api_serial=sgtty, tcl_cv_api_serial=none, tcl_cv_api_serial=none)
2243    fi])
2244    case $tcl_cv_api_serial in
2245	termios) AC_DEFINE(USE_TERMIOS, 1, [Use the termios API for serial lines]);;
2246	termio)  AC_DEFINE(USE_TERMIO, 1, [Use the termio API for serial lines]);;
2247	sgtty)   AC_DEFINE(USE_SGTTY, 1, [Use the sgtty API for serial lines]);;
2248    esac
2249])
2250
2251#--------------------------------------------------------------------
2252# TEA_MISSING_POSIX_HEADERS
2253#
2254#	Supply substitutes for missing POSIX header files.  Special
2255#	notes:
2256#	    - stdlib.h doesn't define strtol, strtoul, or
2257#	      strtod in some versions of SunOS
2258#	    - some versions of string.h don't declare procedures such
2259#	      as strstr
2260#
2261# Arguments:
2262#	none
2263#
2264# Results:
2265#
2266#	Defines some of the following vars:
2267#		NO_DIRENT_H
2268#		NO_ERRNO_H
2269#		NO_VALUES_H
2270#		HAVE_LIMITS_H or NO_LIMITS_H
2271#		NO_STDLIB_H
2272#		NO_STRING_H
2273#		NO_SYS_WAIT_H
2274#		NO_DLFCN_H
2275#		HAVE_SYS_PARAM_H
2276#
2277#		HAVE_STRING_H ?
2278#
2279# tkUnixPort.h checks for HAVE_LIMITS_H, so do both HAVE and
2280# CHECK on limits.h
2281#--------------------------------------------------------------------
2282
2283AC_DEFUN([TEA_MISSING_POSIX_HEADERS], [
2284    AC_CACHE_CHECK([dirent.h], tcl_cv_dirent_h, [
2285    AC_TRY_LINK([#include <sys/types.h>
2286#include <dirent.h>], [
2287#ifndef _POSIX_SOURCE
2288#   ifdef __Lynx__
2289	/*
2290	 * Generate compilation error to make the test fail:  Lynx headers
2291	 * are only valid if really in the POSIX environment.
2292	 */
2293
2294	missing_procedure();
2295#   endif
2296#endif
2297DIR *d;
2298struct dirent *entryPtr;
2299char *p;
2300d = opendir("foobar");
2301entryPtr = readdir(d);
2302p = entryPtr->d_name;
2303closedir(d);
2304], tcl_cv_dirent_h=yes, tcl_cv_dirent_h=no)])
2305
2306    if test $tcl_cv_dirent_h = no; then
2307	AC_DEFINE(NO_DIRENT_H, 1, [Do we have <dirent.h>?])
2308    fi
2309
2310    # TEA specific:
2311    AC_CHECK_HEADER(errno.h, , [AC_DEFINE(NO_ERRNO_H, 1, [Do we have <errno.h>?])])
2312    AC_CHECK_HEADER(float.h, , [AC_DEFINE(NO_FLOAT_H, 1, [Do we have <float.h>?])])
2313    AC_CHECK_HEADER(values.h, , [AC_DEFINE(NO_VALUES_H, 1, [Do we have <values.h>?])])
2314    AC_CHECK_HEADER(limits.h,
2315	[AC_DEFINE(HAVE_LIMITS_H, 1, [Do we have <limits.h>?])],
2316	[AC_DEFINE(NO_LIMITS_H, 1, [Do we have <limits.h>?])])
2317    AC_CHECK_HEADER(stdlib.h, tcl_ok=1, tcl_ok=0)
2318    AC_EGREP_HEADER(strtol, stdlib.h, , tcl_ok=0)
2319    AC_EGREP_HEADER(strtoul, stdlib.h, , tcl_ok=0)
2320    AC_EGREP_HEADER(strtod, stdlib.h, , tcl_ok=0)
2321    if test $tcl_ok = 0; then
2322	AC_DEFINE(NO_STDLIB_H, 1, [Do we have <stdlib.h>?])
2323    fi
2324    AC_CHECK_HEADER(string.h, tcl_ok=1, tcl_ok=0)
2325    AC_EGREP_HEADER(strstr, string.h, , tcl_ok=0)
2326    AC_EGREP_HEADER(strerror, string.h, , tcl_ok=0)
2327
2328    # See also memmove check below for a place where NO_STRING_H can be
2329    # set and why.
2330
2331    if test $tcl_ok = 0; then
2332	AC_DEFINE(NO_STRING_H, 1, [Do we have <string.h>?])
2333    fi
2334
2335    AC_CHECK_HEADER(sys/wait.h, , [AC_DEFINE(NO_SYS_WAIT_H, 1, [Do we have <sys/wait.h>?])])
2336    AC_CHECK_HEADER(dlfcn.h, , [AC_DEFINE(NO_DLFCN_H, 1, [Do we have <dlfcn.h>?])])
2337
2338    # OS/390 lacks sys/param.h (and doesn't need it, by chance).
2339    AC_HAVE_HEADERS(sys/param.h)
2340])
2341
2342#--------------------------------------------------------------------
2343# TEA_PATH_X
2344#
2345#	Locate the X11 header files and the X11 library archive.  Try
2346#	the ac_path_x macro first, but if it doesn't find the X stuff
2347#	(e.g. because there's no xmkmf program) then check through
2348#	a list of possible directories.  Under some conditions the
2349#	autoconf macro will return an include directory that contains
2350#	no include files, so double-check its result just to be safe.
2351#
2352#	This should be called after TEA_CONFIG_CFLAGS as setting the
2353#	LIBS line can confuse some configure macro magic.
2354#
2355# Arguments:
2356#	none
2357#
2358# Results:
2359#
2360#	Sets the following vars:
2361#		XINCLUDES
2362#		XLIBSW
2363#		PKG_LIBS (appends to)
2364#--------------------------------------------------------------------
2365
2366AC_DEFUN([TEA_PATH_X], [
2367    if test "${TEA_WINDOWINGSYSTEM}" = "x11" ; then
2368	TEA_PATH_UNIX_X
2369    fi
2370])
2371
2372AC_DEFUN([TEA_PATH_UNIX_X], [
2373    AC_PATH_X
2374    not_really_there=""
2375    if test "$no_x" = ""; then
2376	if test "$x_includes" = ""; then
2377	    AC_TRY_CPP([#include <X11/Xlib.h>], , not_really_there="yes")
2378	else
2379	    if test ! -r $x_includes/X11/Xlib.h; then
2380		not_really_there="yes"
2381	    fi
2382	fi
2383    fi
2384    if test "$no_x" = "yes" -o "$not_really_there" = "yes"; then
2385	AC_MSG_CHECKING([for X11 header files])
2386	found_xincludes="no"
2387	AC_TRY_CPP([#include <X11/Xlib.h>], found_xincludes="yes", found_xincludes="no")
2388	if test "$found_xincludes" = "no"; then
2389	    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"
2390	    for i in $dirs ; do
2391		if test -r $i/X11/Xlib.h; then
2392		    AC_MSG_RESULT([$i])
2393		    XINCLUDES=" -I$i"
2394		    found_xincludes="yes"
2395		    break
2396		fi
2397	    done
2398	fi
2399    else
2400	if test "$x_includes" != ""; then
2401	    XINCLUDES="-I$x_includes"
2402	    found_xincludes="yes"
2403	fi
2404    fi
2405    if test "$found_xincludes" = "no"; then
2406	AC_MSG_RESULT([couldn't find any!])
2407    fi
2408
2409    if test "$no_x" = yes; then
2410	AC_MSG_CHECKING([for X11 libraries])
2411	XLIBSW=nope
2412	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"
2413	for i in $dirs ; do
2414	    if test -r $i/libX11.a -o -r $i/libX11.so -o -r $i/libX11.sl -o -r $i/libX11.dylib; then
2415		AC_MSG_RESULT([$i])
2416		XLIBSW="-L$i -lX11"
2417		x_libraries="$i"
2418		break
2419	    fi
2420	done
2421    else
2422	if test "$x_libraries" = ""; then
2423	    XLIBSW=-lX11
2424	else
2425	    XLIBSW="-L$x_libraries -lX11"
2426	fi
2427    fi
2428    if test "$XLIBSW" = nope ; then
2429	AC_CHECK_LIB(Xwindow, XCreateWindow, XLIBSW=-lXwindow)
2430    fi
2431    if test "$XLIBSW" = nope ; then
2432	AC_MSG_RESULT([could not find any!  Using -lX11.])
2433	XLIBSW=-lX11
2434    fi
2435    # TEA specific:
2436    if test x"${XLIBSW}" != x ; then
2437	PKG_LIBS="${PKG_LIBS} ${XLIBSW}"
2438    fi
2439])
2440
2441#--------------------------------------------------------------------
2442# TEA_BLOCKING_STYLE
2443#
2444#	The statements below check for systems where POSIX-style
2445#	non-blocking I/O (O_NONBLOCK) doesn't work or is unimplemented.
2446#	On these systems (mostly older ones), use the old BSD-style
2447#	FIONBIO approach instead.
2448#
2449# Arguments:
2450#	none
2451#
2452# Results:
2453#
2454#	Defines some of the following vars:
2455#		HAVE_SYS_IOCTL_H
2456#		HAVE_SYS_FILIO_H
2457#		USE_FIONBIO
2458#		O_NONBLOCK
2459#--------------------------------------------------------------------
2460
2461AC_DEFUN([TEA_BLOCKING_STYLE], [
2462    AC_CHECK_HEADERS(sys/ioctl.h)
2463    AC_CHECK_HEADERS(sys/filio.h)
2464    TEA_CONFIG_SYSTEM
2465    AC_MSG_CHECKING([FIONBIO vs. O_NONBLOCK for nonblocking I/O])
2466    case $system in
2467	OSF*)
2468	    AC_DEFINE(USE_FIONBIO, 1, [Should we use FIONBIO?])
2469	    AC_MSG_RESULT([FIONBIO])
2470	    ;;
2471	*)
2472	    AC_MSG_RESULT([O_NONBLOCK])
2473	    ;;
2474    esac
2475])
2476
2477#--------------------------------------------------------------------
2478# TEA_TIME_HANDLER
2479#
2480#	Checks how the system deals with time.h, what time structures
2481#	are used on the system, and what fields the structures have.
2482#
2483# Arguments:
2484#	none
2485#
2486# Results:
2487#
2488#	Defines some of the following vars:
2489#		USE_DELTA_FOR_TZ
2490#		HAVE_TM_GMTOFF
2491#		HAVE_TM_TZADJ
2492#		HAVE_TIMEZONE_VAR
2493#--------------------------------------------------------------------
2494
2495AC_DEFUN([TEA_TIME_HANDLER], [
2496    AC_CHECK_HEADERS(sys/time.h)
2497    AC_HEADER_TIME
2498    AC_STRUCT_TIMEZONE
2499
2500    AC_CHECK_FUNCS(gmtime_r localtime_r)
2501
2502    AC_CACHE_CHECK([tm_tzadj in struct tm], tcl_cv_member_tm_tzadj, [
2503	AC_TRY_COMPILE([#include <time.h>], [struct tm tm; tm.tm_tzadj;],
2504	    tcl_cv_member_tm_tzadj=yes, tcl_cv_member_tm_tzadj=no)])
2505    if test $tcl_cv_member_tm_tzadj = yes ; then
2506	AC_DEFINE(HAVE_TM_TZADJ, 1, [Should we use the tm_tzadj field of struct tm?])
2507    fi
2508
2509    AC_CACHE_CHECK([tm_gmtoff in struct tm], tcl_cv_member_tm_gmtoff, [
2510	AC_TRY_COMPILE([#include <time.h>], [struct tm tm; tm.tm_gmtoff;],
2511	    tcl_cv_member_tm_gmtoff=yes, tcl_cv_member_tm_gmtoff=no)])
2512    if test $tcl_cv_member_tm_gmtoff = yes ; then
2513	AC_DEFINE(HAVE_TM_GMTOFF, 1, [Should we use the tm_gmtoff field of struct tm?])
2514    fi
2515
2516    #
2517    # Its important to include time.h in this check, as some systems
2518    # (like convex) have timezone functions, etc.
2519    #
2520    AC_CACHE_CHECK([long timezone variable], tcl_cv_timezone_long, [
2521	AC_TRY_COMPILE([#include <time.h>],
2522	    [extern long timezone;
2523	    timezone += 1;
2524	    exit (0);],
2525	    tcl_cv_timezone_long=yes, tcl_cv_timezone_long=no)])
2526    if test $tcl_cv_timezone_long = yes ; then
2527	AC_DEFINE(HAVE_TIMEZONE_VAR, 1, [Should we use the global timezone variable?])
2528    else
2529	#
2530	# On some systems (eg IRIX 6.2), timezone is a time_t and not a long.
2531	#
2532	AC_CACHE_CHECK([time_t timezone variable], tcl_cv_timezone_time, [
2533	    AC_TRY_COMPILE([#include <time.h>],
2534		[extern time_t timezone;
2535		timezone += 1;
2536		exit (0);],
2537		tcl_cv_timezone_time=yes, tcl_cv_timezone_time=no)])
2538	if test $tcl_cv_timezone_time = yes ; then
2539	    AC_DEFINE(HAVE_TIMEZONE_VAR, 1, [Should we use the global timezone variable?])
2540	fi
2541    fi
2542])
2543
2544#--------------------------------------------------------------------
2545# TEA_BUGGY_STRTOD
2546#
2547#	Under Solaris 2.4, strtod returns the wrong value for the
2548#	terminating character under some conditions.  Check for this
2549#	and if the problem exists use a substitute procedure
2550#	"fixstrtod" (provided by Tcl) that corrects the error.
2551#	Also, on Compaq's Tru64 Unix 5.0,
2552#	strtod(" ") returns 0.0 instead of a failure to convert.
2553#
2554# Arguments:
2555#	none
2556#
2557# Results:
2558#
2559#	Might defines some of the following vars:
2560#		strtod (=fixstrtod)
2561#--------------------------------------------------------------------
2562
2563AC_DEFUN([TEA_BUGGY_STRTOD], [
2564    AC_CHECK_FUNC(strtod, tcl_strtod=1, tcl_strtod=0)
2565    if test "$tcl_strtod" = 1; then
2566	AC_CACHE_CHECK([for Solaris2.4/Tru64 strtod bugs], tcl_cv_strtod_buggy,[
2567	    AC_TRY_RUN([
2568		extern double strtod();
2569		int main() {
2570		    char *infString="Inf", *nanString="NaN", *spaceString=" ";
2571		    char *term;
2572		    double value;
2573		    value = strtod(infString, &term);
2574		    if ((term != infString) && (term[-1] == 0)) {
2575			exit(1);
2576		    }
2577		    value = strtod(nanString, &term);
2578		    if ((term != nanString) && (term[-1] == 0)) {
2579			exit(1);
2580		    }
2581		    value = strtod(spaceString, &term);
2582		    if (term == (spaceString+1)) {
2583			exit(1);
2584		    }
2585		    exit(0);
2586		}], tcl_cv_strtod_buggy=ok, tcl_cv_strtod_buggy=buggy,
2587		    tcl_cv_strtod_buggy=buggy)])
2588	if test "$tcl_cv_strtod_buggy" = buggy; then
2589	    AC_LIBOBJ([fixstrtod])
2590	    USE_COMPAT=1
2591	    AC_DEFINE(strtod, fixstrtod, [Do we want to use the strtod() in compat?])
2592	fi
2593    fi
2594])
2595
2596#--------------------------------------------------------------------
2597# TEA_TCL_LINK_LIBS
2598#
2599#	Search for the libraries needed to link the Tcl shell.
2600#	Things like the math library (-lm) and socket stuff (-lsocket vs.
2601#	-lnsl) are dealt with here.
2602#
2603# Arguments:
2604#	Requires the following vars to be set in the Makefile:
2605#		DL_LIBS (not in TEA, only needed in core)
2606#		LIBS
2607#		MATH_LIBS
2608#
2609# Results:
2610#
2611#	Substitutes the following vars:
2612#		TCL_LIBS
2613#		MATH_LIBS
2614#
2615#	Might append to the following vars:
2616#		LIBS
2617#
2618#	Might define the following vars:
2619#		HAVE_NET_ERRNO_H
2620#--------------------------------------------------------------------
2621
2622AC_DEFUN([TEA_TCL_LINK_LIBS], [
2623    #--------------------------------------------------------------------
2624    # On a few very rare systems, all of the libm.a stuff is
2625    # already in libc.a.  Set compiler flags accordingly.
2626    # Also, Linux requires the "ieee" library for math to work
2627    # right (and it must appear before "-lm").
2628    #--------------------------------------------------------------------
2629
2630    AC_CHECK_FUNC(sin, MATH_LIBS="", MATH_LIBS="-lm")
2631    AC_CHECK_LIB(ieee, main, [MATH_LIBS="-lieee $MATH_LIBS"])
2632
2633    #--------------------------------------------------------------------
2634    # Interactive UNIX requires -linet instead of -lsocket, plus it
2635    # needs net/errno.h to define the socket-related error codes.
2636    #--------------------------------------------------------------------
2637
2638    AC_CHECK_LIB(inet, main, [LIBS="$LIBS -linet"])
2639    AC_CHECK_HEADER(net/errno.h, [
2640	AC_DEFINE(HAVE_NET_ERRNO_H, 1, [Do we have <net/errno.h>?])])
2641
2642    #--------------------------------------------------------------------
2643    #	Check for the existence of the -lsocket and -lnsl libraries.
2644    #	The order here is important, so that they end up in the right
2645    #	order in the command line generated by make.  Here are some
2646    #	special considerations:
2647    #	1. Use "connect" and "accept" to check for -lsocket, and
2648    #	   "gethostbyname" to check for -lnsl.
2649    #	2. Use each function name only once:  can't redo a check because
2650    #	   autoconf caches the results of the last check and won't redo it.
2651    #	3. Use -lnsl and -lsocket only if they supply procedures that
2652    #	   aren't already present in the normal libraries.  This is because
2653    #	   IRIX 5.2 has libraries, but they aren't needed and they're
2654    #	   bogus:  they goof up name resolution if used.
2655    #	4. On some SVR4 systems, can't use -lsocket without -lnsl too.
2656    #	   To get around this problem, check for both libraries together
2657    #	   if -lsocket doesn't work by itself.
2658    #--------------------------------------------------------------------
2659
2660    tcl_checkBoth=0
2661    AC_CHECK_FUNC(connect, tcl_checkSocket=0, tcl_checkSocket=1)
2662    if test "$tcl_checkSocket" = 1; then
2663	AC_CHECK_FUNC(setsockopt, , [AC_CHECK_LIB(socket, setsockopt,
2664	    LIBS="$LIBS -lsocket", tcl_checkBoth=1)])
2665    fi
2666    if test "$tcl_checkBoth" = 1; then
2667	tk_oldLibs=$LIBS
2668	LIBS="$LIBS -lsocket -lnsl"
2669	AC_CHECK_FUNC(accept, tcl_checkNsl=0, [LIBS=$tk_oldLibs])
2670    fi
2671    AC_CHECK_FUNC(gethostbyname, , [AC_CHECK_LIB(nsl, gethostbyname,
2672	    [LIBS="$LIBS -lnsl"])])
2673
2674    # TEA specific: Don't perform the eval of the libraries here because
2675    # DL_LIBS won't be set until we call TEA_CONFIG_CFLAGS
2676
2677    TCL_LIBS='${DL_LIBS} ${LIBS} ${MATH_LIBS}'
2678    AC_SUBST(TCL_LIBS)
2679    AC_SUBST(MATH_LIBS)
2680])
2681
2682#--------------------------------------------------------------------
2683# TEA_TCL_EARLY_FLAGS
2684#
2685#	Check for what flags are needed to be passed so the correct OS
2686#	features are available.
2687#
2688# Arguments:
2689#	None
2690#
2691# Results:
2692#
2693#	Might define the following vars:
2694#		_ISOC99_SOURCE
2695#		_LARGEFILE64_SOURCE
2696#		_LARGEFILE_SOURCE64
2697#--------------------------------------------------------------------
2698
2699AC_DEFUN([TEA_TCL_EARLY_FLAG],[
2700    AC_CACHE_VAL([tcl_cv_flag_]translit($1,[A-Z],[a-z]),
2701	AC_TRY_COMPILE([$2], $3, [tcl_cv_flag_]translit($1,[A-Z],[a-z])=no,
2702	    AC_TRY_COMPILE([[#define ]$1[ 1
2703]$2], $3,
2704		[tcl_cv_flag_]translit($1,[A-Z],[a-z])=yes,
2705		[tcl_cv_flag_]translit($1,[A-Z],[a-z])=no)))
2706    if test ["x${tcl_cv_flag_]translit($1,[A-Z],[a-z])[}" = "xyes"] ; then
2707	AC_DEFINE($1, 1, [Add the ]$1[ flag when building])
2708	tcl_flags="$tcl_flags $1"
2709    fi
2710])
2711
2712AC_DEFUN([TEA_TCL_EARLY_FLAGS],[
2713    AC_MSG_CHECKING([for required early compiler flags])
2714    tcl_flags=""
2715    TEA_TCL_EARLY_FLAG(_ISOC99_SOURCE,[#include <stdlib.h>],
2716	[char *p = (char *)strtoll; char *q = (char *)strtoull;])
2717    TEA_TCL_EARLY_FLAG(_LARGEFILE64_SOURCE,[#include <sys/stat.h>],
2718	[struct stat64 buf; int i = stat64("/", &buf);])
2719    TEA_TCL_EARLY_FLAG(_LARGEFILE_SOURCE64,[#include <sys/stat.h>],
2720	[char *p = (char *)open64;])
2721    if test "x${tcl_flags}" = "x" ; then
2722	AC_MSG_RESULT([none])
2723    else
2724	AC_MSG_RESULT([${tcl_flags}])
2725    fi
2726])
2727
2728#--------------------------------------------------------------------
2729# TEA_TCL_64BIT_FLAGS
2730#
2731#	Check for what is defined in the way of 64-bit features.
2732#
2733# Arguments:
2734#	None
2735#
2736# Results:
2737#
2738#	Might define the following vars:
2739#		TCL_WIDE_INT_IS_LONG
2740#		TCL_WIDE_INT_TYPE
2741#		HAVE_STRUCT_DIRENT64
2742#		HAVE_STRUCT_STAT64
2743#		HAVE_TYPE_OFF64_T
2744#--------------------------------------------------------------------
2745
2746AC_DEFUN([TEA_TCL_64BIT_FLAGS], [
2747    AC_MSG_CHECKING([for 64-bit integer type])
2748    AC_CACHE_VAL(tcl_cv_type_64bit,[
2749	tcl_cv_type_64bit=none
2750	# See if the compiler knows natively about __int64
2751	AC_TRY_COMPILE(,[__int64 value = (__int64) 0;],
2752	    tcl_type_64bit=__int64, tcl_type_64bit="long long")
2753	# See if we should use long anyway  Note that we substitute in the
2754	# type that is our current guess for a 64-bit type inside this check
2755	# program, so it should be modified only carefully...
2756        AC_TRY_COMPILE(,[switch (0) {
2757            case 1: case (sizeof(]${tcl_type_64bit}[)==sizeof(long)): ;
2758        }],tcl_cv_type_64bit=${tcl_type_64bit})])
2759    if test "${tcl_cv_type_64bit}" = none ; then
2760	AC_DEFINE(TCL_WIDE_INT_IS_LONG, 1, [Are wide integers to be implemented with C 'long's?])
2761	AC_MSG_RESULT([using long])
2762    elif test "${tcl_cv_type_64bit}" = "__int64" \
2763		-a "${TEA_PLATFORM}" = "windows" ; then
2764	# TEA specific: We actually want to use the default tcl.h checks in
2765	# this case to handle both TCL_WIDE_INT_TYPE and TCL_LL_MODIFIER*
2766	AC_MSG_RESULT([using Tcl header defaults])
2767    else
2768	AC_DEFINE_UNQUOTED(TCL_WIDE_INT_TYPE,${tcl_cv_type_64bit},
2769	    [What type should be used to define wide integers?])
2770	AC_MSG_RESULT([${tcl_cv_type_64bit}])
2771
2772	# Now check for auxiliary declarations
2773	AC_CACHE_CHECK([for struct dirent64], tcl_cv_struct_dirent64,[
2774	    AC_TRY_COMPILE([#include <sys/types.h>
2775#include <dirent.h>],[struct dirent64 p;],
2776		tcl_cv_struct_dirent64=yes,tcl_cv_struct_dirent64=no)])
2777	if test "x${tcl_cv_struct_dirent64}" = "xyes" ; then
2778	    AC_DEFINE(HAVE_STRUCT_DIRENT64, 1, [Is 'struct dirent64' in <sys/types.h>?])
2779	fi
2780
2781	AC_CACHE_CHECK([for struct stat64], tcl_cv_struct_stat64,[
2782	    AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat64 p;
2783],
2784		tcl_cv_struct_stat64=yes,tcl_cv_struct_stat64=no)])
2785	if test "x${tcl_cv_struct_stat64}" = "xyes" ; then
2786	    AC_DEFINE(HAVE_STRUCT_STAT64, 1, [Is 'struct stat64' in <sys/stat.h>?])
2787	fi
2788
2789	AC_CHECK_FUNCS(open64 lseek64)
2790	AC_MSG_CHECKING([for off64_t])
2791	AC_CACHE_VAL(tcl_cv_type_off64_t,[
2792	    AC_TRY_COMPILE([#include <sys/types.h>],[off64_t offset;
2793],
2794		tcl_cv_type_off64_t=yes,tcl_cv_type_off64_t=no)])
2795	dnl Define HAVE_TYPE_OFF64_T only when the off64_t type and the
2796	dnl functions lseek64 and open64 are defined.
2797	if test "x${tcl_cv_type_off64_t}" = "xyes" && \
2798	        test "x${ac_cv_func_lseek64}" = "xyes" && \
2799	        test "x${ac_cv_func_open64}" = "xyes" ; then
2800	    AC_DEFINE(HAVE_TYPE_OFF64_T, 1, [Is off64_t in <sys/types.h>?])
2801	    AC_MSG_RESULT([yes])
2802	else
2803	    AC_MSG_RESULT([no])
2804	fi
2805    fi
2806])
2807
2808##
2809## Here ends the standard Tcl configuration bits and starts the
2810## TEA specific functions
2811##
2812
2813#------------------------------------------------------------------------
2814# TEA_INIT --
2815#
2816#	Init various Tcl Extension Architecture (TEA) variables.
2817#	This should be the first called TEA_* macro.
2818#
2819# Arguments:
2820#	none
2821#
2822# Results:
2823#
2824#	Defines and substs the following vars:
2825#		CYGPATH
2826#		EXEEXT
2827#	Defines only:
2828#		TEA_VERSION
2829#		TEA_INITED
2830#		TEA_PLATFORM (windows or unix)
2831#
2832# "cygpath" is used on windows to generate native path names for include
2833# files. These variables should only be used with the compiler and linker
2834# since they generate native path names.
2835#
2836# EXEEXT
2837#	Select the executable extension based on the host type.  This
2838#	is a lightweight replacement for AC_EXEEXT that doesn't require
2839#	a compiler.
2840#------------------------------------------------------------------------
2841
2842AC_DEFUN([TEA_INIT], [
2843    # TEA extensions pass this us the version of TEA they think they
2844    # are compatible with.
2845    TEA_VERSION="3.9"
2846
2847    AC_MSG_CHECKING([for correct TEA configuration])
2848    if test x"${PACKAGE_NAME}" = x ; then
2849	AC_MSG_ERROR([
2850The PACKAGE_NAME variable must be defined by your TEA configure.in])
2851    fi
2852    if test x"$1" = x ; then
2853	AC_MSG_ERROR([
2854TEA version not specified.])
2855    elif test "$1" != "${TEA_VERSION}" ; then
2856	AC_MSG_RESULT([warning: requested TEA version "$1", have "${TEA_VERSION}"])
2857    else
2858	AC_MSG_RESULT([ok (TEA ${TEA_VERSION})])
2859    fi
2860
2861    # If the user did not set CFLAGS, set it now to keep macros
2862    # like AC_PROG_CC and AC_TRY_COMPILE from adding "-g -O2".
2863    if test "${CFLAGS+set}" != "set" ; then
2864	CFLAGS=""
2865    fi
2866
2867    case "`uname -s`" in
2868	*win32*|*WIN32*|*MINGW32_*)
2869	    AC_CHECK_PROG(CYGPATH, cygpath, cygpath -w, echo)
2870	    EXEEXT=".exe"
2871	    TEA_PLATFORM="windows"
2872	    ;;
2873	*CYGWIN_*)
2874	    CYGPATH=echo
2875	    EXEEXT=".exe"
2876	    # TEA_PLATFORM is determined later in LOAD_TCLCONFIG
2877	    ;;
2878	*)
2879	    CYGPATH=echo
2880	    # Maybe we are cross-compiling....
2881	    case ${host_alias} in
2882		*mingw32*)
2883		EXEEXT=".exe"
2884		TEA_PLATFORM="windows"
2885		;;
2886	    *)
2887		EXEEXT=""
2888		TEA_PLATFORM="unix"
2889		;;
2890	    esac
2891	    ;;
2892    esac
2893
2894    # Check if exec_prefix is set. If not use fall back to prefix.
2895    # Note when adjusted, so that TEA_PREFIX can correct for this.
2896    # This is needed for recursive configures, since autoconf propagates
2897    # $prefix, but not $exec_prefix (doh!).
2898    if test x$exec_prefix = xNONE ; then
2899	exec_prefix_default=yes
2900	exec_prefix=$prefix
2901    fi
2902
2903    AC_MSG_NOTICE([configuring ${PACKAGE_NAME} ${PACKAGE_VERSION}])
2904
2905    AC_SUBST(EXEEXT)
2906    AC_SUBST(CYGPATH)
2907
2908    # This package name must be replaced statically for AC_SUBST to work
2909    AC_SUBST(PKG_LIB_FILE)
2910    # Substitute STUB_LIB_FILE in case package creates a stub library too.
2911    AC_SUBST(PKG_STUB_LIB_FILE)
2912
2913    # We AC_SUBST these here to ensure they are subst'ed,
2914    # in case the user doesn't call TEA_ADD_...
2915    AC_SUBST(PKG_STUB_SOURCES)
2916    AC_SUBST(PKG_STUB_OBJECTS)
2917    AC_SUBST(PKG_TCL_SOURCES)
2918    AC_SUBST(PKG_HEADERS)
2919    AC_SUBST(PKG_INCLUDES)
2920    AC_SUBST(PKG_LIBS)
2921    AC_SUBST(PKG_CFLAGS)
2922])
2923
2924#------------------------------------------------------------------------
2925# TEA_ADD_SOURCES --
2926#
2927#	Specify one or more source files.  Users should check for
2928#	the right platform before adding to their list.
2929#	It is not important to specify the directory, as long as it is
2930#	in the generic, win or unix subdirectory of $(srcdir).
2931#
2932# Arguments:
2933#	one or more file names
2934#
2935# Results:
2936#
2937#	Defines and substs the following vars:
2938#		PKG_SOURCES
2939#		PKG_OBJECTS
2940#------------------------------------------------------------------------
2941AC_DEFUN([TEA_ADD_SOURCES], [
2942    vars="$@"
2943    for i in $vars; do
2944	case $i in
2945	    [\$]*)
2946		# allow $-var names
2947		PKG_SOURCES="$PKG_SOURCES $i"
2948		PKG_OBJECTS="$PKG_OBJECTS $i"
2949		;;
2950	    *)
2951		# check for existence - allows for generic/win/unix VPATH
2952		# To add more dirs here (like 'src'), you have to update VPATH
2953		# in Makefile.in as well
2954		if test ! -f "${srcdir}/$i" -a ! -f "${srcdir}/generic/$i" \
2955		    -a ! -f "${srcdir}/win/$i" -a ! -f "${srcdir}/unix/$i" \
2956		    -a ! -f "${srcdir}/macosx/$i" \
2957		    ; then
2958		    AC_MSG_ERROR([could not find source file '$i'])
2959		fi
2960		PKG_SOURCES="$PKG_SOURCES $i"
2961		# this assumes it is in a VPATH dir
2962		i=`basename $i`
2963		# handle user calling this before or after TEA_SETUP_COMPILER
2964		if test x"${OBJEXT}" != x ; then
2965		    j="`echo $i | sed -e 's/\.[[^.]]*$//'`.${OBJEXT}"
2966		else
2967		    j="`echo $i | sed -e 's/\.[[^.]]*$//'`.\${OBJEXT}"
2968		fi
2969		PKG_OBJECTS="$PKG_OBJECTS $j"
2970		;;
2971	esac
2972    done
2973    AC_SUBST(PKG_SOURCES)
2974    AC_SUBST(PKG_OBJECTS)
2975])
2976
2977#------------------------------------------------------------------------
2978# TEA_ADD_STUB_SOURCES --
2979#
2980#	Specify one or more source files.  Users should check for
2981#	the right platform before adding to their list.
2982#	It is not important to specify the directory, as long as it is
2983#	in the generic, win or unix subdirectory of $(srcdir).
2984#
2985# Arguments:
2986#	one or more file names
2987#
2988# Results:
2989#
2990#	Defines and substs the following vars:
2991#		PKG_STUB_SOURCES
2992#		PKG_STUB_OBJECTS
2993#------------------------------------------------------------------------
2994AC_DEFUN([TEA_ADD_STUB_SOURCES], [
2995    vars="$@"
2996    for i in $vars; do
2997	# check for existence - allows for generic/win/unix VPATH
2998	if test ! -f "${srcdir}/$i" -a ! -f "${srcdir}/generic/$i" \
2999	    -a ! -f "${srcdir}/win/$i" -a ! -f "${srcdir}/unix/$i" \
3000	    -a ! -f "${srcdir}/macosx/$i" \
3001	    ; then
3002	    AC_MSG_ERROR([could not find stub source file '$i'])
3003	fi
3004	PKG_STUB_SOURCES="$PKG_STUB_SOURCES $i"
3005	# this assumes it is in a VPATH dir
3006	i=`basename $i`
3007	# handle user calling this before or after TEA_SETUP_COMPILER
3008	if test x"${OBJEXT}" != x ; then
3009	    j="`echo $i | sed -e 's/\.[[^.]]*$//'`.${OBJEXT}"
3010	else
3011	    j="`echo $i | sed -e 's/\.[[^.]]*$//'`.\${OBJEXT}"
3012	fi
3013	PKG_STUB_OBJECTS="$PKG_STUB_OBJECTS $j"
3014    done
3015    AC_SUBST(PKG_STUB_SOURCES)
3016    AC_SUBST(PKG_STUB_OBJECTS)
3017])
3018
3019#------------------------------------------------------------------------
3020# TEA_ADD_TCL_SOURCES --
3021#
3022#	Specify one or more Tcl source files.  These should be platform
3023#	independent runtime files.
3024#
3025# Arguments:
3026#	one or more file names
3027#
3028# Results:
3029#
3030#	Defines and substs the following vars:
3031#		PKG_TCL_SOURCES
3032#------------------------------------------------------------------------
3033AC_DEFUN([TEA_ADD_TCL_SOURCES], [
3034    vars="$@"
3035    for i in $vars; do
3036	# check for existence, be strict because it is installed
3037	if test ! -f "${srcdir}/$i" ; then
3038	    AC_MSG_ERROR([could not find tcl source file '${srcdir}/$i'])
3039	fi
3040	PKG_TCL_SOURCES="$PKG_TCL_SOURCES $i"
3041    done
3042    AC_SUBST(PKG_TCL_SOURCES)
3043])
3044
3045#------------------------------------------------------------------------
3046# TEA_ADD_HEADERS --
3047#
3048#	Specify one or more source headers.  Users should check for
3049#	the right platform before adding to their list.
3050#
3051# Arguments:
3052#	one or more file names
3053#
3054# Results:
3055#
3056#	Defines and substs the following vars:
3057#		PKG_HEADERS
3058#------------------------------------------------------------------------
3059AC_DEFUN([TEA_ADD_HEADERS], [
3060    vars="$@"
3061    for i in $vars; do
3062	# check for existence, be strict because it is installed
3063	if test ! -f "${srcdir}/$i" ; then
3064	    AC_MSG_ERROR([could not find header file '${srcdir}/$i'])
3065	fi
3066	PKG_HEADERS="$PKG_HEADERS $i"
3067    done
3068    AC_SUBST(PKG_HEADERS)
3069])
3070
3071#------------------------------------------------------------------------
3072# TEA_ADD_INCLUDES --
3073#
3074#	Specify one or more include dirs.  Users should check for
3075#	the right platform before adding to their list.
3076#
3077# Arguments:
3078#	one or more file names
3079#
3080# Results:
3081#
3082#	Defines and substs the following vars:
3083#		PKG_INCLUDES
3084#------------------------------------------------------------------------
3085AC_DEFUN([TEA_ADD_INCLUDES], [
3086    vars="$@"
3087    for i in $vars; do
3088	PKG_INCLUDES="$PKG_INCLUDES $i"
3089    done
3090    AC_SUBST(PKG_INCLUDES)
3091])
3092
3093#------------------------------------------------------------------------
3094# TEA_ADD_LIBS --
3095#
3096#	Specify one or more libraries.  Users should check for
3097#	the right platform before adding to their list.  For Windows,
3098#	libraries provided in "foo.lib" format will be converted to
3099#	"-lfoo" when using GCC (mingw).
3100#
3101# Arguments:
3102#	one or more file names
3103#
3104# Results:
3105#
3106#	Defines and substs the following vars:
3107#		PKG_LIBS
3108#------------------------------------------------------------------------
3109AC_DEFUN([TEA_ADD_LIBS], [
3110    vars="$@"
3111    for i in $vars; do
3112	if test "${TEA_PLATFORM}" = "windows" -a "$GCC" = "yes" ; then
3113	    # Convert foo.lib to -lfoo for GCC.  No-op if not *.lib
3114	    i=`echo "$i" | sed -e 's/^\([[^-]].*\)\.lib[$]/-l\1/i'`
3115	fi
3116	PKG_LIBS="$PKG_LIBS $i"
3117    done
3118    AC_SUBST(PKG_LIBS)
3119])
3120
3121#------------------------------------------------------------------------
3122# TEA_ADD_CFLAGS --
3123#
3124#	Specify one or more CFLAGS.  Users should check for
3125#	the right platform before adding to their list.
3126#
3127# Arguments:
3128#	one or more file names
3129#
3130# Results:
3131#
3132#	Defines and substs the following vars:
3133#		PKG_CFLAGS
3134#------------------------------------------------------------------------
3135AC_DEFUN([TEA_ADD_CFLAGS], [
3136    PKG_CFLAGS="$PKG_CFLAGS $@"
3137    AC_SUBST(PKG_CFLAGS)
3138])
3139
3140#------------------------------------------------------------------------
3141# TEA_ADD_CLEANFILES --
3142#
3143#	Specify one or more CLEANFILES.
3144#
3145# Arguments:
3146#	one or more file names to clean target
3147#
3148# Results:
3149#
3150#	Appends to CLEANFILES, already defined for subst in LOAD_TCLCONFIG
3151#------------------------------------------------------------------------
3152AC_DEFUN([TEA_ADD_CLEANFILES], [
3153    CLEANFILES="$CLEANFILES $@"
3154])
3155
3156#------------------------------------------------------------------------
3157# TEA_PREFIX --
3158#
3159#	Handle the --prefix=... option by defaulting to what Tcl gave
3160#
3161# Arguments:
3162#	none
3163#
3164# Results:
3165#
3166#	If --prefix or --exec-prefix was not specified, $prefix and
3167#	$exec_prefix will be set to the values given to Tcl when it was
3168#	configured.
3169#------------------------------------------------------------------------
3170AC_DEFUN([TEA_PREFIX], [
3171    if test "${prefix}" = "NONE"; then
3172	prefix_default=yes
3173	if test x"${TCL_PREFIX}" != x; then
3174	    AC_MSG_NOTICE([--prefix defaulting to TCL_PREFIX ${TCL_PREFIX}])
3175	    prefix=${TCL_PREFIX}
3176	else
3177	    AC_MSG_NOTICE([--prefix defaulting to /usr/local])
3178	    prefix=/usr/local
3179	fi
3180    fi
3181    if test "${exec_prefix}" = "NONE" -a x"${prefix_default}" = x"yes" \
3182	-o x"${exec_prefix_default}" = x"yes" ; then
3183	if test x"${TCL_EXEC_PREFIX}" != x; then
3184	    AC_MSG_NOTICE([--exec-prefix defaulting to TCL_EXEC_PREFIX ${TCL_EXEC_PREFIX}])
3185	    exec_prefix=${TCL_EXEC_PREFIX}
3186	else
3187	    AC_MSG_NOTICE([--exec-prefix defaulting to ${prefix}])
3188	    exec_prefix=$prefix
3189	fi
3190    fi
3191])
3192
3193#------------------------------------------------------------------------
3194# TEA_SETUP_COMPILER_CC --
3195#
3196#	Do compiler checks the way we want.  This is just a replacement
3197#	for AC_PROG_CC in TEA configure.in files to make them cleaner.
3198#
3199# Arguments:
3200#	none
3201#
3202# Results:
3203#
3204#	Sets up CC var and other standard bits we need to make executables.
3205#------------------------------------------------------------------------
3206AC_DEFUN([TEA_SETUP_COMPILER_CC], [
3207    # Don't put any macros that use the compiler (e.g. AC_TRY_COMPILE)
3208    # in this macro, they need to go into TEA_SETUP_COMPILER instead.
3209
3210    AC_PROG_CC
3211    AC_PROG_CPP
3212
3213    INSTALL="\$(SHELL) \$(srcdir)/tclconfig/install-sh -c"
3214    AC_SUBST(INSTALL)
3215    INSTALL_DATA="\${INSTALL} -m 644"
3216    AC_SUBST(INSTALL_DATA)
3217    INSTALL_PROGRAM="\${INSTALL}"
3218    AC_SUBST(INSTALL_PROGRAM)
3219    INSTALL_SCRIPT="\${INSTALL}"
3220    AC_SUBST(INSTALL_SCRIPT)
3221
3222    #--------------------------------------------------------------------
3223    # Checks to see if the make program sets the $MAKE variable.
3224    #--------------------------------------------------------------------
3225
3226    AC_PROG_MAKE_SET
3227
3228    #--------------------------------------------------------------------
3229    # Find ranlib
3230    #--------------------------------------------------------------------
3231
3232    AC_CHECK_TOOL(RANLIB, ranlib)
3233
3234    #--------------------------------------------------------------------
3235    # Determines the correct binary file extension (.o, .obj, .exe etc.)
3236    #--------------------------------------------------------------------
3237
3238    AC_OBJEXT
3239    AC_EXEEXT
3240])
3241
3242#------------------------------------------------------------------------
3243# TEA_SETUP_COMPILER --
3244#
3245#	Do compiler checks that use the compiler.  This must go after
3246#	TEA_SETUP_COMPILER_CC, which does the actual compiler check.
3247#
3248# Arguments:
3249#	none
3250#
3251# Results:
3252#
3253#	Sets up CC var and other standard bits we need to make executables.
3254#------------------------------------------------------------------------
3255AC_DEFUN([TEA_SETUP_COMPILER], [
3256    # Any macros that use the compiler (e.g. AC_TRY_COMPILE) have to go here.
3257    AC_REQUIRE([TEA_SETUP_COMPILER_CC])
3258
3259    #------------------------------------------------------------------------
3260    # If we're using GCC, see if the compiler understands -pipe. If so, use it.
3261    # It makes compiling go faster.  (This is only a performance feature.)
3262    #------------------------------------------------------------------------
3263
3264    if test -z "$no_pipe" -a -n "$GCC"; then
3265	AC_CACHE_CHECK([if the compiler understands -pipe],
3266	    tcl_cv_cc_pipe, [
3267	    hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -pipe"
3268	    AC_TRY_COMPILE(,, tcl_cv_cc_pipe=yes, tcl_cv_cc_pipe=no)
3269	    CFLAGS=$hold_cflags])
3270	if test $tcl_cv_cc_pipe = yes; then
3271	    CFLAGS="$CFLAGS -pipe"
3272	fi
3273    fi
3274
3275    #--------------------------------------------------------------------
3276    # Common compiler flag setup
3277    #--------------------------------------------------------------------
3278
3279    AC_C_BIGENDIAN
3280    if test "${TEA_PLATFORM}" = "unix" ; then
3281	TEA_TCL_LINK_LIBS
3282	TEA_MISSING_POSIX_HEADERS
3283	# Let the user call this, because if it triggers, they will
3284	# need a compat/strtod.c that is correct.  Users can also
3285	# use Tcl_GetDouble(FromObj) instead.
3286	#TEA_BUGGY_STRTOD
3287    fi
3288])
3289
3290#------------------------------------------------------------------------
3291# TEA_MAKE_LIB --
3292#
3293#	Generate a line that can be used to build a shared/unshared library
3294#	in a platform independent manner.
3295#
3296# Arguments:
3297#	none
3298#
3299#	Requires:
3300#
3301# Results:
3302#
3303#	Defines the following vars:
3304#	CFLAGS -	Done late here to note disturb other AC macros
3305#       MAKE_LIB -      Command to execute to build the Tcl library;
3306#                       differs depending on whether or not Tcl is being
3307#                       compiled as a shared library.
3308#	MAKE_SHARED_LIB	Makefile rule for building a shared library
3309#	MAKE_STATIC_LIB	Makefile rule for building a static library
3310#	MAKE_STUB_LIB	Makefile rule for building a stub library
3311#	VC_MANIFEST_EMBED_DLL Makefile rule for embedded VC manifest in DLL
3312#	VC_MANIFEST_EMBED_EXE Makefile rule for embedded VC manifest in EXE
3313#------------------------------------------------------------------------
3314
3315AC_DEFUN([TEA_MAKE_LIB], [
3316    if test "${TEA_PLATFORM}" = "windows" -a "$GCC" != "yes"; then
3317	MAKE_STATIC_LIB="\${STLIB_LD} -out:\[$]@ \$(PKG_OBJECTS)"
3318	MAKE_SHARED_LIB="\${SHLIB_LD} \${SHLIB_LD_LIBS} \${LDFLAGS_DEFAULT} -out:\[$]@ \$(PKG_OBJECTS)"
3319	AC_EGREP_CPP([manifest needed], [
3320#if defined(_MSC_VER) && _MSC_VER >= 1400
3321print("manifest needed")
3322#endif
3323	], [
3324	# Could do a CHECK_PROG for mt, but should always be with MSVC8+
3325	VC_MANIFEST_EMBED_DLL="if test -f \[$]@.manifest ; then mt.exe -nologo -manifest \[$]@.manifest -outputresource:\[$]@\;2 ; fi"
3326	VC_MANIFEST_EMBED_EXE="if test -f \[$]@.manifest ; then mt.exe -nologo -manifest \[$]@.manifest -outputresource:\[$]@\;1 ; fi"
3327	MAKE_SHARED_LIB="${MAKE_SHARED_LIB} ; ${VC_MANIFEST_EMBED_DLL}"
3328	TEA_ADD_CLEANFILES([*.manifest])
3329	])
3330	MAKE_STUB_LIB="\${STLIB_LD} -nodefaultlib -out:\[$]@ \$(PKG_STUB_OBJECTS)"
3331    else
3332	MAKE_STATIC_LIB="\${STLIB_LD} \[$]@ \$(PKG_OBJECTS)"
3333	MAKE_SHARED_LIB="\${SHLIB_LD} -o \[$]@ \$(PKG_OBJECTS) \${SHLIB_LD_LIBS}"
3334	MAKE_STUB_LIB="\${STLIB_LD} \[$]@ \$(PKG_STUB_OBJECTS)"
3335    fi
3336
3337    if test "${SHARED_BUILD}" = "1" ; then
3338	MAKE_LIB="${MAKE_SHARED_LIB} "
3339    else
3340	MAKE_LIB="${MAKE_STATIC_LIB} "
3341    fi
3342
3343    #--------------------------------------------------------------------
3344    # Shared libraries and static libraries have different names.
3345    # Use the double eval to make sure any variables in the suffix is
3346    # substituted. (@@@ Might not be necessary anymore)
3347    #--------------------------------------------------------------------
3348
3349    if test "${TEA_PLATFORM}" = "windows" ; then
3350	if test "${SHARED_BUILD}" = "1" ; then
3351	    # We force the unresolved linking of symbols that are really in
3352	    # the private libraries of Tcl and Tk.
3353	    if test x"${TK_BIN_DIR}" != x ; then
3354		SHLIB_LD_LIBS="${SHLIB_LD_LIBS} \"`${CYGPATH} ${TK_BIN_DIR}/${TK_STUB_LIB_FILE}`\""
3355	    fi
3356	    SHLIB_LD_LIBS="${SHLIB_LD_LIBS} \"`${CYGPATH} ${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}`\""
3357	    if test "$GCC" = "yes"; then
3358		SHLIB_LD_LIBS="${SHLIB_LD_LIBS} -static-libgcc"
3359	    fi
3360	    eval eval "PKG_LIB_FILE=${PACKAGE_NAME}${SHARED_LIB_SUFFIX}"
3361	else
3362	    eval eval "PKG_LIB_FILE=${PACKAGE_NAME}${UNSHARED_LIB_SUFFIX}"
3363	    if test "$GCC" = "yes"; then
3364		PKG_LIB_FILE=lib${PKG_LIB_FILE}
3365	    fi
3366	fi
3367	# Some packages build their own stubs libraries
3368	eval eval "PKG_STUB_LIB_FILE=${PACKAGE_NAME}stub${UNSHARED_LIB_SUFFIX}"
3369	if test "$GCC" = "yes"; then
3370	    PKG_STUB_LIB_FILE=lib${PKG_STUB_LIB_FILE}
3371	fi
3372	# These aren't needed on Windows (either MSVC or gcc)
3373	RANLIB=:
3374	RANLIB_STUB=:
3375    else
3376	RANLIB_STUB="${RANLIB}"
3377	if test "${SHARED_BUILD}" = "1" ; then
3378	    SHLIB_LD_LIBS="${SHLIB_LD_LIBS} ${TCL_STUB_LIB_SPEC}"
3379	    if test x"${TK_BIN_DIR}" != x ; then
3380		SHLIB_LD_LIBS="${SHLIB_LD_LIBS} ${TK_STUB_LIB_SPEC}"
3381	    fi
3382	    eval eval "PKG_LIB_FILE=lib${PACKAGE_NAME}${SHARED_LIB_SUFFIX}"
3383	    RANLIB=:
3384	else
3385	    eval eval "PKG_LIB_FILE=lib${PACKAGE_NAME}${UNSHARED_LIB_SUFFIX}"
3386	fi
3387	# Some packages build their own stubs libraries
3388	eval eval "PKG_STUB_LIB_FILE=lib${PACKAGE_NAME}stub${UNSHARED_LIB_SUFFIX}"
3389    fi
3390
3391    # These are escaped so that only CFLAGS is picked up at configure time.
3392    # The other values will be substituted at make time.
3393    CFLAGS="${CFLAGS} \${CFLAGS_DEFAULT} \${CFLAGS_WARNING}"
3394    if test "${SHARED_BUILD}" = "1" ; then
3395	CFLAGS="${CFLAGS} \${SHLIB_CFLAGS}"
3396    fi
3397
3398    AC_SUBST(MAKE_LIB)
3399    AC_SUBST(MAKE_SHARED_LIB)
3400    AC_SUBST(MAKE_STATIC_LIB)
3401    AC_SUBST(MAKE_STUB_LIB)
3402    AC_SUBST(RANLIB_STUB)
3403    AC_SUBST(VC_MANIFEST_EMBED_DLL)
3404    AC_SUBST(VC_MANIFEST_EMBED_EXE)
3405])
3406
3407#------------------------------------------------------------------------
3408# TEA_LIB_SPEC --
3409#
3410#	Compute the name of an existing object library located in libdir
3411#	from the given base name and produce the appropriate linker flags.
3412#
3413# Arguments:
3414#	basename	The base name of the library without version
3415#			numbers, extensions, or "lib" prefixes.
3416#	extra_dir	Extra directory in which to search for the
3417#			library.  This location is used first, then
3418#			$prefix/$exec-prefix, then some defaults.
3419#
3420# Requires:
3421#	TEA_INIT and TEA_PREFIX must be called first.
3422#
3423# Results:
3424#
3425#	Defines the following vars:
3426#		${basename}_LIB_NAME	The computed library name.
3427#		${basename}_LIB_SPEC	The computed linker flags.
3428#------------------------------------------------------------------------
3429
3430AC_DEFUN([TEA_LIB_SPEC], [
3431    AC_MSG_CHECKING([for $1 library])
3432
3433    # Look in exec-prefix for the library (defined by TEA_PREFIX).
3434
3435    tea_lib_name_dir="${exec_prefix}/lib"
3436
3437    # Or in a user-specified location.
3438
3439    if test x"$2" != x ; then
3440	tea_extra_lib_dir=$2
3441    else
3442	tea_extra_lib_dir=NONE
3443    fi
3444
3445    for i in \
3446	    `ls -dr ${tea_extra_lib_dir}/$1[[0-9]]*.lib 2>/dev/null ` \
3447	    `ls -dr ${tea_extra_lib_dir}/lib$1[[0-9]]* 2>/dev/null ` \
3448	    `ls -dr ${tea_lib_name_dir}/$1[[0-9]]*.lib 2>/dev/null ` \
3449	    `ls -dr ${tea_lib_name_dir}/lib$1[[0-9]]* 2>/dev/null ` \
3450	    `ls -dr /usr/lib/$1[[0-9]]*.lib 2>/dev/null ` \
3451	    `ls -dr /usr/lib/lib$1[[0-9]]* 2>/dev/null ` \
3452	    `ls -dr /usr/lib64/$1[[0-9]]*.lib 2>/dev/null ` \
3453	    `ls -dr /usr/lib64/lib$1[[0-9]]* 2>/dev/null ` \
3454	    `ls -dr /usr/local/lib/$1[[0-9]]*.lib 2>/dev/null ` \
3455	    `ls -dr /usr/local/lib/lib$1[[0-9]]* 2>/dev/null ` ; do
3456	if test -f "$i" ; then
3457	    tea_lib_name_dir=`dirname $i`
3458	    $1_LIB_NAME=`basename $i`
3459	    $1_LIB_PATH_NAME=$i
3460	    break
3461	fi
3462    done
3463
3464    if test "${TEA_PLATFORM}" = "windows"; then
3465	$1_LIB_SPEC=\"`${CYGPATH} ${$1_LIB_PATH_NAME} 2>/dev/null`\"
3466    else
3467	# Strip off the leading "lib" and trailing ".a" or ".so"
3468
3469	tea_lib_name_lib=`echo ${$1_LIB_NAME}|sed -e 's/^lib//' -e 's/\.[[^.]]*$//' -e 's/\.so.*//'`
3470	$1_LIB_SPEC="-L${tea_lib_name_dir} -l${tea_lib_name_lib}"
3471    fi
3472
3473    if test "x${$1_LIB_NAME}" = x ; then
3474	AC_MSG_ERROR([not found])
3475    else
3476	AC_MSG_RESULT([${$1_LIB_SPEC}])
3477    fi
3478])
3479
3480#------------------------------------------------------------------------
3481# TEA_PRIVATE_TCL_HEADERS --
3482#
3483#	Locate the private Tcl include files
3484#
3485# Arguments:
3486#
3487#	Requires:
3488#		TCL_SRC_DIR	Assumes that TEA_LOAD_TCLCONFIG has
3489#				already been called.
3490#
3491# Results:
3492#
3493#	Substitutes the following vars:
3494#		TCL_TOP_DIR_NATIVE
3495#		TCL_INCLUDES
3496#------------------------------------------------------------------------
3497
3498AC_DEFUN([TEA_PRIVATE_TCL_HEADERS], [
3499    # Allow for --with-tclinclude to take effect and define ${ac_cv_c_tclh}
3500    AC_REQUIRE([TEA_PUBLIC_TCL_HEADERS])
3501    AC_MSG_CHECKING([for Tcl private include files])
3502
3503    TCL_SRC_DIR_NATIVE=`${CYGPATH} ${TCL_SRC_DIR}`
3504    TCL_TOP_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}\"
3505
3506    # Check to see if tcl<Plat>Port.h isn't already with the public headers
3507    # Don't look for tclInt.h because that resides with tcl.h in the core
3508    # sources, but the <plat>Port headers are in a different directory
3509    if test "${TEA_PLATFORM}" = "windows" -a \
3510	-f "${ac_cv_c_tclh}/tclWinPort.h"; then
3511	result="private headers found with public headers"
3512    elif test "${TEA_PLATFORM}" = "unix" -a \
3513	-f "${ac_cv_c_tclh}/tclUnixPort.h"; then
3514	result="private headers found with public headers"
3515    else
3516	TCL_GENERIC_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}/generic\"
3517	if test "${TEA_PLATFORM}" = "windows"; then
3518	    TCL_PLATFORM_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}/win\"
3519	else
3520	    TCL_PLATFORM_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}/unix\"
3521	fi
3522	# Overwrite the previous TCL_INCLUDES as this should capture both
3523	# public and private headers in the same set.
3524	# We want to ensure these are substituted so as not to require
3525	# any *_NATIVE vars be defined in the Makefile
3526	TCL_INCLUDES="-I${TCL_GENERIC_DIR_NATIVE} -I${TCL_PLATFORM_DIR_NATIVE}"
3527	if test "`uname -s`" = "Darwin"; then
3528            # If Tcl was built as a framework, attempt to use
3529            # the framework's Headers and PrivateHeaders directories
3530            case ${TCL_DEFS} in
3531	    	*TCL_FRAMEWORK*)
3532		    if test -d "${TCL_BIN_DIR}/Headers" -a \
3533			    -d "${TCL_BIN_DIR}/PrivateHeaders"; then
3534			TCL_INCLUDES="-I\"${TCL_BIN_DIR}/Headers\" -I\"${TCL_BIN_DIR}/PrivateHeaders\" ${TCL_INCLUDES}"
3535		    else
3536			TCL_INCLUDES="${TCL_INCLUDES} ${TCL_INCLUDE_SPEC} `echo "${TCL_INCLUDE_SPEC}" | sed -e 's/Headers/PrivateHeaders/'`"
3537		    fi
3538	            ;;
3539	    esac
3540	    result="Using ${TCL_INCLUDES}"
3541	else
3542	    if test ! -f "${TCL_SRC_DIR}/generic/tclInt.h" ; then
3543		AC_MSG_ERROR([Cannot find private header tclInt.h in ${TCL_SRC_DIR}])
3544	    fi
3545	    result="Using srcdir found in tclConfig.sh: ${TCL_SRC_DIR}"
3546	fi
3547    fi
3548
3549    AC_SUBST(TCL_TOP_DIR_NATIVE)
3550
3551    AC_SUBST(TCL_INCLUDES)
3552    AC_MSG_RESULT([${result}])
3553])
3554
3555#------------------------------------------------------------------------
3556# TEA_PUBLIC_TCL_HEADERS --
3557#
3558#	Locate the installed public Tcl header files
3559#
3560# Arguments:
3561#	None.
3562#
3563# Requires:
3564#	CYGPATH must be set
3565#
3566# Results:
3567#
3568#	Adds a --with-tclinclude switch to configure.
3569#	Result is cached.
3570#
3571#	Substitutes the following vars:
3572#		TCL_INCLUDES
3573#------------------------------------------------------------------------
3574
3575AC_DEFUN([TEA_PUBLIC_TCL_HEADERS], [
3576    AC_MSG_CHECKING([for Tcl public headers])
3577
3578    AC_ARG_WITH(tclinclude, [  --with-tclinclude       directory containing the public Tcl header files], with_tclinclude=${withval})
3579
3580    AC_CACHE_VAL(ac_cv_c_tclh, [
3581	# Use the value from --with-tclinclude, if it was given
3582
3583	if test x"${with_tclinclude}" != x ; then
3584	    if test -f "${with_tclinclude}/tcl.h" ; then
3585		ac_cv_c_tclh=${with_tclinclude}
3586	    else
3587		AC_MSG_ERROR([${with_tclinclude} directory does not contain tcl.h])
3588	    fi
3589	else
3590	    list=""
3591	    if test "`uname -s`" = "Darwin"; then
3592		# If Tcl was built as a framework, attempt to use
3593		# the framework's Headers directory
3594		case ${TCL_DEFS} in
3595		    *TCL_FRAMEWORK*)
3596			list="`ls -d ${TCL_BIN_DIR}/Headers 2>/dev/null`"
3597			;;
3598		esac
3599	    fi
3600
3601	    # Look in the source dir only if Tcl is not installed,
3602	    # and in that situation, look there before installed locations.
3603	    if test -f "${TCL_BIN_DIR}/Makefile" ; then
3604		list="$list `ls -d ${TCL_SRC_DIR}/generic 2>/dev/null`"
3605	    fi
3606
3607	    # Check order: pkg --prefix location, Tcl's --prefix location,
3608	    # relative to directory of tclConfig.sh.
3609
3610	    eval "temp_includedir=${includedir}"
3611	    list="$list \
3612		`ls -d ${temp_includedir}        2>/dev/null` \
3613		`ls -d ${TCL_PREFIX}/include     2>/dev/null` \
3614		`ls -d ${TCL_BIN_DIR}/../include 2>/dev/null`"
3615	    if test "${TEA_PLATFORM}" != "windows" -o "$GCC" = "yes"; then
3616		list="$list /usr/local/include /usr/include"
3617		if test x"${TCL_INCLUDE_SPEC}" != x ; then
3618		    d=`echo "${TCL_INCLUDE_SPEC}" | sed -e 's/^-I//'`
3619		    list="$list `ls -d ${d} 2>/dev/null`"
3620		fi
3621	    fi
3622	    for i in $list ; do
3623		if test -f "$i/tcl.h" ; then
3624		    ac_cv_c_tclh=$i
3625		    break
3626		fi
3627	    done
3628	fi
3629    ])
3630
3631    # Print a message based on how we determined the include path
3632
3633    if test x"${ac_cv_c_tclh}" = x ; then
3634	AC_MSG_ERROR([tcl.h not found.  Please specify its location with --with-tclinclude])
3635    else
3636	AC_MSG_RESULT([${ac_cv_c_tclh}])
3637    fi
3638
3639    # Convert to a native path and substitute into the output files.
3640
3641    INCLUDE_DIR_NATIVE=`${CYGPATH} ${ac_cv_c_tclh}`
3642
3643    TCL_INCLUDES=-I\"${INCLUDE_DIR_NATIVE}\"
3644
3645    AC_SUBST(TCL_INCLUDES)
3646])
3647
3648#------------------------------------------------------------------------
3649# TEA_PRIVATE_TK_HEADERS --
3650#
3651#	Locate the private Tk include files
3652#
3653# Arguments:
3654#
3655#	Requires:
3656#		TK_SRC_DIR	Assumes that TEA_LOAD_TKCONFIG has
3657#				 already been called.
3658#
3659# Results:
3660#
3661#	Substitutes the following vars:
3662#		TK_INCLUDES
3663#------------------------------------------------------------------------
3664
3665AC_DEFUN([TEA_PRIVATE_TK_HEADERS], [
3666    # Allow for --with-tkinclude to take effect and define ${ac_cv_c_tkh}
3667    AC_REQUIRE([TEA_PUBLIC_TK_HEADERS])
3668    AC_MSG_CHECKING([for Tk private include files])
3669
3670    TK_SRC_DIR_NATIVE=`${CYGPATH} ${TK_SRC_DIR}`
3671    TK_TOP_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}\"
3672
3673    # Check to see if tk<Plat>Port.h isn't already with the public headers
3674    # Don't look for tkInt.h because that resides with tk.h in the core
3675    # sources, but the <plat>Port headers are in a different directory
3676    if test "${TEA_PLATFORM}" = "windows" -a \
3677	-f "${ac_cv_c_tkh}/tkWinPort.h"; then
3678	result="private headers found with public headers"
3679    elif test "${TEA_PLATFORM}" = "unix" -a \
3680	-f "${ac_cv_c_tkh}/tkUnixPort.h"; then
3681	result="private headers found with public headers"
3682    else
3683	TK_GENERIC_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}/generic\"
3684	TK_XLIB_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}/xlib\"
3685	if test "${TEA_PLATFORM}" = "windows"; then
3686	    TK_PLATFORM_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}/win\"
3687	else
3688	    TK_PLATFORM_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}/unix\"
3689	fi
3690	# Overwrite the previous TK_INCLUDES as this should capture both
3691	# public and private headers in the same set.
3692	# We want to ensure these are substituted so as not to require
3693	# any *_NATIVE vars be defined in the Makefile
3694	TK_INCLUDES="-I${TK_GENERIC_DIR_NATIVE} -I${TK_PLATFORM_DIR_NATIVE}"
3695	# Detect and add ttk subdir
3696	if test -d "${TK_SRC_DIR}/generic/ttk"; then
3697	   TK_INCLUDES="${TK_INCLUDES} -I\"${TK_SRC_DIR_NATIVE}/generic/ttk\""
3698	fi
3699	if test "${TEA_WINDOWINGSYSTEM}" != "x11"; then
3700	   TK_INCLUDES="${TK_INCLUDES} -I\"${TK_XLIB_DIR_NATIVE}\""
3701	fi
3702	if test "${TEA_WINDOWINGSYSTEM}" = "aqua"; then
3703	   TK_INCLUDES="${TK_INCLUDES} -I\"${TK_SRC_DIR_NATIVE}/macosx\""
3704	fi
3705	if test "`uname -s`" = "Darwin"; then
3706	    # If Tk was built as a framework, attempt to use
3707	    # the framework's Headers and PrivateHeaders directories
3708	    case ${TK_DEFS} in
3709		*TK_FRAMEWORK*)
3710			if test -d "${TK_BIN_DIR}/Headers" -a \
3711				-d "${TK_BIN_DIR}/PrivateHeaders"; then
3712			    TK_INCLUDES="-I\"${TK_BIN_DIR}/Headers\" -I\"${TK_BIN_DIR}/PrivateHeaders\" ${TK_INCLUDES}"
3713			else
3714			    TK_INCLUDES="${TK_INCLUDES} ${TK_INCLUDE_SPEC} `echo "${TK_INCLUDE_SPEC}" | sed -e 's/Headers/PrivateHeaders/'`"
3715			fi
3716			;;
3717	    esac
3718	    result="Using ${TK_INCLUDES}"
3719	else
3720	    if test ! -f "${TK_SRC_DIR}/generic/tkInt.h" ; then
3721	       AC_MSG_ERROR([Cannot find private header tkInt.h in ${TK_SRC_DIR}])
3722	    fi
3723	    result="Using srcdir found in tkConfig.sh: ${TK_SRC_DIR}"
3724	fi
3725    fi
3726
3727    AC_SUBST(TK_TOP_DIR_NATIVE)
3728    AC_SUBST(TK_XLIB_DIR_NATIVE)
3729
3730    AC_SUBST(TK_INCLUDES)
3731    AC_MSG_RESULT([${result}])
3732])
3733
3734#------------------------------------------------------------------------
3735# TEA_PUBLIC_TK_HEADERS --
3736#
3737#	Locate the installed public Tk header files
3738#
3739# Arguments:
3740#	None.
3741#
3742# Requires:
3743#	CYGPATH must be set
3744#
3745# Results:
3746#
3747#	Adds a --with-tkinclude switch to configure.
3748#	Result is cached.
3749#
3750#	Substitutes the following vars:
3751#		TK_INCLUDES
3752#------------------------------------------------------------------------
3753
3754AC_DEFUN([TEA_PUBLIC_TK_HEADERS], [
3755    AC_MSG_CHECKING([for Tk public headers])
3756
3757    AC_ARG_WITH(tkinclude, [  --with-tkinclude        directory containing the public Tk header files], with_tkinclude=${withval})
3758
3759    AC_CACHE_VAL(ac_cv_c_tkh, [
3760	# Use the value from --with-tkinclude, if it was given
3761
3762	if test x"${with_tkinclude}" != x ; then
3763	    if test -f "${with_tkinclude}/tk.h" ; then
3764		ac_cv_c_tkh=${with_tkinclude}
3765	    else
3766		AC_MSG_ERROR([${with_tkinclude} directory does not contain tk.h])
3767	    fi
3768	else
3769	    list=""
3770	    if test "`uname -s`" = "Darwin"; then
3771		# If Tk was built as a framework, attempt to use
3772		# the framework's Headers directory.
3773		case ${TK_DEFS} in
3774		    *TK_FRAMEWORK*)
3775			list="`ls -d ${TK_BIN_DIR}/Headers 2>/dev/null`"
3776			;;
3777		esac
3778	    fi
3779
3780	    # Look in the source dir only if Tk is not installed,
3781	    # and in that situation, look there before installed locations.
3782	    if test -f "${TK_BIN_DIR}/Makefile" ; then
3783		list="$list `ls -d ${TK_SRC_DIR}/generic 2>/dev/null`"
3784	    fi
3785
3786	    # Check order: pkg --prefix location, Tk's --prefix location,
3787	    # relative to directory of tkConfig.sh, Tcl's --prefix location,
3788	    # relative to directory of tclConfig.sh.
3789
3790	    eval "temp_includedir=${includedir}"
3791	    list="$list \
3792		`ls -d ${temp_includedir}        2>/dev/null` \
3793		`ls -d ${TK_PREFIX}/include      2>/dev/null` \
3794		`ls -d ${TK_BIN_DIR}/../include  2>/dev/null` \
3795		`ls -d ${TCL_PREFIX}/include     2>/dev/null` \
3796		`ls -d ${TCL_BIN_DIR}/../include 2>/dev/null`"
3797	    if test "${TEA_PLATFORM}" != "windows" -o "$GCC" = "yes"; then
3798		list="$list /usr/local/include /usr/include"
3799		if test x"${TK_INCLUDE_SPEC}" != x ; then
3800		    d=`echo "${TK_INCLUDE_SPEC}" | sed -e 's/^-I//'`
3801		    list="$list `ls -d ${d} 2>/dev/null`"
3802		fi
3803	    fi
3804	    for i in $list ; do
3805		if test -f "$i/tk.h" ; then
3806		    ac_cv_c_tkh=$i
3807		    break
3808		fi
3809	    done
3810	fi
3811    ])
3812
3813    # Print a message based on how we determined the include path
3814
3815    if test x"${ac_cv_c_tkh}" = x ; then
3816	AC_MSG_ERROR([tk.h not found.  Please specify its location with --with-tkinclude])
3817    else
3818	AC_MSG_RESULT([${ac_cv_c_tkh}])
3819    fi
3820
3821    # Convert to a native path and substitute into the output files.
3822
3823    INCLUDE_DIR_NATIVE=`${CYGPATH} ${ac_cv_c_tkh}`
3824
3825    TK_INCLUDES=-I\"${INCLUDE_DIR_NATIVE}\"
3826
3827    AC_SUBST(TK_INCLUDES)
3828
3829    if test "${TEA_WINDOWINGSYSTEM}" != "x11"; then
3830	# On Windows and Aqua, we need the X compat headers
3831	AC_MSG_CHECKING([for X11 header files])
3832	if test ! -r "${INCLUDE_DIR_NATIVE}/X11/Xlib.h"; then
3833	    INCLUDE_DIR_NATIVE="`${CYGPATH} ${TK_SRC_DIR}/xlib`"
3834	    TK_XINCLUDES=-I\"${INCLUDE_DIR_NATIVE}\"
3835	    AC_SUBST(TK_XINCLUDES)
3836	fi
3837	AC_MSG_RESULT([${INCLUDE_DIR_NATIVE}])
3838    fi
3839])
3840
3841#------------------------------------------------------------------------
3842# TEA_PATH_CONFIG --
3843#
3844#	Locate the ${1}Config.sh file and perform a sanity check on
3845#	the ${1} compile flags.  These are used by packages like
3846#	[incr Tk] that load *Config.sh files from more than Tcl and Tk.
3847#
3848# Arguments:
3849#	none
3850#
3851# Results:
3852#
3853#	Adds the following arguments to configure:
3854#		--with-$1=...
3855#
3856#	Defines the following vars:
3857#		$1_BIN_DIR	Full path to the directory containing
3858#				the $1Config.sh file
3859#------------------------------------------------------------------------
3860
3861AC_DEFUN([TEA_PATH_CONFIG], [
3862    #
3863    # Ok, lets find the $1 configuration
3864    # First, look for one uninstalled.
3865    # the alternative search directory is invoked by --with-$1
3866    #
3867
3868    if test x"${no_$1}" = x ; then
3869	# we reset no_$1 in case something fails here
3870	no_$1=true
3871	AC_ARG_WITH($1, [  --with-$1              directory containing $1 configuration ($1Config.sh)], with_$1config=${withval})
3872	AC_MSG_CHECKING([for $1 configuration])
3873	AC_CACHE_VAL(ac_cv_c_$1config,[
3874
3875	    # First check to see if --with-$1 was specified.
3876	    if test x"${with_$1config}" != x ; then
3877		case ${with_$1config} in
3878		    */$1Config.sh )
3879			if test -f ${with_$1config}; then
3880			    AC_MSG_WARN([--with-$1 argument should refer to directory containing $1Config.sh, not to $1Config.sh itself])
3881			    with_$1config=`echo ${with_$1config} | sed 's!/$1Config\.sh$!!'`
3882			fi;;
3883		esac
3884		if test -f "${with_$1config}/$1Config.sh" ; then
3885		    ac_cv_c_$1config=`(cd ${with_$1config}; pwd)`
3886		else
3887		    AC_MSG_ERROR([${with_$1config} directory doesn't contain $1Config.sh])
3888		fi
3889	    fi
3890
3891	    # then check for a private $1 installation
3892	    if test x"${ac_cv_c_$1config}" = x ; then
3893		for i in \
3894			../$1 \
3895			`ls -dr ../$1*[[0-9]].[[0-9]]*.[[0-9]]* 2>/dev/null` \
3896			`ls -dr ../$1*[[0-9]].[[0-9]][[0-9]] 2>/dev/null` \
3897			`ls -dr ../$1*[[0-9]].[[0-9]] 2>/dev/null` \
3898			`ls -dr ../$1*[[0-9]].[[0-9]]* 2>/dev/null` \
3899			../../$1 \
3900			`ls -dr ../../$1*[[0-9]].[[0-9]]*.[[0-9]]* 2>/dev/null` \
3901			`ls -dr ../../$1*[[0-9]].[[0-9]][[0-9]] 2>/dev/null` \
3902			`ls -dr ../../$1*[[0-9]].[[0-9]] 2>/dev/null` \
3903			`ls -dr ../../$1*[[0-9]].[[0-9]]* 2>/dev/null` \
3904			../../../$1 \
3905			`ls -dr ../../../$1*[[0-9]].[[0-9]]*.[[0-9]]* 2>/dev/null` \
3906			`ls -dr ../../../$1*[[0-9]].[[0-9]][[0-9]] 2>/dev/null` \
3907			`ls -dr ../../../$1*[[0-9]].[[0-9]] 2>/dev/null` \
3908			`ls -dr ../../../$1*[[0-9]].[[0-9]]* 2>/dev/null` \
3909			${srcdir}/../$1 \
3910			`ls -dr ${srcdir}/../$1*[[0-9]].[[0-9]]*.[[0-9]]* 2>/dev/null` \
3911			`ls -dr ${srcdir}/../$1*[[0-9]].[[0-9]][[0-9]] 2>/dev/null` \
3912			`ls -dr ${srcdir}/../$1*[[0-9]].[[0-9]] 2>/dev/null` \
3913			`ls -dr ${srcdir}/../$1*[[0-9]].[[0-9]]* 2>/dev/null` \
3914			; do
3915		    if test -f "$i/$1Config.sh" ; then
3916			ac_cv_c_$1config=`(cd $i; pwd)`
3917			break
3918		    fi
3919		    if test -f "$i/unix/$1Config.sh" ; then
3920			ac_cv_c_$1config=`(cd $i/unix; pwd)`
3921			break
3922		    fi
3923		done
3924	    fi
3925
3926	    # check in a few common install locations
3927	    if test x"${ac_cv_c_$1config}" = x ; then
3928		for i in `ls -d ${libdir} 2>/dev/null` \
3929			`ls -d ${exec_prefix}/lib 2>/dev/null` \
3930			`ls -d ${prefix}/lib 2>/dev/null` \
3931			`ls -d /usr/local/lib 2>/dev/null` \
3932			`ls -d /usr/contrib/lib 2>/dev/null` \
3933			`ls -d /usr/lib 2>/dev/null` \
3934			`ls -d /usr/lib64 2>/dev/null` \
3935			; do
3936		    if test -f "$i/$1Config.sh" ; then
3937			ac_cv_c_$1config=`(cd $i; pwd)`
3938			break
3939		    fi
3940		done
3941	    fi
3942	])
3943
3944	if test x"${ac_cv_c_$1config}" = x ; then
3945	    $1_BIN_DIR="# no $1 configs found"
3946	    AC_MSG_WARN([Cannot find $1 configuration definitions])
3947	    exit 0
3948	else
3949	    no_$1=
3950	    $1_BIN_DIR=${ac_cv_c_$1config}
3951	    AC_MSG_RESULT([found $$1_BIN_DIR/$1Config.sh])
3952	fi
3953    fi
3954])
3955
3956#------------------------------------------------------------------------
3957# TEA_LOAD_CONFIG --
3958#
3959#	Load the $1Config.sh file
3960#
3961# Arguments:
3962#
3963#	Requires the following vars to be set:
3964#		$1_BIN_DIR
3965#
3966# Results:
3967#
3968#	Substitutes the following vars:
3969#		$1_SRC_DIR
3970#		$1_LIB_FILE
3971#		$1_LIB_SPEC
3972#------------------------------------------------------------------------
3973
3974AC_DEFUN([TEA_LOAD_CONFIG], [
3975    AC_MSG_CHECKING([for existence of ${$1_BIN_DIR}/$1Config.sh])
3976
3977    if test -f "${$1_BIN_DIR}/$1Config.sh" ; then
3978        AC_MSG_RESULT([loading])
3979	. "${$1_BIN_DIR}/$1Config.sh"
3980    else
3981        AC_MSG_RESULT([file not found])
3982    fi
3983
3984    #
3985    # If the $1_BIN_DIR is the build directory (not the install directory),
3986    # then set the common variable name to the value of the build variables.
3987    # For example, the variable $1_LIB_SPEC will be set to the value
3988    # of $1_BUILD_LIB_SPEC. An extension should make use of $1_LIB_SPEC
3989    # instead of $1_BUILD_LIB_SPEC since it will work with both an
3990    # installed and uninstalled version of Tcl.
3991    #
3992
3993    if test -f "${$1_BIN_DIR}/Makefile" ; then
3994	AC_MSG_WARN([Found Makefile - using build library specs for $1])
3995        $1_LIB_SPEC=${$1_BUILD_LIB_SPEC}
3996        $1_STUB_LIB_SPEC=${$1_BUILD_STUB_LIB_SPEC}
3997        $1_STUB_LIB_PATH=${$1_BUILD_STUB_LIB_PATH}
3998        $1_INCLUDE_SPEC=${$1_BUILD_INCLUDE_SPEC}
3999        $1_LIBRARY_PATH=${$1_LIBRARY_PATH}
4000    fi
4001
4002    AC_SUBST($1_VERSION)
4003    AC_SUBST($1_BIN_DIR)
4004    AC_SUBST($1_SRC_DIR)
4005
4006    AC_SUBST($1_LIB_FILE)
4007    AC_SUBST($1_LIB_SPEC)
4008
4009    AC_SUBST($1_STUB_LIB_FILE)
4010    AC_SUBST($1_STUB_LIB_SPEC)
4011    AC_SUBST($1_STUB_LIB_PATH)
4012
4013    # Allow the caller to prevent this auto-check by specifying any 2nd arg
4014    AS_IF([test "x$2" = x], [
4015	# Check both upper and lower-case variants
4016	# If a dev wanted non-stubs libs, this function could take an option
4017	# to not use _STUB in the paths below
4018	AS_IF([test "x${$1_STUB_LIB_SPEC}" = x],
4019	    [TEA_LOAD_CONFIG_LIB(translit($1,[a-z],[A-Z])_STUB)],
4020	    [TEA_LOAD_CONFIG_LIB($1_STUB)])
4021    ])
4022])
4023
4024#------------------------------------------------------------------------
4025# TEA_LOAD_CONFIG_LIB --
4026#
4027#	Helper function to load correct library from another extension's
4028#	${PACKAGE}Config.sh.
4029#
4030# Results:
4031#	Adds to LIBS the appropriate extension library
4032#------------------------------------------------------------------------
4033AC_DEFUN([TEA_LOAD_CONFIG_LIB], [
4034    AC_MSG_CHECKING([For $1 library for LIBS])
4035    # This simplifies the use of stub libraries by automatically adding
4036    # the stub lib to your path.  Normally this would add to SHLIB_LD_LIBS,
4037    # but this is called before CONFIG_CFLAGS.  More importantly, this adds
4038    # to PKG_LIBS, which becomes LIBS, and that is only used by SHLIB_LD.
4039    if test "x${$1_LIB_SPEC}" != "x" ; then
4040	if test "${TEA_PLATFORM}" = "windows" -a "$GCC" != "yes" ; then
4041	    TEA_ADD_LIBS([\"`${CYGPATH} ${$1_LIB_PATH}`\"])
4042	    AC_MSG_RESULT([using $1_LIB_PATH ${$1_LIB_PATH}])
4043	else
4044	    TEA_ADD_LIBS([${$1_LIB_SPEC}])
4045	    AC_MSG_RESULT([using $1_LIB_SPEC ${$1_LIB_SPEC}])
4046	fi
4047    else
4048	AC_MSG_RESULT([file not found])
4049    fi
4050])
4051
4052#------------------------------------------------------------------------
4053# TEA_EXPORT_CONFIG --
4054#
4055#	Define the data to insert into the ${PACKAGE}Config.sh file
4056#
4057# Arguments:
4058#
4059#	Requires the following vars to be set:
4060#		$1
4061#
4062# Results:
4063#	Substitutes the following vars:
4064#------------------------------------------------------------------------
4065
4066AC_DEFUN([TEA_EXPORT_CONFIG], [
4067    #--------------------------------------------------------------------
4068    # These are for $1Config.sh
4069    #--------------------------------------------------------------------
4070
4071    # pkglibdir must be a fully qualified path and (not ${exec_prefix}/lib)
4072    eval pkglibdir="[$]{libdir}/$1${PACKAGE_VERSION}"
4073    if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
4074	eval $1_LIB_FLAG="-l$1${PACKAGE_VERSION}${DBGX}"
4075	eval $1_STUB_LIB_FLAG="-l$1stub${PACKAGE_VERSION}${DBGX}"
4076    else
4077	eval $1_LIB_FLAG="-l$1`echo ${PACKAGE_VERSION} | tr -d .`${DBGX}"
4078	eval $1_STUB_LIB_FLAG="-l$1stub`echo ${PACKAGE_VERSION} | tr -d .`${DBGX}"
4079    fi
4080    $1_BUILD_LIB_SPEC="-L`pwd` ${$1_LIB_FLAG}"
4081    $1_LIB_SPEC="-L${pkglibdir} ${$1_LIB_FLAG}"
4082    $1_BUILD_STUB_LIB_SPEC="-L`pwd` [$]{$1_STUB_LIB_FLAG}"
4083    $1_STUB_LIB_SPEC="-L${pkglibdir} [$]{$1_STUB_LIB_FLAG}"
4084    $1_BUILD_STUB_LIB_PATH="`pwd`/[$]{PKG_STUB_LIB_FILE}"
4085    $1_STUB_LIB_PATH="${pkglibdir}/[$]{PKG_STUB_LIB_FILE}"
4086
4087    AC_SUBST($1_BUILD_LIB_SPEC)
4088    AC_SUBST($1_LIB_SPEC)
4089    AC_SUBST($1_BUILD_STUB_LIB_SPEC)
4090    AC_SUBST($1_STUB_LIB_SPEC)
4091    AC_SUBST($1_BUILD_STUB_LIB_PATH)
4092    AC_SUBST($1_STUB_LIB_PATH)
4093
4094    AC_SUBST(MAJOR_VERSION)
4095    AC_SUBST(MINOR_VERSION)
4096    AC_SUBST(PATCHLEVEL)
4097])
4098
4099
4100#------------------------------------------------------------------------
4101# TEA_PATH_CELIB --
4102#
4103#	Locate Keuchel's celib emulation layer for targeting Win/CE
4104#
4105# Arguments:
4106#	none
4107#
4108# Results:
4109#
4110#	Adds the following arguments to configure:
4111#		--with-celib=...
4112#
4113#	Defines the following vars:
4114#		CELIB_DIR	Full path to the directory containing
4115#				the include and platform lib files
4116#------------------------------------------------------------------------
4117
4118AC_DEFUN([TEA_PATH_CELIB], [
4119    # First, look for one uninstalled.
4120    # the alternative search directory is invoked by --with-celib
4121
4122    if test x"${no_celib}" = x ; then
4123	# we reset no_celib in case something fails here
4124	no_celib=true
4125	AC_ARG_WITH(celib,[  --with-celib=DIR        use Windows/CE support library from DIR], with_celibconfig=${withval})
4126	AC_MSG_CHECKING([for Windows/CE celib directory])
4127	AC_CACHE_VAL(ac_cv_c_celibconfig,[
4128	    # First check to see if --with-celibconfig was specified.
4129	    if test x"${with_celibconfig}" != x ; then
4130		if test -d "${with_celibconfig}/inc" ; then
4131		    ac_cv_c_celibconfig=`(cd ${with_celibconfig}; pwd)`
4132		else
4133		    AC_MSG_ERROR([${with_celibconfig} directory doesn't contain inc directory])
4134		fi
4135	    fi
4136
4137	    # then check for a celib library
4138	    if test x"${ac_cv_c_celibconfig}" = x ; then
4139		for i in \
4140			../celib-palm-3.0 \
4141			../celib \
4142			../../celib-palm-3.0 \
4143			../../celib \
4144			`ls -dr ../celib-*3.[[0-9]]* 2>/dev/null` \
4145			${srcdir}/../celib-palm-3.0 \
4146			${srcdir}/../celib \
4147			`ls -dr ${srcdir}/../celib-*3.[[0-9]]* 2>/dev/null` \
4148			; do
4149		    if test -d "$i/inc" ; then
4150			ac_cv_c_celibconfig=`(cd $i; pwd)`
4151			break
4152		    fi
4153		done
4154	    fi
4155	])
4156	if test x"${ac_cv_c_celibconfig}" = x ; then
4157	    AC_MSG_ERROR([Cannot find celib support library directory])
4158	else
4159	    no_celib=
4160	    CELIB_DIR=${ac_cv_c_celibconfig}
4161	    CELIB_DIR=`echo "$CELIB_DIR" | sed -e 's!\\\!/!g'`
4162	    AC_MSG_RESULT([found $CELIB_DIR])
4163	fi
4164    fi
4165])
4166# Local Variables:
4167# mode: autoconf
4168# End:
4169