+$(OCLCUI_FILES): $(SRCDIR)\oclcui.asn
+ @cd $(SRCDIR)
+ $(TCL) $(TCLOPT) -d z.tcl oclcui.asn
+ @cd $(WINDIR)
+
+$(ILL_CORE_FILES): $(SRCDIR)\ill9702.asn
+ @cd $(SRCDIR)
+ $(TCL) $(TCLOPT) -d ill.tcl ill9702.asn
+ @cd $(WINDIR)
+
+$(ITEM_REQ_FILES): $(SRCDIR)\item-req.asn
+ @cd $(SRCDIR)
+ $(TCL) $(TCLOPT) -d ill.tcl item-req.asn
+ @cd $(WINDIR)
+
+$(SRCDIR)\marc8.c: $(SRCDIR)\codetables.xml $(SRCDIR)\charconv.tcl
+ @cd $(SRCDIR)
+ $(TCL) charconv.tcl -p marc8 codetables.xml -o marc8.c
+
+$(SRCDIR)\marc8r.c: $(SRCDIR)\codetables.xml $(SRCDIR)\charconv.tcl
+ @cd $(SRCDIR)
+ $(TCL) charconv.tcl -r -p marc8r codetables.xml -o marc8r.c
+
+$(SRCDIR)\oid_std.c: $(SRCDIR)\oid.csv $(SRCDIR)\charconv.tcl
+ @cd $(SRCDIR)
+ $(TCL) oidtoc.tcl $(SRCDIR) oid.csv oid_std.c oid_std.h
+
+$(SRCDIR)\diagbib1.c: $(SRCDIR)\bib1.csv
+ @cd $(SRCDIR)
+ $(TCL) csvtobib1.tcl $(SRCDIR)
+
+$(SRCDIR)\diagsrw.c: $(SRCDIR)\srw.csv
+ @cd $(SRCDIR)
+ $(TCL) csvtosrw.tcl $(SRCDIR)
+
+$(SRCDIR)\diagsru_update.c: $(SRCDIR)\sru_update.csv
+ @cd $(SRCDIR)
+ $(TCL) csvtosru_update.tcl $(SRCDIR)
+
+!endif
+
+!if $(HAVE_BISON)
+$(SRCDIR)\cql.c: $(SRCDIR)\cql.y
+ @cd $(SRCDIR)
+ $(BISON) -y -p cql_ -o cql.c cql.y
+
+!endif
+
+# Resources
+# The RC compiler (resource files)
+RSC=rc.exe
+COMMON_RC_OPTIONS= /l 0x406 /i"$(ROOTDIR)"
+DEBUG_RC_OPTIONS=/d "_DEBUG"
+RELEASE_RC_OPTIONS=/d "NDEBUG"
+
+YAZ_RES=$(OBJDIR)\yaz.res
+YAZ_RC=$(WINDIR)\yaz.rc
+
+!if $(DEBUG)
+RSOPT=/d_DEBUG
+!else
+RSOPT=/d_NDEBUG
+!endif
+
+$(YAZ_RES): $(YAZ_RC)
+ $(RSC) $(RSOPT) /fo"$(YAZ_RES)" $(YAZ_RC)
+
+# Linking
+
+$(DLL) $(YAZ_IMPLIB): "$(BINDIR)" $(DLL_OBJS) $(YAZ_RES)
+ $(LINK_DLL) \
+ $(DLL_OBJS) \
+ $(YAZ_RES) \
+ /out:$@ \
+ /implib:"$(YAZ_IMPLIB)"
+ $(MT) -manifest $@.manifest -outputresource:$@;2
+
+$(CLIENT) : "$(BINDIR)" $(YAZ_CLIENT_OBJS) $(DLL)
+ $(LINK_PROGRAM) $(YAZ_CLIENT_OBJS) /out:$@
+ $(MT) -manifest $@.manifest -outputresource:$@;1
+
+$(ZOOMSH) : "$(BINDIR)" $(YAZ_ZOOMSH_OBJS) $(DLL)
+ $(LINK_PROGRAM) $(YAZ_ZOOMSH_OBJS) /out:$@
+ $(MT) -manifest $@.manifest -outputresource:$@;1
+
+$(ZOOMTST1) : "$(BINDIR)" $(YAZ_ZOOMTST1_OBJS) $(DLL)
+ $(LINK_PROGRAM) $(YAZ_ZOOMTST1_OBJS) /out:$@
+ $(MT) -manifest $@.manifest -outputresource:$@;1
+
+$(ZOOMTST2) : "$(BINDIR)" $(YAZ_ZOOMTST2_OBJS) $(DLL)
+ $(LINK_PROGRAM) $(YAZ_ZOOMTST2_OBJS) /out:$@
+ $(MT) -manifest $@.manifest -outputresource:$@;1
+
+$(ZOOMTST3) : "$(BINDIR)" $(YAZ_ZOOMTST3_OBJS) $(DLL)
+ $(LINK_PROGRAM) $(YAZ_ZOOMTST3_OBJS) /out:$@
+ $(MT) -manifest $@.manifest -outputresource:$@;1
+
+$(ZOOMTST4) : "$(BINDIR)" $(YAZ_ZOOMTST4_OBJS) $(DLL)
+ $(LINK_PROGRAM) $(YAZ_ZOOMTST4_OBJS) /out:$@
+ $(MT) -manifest $@.manifest -outputresource:$@;1
+
+$(ZOOMTST5) : "$(BINDIR)" $(YAZ_ZOOMTST5_OBJS) $(DLL)
+ $(LINK_PROGRAM) $(YAZ_ZOOMTST5_OBJS) /out:$@
+ $(MT) -manifest $@.manifest -outputresource:$@;1
+
+$(ZOOMTST6) : "$(BINDIR)" $(YAZ_ZOOMTST6_OBJS) $(DLL)
+ $(LINK_PROGRAM) $(YAZ_ZOOMTST6_OBJS) /out:$@
+ $(MT) -manifest $@.manifest -outputresource:$@;1
+
+$(ZOOMTST7) : "$(BINDIR)" $(YAZ_ZOOMTST7_OBJS) $(DLL)
+ $(LINK_PROGRAM) $(YAZ_ZOOMTST7_OBJS) /out:$@
+ $(MT) -manifest $@.manifest -outputresource:$@;1
+
+$(ZOOMTST8) : "$(BINDIR)" $(YAZ_ZOOMTST8_OBJS) $(DLL)
+ $(LINK_PROGRAM) $(YAZ_ZOOMTST8_OBJS) /out:$@
+ $(MT) -manifest $@.manifest -outputresource:$@;1
+
+$(ZOOMTST9) : "$(BINDIR)" $(YAZ_ZOOMTST9_OBJS) $(DLL)
+ $(LINK_PROGRAM) $(YAZ_ZOOMTST9_OBJS) /out:$@
+ $(MT) -manifest $@.manifest -outputresource:$@;1
+
+$(ZOOMTST10) : "$(BINDIR)" $(YAZ_ZOOMTST10_OBJS) $(DLL)
+ $(LINK_PROGRAM) $(YAZ_ZOOMTST10_OBJS) /out:$@
+ $(MT) -manifest $@.manifest -outputresource:$@;1
+
+$(CQL2PQF) : "$(BINDIR)" $(YAZ_CQL2PQF_OBJS) $(DLL)
+ $(LINK_PROGRAM) $(YAZ_CQL2PQF_OBJS) /out:$@
+ $(MT) -manifest $@.manifest -outputresource:$@;1
+
+$(CQL2XCQL) : "$(BINDIR)" $(YAZ_CQL2XCQL_OBJS) $(DLL)
+ $(LINK_PROGRAM) $(YAZ_CQL2XCQL_OBJS) /out:$@
+ $(MT) -manifest $@.manifest -outputresource:$@;1
+
+$(ZTEST) : "$(BINDIR)" $(ZTEST_OBJS) $(DLL)
+ $(LINK_PROGRAM) $(ZTEST_OBJS) /out:$@
+ $(MT) -manifest $@.manifest -outputresource:$@;1
+
+$(YAZ_MARCDUMP) : "$(BINDIR)" $(YAZ_MARCDUMP_OBJS) $(DLL)
+ $(LINK_PROGRAM) $(YAZ_MARCDUMP_OBJS) /out:$@
+ $(MT) -manifest $@.manifest -outputresource:$@;1
+
+$(TSTLOG) : "$(BINDIR)" $(TSTLOG_OBJS) $(DLL)
+ $(LINK_PROGRAM) $(TSTLOG_OBJS) /out:$@
+ $(MT) -manifest $@.manifest -outputresource:$@;1
+
+$(TST_TIMING) : "$(BINDIR)" $(TST_TIMING_OBJS) $(DLL)
+ $(LINK_PROGRAM) $(TST_TIMING_OBJS) /out:$@
+ $(MT) -manifest $@.manifest -outputresource:$@;1
+
+# Other rules
+
+$(DOCDIR)\htmlhelp.chm: $(DOCDIR)\htmlhelp.hhp
+ @cd $(DOCDIR)
+ -$(HHC) htmlhelp.hhp
+ @cd $(WINDIR)
+
+clean:
+ -del $(BINDIR)\*.exe
+ -del $(BINDIR)\*.dll
+ -del $(BINDIR)\*.pdb
+ -del $(TMPDIR)\*.
+ -del $(LIBDIR)\*.LIB
+ -del $(OBJDIR)\*.OBJ
+
+realclean: clean
+ -del $(SRCDIR)\marc8.c
+ -del $(SRCDIR)\cql.c
+ -del $(SRCDIR)\z-*.c
+ -del $(SRCDIR)\ill-core.c
+ -del $(SRCDIR)\item-req.c
+ -del $(INCLDIR)\yaz\ill-core.h
+ -del $(INCLDIR)\yaz\item-req.h
+ -del $(INCLDIR)\yaz\z-accdes1.h
+ -del $(INCLDIR)\yaz\z-core.h
+ -del $(DATETIME_H_FILES)
+ -del $(UNIVRES_H_FILES)
+ -del $(ESUPDATE_H_FILES)
+
+# Because DOS del will only accept one file name to delete,
+# the _H_ files work only on sets that have just one file.
+# Z3950_H_FILES had to be spelled out. One more point for MS!
+
+# check directories and create if needed
+dirs: $(OBJDIR) $(WINDIR) $(LIBDIR) $(BINDIR) $(TMPDIR)
+
+$(OBJDIR) $(WINDIR) $(LIBDIR) $(BINDIR) $(TMPDIR):
+ if not exist "$@/$(NUL)" mkdir "$@"
+
+
+# Explicit dependencies
+
+# force recompilation of everything, if makefile changed
+
+$(Z3950_OBJS): $(GENERATED_C_FILES) $(GENERATED_H_FILES)