OSDN Git Service

Please enter the commit message for your changes. Lines starting
[eos/base.git] / util / src / TclTk / tcl8.6.12 / win / Makefile.in
1 #
2 # This file is a Makefile for Tcl.  If it has the name "Makefile.in" then it
3 # is 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 VERSION = @TCL_VERSION@
8
9 #--------------------------------------------------------------------------
10 # Things you can change to personalize the Makefile for your own site (you can
11 # make these changes in either Makefile.in or Makefile, but changes to
12 # Makefile will get lost if you re-run the configuration script).
13 #--------------------------------------------------------------------------
14
15 # Default top-level directories in which to install architecture-specific
16 # files (exec_prefix) and machine-independent files such as scripts (prefix).
17 # The values specified here may be overridden at configure-time with the
18 # --exec-prefix and --prefix options to the "configure" script.
19
20 prefix                  = @prefix@
21 exec_prefix             = @exec_prefix@
22 bindir                  = @bindir@
23 libdir                  = @libdir@
24 includedir              = @includedir@
25 datarootdir             = @datarootdir@
26 runstatedir             = @runstatedir@
27 mandir                  = @mandir@
28
29 # The following definition can be set to non-null for special systems like AFS
30 # with replication. It allows the pathnames used for installation to be
31 # different than those used for actually reference files at run-time.
32 # INSTALL_ROOT is prepended to $prefix and $exec_prefix when installing files.
33 INSTALL_ROOT    =
34
35 # Directory from which applications will reference the library of Tcl scripts
36 # (note: you can set the TCL_LIBRARY environment variable at run-time to
37 # override this value):
38 TCL_LIBRARY     = $(prefix)/lib/tcl$(VERSION)
39
40 # Path to use at runtime to refer to LIB_INSTALL_DIR:
41 LIB_RUNTIME_DIR         = $(libdir)
42
43 # Directory in which to install the program tclsh:
44 BIN_INSTALL_DIR         = $(INSTALL_ROOT)$(bindir)
45
46 # Directory in which to install the .a or .so binary for the Tcl library:
47 LIB_INSTALL_DIR         = $(INSTALL_ROOT)$(libdir)
48
49 # Path name to use when installing library scripts.
50 SCRIPT_INSTALL_DIR      = $(INSTALL_ROOT)$(TCL_LIBRARY)
51
52 # Path name to use when installing Tcl modules.
53 MODULE_INSTALL_DIR      = $(SCRIPT_INSTALL_DIR)/../tcl8
54
55 # Directory in which to install the include file tcl.h:
56 INCLUDE_INSTALL_DIR     = $(INSTALL_ROOT)$(includedir)
57
58 # Directory in which to (optionally) install the private tcl headers:
59 PRIVATE_INCLUDE_INSTALL_DIR = $(INSTALL_ROOT)$(includedir)
60
61 # Top-level directory in which to install manual entries:
62 MAN_INSTALL_DIR         = $(INSTALL_ROOT)$(mandir)
63
64 # Directory in which to install manual entry for tclsh:
65 MAN1_INSTALL_DIR = $(MAN_INSTALL_DIR)/man1
66
67 # Directory in which to install manual entries for Tcl's C library procedures:
68 MAN3_INSTALL_DIR = $(MAN_INSTALL_DIR)/man3
69
70 # Directory in which to install manual entries for the built-in Tcl commands:
71 MANN_INSTALL_DIR = $(MAN_INSTALL_DIR)/mann
72
73 # Libraries built with optimization switches have this additional extension
74 TCL_DBGX = @TCL_DBGX@
75
76 # warning flags
77 CFLAGS_WARNING = @CFLAGS_WARNING@
78
79 # The default switches for optimization or debugging
80 CFLAGS_DEBUG    = @CFLAGS_DEBUG@
81 CFLAGS_OPTIMIZE = @CFLAGS_OPTIMIZE@
82
83 # To change the compiler switches, for example to change from optimization to
84 # debugging symbols, change the following line:
85 #CFLAGS =               $(CFLAGS_DEBUG)
86 #CFLAGS =               $(CFLAGS_OPTIMIZE)
87 #CFLAGS =               $(CFLAGS_DEBUG) $(CFLAGS_OPTIMIZE)
88 CFLAGS =                @CFLAGS@ @CFLAGS_DEFAULT@ -D_ATL_XP_TARGETING=1 -D__USE_MINGW_ANSI_STDIO=0 -DMP_FIXED_CUTOFFS -DMP_NO_STDINT
89
90 # To compile without backward compatibility and deprecated code uncomment the
91 # following
92 NO_DEPRECATED_FLAGS     =
93 #NO_DEPRECATED_FLAGS    = -DTCL_NO_DEPRECATED
94
95 # To enable compilation debugging reverse the comment characters on one of the
96 # following lines.
97 COMPILE_DEBUG_FLAGS =
98 #COMPILE_DEBUG_FLAGS = -DTCL_COMPILE_DEBUG
99 #COMPILE_DEBUG_FLAGS = -DTCL_COMPILE_DEBUG -DTCL_COMPILE_STATS
100
101 SRC_DIR                 = @srcdir@
102 ROOT_DIR                = @srcdir@/..
103 TOP_DIR                 = $(shell cd @srcdir@/..; pwd -W 2>/dev/null || pwd -P)
104 GENERIC_DIR             = $(TOP_DIR)/generic
105 TOMMATH_DIR             = $(TOP_DIR)/libtommath
106 WIN_DIR                 = $(TOP_DIR)/win
107 COMPAT_DIR              = $(TOP_DIR)/compat
108 PKGS_DIR                = $(TOP_DIR)/pkgs
109 ZLIB_DIR                = $(COMPAT_DIR)/zlib
110
111 # Converts a POSIX path to a Windows native path.
112 CYGPATH                 = @CYGPATH@
113
114 libdir_native   = $(shell $(CYGPATH) '$(libdir)')
115 bindir_native   = $(shell $(CYGPATH) '$(bindir)')
116 includedir_native = $(shell $(CYGPATH) '$(includedir)')
117 mandir_native = $(shell $(CYGPATH) '$(mandir)')
118 TCL_LIBRARY_NATIVE      = $(shell $(CYGPATH) '$(TCL_LIBRARY)')
119 GENERIC_DIR_NATIVE      = $(shell $(CYGPATH) '$(GENERIC_DIR)')
120 TOMMATH_DIR_NATIVE      = $(shell $(CYGPATH) '$(TOMMATH_DIR)')
121 WIN_DIR_NATIVE          = $(shell $(CYGPATH) '$(WIN_DIR)')
122 ROOT_DIR_NATIVE         = $(shell $(CYGPATH) '$(ROOT_DIR)')
123 SCRIPT_INSTALL_DIR_NATIVE       = $(shell $(CYGPATH) '$(SCRIPT_INSTALL_DIR)')
124 INCLUDE_INSTALL_DIR_NATIVE      = $(shell $(CYGPATH) '$(INCLUDE_INSTALL_DIR)')
125 MAN_INSTALL_DIR_NATIVE  = $(shell $(CYGPATH) '$(MAN_INSTALL_DIR)')
126 ROOT_DIR_WIN_NATIVE     = $(shell cd '$(ROOT_DIR)' ; pwd -W 2>/dev/null || pwd -P)
127 ZLIB_DIR_NATIVE         = $(shell $(CYGPATH) '$(ZLIB_DIR)')
128 #GENERIC_DIR_NATIVE     = $(GENERIC_DIR)
129 #TOMMATH_DIR_NATIVE     = $(TOMMATH_DIR)
130 #WIN_DIR_NATIVE         = $(WIN_DIR)
131 #ROOT_DIR_NATIVE                = $(ROOT_DIR)
132
133 # Fully qualify library path so that `make test`
134 # does not depend on the current directory.
135 LIBRARY_DIR1            = $(shell cd '$(ROOT_DIR_NATIVE)/library' ; pwd -P)
136 LIBRARY_DIR             = $(shell $(CYGPATH) '$(LIBRARY_DIR1)')
137 DLLSUFFIX               = @DLLSUFFIX@
138 LIBSUFFIX               = @LIBSUFFIX@
139 EXESUFFIX               = @EXESUFFIX@
140
141 VER                     = @TCL_MAJOR_VERSION@@TCL_MINOR_VERSION@
142 DOTVER                  = @TCL_MAJOR_VERSION@.@TCL_MINOR_VERSION@
143 DDEVER                  = @TCL_DDE_MAJOR_VERSION@@TCL_DDE_MINOR_VERSION@
144 DDEDOTVER               = @TCL_DDE_MAJOR_VERSION@.@TCL_DDE_MINOR_VERSION@
145 REGVER                  = @TCL_REG_MAJOR_VERSION@@TCL_REG_MINOR_VERSION@
146 REGDOTVER               = @TCL_REG_MAJOR_VERSION@.@TCL_REG_MINOR_VERSION@
147
148 TCL_STUB_LIB_FILE       = @TCL_STUB_LIB_FILE@
149 TCL_DLL_FILE            = @TCL_DLL_FILE@
150 TCL_LIB_FILE            = @TCL_LIB_FILE@
151 DDE_DLL_FILE            = tcldde$(DDEVER)${DLLSUFFIX}
152 DDE_LIB_FILE            = @LIBPREFIX@tcldde$(DDEVER)${DLLSUFFIX}${LIBSUFFIX}
153 REG_DLL_FILE            = tclreg$(REGVER)${DLLSUFFIX}
154 REG_LIB_FILE            = @LIBPREFIX@tclreg$(REGVER)${DLLSUFFIX}${LIBSUFFIX}
155 TEST_DLL_FILE           = tcltest$(VER)${DLLSUFFIX}
156 TEST_EXE_FILE           = tcltest${EXESUFFIX}
157 TEST_LIB_FILE           = @LIBPREFIX@tcltest$(VER)${DLLSUFFIX}${LIBSUFFIX}
158 TEST_LOAD_PRMS          = package ifneeded dde 1.4.4 [list load [file normalize ${DDE_DLL_FILE}] Dde];\
159                           package ifneeded registry 1.3.5 [list load [file normalize ${REG_DLL_FILE}] Registry]
160 TEST_LOAD_FACILITIES    = package ifneeded Tcltest ${VERSION}@TCL_PATCH_LEVEL@ [list load [file normalize ${TEST_DLL_FILE}]];\
161                           $(TEST_LOAD_PRMS)
162 ZLIB_DLL_FILE           = zlib1.dll
163
164 SHARED_LIBRARIES        = $(TCL_DLL_FILE) @ZLIB_DLL_FILE@
165 STATIC_LIBRARIES        = $(TCL_LIB_FILE)
166
167 TCLSH                   = tclsh$(VER)${EXESUFFIX}
168 CAT32                   = cat32$(EXEEXT)
169 MAN2TCL                 = man2tcl$(EXEEXT)
170
171 # For cross-compiled builds, TCL_EXE is the name of a tclsh executable that is
172 # available *BEFORE* running make for the first time. Certain build targets
173 # (make genstubs, make install) need it to be available on the PATH. This
174 # executable should *NOT* be required just to do a normal build although
175 # it can be required to run make dist.
176 TCL_EXE                 = @TCL_EXE@
177
178 @SET_MAKE@
179
180 # Setting the VPATH variable to a list of paths will cause the Makefile to
181 # look into these paths when resolving .c to .obj dependencies.
182
183 VPATH = $(GENERIC_DIR):$(WIN_DIR):$(COMPAT_DIR):$(ZLIB_DIR):$(TOMMATH_DIR)
184
185 AR              = @AR@
186 RANLIB          = @RANLIB@
187 CC              = @CC@
188 RC              = @RC@
189 RES             = @RES@
190 AC_FLAGS        = @EXTRA_CFLAGS@ @DEFS@
191 CPPFLAGS        = @CPPFLAGS@
192 LDFLAGS_DEBUG   = @LDFLAGS_DEBUG@
193 LDFLAGS_OPTIMIZE = @LDFLAGS_OPTIMIZE@
194 LDFLAGS         = @LDFLAGS@ @LDFLAGS_DEFAULT@
195 LDFLAGS_CONSOLE = @LDFLAGS_CONSOLE@
196 LDFLAGS_WINDOW  = @LDFLAGS_WINDOW@
197 EXEEXT          = @EXEEXT@
198 OBJEXT          = @OBJEXT@
199 STLIB_LD        = @STLIB_LD@
200 SHLIB_LD        = @SHLIB_LD@
201 SHLIB_LD_LIBS   = @SHLIB_LD_LIBS@
202 SHLIB_CFLAGS    = @SHLIB_CFLAGS@
203 SHLIB_SUFFIX    = @SHLIB_SUFFIX@
204 LIBS            = @LIBS@ $(shell $(CYGPATH) '@ZLIB_LIBS@')
205
206 RMDIR           = rm -rf
207 MKDIR           = mkdir -p
208 SHELL           = @SHELL@
209 RM              = rm -f
210 COPY            = cp
211
212 CC_SWITCHES = ${CFLAGS} ${CFLAGS_WARNING} ${SHLIB_CFLAGS} \
213 -I"${ZLIB_DIR_NATIVE}" -I"${GENERIC_DIR_NATIVE}" -DTCL_TOMMATH \
214 -DMP_PREC=4 -I"${TOMMATH_DIR_NATIVE}" -I"${WIN_DIR_NATIVE}" \
215 ${AC_FLAGS} ${COMPILE_DEBUG_FLAGS} ${NO_DEPRECATED_FLAGS}
216
217 CC_OBJNAME = @CC_OBJNAME@
218 CC_EXENAME = @CC_EXENAME@
219
220 STUB_CC_SWITCHES = ${CFLAGS} ${CFLAGS_WARNING} ${SHLIB_CFLAGS} \
221 -I"${GENERIC_DIR_NATIVE}" -DTCL_TOMMATH -DMP_PREC=4 -I"${TOMMATH_DIR_NATIVE}" \
222 -I"${WIN_DIR_NATIVE}" ${AC_FLAGS} \
223 ${COMPILE_DEBUG_FLAGS}
224
225 TCLTEST_OBJS = \
226         tclTest.$(OBJEXT) \
227         tclTestObj.$(OBJEXT) \
228         tclTestProcBodyObj.$(OBJEXT) \
229         tclThreadTest.$(OBJEXT) \
230         tclWinTest.$(OBJEXT)
231
232 GENERIC_OBJS = \
233         regcomp.$(OBJEXT) \
234         regexec.$(OBJEXT) \
235         regfree.$(OBJEXT) \
236         regerror.$(OBJEXT) \
237         tclAlloc.$(OBJEXT) \
238         tclAssembly.$(OBJEXT) \
239         tclAsync.$(OBJEXT) \
240         tclBasic.$(OBJEXT) \
241         tclBinary.$(OBJEXT) \
242         tclCkalloc.$(OBJEXT) \
243         tclClock.$(OBJEXT) \
244         tclCmdAH.$(OBJEXT) \
245         tclCmdIL.$(OBJEXT) \
246         tclCmdMZ.$(OBJEXT) \
247         tclCompCmds.$(OBJEXT) \
248         tclCompCmdsGR.$(OBJEXT) \
249         tclCompCmdsSZ.$(OBJEXT) \
250         tclCompExpr.$(OBJEXT) \
251         tclCompile.$(OBJEXT) \
252         tclConfig.$(OBJEXT) \
253         tclDate.$(OBJEXT) \
254         tclDictObj.$(OBJEXT) \
255         tclDisassemble.$(OBJEXT) \
256         tclEncoding.$(OBJEXT) \
257         tclEnsemble.$(OBJEXT) \
258         tclEnv.$(OBJEXT) \
259         tclEvent.$(OBJEXT) \
260         tclExecute.$(OBJEXT) \
261         tclFCmd.$(OBJEXT) \
262         tclFileName.$(OBJEXT) \
263         tclGet.$(OBJEXT) \
264         tclHash.$(OBJEXT) \
265         tclHistory.$(OBJEXT) \
266         tclIndexObj.$(OBJEXT) \
267         tclInterp.$(OBJEXT) \
268         tclIO.$(OBJEXT) \
269         tclIOCmd.$(OBJEXT) \
270         tclIOGT.$(OBJEXT) \
271         tclIORChan.$(OBJEXT) \
272         tclIORTrans.$(OBJEXT) \
273         tclIOSock.$(OBJEXT) \
274         tclIOUtil.$(OBJEXT) \
275         tclLink.$(OBJEXT) \
276         tclLiteral.$(OBJEXT) \
277         tclListObj.$(OBJEXT) \
278         tclLoad.$(OBJEXT) \
279         tclMainW.$(OBJEXT) \
280         tclMain.$(OBJEXT) \
281         tclNamesp.$(OBJEXT) \
282         tclNotify.$(OBJEXT) \
283         tclOO.$(OBJEXT) \
284         tclOOBasic.$(OBJEXT) \
285         tclOOCall.$(OBJEXT) \
286         tclOODefineCmds.$(OBJEXT) \
287         tclOOInfo.$(OBJEXT) \
288         tclOOMethod.$(OBJEXT) \
289         tclOOStubInit.$(OBJEXT) \
290         tclObj.$(OBJEXT) \
291         tclOptimize.$(OBJEXT) \
292         tclPanic.$(OBJEXT) \
293         tclParse.$(OBJEXT) \
294         tclPathObj.$(OBJEXT) \
295         tclPipe.$(OBJEXT) \
296         tclPkg.$(OBJEXT) \
297         tclPkgConfig.$(OBJEXT) \
298         tclPosixStr.$(OBJEXT) \
299         tclPreserve.$(OBJEXT) \
300         tclProc.$(OBJEXT) \
301         tclRegexp.$(OBJEXT) \
302         tclResolve.$(OBJEXT) \
303         tclResult.$(OBJEXT) \
304         tclScan.$(OBJEXT) \
305         tclStringObj.$(OBJEXT) \
306         tclStrToD.$(OBJEXT) \
307         tclStubInit.$(OBJEXT) \
308         tclThread.$(OBJEXT) \
309         tclThreadAlloc.$(OBJEXT) \
310         tclThreadJoin.$(OBJEXT) \
311         tclThreadStorage.$(OBJEXT) \
312         tclTimer.$(OBJEXT) \
313         tclTomMathInterface.$(OBJEXT) \
314         tclTrace.$(OBJEXT) \
315         tclUtf.$(OBJEXT) \
316         tclUtil.$(OBJEXT) \
317         tclVar.$(OBJEXT) \
318         tclZlib.$(OBJEXT)
319
320 TOMMATH_OBJS = \
321         bn_mp_add.${OBJEXT} \
322         bn_mp_add_d.${OBJEXT} \
323         bn_mp_and.${OBJEXT} \
324         bn_mp_clamp.${OBJEXT} \
325         bn_mp_clear.${OBJEXT} \
326         bn_mp_clear_multi.${OBJEXT} \
327         bn_mp_cmp.${OBJEXT} \
328         bn_mp_cmp_d.${OBJEXT} \
329         bn_mp_cmp_mag.${OBJEXT} \
330         bn_mp_cnt_lsb.${OBJEXT} \
331         bn_mp_copy.${OBJEXT} \
332         bn_mp_count_bits.${OBJEXT} \
333         bn_mp_div.${OBJEXT} \
334         bn_mp_div_d.${OBJEXT} \
335         bn_mp_div_2.${OBJEXT} \
336         bn_mp_div_2d.${OBJEXT} \
337         bn_mp_div_3.${OBJEXT} \
338         bn_mp_exch.${OBJEXT} \
339         bn_mp_expt_u32.${OBJEXT} \
340         bn_mp_grow.${OBJEXT} \
341         bn_mp_init.${OBJEXT} \
342         bn_mp_init_copy.${OBJEXT} \
343         bn_mp_init_multi.${OBJEXT} \
344         bn_mp_init_set.${OBJEXT} \
345         bn_mp_init_size.${OBJEXT} \
346         bn_mp_lshd.${OBJEXT} \
347         bn_mp_mod.${OBJEXT} \
348         bn_mp_mod_2d.${OBJEXT} \
349         bn_mp_mul.${OBJEXT} \
350         bn_mp_mul_2.${OBJEXT} \
351         bn_mp_mul_2d.${OBJEXT} \
352         bn_mp_mul_d.${OBJEXT} \
353         bn_mp_neg.${OBJEXT} \
354         bn_mp_or.${OBJEXT} \
355         bn_mp_radix_size.${OBJEXT} \
356         bn_mp_radix_smap.${OBJEXT} \
357         bn_mp_read_radix.${OBJEXT} \
358         bn_mp_rshd.${OBJEXT} \
359         bn_mp_set.${OBJEXT} \
360         bn_mp_shrink.${OBJEXT} \
361         bn_mp_sqr.${OBJEXT} \
362         bn_mp_sqrt.${OBJEXT} \
363         bn_mp_sub.${OBJEXT} \
364         bn_mp_sub_d.${OBJEXT} \
365         bn_mp_signed_rsh.${OBJEXT} \
366         bn_mp_to_ubin.${OBJEXT} \
367         bn_mp_to_radix.${OBJEXT} \
368         bn_mp_ubin_size.${OBJEXT} \
369         bn_mp_xor.${OBJEXT} \
370         bn_mp_zero.${OBJEXT} \
371         bn_s_mp_add.${OBJEXT} \
372         bn_s_mp_balance_mul.$(OBJEXT) \
373         bn_s_mp_karatsuba_mul.${OBJEXT} \
374         bn_s_mp_karatsuba_sqr.$(OBJEXT) \
375         bn_s_mp_mul_digs.${OBJEXT} \
376         bn_s_mp_mul_digs_fast.${OBJEXT} \
377         bn_s_mp_reverse.${OBJEXT} \
378         bn_s_mp_sqr_fast.${OBJEXT} \
379         bn_s_mp_sqr.${OBJEXT} \
380         bn_s_mp_sub.${OBJEXT} \
381         bn_s_mp_toom_mul.${OBJEXT} \
382         bn_s_mp_toom_sqr.${OBJEXT}
383
384
385 WIN_OBJS = \
386         tclWin32Dll.$(OBJEXT) \
387         tclWinChan.$(OBJEXT) \
388         tclWinConsole.$(OBJEXT) \
389         tclWinSerial.$(OBJEXT) \
390         tclWinError.$(OBJEXT) \
391         tclWinFCmd.$(OBJEXT) \
392         tclWinFile.$(OBJEXT) \
393         tclWinInit.$(OBJEXT) \
394         tclWinLoad.$(OBJEXT) \
395         tclWinNotify.$(OBJEXT) \
396         tclWinPipe.$(OBJEXT) \
397         tclWinSock.$(OBJEXT) \
398         tclWinThrd.$(OBJEXT) \
399         tclWinTime.$(OBJEXT)
400
401 DDE_OBJS = tclWinDde.$(OBJEXT)
402
403 REG_OBJS = tclWinReg.$(OBJEXT)
404
405 STUB_OBJS = \
406         tclStubLib.$(OBJEXT) \
407         tclTomMathStubLib.$(OBJEXT) \
408         tclOOStubLib.$(OBJEXT)
409
410 TCLSH_OBJS = tclAppInit.$(OBJEXT)
411
412 ZLIB_OBJS = \
413         adler32.$(OBJEXT) \
414         compress.$(OBJEXT) \
415         crc32.$(OBJEXT) \
416         deflate.$(OBJEXT) \
417         infback.$(OBJEXT) \
418         inffast.$(OBJEXT) \
419         inflate.$(OBJEXT) \
420         inftrees.$(OBJEXT) \
421         trees.$(OBJEXT) \
422         uncompr.$(OBJEXT) \
423         zutil.$(OBJEXT)
424
425 TCL_OBJS = ${GENERIC_OBJS} ${WIN_OBJS} @ZLIB_OBJS@ $(TOMMATH_OBJS)
426
427 TCL_DOCS = "$(ROOT_DIR_NATIVE)"/doc/*.[13n]
428
429 all: binaries libraries doc packages
430
431 # Test-suite helper (can be used to test Tcl from build directory with all expected modules).
432 # To start from windows shell use:
433 #   > tcltest.cmd -verbose bps -file fileName.test
434 # or from mingw/msys shell:
435 #   $ ./tcltest -verbose bps -file fileName.test
436
437 tcltest.cmd: Makefile
438         @echo 'Create tcltest.cmd helpers';
439         @(\
440           echo '@echo off'; \
441           echo 'rem set LANG=en_US'; \
442           echo 'set BDP=%~dp0'; \
443           echo 'set OWD=%CD%'; \
444           echo 'cd /d %TEMP%'; \
445           echo 'rem "%BDP%\$(TCLSH)" "$(ROOT_DIR_WIN_NATIVE)/tests/all.tcl" %TESTFLAGS% -load "$(TEST_LOAD_FACILITIES)" %*'; \
446           echo '"%BDP%\$(TEST_EXE_FILE)" "$(ROOT_DIR_WIN_NATIVE)/tests/all.tcl" %TESTFLAGS% -load "$(TEST_LOAD_PRMS)" %*'; \
447           echo 'cd /d %OWD%'; \
448         ) > tcltest.cmd;
449         @(\
450           echo '#!/bin/sh'; \
451           echo '#LANG=en_US'; \
452           echo 'BDP=$$(dirname $$(readlink -f %0))'; \
453           echo 'cd /tmp'; \
454           echo '#"$$BDP/$(TCLSH)" "$(ROOT_DIR_WIN_NATIVE)/tests/all.tcl" $$TESTFLAGS -load "$(TEST_LOAD_FACILITIES)" "$$@"'; \
455           echo '"$$BDP/$(TEST_EXE_FILE)" "$(ROOT_DIR_WIN_NATIVE)/tests/all.tcl" $$TESTFLAGS -load "$(TEST_LOAD_PRMS)" "$$@"'; \
456         ) > tcltest.sh;
457
458 tcltest.sh: tcltest.cmd
459
460 tcltest: binaries $(TEST_EXE_FILE) $(TEST_DLL_FILE) $(CAT32) tcltest.cmd
461
462 binaries: $(TCL_STUB_LIB_FILE) @LIBRARIES@ winextensions $(TCLSH)
463
464 winextensions: ${DDE_DLL_FILE} ${REG_DLL_FILE}
465
466 libraries:
467
468 doc:
469
470 $(TCLSH): $(TCLSH_OBJS) @LIBRARIES@ $(TCL_STUB_LIB_FILE) tclsh.$(RES)
471         $(CC) $(CFLAGS) $(TCLSH_OBJS) $(TCL_LIB_FILE) $(TCL_STUB_LIB_FILE) $(LIBS) \
472         tclsh.$(RES) $(CC_EXENAME) $(LDFLAGS_CONSOLE)
473         $(COPY) tclsh.exe.manifest $(TCLSH).manifest
474         @VC_MANIFEST_EMBED_EXE@
475
476 cat32.$(OBJEXT): cat.c
477         $(CC) -c $(CC_SWITCHES) -DUNICODE -D_UNICODE @DEPARG@ $(CC_OBJNAME)
478
479 $(CAT32): cat32.$(OBJEXT)
480         $(CC) $(CFLAGS) cat32.$(OBJEXT) $(CC_EXENAME) $(LIBS) $(LDFLAGS_CONSOLE)
481
482 # The following targets are configured by autoconf to generate either a shared
483 # library or static library
484
485 ${TCL_STUB_LIB_FILE}: ${STUB_OBJS}
486         @$(RM) ${TCL_STUB_LIB_FILE}
487         @MAKE_STUB_LIB@ ${STUB_OBJS}
488         @POST_MAKE_LIB@
489
490 ${TCL_DLL_FILE}: ${TCL_OBJS} tcl.$(RES)
491         @$(RM) ${TCL_DLL_FILE} $(TCL_LIB_FILE)
492         @MAKE_DLL@ ${TCL_OBJS} tcl.$(RES) $(SHLIB_LD_LIBS)
493         $(COPY) tclsh.exe.manifest ${TCL_DLL_FILE}.manifest
494         @VC_MANIFEST_EMBED_DLL@
495
496 ${TCL_LIB_FILE}: ${TCL_OBJS} ${DDE_OBJS} ${REG_OBJS}
497         @$(RM) ${TCL_LIB_FILE}
498         @MAKE_LIB@ ${TCL_OBJS} ${DDE_OBJS} ${REG_OBJS}
499         @POST_MAKE_LIB@
500
501 ${DDE_DLL_FILE}: ${TCL_STUB_LIB_FILE} ${DDE_OBJS}
502         @MAKE_DLL@ ${DDE_OBJS} $(TCL_STUB_LIB_FILE) $(SHLIB_LD_LIBS)
503         $(COPY) tclsh.exe.manifest ${DDE_DLL_FILE}.manifest
504
505 ${REG_DLL_FILE}: ${TCL_STUB_LIB_FILE} ${REG_OBJS}
506         @MAKE_DLL@ ${REG_OBJS} $(TCL_STUB_LIB_FILE) $(SHLIB_LD_LIBS)
507         $(COPY) tclsh.exe.manifest ${REG_DLL_FILE}.manifest
508
509 ${TEST_DLL_FILE}: ${TCL_STUB_LIB_FILE} ${TCLTEST_OBJS}
510         @$(RM) ${TEST_DLL_FILE} ${TEST_LIB_FILE}
511         @MAKE_DLL@ ${TCLTEST_OBJS} $(TCL_STUB_LIB_FILE) $(SHLIB_LD_LIBS)
512         $(COPY) tclsh.exe.manifest ${TEST_DLL_FILE}.manifest
513
514 ${TEST_EXE_FILE}: ${TCL_STUB_LIB_FILE} ${TCLTEST_OBJS} tclTestMain.${OBJEXT}
515         @$(RM) ${TEST_EXE_FILE}
516         $(CC) $(CFLAGS) $(TCLTEST_OBJS) tclTestMain.$(OBJEXT) $(TCL_LIB_FILE) $(TCL_STUB_LIB_FILE) $(LIBS) \
517         tclsh.$(RES) $(CC_EXENAME) $(LDFLAGS_CONSOLE)
518         $(COPY) tclsh.exe.manifest ${TEST_EXE_FILE}.manifest
519
520 # use pre-built zlib1.dll
521 ${ZLIB_DLL_FILE}: ${TCL_STUB_LIB_FILE}
522         @if test "@ZLIB_LIBS@set" != "${ZLIB_DIR_NATIVE}/win32/zdll.libset" ; then \
523                 $(COPY) $(ZLIB_DIR)/win64/${ZLIB_DLL_FILE} ${ZLIB_DLL_FILE}; \
524         else \
525                 $(COPY) $(ZLIB_DIR)/win32/${ZLIB_DLL_FILE} ${ZLIB_DLL_FILE}; \
526         fi;
527
528 # Add the object extension to the implicit rules. By default .obj is not
529 # automatically added.
530
531 .SUFFIXES: .${OBJEXT}
532 .SUFFIXES: .$(RES)
533 .SUFFIXES: .rc
534
535 # Special case object targets
536
537 tclTestMain.${OBJEXT}: tclAppInit.c
538         $(CC) -c $(CC_SWITCHES) -DTCL_TEST -DUNICODE -D_UNICODE $(EXTFLAGS) @DEPARG@ $(CC_OBJNAME)
539
540 tclWinInit.${OBJEXT}: tclWinInit.c
541         $(CC) -c $(CC_SWITCHES) -DBUILD_tcl $(EXTFLAGS) @DEPARG@ $(CC_OBJNAME)
542
543 tclWinPipe.${OBJEXT}: tclWinPipe.c
544         $(CC) -c $(CC_SWITCHES) -DBUILD_tcl $(EXTFLAGS) @DEPARG@ $(CC_OBJNAME)
545
546 tclWinReg.${OBJEXT}: tclWinReg.c
547         $(CC) -c $(CC_SWITCHES) $(EXTFLAGS) @DEPARG@ $(CC_OBJNAME)
548
549 tclWinDde.${OBJEXT}: tclWinDde.c
550         $(CC) -c $(CC_SWITCHES) $(EXTFLAGS) @DEPARG@ $(CC_OBJNAME)
551
552 tclAppInit.${OBJEXT}: tclAppInit.c
553         $(CC) -c $(CC_SWITCHES) $(EXTFLAGS) -DUNICODE -D_UNICODE @DEPARG@ $(CC_OBJNAME)
554
555 tclMainW.${OBJEXT}: tclMain.c
556         $(CC) -c $(CC_SWITCHES) -DBUILD_tcl -DUNICODE -D_UNICODE @DEPARG@ $(CC_OBJNAME)
557
558 # TIP #59, embedding of configuration information into the binary library.
559 #
560 # Part of Tcl's configuration information are the paths where it was installed
561 # and where it will look for its libraries (which can be different). We derive
562 # this information from the variables which can be overridden by the user. As
563 # every path can be configured separately we do not remember one general
564 # prefix/exec_prefix but all the different paths individually.
565
566 tclPkgConfig.${OBJEXT}: tclPkgConfig.c
567         $(CC)   -c $(CC_SWITCHES)                       \
568                 -DCFG_INSTALL_LIBDIR="\"$(LIB_INSTALL_DIR_NATIVE)\"" \
569                 -DCFG_INSTALL_BINDIR="\"$(BIN_INSTALL_DIR_NATIVE)\"" \
570                 -DCFG_INSTALL_SCRDIR="\"$(SCRIPT_INSTALL_DIR_NATIVE)\"" \
571                 -DCFG_INSTALL_INCDIR="\"$(INCLUDE_INSTALL_DIR_NATIVE)\"" \
572                 -DCFG_INSTALL_DOCDIR="\"$(MAN_INSTALL_DIR_NATIVE)\"" \
573                 \
574                 -DCFG_RUNTIME_LIBDIR="\"$(libdir_native)\"" \
575                 -DCFG_RUNTIME_BINDIR="\"$(bindir_native)\"" \
576                 -DCFG_RUNTIME_SCRDIR="\"$(TCL_LIBRARY_NATIVE)\"" \
577                 -DCFG_RUNTIME_INCDIR="\"$(includedir_native)\"" \
578                 -DCFG_RUNTIME_DOCDIR="\"$(mandir_native)\"" \
579                 -DBUILD_tcl \
580                 @DEPARG@ $(CC_OBJNAME)
581
582 # The following objects are part of the stub library and should not be built
583 # as DLL objects but none of the symbols should be exported
584
585 tclStubLib.${OBJEXT}: tclStubLib.c
586         $(CC) -c $(CC_SWITCHES) -DSTATIC_BUILD @CFLAGS_NOLTO@ @DEPARG@ $(CC_OBJNAME)
587
588 tclTomMathStubLib.${OBJEXT}: tclTomMathStubLib.c
589         $(CC) -c $(CC_SWITCHES) @CFLAGS_NOLTO@ @DEPARG@ $(CC_OBJNAME)
590
591 tclOOStubLib.${OBJEXT}: tclOOStubLib.c
592         $(CC) -c $(CC_SWITCHES) @CFLAGS_NOLTO@ @DEPARG@ $(CC_OBJNAME)
593
594 # Implicit rule for all object files that will end up in the Tcl library
595
596 %.${OBJEXT}: %.c
597         $(CC) -c $(CC_SWITCHES) -DBUILD_tcl @DEPARG@ $(CC_OBJNAME)
598
599 .rc.$(RES):
600         $(RC) @RC_OUT@ $@ @RC_TYPE@ @RC_DEFINES@ @RC_INCLUDE@ "$(GENERIC_DIR_NATIVE)" @RC_INCLUDE@ "$(WIN_DIR_NATIVE)" @DEPARG@
601
602 # The following target generates the file generic/tclDate.c from the yacc
603 # grammar found in generic/tclGetDate.y. This is only run by hand as yacc is
604 # not available in all environments. The name of the .c file is different than
605 # the name of the .y file so that make doesn't try to automatically regenerate
606 # the .c file.
607
608 gendate:
609         bison --output-file=$(GENERIC_DIR)/tclDate.c \
610         --name-prefix=TclDate \
611         --no-lines \
612         $(GENERIC_DIR)/tclGetDate.y
613
614 # The following target generates the file generic/tclTomMath.h. It needs to be
615 # run (and the results checked) after updating to a new release of libtommath.
616
617 gentommath_h:
618         $(TCL_EXE) "$(ROOT_DIR_NATIVE)/tools/fix_tommath_h.tcl" \
619                 "$(TOMMATH_DIR_NATIVE)/tommath.h" \
620                 > "$(GENERIC_DIR_NATIVE)/tclTomMath.h"
621
622 install: all install-binaries install-libraries install-doc install-packages
623
624 install-binaries: binaries
625         @for i in "$(LIB_INSTALL_DIR)" "$(BIN_INSTALL_DIR)"; \
626             do \
627             if [ ! -d "$$i" ] ; then \
628                 echo "Making directory $$i"; \
629                 $(MKDIR) "$$i"; \
630                 chmod 755 "$$i"; \
631                 else true; \
632                 fi; \
633             done;
634         @for i in dde${DDEDOTVER} reg${REGDOTVER}; \
635             do \
636             if [ ! -d "$(LIB_INSTALL_DIR)/$$i" ] ; then \
637                 echo "Making directory $(LIB_INSTALL_DIR)/$$i"; \
638                 $(MKDIR) "$(LIB_INSTALL_DIR)/$$i"; \
639                 else true; \
640                 fi; \
641             done;
642         @for i in $(TCL_DLL_FILE) $(ZLIB_DLL_FILE) $(TCLSH); \
643             do \
644             if [ -f $$i ]; then \
645                 echo "Installing $$i to $(BIN_INSTALL_DIR)/"; \
646                 $(COPY) $$i "$(BIN_INSTALL_DIR)"; \
647             fi; \
648             done
649         @for i in tclConfig.sh tclooConfig.sh $(TCL_LIB_FILE) $(TCL_STUB_LIB_FILE); \
650             do \
651             if [ -f $$i ]; then \
652                 echo "Installing $$i to $(LIB_INSTALL_DIR)/"; \
653                 $(COPY) $$i "$(LIB_INSTALL_DIR)"; \
654             fi; \
655             done
656         @if [ -f $(DDE_DLL_FILE) ]; then \
657             echo Installing $(DDE_DLL_FILE); \
658             $(COPY) $(DDE_DLL_FILE) "$(LIB_INSTALL_DIR)/dde${DDEDOTVER}"; \
659             $(COPY) $(ROOT_DIR)/library/dde/pkgIndex.tcl \
660                 "$(LIB_INSTALL_DIR)/dde${DDEDOTVER}"; \
661             fi
662         @if [ -f $(DDE_LIB_FILE) ]; then \
663             echo Installing $(DDE_LIB_FILE); \
664             $(COPY) $(DDE_LIB_FILE) "$(LIB_INSTALL_DIR)/dde${DDEDOTVER}"; \
665             fi
666         @if [ -f $(REG_DLL_FILE) ]; then \
667             echo Installing $(REG_DLL_FILE); \
668             $(COPY) $(REG_DLL_FILE) "$(LIB_INSTALL_DIR)/reg${REGDOTVER}"; \
669             $(COPY) $(ROOT_DIR)/library/reg/pkgIndex.tcl \
670                 "$(LIB_INSTALL_DIR)/reg${REGDOTVER}"; \
671             fi
672         @if [ -f $(REG_LIB_FILE) ]; then \
673             echo Installing $(REG_LIB_FILE); \
674             $(COPY) $(REG_LIB_FILE) "$(LIB_INSTALL_DIR)/reg${REGDOTVER}"; \
675             fi
676
677 install-libraries: libraries install-tzdata install-msgs
678         @for i in "$(prefix)/lib" "$(INCLUDE_INSTALL_DIR)" \
679                 "$(SCRIPT_INSTALL_DIR)" "$(MODULE_INSTALL_DIR)"; \
680             do \
681             if [ ! -d "$$i" ] ; then \
682                 echo "Making directory $$i"; \
683                 $(MKDIR) "$$i"; \
684                 else true; \
685                 fi; \
686             done;
687         @for i in http1.0 opt0.4 encoding; \
688             do \
689             if [ ! -d "$(SCRIPT_INSTALL_DIR)/$$i" ] ; then \
690                 echo "Making directory $(SCRIPT_INSTALL_DIR)/$$i"; \
691                 $(MKDIR) "$(SCRIPT_INSTALL_DIR)/$$i"; \
692                 else true; \
693                 fi; \
694             done;
695         @for i in 8.4  8.4/platform 8.5 8.6; \
696             do \
697             if [ ! -d "$(MODULE_INSTALL_DIR)/$$i" ] ; then \
698                 echo "Making directory $(MODULE_INSTALL_DIR)/$$i"; \
699                 $(MKDIR) "$(MODULE_INSTALL_DIR)/$$i"; \
700                 else true; \
701                 fi; \
702             done;
703         @echo "Installing header files";
704         @for i in "$(GENERIC_DIR)/tcl.h" "$(GENERIC_DIR)/tclDecls.h" \
705                 "$(GENERIC_DIR)/tclOO.h" "$(GENERIC_DIR)/tclOODecls.h" \
706                 "$(GENERIC_DIR)/tclPlatDecls.h" \
707                 "$(GENERIC_DIR)/tclTomMath.h" \
708                 "$(GENERIC_DIR)/tclTomMathDecls.h"; \
709             do \
710             $(COPY) "$$i" "$(INCLUDE_INSTALL_DIR)"; \
711             done;
712         @echo "Installing library files to $(SCRIPT_INSTALL_DIR)";
713         @for i in $(ROOT_DIR)/library/*.tcl $(ROOT_DIR)/library/tclIndex; \
714             do \
715             $(COPY) "$$i" "$(SCRIPT_INSTALL_DIR)"; \
716             done;
717         @echo "Installing library http1.0 directory";
718         @for j in $(ROOT_DIR)/library/http1.0/*.tcl; \
719             do \
720             $(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/http1.0"; \
721             done;
722         @echo "Installing package http 2.9.5 as a Tcl Module";
723         @$(COPY) $(ROOT_DIR)/library/http/http.tcl "$(MODULE_INSTALL_DIR)/8.6/http-2.9.5.tm";
724         @echo "Installing library opt0.4 directory";
725         @for j in $(ROOT_DIR)/library/opt/*.tcl; \
726             do \
727             $(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/opt0.4"; \
728             done;
729         @echo "Installing package msgcat 1.6.1 as a Tcl Module";
730         @$(COPY) $(ROOT_DIR)/library/msgcat/msgcat.tcl "$(MODULE_INSTALL_DIR)/8.5/msgcat-1.6.1.tm";
731         @echo "Installing package tcltest 2.5.3 as a Tcl Module";
732         @$(COPY) $(ROOT_DIR)/library/tcltest/tcltest.tcl "$(MODULE_INSTALL_DIR)/8.5/tcltest-2.5.3.tm";
733         @echo "Installing package platform 1.0.18 as a Tcl Module";
734         @$(COPY) $(ROOT_DIR)/library/platform/platform.tcl "$(MODULE_INSTALL_DIR)/8.4/platform-1.0.18.tm";
735         @echo "Installing package platform::shell 1.1.4 as a Tcl Module";
736         @$(COPY) $(ROOT_DIR)/library/platform/shell.tcl "$(MODULE_INSTALL_DIR)/8.4/platform/shell-1.1.4.tm";
737         @echo "Installing encodings";
738         @for i in $(ROOT_DIR)/library/encoding/*.enc ; do \
739                 $(COPY) "$$i" "$(SCRIPT_INSTALL_DIR)/encoding"; \
740         done;
741
742 install-tzdata:
743         @echo "Installing time zone data"
744         @$(TCL_EXE) "$(ROOT_DIR)/tools/installData.tcl" \
745             "$(ROOT_DIR)/library/tzdata" "$(SCRIPT_INSTALL_DIR_NATIVE)/tzdata"
746
747 install-msgs:
748         @echo "Installing message catalogs"
749         $(TCL_EXE) "$(ROOT_DIR)/tools/installData.tcl" \
750             "$(ROOT_DIR)/library/msgs" "$(SCRIPT_INSTALL_DIR_NATIVE)/msgs"
751
752 install-doc: doc
753
754 # Optional target to install private headers
755 install-private-headers: libraries
756         @for i in $(PRIVATE_INCLUDE_INSTALL_DIR); \
757             do \
758             if [ ! -d $$i ] ; then \
759                 echo "Making directory $$i"; \
760                 $(MKDIR) $$i; \
761                 else true; \
762                 fi; \
763             done;
764         @echo "Installing private header files";
765         @for i in "$(GENERIC_DIR)/tclInt.h" "$(GENERIC_DIR)/tclIntDecls.h" \
766                 "$(GENERIC_DIR)/tclIntPlatDecls.h" "$(GENERIC_DIR)/tclPort.h" \
767                 "$(GENERIC_DIR)/tclOOInt.h" "$(GENERIC_DIR)/tclOOIntDecls.h" \
768                 "$(WIN_DIR)/tclWinPort.h" ; \
769             do \
770             $(COPY) "$$i" "$(PRIVATE_INCLUDE_INSTALL_DIR)"; \
771             done;
772
773 # Specifying TESTFLAGS on the command line is the standard way to pass args to
774 # tcltest, i.e.:
775 #       % make test TESTFLAGS="-verbose bps -file fileName.test"
776
777 test: test-tcl test-packages
778
779 test-tcl: tcltest
780         TCL_LIBRARY="$(LIBRARY_DIR)"; export TCL_LIBRARY; \
781         ./$(TCLSH) "$(ROOT_DIR_NATIVE)/tests/all.tcl" $(TESTFLAGS) \
782         -load "$(TEST_LOAD_FACILITIES)"
783
784 # Useful target to launch a built tclsh with the proper path,...
785 runtest: tcltest
786         @TCL_LIBRARY="$(LIBRARY_DIR)"; export TCL_LIBRARY; \
787         ./$(TCLSH) $(TESTFLAGS) -load "$(TEST_LOAD_FACILITIES)" $(SCRIPT)
788
789 # This target can be used to run tclsh from the build directory via
790 # `make shell SCRIPT=foo.tcl`
791 shell: binaries
792         @TCL_LIBRARY="$(LIBRARY_DIR)"; export TCL_LIBRARY; \
793         ./$(TCLSH) $(SCRIPT)
794
795 # This target can be used to run tclsh inside either gdb or insight
796 gdb: binaries
797         @echo "set env TCL_LIBRARY=$(LIBRARY_DIR)" > gdb.run
798         gdb ./$(TCLSH) --command=gdb.run
799         rm gdb.run
800
801 depend:
802
803 Makefile: $(SRC_DIR)/Makefile.in
804         ./config.status
805
806 cleanhelp:
807         $(RM) *.hlp *.cnt *.GID *.rtf man2tcl.exe
808
809 clean: cleanhelp clean-packages
810         $(RM) *.lib *.a *.exp *.dll *.$(RES) *.${OBJEXT} *~ \#* TAGS a.out
811         $(RM) $(TCLSH) $(CAT32) $(TEST_EXE_FILE) $(TEST_DLL_FILE) tcltest.cmd tcltest.sh
812         $(RM) *.pch *.ilk *.pdb *.zip
813         $(RMDIR) *.vfs
814
815 distclean: distclean-packages clean
816         $(RM) Makefile config.status config.cache config.log tclConfig.sh \
817                 tcl.hpj config.status.lineno tclsh.exe.manifest
818
819 #
820 # Bundled package targets
821 #
822
823 PKG_CFG_ARGS            = @PKG_CFG_ARGS@
824 PKG_DIR                 = ./pkgs
825
826 packages:
827         @builddir=`$(CYGPATH) $$(pwd -P)`; \
828         for i in $(PKGS_DIR)/*; do \
829           if [ -d $$i ] ; then \
830             if [ -x $$i/configure ] ; then \
831               pkg=`basename $$i`; \
832               mkdir -p $(PKG_DIR)/$$pkg; \
833               if [ ! -f $(PKG_DIR)/$$pkg/Makefile ]; then \
834                 ( cd $(PKG_DIR)/$$pkg; \
835                   echo "Configuring package '$$i' wd = `$(CYGPATH) $$(pwd -P)`"; \
836                   $$i/configure --with-tcl=$$builddir --with-tclinclude=$(GENERIC_DIR_NATIVE) $(PKG_CFG_ARGS) --enable-shared --enable-threads; ) \
837               fi ; \
838               echo "Building package '$$pkg'"; \
839               ( cd $(PKG_DIR)/$$pkg; $(MAKE); ) \
840             fi; \
841           fi; \
842         done; \
843         cd $$builddir
844
845 install-packages: packages
846         @builddir=`pwd -P`; \
847         for i in $(PKGS_DIR)/*; do \
848           if [ -d $$i ]; then \
849             pkg=`basename $$i`; \
850             if [ -f $(PKG_DIR)/$$pkg/Makefile ]; then \
851                 echo "Installing package '$$pkg'"; \
852                 ( cd $(PKG_DIR)/$$pkg; $(MAKE) install "DESTDIR=$(INSTALL_ROOT)"; ) \
853             fi; \
854           fi; \
855         done; \
856         cd $$builddir
857
858 test-packages: tcltest packages
859         @builddir=`pwd -P`; \
860         for i in $(PKGS_DIR)/*; do \
861           if [ -d $$i ]; then \
862             pkg=`basename $$i`; \
863             if [ -f $(PKG_DIR)/$$pkg/Makefile ]; then \
864                 echo "Testing package '$$pkg'"; \
865                 ( cd $(PKG_DIR)/$$pkg; $(MAKE) "LD_LIBRARY_PATH=$$builddir:${LD_LIBRARY_PATH}" "TCL_LIBRARY=${TCL_BUILDTIME_LIBRARY}" "TCLLIBPATH=$$builddir/pkgs" test "TCLSH_PROG=$$builddir/${TCLSH}"; ) \
866             fi; \
867           fi; \
868         done; \
869         cd $$builddir
870
871 clean-packages:
872         @builddir=`pwd -P`; \
873         for i in $(PKGS_DIR)/*; do \
874           if [ -d $$i ]; then \
875             pkg=`basename $$i`; \
876             if [ -f $(PKG_DIR)/$$pkg/Makefile ]; then \
877                 ( cd $(PKG_DIR)/$$pkg; $(MAKE) clean; ) \
878             fi; \
879           fi; \
880         done; \
881         cd $$builddir
882
883 distclean-packages:
884         @builddir=`pwd -P`; \
885         for i in $(PKGS_DIR)/*; do \
886           if [ -d $$i ]; then \
887             pkg=`basename $$i`; \
888             if [ -f $(PKG_DIR)/$$pkg/Makefile ]; then \
889                 ( cd $(PKG_DIR)/$$pkg; $(MAKE) distclean; ) \
890             fi; \
891             cd $$builddir; \
892             rm -rf $(PKG_DIR)/$$pkg; \
893           fi; \
894         done; \
895         rm -rf $(PKG_DIR)
896
897 #
898 # Regenerate the stubs files.
899 #
900
901 $(GENERIC_DIR)/tclStubInit.c: $(GENERIC_DIR)/tcl.decls \
902                 $(GENERIC_DIR)/tclInt.decls
903         @echo "Warning: tclStubInit.c may be out of date."
904         @echo "Developers may want to run \"make genstubs\" to regenerate."
905         @echo "This warning can be safely ignored, do not report as a bug!"
906
907 genstubs:
908         $(TCL_EXE) "$(ROOT_DIR_NATIVE)/tools/genStubs.tcl" \
909             "$(GENERIC_DIR_NATIVE)" \
910             "$(GENERIC_DIR_NATIVE)/tcl.decls" \
911             "$(GENERIC_DIR_NATIVE)/tclInt.decls" \
912             "$(GENERIC_DIR_NATIVE)/tclTomMath.decls"
913         $(TCL_EXE) "$(ROOT_DIR_NATIVE)/tools/genStubs.tcl" \
914             "$(GENERIC_DIR_NATIVE)" \
915             "$(GENERIC_DIR_NATIVE)/tclOO.decls"
916
917 #
918 # This target creates the HTML folder for Tcl & Tk and places it in
919 # DISTDIR/html. It uses the tcltk-man2html.tcl tool from the Tcl group's tool
920 # workspace. It depends on the Tcl & Tk being in directories called tcl8.* &
921 # tk8.* up two directories from the TOOL_DIR.
922 #
923
924 TOOL_DIR=$(ROOT_DIR)/tools
925 HTML_INSTALL_DIR=$(ROOT_DIR)/html
926 html:
927         $(MAKE) shell SCRIPT="$(TOOL_DIR)/tcltk-man2html.tcl --htmldir=$(HTML_INSTALL_DIR) --srcdir=$(ROOT_DIR)/.. $(BUILD_HTML_FLAGS)"
928
929 html-tcl: $(TCLSH)
930         $(MAKE) shell SCRIPT="$(TOOL_DIR)/tcltk-man2html.tcl --htmldir=$(HTML_INSTALL_DIR) --srcdir=$(ROOT_DIR)/.. $(BUILD_HTML_FLAGS) --tcl"
931
932 html-tk: $(TCLSH)
933         $(MAKE) shell SCRIPT="$(TOOL_DIR)/tcltk-man2html.tcl --htmldir=$(HTML_INSTALL_DIR) --srcdir=$(ROOT_DIR)/.. $(BUILD_HTML_FLAGS) --tk"
934
935 #
936 # The list of all the targets that do not correspond to real files. This stops
937 # 'make' from getting confused when someone makes an error in a rule.
938 #
939
940 .PHONY: all tcltest binaries libraries doc gendate gentommath_h install
941 .PHONY: install-binaries install-libraries install-tzdata install-msgs
942 .PHONY: install-doc install-private-headers test test-tcl runtest shell
943 .PHONY: gdb depend cleanhelp clean distclean packages install-packages
944 .PHONY: test-packages clean-packages distclean-packages genstubs html
945 .PHONY: html-tcl html-tk
946
947 # DO NOT DELETE THIS LINE -- make depend depends on it.