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