1#
2# This file is a Makefile for Tcl. If it has the name "Makefile.in" then it is
3# a template for a Makefile; to generate the actual Makefile, run
4# "./configure", which is a configuration script generated by the "autoconf"
5# program (constructs like "@foo@" will get replaced in the actual Makefile.
6
7VERSION 		= @TCL_VERSION@
8MAJOR_VERSION		= @TCL_MAJOR_VERSION@
9MINOR_VERSION		= @TCL_MINOR_VERSION@
10PATCH_LEVEL		= @TCL_PATCH_LEVEL@
11
12#--------------------------------------------------------------------------
13# Things you can change to personalize the Makefile for your own site (you can
14# make these changes in either Makefile.in or Makefile, but changes to
15# Makefile will get lost if you re-run the configuration script).
16#--------------------------------------------------------------------------
17
18# Default top-level directories in which to install architecture-specific
19# files (exec_prefix) and machine-independent files such as scripts (prefix).
20# The values specified here may be overridden at configure-time with the
21# --exec-prefix and --prefix options to the "configure" script. The *dir vars
22# are standard configure substitutions that are based off prefix and
23# exec_prefix.
24
25prefix			= @prefix@
26exec_prefix		= @exec_prefix@
27bindir			= @bindir@
28libdir			= @libdir@
29includedir		= @includedir@
30datarootdir		= @datarootdir@
31mandir			= @mandir@
32
33# The following definition can be set to non-null for special systems like AFS
34# with replication. It allows the pathnames used for installation to be
35# different than those used for actually reference files at run-time.
36# INSTALL_ROOT is prepended to $prefix and $exec_prefix when installing files.
37INSTALL_ROOT		= $(DESTDIR)
38
39# Path for the platform independent Tcl scripting libraries:
40TCL_LIBRARY		= @TCL_LIBRARY@
41
42# Path to use at runtime to refer to LIB_INSTALL_DIR:
43LIB_RUNTIME_DIR		= $(libdir)
44
45# Directory in which to install the program tclsh:
46BIN_INSTALL_DIR		= $(INSTALL_ROOT)$(bindir)
47
48# Directory in which to install libtcl.so or libtcl.a:
49LIB_INSTALL_DIR		= $(INSTALL_ROOT)$(libdir)
50DLL_INSTALL_DIR		= @DLL_INSTALL_DIR@
51
52# Path name to use when installing library scripts.
53SCRIPT_INSTALL_DIR	= $(INSTALL_ROOT)$(TCL_LIBRARY)
54
55# Directory in which to install the include file tcl.h:
56INCLUDE_INSTALL_DIR	= $(INSTALL_ROOT)$(includedir)
57GENERIC_INCLUDE_INSTALL_DIR = $(INCLUDE_INSTALL_DIR)/generic
58UNIX_INCLUDE_INSTALL_DIR= $(INCLUDE_INSTALL_DIR)/unix
59
60# Path to the private tcl header dir:
61PRIVATE_INCLUDE_DIR	= @PRIVATE_INCLUDE_DIR@
62
63# Directory in which to (optionally) install the private tcl headers:
64PRIVATE_INCLUDE_INSTALL_DIR = $(INSTALL_ROOT)$(PRIVATE_INCLUDE_DIR)
65
66# Top-level directory in which to install manual entries:
67MAN_INSTALL_DIR		= $(INSTALL_ROOT)$(mandir)
68
69# Directory in which to install manual entry for tclsh:
70MAN1_INSTALL_DIR	= $(MAN_INSTALL_DIR)/man1
71
72# Directory in which to install manual entries for Tcl's C library procedures:
73MAN3_INSTALL_DIR	= $(MAN_INSTALL_DIR)/man3
74
75# Directory in which to install manual entries for the built-in Tcl commands:
76MANN_INSTALL_DIR	= $(MAN_INSTALL_DIR)/mann
77
78# Path to the html documentation dir:
79HTML_DIR		= @HTML_DIR@
80
81# Directory in which to install html documentation:
82HTML_INSTALL_DIR	= $(INSTALL_ROOT)$(HTML_DIR)
83
84# Directory in which to install the configuration file tclConfig.sh
85CONFIG_INSTALL_DIR	= $(INSTALL_ROOT)$(libdir)
86
87# Package search path.
88TCL_PACKAGE_PATH	= @TCL_PACKAGE_PATH@
89
90# Tcl Module default path roots (TIP189).
91TCL_MODULE_PATH		= @TCL_MODULE_PATH@
92
93# warning flags
94CFLAGS_WARNING		= @CFLAGS_WARNING@
95
96# The default switches for optimization or debugging
97CFLAGS_DEBUG		= @CFLAGS_DEBUG@
98CFLAGS_OPTIMIZE		= @CFLAGS_OPTIMIZE@
99
100# To change the compiler switches, for example to change from optimization to
101# debugging symbols, change the following line:
102#CFLAGS			= $(CFLAGS_DEBUG)
103#CFLAGS			= $(CFLAGS_OPTIMIZE)
104#CFLAGS			= $(CFLAGS_DEBUG) $(CFLAGS_OPTIMIZE)
105CFLAGS			= @CFLAGS_DEFAULT@ @CFLAGS@
106
107# Flags to pass to the linker
108LDFLAGS_DEBUG		= @LDFLAGS_DEBUG@
109LDFLAGS_OPTIMIZE	= @LDFLAGS_OPTIMIZE@
110LDFLAGS			= @LDFLAGS_DEFAULT@ @LDFLAGS@
111
112# To disable ANSI-C procedure prototypes reverse the comment characters on the
113# following lines:
114PROTO_FLAGS		=
115#PROTO_FLAGS		= -DNO_PROTOTYPE
116
117# If you use the setenv, putenv, or unsetenv procedures to modify environment
118# variables in your application and you'd like those modifications to appear
119# in the "env" Tcl variable, switch the comments on the two lines below so
120# that Tcl provides these procedures instead of your standard C library.
121
122ENV_FLAGS =
123#ENV_FLAGS = -DTclSetEnv=setenv -DTcl_PutEnv=putenv -DTclUnsetEnv=unsetenv
124
125# To enable memory debugging, call configure with --enable-symbols=mem
126# Warning: if you enable memory debugging, you must do it *everywhere*,
127# including all the code that calls Tcl, and you must use ckalloc and ckfree
128# everywhere instead of malloc and free.
129
130TCL_STUB_LIB_FILE	= @TCL_STUB_LIB_FILE@
131#TCL_STUB_LIB_FILE	= libtclstub.a
132
133# Generic stub lib name used in rules that apply to tcl and tk
134STUB_LIB_FILE		= ${TCL_STUB_LIB_FILE}
135
136TCL_STUB_LIB_FLAG	= @TCL_STUB_LIB_FLAG@
137#TCL_STUB_LIB_FLAG	= -ltclstub
138
139# To compile without backward compatibility and deprecated code uncomment the
140# following
141NO_DEPRECATED_FLAGS	=
142#NO_DEPRECATED_FLAGS	= -DTCL_NO_DEPRECATED
143
144# Some versions of make, like SGI's, use the following variable to determine
145# which shell to use for executing commands:
146SHELL			= @MAKEFILE_SHELL@
147
148# Tcl used to let the configure script choose which program to use for
149# installing, but there are just too many different versions of "install"
150# around; better to use the install-sh script that comes with the
151# distribution, which is slower but guaranteed to work.
152
153INSTALL_STRIP_PROGRAM   = -s
154INSTALL_STRIP_LIBRARY   = -S -x
155
156INSTALL			= $(SHELL) $(UNIX_DIR)/install-sh -c
157INSTALL_PROGRAM		= ${INSTALL}
158INSTALL_LIBRARY		= ${INSTALL}
159INSTALL_DATA		= ${INSTALL} -m 644
160INSTALL_DATA_DIR	= ${INSTALL} -d -m 755
161
162# TCL_EXE is the name of a tclsh executable that is available *BEFORE* running
163# make for the first time. Certain build targets (make genstubs) need it to be
164# available on the PATH. This executable should *NOT* be required just to do a
165# normal build although it can be required to run make dist.
166TCL_EXE			= tclsh@EXEEXT@
167
168# The symbols below provide support for dynamic loading and shared libraries.
169# See configure.in for a description of what the symbols mean. The values of
170# the symbols are normally set by the configure script. You shouldn't normally
171# need to modify any of these definitions by hand.
172
173STLIB_LD		= @STLIB_LD@
174SHLIB_LD		= @SHLIB_LD@
175SHLIB_CFLAGS		= @SHLIB_CFLAGS@
176SHLIB_LD_LIBS		= @SHLIB_LD_LIBS@
177TCL_SHLIB_LD_EXTRAS	= @TCL_SHLIB_LD_EXTRAS@
178
179SHLIB_SUFFIX		= @SHLIB_SUFFIX@
180#SHLIB_SUFFIX		=
181
182DLTEST_TARGETS		= dltest.marker
183
184# Additional search flags needed to find the various shared libraries at
185# run-time. The first symbol is for use when creating a binary with cc, and
186# the second is for use when running ld directly.
187CC_SEARCH_FLAGS	= @CC_SEARCH_FLAGS@
188LD_SEARCH_FLAGS	= @LD_SEARCH_FLAGS@
189
190# The following symbol is defined to "$(DLTEST_TARGETS)" if dynamic loading is
191# available; this causes everything in the "dltest" subdirectory to be built
192# when making "tcltest. If dynamic loading isn't available, configure defines
193# this symbol to an empty string, in which case the shared libraries aren't
194# built.
195BUILD_DLTEST		= @BUILD_DLTEST@
196#BUILD_DLTEST		=
197
198TCL_LIB_FILE		= @TCL_LIB_FILE@
199#TCL_LIB_FILE		= libtcl.a
200
201# Generic lib name used in rules that apply to tcl and tk
202LIB_FILE		= ${TCL_LIB_FILE}
203
204TCL_LIB_FLAG		= @TCL_LIB_FLAG@
205#TCL_LIB_FLAG		= -ltcl
206
207# support for embedded libraries on Darwin / Mac OS X
208DYLIB_INSTALL_DIR	= ${LIB_RUNTIME_DIR}
209
210#--------------------------------------------------------------------------
211# The information below is modified by the configure script when Makefile is
212# generated from Makefile.in. You shouldn't normally modify any of this stuff
213# by hand.
214#--------------------------------------------------------------------------
215
216COMPAT_OBJS		= @LIBOBJS@
217
218AC_FLAGS		= @DEFS@
219AR			= @AR@
220RANLIB			= @RANLIB@
221DTRACE			= @DTRACE@
222SRC_DIR			= @srcdir@
223TOP_DIR			= $(SRC_DIR)/..
224BUILD_DIR		= @builddir@
225GENERIC_DIR		= $(TOP_DIR)/generic
226TOMMATH_DIR		= $(TOP_DIR)/libtommath
227COMPAT_DIR		= $(TOP_DIR)/compat
228TOOL_DIR		= $(TOP_DIR)/tools
229UNIX_DIR		= $(TOP_DIR)/unix
230MAC_OSX_DIR		= $(TOP_DIR)/macosx
231# Must be absolute because of the cd dltest $(DLTEST_DIR)/configure below.
232DLTEST_DIR		= @TCL_SRC_DIR@/unix/dltest
233# Must be absolute to so the corresponding tcltest's tcl_library is absolute.
234TCL_BUILDTIME_LIBRARY	= @TCL_SRC_DIR@/library
235
236CC			= @CC@
237#CC			= purify -best-effort @CC@ -DPURIFY
238
239# Flags to be passed to installManPage to control how the manpages should be
240# installed (symlinks, compression, package name suffix).
241MAN_FLAGS               = @MAN_FLAGS@
242
243# If non-empty, install the timezone files that are included with Tcl,
244# otherwise use the ones that ship with the OS.
245INSTALL_TZDATA		= @INSTALL_TZDATA@
246
247#--------------------------------------------------------------------------
248# The information below is usually usable as is. The configure script won't
249# modify it and it only exists to make working around selected rare system
250# configurations easier.
251#--------------------------------------------------------------------------
252
253GDB			= gdb
254
255#--------------------------------------------------------------------------
256# The information below should be usable as is. The configure script won't
257# modify it and you shouldn't need to modify it either.
258#--------------------------------------------------------------------------
259
260STUB_CC_SWITCHES = ${CFLAGS} ${CFLAGS_WARNING} ${SHLIB_CFLAGS} \
261-I"${BUILD_DIR}" -I${UNIX_DIR} -I${GENERIC_DIR} -I${TOMMATH_DIR} \
262${AC_FLAGS} ${PROTO_FLAGS} ${ENV_FLAGS} ${EXTRA_CFLAGS} @EXTRA_CC_SWITCHES@
263
264CC_SWITCHES = $(STUB_CC_SWITCHES) ${NO_DEPRECATED_FLAGS}
265
266APP_CC_SWITCHES = $(CC_SWITCHES) @EXTRA_APP_CC_SWITCHES@
267
268LIBS		= @TCL_LIBS@
269
270DEPEND_SWITCHES	= ${CFLAGS} -I${UNIX_DIR} -I${GENERIC_DIR} \
271${AC_FLAGS} ${PROTO_FLAGS} ${EXTRA_CFLAGS} @EXTRA_CC_SWITCHES@
272
273TCLSH_OBJS = tclAppInit.o
274
275TCLTEST_OBJS = tclTestInit.o tclTest.o tclTestObj.o tclTestProcBodyObj.o \
276	tclThreadTest.o tclUnixTest.o
277
278XTTEST_OBJS = xtTestInit.o tclTest.o tclTestObj.o tclTestProcBodyObj.o \
279	tclThreadTest.o tclUnixTest.o tclXtNotify.o tclXtTest.o
280
281GENERIC_OBJS = regcomp.o regexec.o regfree.o regerror.o tclAlloc.o \
282	tclAsync.o tclBasic.o tclBinary.o tclCkalloc.o tclClock.o \
283	tclCmdAH.o tclCmdIL.o tclCmdMZ.o tclCompCmds.o tclCompExpr.o \
284	tclCompile.o tclConfig.o tclDate.o tclDictObj.o tclEncoding.o \
285	tclEnv.o tclEvent.o tclExecute.o tclFCmd.o tclFileName.o tclGet.o \
286	tclHash.o tclHistory.o tclIndexObj.o tclInterp.o tclIO.o tclIOCmd.o \
287	tclIORChan.o tclIOGT.o tclIOSock.o tclIOUtil.o tclLink.o tclListObj.o \
288	tclLiteral.o tclLoad.o tclMain.o tclNamesp.o tclNotify.o \
289	tclObj.o tclPanic.o tclParse.o tclPathObj.o tclPipe.o \
290	tclPkg.o tclPkgConfig.o tclPosixStr.o \
291	tclPreserve.o tclProc.o tclRegexp.o \
292	tclResolve.o tclResult.o tclScan.o tclStringObj.o \
293	tclStrToD.o tclThread.o \
294	tclThreadAlloc.o tclThreadJoin.o tclThreadStorage.o tclStubInit.o \
295	tclStubLib.o tclTimer.o tclTrace.o tclUtf.o tclUtil.o tclVar.o \
296	tclTomMathInterface.o
297
298TOMMATH_OBJS = bncore.o bn_reverse.o bn_fast_s_mp_mul_digs.o \
299	bn_fast_s_mp_sqr.o bn_mp_add.o bn_mp_and.o \
300        bn_mp_add_d.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o \
301        bn_mp_cmp.o bn_mp_cmp_d.o bn_mp_cmp_mag.o \
302	bn_mp_cnt_lsb.o bn_mp_copy.o \
303	bn_mp_count_bits.o bn_mp_div.o bn_mp_div_d.o bn_mp_div_2.o \
304	bn_mp_div_2d.o bn_mp_div_3.o \
305        bn_mp_exch.o bn_mp_expt_d.o bn_mp_grow.o bn_mp_init.o \
306	bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o \
307	bn_mp_init_set_int.o bn_mp_init_size.o bn_mp_karatsuba_mul.o \
308	bn_mp_karatsuba_sqr.o \
309        bn_mp_lshd.o bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mul.o bn_mp_mul_2.o \
310        bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_neg.o bn_mp_or.o \
311	bn_mp_radix_size.o bn_mp_radix_smap.o \
312        bn_mp_read_radix.o bn_mp_rshd.o bn_mp_set.o bn_mp_set_int.o \
313	bn_mp_shrink.o \
314	bn_mp_sqr.o bn_mp_sqrt.o bn_mp_sub.o bn_mp_sub_d.o \
315        bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o \
316	bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_toradix_n.o \
317	bn_mp_unsigned_bin_size.o bn_mp_xor.o bn_mp_zero.o bn_s_mp_add.o \
318        bn_s_mp_mul_digs.o bn_s_mp_sqr.o bn_s_mp_sub.o
319
320STUB_LIB_OBJS = tclStubLib.o ${COMPAT_OBJS}
321
322UNIX_OBJS = tclUnixChan.o tclUnixEvent.o tclUnixFCmd.o \
323	tclUnixFile.o tclUnixPipe.o tclUnixSock.o \
324	tclUnixTime.o tclUnixInit.o tclUnixThrd.o \
325	tclUnixCompat.o
326
327NOTIFY_OBJS = tclUnixNotfy.o
328
329MAC_OSX_OBJS = tclMacOSXBundle.o tclMacOSXFCmd.o tclMacOSXNotify.o
330
331DTRACE_OBJ = tclDTrace.o
332
333TCL_OBJS = ${GENERIC_OBJS} ${UNIX_OBJS} ${NOTIFY_OBJS} ${COMPAT_OBJS} \
334	@DL_OBJS@ @PLAT_OBJS@
335
336OBJS = ${TCL_OBJS} ${TOMMATH_OBJS} @DTRACE_OBJ@
337
338TCL_DECLS = \
339	$(GENERIC_DIR)/tcl.decls \
340	$(GENERIC_DIR)/tclInt.decls \
341	$(GENERIC_DIR)/tclTomMath.decls
342
343GENERIC_HDRS = \
344	$(GENERIC_DIR)/tcl.h \
345	$(GENERIC_DIR)/tclDecls.h \
346	$(GENERIC_DIR)/tclInt.h \
347	$(GENERIC_DIR)/tclIntDecls.h \
348	$(GENERIC_DIR)/tclIntPlatDecls.h \
349	$(GENERIC_DIR)/tclTomMath.h \
350	$(GENERIC_DIR)/tclTomMathDecls.h \
351	$(GENERIC_DIR)/tclPatch.h \
352	$(GENERIC_DIR)/tclPlatDecls.h \
353	$(GENERIC_DIR)/tclPort.h \
354	$(GENERIC_DIR)/tclRegexp.h
355
356GENERIC_SRCS = \
357	$(GENERIC_DIR)/regcomp.c \
358	$(GENERIC_DIR)/regexec.c \
359	$(GENERIC_DIR)/regfree.c \
360	$(GENERIC_DIR)/regerror.c \
361	$(GENERIC_DIR)/tclAlloc.c \
362	$(GENERIC_DIR)/tclAsync.c \
363	$(GENERIC_DIR)/tclBasic.c \
364	$(GENERIC_DIR)/tclBinary.c \
365	$(GENERIC_DIR)/tclCkalloc.c \
366	$(GENERIC_DIR)/tclClock.c \
367	$(GENERIC_DIR)/tclCmdAH.c \
368	$(GENERIC_DIR)/tclCmdIL.c \
369	$(GENERIC_DIR)/tclCmdMZ.c \
370	$(GENERIC_DIR)/tclCompCmds.c \
371	$(GENERIC_DIR)/tclCompExpr.c \
372	$(GENERIC_DIR)/tclCompile.c \
373	$(GENERIC_DIR)/tclConfig.c \
374	$(GENERIC_DIR)/tclDate.c \
375	$(GENERIC_DIR)/tclDictObj.c \
376	$(GENERIC_DIR)/tclEncoding.c \
377	$(GENERIC_DIR)/tclEnv.c \
378	$(GENERIC_DIR)/tclEvent.c \
379	$(GENERIC_DIR)/tclExecute.c \
380	$(GENERIC_DIR)/tclFCmd.c \
381	$(GENERIC_DIR)/tclFileName.c \
382	$(GENERIC_DIR)/tclGet.c \
383	$(GENERIC_DIR)/tclHash.c \
384	$(GENERIC_DIR)/tclHistory.c \
385	$(GENERIC_DIR)/tclIndexObj.c \
386	$(GENERIC_DIR)/tclInterp.c \
387	$(GENERIC_DIR)/tclIO.c \
388	$(GENERIC_DIR)/tclIOCmd.c \
389	$(GENERIC_DIR)/tclIOGT.c \
390	$(GENERIC_DIR)/tclIOSock.c \
391	$(GENERIC_DIR)/tclIOUtil.c \
392	$(GENERIC_DIR)/tclIORChan.c \
393	$(GENERIC_DIR)/tclLink.c \
394	$(GENERIC_DIR)/tclListObj.c \
395	$(GENERIC_DIR)/tclLiteral.c \
396	$(GENERIC_DIR)/tclLoad.c \
397	$(GENERIC_DIR)/tclMain.c \
398	$(GENERIC_DIR)/tclNamesp.c \
399	$(GENERIC_DIR)/tclNotify.c \
400	$(GENERIC_DIR)/tclObj.c \
401        $(GENERIC_DIR)/tclParse.c \
402	$(GENERIC_DIR)/tclPathObj.c \
403	$(GENERIC_DIR)/tclPipe.c \
404	$(GENERIC_DIR)/tclPkg.c \
405	$(GENERIC_DIR)/tclPkgConfig.c \
406	$(GENERIC_DIR)/tclPosixStr.c \
407	$(GENERIC_DIR)/tclPreserve.c \
408	$(GENERIC_DIR)/tclProc.c \
409	$(GENERIC_DIR)/tclRegexp.c \
410	$(GENERIC_DIR)/tclResolve.c \
411	$(GENERIC_DIR)/tclResult.c \
412	$(GENERIC_DIR)/tclScan.c \
413	$(GENERIC_DIR)/tclStubInit.c \
414	$(GENERIC_DIR)/tclStubLib.c \
415	$(GENERIC_DIR)/tclStringObj.c \
416	$(GENERIC_DIR)/tclStrToD.c \
417	$(GENERIC_DIR)/tclTest.c \
418	$(GENERIC_DIR)/tclTestObj.c \
419	$(GENERIC_DIR)/tclTestProcBodyObj.c \
420	$(GENERIC_DIR)/tclThread.c \
421	$(GENERIC_DIR)/tclThreadAlloc.c \
422	$(GENERIC_DIR)/tclThreadJoin.c \
423	$(GENERIC_DIR)/tclThreadStorage.c \
424	$(GENERIC_DIR)/tclTimer.c \
425	$(GENERIC_DIR)/tclTrace.c \
426	$(GENERIC_DIR)/tclUtil.c \
427	$(GENERIC_DIR)/tclVar.c
428
429STUB_SRCS = \
430	$(GENERIC_DIR)/tclStubLib.c
431
432TOMMATH_SRCS = \
433	$(TOMMATH_DIR)/bncore.c \
434	$(TOMMATH_DIR)/bn_reverse.c \
435	$(TOMMATH_DIR)/bn_fast_s_mp_mul_digs.c \
436	$(TOMMATH_DIR)/bn_fast_s_mp_sqr.c \
437	$(TOMMATH_DIR)/bn_mp_add.c \
438	$(TOMMATH_DIR)/bn_mp_add_d.c \
439	$(TOMMATH_DIR)/bn_mp_and.c \
440	$(TOMMATH_DIR)/bn_mp_clamp.c \
441	$(TOMMATH_DIR)/bn_mp_clear.c \
442	$(TOMMATH_DIR)/bn_mp_clear_multi.c \
443	$(TOMMATH_DIR)/bn_mp_cmp.c \
444	$(TOMMATH_DIR)/bn_mp_cmp_d.c \
445	$(TOMMATH_DIR)/bn_mp_cmp_mag.c \
446	$(TOMMATH_DIR)/bn_mp_copy.c \
447	$(TOMMATH_DIR)/bn_mp_cnt_lsb.c \
448	$(TOMMATH_DIR)/bn_mp_count_bits.c \
449	$(TOMMATH_DIR)/bn_mp_div.c \
450	$(TOMMATH_DIR)/bn_mp_div_d.c \
451	$(TOMMATH_DIR)/bn_mp_div_2.c \
452	$(TOMMATH_DIR)/bn_mp_div_2d.c \
453	$(TOMMATH_DIR)/bn_mp_div_3.c \
454	$(TOMMATH_DIR)/bn_mp_exch.c \
455	$(TOMMATH_DIR)/bn_mp_expt_d.c \
456	$(TOMMATH_DIR)/bn_mp_grow.c \
457	$(TOMMATH_DIR)/bn_mp_init.c \
458	$(TOMMATH_DIR)/bn_mp_init_copy.c \
459	$(TOMMATH_DIR)/bn_mp_init_multi.c \
460	$(TOMMATH_DIR)/bn_mp_init_set.c \
461	$(TOMMATH_DIR)/bn_mp_init_set_int.c \
462	$(TOMMATH_DIR)/bn_mp_init_size.c \
463	$(TOMMATH_DIR)/bn_mp_karatsuba_mul.c \
464	$(TOMMATH_DIR)/bn_mp_karatsuba_sqr.c \
465	$(TOMMATH_DIR)/bn_mp_lshd.c \
466	$(TOMMATH_DIR)/bn_mp_mod.c \
467	$(TOMMATH_DIR)/bn_mp_mod_2d.c \
468	$(TOMMATH_DIR)/bn_mp_mul.c \
469	$(TOMMATH_DIR)/bn_mp_mul_2.c \
470	$(TOMMATH_DIR)/bn_mp_mul_2d.c \
471	$(TOMMATH_DIR)/bn_mp_mul_d.c \
472	$(TOMMATH_DIR)/bn_mp_neg.c \
473	$(TOMMATH_DIR)/bn_mp_or.c \
474	$(TOMMATH_DIR)/bn_mp_radix_size.c \
475	$(TOMMATH_DIR)/bn_mp_radix_smap.c \
476	$(TOMMATH_DIR)/bn_mp_read_radix.c \
477	$(TOMMATH_DIR)/bn_mp_rshd.c \
478	$(TOMMATH_DIR)/bn_mp_set.c \
479	$(TOMMATH_DIR)/bn_mp_set_int.c \
480	$(TOMMATH_DIR)/bn_mp_shrink.c \
481	$(TOMMATH_DIR)/bn_mp_sqr.c \
482	$(TOMMATH_DIR)/bn_mp_sqrt.c \
483	$(TOMMATH_DIR)/bn_mp_sub.c \
484	$(TOMMATH_DIR)/bn_mp_sub_d.c \
485	$(TOMMATH_DIR)/bn_mp_to_unsigned_bin.c \
486	$(TOMMATH_DIR)/bn_mp_to_unsigned_bin_n.c \
487	$(TOMMATH_DIR)/bn_mp_toom_mul.c \
488	$(TOMMATH_DIR)/bn_mp_toom_sqr.c \
489	$(TOMMATH_DIR)/bn_mp_toradix_n.c \
490	$(TOMMATH_DIR)/bn_mp_unsigned_bin_size.c \
491	$(TOMMATH_DIR)/bn_mp_xor.c \
492	$(TOMMATH_DIR)/bn_mp_zero.c \
493	$(TOMMATH_DIR)/bn_s_mp_add.c \
494	$(TOMMATH_DIR)/bn_s_mp_mul_digs.c \
495	$(TOMMATH_DIR)/bn_s_mp_sqr.c \
496	$(TOMMATH_DIR)/bn_s_mp_sub.c
497
498UNIX_HDRS = \
499	$(UNIX_DIR)/tclUnixPort.h
500#	$(UNIX_DIR)/tclConfig.h
501
502UNIX_SRCS = \
503	$(UNIX_DIR)/tclAppInit.c \
504	$(UNIX_DIR)/tclUnixChan.c \
505	$(UNIX_DIR)/tclUnixEvent.c \
506	$(UNIX_DIR)/tclUnixFCmd.c \
507	$(UNIX_DIR)/tclUnixFile.c \
508	$(UNIX_DIR)/tclUnixPipe.c \
509	$(UNIX_DIR)/tclUnixSock.c \
510	$(UNIX_DIR)/tclUnixTest.c \
511	$(UNIX_DIR)/tclUnixThrd.c \
512	$(UNIX_DIR)/tclUnixTime.c \
513	$(UNIX_DIR)/tclUnixInit.c \
514	$(UNIX_DIR)/tclUnixCompat.c
515
516NOTIFY_SRCS = \
517	$(UNIX_DIR)/tclUnixNotfy.c
518
519DL_SRCS = \
520	$(UNIX_DIR)/tclLoadAix.c \
521	$(UNIX_DIR)/tclLoadDl.c \
522	$(UNIX_DIR)/tclLoadDl2.c \
523	$(UNIX_DIR)/tclLoadDld.c \
524	$(UNIX_DIR)/tclLoadDyld.c \
525	$(GENERIC_DIR)/tclLoadNone.c \
526	$(UNIX_DIR)/tclLoadOSF.c \
527	$(UNIX_DIR)/tclLoadShl.c
528
529MAC_OSX_SRCS = \
530	$(MAC_OSX_DIR)/tclMacOSXBundle.c \
531	$(MAC_OSX_DIR)/tclMacOSXFCmd.c \
532	$(MAC_OSX_DIR)/tclMacOSXNotify.c
533
534DTRACE_HDR = tclDTrace.h
535
536DTRACE_SRC = $(GENERIC_DIR)/tclDTrace.d
537
538# Note: don't include DL_SRCS or MAC_OSX_SRCS in SRCS: most of those files
539# won't compile on the current machine, and they will cause problems for
540# things like "make depend".
541
542SRCS = $(GENERIC_SRCS) $(TOMMATH_SRCS) $(UNIX_SRCS) $(NOTIFY_SRCS) \
543	$(STUB_SRCS) @PLAT_SRCS@
544
545#--------------------------------------------------------------------------
546# Start of rules
547#--------------------------------------------------------------------------
548
549all: binaries libraries doc
550
551binaries: ${LIB_FILE} ${TCL_EXE} libtcl${SHORT_TCL_VER}.a
552
553libraries:
554
555doc:
556
557# The following target is configured by autoconf to generate either a shared
558# library or non-shared library for Tcl.
559${LIB_FILE}: ${STUB_LIB_FILE} ${OBJS}
560	rm -f $@
561	@MAKE_LIB@
562	@ln -sf ${LIB_FILE} ./libtcl${SHORT_TCL_VER}.so
563	if test "x@DL_OBJS@" = "xtclLoadAout.o"; then \
564		$(RANLIB) ${LIB_FILE}; \
565	fi;
566
567libtcl${SHORT_TCL_VER}.a: ${OBJS}
568	rm -f libtcl${SHORT_TCL_VER}.a
569	ar cr libtcl${SHORT_TCL_VER}.a ${OBJS}
570	$(RANLIB) libtcl${SHORT_TCL_VER}.a
571
572${STUB_LIB_FILE}: ${STUB_LIB_OBJS}
573	@if test "x${LIB_FILE}" = "xlibtcl${MAJOR_VERSION}.${MINOR_VERSION}.dll"; then \
574	    (cd ${TOP_DIR}/win; ${MAKE} winextensions); \
575	fi
576	rm -f $@
577	@MAKE_STUB_LIB@
578
579# Make target which outputs the list of the .o contained in the Tcl lib useful
580# to build a single big shared library containing Tcl and other extensions.
581# Used for the Tcl Plugin.  -- dl
582# The dependency on OBJS is not there because we just want the list of objects
583# here, not actually building them
584tclLibObjs:
585	@echo ${OBJS}
586# This targets actually build the objects needed for the lib in the above case
587objs: ${OBJS}
588
589
590${TCL_EXE}: ${TCLSH_OBJS} ${TCL_LIB_FILE}
591	${CC} ${CFLAGS} ${LDFLAGS} ${TCLSH_OBJS} @TCL_BUILD_LIB_SPEC@ ${LIBS} @EXTRA_TCLSH_LIBS@ \
592		${CC_SEARCH_FLAGS} -o ${TCL_EXE}
593
594# Resetting the LIB_RUNTIME_DIR below is required so that the generated
595# tcltest executable gets the build directory burned into its ld search path.
596# This keeps tcltest from picking up an already installed version of the Tcl
597# library.
598
599tcltest@EXEEXT@: ${TCLTEST_OBJS} ${TCL_LIB_FILE} ${BUILD_DLTEST}
600	$(MAKE) tcltest-real LIB_RUNTIME_DIR="`pwd`"
601
602tcltest-real:
603	${CC} ${CFLAGS} ${LDFLAGS} ${TCLTEST_OBJS} @TCL_BUILD_LIB_SPEC@ ${LIBS} @EXTRA_TCLSH_LIBS@ \
604		${CC_SEARCH_FLAGS} -o tcltest@EXEEXT@
605
606# Note, in the targets below TCL_LIBRARY needs to be set or else "make test"
607# won't work in the case where the compilation directory isn't the same as the
608# source directory.
609#
610# Specifying TESTFLAGS on the command line is the standard way to pass args to
611# tcltest, ie:
612#	% make test TESTFLAGS="-verbose bps -file fileName.test"
613
614test: tcltest@EXEEXT@
615	@LD_LIBRARY_PATH_VAR@="`pwd`:$${@LD_LIBRARY_PATH_VAR@}"; export @LD_LIBRARY_PATH_VAR@; \
616	TCL_LIBRARY="${TCL_BUILDTIME_LIBRARY}"; export TCL_LIBRARY; \
617	./tcltest@EXEEXT@ $(TOP_DIR)/tests/all.tcl $(TESTFLAGS)
618
619gdb-test: tcltest@EXEEXT@
620	@echo "set env @LD_LIBRARY_PATH_VAR@=\"`pwd`:$${@LD_LIBRARY_PATH_VAR@}\"" > gdb.run
621	@echo "set env TCL_LIBRARY=${TCL_BUILDTIME_LIBRARY}" >> gdb.run
622	@echo "set args $(TOP_DIR)/tests/all.tcl $(TESTFLAGS) -singleproc 1" >> gdb.run
623	$(GDB) ./tcltest@EXEEXT@ --command=gdb.run
624	rm gdb.run
625
626# Useful target to launch a built tcltest with the proper path,...
627runtest: tcltest@EXEEXT@
628	@LD_LIBRARY_PATH_VAR@="`pwd`:$${@LD_LIBRARY_PATH_VAR@}"; export @LD_LIBRARY_PATH_VAR@; \
629	TCL_LIBRARY="${TCL_BUILDTIME_LIBRARY}"; export TCL_LIBRARY; \
630	./tcltest@EXEEXT@
631
632# Useful target for running the test suite with an unwritable current
633# directory...
634ro-test: tcltest@EXEEXT@
635	@LD_LIBRARY_PATH_VAR@="`pwd`:$${@LD_LIBRARY_PATH_VAR@}"; export @LD_LIBRARY_PATH_VAR@; \
636	TCL_LIBRARY="${TCL_BUILDTIME_LIBRARY}"; export TCL_LIBRARY; \
637	echo 'exec chmod -w .;package require tcltest;tcltest::temporaryDirectory /tmp;source ../tests/all.tcl;exec chmod +w .' | ./tcltest@EXEEXT@
638
639# This target can be used to run tclsh from the build directory
640# via `make shell SCRIPT=/tmp/foo.tcl`
641shell: ${TCL_EXE}
642	@LD_LIBRARY_PATH_VAR@="`pwd`:$${@LD_LIBRARY_PATH_VAR@}"; export @LD_LIBRARY_PATH_VAR@; \
643	TCL_LIBRARY="${TCL_BUILDTIME_LIBRARY}"; export TCL_LIBRARY; \
644	./${TCL_EXE} $(SCRIPT)
645
646# This target can be used to run tclsh inside either gdb or insight
647gdb: ${TCL_EXE}
648	@echo "set env @LD_LIBRARY_PATH_VAR@=\"`pwd`:$${@LD_LIBRARY_PATH_VAR@}\"" > gdb.run
649	@echo "set env TCL_LIBRARY=${TCL_BUILDTIME_LIBRARY}" >> gdb.run
650	$(GDB) ./${TCL_EXE} --command=gdb.run
651	rm gdb.run
652
653VALGRINDARGS=--tool=memcheck --num-callers=8 --leak-resolution=high --leak-check=yes --show-reachable=yes -v
654
655valgrind: ${TCL_EXE} tcltest@EXEEXT@
656	@LD_LIBRARY_PATH_VAR@="`pwd`:$${@LD_LIBRARY_PATH_VAR@}"; export @LD_LIBRARY_PATH_VAR@; \
657	TCL_LIBRARY="${TCL_BUILDTIME_LIBRARY}"; export TCL_LIBRARY; \
658	valgrind $(VALGRINDARGS) ./tcltest@EXEEXT@ $(TOP_DIR)/tests/all.tcl -singleproc 1 $(TESTFLAGS)
659
660valgrindshell: ${TCL_EXE}
661	@LD_LIBRARY_PATH_VAR@="`pwd`:$${@LD_LIBRARY_PATH_VAR@}"; export @LD_LIBRARY_PATH_VAR@; \
662	TCL_LIBRARY="${TCL_BUILDTIME_LIBRARY}"; export TCL_LIBRARY; \
663	valgrind $(VALGRINDARGS) ./${TCL_EXE} $(SCRIPT)
664
665# The following target outputs the name of the top-level source directory for
666# Tcl (it is used by Tk's configure script, for example). The .NO_PARALLEL
667# line is needed to avoid problems under Sun's "pmake". Note: this target is
668# now obsolete (use the autoconf variable TCL_SRC_DIR from tclConfig.sh
669# instead).
670
671.NO_PARALLEL: topDirName
672topDirName:
673	@cd $(TOP_DIR); pwd
674
675# The following target generates the file generic/tclDate.c from the yacc
676# grammar found in generic/tclGetDate.y. This is only run by hand as yacc is
677# not available in all environments. The name of the .c file is different than
678# the name of the .y file so that make doesn't try to automatically regenerate
679# the .c file.
680
681gendate:
682	bison --output-file=$(GENERIC_DIR)/tclDate.c \
683	--no-lines \
684	--name-prefix=TclDate \
685	$(GENERIC_DIR)/tclGetDate.y
686
687#	yacc -l $(GENERIC_DIR)/tclGetDate.y
688#	sed -e 's/yy/TclDate/g' -e '/^#include <values.h>/d' \
689#	    -e 's?SCCSID?RCS: @(#) ?' \
690#	    -e '/#ifdef __STDC__/,/#endif/d' -e '/TclDateerrlab:/d' \
691#	    -e '/TclDatenewstate:/d' -e '/#pragma/d' \
692#	    -e '/#include <inttypes.h>/d' -e 's/const /CONST /g' \
693#           -e '/#define YYNEW/s/malloc/TclDateAlloc/g' \
694#	    -e '/#define YYENLARGE/,/realloc/s/realloc/TclDateRealloc/g' \
695#	    <y.tab.c >$(GENERIC_DIR)/tclDate.c
696#	rm y.tab.c
697
698# The following target generates the file generic/tclTomMath.h. It needs to be
699# run (and the results checked) after updating to a new release of libtommath.
700
701gentommath_h:
702	$(TCL_EXE) "$(TOOL_DIR)/fix_tommath_h.tcl" \
703		"$(TOMMATH_DIR)/tommath.h" \
704		> "$(GENERIC_DIR)/tclTomMath.h"
705
706# The following target generates the shared libraries in dltest/ that are used
707# for testing; they are included as part of the "tcltest" target (via the
708# BUILD_DLTEST variable) if dynamic loading is supported on this platform. The
709# Makefile in the dltest subdirectory creates the dltest.marker file in this
710# directory after a successful build.
711
712dltest.marker: ${STUB_LIB_FILE}
713	cd dltest ; $(MAKE)
714
715INSTALL_TARGETS = install-binaries install-libraries @EXTRA_INSTALL@
716
717install: $(INSTALL_TARGETS)
718
719install-strip:
720	$(MAKE) $(INSTALL_TARGETS) \
721		INSTALL_PROGRAM="$(INSTALL_PROGRAM) ${INSTALL_STRIP_PROGRAM}" \
722		INSTALL_LIBRARY="$(INSTALL_LIBRARY) ${INSTALL_STRIP_LIBRARY}"
723
724# Note: before running ranlib below, must cd to target directory because some
725# ranlibs write to current directory, and this might not always be possible
726# (e.g. if installing as root).
727
728install-binaries: binaries
729	@for i in "$(LIB_INSTALL_DIR)" "$(BIN_INSTALL_DIR)" \
730		"$(CONFIG_INSTALL_DIR)"; \
731	    do \
732	    if [ ! -d "$$i" ] ; then \
733		echo "Making directory $$i"; \
734		$(INSTALL_DATA_DIR) "$$i"; \
735		else true; \
736		fi; \
737	    done;
738	@echo "Installing $(LIB_FILE) to $(DLL_INSTALL_DIR)/"
739	@@INSTALL_LIB@
740	@chmod 555 "$(DLL_INSTALL_DIR)/$(LIB_FILE)"
741	@ln -sf $(LIB_FILE) "$(DLL_INSTALL_DIR)"/libtcl${SHORT_TCL_VER}.so
742	@echo "Installing libtcl${SHORT_TCL_VER}.a"
743	@$(INSTALL_DATA) libtcl${SHORT_TCL_VER}.a \
744		"$(DLL_INSTALL_DIR)"/libtcl${SHORT_TCL_VER}.a
745	@(cd "$(DLL_INSTALL_DIR)"; $(RANLIB) libtcl${SHORT_TCL_VER}.a)
746	@chmod 555 "$(DLL_INSTALL_DIR)"/libtcl${SHORT_TCL_VER}.a
747	@echo "Installing ${TCL_EXE} as $(BIN_INSTALL_DIR)/tclsh$(VERSION)@EXEEXT@"
748	@$(INSTALL_PROGRAM) ${TCL_EXE} "$(BIN_INSTALL_DIR)/tclsh$(VERSION)@EXEEXT@"
749	@echo "Installing tclConfig.sh to $(SCRIPT_INSTALL_DIR)/"
750	@mkdir -p "$(SCRIPT_INSTALL_DIR)"
751	@$(INSTALL_DATA) tclConfig.sh "$(SCRIPT_INSTALL_DIR)"/tclConfig.sh
752	@if test "$(STUB_LIB_FILE)" != "" ; then \
753	    echo "Installing $(STUB_LIB_FILE) to $(LIB_INSTALL_DIR)/"; \
754	    @INSTALL_STUB_LIB@ ; \
755	fi
756	@EXTRA_INSTALL_BINARIES@
757	@echo "Installing pkg-config file to $(DESTDIR)$(prefix)/libdata/pkgconfig/"
758	@mkdir -p $(DESTDIR)$(prefix)/libdata/pkgconfig
759	@$(INSTALL_DATA) tcl.pc $(DESTDIR)$(prefix)/libdata/pkgconfig/tcl85.pc
760
761install-libraries: libraries $(INSTALL_TZDATA) install-msgs
762	@for i in "$(GENERIC_INCLUDE_INSTALL_DIR)" \
763		"$(UNIX_INCLUDE_INSTALL_DIR)" "$(SCRIPT_INSTALL_DIR)"; \
764	    do \
765	    if [ ! -d "$$i" ] ; then \
766		echo "Making directory $$i"; \
767		$(INSTALL_DATA_DIR) "$$i"; \
768		else true; \
769		fi; \
770	    done;
771	@for i in encoding; \
772	    do \
773	    if [ ! -d "$(SCRIPT_INSTALL_DIR)"/$$i ] ; then \
774		echo "Making directory $(SCRIPT_INSTALL_DIR)/$$i"; \
775		$(INSTALL_DATA_DIR) "$(SCRIPT_INSTALL_DIR)"/$$i; \
776		else true; \
777		fi; \
778	    done;
779	@echo "Installing header files to $(INCLUDE_INSTALL_DIR)/";
780	@for i in $(GENERIC_DIR)/*.h ; \
781	    do \
782	    $(INSTALL_DATA) $$i "$(GENERIC_INCLUDE_INSTALL_DIR)"; \
783	    done;
784	@for i in $(UNIX_DIR)/*.h ; \
785	    do \
786	    $(INSTALL_DATA) $$i "$(UNIX_INCLUDE_INSTALL_DIR)"; \
787	    done;
788	@ln -sf generic/tcl.h "$(INCLUDE_INSTALL_DIR)"/tcl.h
789	@ln -sf generic/tclDecls.h "$(INCLUDE_INSTALL_DIR)"/tclDecls.h
790	@ln -sf generic/tclPlatDecls.h "$(INCLUDE_INSTALL_DIR)"/tclPlatDecls.h
791	@ln -sf generic/tclTomMath.h "$(INCLUDE_INSTALL_DIR)"/tclTomMath.h
792	@ln -sf generic/tclTomMathDecls.h "$(INCLUDE_INSTALL_DIR)"/tclTomMathDecls.h
793	@echo "Installing library files to $(SCRIPT_INSTALL_DIR)/";
794	@for i in $(TOP_DIR)/library/*.tcl $(TOP_DIR)/library/tclIndex \
795		$(UNIX_DIR)/tclAppInit.c @LDAIX_SRC@ @DTRACE_SRC@; \
796	    do \
797	    $(INSTALL_DATA) $$i "$(SCRIPT_INSTALL_DIR)"; \
798	    done;
799	@echo "Installing encoding files to $(SCRIPT_INSTALL_DIR)/encoding/";
800	@for i in $(TOP_DIR)/library/encoding/*.enc ; do \
801		$(INSTALL_DATA) $$i "$(SCRIPT_INSTALL_DIR)"/encoding; \
802	done;
803	@echo "Customizing tcl module path";
804	@echo "::tcl::tm::path add {$(TCL_LIBRARY)}" >> \
805 	    "$(SCRIPT_INSTALL_DIR)"/tm.tcl;
806
807install-tm:
808	@for i in opt0.4 http1.0; \
809	    do \
810	    if [ ! -d "$(SCRIPT_INSTALL_DIR)"/$$i ] ; then \
811		echo "Making directory $(SCRIPT_INSTALL_DIR)/$$i"; \
812		$(INSTALL_DATA_DIR) "$(SCRIPT_INSTALL_DIR)"/$$i; \
813		else true; \
814		fi; \
815	    done;
816	@echo "Installing package http1.0 files to $(SCRIPT_INSTALL_DIR)/http1.0/";
817	@for i in $(TOP_DIR)/library/http1.0/*.tcl ; \
818	    do \
819	    $(INSTALL_DATA) $$i "$(SCRIPT_INSTALL_DIR)"/http1.0; \
820	    done;
821	@echo "Installing package http 2.7.13 as a Tcl Module";
822	@$(INSTALL_DATA) $(TOP_DIR)/library/http/http.tcl "$(SCRIPT_INSTALL_DIR)"/http-2.7.13.tm;
823	@echo "Installing package opt0.4 files to $(SCRIPT_INSTALL_DIR)/opt0.4/";
824	@for i in $(TOP_DIR)/library/opt/*.tcl ; \
825	    do \
826	    $(INSTALL_DATA) $$i "$(SCRIPT_INSTALL_DIR)"/opt0.4; \
827	    done;
828	@echo "Installing package msgcat 1.5.2 as a Tcl Module";
829	@$(INSTALL_DATA) $(TOP_DIR)/library/msgcat/msgcat.tcl "$(SCRIPT_INSTALL_DIR)"/msgcat-1.5.2.tm;
830	@echo "Installing package tcltest 2.3.8 as a Tcl Module";
831	@$(INSTALL_DATA) $(TOP_DIR)/library/tcltest/tcltest.tcl "$(SCRIPT_INSTALL_DIR)"/tcltest-2.3.8.tm;
832
833	@echo "Installing package platform 1.0.14 as a Tcl Module";
834	@$(INSTALL_DATA) $(TOP_DIR)/library/platform/platform.tcl "$(SCRIPT_INSTALL_DIR)"/platform-1.0.14.tm;
835	@echo "Installing package platform::shell 1.1.4 as a Tcl Module";
836	@$(INSTALL_DATA_DIR) "$(SCRIPT_INSTALL_DIR)"/platform;
837	@$(INSTALL_DATA) $(TOP_DIR)/library/platform/shell.tcl "$(SCRIPT_INSTALL_DIR)"/platform/shell-1.1.4.tm;
838
839install-tzdata:
840	@for i in tzdata; \
841	    do \
842	    if [ ! -d "$(SCRIPT_INSTALL_DIR)"/$$i ] ; then \
843		echo "Making directory $(SCRIPT_INSTALL_DIR)/$$i"; \
844		$(INSTALL_DATA_DIR) "$(SCRIPT_INSTALL_DIR)"/$$i; \
845		else true; \
846		fi; \
847	    done;
848	@echo "Installing time zone files to $(SCRIPT_INSTALL_DIR)/tzdata/"
849	@for i in $(TOP_DIR)/library/tzdata/* ; do \
850	    if [ -d $$i ] ; then \
851		ii=`basename $$i`; \
852		if [ ! -d "$(SCRIPT_INSTALL_DIR)"/tzdata/$$ii ] ; then \
853		    $(INSTALL_DATA_DIR) "$(SCRIPT_INSTALL_DIR)"/tzdata/$$ii; \
854		fi; \
855		for j in $$i/* ; do \
856		    if [ -d $$j ] ; then \
857			jj=`basename $$j`; \
858			if [ ! -d "$(SCRIPT_INSTALL_DIR)"/tzdata/$$ii/$$jj ] ; then \
859			    $(INSTALL_DATA_DIR) "$(SCRIPT_INSTALL_DIR)"/tzdata/$$ii/$$jj; \
860			fi; \
861			for k in $$j/* ; do \
862			    $(INSTALL_DATA) $$k "$(SCRIPT_INSTALL_DIR)"/tzdata/$$ii/$$jj; \
863			done; \
864		    else \
865			$(INSTALL_DATA) $$j "$(SCRIPT_INSTALL_DIR)"/tzdata/$$ii; \
866		    fi; \
867		done; \
868	    else \
869		$(INSTALL_DATA) $$i "$(SCRIPT_INSTALL_DIR)"/tzdata; \
870	    fi; \
871	done;
872
873install-msgs:
874	@for i in msgs; \
875	    do \
876	    if [ ! -d "$(SCRIPT_INSTALL_DIR)"/$$i ] ; then \
877		echo "Making directory $(SCRIPT_INSTALL_DIR)/$$i"; \
878		$(INSTALL_DATA_DIR) "$(SCRIPT_INSTALL_DIR)"/$$i; \
879		else true; \
880		fi; \
881	    done;
882	@echo "Installing message catalog files to $(SCRIPT_INSTALL_DIR)/msgs/"
883	@for i in $(TOP_DIR)/library/msgs/*.msg ; do \
884		$(INSTALL_DATA) $$i "$(SCRIPT_INSTALL_DIR)"/msgs; \
885	done;
886
887install-doc: doc
888	@for i in "$(MAN_INSTALL_DIR)" "$(MAN1_INSTALL_DIR)" "$(MAN3_INSTALL_DIR)" "$(MANN_INSTALL_DIR)" ; \
889	    do \
890	    if [ ! -d "$$i" ] ; then \
891		echo "Making directory $$i"; \
892		$(INSTALL_DATA_DIR) "$$i"; \
893		else true; \
894		fi; \
895	    done;
896	@echo "Installing and cross-linking top-level (.1) docs to $(MAN1_INSTALL_DIR)/";
897	@for i in $(TOP_DIR)/doc/*.1; do \
898	    $(SHELL) $(UNIX_DIR)/installManPage $(MAN_FLAGS) $$i "$(MAN1_INSTALL_DIR)"; \
899	done
900
901	@echo "Installing and cross-linking C API (.3) docs to $(MAN3_INSTALL_DIR)/";
902	@for i in $(TOP_DIR)/doc/*.3; do \
903	    $(SHELL) $(UNIX_DIR)/installManPage $(MAN_FLAGS) $$i "$(MAN3_INSTALL_DIR)"; \
904	done
905
906	@echo "Installing and cross-linking command (.n) docs to $(MANN_INSTALL_DIR)/";
907	@for i in $(TOP_DIR)/doc/*.n; do \
908	    $(SHELL) $(UNIX_DIR)/installManPage $(MAN_FLAGS) $$i "$(MANN_INSTALL_DIR)"; \
909	done
910
911# Optional target to install private headers
912install-private-headers: libraries
913	@for i in "$(PRIVATE_INCLUDE_INSTALL_DIR)"; \
914	    do \
915	    if [ ! -d "$$i" ] ; then \
916		echo "Making directory $$i"; \
917		$(INSTALL_DATA_DIR) "$$i"; \
918		else true; \
919		fi; \
920	    done;
921	@echo "Installing private header files to $(PRIVATE_INCLUDE_INSTALL_DIR)/";
922	@for i in $(GENERIC_DIR)/tclInt.h $(GENERIC_DIR)/tclIntDecls.h \
923		$(GENERIC_DIR)/tclIntPlatDecls.h $(GENERIC_DIR)/tclPort.h \
924		$(UNIX_DIR)/tclUnixPort.h; \
925	    do \
926	    $(INSTALL_DATA) $$i "$(PRIVATE_INCLUDE_INSTALL_DIR)"; \
927	    done;
928	@if test -f tclConfig.h; then\
929	    $(INSTALL_DATA) tclConfig.h "$(PRIVATE_INCLUDE_INSTALL_DIR)"; \
930	    fi;
931
932Makefile: $(UNIX_DIR)/Makefile.in $(DLTEST_DIR)/Makefile.in
933	$(SHELL) config.status
934#tclConfig.h: $(UNIX_DIR)/tclConfig.h.in
935#	$(SHELL) config.status
936
937clean:
938	rm -f *.a *.o libtcl* core errs *~ \#* TAGS *.E a.out \
939		errors ${TCL_EXE} tcltest@EXEEXT@ lib.exp Tcl @DTRACE_HDR@
940	cd dltest ; $(MAKE) clean
941
942distclean: clean
943	rm -rf Makefile config.status config.cache config.log tclConfig.sh \
944		$(PACKAGE).* prototype tclConfig.h *.plist Tcl.framework \
945		tcl.pc
946	cd dltest ; $(MAKE) distclean
947
948depend:
949	makedepend -- $(DEPEND_SWITCHES) -- $(SRCS)
950
951#--------------------------------------------------------------------------
952# Rules for how to compile C files
953#--------------------------------------------------------------------------
954
955# Test binaries. The rules for tclTestInit.o and xtTestInit.o are complicated
956# because they are compiled from tclAppInit.c. Can't use the "-o" option
957# because this doesn't work on some strange compilers (e.g. UnixWare).
958#
959# To enable concurrent parallel make of tclsh and tcltest resp xttest, these
960# targets have to depend on tclsh, this ensures that linking of tclsh with
961# tclAppInit.o does not execute concurrently with the renaming and recompiling
962# of that same object file in the targets below.
963
964tclTestInit.o: $(UNIX_DIR)/tclAppInit.c ${TCL_EXE}
965	@if test -f tclAppInit.o ; then \
966	    rm -f tclAppInit.sav; \
967	    mv tclAppInit.o tclAppInit.sav; \
968	fi;
969	$(CC) -c $(APP_CC_SWITCHES) \
970		-DTCL_BUILDTIME_LIBRARY="\"${TCL_BUILDTIME_LIBRARY}\"" \
971		-DTCL_TEST $(UNIX_DIR)/tclAppInit.c
972	rm -f tclTestInit.o
973	mv tclAppInit.o tclTestInit.o
974	@if test -f tclAppInit.sav ; then \
975	    mv tclAppInit.sav tclAppInit.o; \
976	fi;
977
978xtTestInit.o: $(UNIX_DIR)/tclAppInit.c ${TCL_EXE}
979	@if test -f tclAppInit.o ; then \
980	    rm -f tclAppInit.sav; \
981	    mv tclAppInit.o tclAppInit.sav; \
982	fi;
983	$(CC) -c $(APP_CC_SWITCHES) \
984		-DTCL_BUILDTIME_LIBRARY="\"${TCL_BUILDTIME_LIBRARY}\"" \
985		-DTCL_TEST -DTCL_XT_TEST $(UNIX_DIR)/tclAppInit.c
986	rm -f xtTestInit.o
987	mv tclAppInit.o xtTestInit.o
988	@if test -f tclAppInit.sav ; then \
989	    mv tclAppInit.sav tclAppInit.o; \
990	fi;
991
992# Object files used on all Unix systems:
993
994REGHDRS=$(GENERIC_DIR)/regex.h $(GENERIC_DIR)/regguts.h \
995		$(GENERIC_DIR)/regcustom.h
996TCLREHDRS=$(GENERIC_DIR)/tclRegexp.h
997COMPILEHDR=$(GENERIC_DIR)/tclCompile.h
998FSHDR=$(GENERIC_DIR)/tclFileSystem.h
999IOHDR=$(GENERIC_DIR)/tclIO.h
1000MATHHDRS=$(GENERIC_DIR)/tommath.h $(GENERIC_DIR)/tclTomMath.h
1001
1002regcomp.o: $(REGHDRS) $(GENERIC_DIR)/regcomp.c $(GENERIC_DIR)/regc_lex.c \
1003		$(GENERIC_DIR)/regc_color.c $(GENERIC_DIR)/regc_locale.c \
1004		$(GENERIC_DIR)/regc_nfa.c $(GENERIC_DIR)/regc_cvec.c
1005	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/regcomp.c
1006
1007regexec.o: $(REGHDRS) $(GENERIC_DIR)/regexec.c $(GENERIC_DIR)/rege_dfa.c
1008	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/regexec.c
1009
1010regfree.o: $(REGHDRS) $(GENERIC_DIR)/regfree.c
1011	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/regfree.c
1012
1013regerror.o: $(REGHDRS) $(GENERIC_DIR)/regerrs.h $(GENERIC_DIR)/regerror.c
1014	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/regerror.c
1015
1016tclAppInit.o: $(UNIX_DIR)/tclAppInit.c
1017	$(CC) -c $(APP_CC_SWITCHES) $(UNIX_DIR)/tclAppInit.c
1018
1019tclAlloc.o: $(GENERIC_DIR)/tclAlloc.c
1020	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclAlloc.c
1021
1022tclAsync.o: $(GENERIC_DIR)/tclAsync.c
1023	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclAsync.c
1024
1025tclBasic.o: $(GENERIC_DIR)/tclBasic.c $(COMPILEHDR) $(MATHHDRS)
1026	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclBasic.c
1027
1028tclBinary.o: $(GENERIC_DIR)/tclBinary.c
1029	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclBinary.c
1030
1031tclCkalloc.o: $(GENERIC_DIR)/tclCkalloc.c
1032	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclCkalloc.c
1033
1034tclClock.o: $(GENERIC_DIR)/tclClock.c
1035	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclClock.c
1036
1037tclCmdAH.o: $(GENERIC_DIR)/tclCmdAH.c
1038	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclCmdAH.c
1039
1040tclCmdIL.o: $(GENERIC_DIR)/tclCmdIL.c $(TCLREHDRS)
1041	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclCmdIL.c
1042
1043tclCmdMZ.o: $(GENERIC_DIR)/tclCmdMZ.c $(TCLREHDRS)
1044	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclCmdMZ.c
1045
1046tclDate.o: $(GENERIC_DIR)/tclDate.c
1047	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclDate.c
1048
1049tclCompCmds.o: $(GENERIC_DIR)/tclCompCmds.c $(COMPILEHDR)
1050	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclCompCmds.c
1051
1052tclCompExpr.o: $(GENERIC_DIR)/tclCompExpr.c $(COMPILEHDR)
1053	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclCompExpr.c
1054
1055tclCompile.o: $(GENERIC_DIR)/tclCompile.c $(COMPILEHDR)
1056	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclCompile.c
1057
1058tclConfig.o: $(GENERIC_DIR)/tclConfig.c
1059	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclConfig.c
1060
1061tclDictObj.o: $(GENERIC_DIR)/tclDictObj.c $(MATHHDRS)
1062	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclDictObj.c
1063
1064tclEncoding.o: $(GENERIC_DIR)/tclEncoding.c
1065	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclEncoding.c
1066
1067tclEnv.o: $(GENERIC_DIR)/tclEnv.c
1068	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclEnv.c
1069
1070tclEvent.o: $(GENERIC_DIR)/tclEvent.c
1071	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclEvent.c
1072
1073tclExecute.o: $(GENERIC_DIR)/tclExecute.c $(COMPILEHDR) $(MATHHDRS)
1074	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclExecute.c
1075
1076tclFCmd.o: $(GENERIC_DIR)/tclFCmd.c
1077	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclFCmd.c
1078
1079tclFileName.o: $(GENERIC_DIR)/tclFileName.c $(FSHDR) $(TCLREHDRS)
1080	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclFileName.c
1081
1082tclGet.o: $(GENERIC_DIR)/tclGet.c
1083	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclGet.c
1084
1085tclHash.o: $(GENERIC_DIR)/tclHash.c
1086	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclHash.c
1087
1088tclHistory.o: $(GENERIC_DIR)/tclHistory.c
1089	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclHistory.c
1090
1091tclIndexObj.o: $(GENERIC_DIR)/tclIndexObj.c
1092	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclIndexObj.c
1093
1094tclInterp.o: $(GENERIC_DIR)/tclInterp.c
1095	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclInterp.c
1096
1097tclIO.o: $(GENERIC_DIR)/tclIO.c $(IOHDR)
1098	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclIO.c
1099
1100tclIOCmd.o: $(GENERIC_DIR)/tclIOCmd.c
1101	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclIOCmd.c
1102
1103tclIOGT.o: $(GENERIC_DIR)/tclIOGT.c $(IOHDR)
1104	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclIOGT.c
1105
1106tclIOSock.o: $(GENERIC_DIR)/tclIOSock.c
1107	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclIOSock.c
1108
1109tclIOUtil.o: $(GENERIC_DIR)/tclIOUtil.c $(FSHDR)
1110	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclIOUtil.c
1111
1112tclIORChan.o: $(GENERIC_DIR)/tclIORChan.c $(IOHDR)
1113	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclIORChan.c
1114
1115tclLink.o: $(GENERIC_DIR)/tclLink.c
1116	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclLink.c
1117
1118tclListObj.o: $(GENERIC_DIR)/tclListObj.c
1119	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclListObj.c
1120
1121tclLiteral.o: $(GENERIC_DIR)/tclLiteral.c $(COMPILEHDR)
1122	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclLiteral.c
1123
1124tclObj.o: $(GENERIC_DIR)/tclObj.c $(COMPILEHDR) $(MATHHDRS)
1125	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclObj.c
1126
1127tclLoad.o: $(GENERIC_DIR)/tclLoad.c
1128	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclLoad.c
1129
1130tclLoadAix.o: $(UNIX_DIR)/tclLoadAix.c
1131	$(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclLoadAix.c
1132
1133tclLoadDl.o: $(UNIX_DIR)/tclLoadDl.c
1134	$(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclLoadDl.c
1135
1136tclLoadDl2.o: $(UNIX_DIR)/tclLoadDl2.c
1137	$(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclLoadDl2.c
1138
1139tclLoadDld.o: $(UNIX_DIR)/tclLoadDld.c
1140	$(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclLoadDld.c
1141
1142tclLoadDyld.o: $(UNIX_DIR)/tclLoadDyld.c
1143	$(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclLoadDyld.c
1144
1145tclLoadNone.o: $(GENERIC_DIR)/tclLoadNone.c
1146	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclLoadNone.c
1147
1148tclLoadOSF.o: $(UNIX_DIR)/tclLoadOSF.c
1149	$(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclLoadOSF.c
1150
1151tclLoadShl.o: $(UNIX_DIR)/tclLoadShl.c
1152	$(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclLoadShl.c
1153
1154tclMain.o: $(GENERIC_DIR)/tclMain.c
1155	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclMain.c
1156
1157tclNamesp.o: $(GENERIC_DIR)/tclNamesp.c
1158	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclNamesp.c
1159
1160tclNotify.o: $(GENERIC_DIR)/tclNotify.c
1161	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclNotify.c
1162
1163tclParse.o: $(GENERIC_DIR)/tclParse.c
1164	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclParse.c
1165
1166tclPanic.o: $(GENERIC_DIR)/tclPanic.c
1167	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclPanic.c
1168
1169tclPathObj.o: $(GENERIC_DIR)/tclPathObj.c $(FSHDR)
1170	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclPathObj.c
1171
1172tclPipe.o: $(GENERIC_DIR)/tclPipe.c
1173	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclPipe.c
1174
1175tclPkg.o: $(GENERIC_DIR)/tclPkg.c
1176	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclPkg.c
1177
1178# TIP #59, embedding of configuration information into the binary library.
1179#
1180# Part of Tcl's configuration information are the paths where it was installed
1181# and where it will look for its libraries (which can be different). We derive
1182# this information from the variables which can be overridden by the user. As
1183# every path can be configured separately we do not remember one general
1184# prefix/exec_prefix but all the different paths individually.
1185
1186tclPkgConfig.o: $(GENERIC_DIR)/tclPkgConfig.c
1187	$(CC) -c $(CC_SWITCHES)					\
1188		-DCFG_INSTALL_LIBDIR="\"$(LIB_INSTALL_DIR)\"" \
1189		-DCFG_INSTALL_BINDIR="\"$(BIN_INSTALL_DIR)\"" \
1190		-DCFG_INSTALL_SCRDIR="\"$(SCRIPT_INSTALL_DIR)\"" \
1191		-DCFG_INSTALL_INCDIR="\"$(INCLUDE_INSTALL_DIR)\"" \
1192		-DCFG_INSTALL_DOCDIR="\"$(MAN_INSTALL_DIR)\"" \
1193		\
1194		-DCFG_RUNTIME_LIBDIR="\"$(libdir)\"" \
1195		-DCFG_RUNTIME_BINDIR="\"$(bindir)\"" \
1196		-DCFG_RUNTIME_SCRDIR="\"$(TCL_LIBRARY)\"" \
1197		-DCFG_RUNTIME_INCDIR="\"$(includedir)\"" \
1198		-DCFG_RUNTIME_DOCDIR="\"$(mandir)\"" \
1199		\
1200		$(GENERIC_DIR)/tclPkgConfig.c
1201
1202tclPosixStr.o: $(GENERIC_DIR)/tclPosixStr.c
1203	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclPosixStr.c
1204
1205tclPreserve.o: $(GENERIC_DIR)/tclPreserve.c
1206	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclPreserve.c
1207
1208tclProc.o: $(GENERIC_DIR)/tclProc.c $(COMPILEHDR)
1209	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclProc.c
1210
1211tclRegexp.o: $(GENERIC_DIR)/tclRegexp.c $(TCLREHDRS)
1212	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclRegexp.c
1213
1214tclResolve.o: $(GENERIC_DIR)/tclResolve.c
1215	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclResolve.c
1216
1217tclResult.o: $(GENERIC_DIR)/tclResult.c
1218	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclResult.c
1219
1220tclScan.o: $(GENERIC_DIR)/tclScan.c
1221	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclScan.c
1222
1223tclStringObj.o: $(GENERIC_DIR)/tclStringObj.c $(MATHHDRS)
1224	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclStringObj.c
1225
1226tclStrToD.o: $(GENERIC_DIR)/tclStrToD.c $(MATHHDRS)
1227	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclStrToD.c
1228
1229tclStubInit.o: $(GENERIC_DIR)/tclStubInit.c
1230	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclStubInit.c
1231
1232tclTrace.o: $(GENERIC_DIR)/tclTrace.c
1233	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclTrace.c
1234
1235tclUtil.o: $(GENERIC_DIR)/tclUtil.c
1236	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclUtil.c
1237
1238tclUtf.o: $(GENERIC_DIR)/tclUtf.c $(GENERIC_DIR)/tclUniData.c
1239	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclUtf.c
1240
1241tclVar.o: $(GENERIC_DIR)/tclVar.c
1242	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclVar.c
1243
1244tclTest.o: $(GENERIC_DIR)/tclTest.c $(IOHDR) $(TCLREHDRS)
1245	$(CC) -c $(APP_CC_SWITCHES) $(GENERIC_DIR)/tclTest.c
1246
1247tclTestObj.o: $(GENERIC_DIR)/tclTestObj.c $(MATHHDRS)
1248	$(CC) -c $(APP_CC_SWITCHES) $(GENERIC_DIR)/tclTestObj.c
1249
1250tclTestProcBodyObj.o: $(GENERIC_DIR)/tclTestProcBodyObj.c
1251	$(CC) -c $(APP_CC_SWITCHES) $(GENERIC_DIR)/tclTestProcBodyObj.c
1252
1253tclTimer.o: $(GENERIC_DIR)/tclTimer.c
1254	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclTimer.c
1255
1256tclThread.o: $(GENERIC_DIR)/tclThread.c
1257	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclThread.c
1258
1259tclThreadAlloc.o: $(GENERIC_DIR)/tclThreadAlloc.c
1260	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclThreadAlloc.c
1261
1262tclThreadJoin.o: $(GENERIC_DIR)/tclThreadJoin.c
1263	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclThreadJoin.c
1264
1265tclThreadStorage.o: $(GENERIC_DIR)/tclThreadStorage.c
1266	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclThreadStorage.c
1267
1268tclThreadTest.o: $(GENERIC_DIR)/tclThreadTest.c
1269	$(CC) -c $(APP_CC_SWITCHES) $(GENERIC_DIR)/tclThreadTest.c
1270
1271tclTomMathInterface.o: $(GENERIC_DIR)/tclTomMathInterface.c $(MATHHDRS)
1272	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tclTomMathInterface.c
1273
1274bncore.o: $(TOMMATH_DIR)/bncore.c $(MATHHDRS)
1275	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bncore.c
1276
1277bn_reverse.o: $(TOMMATH_DIR)/bn_reverse.c $(MATHHDRS)
1278	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_reverse.c
1279
1280bn_fast_s_mp_mul_digs.o: $(TOMMATH_DIR)/bn_fast_s_mp_mul_digs.c $(MATHHDRS)
1281	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_fast_s_mp_mul_digs.c
1282
1283bn_fast_s_mp_sqr.o: $(TOMMATH_DIR)/bn_fast_s_mp_sqr.c $(MATHHDRS)
1284	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_fast_s_mp_sqr.c
1285
1286bn_mp_add.o: $(TOMMATH_DIR)/bn_mp_add.c $(MATHHDRS)
1287	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_add.c
1288
1289bn_mp_add_d.o: $(TOMMATH_DIR)/bn_mp_add_d.c $(MATHHDRS)
1290	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_add_d.c
1291
1292bn_mp_and.o: $(TOMMATH_DIR)/bn_mp_and.c $(MATHHDRS)
1293	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_and.c
1294
1295bn_mp_clamp.o: $(TOMMATH_DIR)/bn_mp_clamp.c $(MATHHDRS)
1296	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_clamp.c
1297
1298bn_mp_clear.o: $(TOMMATH_DIR)/bn_mp_clear.c $(MATHHDRS)
1299	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_clear.c
1300
1301bn_mp_clear_multi.o: $(TOMMATH_DIR)/bn_mp_clear_multi.c $(MATHHDRS)
1302	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_clear_multi.c
1303
1304bn_mp_cmp.o: $(TOMMATH_DIR)/bn_mp_cmp.c $(MATHHDRS)
1305	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_cmp.c
1306
1307bn_mp_cmp_d.o: $(TOMMATH_DIR)/bn_mp_cmp_d.c $(MATHHDRS)
1308	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_cmp_d.c
1309
1310bn_mp_cmp_mag.o: $(TOMMATH_DIR)/bn_mp_cmp_mag.c $(MATHHDRS)
1311	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_cmp_mag.c
1312
1313bn_mp_cnt_lsb.o: $(TOMMATH_DIR)/bn_mp_cnt_lsb.c $(MATHHDRS)
1314	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_cnt_lsb.c
1315
1316bn_mp_copy.o: $(TOMMATH_DIR)/bn_mp_copy.c $(MATHHDRS)
1317	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_copy.c
1318
1319bn_mp_count_bits.o: $(TOMMATH_DIR)/bn_mp_count_bits.c $(MATHHDRS)
1320	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_count_bits.c
1321
1322bn_mp_div.o: $(TOMMATH_DIR)/bn_mp_div.c $(MATHHDRS)
1323	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_div.c
1324
1325bn_mp_div_d.o: $(TOMMATH_DIR)/bn_mp_div_d.c $(MATHHDRS)
1326	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_div_d.c
1327
1328bn_mp_div_2.o: $(TOMMATH_DIR)/bn_mp_div_2.c $(MATHHDRS)
1329	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_div_2.c
1330
1331bn_mp_div_2d.o: $(TOMMATH_DIR)/bn_mp_div_2d.c $(MATHHDRS)
1332	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_div_2d.c
1333
1334bn_mp_div_3.o: $(TOMMATH_DIR)/bn_mp_div_3.c $(MATHHDRS)
1335	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_div_3.c
1336
1337bn_mp_exch.o: $(TOMMATH_DIR)/bn_mp_exch.c $(MATHHDRS)
1338	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_exch.c
1339
1340bn_mp_expt_d.o: $(TOMMATH_DIR)/bn_mp_expt_d.c $(MATHHDRS)
1341	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_expt_d.c
1342
1343bn_mp_grow.o: $(TOMMATH_DIR)/bn_mp_grow.c $(MATHHDRS)
1344	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_grow.c
1345
1346bn_mp_init.o: $(TOMMATH_DIR)/bn_mp_init.c $(MATHHDRS)
1347	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_init.c
1348
1349bn_mp_init_copy.o: $(TOMMATH_DIR)/bn_mp_init_copy.c $(MATHHDRS)
1350	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_init_copy.c
1351
1352bn_mp_init_multi.o: $(TOMMATH_DIR)/bn_mp_init_multi.c $(MATHHDRS)
1353	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_init_multi.c
1354
1355bn_mp_init_set.o: $(TOMMATH_DIR)/bn_mp_init_set.c $(MATHHDRS)
1356	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_init_set.c
1357
1358bn_mp_init_set_int.o: $(TOMMATH_DIR)/bn_mp_init_set_int.c $(MATHHDRS)
1359	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_init_set_int.c
1360
1361bn_mp_init_size.o:$(TOMMATH_DIR)/bn_mp_init_size.c $(MATHHDRS)
1362	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_init_size.c
1363
1364bn_mp_karatsuba_mul.o: $(TOMMATH_DIR)/bn_mp_karatsuba_mul.c $(MATHHDRS)
1365	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_karatsuba_mul.c
1366
1367bn_mp_karatsuba_sqr.o: $(TOMMATH_DIR)/bn_mp_karatsuba_sqr.c $(MATHHDRS)
1368	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_karatsuba_sqr.c
1369
1370bn_mp_lshd.o: $(TOMMATH_DIR)/bn_mp_lshd.c $(MATHHDRS)
1371	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_lshd.c
1372
1373bn_mp_mod.o: $(TOMMATH_DIR)/bn_mp_mod.c $(MATHHDRS)
1374	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_mod.c
1375
1376bn_mp_mod_2d.o: $(TOMMATH_DIR)/bn_mp_mod_2d.c $(MATHHDRS)
1377	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_mod_2d.c
1378
1379bn_mp_mul.o: $(TOMMATH_DIR)/bn_mp_mul.c $(MATHHDRS)
1380	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_mul.c
1381
1382bn_mp_mul_2.o: $(TOMMATH_DIR)/bn_mp_mul_2.c $(MATHHDRS)
1383	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_mul_2.c
1384
1385bn_mp_mul_2d.o: $(TOMMATH_DIR)/bn_mp_mul_2d.c $(MATHHDRS)
1386	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_mul_2d.c
1387
1388bn_mp_mul_d.o: $(TOMMATH_DIR)/bn_mp_mul_d.c $(MATHHDRS)
1389	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_mul_d.c
1390
1391bn_mp_neg.o: $(TOMMATH_DIR)/bn_mp_neg.c $(MATHHDRS)
1392	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_neg.c
1393
1394bn_mp_or.o: $(TOMMATH_DIR)/bn_mp_or.c $(MATHHDRS)
1395	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_or.c
1396
1397bn_mp_radix_size.o: $(TOMMATH_DIR)/bn_mp_radix_size.c $(MATHHDRS)
1398	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_radix_size.c
1399
1400bn_mp_radix_smap.o: $(TOMMATH_DIR)/bn_mp_radix_smap.c $(MATHHDRS)
1401	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_radix_smap.c
1402
1403bn_mp_read_radix.o: $(TOMMATH_DIR)/bn_mp_read_radix.c $(MATHHDRS)
1404	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_read_radix.c
1405
1406bn_mp_rshd.o: $(TOMMATH_DIR)/bn_mp_rshd.c $(MATHHDRS)
1407	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_rshd.c
1408
1409bn_mp_set.o: $(TOMMATH_DIR)/bn_mp_set.c $(MATHHDRS)
1410	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_set.c
1411
1412bn_mp_set_int.o: $(TOMMATH_DIR)/bn_mp_set_int.c $(MATHHDRS)
1413	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_set_int.c
1414
1415bn_mp_shrink.o: $(TOMMATH_DIR)/bn_mp_shrink.c $(MATHHDRS)
1416	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_shrink.c
1417
1418bn_mp_sqr.o: $(TOMMATH_DIR)/bn_mp_sqr.c $(MATHHDRS)
1419	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_sqr.c
1420
1421bn_mp_sqrt.o: $(TOMMATH_DIR)/bn_mp_sqrt.c $(MATHHDRS)
1422	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_sqrt.c
1423
1424bn_mp_sub.o: $(TOMMATH_DIR)/bn_mp_sub.c $(MATHHDRS)
1425	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_sub.c
1426
1427bn_mp_sub_d.o: $(TOMMATH_DIR)/bn_mp_sub_d.c $(MATHHDRS)
1428	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_sub_d.c
1429
1430bn_mp_to_unsigned_bin.o: $(TOMMATH_DIR)/bn_mp_to_unsigned_bin.c $(MATHHDRS)
1431	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_to_unsigned_bin.c
1432
1433bn_mp_to_unsigned_bin_n.o: $(TOMMATH_DIR)/bn_mp_to_unsigned_bin_n.c $(MATHHDRS)
1434	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_to_unsigned_bin_n.c
1435
1436bn_mp_toom_mul.o: $(TOMMATH_DIR)/bn_mp_toom_mul.c $(MATHHDRS)
1437	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_toom_mul.c
1438
1439bn_mp_toom_sqr.o: $(TOMMATH_DIR)/bn_mp_toom_sqr.c $(MATHHDRS)
1440	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_toom_sqr.c
1441
1442bn_mp_toradix_n.o: $(TOMMATH_DIR)/bn_mp_toradix_n.c $(MATHHDRS)
1443	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_toradix_n.c
1444
1445bn_mp_unsigned_bin_size.o: $(TOMMATH_DIR)/bn_mp_unsigned_bin_size.c $(MATHHDRS)
1446	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_unsigned_bin_size.c
1447
1448bn_mp_xor.o: $(TOMMATH_DIR)/bn_mp_xor.c $(MATHHDRS)
1449	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_xor.c
1450
1451bn_mp_zero.o: $(TOMMATH_DIR)/bn_mp_zero.c $(MATHHDRS)
1452	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_zero.c
1453
1454bn_s_mp_add.o: $(TOMMATH_DIR)/bn_s_mp_add.c $(MATHHDRS)
1455	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_s_mp_add.c
1456
1457bn_s_mp_mul_digs.o: $(TOMMATH_DIR)/bn_s_mp_mul_digs.c $(MATHHDRS)
1458	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_s_mp_mul_digs.c
1459
1460bn_s_mp_sqr.o: $(TOMMATH_DIR)/bn_s_mp_sqr.c $(MATHHDRS)
1461	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_s_mp_sqr.c
1462
1463bn_s_mp_sub.o: $(TOMMATH_DIR)/bn_s_mp_sub.c $(MATHHDRS)
1464	$(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_s_mp_sub.c
1465
1466tclUnixChan.o: $(UNIX_DIR)/tclUnixChan.c $(IOHDR)
1467	$(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclUnixChan.c
1468
1469tclUnixEvent.o: $(UNIX_DIR)/tclUnixEvent.c
1470	$(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclUnixEvent.c
1471
1472tclUnixFCmd.o: $(UNIX_DIR)/tclUnixFCmd.c
1473	$(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclUnixFCmd.c
1474
1475tclUnixFile.o: $(UNIX_DIR)/tclUnixFile.c $(FSHDR)
1476	$(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclUnixFile.c
1477
1478tclUnixNotfy.o: $(UNIX_DIR)/tclUnixNotfy.c
1479	$(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclUnixNotfy.c
1480
1481tclUnixPipe.o: $(UNIX_DIR)/tclUnixPipe.c
1482	$(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclUnixPipe.c
1483
1484tclUnixSock.o: $(UNIX_DIR)/tclUnixSock.c
1485	$(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclUnixSock.c
1486
1487tclUnixTest.o: $(UNIX_DIR)/tclUnixTest.c
1488	$(CC) -c $(APP_CC_SWITCHES) $(UNIX_DIR)/tclUnixTest.c
1489
1490tclUnixThrd.o: $(UNIX_DIR)/tclUnixThrd.c
1491	$(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclUnixThrd.c
1492
1493tclUnixTime.o: $(UNIX_DIR)/tclUnixTime.c
1494	$(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclUnixTime.c
1495
1496tclUnixInit.o: $(UNIX_DIR)/tclUnixInit.c tclConfig.sh
1497	$(CC) -c $(CC_SWITCHES) -DTCL_LIBRARY=\"${TCL_LIBRARY}\" \
1498		-DTCL_PACKAGE_PATH="\"${TCL_PACKAGE_PATH}\"" \
1499		$(UNIX_DIR)/tclUnixInit.c
1500
1501tclUnixCompat.o: $(UNIX_DIR)/tclUnixCompat.c
1502	$(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclUnixCompat.c
1503
1504# The following are Mac OS X only sources:
1505tclMacOSXBundle.o: $(MAC_OSX_DIR)/tclMacOSXBundle.c
1506	$(CC) -c $(CC_SWITCHES) $(MAC_OSX_DIR)/tclMacOSXBundle.c
1507
1508tclMacOSXFCmd.o: $(MAC_OSX_DIR)/tclMacOSXFCmd.c
1509	$(CC) -c $(CC_SWITCHES) $(MAC_OSX_DIR)/tclMacOSXFCmd.c
1510
1511tclMacOSXNotify.o: $(MAC_OSX_DIR)/tclMacOSXNotify.c
1512	$(CC) -c $(CC_SWITCHES) $(MAC_OSX_DIR)/tclMacOSXNotify.c
1513
1514# The following is a CYGWIN only source:
1515tclWinError.o: $(TOP_DIR)/win/tclWinError.c
1516	$(CC) -c $(CC_SWITCHES) $(TOP_DIR)/win/tclWinError.c
1517
1518# DTrace support
1519
1520$(TCL_OBJS) $(STUB_LIB_OBJS) $(TCLSH_OBJS) $(TCLTEST_OBJS) $(XTTEST_OBJS): @DTRACE_HDR@
1521
1522$(DTRACE_HDR): $(DTRACE_SRC)
1523	$(DTRACE) -h $(DTRACE_SWITCHES) -o $@ -s $(DTRACE_SRC)
1524
1525$(DTRACE_OBJ): $(DTRACE_SRC) $(TCL_OBJS)
1526	$(DTRACE) -G $(DTRACE_SWITCHES) -o $@ -s $(DTRACE_SRC) $(TCL_OBJS)
1527
1528#--------------------------------------------------------------------------
1529# The following targets are not completely general. They are provide purely
1530# for documentation purposes so people who are interested in the Xt based
1531# notifier can modify them to suit their own installation.
1532#--------------------------------------------------------------------------
1533
1534xttest:	${XTTEST_OBJS} ${GENERIC_OBJS} ${UNIX_OBJS} ${COMPAT_OBJS} \
1535	@DL_OBJS@ ${BUILD_DLTEST}
1536	${CC} ${XTTEST_OBJS} ${GENERIC_OBJS} ${UNIX_OBJS} ${COMPAT_OBJS} \
1537		@DL_OBJS@ @TCL_BUILD_LIB_SPEC@ ${LIBS} \
1538		${CC_SEARCH_FLAGS} -L/usr/openwin/lib -lXt -o xttest
1539
1540tclXtNotify.o: $(UNIX_DIR)/tclXtNotify.c
1541	$(CC) -c $(APP_CC_SWITCHES) -I/usr/openwin/include \
1542		$(UNIX_DIR)/tclXtNotify.c
1543
1544tclXtTest.o: $(UNIX_DIR)/tclXtTest.c
1545	$(CC) -c $(APP_CC_SWITCHES) -I/usr/openwin/include \
1546		$(UNIX_DIR)/tclXtTest.c
1547
1548#--------------------------------------------------------------------------
1549# Compat binaries, these must be compiled for use in a shared library even
1550# though they may be placed in a static executable or library. Since they are
1551# included in both the tcl library and the stub library, they need to be
1552# relocatable.
1553#--------------------------------------------------------------------------
1554
1555fixstrtod.o: $(COMPAT_DIR)/fixstrtod.c
1556	$(CC) -c $(STUB_CC_SWITCHES) $(COMPAT_DIR)/fixstrtod.c
1557
1558opendir.o: $(COMPAT_DIR)/opendir.c
1559	$(CC) -c $(STUB_CC_SWITCHES) $(COMPAT_DIR)/opendir.c
1560
1561memcmp.o: $(COMPAT_DIR)/memcmp.c
1562	$(CC) -c $(STUB_CC_SWITCHES) $(COMPAT_DIR)/memcmp.c
1563
1564strncasecmp.o: $(COMPAT_DIR)/strncasecmp.c
1565	$(CC) -c $(STUB_CC_SWITCHES) $(COMPAT_DIR)/strncasecmp.c
1566
1567strstr.o: $(COMPAT_DIR)/strstr.c
1568	$(CC) -c $(STUB_CC_SWITCHES) $(COMPAT_DIR)/strstr.c
1569
1570strtod.o: $(COMPAT_DIR)/strtod.c
1571	$(CC) -c $(STUB_CC_SWITCHES) $(COMPAT_DIR)/strtod.c
1572
1573strtol.o: $(COMPAT_DIR)/strtol.c
1574	$(CC) -c $(STUB_CC_SWITCHES) $(COMPAT_DIR)/strtol.c
1575
1576strtoul.o: $(COMPAT_DIR)/strtoul.c
1577	$(CC) -c $(STUB_CC_SWITCHES) $(COMPAT_DIR)/strtoul.c
1578
1579waitpid.o: $(COMPAT_DIR)/waitpid.c
1580	$(CC) -c $(STUB_CC_SWITCHES) $(COMPAT_DIR)/waitpid.c
1581
1582#--------------------------------------------------------------------------
1583# Stub library binaries, these must be compiled for use in a shared library
1584# even though they will be placed in a static archive
1585#--------------------------------------------------------------------------
1586
1587tclStubLib.o: $(GENERIC_DIR)/tclStubLib.c
1588	$(CC) -c $(STUB_CC_SWITCHES) -DSTATIC_BUILD $(GENERIC_DIR)/tclStubLib.c
1589
1590.c.o:
1591	$(CC) -c $(CC_SWITCHES) $<
1592
1593#
1594# Target to regenerate header files and stub files from the *.decls tables.
1595#
1596
1597$(GENERIC_DIR)/tclStubInit.c: $(GENERIC_DIR)/tcl.decls \
1598		$(GENERIC_DIR)/tclInt.decls $(GENERIC_DIR)/tclTomMath.decls
1599	@echo "Warning: tclStubInit.c may be out of date."
1600	@echo "Developers may want to run \"make genstubs\" to regenerate."
1601	@echo "This warning can be safely ignored, do not report as a bug!"
1602
1603genstubs:
1604	$(TCL_EXE) $(TOOL_DIR)/genStubs.tcl $(GENERIC_DIR) \
1605		$(GENERIC_DIR)/tcl.decls $(GENERIC_DIR)/tclInt.decls \
1606		$(GENERIC_DIR)/tclTomMath.decls
1607
1608#
1609# Target to check that all exported functions have an entry in the stubs
1610# tables.
1611#
1612
1613checkstubs: $(TCL_LIB_FILE)
1614	-@for i in `nm -p $(TCL_LIB_FILE) \
1615		| awk '$$2 ~ /^[TDBCS]$$/ { sub("^_", "", $$3); print $$3 }' \
1616		| sort -n`; do \
1617		match=0; \
1618		for j in $(TCL_DECLS); do \
1619		    if [ `grep -c "$$i *(" $$j` -gt 0 ]; then \
1620			match=1; \
1621		    fi; \
1622		done; \
1623		if [ $$match -eq 0 ]; then echo $$i; fi \
1624	done
1625
1626#
1627# Target to check that all public APIs which are not command implementations
1628# have an entry in section three of the distributed manpages.
1629#
1630
1631checkdoc: $(TCL_LIB_FILE)
1632	-@for i in `nm -p $(TCL_LIB_FILE) | awk '$$3 ~ /Tcl_/ { print $$3 }' \
1633		| grep -v 'Cmd$$' | sort -n`; do \
1634		match=0; \
1635		for j in $(TOP_DIR)/doc/*.3; do \
1636		    if [ `grep '\-' $$j | grep -c $$i` -gt 0 ]; then \
1637			match=1; \
1638		    fi; \
1639		done; \
1640		if [ $$match -eq 0 ]; then echo $$i; fi \
1641	done
1642
1643#
1644# Target to check for proper usage of UCHAR macro.
1645#
1646
1647checkuchar:
1648	-egrep isalnum\|isalpha\|iscntrl\|isdigit\|islower\|isprint\|ispunct\|isspace\|isupper\|isxdigit\|toupper\|tolower $(SRCS) | grep -v UCHAR
1649
1650#
1651# Target to make sure that only symbols with "Tcl" prefixes are exported.
1652#
1653
1654checkexports: $(TCL_LIB_FILE)
1655	-@nm -p $(TCL_LIB_FILE) \
1656	| awk '$$2 ~ /^[TDBCS]$$/ { sub("^_", "", $$3); print $$3 }' \
1657	| sort -n | grep -E -v '^[Tt]cl' || true
1658
1659#--------------------------------------------------------------------------
1660# Distribution building rules
1661#--------------------------------------------------------------------------
1662
1663#
1664# Target to create a Tcl RPM for Linux. Requires that you be on a Linux
1665# system.
1666#
1667
1668rpm: all
1669	rm -f THIS.TCL.SPEC
1670	echo "%define _builddir `pwd`" > THIS.TCL.SPEC
1671	echo "%define _rpmdir `pwd`/RPMS" >> THIS.TCL.SPEC
1672	cat tcl.spec >> THIS.TCL.SPEC
1673	mkdir -p RPMS/i386
1674	rpmbuild -bb THIS.TCL.SPEC
1675	mv RPMS/i386/*.rpm .
1676	rm -rf RPMS THIS.TCL.SPEC
1677
1678#
1679# Target to create a proper Tcl distribution from information in the master
1680# source directory. DISTDIR must be defined to indicate where to put the
1681# distribution. DISTDIR must be an absolute path name.
1682#
1683
1684DISTROOT = /tmp/dist
1685DISTNAME = tcl${VERSION}${PATCH_LEVEL}
1686ZIPNAME	 = tcl${MAJOR_VERSION}${MINOR_VERSION}${PATCH_LEVEL}-src.zip
1687DISTDIR	 = $(DISTROOT)/$(DISTNAME)
1688$(UNIX_DIR)/configure: $(UNIX_DIR)/configure.in $(UNIX_DIR)/tcl.m4 \
1689		$(UNIX_DIR)/aclocal.m4
1690	cd $(UNIX_DIR); autoconf
1691$(MAC_OSX_DIR)/configure: $(MAC_OSX_DIR)/configure.ac $(UNIX_DIR)/configure
1692	cd $(MAC_OSX_DIR); autoconf
1693$(UNIX_DIR)/tclConfig.h.in: $(MAC_OSX_DIR)/configure
1694	cd $(MAC_OSX_DIR); autoheader; touch $@
1695
1696dist: $(UNIX_DIR)/configure $(UNIX_DIR)/tclConfig.h.in $(UNIX_DIR)/tcl.pc.in $(MAC_OSX_DIR)/configure genstubs
1697	rm -rf $(DISTDIR)
1698	mkdir -p $(DISTDIR)/unix
1699	cp -p $(UNIX_DIR)/*.[ch] $(DISTDIR)/unix
1700	cp $(UNIX_DIR)/Makefile.in $(DISTDIR)/unix
1701	chmod 664 $(DISTDIR)/unix/Makefile.in
1702	cp $(UNIX_DIR)/configure $(UNIX_DIR)/configure.in \
1703		$(UNIX_DIR)/tcl.m4 $(UNIX_DIR)/aclocal.m4 \
1704		$(UNIX_DIR)/tclConfig.sh.in $(UNIX_DIR)/install-sh \
1705		$(UNIX_DIR)/README $(UNIX_DIR)/ldAix $(UNIX_DIR)/tcl.spec \
1706		$(UNIX_DIR)/installManPage $(UNIX_DIR)/tclConfig.h.in \
1707		$(UNIX_DIR)/tcl.pc.in $(DISTDIR)/unix
1708	chmod 775 $(DISTDIR)/unix/configure $(DISTDIR)/unix/configure.in
1709	chmod 775 $(DISTDIR)/unix/ldAix
1710	@mkdir $(DISTDIR)/generic
1711	cp -p $(GENERIC_DIR)/*.[cdh] $(DISTDIR)/generic
1712	cp -p $(GENERIC_DIR)/*.decls $(DISTDIR)/generic
1713	cp -p $(GENERIC_DIR)/README $(DISTDIR)/generic
1714	cp -p $(GENERIC_DIR)/tclGetDate.y $(DISTDIR)/generic
1715	cp -p $(TOP_DIR)/changes $(TOP_DIR)/ChangeLog $(TOP_DIR)/README \
1716		$(TOP_DIR)/ChangeLog.[12]??? $(TOP_DIR)/license.terms \
1717		$(DISTDIR)
1718	@mkdir $(DISTDIR)/library
1719	cp -p $(TOP_DIR)/license.terms $(TOP_DIR)/library/*.tcl \
1720		$(TOP_DIR)/library/tclIndex $(DISTDIR)/library
1721	for i in http1.0 http opt msgcat reg dde tcltest platform; \
1722	    do \
1723		mkdir $(DISTDIR)/library/$$i ;\
1724		cp -p $(TOP_DIR)/library/$$i/*.tcl $(DISTDIR)/library/$$i; \
1725	    done;
1726	@mkdir $(DISTDIR)/library/encoding
1727	cp -p $(TOP_DIR)/library/encoding/*.enc $(DISTDIR)/library/encoding
1728	@mkdir $(DISTDIR)/library/msgs
1729	cp -p $(TOP_DIR)/library/msgs/*.msg $(DISTDIR)/library/msgs
1730	@echo cp -r $(TOP_DIR)/library/tzdata $(DISTDIR)/library/tzdata
1731	@( cd $(TOP_DIR); \
1732	  find library/tzdata -name CVS -prune -o -type f -print ) \
1733	    | ( cd $(TOP_DIR) ; xargs tar cf - ) \
1734	    | ( cd $(DISTDIR) ; tar xfp - )
1735	@mkdir $(DISTDIR)/doc
1736	cp -p $(TOP_DIR)/license.terms $(TOP_DIR)/doc/*.[13n] \
1737		$(TOP_DIR)/doc/man.macros $(DISTDIR)/doc
1738	@mkdir $(DISTDIR)/compat
1739	cp -p $(TOP_DIR)/license.terms $(COMPAT_DIR)/*.[ch] \
1740		$(COMPAT_DIR)/README $(DISTDIR)/compat
1741	@mkdir $(DISTDIR)/tests
1742	cp -p $(TOP_DIR)/license.terms $(DISTDIR)/tests
1743	cp -p $(TOP_DIR)/tests/*.test $(TOP_DIR)/tests/README \
1744		$(TOP_DIR)/tests/httpd $(TOP_DIR)/tests/*.tcl \
1745		$(DISTDIR)/tests
1746	@mkdir $(DISTDIR)/win
1747	cp $(TOP_DIR)/win/Makefile.in $(DISTDIR)/win
1748	cp $(TOP_DIR)/win/configure.in $(TOP_DIR)/win/configure \
1749		$(TOP_DIR)/win/tclConfig.sh.in \
1750		$(TOP_DIR)/win/tcl.m4 $(TOP_DIR)/win/aclocal.m4 \
1751		$(TOP_DIR)/win/tclsh.exe.manifest.in \
1752		$(DISTDIR)/win
1753	cp -p $(TOP_DIR)/win/*.[ch] $(TOP_DIR)/win/*.ico $(TOP_DIR)/win/*.rc \
1754		$(DISTDIR)/win
1755	cp -p $(TOP_DIR)/win/*.bat $(DISTDIR)/win
1756	cp -p $(TOP_DIR)/win/makefile.* $(DISTDIR)/win
1757	cp -p $(TOP_DIR)/win/rules.vc $(DISTDIR)/win
1758	cp -p $(TOP_DIR)/win/coffbase.txt $(DISTDIR)/win
1759	cp -p $(TOP_DIR)/win/tcl.hpj.in $(DISTDIR)/win
1760	cp -p $(TOP_DIR)/win/tcl.ds* $(DISTDIR)/win
1761	cp -p $(TOP_DIR)/win/README $(DISTDIR)/win
1762	cp -p $(TOP_DIR)/license.terms $(DISTDIR)/win
1763	@mkdir $(DISTDIR)/macosx
1764	cp -p $(MAC_OSX_DIR)/GNUmakefile $(MAC_OSX_DIR)/README \
1765		$(MAC_OSX_DIR)/*.c $(MAC_OSX_DIR)/*.in \
1766		$(MAC_OSX_DIR)/*.ac $(MAC_OSX_DIR)/*.xcconfig \
1767		$(MAC_OSX_DIR)/configure $(DISTDIR)/macosx
1768	cp -p $(TOP_DIR)/license.terms $(DISTDIR)/macosx
1769	@mkdir $(DISTDIR)/macosx/Tcl.pbproj
1770	cp -p $(MAC_OSX_DIR)/Tcl.pbproj/*.pbx* $(DISTDIR)/macosx/Tcl.pbproj
1771	@mkdir $(DISTDIR)/macosx/Tcl.xcode
1772	cp -p $(MAC_OSX_DIR)/Tcl.xcode/*.pbx* $(DISTDIR)/macosx/Tcl.xcode
1773	@mkdir $(DISTDIR)/macosx/Tcl.xcodeproj
1774	cp -p $(TOP_DIR)/macosx/Tcl.xcodeproj/*.pbx* $(DISTDIR)/macosx/Tcl.xcodeproj
1775	@mkdir $(DISTDIR)/unix/dltest
1776	cp -p $(UNIX_DIR)/dltest/*.c $(UNIX_DIR)/dltest/Makefile.in \
1777		$(UNIX_DIR)/dltest/README \
1778		$(DISTDIR)/unix/dltest
1779	@mkdir $(DISTDIR)/tools
1780	cp -p $(TOOL_DIR)/Makefile.in $(TOOL_DIR)/README \
1781		$(TOOL_DIR)/configure $(TOOL_DIR)/configure.in \
1782		$(TOOL_DIR)/*.tcl $(TOOL_DIR)/man2tcl.c \
1783		$(TOOL_DIR)/tcl.wse.in $(TOOL_DIR)/*.bmp \
1784		$(TOOL_DIR)/tcl.hpj.in \
1785		$(DISTDIR)/tools
1786	@mkdir $(DISTDIR)/libtommath
1787	cp -p $(TOMMATH_SRCS) $(TOMMATH_DIR)/*.h \
1788		$(DISTDIR)/libtommath
1789
1790alldist: dist
1791	rm -f $(DISTROOT)/$(DISTNAME)-src.tar.gz $(DISTROOT)/$(ZIPNAME)
1792	cd $(DISTROOT); tar cf $(DISTNAME)-src.tar $(DISTNAME); \
1793		gzip -9 $(DISTNAME)-src.tar; zip -qr8 $(ZIPNAME) $(DISTNAME)
1794
1795#--------------------------------------------------------------------------
1796# This target creates the HTML folder for Tcl & Tk and places it in
1797# DISTDIR/html. It uses the tcltk-man2html.tcl tool from the Tcl group's tool
1798# workspace. It depends on the Tcl & Tk being in directories called tcl8.* &
1799# tk8.* up two directories from the TOOL_DIR.
1800#--------------------------------------------------------------------------
1801
1802html: ${TCL_EXE}
1803	$(BUILD_HTML)
1804	@EXTRA_BUILD_HTML@
1805html-tcl: ${TCL_EXE}
1806	$(BUILD_HTML) --tcl
1807	@EXTRA_BUILD_HTML@
1808html-tk: ${TCL_EXE}
1809	$(BUILD_HTML) --tk
1810	@EXTRA_BUILD_HTML@
1811
1812BUILD_HTML = \
1813	@@LD_LIBRARY_PATH_VAR@="`pwd`:$${@LD_LIBRARY_PATH_VAR@}"; export @LD_LIBRARY_PATH_VAR@; \
1814	TCL_LIBRARY="${TCL_BUILDTIME_LIBRARY}"; export TCL_LIBRARY; \
1815	./${TCL_EXE} $(TOOL_DIR)/tcltk-man2html.tcl --htmldir="$(HTML_INSTALL_DIR)" \
1816		--srcdir=$(TOP_DIR)/.. $(BUILD_HTML_FLAGS)
1817
1818#
1819# Targets to build Solaris package of the distribution for the current
1820# architecture. To build stream packages for both sun4 and i86pc
1821# architectures:
1822#
1823#   On the sun4 machine, execute the following:
1824#     make distclean; ./configure
1825#     make DISTDIR=<distdir> package
1826#
1827#   Once the build is complete, execute the following on the i86pc machine:
1828#     make DISTDIR=<distdir> package-quick
1829#
1830# <distdir> is the absolute path to a directory where the build should take
1831# place. These steps will generate the $(PACKAGE).sun4 and $(PACKAGE).i86pc
1832# stream packages. It is important that the packages be built in this fashion
1833# in order to ensure that the architecture independent files are exactly the
1834# same, including timestamps, in both packages.
1835#
1836
1837PACKAGE=SCRPtcl
1838
1839package: dist package-config package-common package-binaries package-generate
1840package-quick: package-config package-binaries package-generate
1841
1842#
1843# Configure for the current architecture in the dist directory.
1844#
1845package-config:
1846	mkdir -p $(DISTDIR)/unix/`arch`
1847	cd $(DISTDIR)/unix/`arch`; \
1848        ../configure --prefix=/opt/$(PACKAGE)/$(VERSION) \
1849		--exec_prefix=/opt/$(PACKAGE)/$(VERSION)/`arch` \
1850		--enable-shared
1851	mkdir -p $(DISTDIR)/$(PACKAGE)/$(VERSION)
1852	mkdir -p $(DISTDIR)/$(PACKAGE)/$(VERSION)/`arch`
1853
1854#
1855# Build and install the architecture independent files in the dist directory.
1856#
1857
1858package-common:
1859	cd $(DISTDIR)/unix/`arch`;\
1860	$(MAKE); \
1861	$(MAKE) prefix=$(DISTDIR)/$(PACKAGE)/$(VERSION) \
1862		exec_prefix=$(DISTDIR)/$(PACKAGE)/$(VERSION)/`arch` \
1863		install-libraries install-man
1864	mkdir -p $(DISTDIR)/$(PACKAGE)/$(VERSION)/bin
1865	sed -e "s/TCLVERSION/$(VERSION)/g" < $(UNIX_DIR)/tclsh.sh \
1866		> $(DISTDIR)/$(PACKAGE)/$(VERSION)/bin/tclsh$(VERSION)
1867	chmod 755 $(DISTDIR)/$(PACKAGE)/$(VERSION)/bin/tclsh$(VERSION)
1868
1869#
1870# Build and install the architecture specific files in the dist directory.
1871#
1872
1873package-binaries:
1874	cd $(DISTDIR)/unix/`arch`; \
1875	$(MAKE); \
1876	$(MAKE) install-binaries prefix=$(DISTDIR)/$(PACKAGE)/$(VERSION) \
1877		exec_prefix=$(DISTDIR)/$(PACKAGE)/$(VERSION)/`arch`
1878
1879#
1880# Generate a package from the installed files in the dist directory for the
1881# current architecture.
1882#
1883
1884package-generate:
1885	pkgproto $(DISTDIR)/$(PACKAGE)/$(VERSION)/bin=bin \
1886		 $(DISTDIR)/$(PACKAGE)/$(VERSION)/include=include \
1887		 $(DISTDIR)/$(PACKAGE)/$(VERSION)/lib=lib \
1888		 $(DISTDIR)/$(PACKAGE)/$(VERSION)/man=man \
1889		 $(DISTDIR)/$(PACKAGE)/$(VERSION)/`arch`=`arch` \
1890	| $(TCL_EXE) $(UNIX_DIR)/mkProto.tcl \
1891		$(VERSION) $(UNIX_DIR) > prototype
1892	pkgmk -o -d . -f prototype -a `arch`
1893	pkgtrans -s . $(PACKAGE).`arch` $(PACKAGE)
1894	rm -rf $(PACKAGE)
1895
1896#--------------------------------------------------------------------------
1897# DO NOT DELETE THIS LINE -- make depend depends on it.
1898