1 # Makefile.mak - makefile for MS NMAKE
4 # HL: Heikki Levanto, Index Data
7 # 18-05-99 HL Stole this from YazX, cleaning up
16 # Envoronment problems
17 # - You need to have the proper path and environment for VC set
18 # up. There is a bat file VCVARS32.BAT that sets most of it up
19 # for you. You can find this somewhere near DevStudio\VC\BIN
20 # - RegSvr32 must also be along the path, often in WINDOWS\SYSTEM
22 ###########################################################
23 ############### Parameters
24 ###########################################################
26 DEBUG=1 # 0 for release, 1 for debug
33 ###########################################################
34 ############### Directories
35 ###########################################################
36 # The current directory is supposed to be something like
37 # ..../Yaz/Win, everything is relative to that
38 ROOTDIR=.. # The home of Yaz
40 INCLDIR=$(ROOTDIR)\include # our includes
41 LIBDIR=$(ROOTDIR)\lib # We produce .lib, .exp etc there
42 BINDIR=$(ROOTDIR)\bin # We produce exes and dlls there
43 WINDIR=$(ROOTDIR)\win # all these Win make things
44 OBJDIR=$(WINDIR)\obj # where we store intermediate files
45 UNIXDIR=$(ROOTDIR)\unix # corresponding unix things
46 SRCDIR=$(ROOTDIR) # for the case we move them under src
48 YAZASNDIR=$(SRCDIR)\ASN
49 YAZCOMSTACKDIR=$(SRCDIR)\COMSTACK
50 YAZODRDIR=$(SRCDIR)\ODR
51 YAZUTILDIR=$(SRCDIR)\UTIL
52 YAZRETDIR=$(SRCDIR)\RETRIEVAL
54 YAZCLIENTDIR=$(SRCDIR)\CLIENT
56 ###########################################################
57 ############### Targets - what to make
58 ###########################################################
62 IMPLIB=$(BINDIR)\Yaz.lib
63 BSCFILE=$(LIBDIR)\Yaz.bsc
65 CLIENT=$(BINDIR)\client.exe
67 # shortcut names defined here
68 dll : $(DLL) $(BSCFILE)
71 ###########################################################
72 ############### Compiler and linker options
73 ###########################################################
76 ### C and CPP compiler (the same thing)
77 # Note: $(CPP) has already been defined in the environment
78 # (if you set things up right!)
81 /nologo /W3 /GX /FD /c \
82 /D "WIN32" /D "_WINDOWS" \
87 # /Fp"$(OBJDIR)\YazX3950.pch" \
105 ### The RC compiler (resource files)
107 COMMON_RC_OPTIONS= /l 0x406 /i"$(ROOTDIR)"
108 DEBUG_RC_OPTIONS=/d "_DEBUG"
109 RELEASE_RC_OPTIONS=/d "NDEBUG"
115 DLL_LINK_LIBS= kernel32.lib user32.lib gdi32.lib winspool.lib \
116 comdlg32.lib advapi32.lib shell32.lib ole32.lib \
117 oleaut32.lib uuid.lib odbc32.lib odbccp32.lib \
121 #odbccp32.lib yaz.lib /nologo /subsystem:console /incremental:no /pdb:".\Debug/client.pdb" /debug /machine:I386 /out:".\Debug/client.exe" /libpath:"..\debug"
123 COMMON_LNK_OPTIONS= /nologo \
128 DEBUG_LNK_OPTIONS= /debug \
131 RELEASE_LNK_OPTIONS= /pdb:none
133 DLL_LINK_OPTIONS= /dll
134 CLIENT_LINK_OPTIONS = /subsystem:console
137 ### BSC compiler options
142 COMMON_BSC_OPTIONS= /nologo /o "$(BSCFILE)" /n
146 # Final opt variables
148 COPT= $(COMMON_C_OPTIONS) $(DEBUG_C_OPTIONS) $(COMMON_C_INCLUDES)
149 MTLOPT= $(COMMON_MTL_OPTIONS) $(DEBUG_MTL_OPTIONS)
150 RCOPT= $(COMMON_RC_OPTIONS) $(DEBUG_RC_OPTIONS)
151 LNKOPT= $(COMMON_LNK_OPTIONS) $(DEBUG_LNK_OPTIONS) $(LNK_LIBS)
152 BSCOPT= $(COMMON_BSC_OPTIONS) $(DEBUG_BSC_OPTIONS)
155 COPT= $(COMMON_C_OPTIONS) $(RELEASE_C_OPTIONS) $(COMMON_C_INCLUDES)
156 MTLOPT= $(COMMON_MTL_OPTIONS) $(RELEASE_MTL_OPTIONS)
157 RCOPT= $(COMMON_RC_OPTIONS) $(RELEASE_RC_OPTIONS)
158 LNKOPT= $(COMMON_LNK_OPTIONS) $(RELEASE_LNK_OPTIONS) $(LNK_LIBS)
159 BSCOPT= $(COMMON_BSC_OPTIONS) $(RELEASE_BSC_OPTIONS)
164 ###########################################################
165 ############### Source and object modules
166 ###########################################################
170 RCFILE=$(SRCDIR)\compmak.rc
171 # Horrible Hack: The resfile contains just one line, pointing
172 # to the component.tlb file (which is created by the idl compiler)
173 # Devstudio wants that file to live in YazX3950, this makefile in
174 # win/obj. So we need to RC files!
176 RESFILE=$(OBJDIR)\component.res
180 #DEF_FILE= $(ROOTDIR)\component.def
184 # Note: Ordinary source files are not specified here at
185 # all, make finds them in suitable dirs. The object modules
186 # need to be specified, though
192 $(OBJDIR)\diagbib1.obj \
193 $(OBJDIR)\proto.obj \
194 $(OBJDIR)\prt-acc.obj \
195 $(OBJDIR)\prt-add.obj \
196 $(OBJDIR)\prt-arc.obj \
197 $(OBJDIR)\prt-dat.obj \
198 $(OBJDIR)\prt-dia.obj \
199 $(OBJDIR)\prt-esp.obj \
200 $(OBJDIR)\prt-exd.obj \
201 $(OBJDIR)\prt-exp.obj \
202 $(OBJDIR)\prt-ext.obj \
203 $(OBJDIR)\prt-grs.obj \
204 $(OBJDIR)\prt-rsc.obj \
205 $(OBJDIR)\prt-univ.obj \
209 $(OBJDIR)\comstack.obj \
210 $(OBJDIR)\tcpip.obj \
211 $(OBJDIR)\waislen.obj
214 $(OBJDIR)\ber_any.obj \
215 $(OBJDIR)\ber_bit.obj \
216 $(OBJDIR)\ber_bool.obj \
217 $(OBJDIR)\ber_int.obj \
218 $(OBJDIR)\ber_len.obj \
219 $(OBJDIR)\ber_null.obj \
220 $(OBJDIR)\ber_oct.obj \
221 $(OBJDIR)\ber_oid.obj \
222 $(OBJDIR)\ber_tag.obj \
223 $(OBJDIR)\dumpber.obj \
225 $(OBJDIR)\odr_any.obj \
226 $(OBJDIR)\odr_bit.obj \
227 $(OBJDIR)\odr_bool.obj \
228 $(OBJDIR)\odr_choice.obj \
229 $(OBJDIR)\odr_cons.obj \
230 $(OBJDIR)\odr_enum.obj \
231 $(OBJDIR)\odr_int.obj \
232 $(OBJDIR)\odr_mem.obj \
233 $(OBJDIR)\odr_null.obj \
234 $(OBJDIR)\odr_oct.obj \
235 $(OBJDIR)\odr_oid.obj \
236 $(OBJDIR)\odr_priv.obj \
237 $(OBJDIR)\odr_seq.obj \
238 $(OBJDIR)\odr_tag.obj \
239 $(OBJDIR)\odr_use.obj \
240 $(OBJDIR)\odr_util.obj
243 $(OBJDIR)\atoin.obj \
244 $(OBJDIR)\dmalloc.obj \
246 $(OBJDIR)\logrpn.obj \
247 $(OBJDIR)\marcdisp.obj \
249 $(OBJDIR)\nmemsdup.obj \
251 $(OBJDIR)\options.obj \
252 $(OBJDIR)\pquery.obj \
253 $(OBJDIR)\query.obj \
254 $(OBJDIR)\readconf.obj \
255 $(OBJDIR)\tpath.obj \
256 $(OBJDIR)\wrbuf.obj \
257 $(OBJDIR)\xmalloc.obj \
258 $(OBJDIR)\yaz-ccl.obj \
259 $(OBJDIR)\yaz-util.obj
262 $(OBJDIR)\d1_absyn.obj\
263 $(OBJDIR)\d1_attset.obj\
264 $(OBJDIR)\d1_doespec.obj\
265 $(OBJDIR)\d1_espec.obj\
266 $(OBJDIR)\d1_expout.obj\
267 $(OBJDIR)\d1_grs.obj\
268 $(OBJDIR)\d1_handle.obj\
269 $(OBJDIR)\d1_map.obj\
270 $(OBJDIR)\d1_marc.obj\
271 $(OBJDIR)\d1_prtree.obj\
272 $(OBJDIR)\d1_read.obj\
273 $(OBJDIR)\d1_soif.obj\
274 $(OBJDIR)\d1_sumout.obj\
275 $(OBJDIR)\d1_sutrs.obj\
276 $(OBJDIR)\d1_tagset.obj\
277 $(OBJDIR)\d1_varset.obj\
278 $(OBJDIR)\d1_write.obj
282 $(YAZ_COMSTACK_OBJS) \
287 DLL_OBJS= $(YAZ_OBJS)
290 ###########################################################
291 ############### Compiling
292 ###########################################################
294 # Note: This defines where to look for the necessary
295 # source files. Funny way of doing it, but it works.
298 {$(SRCDIR)}.cpp{$(OBJDIR)}.obj:
304 {$(YAZCLIENTDIR)}.c{$(OBJDIR)}.obj:
311 # Various YAZ source directories
312 {$(YAZASNDIR)}.c{$(OBJDIR)}.obj:
317 {$(YAZCOMSTACKDIR)}.c{$(OBJDIR)}.obj:
322 {$(YAZODRDIR)}.c{$(OBJDIR)}.obj:
327 {$(YAZUTILDIR)}.c{$(OBJDIR)}.obj:
332 {$(YAZRETDIR)}.c{$(OBJDIR)}.obj:
339 $(RESFILE): $(RCFILE) $(IDLGENERATED)
340 $(RSC) $(RCOPT) /fo"$(RESFILE)" $(RCFILE)
343 ###########################################################
344 ############### Linking
345 ###########################################################
348 $(DLL) $(IMPLIB): "$(BINDIR)" $(DLL_OBJS)
356 /pdb:"$(LIBDIR)/yaz.pdb"
357 /map:"$(LIBDIR)/yaz.map"
360 $(CLIENT) : "$(BINDIR)" $(YAZ_CLIENT_OBJS)
363 $(CLIENT_LINK_OPTIONS)
372 # regsvr32 /s /c "$(DLL)"
376 ## Linking the debug info database (or what ever this is...)
377 $(BSCFILE): $(DLL_OBJS)
378 $(BSCMAKE) $(BSCOPT) $(OBJDIR)\*.sbr
381 # @echo OPT=$(LNKOPT)
382 # @echo LIB=$(LINKLIBS)
383 # @echo OBJ=$(DLL_OBJS)
384 # @echo DEF=$(DEF_FILE)
386 ###########################################################
387 ############### Special operations
388 ###########################################################
393 deltree /y "$(OBJDIR)/*.*"
396 ########### check directories and create if needed
397 dirs: $(OBJDIR) $(WINDIR) $(LIBDIR) $(BINDIR)
399 $(OBJDIR) $(WINDIR) $(LIBDIR) $(BINDIR) :
400 if not exist "$@/$(NUL)" mkdir "$@"
402 ### test target while debugging makefile...
406 ###########################################################
407 ############### Explicit dependencies
408 ###########################################################
410 $(OBJDIR)/client.obj: $(IDLGENERATED)