1
2# ------------------------------------------------------------------------
3# 	Makefile for BLT library using BCC55.
4# ------------------------------------------------------------------------
5
6.SUFFIXES: .obj .c
7
8!include     ..\win\makedefs
9
10prefix =	C:\Program Files\Tcl
11exec_prefix =	$(prefix)
12includedir =	$(prefix)\include
13bindir =	$(prefix)\bin
14libdir =	$(prefix)\lib
15scriptdir =	$(libdir)\blt$(BLT_VERSION)
16BLT_LIBRARY =	$(libdir)\blt$(BLT_VERSION)
17TCLLIBPATH =	$(libdir)\tcl$(v1)
18
19SHLIB_SUFFIX =	.dll
20
21SHELL =		bash.exe
22RM =		-del
23
24TOOLS32       =	c:\Borland\BCC55
25
26AR            =	$(TOOLS32)\bin\implib.exe
27LD            =	$(TOOLS32)\bin\ilink32.exe
28CC            =	$(TOOLS32)\bin\bcc32.exe
29rc32          =	$(TOOLS32)\bin\rc.exe
30
31!if ($(WITH_JPEG) == 0)
32EXTRA_DEFINES =
33!endif
34!if ($(WITH_JPEG) == 1)
35EXTRA_DEFINES = -DHAVE_JPEGLIB_H=1
36JPEGDIR       =	$(srcdir)\..\..\jpeg-6b
37JPEGLIB =	$(JPEGDIR)\libjpeg.lib
38JPEGINC	      = $(JPEGDIR)
39!endif
40!if ($(WITH_JPEG) == 2)
41EXTRA_DEFINES = -DHAVE_IJL_H=1
42JPEGDIR       =	c:\Program\ Files\Intel\IJL
43JPEGLIB	      =	$(JPEGDIR)\lib\ijl15l.lib
44JPEGINC	      = $(JPEGDIR)\Include
45!endif
46
47# ------------------------------------------------------------------------
48# 	C Compiler options
49# ------------------------------------------------------------------------
50
51DEFINES       =	-D__STDC__ -DWIN32 -DCONSOLE -D_MT -DNO_STRICT -D_NO_VCL \
52		$(DEBUG_DEFINES) $(SHLIB_DEFINES) $(EXTRA_DEFINES)
53
54!if ($(SHARED) == 1)
55SHLIB_DEFINES =	-D_DLL
56SHLIB_TARGET  =	build-dll
57LIBS          =	$(COMMON_LIBS) $(EXTRA_LIBS)
58!else
59SHLIB_CFLAGS  =
60SHLIB_DEFINES =
61LIBS          =	$(COMMON_LIBS) $(EXTRA_LIBS)
62!endif
63
64!if ($(DEBUG) == 1)
65#   -Od		Disable all optimizations.
66#   -k		Turn on standard stack frame.
67#   -r-		Disable use of registers.
68#   -v		Turn on source debugging.
69#   -vG		All code guard options on.
70#   -vi-	Turn off expansion of inline functions.
71#   -y		Debug line numbers on.
72DEBUG_CFLAGS  =	-v -k -Od -vi- -y -r- -lv -tW -tWM
73#   -v		Turn on source debugging.
74DEBUG_LDFLAGS =	-v
75DEBUG_DEFINES = -DUSE_TCLALLOC=0
76DEBUG_DEFINES =
77TK_LIB        =	$(TKDIR)\win\Debug\tk$(v2)d.lib
78TCL_LIB       =	$(TCLDIR)\win\Debug\tcl$(v2)d.lib
79MSVCRT        =
80!else
81#   -v-		Turn off source debugging.
82#   -vi-	Turn off expansion of inline functions.
83#   -O2		Generate fastest code possible.
84DEBUG_CFLAGS  =	-v- -vi- -O2 -D_DEBUG
85DEBUG_LDFLAGS =
86TK_LIB        =	$(TKDIR)\win\Release\tk$(v2).lib
87TCL_LIB       =	$(TCLDIR)\win\Release\tcl$(v2).lib
88MSVCRT        =
89!endif
90
91# Turn off the following bcc warnings:
92#   -w-pro	Call to function with no prototype
93#   -w-par	Parameter is never used.
94#   -w-sus 	Suspicious pointer conversion (bltCanvEps.c).
95#
96WARNINGS      =	-w-pro -w-par -w-eff -w-sus
97
98#   -q		Suppress compiler identification banner.
99#   -g1		Stop after the first warning.
100#   -tWC	Target is a Windows console application.
101#   -X		Disable compiler autodependency output.
102#   -ps		Use stdcall calling convention.
103
104EXTRA_CFLAGS  =	-q -g1 -tWC -X
105
106CFLAGS	      = $(WARNINGS) $(DEBUG_CFLAGS) $(SHLIB_CFLAGS) $(EXTRA_CFLAGS)
107
108# ------------------------------------------------------------------------
109# 	Linker flags and options
110# ------------------------------------------------------------------------
111
112#   -D		Save specified description.
113#   -w		Turn on warnings.
114#   -c		Treate case as significant in symbols.
115#   -x
116#   -Gi		Generate .lib file.
117#   -r		Verbose linking.
118#   -x		Suppresses map creation.
119COMMON_LDFLAGS = -D"" -w -c -x $(DEBUG_LDFLAGS) -L$(TOOLS32)\lib
120
121SHLIB_LDFLAGS  = $(COMMON_LDFLAGS) -x -Gi -Tpd $(TOOLS32)\lib\c0d32
122
123LDFLAGS =	$(COMMON_LDFLAGS) -x -Tpe -S:2400000
124
125COMMON_LIBS   =	$(TK_LIB) $(TCL_LIB) import32 cw32
126
127EXTRA_LIBS    =	$(OLELIB) \
128		$(JPEGLIB)
129
130TCL_ONLY_COMMON_LIBS = $(TCL_LIB) import32 cw32
131TCL_ONLY_LIBS =	$(TCL_ONLY_COMMON_LIBS) $(EXTRA_LIBS)
132
133# ------------------------------------------------------------------------
134# 	Source and target installation directories
135# ------------------------------------------------------------------------
136
137srcdir        =	.
138instdirs      =	$(prefix) $(exec_prefix) $(bindir) $(libdir) $(includedir)
139instdirs      =	$(exec_prefix) $(prefix) $(libdir)
140
141# ------------------------------------------------------------------------
142# 	Directories containing Tcl and Tk include files and libraries
143# ------------------------------------------------------------------------
144
145TCLDIR        =	$(srcdir)\..\..\tcl$(v3)
146TKDIR         =	$(srcdir)\..\..\tk$(v3)
147INCLUDES      =	-I. -I$(srcdir) \
148		-I$(TOOLS32)\include \
149		-I$(JPEGINC) \
150		-I$(TCLDIR)\win -I$(TCLDIR)\generic \
151		-I$(TKDIR)\win -I$(TKDIR)\generic -I$(TKDIR)\xlib \
152
153SHLIB_LD_LIBS =	$(COMMON_LIBS) $(EXTRA_LIBS)
154SHLIB_TCL_ONLY_LIBS =	$(COMMON_LIBS) $(EXTRA_LIBS)
155
156# ------------------------------------------------------------------------
157# 	You don't need to edit anything beyond this point
158# ------------------------------------------------------------------------
159
160N_OBJS       =	bltTed.obj
161V3_OBJS       =	bltTri.obj bltGrMt.obj
162
163TK_OBJS       =	tkButton.obj tkFrame.obj tkScrollbar.obj
164
165GRAPH_OBJS =	bltGrAxis.obj \
166		bltGrBar.obj \
167		bltGrElem.obj \
168		bltGrGrid.obj \
169		bltGrHairs.obj \
170		bltGrLegd.obj \
171		bltGrLine.obj \
172		bltGrMarker.obj \
173		bltGrMisc.obj \
174		bltGrPen.obj \
175		bltGrPs.obj \
176		bltGraph.obj
177
178TCL_ONLY_OBJS =	bltAlloc.obj \
179		bltArrayObj.obj \
180		bltBgexec.obj \
181		bltChain.obj \
182		bltDebug.obj \
183		bltHash.obj \
184		bltList.obj \
185		bltNsUtil.obj \
186		bltParse.obj \
187		bltPool.obj \
188		bltSpline.obj \
189		bltSwitch.obj \
190		bltTree.obj \
191		bltTreeCmd.obj \
192		bltUtil.obj \
193		bltVecCmd.obj \
194		bltVecMath.obj \
195		bltVecObjCmd.obj \
196		bltVector.obj \
197		bltWatch.obj  \
198		bltWinPipe.obj \
199		bltWinUtil.obj \
200		bltWinDde.obj
201
202
203DEMO_OBJS     =	tkConsole.obj bltWinMain.obj
204
205OBJS =		$(GRAPH_OBJS) \
206		$(TCL_ONLY_OBJS) \
207		bltBeep.obj \
208		bltBind.obj \
209		bltBitmap.obj \
210		bltBusy.obj \
211		bltCanvEps.obj \
212		bltConfig.obj \
213		bltContainer.obj \
214		bltDragdrop.obj \
215		bltHierbox.obj \
216		bltHtext.obj \
217		bltImage.obj \
218		bltWinImage.obj \
219		bltPs.obj \
220		bltTable.obj \
221		bltTabnotebook.obj \
222		bltTabset.obj \
223		bltText.obj \
224		bltTile.obj \
225		bltTreeView.obj \
226		bltTreeViewCmd.obj \
227		bltTreeViewEdit.obj \
228		bltTreeViewColumn.obj \
229		bltTreeViewStyle.obj \
230		bltWinDraw.obj \
231		bltWinPrnt.obj \
232		bltWindow.obj \
233		bltObjConfig.obj \
234		bltWinop.obj \
235		$(TK_OBJS) $(N_OBJS)
236
237NOT_YET       =	bltContainer.obj bltCutBuffer.obj bltColor.obj
238
239HEADERS       =	blt.h bltChain.h bltVector.h bltTree.h bltPool.h bltHash.h
240
241# GNU Make-specific macro
242SRCS          =	$(patsubst %.obj,$(srcdir)\%.c,$(OBJS))
243
244shell_name    = bltwish
245version       =	$(BLT_MAJOR_VERSION)$(BLT_MINOR_VERSION)
246bltwish =	bltwish.exe
247bltsh =		bltsh.exe
248
249lib_name =	BLT$(version)
250lib_a =		BLT$(version).lib
251lib_so =	BLT$(version).dll
252tcl_only_lib_a = BLTlite$(version).lib
253tcl_only_lib_so = BLTlite$(version).dll
254
255CC_SWITCHES   =	$(CFLAGS) $(DEFINES) $(INCLUDES)
256VPATH         =	$(srcdir)
257
258all: build-library build-demos
259
260build-demos: $(bltsh) $(bltwish)
261
262build-library: $(lib_a) $(tcl_only_lib_a)
263
264build-dll: build-library $(lib_so) $(tcl_only_lib_so)
265
266$(bltwish): $(lib_a) tkConsole.obj  bltWinMain.c
267	-del $(bltwish) 2>nul
268	$(CC) -c $(CC_SWITCHES) -DTCLLIBPATH="\"$(TCLLIBPATH)\"" \
269		-obltWinMain.obj $(srcdir)\bltWinMain.c
270	$(LD) $(LDFLAGS) -aa $(TOOLS32)\lib\c0w32 \
271		tkConsole.obj bltWinMain.obj, \
272		$(bltwish),, $(lib_a) $(LIBS)
273
274$(bltsh): $(tcl_only_lib_a) bltWinMain.c
275	-del $(bltsh) 2>nul
276	$(CC) -c $(CC_SWITCHES) -DTCL_ONLY \
277		-DTCLLIBPATH="\"$(TCLLIBPATH)\"" \
278		-obltWinMain.obj $(srcdir)\bltWinMain.c
279	$(LD) $(LDFLAGS) -ap $(TOOLS32)\lib\c0x32 bltWinMain.obj, \
280		$(bltsh),, $(tcl_only_lib_a) $(TCL_ONLY_LIBS)
281
282$(lib_a):  $(lib_so) bltHash.h $(OBJS) bltInit.c
283	-del bltInit.obj 2>nul
284	$(CC) -c $(CC_SWITCHES)  -DBLT_LIBRARY="\"$(BLT_LIBRARY)\"" \
285		-obltInit.obj $(srcdir)\bltInit.c
286	-del $@ 2>nul
287	$(AR) $@ $(lib_so)
288
289$(lib_so): $(OBJS) bltInit.c
290	-del bltInit.obj 2>nul
291	$(CC) -c $(CC_SWITCHES) -DBLT_LIBRARY="\"$(BLT_LIBRARY)\"" \
292		-obltInit.obj $(srcdir)\bltInit.c
293	-del $@ 2>nul
294	$(LD) $(SHLIB_LDFLAGS) bltInit.obj $(OBJS), $@,, $(LIBS)
295
296$(tcl_only_lib_a):  $(tcl_only_lib_so) bltHash.h $(TCL_ONLY_OBJS) bltInit.c
297	-del bltInit.obj 2>nul
298	$(CC) -c $(CC_SWITCHES) -DTCL_ONLY -DBLT_LIBRARY="\"$(BLT_LIBRARY)\"" \
299		-obltInit.obj $(srcdir)\bltInit.c
300	-del $@ 2>nul
301	$(AR) $@ $(tcl_only_lib_so)
302
303$(tcl_only_lib_so): $(TCL_ONLY_OBJS) bltInit.c
304	-del bltInit.obj 2>nul
305	$(CC) -c $(CC_SWITCHES) -DTCL_ONLY -DBLT_LIBRARY="\"$(BLT_LIBRARY)\"" \
306		-obltInit.obj $(srcdir)\bltInit.c
307	-del $@ 2>nul
308	$(LD) $(SHLIB_LDFLAGS) bltInit.obj $(TCL_ONLY_OBJS), $@, -x, \
309		$(TCL_ONLY_LIBS),,
310
311bltHash.h: bltHash.h.in
312	sed -e 's/@SIZEOF_VOID_P@/4/' \
313	    -e 's/@SIZEOF_INT@/4/' \
314	    -e 's/@SIZEOF_LONG@/4/' \
315	    -e 's/@SIZEOF_LONG_LONG@/8/' \
316	    -e 's/@HAVE_INTTYPES_H@/0/' \
317	    bltHash.h.in > bltHash.h
318
319clean:
320	-del *.obj 2>nul
321	-del *.pdb 2>nul
322	-del *.exp 2>nul
323	-del $(lib_a) 2>nul
324	-del $(lib_so) 2>nul
325	-del $(tcl_only_lib_a) 2>nul
326	-del $(tcl_only_lib_so) 2>nul
327	-del $(bltwish) 2>nul
328	-del $(bltsh) 2>nul
329	-del $(srcdir)\*.bak 2>nul
330	-del $(srcdir)\*~ 2>nul
331	-del $(srcdir)\"#"* 2>nul
332	-del *.pdb 2>nul
333	-del *.ilf 2>nul
334	-del *.ils 2>nul
335	-del *.ilc 2>nul
336	-del *.ild 2>nul
337	-del *.tds 2>nul
338	-del *.td2 2>nul
339	-del *.TR2 2>nul
340
341.c.obj:
342	$(CC) -c $(CC_SWITCHES) $<
343
344