1#
2# Makefile for Borland C++ 5.5 (or C++ Builder 5), adapted from the makefile
3#   for Visual C++ that came with tk 8.3.3
4#
5# Some "not so obvious" details in this makefile are preceded by a comment
6# "maintenance hint", which tries to explain what's going on. Better to
7# leave those in place.
8# Helmut Giese, July 2002
9#
10# See the file "license.terms" for information on usage and redistribution
11# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
12#
13# Copyright (c) 1995-1997 Sun Microsystems, Inc.
14# Copyright (c) 1998-2000 Ajuba Solutions.
15#
16# RCS: @(#) $Id: makefile.bc,v 1.11 2002/07/16 05:01:23 davygrvy Exp $
17
18# Does not depend on the presence of any environment variables in
19# order to compile tcl; all needed information is derived from
20# location of the compiler directories.
21
22#
23# Project directories
24#
25# ROOT    = top of source tree
26#
27# TMPDIR  = location where .obj files should be stored during build
28#
29# TOOLS32 = location of Borland development tools.
30#
31# TCLDIR = location of top of Tcl source hierarchy
32#
33
34ROOT        = ..
35TCLDIR      = ..\..\tcl8.4
36INSTALLDIR  = D:\tmp\tcl
37
38# If you have C++ Builder 5 or the free Borland C++ 5.5 compiler
39# adapt the following paths as appropriate for your system
40TOOLS32    = d:\cbld5
41TOOLS32_rc = d:\cbld5
42#TOOLS32    = c:\bc55
43#TOOLS32_rc = c:\bc55
44
45cc32      = "$(TOOLS32)\bin\bcc32.exe"
46link32    = "$(TOOLS32)\bin\ilink32.exe"
47lib32     = "$(TOOLS32)\bin\tlib.exe"
48rc32      = "$(TOOLS32_rc)\bin\brcc32.exe"
49include32 = -I"$(TOOLS32)\include;$(TOOLS32)\include\mfc"
50libpath32 = -L"$(TOOLS32)\lib"
51
52# Uncomment the following line to compile with thread support
53#THREADDEFINES = -DTCL_THREADS=1
54
55# Allow definition of NDEBUG via command line
56# Set NODEBUG to 0 to compile with symbols
57!if !defined(NODEBUG)
58NODEBUG = 1
59!endif
60
61# uncomment the following two lines to compile with TCL_MEM_DEBUG
62#DEBUGDEFINES =-DTCL_MEM_DEBUG
63
64######################################################################
65# Do not modify below this line
66######################################################################
67
68TCLNAMEPREFIX = tcl
69TKNAMEPREFIX = tk
70WISHNAMEPREFIX = wish
71VERSION = 84
72DOTVERSION = 8.4
73
74TCLSTUBPREFIX = $(TCLNAMEPREFIX)stub
75TKSTUBPREFIX  = $(TKNAMEPREFIX)stub
76
77
78BINROOT   = .
79!IF "$(NODEBUG)" == "1"
80TMPDIRNAME  = Release
81DBGX        =
82!ELSE
83TMPDIRNAME  = Debug
84DBGX        =
85#DBGX       = d
86!ENDIF
87TMPDIR      = $(BINROOT)\$(TMPDIRNAME)
88OUTDIRNAME  = $(TMPDIRNAME)
89OUTDIR      = $(TMPDIR)
90
91TCLLIB        = $(TCLNAMEPREFIX)$(VERSION)$(DBGX).lib
92TCLPLUGINLIB  = $(TCLNAMEPREFIX)$(VERSION)p.lib
93TCLSTUBLIB    = $(TCLSTUBPREFIX)$(VERSION)$(DBGX).lib
94TKDLLNAME     = $(TKNAMEPREFIX)$(VERSION)$(DBGX).dll
95TKDLL         = $(OUTDIR)\$(TKDLLNAME)
96TKLIB         = $(OUTDIR)\$(TKNAMEPREFIX)$(VERSION)$(DBGX).lib
97TKSTUBLIBNAME = $(TKSTUBPREFIX)$(VERSION)$(DBGX).lib
98TKSTUBLIB     = $(OUTDIR)\$(TKSTUBLIBNAME)
99TKPLUGINDLLNAME = $(TKNAMEPREFIX)$(VERSION)p$(DBG).dll
100TKPLUGINDLL   = $(OUTDIR)\$(TKPLUGINDLLNAME)
101TKPLUGINLIB   = $(OUTDIR)\$(TKNAMEPREFIX)$(VERSION)p$(DBGX).lib
102
103WISH      = $(OUTDIR)\$(WISHNAMEPREFIX)$(VERSION)$(DBGX).exe
104WISHC     = $(OUTDIR)\$(WISHNAMEPREFIX)c$(VERSION)$(DBGX).exe
105WISHP     = $(OUTDIR)\$(WISHNAMEPREFIX)p$(VERSION)$(DBGX).exe
106TKTEST    = $(OUTDIR)\$(TKNAMEPREFIX)test.exe
107CAT32     = $(TMPDIR)\cat32.exe
108
109BIN_INSTALL_DIR     = $(INSTALLDIR)\bin
110INCLUDE_INSTALL_DIR = $(INSTALLDIR)\include
111LIB_INSTALL_DIR     = $(INSTALLDIR)\lib
112SCRIPT_INSTALL_DIR  = $(LIB_INSTALL_DIR)\tk$(DOTVERSION)
113
114WISHOBJS = \
115  $(TMPDIR)\winMain.obj
116
117TKTESTOBJS = \
118  $(TMPDIR)\tkTest.obj \
119  $(TMPDIR)\tkSquare.obj \
120  $(TMPDIR)\testMain.obj \
121  $(TMPDIR)\tkWinTest.obj \
122  $(TCLLIBDIR)\tclThreadTest.obj
123
124XLIBOBJS = \
125  $(TMPDIR)\xcolors.obj \
126  $(TMPDIR)\xdraw.obj \
127  $(TMPDIR)\xgc.obj \
128  $(TMPDIR)\ximage.obj \
129  $(TMPDIR)\xutil.obj
130
131TKOBJS = \
132	$(TMPDIR)\tkConsole.obj \
133	$(TMPDIR)\tkUnixMenubu.obj \
134	$(TMPDIR)\tkUnixScale.obj \
135	$(XLIBOBJS) \
136	$(TMPDIR)\tkWin3d.obj \
137	$(TMPDIR)\tkWin32Dll.obj \
138	$(TMPDIR)\tkWinButton.obj \
139	$(TMPDIR)\tkWinClipboard.obj \
140	$(TMPDIR)\tkWinColor.obj \
141	$(TMPDIR)\tkWinConfig.obj \
142	$(TMPDIR)\tkWinCursor.obj \
143	$(TMPDIR)\tkWinDialog.obj \
144	$(TMPDIR)\tkWinDraw.obj \
145	$(TMPDIR)\tkWinEmbed.obj \
146	$(TMPDIR)\tkWinFont.obj \
147	$(TMPDIR)\tkWinImage.obj \
148	$(TMPDIR)\tkWinInit.obj \
149	$(TMPDIR)\tkWinKey.obj \
150	$(TMPDIR)\tkWinMenu.obj \
151	$(TMPDIR)\tkWinPixmap.obj \
152	$(TMPDIR)\tkWinPointer.obj \
153	$(TMPDIR)\tkWinRegion.obj \
154	$(TMPDIR)\tkWinScrlbr.obj \
155	$(TMPDIR)\tkWinSend.obj \
156	$(TMPDIR)\tkWinWindow.obj \
157	$(TMPDIR)\tkWinWm.obj \
158	$(TMPDIR)\tkWinX.obj \
159	$(TMPDIR)\stubs.obj \
160	$(TMPDIR)\tk3d.obj \
161	$(TMPDIR)\tkArgv.obj \
162	$(TMPDIR)\tkAtom.obj \
163	$(TMPDIR)\tkBind.obj \
164	$(TMPDIR)\tkBitmap.obj \
165	$(TMPDIR)\tkButton.obj \
166	$(TMPDIR)\tkCanvArc.obj \
167	$(TMPDIR)\tkCanvBmap.obj \
168	$(TMPDIR)\tkCanvImg.obj \
169	$(TMPDIR)\tkCanvLine.obj \
170	$(TMPDIR)\tkCanvPoly.obj \
171	$(TMPDIR)\tkCanvPs.obj \
172	$(TMPDIR)\tkCanvText.obj \
173	$(TMPDIR)\tkCanvUtil.obj \
174	$(TMPDIR)\tkCanvWind.obj \
175	$(TMPDIR)\tkCanvas.obj \
176	$(TMPDIR)\tkClipboard.obj \
177	$(TMPDIR)\tkCmds.obj \
178	$(TMPDIR)\tkColor.obj \
179	$(TMPDIR)\tkConfig.obj \
180	$(TMPDIR)\tkCursor.obj \
181	$(TMPDIR)\tkEntry.obj \
182	$(TMPDIR)\tkError.obj \
183	$(TMPDIR)\tkEvent.obj \
184	$(TMPDIR)\tkFileFilter.obj \
185	$(TMPDIR)\tkFocus.obj \
186	$(TMPDIR)\tkFont.obj \
187	$(TMPDIR)\tkFrame.obj \
188	$(TMPDIR)\tkGC.obj \
189	$(TMPDIR)\tkGeometry.obj \
190	$(TMPDIR)\tkGet.obj \
191	$(TMPDIR)\tkGrab.obj \
192	$(TMPDIR)\tkGrid.obj \
193	$(TMPDIR)\tkImage.obj \
194	$(TMPDIR)\tkImgBmap.obj \
195	$(TMPDIR)\tkImgGIF.obj \
196	$(TMPDIR)\tkImgPPM.obj \
197	$(TMPDIR)\tkImgPhoto.obj \
198	$(TMPDIR)\tkImgUtil.obj \
199	$(TMPDIR)\tkListbox.obj \
200	$(TMPDIR)\tkMacWinMenu.obj \
201	$(TMPDIR)\tkMain.obj \
202	$(TMPDIR)\tkMenu.obj \
203	$(TMPDIR)\tkMenubutton.obj \
204	$(TMPDIR)\tkMenuDraw.obj \
205	$(TMPDIR)\tkMessage.obj \
206	$(TMP_DIR)\tkPanedWindow.obj \
207	$(TMPDIR)\tkObj.obj \
208	$(TMPDIR)\tkOldConfig.obj \
209	$(TMPDIR)\tkOption.obj \
210	$(TMPDIR)\tkPack.obj \
211	$(TMPDIR)\tkPlace.obj \
212	$(TMPDIR)\tkPointer.obj \
213	$(TMPDIR)\tkRectOval.obj \
214	$(TMPDIR)\tkScale.obj \
215	$(TMPDIR)\tkScrollbar.obj \
216	$(TMPDIR)\tkSelect.obj \
217	$(TMPDIR)\tkText.obj \
218	$(TMPDIR)\tkTextBTree.obj \
219	$(TMPDIR)\tkTextDisp.obj \
220	$(TMPDIR)\tkTextImage.obj \
221	$(TMPDIR)\tkTextIndex.obj \
222	$(TMPDIR)\tkTextMark.obj \
223	$(TMPDIR)\tkTextTag.obj \
224	$(TMPDIR)\tkTextWind.obj \
225	$(TMPDIR)\tkTrig.obj \
226	$(TMPDIR)\tkUtil.obj \
227	$(TMPDIR)\tkVisual.obj \
228	$(TMPDIR)\tkStubInit.obj \
229	$(TMPDIR)\tkStubLib.obj \
230	$(TMPDIR)\tkWindow.obj
231
232# Maintenance hint: Please have multiple members of TKSTUBOBJS be separated
233# by exactly one ' ' (see below the rule for making TKSTUBLIB)
234TKSTUBOBJS = $(TMPDIR)\tkStubLib.obj $(TMPDIR)\tkStubImg.obj
235
236WINDIR      = $(ROOT)\win
237GENERICDIR  = $(ROOT)\generic
238XLIBDIR     = $(ROOT)\xlib
239BITMAPDIR   = $(ROOT)\bitmaps
240TCLLIBDIR   = $(TCLDIR)\win\$(OUTDIRNAME)
241RCDIR       = $(WINDIR)\rc
242
243TK_INCLUDES = -I$(WINDIR) -I$(GENERICDIR) -I$(BITMAPDIR) -I$(XLIBDIR) \
244      -I$(TCLDIR)\generic
245
246TK_DEFINES  = -D__WIN32__ $(DEBUGDEFINES) $(THREADDEFINES)
247
248######################################################################
249# Compile flags
250######################################################################
251
252!IF "$(NODEBUG)" == "1"
253# these macros cause maximum optimization and no symbols
254cdebug = -v- -vi- -O2 -D_DEBUG
255!ELSE
256# these macros enable debugging
257cdebug = -k -Od -r- -v -vi- -y
258!ENDIF
259
260SYSDEFINES = _MT;NO_STRICT;_NO_VCL
261
262# declarations common to all compiler options
263cbase = -3 -a4 -c -g0 -tWM -Ve -Vx -X-
264WARNINGS = -w-rch -w-pch -w-par -w-dup -w-pro -w-dpu
265
266ccons = -tWC
267
268CFLAGS      = $(cdebug) $(cbase) $(WARNINGS) -D$(SYSDEFINES)
269
270CON_CFLAGS  = $(CFLAGS) $(TK_DEFINES) $(include32) $(ccons)
271WISH_CFLAGS = $(CFLAGS) $(include32) $(TK_INCLUDES) $(TK_DEFINES)
272TK_CFLAGS   = $(CFLAGS) $(include32) $(TK_INCLUDES) $(TK_DEFINES) \
273                   -DUSE_TCL_STUBS
274
275######################################################################
276# Link flags
277######################################################################
278
279!IF "$(NODEBUG)" == "1"
280ldebug =
281!ELSE
282ldebug = -v
283!ENDIF
284
285# declarations common to all linker options
286LNFLAGS = -D"" -Gn -I$(TMPDIR) -x $(ldebug) $(libpath32)
287# -Gi: create lib file (is -Gl in doc)
288# -aa: Windows app, -ap: Windows console app
289LNFLAGS_DLL  = -ap -Gi -Tpd
290LNFLAGS_CONS = -ap -Tpe
291LNFLAGS_GUI  = -aa -Tpe
292
293LNLIBS = import32 cw32mt
294
295
296######################################################################
297# Project specific targets
298######################################################################
299
300all:      setup $(WISH) $(CAT32)
301install:  install-binaries install-libraries
302plugin:   setup $(TKPLUGINDLL) $(WISHP)
303tktest:   setup $(TKTEST) $(CAT32)
304
305# Maintenance hint: We want to set environment variables before calling tktest.
306#  If we do this in the form of normal commands, they will not persist up to
307#  the call of tktest. Therfore we put all commands wanted into a batch file.
308#  The normal way of using 'echo >x.bat' and 'echo >>x.bat' does not work here
309#  because we cannot write '... > tktest.txt' this way. Hence this advanced
310#  form of loop hopping:
311#    - Have MAKE produce a temporary file with the content we want.
312#    - Use it as input to the COPY command to produce a batch file.
313#    - Run the batch file and be happy.
314#
315test:     setup $(TKTEST) $(TKLIB) $(CAT32)
316  copy &&!
317  set TCL_LIBRARY=$(TCLDIR)/library
318  set PATH=$(TCLDIR)\win\$(TMPDIRNAME);$(PATH)
319  $(TKTEST) $(ROOT)/tests/all.tcl > tktest.txt
320! _test.bat
321  _test.bat
322#  del _test.bat
323
324runtest:  setup $(TKTEST) $(TKLIB) $(CAT32)
325  echo set TCL_LIBRARY=$(TCLDIR)/library             > _test2.bat
326  echo set PATH=$(TCLDIR)\win\$(TMPDIRNAME);$(PATH) >> _test2.bat
327  echo $(TKTEST)                                    >> _test2.bat
328  _test2.bat
329#  del _test2.bat
330
331console-wish : all $(WISHC)
332
333stubs:
334  $(TCLDIR)\win\$(TMPDIRNAME)\tclsh$(VERSION)$(DBGX) \
335    $(TCLDIR)\tools\genStubs.tcl $(GENERICDIR) \
336    $(GENERICDIR)\tk.decls $(GENERICDIR)\tkInt.decls
337
338setup:
339  @mkd $(TMPDIR)
340  @mkd $(OUTDIR)
341
342install-binaries:
343  @mkd "$(BIN_INSTALL_DIR)"
344  copy $(TKDLL) "$(BIN_INSTALL_DIR)"
345  copy $(WISH) "$(BIN_INSTALL_DIR)"
346  @mkd "$(LIB_INSTALL_DIR)"
347  copy $(TKLIB) "$(LIB_INSTALL_DIR)"
348
349install-libraries:
350  @mkd "$(INCLUDE_INSTALL_DIR)"
351  @mkd "$(INCLUDE_INSTALL_DIR)\X11"
352  copy "$(GENERICDIR)\tk.h"             "$(INCLUDE_INSTALL_DIR)"
353  copy "$(GENERICDIR)\tkDecls.h"        "$(INCLUDE_INSTALL_DIR)"
354  copy "$(GENERICDIR)\tkPlatDecls.h"    "$(INCLUDE_INSTALL_DIR)"
355  copy "$(GENERICDIR)\tkIntXlibDecls.h" "$(INCLUDE_INSTALL_DIR)"
356  xcopy "$(XLIBDIR)\X11\*.h"            "$(INCLUDE_INSTALL_DIR)\X11"
357  @mkd "$(SCRIPT_INSTALL_DIR)"
358  @mkd "$(SCRIPT_INSTALL_DIR)\images"
359  @mkd "$(SCRIPT_INSTALL_DIR)\demos"
360  @mkd "$(SCRIPT_INSTALL_DIR)\demos\images"
361  @mkd "$(SCRIPT_INSTALL_DIR)\msgs"
362  xcopy "$(ROOT)\library"		"$(SCRIPT_INSTALL_DIR)"
363  xcopy "$(ROOT)\library\images"	"$(SCRIPT_INSTALL_DIR)\images"
364  xcopy "$(ROOT)\library\demos"		"$(SCRIPT_INSTALL_DIR)\demos"
365  xcopy "$(ROOT)\library\demos\images"	"$(SCRIPT_INSTALL_DIR)\demos\images"
366  xcopy "$(ROOT)\library\msgs"		"$(SCRIPT_INSTALL_DIR)\msgs"
367
368$(TKLIB): $(TKDLL) $(TKSTUBLIB)
369
370# Maintenance hint: The macro puts a '+-' before the first member of
371#   TKSTUBOBJS, than replaces any ' ' with ' +-' - together putting '+-' in
372#   front of any member of TKSTUBOBJS (provided, they are separated in their
373#   defintion by just one space).
374#
375# The first time you *make* this target, you will get a warning
376#   tkStubLib not found in library
377# This is (probably) because of the '-' option, telling TLIB to remove
378# 'tkStubLib' when it does not yet exist. Forcing a re-make when it already
379# exists avoids this warning.
380#
381$(TKSTUBLIB): $(TKSTUBOBJS)
382    $(lib32) $@ +-$(TKSTUBOBJS: = +-)
383
384#    $(lib32) $@ @&&!
385#+-$(TKSTUBOBJS: = &^
386#+-)
387#!
388
389$(TKDLL): $(TKOBJS) $(TMPDIR)\tk.res
390    $(link32) $(ldebug) $(LNFLAGS) $(LNFLAGS_DLL) $(TOOLS32)\lib\c0d32 @&&!
391      $(TKOBJS), $@, -x, $(LNLIBS) $(TCLLIBDIR)\$(TCLSTUBLIB),, $(TMPDIR)\tk.res
392!
393
394$(TKPLUGINLIB): $(TKPLUGINDLL)
395
396#$(TKPLUGINDLL): $(TKOBJS) $(TMPDIR)\tk.res
397#        $(link32) $(ldebug) $(dlllflags) \
398#    -out:$@ $(TMPDIR)\tk.res $(TCLLIBDIR)\$(TCLPLUGINLIB) \
399#    $(guilibsdll) @<<
400#      $(TKOBJS)
401#<<
402
403$(WISH): $(WISHOBJS) $(TKLIB) $(TMPDIR)\wish.res
404  $(link32) $(ldebug) -S:2400000 $(LNFLAGS) $(LNFLAGS_GUI) $(TOOLS32)\lib\c0x32 @&&!
405    $(WISHOBJS), $@, -x, $(LNLIBS) $(TCLLIBDIR)\$(TCLLIB) $(TKLIB),, $(TMPDIR)\wish.res
406!
407
408$(WISHC): $(WISHOBJS) $(TKLIB) $(TMPDIR)\wish.res
409  $(link32) $(ldebug) -S:2400000 $(LNFLAGS) $(LNFLAGS_CONS) $(TOOLS32)\lib\c0x32 @&&!
410    $(WISHOBJS), $@, -x, $(LNLIBS) $(TCLLIBDIR)\$(TCLLIB) $(TKLIB),, $(TMPDIR)\wish.res
411!
412
413$(WISHP): $(WISHOBJS) $(TKPLUGINLIB) $(TMPDIR)\wish.res
414  $(link32) $(ldebug) $(guilflags) $(TMPDIR)\wish.res -out:$@ \
415    $(guilibsdll) $(TCLLIBDIR)\$(TCLPLUGINLIB) \
416    $(TKPLUGINLIB) $(WISHOBJS)
417
418$(TKTEST): $(TKTESTOBJS) $(TKLIB) $(TMPDIR)\wish.res
419  $(link32) $(ldebug) -S:2400000 $(LNFLAGS) $(LNFLAGS_GUI) $(TOOLS32)\lib\c0x32 @&&!
420    $(TKTESTOBJS), $@, -x, $(LNLIBS) $(TCLLIBDIR)\$(TCLLIB) $(TKLIB),, $(TMPDIR)\wish.res
421!
422#  $(link32) $(ldebug) $(guilflags) $(TMPDIR)\wish.res -out:$@ \
423#    $(guilibsdll) $(TCLLIBDIR)\$(TCLLIB) $(TKLIB) $(TKTESTOBJS)
424
425#$(CAT32): $(TCLDIR)\win\cat.c
426#  $(cc32) $(CON_CFLAGS) -o$(TMPDIR)\cat.obj $?
427#  $(link32) $(conlflags) -out:$@ -stack:16384 $(TMPDIR)\cat.obj $(conlibs)
428
429$(CAT32): $(TCLDIR)\win\cat.c
430  $(cc32) $(CONS_CFLAGS) -o$(TMPDIR)\cat.obj $?
431  $(link32) $(ldebug) $(LNFLAGS) $(LNFLAGS_CONS) $(TOOLS32)\lib\c0x32 \
432      $(TMPDIR)\cat.obj, $@, -x, $(LNLIBS),,
433
434#
435# Regenerate the stubs files.
436#
437
438genstubs:
439  tclsh$(VERSION) $(TCLDIR)\tools\genStubs.tcl $(GENERICDIR) \
440    $(GENERICDIR)\tk.decls $(GENERICDIR)\tkInt.decls
441
442#
443# Special case object file targets
444#
445
446$(TMPDIR)\testMain.obj: $(WINDIR)\winMain.c
447  $(cc32) $(WISH_CFLAGS) -DTK_TEST -o$@ $?
448
449$(TMPDIR)\tkTest.obj: $(GENERICDIR)\tkTest.c
450  $(cc32) $(WISH_CFLAGS) -o$@ $?
451
452$(TMPDIR)\tkWinTest.obj: $(WINDIR)\tkWinTest.c
453  $(cc32) $(WISH_CFLAGS) -o$@ $?
454
455$(TMPDIR)\tkSquare.obj: $(GENERICDIR)\tkSquare.c
456  $(cc32) $(WISH_CFLAGS) -o$@ $?
457
458$(TMPDIR)\winMain.obj: $(WINDIR)\winMain.c
459  $(cc32) $(WISH_CFLAGS) -o$@ $?
460
461$(TMPDIR)\tkStubLib.obj : $(GENERICDIR)\tkStubLib.c
462  $(cc32) $(TK_CFLAGS) -DSTATIC_BUILD -o$@ $?
463
464#
465# Implicit rules
466#
467
468{$(XLIBDIR)}.c{$(TMPDIR)}.obj:
469  $(cc32) -DDLL_BUILD -DBUILD_tk $(TK_CFLAGS) -o$@ $<
470
471{$(GENERICDIR)}.c{$(TMPDIR)}.obj:
472  $(cc32) -DDLL_BUILD -DBUILD_tk $(TK_CFLAGS) -o$@ $<
473
474{$(WINDIR)}.c{$(TMPDIR)}.obj:
475  $(cc32) -DDLL_BUILD -DBUILD_tk $(TK_CFLAGS) -o$@ $<
476
477{$(ROOT)\unix}.c{$(TMPDIR)}.obj:
478  $(cc32) -DDLL_BUILD -DBUILD_tk $(TK_CFLAGS) -o$@ $<
479
480{$(RCDIR)}.rc{$(TMPDIR)}.res:
481  $(rc32) -I"$(GENERICDIR)" -I"$(TOOLS32)\include" -I"$(TCLDIR)\generic" \
482      -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $<
483
484clean:
485  -@del $(OUTDIR)\*.exp
486  -@del $(OUTDIR)\*.lib
487  -@del $(OUTDIR)\*.dll
488  -@del $(OUTDIR)\*.exe
489  -@del $(OUTDIR)\*.pdb
490  -@del $(TMPDIR)\*.pch
491  -@del $(TMPDIR)\*.obj
492  -@del $(TMPDIR)\*.res
493  -@del $(TMPDIR)\*.exe
494  -@rmd $(OUTDIR)
495  -@rmd $(TMPDIR)
496
497# dependencies
498
499$(TMPDIR)\tk.res: \
500    $(RCDIR)\buttons.bmp \
501    $(RCDIR)\cursor*.cur \
502    $(RCDIR)\tk.ico
503
504$(GENERICDIR)/default.h: $(WINDIR)/tkWinDefault.h
505$(GENERICDIR)/tkButton.c: $(GENERICDIR)/default.h
506$(GENERICDIR)/tkCanvas.c: $(GENERICDIR)/default.h
507$(GENERICDIR)/tkEntry.c: $(GENERICDIR)/default.h
508$(GENERICDIR)/tkFrame.c: $(GENERICDIR)/default.h
509$(GENERICDIR)/tkListbox.c: $(GENERICDIR)/default.h
510$(GENERICDIR)/tkMenu.c: $(GENERICDIR)/default.h
511$(GENERICDIR)/tkMenubutton.c: $(GENERICDIR)/default.h
512$(GENERICDIR)/tkMessage.c: $(GENERICDIR)/default.h
513$(GENERICDIR)/tkScale.c: $(GENERICDIR)/default.h
514$(GENERICDIR)/tkScrollbar.c: $(GENERICDIR)/default.h
515$(GENERICDIR)/tkText.c: $(GENERICDIR)/default.h
516$(GENERICDIR)/tkTextIndex.c: $(GENERICDIR)/default.h
517$(GENERICDIR)/tkTextTag.c: $(GENERICDIR)/default.h
518
519$(GENERICDIR)/tkText.c: $(GENERICDIR)/tkText.h
520$(GENERICDIR)/tkTextBTree.c: $(GENERICDIR)/tkText.h
521$(GENERICDIR)/tkTextDisp.c: $(GENERICDIR)/tkText.h
522$(GENERICDIR)/tkTextDisp.c: $(GENERICDIR)/tkText.h
523$(GENERICDIR)/tkTextImage.c: $(GENERICDIR)/tkText.h
524$(GENERICDIR)/tkTextIndex.c: $(GENERICDIR)/tkText.h
525$(GENERICDIR)/tkTextMark.c: $(GENERICDIR)/tkText.h
526$(GENERICDIR)/tkTextTag.c: $(GENERICDIR)/tkText.h
527$(GENERICDIR)/tkTextWind.c: $(GENERICDIR)/tkText.h
528
529$(GENERICDIR)/tkMacWinMenu.c: $(GENERICDIR)/tkMenu.h
530$(GENERICDIR)/tkMenu.c: $(GENERICDIR)/tkMenu.h
531$(GENERICDIR)/tkMenuDraw.c: $(GENERICDIR)/tkMenu.h
532$(WINDIR)/tkWinMenu.c: $(GENERICDIR)/tkMenu.h
533
534
535
536