1#------------------------------------------------------------------------
2# SC_PATH_TCLCONFIG --
3#
4#	Locate the tclConfig.sh file and perform a sanity check on
5#	the Tcl compile flags
6#	Currently a no-op for Windows
7#
8# Arguments:
9#	PATCH_LEVEL	The patch level for Tcl if any.
10#
11# Results:
12#
13#	Adds the following arguments to configure:
14#		--with-tcl=...
15#
16#	Sets the following vars:
17#		TCL_BIN_DIR	Full path to the tclConfig.sh file
18#------------------------------------------------------------------------
19
20AC_DEFUN(SC_PATH_TCLCONFIG, [
21    AC_MSG_CHECKING([the location of tclConfig.sh])
22
23    if test -d ../../tcl8.4$1/win;  then
24	TCL_BIN_DIR_DEFAULT=../../tcl8.4$1/win
25    elif test -d ../../tcl8.4/win;  then
26	TCL_BIN_DIR_DEFAULT=../../tcl8.4/win
27    else
28	TCL_BIN_DIR_DEFAULT=../../tcl/win
29    fi
30
31    AC_ARG_WITH(tcl, [  --with-tcl=DIR          use Tcl 8.4 binaries from DIR],
32	    TCL_BIN_DIR=$withval, TCL_BIN_DIR=`cd $TCL_BIN_DIR_DEFAULT; pwd`)
33    if test ! -d $TCL_BIN_DIR; then
34	AC_MSG_ERROR(Tcl directory $TCL_BIN_DIR does not exist)
35    fi
36    if test ! -f $TCL_BIN_DIR/tclConfig.sh; then
37	AC_MSG_ERROR(There is no tclConfig.sh in $TCL_BIN_DIR:  perhaps you did not specify the Tcl *build* directory (not the toplevel Tcl directory) or you forgot to configure Tcl?)
38    fi
39    AC_MSG_RESULT($TCL_BIN_DIR/tclConfig.sh)
40])
41
42#------------------------------------------------------------------------
43# SC_PATH_TKCONFIG --
44#
45#	Locate the tkConfig.sh file
46#	Currently a no-op for Windows
47#
48# Arguments:
49#	none
50#
51# Results:
52#
53#	Adds the following arguments to configure:
54#		--with-tk=...
55#
56#	Sets the following vars:
57#		TK_BIN_DIR	Full path to the tkConfig.sh file
58#------------------------------------------------------------------------
59
60AC_DEFUN(SC_PATH_TKCONFIG, [
61    AC_MSG_CHECKING([the location of tkConfig.sh])
62
63    if test -d ../../tk8.4$1/win;  then
64	TK_BIN_DIR_DEFAULT=../../tk8.4$1/win
65    elif test -d ../../tk8.4/win;  then
66	TK_BIN_DIR_DEFAULT=../../tk8.4/win
67    else
68	TK_BIN_DIR_DEFAULT=../../tk/win
69    fi
70
71    AC_ARG_WITH(tk, [  --with-tk=DIR          use Tk 8.4 binaries from DIR],
72	    TK_BIN_DIR=$withval, TK_BIN_DIR=`cd $TK_BIN_DIR_DEFAULT; pwd`)
73    if test ! -d $TK_BIN_DIR; then
74	AC_MSG_ERROR(Tk directory $TK_BIN_DIR does not exist)
75    fi
76    if test ! -f $TK_BIN_DIR/tkConfig.sh; then
77	AC_MSG_ERROR(There is no tkConfig.sh in $TK_BIN_DIR:  perhaps you did not specify the Tk *build* directory (not the toplevel Tk directory) or you forgot to configure Tk?)
78    fi
79
80    AC_MSG_RESULT([$TK_BIN_DIR/tkConfig.sh])
81])
82
83#------------------------------------------------------------------------
84# SC_LOAD_TCLCONFIG --
85#
86#	Load the tclConfig.sh file.
87#
88# Arguments:
89#
90#	Requires the following vars to be set:
91#		TCL_BIN_DIR
92#
93# Results:
94#
95#	Subst the following vars:
96#		TCL_BIN_DIR
97#		TCL_SRC_DIR
98#		TCL_LIB_FILE
99#
100#------------------------------------------------------------------------
101
102AC_DEFUN(SC_LOAD_TCLCONFIG, [
103    AC_MSG_CHECKING([for existence of $TCL_BIN_DIR/tclConfig.sh])
104
105    if test -f "$TCL_BIN_DIR/tclConfig.sh" ; then
106        AC_MSG_RESULT([loading])
107	. $TCL_BIN_DIR/tclConfig.sh
108    else
109        AC_MSG_RESULT([file not found])
110    fi
111
112    #
113    # If the TCL_BIN_DIR is the build directory (not the install directory),
114    # then set the common variable name to the value of the build variables.
115    # For example, the variable TCL_LIB_SPEC will be set to the value
116    # of TCL_BUILD_LIB_SPEC. An extension should make use of TCL_LIB_SPEC
117    # instead of TCL_BUILD_LIB_SPEC since it will work with both an
118    # installed and uninstalled version of Tcl.
119    #
120
121    if test -f $TCL_BIN_DIR/Makefile ; then
122        TCL_LIB_SPEC=${TCL_BUILD_LIB_SPEC}
123        TCL_STUB_LIB_SPEC=${TCL_BUILD_STUB_LIB_SPEC}
124        TCL_STUB_LIB_PATH=${TCL_BUILD_STUB_LIB_PATH}
125    fi
126
127    #
128    # eval is required to do the TCL_DBGX substitution
129    #
130
131    eval "TCL_LIB_FILE=\"${TCL_LIB_FILE}\""
132    eval "TCL_LIB_FLAG=\"${TCL_LIB_FLAG}\""
133    eval "TCL_LIB_SPEC=\"${TCL_LIB_SPEC}\""
134
135    eval "TCL_STUB_LIB_FILE=\"${TCL_STUB_LIB_FILE}\""
136    eval "TCL_STUB_LIB_FLAG=\"${TCL_STUB_LIB_FLAG}\""
137    eval "TCL_STUB_LIB_SPEC=\"${TCL_STUB_LIB_SPEC}\""
138
139    AC_SUBST(TCL_VERSION)
140    AC_SUBST(TCL_BIN_DIR)
141    AC_SUBST(TCL_SRC_DIR)
142
143    AC_SUBST(TCL_LIB_FILE)
144    AC_SUBST(TCL_LIB_FLAG)
145    AC_SUBST(TCL_LIB_SPEC)
146
147    AC_SUBST(TCL_STUB_LIB_FILE)
148    AC_SUBST(TCL_STUB_LIB_FLAG)
149    AC_SUBST(TCL_STUB_LIB_SPEC)
150
151    AC_SUBST(TCL_DEFS)
152])
153
154#------------------------------------------------------------------------
155# SC_LOAD_TKCONFIG --
156#
157#	Load the tkConfig.sh file
158#	Currently a no-op for Windows
159#
160# Arguments:
161#
162#	Requires the following vars to be set:
163#		TK_BIN_DIR
164#
165# Results:
166#
167#	Sets the following vars that should be in tkConfig.sh:
168#		TK_BIN_DIR
169#------------------------------------------------------------------------
170
171AC_DEFUN(SC_LOAD_TKCONFIG, [
172    AC_MSG_CHECKING([for existence of $TK_BIN_DIR/tkConfig.sh])
173
174    if test -f "$TK_BIN_DIR/tkConfig.sh" ; then
175        AC_MSG_RESULT([loading])
176	. $TK_BIN_DIR/tkConfig.sh
177    else
178        AC_MSG_RESULT([could not find $TK_BIN_DIR/tkConfig.sh])
179    fi
180
181
182    AC_SUBST(TK_BIN_DIR)
183    AC_SUBST(TK_SRC_DIR)
184    AC_SUBST(TK_LIB_FILE)
185])
186
187#------------------------------------------------------------------------
188# SC_ENABLE_SHARED --
189#
190#	Allows the building of shared libraries
191#
192# Arguments:
193#	none
194#
195# Results:
196#
197#	Adds the following arguments to configure:
198#		--enable-shared=yes|no
199#
200#	Defines the following vars:
201#		STATIC_BUILD	Used for building import/export libraries
202#				on Windows.
203#
204#	Sets the following vars:
205#		SHARED_BUILD	Value of 1 or 0
206#------------------------------------------------------------------------
207
208AC_DEFUN(SC_ENABLE_SHARED, [
209    AC_MSG_CHECKING([how to build libraries])
210    AC_ARG_ENABLE(shared,
211	[  --enable-shared         build and link with shared libraries [--enable-shared]],
212    [tcl_ok=$enableval], [tcl_ok=yes])
213
214    if test "${enable_shared+set}" = set; then
215	enableval="$enable_shared"
216	tcl_ok=$enableval
217    else
218	tcl_ok=yes
219    fi
220
221    if test "$tcl_ok" = "yes" ; then
222	AC_MSG_RESULT([shared])
223	SHARED_BUILD=1
224    else
225	AC_MSG_RESULT([static])
226	SHARED_BUILD=0
227	AC_DEFINE(STATIC_BUILD)
228    fi
229])
230
231#------------------------------------------------------------------------
232# SC_ENABLE_THREADS --
233#
234#	Specify if thread support should be enabled
235#
236# Arguments:
237#	none
238#
239# Results:
240#
241#	Adds the following arguments to configure:
242#		--enable-threads=yes|no
243#
244#	Defines the following vars:
245#		TCL_THREADS
246#------------------------------------------------------------------------
247
248AC_DEFUN(SC_ENABLE_THREADS, [
249    AC_MSG_CHECKING(for building with threads)
250    AC_ARG_ENABLE(threads, [  --enable-threads        build with threads],
251	[tcl_ok=$enableval], [tcl_ok=no])
252
253    if test "$tcl_ok" = "yes"; then
254	AC_MSG_RESULT(yes)
255	TCL_THREADS=1
256	AC_DEFINE(TCL_THREADS)
257	# USE_THREAD_ALLOC tells us to try the special thread-based
258	# allocator that significantly reduces lock contention
259	AC_DEFINE(USE_THREAD_ALLOC)
260    else
261	TCL_THREADS=0
262	AC_MSG_RESULT([no (default)])
263    fi
264    AC_SUBST(TCL_THREADS)
265])
266
267#------------------------------------------------------------------------
268# SC_ENABLE_SYMBOLS --
269#
270#	Specify if debugging symbols should be used
271#	Memory (TCL_MEM_DEBUG) and compile (TCL_COMPILE_DEBUG) debugging
272#	can also be enabled.
273#
274# Arguments:
275#	none
276#
277#	Requires the following vars to be set in the Makefile:
278#		CFLAGS_DEBUG
279#		CFLAGS_OPTIMIZE
280#
281# Results:
282#
283#	Adds the following arguments to configure:
284#		--enable-symbols
285#
286#	Defines the following vars:
287#		CFLAGS_DEFAULT	Sets to $(CFLAGS_DEBUG) if true
288#				Sets to $(CFLAGS_OPTIMIZE) if false
289#		LDFLAGS_DEFAULT	Sets to $(LDFLAGS_DEBUG) if true
290#				Sets to $(LDFLAGS_OPTIMIZE) if false
291#		DBGX		Debug library extension
292#
293#------------------------------------------------------------------------
294
295AC_DEFUN(SC_ENABLE_SYMBOLS, [
296    AC_MSG_CHECKING([for build with symbols])
297    AC_ARG_ENABLE(symbols, [  --enable-symbols        build with debugging symbols [--disable-symbols]],    [tcl_ok=$enableval], [tcl_ok=no])
298# FIXME: Currently, LDFLAGS_DEFAULT is not used, it should work like CFLAGS_DEFAULT.
299    if test "$tcl_ok" = "no"; then
300	CFLAGS_DEFAULT='$(CFLAGS_OPTIMIZE)'
301	LDFLAGS_DEFAULT='$(LDFLAGS_OPTIMIZE)'
302	DBGX=""
303	AC_MSG_RESULT([no])
304    else
305	CFLAGS_DEFAULT='$(CFLAGS_DEBUG)'
306	LDFLAGS_DEFAULT='$(LDFLAGS_DEBUG)'
307	DBGX=g
308	if test "$tcl_ok" = "yes"; then
309	    AC_MSG_RESULT([yes (standard debugging)])
310	fi
311    fi
312    AC_SUBST(CFLAGS_DEFAULT)
313    AC_SUBST(LDFLAGS_DEFAULT)
314
315    if test "$tcl_ok" = "mem" -o "$tcl_ok" = "all"; then
316	AC_DEFINE(TCL_MEM_DEBUG)
317    fi
318
319    if test "$tcl_ok" = "compile" -o "$tcl_ok" = "all"; then
320	AC_DEFINE(TCL_COMPILE_DEBUG)
321	AC_DEFINE(TCL_COMPILE_STATS)
322    fi
323
324    if test "$tcl_ok" != "yes" -a "$tcl_ok" != "no"; then
325	if test "$tcl_ok" = "all"; then
326	    AC_MSG_RESULT([enabled symbols mem compile debugging])
327	else
328	    AC_MSG_RESULT([enabled $tcl_ok debugging])
329	fi
330    fi
331])
332
333#--------------------------------------------------------------------
334# SC_CONFIG_CFLAGS
335#
336#	Try to determine the proper flags to pass to the compiler
337#	for building shared libraries and other such nonsense.
338#
339#	NOTE: The backslashes in quotes below are substituted twice
340#	due to the fact that they are in a macro and then inlined
341#	in the final configure script.
342#
343# Arguments:
344#	none
345#
346# Results:
347#
348#	Can the following vars:
349#		EXTRA_CFLAGS
350#		CFLAGS_DEBUG
351#		CFLAGS_OPTIMIZE
352#		CFLAGS_WARNING
353#		LDFLAGS_DEBUG
354#		LDFLAGS_OPTIMIZE
355#		LDFLAGS_CONSOLE
356#		LDFLAGS_WINDOW
357#		CC_OBJNAME
358#		CC_EXENAME
359#		CYGPATH
360#		STLIB_LD
361#		SHLIB_LD
362#		SHLIB_LD_LIBS
363#		LIBS
364#		AR
365#		RC
366#		RES
367#
368#		MAKE_LIB
369#		MAKE_EXE
370#		MAKE_DLL
371#
372#		LIBSUFFIX
373#		LIBPREFIX
374#		LIBRARIES
375#		EXESUFFIX
376#		DLLSUFFIX
377#
378#--------------------------------------------------------------------
379
380AC_DEFUN(SC_CONFIG_CFLAGS, [
381
382    # Step 0: Enable 64 bit support?
383
384    AC_MSG_CHECKING([if 64bit support is requested])
385    AC_ARG_ENABLE(64bit,[  --enable-64bit          enable 64bit support (where applicable)], [do64bit=$enableval], [do64bit=no])
386    AC_MSG_RESULT($do64bit)
387
388    # Set some defaults (may get changed below)
389    EXTRA_CFLAGS=""
390
391    AC_CHECK_PROG(CYGPATH, cygpath, cygpath -w, echo)
392
393    SHLIB_SUFFIX=".dll"
394
395    # Check for a bug in gcc's windres that causes the
396    # compile to fail when a Windows native path is
397    # passed into windres. The mingw toolchain requires
398    # Windows native paths while Cygwin should work
399    # with both. Avoid the bug by passing a POSIX
400    # path when using the Cygwin toolchain.
401
402    if test "$GCC" = "yes" && test "$CYGPATH" != "echo" ; then
403	conftest=/tmp/conftest.rc
404	echo "STRINGTABLE BEGIN" > $conftest
405	echo "101 \"name\"" >> $conftest
406	echo "END" >> $conftest
407
408	AC_MSG_CHECKING([for Windows native path bug in windres])
409	cyg_conftest=`$CYGPATH $conftest`
410	if AC_TRY_COMMAND($RC -o conftest.res.o $cyg_conftest) ; then
411	    AC_MSG_RESULT([no])
412	else
413	    AC_MSG_RESULT([yes])
414	    CYGPATH=echo
415	fi
416	conftest=
417	cyg_conftest=
418    fi
419
420    if test "$CYGPATH" = "echo" || test "$ac_cv_cygwin" = "yes"; then
421        DEPARG='"$<"'
422    else
423        DEPARG='"$(shell $(CYGPATH) $<)"'
424    fi
425
426    # set various compiler flags depending on whether we are using gcc or cl
427
428    AC_MSG_CHECKING([compiler flags])
429    if test "${GCC}" = "yes" ; then
430	if test "$do64bit" = "yes" ; then
431	    AC_MSG_WARN("64bit mode not supported with GCC on Windows")
432	fi
433	SHLIB_LD=""
434	SHLIB_LD_LIBS=""
435	LIBS=""
436	LIBS_GUI="-lgdi32 -lcomdlg32 -limm32 -lcomctl32 -lshell32"
437	STLIB_LD='${AR} cr'
438	RC_OUT=-o
439	RC_TYPE=
440	RC_INCLUDE=--include
441	RC_DEFINE=--define
442	RES=res.o
443	MAKE_LIB="\${STLIB_LD} \[$]@"
444	POST_MAKE_LIB="\${RANLIB} \[$]@"
445	MAKE_EXE="\${CC} -o \[$]@"
446	LIBPREFIX="lib"
447
448	#if test "$ac_cv_cygwin" = "yes"; then
449	#    extra_cflags="-mno-cygwin"
450	#    extra_ldflags="-mno-cygwin"
451	#else
452	#    extra_cflags=""
453	#    extra_ldflags=""
454	#fi
455
456	if test "$ac_cv_cygwin" = "yes"; then
457	  touch ac$$.c
458	  if ${CC} -c -mwin32 ac$$.c >/dev/null 2>&1; then
459	    case "$extra_cflags" in
460	      *-mwin32*) ;;
461	      *) extra_cflags="-mwin32 $extra_cflags" ;;
462	    esac
463	    case "$extra_ldflags" in
464	      *-mwin32*) ;;
465	      *) extra_ldflags="-mwin32 $extra_ldflags" ;;
466	    esac
467	  fi
468	  rm -f ac$$.o ac$$.c
469	else
470	  extra_cflags=''
471	  extra_ldflags=''
472	fi
473
474	if test "${SHARED_BUILD}" = "0" ; then
475	    # static
476            AC_MSG_RESULT([using static flags])
477	    runtime=
478	    MAKE_DLL="echo "
479	    LIBSUFFIX="s\${DBGX}.a"
480	    LIBFLAGSUFFIX="s\${DBGX}"
481	    LIBRARIES="\${STATIC_LIBRARIES}"
482	    EXESUFFIX="s\${DBGX}.exe"
483	else
484	    # dynamic
485            AC_MSG_RESULT([using shared flags])
486
487	    # ad-hoc check to see if CC supports -shared.
488	    if "${CC}" -shared 2>&1 | egrep ': -shared not supported' >/dev/null; then
489		AC_MSG_ERROR([${CC} does not support the -shared option.
490                You will need to upgrade to a newer version of the toolchain.])
491	    fi
492
493	    runtime=
494	    # Link with gcc since ld does not link to default libs like
495	    # -luser32 and -lmsvcrt by default. Make sure CFLAGS is
496	    # included so -mno-cygwin passed the correct libs to the linker.
497	    SHLIB_LD='${CC} -shared ${CFLAGS}'
498	    SHLIB_LD_LIBS='${LIBS}'
499	    # Add SHLIB_LD_LIBS to the Make rule, not here.
500	    MAKE_DLL="\${SHLIB_LD} \$(LDFLAGS) -o \[$]@ ${extra_ldflags} \
501	        -Wl,--out-implib,\$(patsubst %.dll,lib%.a,\[$]@)"
502
503	    LIBSUFFIX="\${DBGX}.a"
504	    LIBFLAGSUFFIX="\${DBGX}"
505	    EXESUFFIX="\${DBGX}.exe"
506	    LIBRARIES="\${SHARED_LIBRARIES}"
507	fi
508	# DLLSUFFIX is separate because it is the building block for
509	# users of tclConfig.sh that may build shared or static.
510	DLLSUFFIX="\${DBGX}.dll"
511	SHLIB_SUFFIX=.dll
512
513	EXTRA_CFLAGS="${extra_cflags}"
514
515	CFLAGS_DEBUG=-g
516	CFLAGS_OPTIMIZE=-O
517	CFLAGS_WARNING="-Wall -Wconversion"
518	LDFLAGS_DEBUG=
519	LDFLAGS_OPTIMIZE=
520
521	# Specify the CC output file names based on the target name
522	CC_OBJNAME="-o \[$]@"
523	CC_EXENAME="-o \[$]@"
524
525	# Specify linker flags depending on the type of app being
526	# built -- Console vs. Window.
527	#
528	# ORIGINAL COMMENT:
529	# We need to pass -e _WinMain@16 so that ld will use
530	# WinMain() instead of main() as the entry point. We can't
531	# use autoconf to check for this case since it would need
532	# to run an executable and that does not work when
533	# cross compiling. Remove this -e workaround once we
534	# require a gcc that does not have this bug.
535	#
536	# MK NOTE: Tk should use a different mechanism. This causes
537	# interesting problems, such as wish dying at startup.
538	#LDFLAGS_WINDOW="-mwindows -e _WinMain@16 ${extra_ldflags}"
539	LDFLAGS_CONSOLE="-mconsole ${extra_ldflags}"
540	LDFLAGS_WINDOW="-mwindows ${extra_ldflags}"
541    else
542	if test "${SHARED_BUILD}" = "0" ; then
543	    # static
544            AC_MSG_RESULT([using static flags])
545	    runtime=-MT
546	    MAKE_DLL="echo "
547	    LIBSUFFIX="s\${DBGX}.lib"
548	    LIBFLAGSUFFIX="s\${DBGX}"
549	    LIBRARIES="\${STATIC_LIBRARIES}"
550	    EXESUFFIX="s\${DBGX}.exe"
551	    SHLIB_LD_LIBS=""
552	else
553	    # dynamic
554            AC_MSG_RESULT([using shared flags])
555	    runtime=-MD
556	    # Add SHLIB_LD_LIBS to the Make rule, not here.
557	    MAKE_DLL="\${SHLIB_LD} \$(LDFLAGS) -out:\[$]@"
558	    LIBSUFFIX="\${DBGX}.lib"
559	    LIBFLAGSUFFIX="\${DBGX}"
560	    EXESUFFIX="\${DBGX}.exe"
561	    LIBRARIES="\${SHARED_LIBRARIES}"
562	    SHLIB_LD_LIBS='${LIBS}'
563	fi
564	# DLLSUFFIX is separate because it is the building block for
565	# users of tclConfig.sh that may build shared or static.
566	DLLSUFFIX="\${DBGX}.dll"
567
568	# This is a 2-stage check to make sure we have the 64-bit SDK
569	# We have to know where the SDK is installed.
570	if test "$do64bit" = "yes" ; then
571	    if test "x${MSSDK}x" = "xx" ; then
572		MSSDK="C:/Progra~1/Microsoft SDK"
573	    fi
574	    # In order to work in the tortured autoconf environment,
575	    # we need to ensure that this path has no spaces
576	    MSSDK=$(cygpath -w -s "$MSSDK" | sed -e 's!\\!/!g')
577	    if test ! -d "${MSSDK}/bin/win64" ; then
578		AC_MSG_WARN("could not find 64-bit SDK to enable 64bit mode")
579		do64bit="no"
580	    fi
581	fi
582
583	if test "$do64bit" = "yes" ; then
584	    # All this magic is necessary for the Win64 SDK RC1 - hobbs
585	    CC="${MSSDK}/Bin/Win64/cl.exe \
586	-I${MSSDK}/Include/prerelease \
587	-I${MSSDK}/Include/Win64/crt \
588	-I${MSSDK}/Include/Win64/crt/sys \
589	-I${MSSDK}/Include"
590	    RC="${MSSDK}/bin/rc.exe"
591	    CFLAGS_DEBUG="-nologo -Zi -Od ${runtime}d"
592	    CFLAGS_OPTIMIZE="-nologo -O2 -Gs ${runtime}"
593	    lflags="-MACHINE:IA64 -LIBPATH:${MSSDK}/Lib/IA64 \
594	-LIBPATH:${MSSDK}/Lib/Prerelease/IA64"
595	    STLIB_LD="${MSSDK}/bin/win64/lib.exe -nologo ${lflags}"
596	    LINKBIN="${MSSDK}/bin/win64/link.exe ${lflags}"
597	else
598	    RC="rc"
599	    CFLAGS_DEBUG="-nologo -Z7 -Od -WX ${runtime}d"
600	    CFLAGS_OPTIMIZE="-nologo -Oti -Gs -GD ${runtime}"
601	    STLIB_LD="lib -nologo"
602	    LINKBIN="link -link50compat"
603	fi
604
605	SHLIB_LD="${LINKBIN} -dll -nologo -incremental:no"
606	LIBS="user32.lib advapi32.lib"
607	LIBS_GUI="gdi32.lib comdlg32.lib imm32.lib comctl32.lib shell32.lib"
608	RC_OUT=-fo
609	RC_TYPE=-r
610	RC_INCLUDE=-i
611	RC_DEFINE=-d
612	RES=res
613	MAKE_LIB="\${STLIB_LD} -out:\[$]@"
614	POST_MAKE_LIB=
615	MAKE_EXE="\${CC} -Fe\[$]@"
616	LIBPREFIX=""
617
618	EXTRA_CFLAGS="-YX"
619	CFLAGS_WARNING="-W3"
620	LDFLAGS_DEBUG="-debug:full -debugtype:both"
621	LDFLAGS_OPTIMIZE="-release"
622
623	# Specify the CC output file names based on the target name
624	CC_OBJNAME="-Fo\[$]@"
625	CC_EXENAME="-Fe\"\$(shell \$(CYGPATH) '\[$]@')\""
626
627	# Specify linker flags depending on the type of app being
628	# built -- Console vs. Window.
629	LDFLAGS_CONSOLE="-link -subsystem:console ${lflags}"
630	LDFLAGS_WINDOW="-link -subsystem:windows ${lflags}"
631    fi
632
633    # DL_LIBS is empty, but then we match the Unix version
634    AC_SUBST(DL_LIBS)
635    AC_SUBST(CFLAGS_DEBUG)
636    AC_SUBST(CFLAGS_OPTIMIZE)
637    AC_SUBST(CFLAGS_WARNING)
638])
639
640#------------------------------------------------------------------------
641# SC_WITH_TCL --
642#
643#	Location of the Tcl build directory.
644#
645# Arguments:
646#	none
647#
648# Results:
649#
650#	Adds the following arguments to configure:
651#		--with-tcl=...
652#
653#	Defines the following vars:
654#		TCL_BIN_DIR	Full path to the tcl build dir.
655#------------------------------------------------------------------------
656
657AC_DEFUN(SC_WITH_TCL, [
658    if test -d ../../tcl8.4$1/win;  then
659	TCL_BIN_DEFAULT=../../tcl8.4$1/win
660    else
661	TCL_BIN_DEFAULT=../../tcl8.4/win
662    fi
663
664    AC_ARG_WITH(tcl, [  --with-tcl=DIR          use Tcl 8.4 binaries from DIR],
665	    TCL_BIN_DIR=$withval, TCL_BIN_DIR=`cd $TCL_BIN_DEFAULT; pwd`)
666    if test ! -d $TCL_BIN_DIR; then
667	AC_MSG_ERROR(Tcl directory $TCL_BIN_DIR does not exist)
668    fi
669    if test ! -f $TCL_BIN_DIR/Makefile; then
670	AC_MSG_ERROR(There is no Makefile in $TCL_BIN_DIR:  perhaps you did not specify the Tcl *build* directory (not the toplevel Tcl directory) or you forgot to configure Tcl?)
671    else
672	echo "building against Tcl binaries in: $TCL_BIN_DIR"
673    fi
674    AC_SUBST(TCL_BIN_DIR)
675])
676
677# FIXME : SC_PROG_TCLSH should really look for the installed tclsh and
678# not the build version. If we want to use the build version in the
679# tk script, it is better to hardcode that!
680
681#------------------------------------------------------------------------
682# SC_PROG_TCLSH
683#	Locate a tclsh shell in the following directories:
684#		${exec_prefix}/bin
685#		${prefix}/bin
686#		${TCL_BIN_DIR}
687#		${TCL_BIN_DIR}/../bin
688#		${PATH}
689#
690# Arguments
691#	none
692#
693# Results
694#	Subst's the following values:
695#		TCLSH_PROG
696#------------------------------------------------------------------------
697
698AC_DEFUN(SC_PROG_TCLSH, [
699    AC_MSG_CHECKING([for tclsh])
700
701    AC_CACHE_VAL(ac_cv_path_tclsh, [
702	search_path=`echo ${exec_prefix}/bin:${prefix}/bin:${TCL_BIN_DIR}:${TCL_BIN_DIR}/../bin:${PATH} | sed -e 's/:/ /g'`
703	for dir in $search_path ; do
704	    for j in `ls -r $dir/tclsh[[8-9]]*.exe 2> /dev/null` \
705		    `ls -r $dir/tclsh* 2> /dev/null` ; do
706		if test x"$ac_cv_path_tclsh" = x ; then
707		    if test -f "$j" ; then
708			ac_cv_path_tclsh=$j
709			break
710		    fi
711		fi
712	    done
713	done
714    ])
715
716    if test -f "$ac_cv_path_tclsh" ; then
717	TCLSH_PROG="$ac_cv_path_tclsh"
718	AC_MSG_RESULT($TCLSH_PROG)
719    elif test -f "$TCL_BIN_DIR/tclConfig.sh" ; then
720	# One-tree build.
721	ac_cv_path_tclsh="$TCL_BIN_DIR/tclsh"
722	TCLSH_PROG="$ac_cv_path_tclsh"
723	AC_MSG_RESULT($TCLSH_PROG)
724    else
725	AC_MSG_ERROR(No tclsh found in PATH:  $search_path)
726    fi
727    AC_SUBST(TCLSH_PROG)
728])
729