1#
2# $Id: makefile.vc,v 1.3.2.2 2001/11/24 02:01:14 idiscovery Exp $
3#
4# Visual C++ 5.0 or 6.0 makefile for Tix.
5#
6# Copyright (c) 1996, Expert Interface Technologies
7#
8# See the file "license.terms" for information on usage and
9# redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
10#
11# Edit common.mak to set the common settings
12# TIX_DEBUG   = Compile Tix with debug information.
13# TCL_VER     = version of Tcl to compile with. Default is 8.0
14# 		You may also need to change TCLPATCH for the patchlevel
15#----------------------------------------------------------------------
16
17#
18# TOOLS32     = location of VC++ 32-bit development tools.
19# TOOLS32_rc  = location of VC++ rc program
20
21!IFNDEF TOOLS32
22# For VC 5
23TOOLS32 =       c:\DevStudio\vc
24TOOLS32_rc =    c:\DevStudio\sharedide
25# For VC 6
26#TOOLS32	= c:\Progra~1\micros~1\vc98
27#TOOLS32_rc	= c:\Progra~1\micros~1\common\msdev98
28!ENDIF
29
30# Set this to the appropriate value of /MACHINE: for your platform
31MACHINE = IX86
32
33# Project directories
34#
35# ROOT = top of source tree
36
37ROOT    = ..
38
39# TMPDIR = location where .obj files should be stored during build
40# TCLDIR = location of top of Tcl source heirarchy
41
42#----------------------------------------------------------------------
43# You shouldn't normally modify anything below this line
44#----------------------------------------------------------------------
45default:	all
46
47# Common compiler settings
48!include "common.mak"
49
50!IF "$(NODEBUG)" == "1"
51DBGX =
52!ELSE
53DBGX = d
54!ENDIF
55
56cc32   = "$(TOOLS32)\bin\cl.exe"
57rc32   = "$(TOOLS32_rc)\bin\rc.exe"
58link32 = "$(TOOLS32)\bin\link.exe"
59include32 = -I"$(TOOLS32)\include"
60
61TIX_INCLUDES = $(include32) \
62	-I$(ROOT)\win -I$(ROOT)\generic \
63	-I$(TKDIR)\generic -I$(TKDIR)\win -I$(TKDIR)\xlib \
64	-I$(TCLDIR)\generic $(ITCL_CFLAGS)
65
66WINDIR          = $(ROOT)\win
67GENERICDIR      = $(ROOT)\generic
68
69TCLLIBDIR   = $(TCLDIR)\win\Release
70TKLIBDIR        = $(TKDIR)\win\Release
71
72TIX_DEFINES      = -D__WIN32__ $(ITCL_DEFINES)
73
74TIX_CFLAGS      = $(cflagsdll) \
75			  $(TIX_INCLUDES) -Fo$@ $(TIX_DEFINES)
76TEST_CFLAGS     = $(cdebug) $(cflagsdll) \
77			  $(TIX_INCLUDES) $(TIX_DEFINES) -DTK_TEST
78
79CON_CFLAGS	= $(cdebug) $(cflags) $(cvars) $(include32) -DCONSOLE
80DUMPEXTS	= $(TMPDIR)\dumpexts.exe
81
82WISHOBJS = \
83	$(TMPDIR)\tixWinMain.obj
84
85TIXOBJS = \
86	$(TMPDIR)\$(CONSOLE_OBJ)  \
87	$(TMPDIR)\tixClass.obj    \
88	$(TMPDIR)\tixCmds.obj     \
89	$(TMPDIR)\tixCompat.obj   \
90	$(TMPDIR)\tixDiImg.obj    \
91	$(TMPDIR)\tixDiITxt.obj   \
92	$(TMPDIR)\tixDiStyle.obj  \
93	$(TMPDIR)\tixDItem.obj    \
94	$(TMPDIR)\tixDiText.obj   \
95	$(TMPDIR)\tixDiWin.obj    \
96	$(TMPDIR)\tixError.obj    \
97	$(TMPDIR)\tixForm.obj     \
98	$(TMPDIR)\tixFormMisc.obj \
99	$(TMPDIR)\tixGeometry.obj \
100	$(TMPDIR)\tixHLCol.obj    \
101	$(TMPDIR)\tixHLHdr.obj    \
102	$(TMPDIR)\tixHLInd.obj    \
103	$(TMPDIR)\tixImgCmp.obj   \
104	$(TMPDIR)\tixHList.obj    \
105	$(TMPDIR)\tixList.obj     \
106	$(TMPDIR)\tixMethod.obj   \
107	$(TMPDIR)\tixOption.obj   \
108	$(TMPDIR)\tixSmpLs.obj    \
109	$(TMPDIR)\tixWidget.obj   \
110	$(TMPDIR)\tixInit.obj     \
111	$(TMPDIR)\tixItcl.obj     \
112	$(TMPDIR)\tixUtils.obj    \
113	$(TMPDIR)\tixImgXpm.obj   \
114	$(TMPDIR)\tixNBFrame.obj  \
115	$(TMPDIR)\tixTList.obj    \
116	$(TMPDIR)\tixGrid.obj     \
117	$(TMPDIR)\tixGrData.obj   \
118	$(TMPDIR)\tixGrRC.obj     \
119	$(TMPDIR)\tixGrFmt.obj    \
120	$(TMPDIR)\tixGrSel.obj    \
121	$(TMPDIR)\tixGrUtl.obj    \
122	$(TMPDIR)\tixScroll.obj   \
123	$(TMPDIR)\tixWCmpt.obj    \
124	$(TMPDIR)\tixWinDraw.obj  \
125	$(TMPDIR)\tixWinXpm.obj   \
126	$(TMPDIR)\tixWinWm.obj
127
128######################################################################
129# Link flags
130######################################################################
131
132!IF "$(NODEBUG)" == "1"
133ldebug = /RELEASE
134!ELSE
135ldebug = -debug:full -debugtype:cv
136!ENDIF
137
138# declarations common to all linker options
139lcommon = /NODEFAULTLIB /RELEASE /NOLOGO
140
141# declarations for use on Intel i386, i486, and Pentium systems
142!IF "$(MACHINE)" == "IX86"
143DLLENTRY = @12
144lflags	 = $(lcommon) /MACHINE:$(MACHINE)
145!ELSE
146lflags	 = $(lcommon) /MACHINE:$(MACHINE)
147!ENDIF
148
149conlflags = $(lflags) -subsystem:console -entry:mainCRTStartup
150guilflags = $(lflags) -subsystem:windows -entry:WinMainCRTStartup
151dlllflags = $(lflags) -entry:_DllMainCRTStartup$(DLLENTRY) -dll
152
153libc = libc$(DBGX).lib oldnames.lib
154libcdll = msvcrt$(DBGX).lib oldnames.lib
155
156baselibs   = kernel32.lib $(optlibs) advapi32.lib user32.lib
157winlibs    = $(baselibs) gdi32.lib comdlg32.lib winspool.lib
158
159guilibs    = $(libc) $(winlibs)
160conlibs    = $(libc) $(baselibs)
161guilibsdll = $(libcdll) $(winlibs)
162conlibsdll = $(libcdll) $(baselibs)
163
164######################################################################
165# Compile flags
166######################################################################
167
168# declarations common to all compiler options (makefile.vc in tk
169# claims -O2 is buggy and so uses -Ot, so we do the same)
170#
171cvarsdll  = -D_X86_=1 -DWIN32 -D_WIN32 -D_MT -D_DLL
172cflagsdll = $(cvarsdll) -c -W3 -nologo -Fp$(TMPDIR)\ -YX -MD \
173	    -Oti -Gs -GD
174
175######################################################################
176# Project specific targets
177######################################################################
178
179all:    $(TIXDLL) $(TIXWISH)
180
181$(DUMPEXTS): $(WINDIR)\winDumpExts.c
182	$(cc32) $(CON_CFLAGS) -Fo$(TMPDIR)\ /c $?
183	set LIB="$(TOOLS32)\lib"
184	$(link32) $(ldebug) $(conlflags) $(guilibs) -out:$@ \
185		$(TMPDIR)\winDumpExts.obj
186
187$(TMPDIR)\tixvc.def: $(TIXOBJS) $(DUMPEXTS)
188	$(DUMPEXTS) -o $@ $(TIXDLL) @<<
189		$(TIXOBJS)
190<<
191
192# (ToDo) $(TIXDLL) doesn't have resources to define its icon, etc.
193#
194$(TIXDLL): $(TIXOBJS) $(TMPDIR)\tixvc.def
195	set LIB="$(TOOLS32)\lib"
196	$(link32) $(ldebug) $(dlllflags) -def:$(TMPDIR)\tixvc.def \
197		$(TKLIBDIR)\$(TKLIB) $(TCLLIBDIR)\$(TCLLIB) $(guilibsdll) \
198		$(ITCL_LIBS) -out:$@ @<<
199		$(TIXOBJS)
200<<
201
202
203$(TIXWISH): $(WISHOBJS) $(TIXOBJS) $(TIXLIB) $(TMPDIR)\tixwish.res
204	set LIB="$(TOOLS32)\lib"
205	$(link32) $(ldebug) $(guilflags) \
206		$(WISHOBJS) $(TMPDIR)\tixwish.res $(TIXLIB) \
207		$(TKLIBDIR)\$(TKLIB) $(TCLLIBDIR)\$(TCLLIB) $(guilibsdll) \
208		$(ITCL_LIBS) -out:$@
209
210
211#
212# Special case object file targets
213#
214
215$(TMPDIR)\testMain.obj: $(ROOT)\win\tixWinMain.c
216	$(cc32) $(TEST_CFLAGS) -Fo$@ $?
217
218#
219# Implicit rules
220#
221
222{$(GENERICDIR)}.c{$(TMPDIR)}.obj:
223	$(cc32) $(TIX_CFLAGS) -DBUILD_tix $<
224
225{$(WINDIR)}.c{$(TMPDIR)}.obj:
226	$(cc32) $(TIX_CFLAGS) -DBUILD_tix $<
227
228# Could use TIX_INCLUDES
229{$(WINDIR)\rc}.rc{$(TMPDIR)}.res:
230	$(rc32) -fo $@ -r -i $(GENERICDIR) -i $(TKDIR)\generic \
231	 -i $(TKDIR)\win -i $(TKDIR)\xlib -i $(TCLDIR)\generic $(include32) $<
232
233clean:
234	-del $(TMPDIR)\*.obj
235	-del $(TMPDIR)\*.exp
236	-del $(TMPDIR)\*.res
237	-del $(TMPDIR)\*.def
238	-del $(TMPDIR)\*.pch
239	-del $(TIXLIB)
240	-del $(TIXDLL)
241	-del $(TIXWISH)
242
243