1
2# ------------------------------------------------------------------------
3# 	Makefile for BLT library using VC++.
4# ------------------------------------------------------------------------
5
6include	      e:/src/blt/win/makedefs
7
8TOOLS32       =	c:/Program\ Files/Microsoft\ Visual\ Studio/Vc98
9AR            =	lib.exe -link50compat
10LD            =	link.exe
11CC            =	cl.exe
12rc32          =	rc.exe
13
14ifeq ($(WITH_JPEG),0)
15EXTRA_DEFINES =
16endif
17ifeq ($(WITH_JPEG),1)
18EXTRA_DEFINES = -DHAVE_JPEGLIB_H=1
19JPEGDIR       =	$(srcdir)/../../jpeg-6b
20JPEGLIB =	$(JPEGDIR)/libjpeg.lib
21JPEGINC	      = $(JPEGDIR)
22endif
23ifeq ($(WITH_JPEG),2)
24EXTRA_DEFINES = -DHAVE_IJL_H=1
25JPEGDIR       =	c:/Program\ Files/Intel/IJL
26JPEGLIB	      =	$(JPEGDIR)/lib/ijl15l.lib
27JPEGINC	      = $(JPEGDIR)/Include
28endif
29
30# ------------------------------------------------------------------------
31# 	C Compiler options
32# ------------------------------------------------------------------------
33
34DEFINES       =	-D_X86_=1 -D__STDC__ -DWIN32 -DCONSOLE -D_MT \
35		$(DEBUG_DEFINES) $(SHLIB_DEFINES) $(EXTRA_DEFINES)
36
37ifeq ($(SHARED),1)
38SHLIB_DEFINES =	-D_DLL
39SHLIB_TARGET  =	build-dll
40LIBS          =	$(COMMON_LIBS)
41else
42SHLIB_DEFINES =	-D_CTYPE_DISABLE_MACROS
43LIBS          =	$(COMMON_LIBS) $(EXTRA_LIBS)
44endif
45
46ifeq ($(DEBUG),1)
47CFLAGS        =	-Z7 -Od
48DEBUG_LDFLAGS =	-debug:full -debugtype:cv
49DEBUG_DEFINES = -DUSE_TCLALLOC=0
50TK_LIB        =	$(TKDIR)/win/Debug/tk$(v2)d.lib
51TCL_LIB       =	$(TCLDIR)/win/Debug/tcl$(v2)d.lib
52MSVCRT        =	msvcrtd.lib
53else
54CFLAGS        =	-Ox -GB -GD
55DEBUG_LDFLAGS =	-debug:full -debugtype:cv
56TK_LIB        =	$(TKDIR)/win/Release/tk$(v2).lib
57TCL_LIB       =	$(TCLDIR)/win/Release/tcl$(v2).lib
58MSVCRT        =	msvcrt.lib
59endif
60
61EXTRA_CFLAGS  =	-nologo -W3
62
63# ------------------------------------------------------------------------
64# 	Linker flags and options
65# ------------------------------------------------------------------------
66
67COMMON_LDFLAGS = -nodefaultlib -release -nologo -warn:3 \
68		-machine:IX86 -align:0x1000 \
69		$(DEBUG_LDFLAGS)
70
71DLLENTRY      =	@12
72SHLIB_LDFLAGS = $(COMMON_LDFLAGS) \
73		-subsystem:console -entry:mainCRTStartup \
74		-subsystem:windows -entry:WinMainCRTStartup \
75		-entry:_DllMainCRTStartup$(DLLENTRY) -dll
76
77LDFLAGS       =	$(COMMON_LDFLAGS) \
78		-fixed:NO -stack:2300000
79
80COMMON_LIBS   =	$(TK_LIB) $(TCL_LIB) \
81		$(MSVCRT) \
82		kernel32.lib user32.lib
83
84EXTRA_LIBS    =	$(OLELIB) \
85		$(JPEGLIB) \
86		gdi32.lib \
87		oldnames.lib \
88		advapi32.lib \
89		winspool.lib \
90		comdlg32.lib
91
92TCL_ONLY_LIBS = $(TCL_LIB) $(MSVCRT)  kernel32.lib user32.lib advapi32.lib
93
94
95# ------------------------------------------------------------------------
96# 	Source and target installation directories
97# ------------------------------------------------------------------------
98
99srcdir        =	.
100instdirs      =	$(prefix) $(exec_prefix) $(bindir) $(libdir) \
101			$(includedir)
102instdirs      =	$(exec_prefix) $(prefix) $(libdir)
103
104# ------------------------------------------------------------------------
105# 	Directories containing Tcl and Tk include files and libraries
106# ------------------------------------------------------------------------
107
108TCLDIR        =	$(srcdir)/../../tcl$(v3)
109TKDIR         =	$(srcdir)/../../tk$(v3)
110INCLUDES      =	-I. -I$(srcdir) \
111		-I$(TOOLS32)/include \
112		-I$(JPEGINC) \
113		-I$(TCLDIR)/win -I$(TCLDIR)/generic \
114		-I$(TKDIR)/win -I$(TKDIR)/generic -I$(TKDIR)/xlib \
115
116#-I$(TCLROOT)/include
117
118SHLIB_LD_LIBS =	$(COMMON_LIBS) $(EXTRA_LIBS)
119
120# ------------------------------------------------------------------------
121# 	You don't need to edit anything beyond this point
122# ------------------------------------------------------------------------
123
124N_OBJS       =	bltTed.o
125V3_OBJS       =	bltTri.o bltGrMt.o
126
127TK_OBJS       =	tkButton.o tkFrame.o tkScrollbar.o
128
129GRAPH_OBJS =	bltGrAxis.o \
130		bltGrBar.o \
131		bltGrElem.o \
132		bltGrGrid.o \
133		bltGrHairs.o \
134		bltGrLegd.o \
135		bltGrLine.o \
136		bltGrMarker.o \
137		bltGrMisc.o \
138		bltGrPen.o \
139		bltGrPs.o \
140		bltGraph.o
141
142TCL_ONLY_OBJS =	bltAlloc.o \
143		bltArrayObj.o \
144		bltBgexec.o \
145		bltChain.o \
146		bltDebug.o \
147		bltHash.o \
148		bltList.o \
149		bltNsUtil.o \
150		bltParse.o \
151		bltPool.o \
152		bltSpline.o \
153		bltSwitch.o \
154		bltTree.o \
155		bltTreeCmd.o \
156		bltUtil.o \
157		bltVecCmd.o \
158		bltVecMath.o \
159		bltVecObjCmd.o \
160		bltVector.o \
161		bltWatch.o  \
162		bltWinPipe.o \
163		bltWinUtil.o \
164		bltWinDde.o \
165		pure_api.o
166
167DEMO_OBJS     =	tkConsole.o bltWinMain.o
168
169OBJS =		$(GRAPH_OBJS) \
170		$(TCL_ONLY_OBJS) \
171		bltBeep.o \
172		bltBind.o \
173		bltBitmap.o \
174		bltBusy.o \
175		bltCanvEps.o \
176		bltConfig.o \
177		bltContainer.o \
178		bltDragdrop.o \
179		bltHierbox.o \
180		bltHtext.o \
181		bltImage.o \
182		bltWinImage.o \
183		bltPs.o \
184		bltTable.o \
185		bltTabnotebook.o \
186		bltTabset.o \
187		bltText.o \
188		bltTile.o \
189		bltTreeView.o \
190		bltTreeViewCmd.o \
191		bltTreeViewEdit.o \
192		bltTreeViewColumn.o \
193		bltTreeViewStyle.o \
194		bltWinDraw.o \
195		bltWinPrnt.o \
196		bltWindow.o \
197		bltObjConfig.o \
198		bltWinop.o \
199		$(TK_OBJS) $(N_OBJS)
200
201NOT_YET       =	bltContainer.o bltCutBuffer.o bltColor.o
202
203HEADERS       =	blt.h bltChain.h bltVector.h bltTree.h bltPool.h bltHash.h
204
205# GNU Make-specific macro
206SRCS          =	$(patsubst %.o,$(srcdir)/%.c,$(OBJS))
207
208shell_name    = bltwish
209version       =	$(BLT_MAJOR_VERSION)$(BLT_MINOR_VERSION)
210bltwish =	bltwish.exe
211bltsh =		bltsh.exe
212bltwish2 =	bltwish$(version).exe
213bltsh2 =	bltsh$(version).exe
214
215lib_name =	BLT$(version)
216lib_a =		BLT$(version).lib
217lib_so =	BLT$(version).dll
218tcl_only_lib_a = BLTlite$(version).lib
219tcl_only_lib_so = BLTlite$(version).dll
220
221CC_SWITCHES   =	$(CFLAGS) $(EXTRA_CFLAGS) $(DEFINES) $(INCLUDES)
222VPATH         =	$(srcdir)
223
224all: build-library $(SHLIB_TARGET) build-demos
225
226install: all install-dirs install-headers install-binaries install-demos
227
228build-demos: $(SHLIB_TARGET) $(bltwish) $(bltsh)
229
230build-library: $(lib_a) $(tcl_only_lib_a)
231
232build-dll: build-library $(lib_so) $(tcl_only_lib_so)
233
234$(bltwish): $(lib_a) tkConsole.o  bltWinMain.c
235	$(RM) $(bltwish)
236	$(CC) -c $(CC_SWITCHES) -DTCLLIBPATH=\"$(TCLLIBPATH)\" \
237		-FobltWinMain.o $(srcdir)/bltWinMain.c
238	LIB=$(TOOLS32)/lib \
239	$(LD) $(LDFLAGS) tkConsole.o bltWinMain.o -out:$(bltwish) \
240		$(lib_a) $(LIBS)
241
242$(bltsh): $(tcl_only_lib_a) bltWinMain.c
243	$(RM) $(bltsh)
244	$(CC) -c $(CC_SWITCHES) -DTCL_ONLY \
245		-DTCLLIBPATH=\"$(TCLLIBPATH)\" \
246		-FobltWinMain.o $(srcdir)/bltWinMain.c
247	LIB=$(TOOLS32)/lib \
248	$(LD) $(LDFLAGS) bltWinMain.o -out:$(bltsh) \
249		$(tcl_only_lib_a) $(TCL_ONLY_LIBS)
250
251$(lib_a):  bltHash.h $(OBJS) bltInit.c
252	$(RM) bltInit.o
253	$(CC) -c $(CC_SWITCHES)  -DBLT_LIBRARY=\"$(BLT_LIBRARY)\" \
254		-FobltInit.o $(srcdir)/bltInit.c
255	$(RM) $@
256	$(AR) -out:$@ bltInit.o $(OBJS)
257
258$(lib_so): $(lib_a) $(OBJS) bltInit.c
259	$(RM) bltInit.o
260	$(CC) -c $(CC_SWITCHES) -DBLT_LIBRARY=\"$(BLT_LIBRARY)\" \
261		-FobltInit.o $(srcdir)/bltInit.c
262	$(RM) $@
263	LIB=$(TOOLS32)/lib \
264	$(LD) $(SHLIB_LDFLAGS) -out:$@ bltInit.o $(OBJS) $(SHLIB_LD_LIBS)
265
266$(tcl_only_lib_a):  bltHash.h $(TCL_ONLY_OBJS) bltInit.c
267	$(RM) bltInit.o
268	$(CC) -c $(CC_SWITCHES) -DTCL_ONLY -DBLT_LIBRARY=\"$(BLT_LIBRARY)\" \
269		-FobltInit.o $(srcdir)/bltInit.c
270	$(RM) $@
271	$(AR) -out:$@ bltInit.o $(TCL_ONLY_OBJS)
272
273$(tcl_only_lib_so): $(tcl_only_lib_a) $(TCL_ONLY_OBJS) bltInit.c
274	$(RM) bltInit.o
275	$(CC) -c $(CC_SWITCHES) -DTCL_ONLY -DBLT_LIBRARY=\"$(BLT_LIBRARY)\" \
276		-FobltInit.o $(srcdir)/bltInit.c
277	$(RM) $@
278	LIB=$(TOOLS32)/lib \
279	$(LD) $(SHLIB_LDFLAGS) -out:$@ bltInit.o $(TCL_ONLY_OBJS) \
280		$(TCL_ONLY_LIBS)
281
282bltHash.h: bltHash.h.in
283	sed -e 's/@SIZEOF_VOID_P@/4/' \
284	    -e 's/@SIZEOF_INT@/4/' \
285	    -e 's/@SIZEOF_LONG@/4/' \
286	    -e 's/@SIZEOF_LONG_LONG@/8/' \
287	    -e 's/@HAVE_INTTYPES_H@/0/' \
288	    bltHash.h.in > bltHash.h
289
290install-dirs:
291	@for i in $(instdirs) ; do \
292	    if test ! -d "$$i" ; then \
293		echo " mkdir $$i" ; \
294		mkdir "$$i" ; \
295	    fi ; \
296        done
297
298install-binaries: install-lib install-demos
299
300install-demos: build-demos
301	$(INSTALL) $(bltwish) $(bindir)/$(bltwish)
302	$(INSTALL) $(bltwish) $(bindir)/$(bltwish2)
303	$(INSTALL) $(bltsh) $(bindir)/$(bltsh)
304	$(INSTALL) $(bltsh) $(bindir)/$(bltsh2)
305
306install-lib: $(lib_so) $(lib_a)
307	$(INSTALL_DATA) $(lib_so) $(bindir)
308	$(INSTALL_DATA) $(lib_a) $(libdir)
309	$(INSTALL_DATA) $(tcl_only_lib_so) $(bindir)
310	$(INSTALL_DATA) $(tcl_only_lib_a) $(libdir)
311
312install-headers:
313	for i in $(HEADERS) ; do \
314	    $(INSTALL_DATA) "$(srcdir)/$$i" $(includedir) ; \
315	done
316
317lint:
318	$(LINT) $(LINTFLAGS) $(DEFINES) $(INCLUDES) $(SRCS)
319
320clean:
321	$(RM) *.o *.pdb *.exp \
322		$(lib_a) $(lib_so) $(tcl_only_lib_a) $(tcl_only_lib_so) \
323		$(bltwish) $(bltsh) $(bltwish2) $(bltsh2)
324	$(RM) $(srcdir)/*.bak $(srcdir)/*\~ $(srcdir)/"#"*
325
326distclean: clean
327	$(RM) Makefile
328
329.c.o:
330	$(CC) -c $(CC_SWITCHES) -Fo$*.o $<
331
332