1######################################################################
2#
3# XOTclExpat Makefile for Visual C++
4#
5######################################################################
6
7# Be sure to adapt the "configs.vc" file in the toplevel directory
8# to your system settings.
9!include "..\..\..\win\configs.vc"
10
11BINROOT		= .
12ROOT		= ..
13NAMEPREFIX	= lib
14NAME		= xotclexpat
15XOTCL_DIR	= ..\..\..
16GENERICDIR	= .
17WINDIR		= .
18
19######################################################################
20
21!if $(DEBUG)
22TMPNAME		= Debug
23DBGX		= d
24!else
25TMPNAME		= Release
26DBGX		=
27!endif
28
29TMP_DIR		= $(BINROOT)\$(TMPNAME)
30OUT_DIR		= $(TMP_DIR)
31
32!if $(STATIC_BUILD)
33OUTNAME		= $(NAMEPREFIX)$(NAME)$(XOTCL_VERSION)$(DBGX)
34TARGET		= "$(OUT_DIR)\$(OUTNAME).lib"
35!else
36OUTNAME		= $(NAMEPREFIX)$(NAME)$(XOTCL_VERSION)$(DBGX)
37IMPLIB		= "$(OUT_DIR)\$(OUTNAME).lib"
38TARGET		= "$(OUT_DIR)\$(OUTNAME).dll"
39!endif
40
41TCLSTUBLIB	= "$(TCLROOT)\win\Release\tclstub$(TCL_VERSION).lib"
42TCLIMPLIB	= "$(TCLROOT)\win\$(OUT_DIR)\tcl$(TCL_VERSION)$(DBGX).lib"
43TCLSH		= "$(TCLROOT)\win\$(OUT_DIR)\tclsh$(TCL_VERSION)$(DBGX).exe"
44
45XOTCLSTUBLIB	= "$(XOTCL_DIR)\win\Release\libxotclstub$(XOTCL_VERSION).lib"
46XOTCLIMPLIB	= "$(XOTCL_DIR)\win\$(OUT_DIR)\libxotcl$(XOTCL_VERSION)$(DBGX).lib"
47
48LIB_INSTALL_DIR		= $(INSTALLDIR)\lib
49BIN_INSTALL_DIR		= $(INSTALLDIR)\bin
50SCRIPT_INSTALL_DIR	= $(INSTALLDIR)\lib\xotcl$(XOTCL_VERSION)
51INCLUDE_INSTALL_DIR	= $(INSTALLDIR)\include
52
53OBJS = $(TMP_DIR)\xmltok.obj \
54	$(TMP_DIR)\xmlrole.obj \
55	$(TMP_DIR)\xmlwf.obj \
56	$(TMP_DIR)\codepage.obj \
57	$(TMP_DIR)\xmlparse.obj \
58	$(TMP_DIR)\hashtable.obj \
59	$(TMP_DIR)\win32filemap.obj \
60	$(TMP_DIR)\tclexpat.obj \
61!if $(STATIC_BUILD) == 0
62	$(TMP_DIR)\dllEntryPoint.obj
63!endif
64
65######################################################################
66# Link flags
67######################################################################
68
69!if $(DEBUG)
70ldebug = -debug:full -debugtype:cv -pdb:none
71!else
72ldebug = -release -opt:ref
73!endif
74
75# declarations common to all linker options
76lcommon = -nologo -link50compat -machine:$(MACHINE)
77
78LFLAGS = $(lcommon) -subsystem:windows -dll
79
80!if $(USE_TCL_STUBS) == 0
81LLIBS	= $(TCLIMPLIB) $(XOTCLIMPLIB)
82!else
83### should be:
84### LLIBS	= $(TCLSTUBLIB) $(XOTCLSTUBLIB) when xotcl stub lib is mature
85### LLIBS	= $(TCLSTUBLIB) $(XOTCLIMPLIB)
86LLIBS	= $(TCLSTUBLIB) $(XOTCLSTUBLIB)
87!endif
88
89######################################################################
90# Compile flags
91######################################################################
92
93!IF $(DEBUG) == 0
94!IF "$(MACHINE)" == "ALPHA"
95# MSVC on Alpha doesn't understand -Ot
96cdebug = -O2i
97!ELSE
98cdebug = -Ox
99!ENDIF
100!ELSE
101!if $(MSDEV_VER) < 6
102cdebug = -Zi -Od -WX
103!else
104cdebug = -ZI -Od -WX
105!endif
106!ENDIF
107
108!if $(STATIC_BUILD)
109cdll	=
110!else
111cdll	= -GD
112!endif
113
114# declarations common to all compiler options
115ccommon = -nologo -c -W3 -YX \
116
117
118!if $(STATIC_BUILD) && $(NOMSVCRT)
119crt	= -MT$(DBGX)
120!else
121crt	= -MD$(DBGX)
122!endif
123
124INCLUDES	= -I"$(TCLROOT)\generic" -I"$(XOTCL_DIR)\generic" -I"."
125
126DEFINES	= -DBUILD_$(NAME) -DTCL_THREADS=1 \
127			-DXOLIBPKG=$(INST_XOLIBPKG) \
128			-DXOTCLVERSION=$(XOTCLVERSION) \
129			-DPACKAGE_VERSION=$(XOTCLVERSION) \
130			-DVERSION=$(XOTCLVERSION) \
131			-DXOTCLPATCHLEVEL=$(XOTCLPATCHLEVEL) \
132			-D__WIN32__ -DVISUAL_CC
133
134EXE_CFLAGS	= $(ccommon) $(cdebug) $(crt) $(cdll) $(INCLUDES) $(DEFINES)
135
136!if $(USE_TCL_STUBS)
137#CFLAGS	= $(EXE_CFLAGS) -DUSE_TCL_STUBS
138CFLAGS	= $(EXE_CFLAGS) -DUSE_TCL_STUBS -DUSE_XOTCL_STUBS
139!else
140CFLAGS	= $(EXE_CFLAGS)
141!endif
142
143######################################################################
144# Project specific targets
145######################################################################
146
147all : libs
148
149libs : setup $(TARGET)
150	copy $(TARGET) ..
151
152setup :
153	@$(vcvars) > nul
154	@if not exist $(TMP_DIR)\nul mkdir $(TMP_DIR) &\
155		echo Created directory '$(TMP_DIR)'
156	@if not exist $(OUT_DIR)\nul mkdir $(OUT_DIR) &\
157		echo Created directory '$(OUT_DIR)'
158
159$(TARGET) : $(OBJS)
160!if $(STATIC_BUILD)
161	$(lib32) -nologo -machine:$(MACHINE) -out:$@ @<<
162!else
163	$(link32) $(LFLAGS) -base:@$(XOTCL_DIR)\win\dllBase.txt,$@ -out:$@ $(LLIBS) @<<
164!endif
165		$(OBJS)
166<<
167
168
169install : all
170	if not exist "$(INSTALLDIR)" mkdir "$(INSTALLDIR)"
171	if not exist "$(BIN_INSTALL_DIR)" mkdir "$(BIN_INSTALL_DIR)"
172	if not exist "$(LIB_INSTALL_DIR)" mkdir "$(LIB_INSTALL_DIR)"
173	if not exist "$(SCRIPT_INSTALL_DIR)" mkdir "$(SCRIPT_INSTALL_DIR)"
174	if not exist "$(INCLUDE_INSTALL_DIR)" mkdir "$(INCLUDE_INSTALL_DIR)"
175	copy $(TARGET) "$(SCRIPT_INSTALL_DIR)"
176
177######################################################################
178# Inference rules.  Use batch-mode when supported.
179######################################################################
180
181!if $(_NMAKE_VER) < 162
182{$(WINDIR)}.c{$(TMP_DIR)}.obj :
183!else
184{$(WINDIR)}.c{$(TMP_DIR)}.obj ::
185!endif
186	$(cc32) -DDLL_BUILD $(CFLAGS) -Fo$(TMP_DIR)\ @<<
187$<
188<<
189
190!if $(_NMAKE_VER) < 162
191{$(GENERICDIR)}.c{$(TMP_DIR)}.obj :
192!else
193{$(GENERICDIR)}.c{$(TMP_DIR)}.obj ::
194!endif
195	$(cc32) -DDLL_BUILD $(CFLAGS) -Fo$(TMP_DIR)\ @<<
196$<
197<<
198
199#$(TMP_DIR)\xmltok.obj : expat\xmltok\xmltok.c
200#	$(cc32) -DDLL_BUILD $(CFLAGS) -Fo$@ $?
201#$(TMP_DIR)\xmlrole.obj : expat\xmltok\xmlrole.c
202#	$(cc32) -DDLL_BUILD $(CFLAGS) -Fo$@ $?
203#$(TMP_DIR)\xmlwf.obj : expat\xmlwf\xmlwf.c
204#	$(cc32) -DDLL_BUILD $(CFLAGS) -Fo$@ $?
205#$(TMP_DIR)\readfilemap.obj : expat\xmlwf\readfilemap.c
206#	$(cc32) -DDLL_BUILD $(CFLAGS) -Fo$@ $?
207#$(TMP_DIR)\codepage.obj : expat\xmlwf\codepage.c
208#	$(cc32) -DDLL_BUILD $(CFLAGS) -Fo$@ $?
209#$(TMP_DIR)\xmlparse.obj : expat\xmlparse\xmlparse.c
210#	$(cc32) -DDLL_BUILD $(CFLAGS) -Fo$@ $?
211#$(TMP_DIR)\hashtable.obj : expat\xmlparse\hashtable.c
212#	$(cc32) -DDLL_BUILD $(CFLAGS) -Fo$@ $?
213
214#{$(RCDIR)}.rc{$(TMP_DIR)}.res :
215#	$(rc32) -fo $@ -DDEBUG=$(DEBUG) $(XOTCL_VERSION_DEFINES) $(XOTCL_INCLUDES) $(TCL_INCLUDES) $(XOTCL_DEFINES) $<
216
217######################################################################
218# Clean up
219######################################################################
220
221tidy :
222	-del $(TMP_DIR)\*.pch
223	-del $(TMP_DIR)\*.obj
224	-del $(TMP_DIR)\*.res
225	-del .\*.pch
226	-del .\*.pdb
227
228clean : tidy
229	-del $(OUT_DIR)\*.exp
230	-del $(OUT_DIR)\*.lib
231	-del $(OUT_DIR)\*.dll
232	-del ..\*.exp
233	-del ..\*.lib
234	-del ..\*.dll
235
236distclean : clean
237	-rmdir $(OUT_DIR)
238	-rmdir $(TMP_DIR)
239
240