# Makefile.mak - makefile for MS NMAKE
-# $Id: makefile,v 1.1 1999-06-08 12:15:41 heikki Exp $
+# $Id: makefile,v 1.5 1999-06-09 11:05:30 heikki Exp $
#
# Programmed by
# HL: Heikki Levanto, Index Data
#
# Missing
# - Move MS-C's whatnots into win direcotry
-# - rename to makefile (.nothing)
+# - The TCL script produces C and H files in the same dir as the
+# ASN files. H's are copied to INCL, C's are left there.
+# They should be produced into OBJ...
#
# Envoronment problems
# - You need to have the proper path and environment for VC set
# up. There is a bat file VCVARS32.BAT that sets most of it up
# for you. You can find this somewhere near DevStudio\VC\BIN
# - RegSvr32 must also be along the path, often in WINDOWS\SYSTEM
+# - TCL has to be available too, if compiling for NEW_Z3950
###########################################################
############### Parameters
DEBUG=0 # 0 for release, 1 for debug
+NEW_Z3950=0 # 0= use old asn files
+ # 1= generate files from *.asn (needs tcl)
+
+
default: all
-all: dirs dll client server ztest
+all: dirs proto_h dll client server ztest
###########################################################
UTILDIR=$(SRCDIR)\UTIL
ZUTILDIR=$(SRCDIR)\ZUTIL
RETDIR=$(SRCDIR)\RETRIEVAL
+Z3950DIR=$(SRCDIR)\Z39.50
CLIENTDIR=$(SRCDIR)\CLIENT
SERVERDIR=$(SRCDIR)\SERVER
ZTESTDIR=$(SRCDIR)\ZTEST
+TMPDIR=$(ROOTDIR)\win\tmp
+TMP=$(TMPDIR)
+
###########################################################
############### Targets - what to make
###########################################################
DLL=$(BINDIR)\Yaz.dll
-IMPLIB=$(BINDIR)\Yaz.lib
+IMPLIB=$(LIBDIR)\Yaz.lib
CLIENT=$(BINDIR)\client.exe
-SERVER=$(BINDIR)\server.lib
+SERVER=$(LIBDIR)\server.lib
ZTEST=$(BINDIR)\ztest.exe
+PROTOH=$(INCLDIR)\proto.h
# shortcut names defined here
dll : $(DLL)
client: $(CLIENT)
server: $(SERVER)
ztest: $(ZTEST)
-bsc: $(YAZ_BSCFILE) $(ZTEST_BSCFILE)
+proto_h: $(PROTOH)
###########################################################
############### Compiler and linker options
SERVER_LINK_OPTIONS = -lib
ZTEST_LINK_OPTIONS = /subsystem:console
+# TCL
+TCL="C:\Program Files\Tcl\bin\tclsh80.exe"
+
+COMMON_TCL_OPTIONS= ..\util\yc.tcl -d z.tcl -I $(INCLDIR)
+
# Final opt variables
!if $(DEBUG)
MTLOPT= $(COMMON_MTL_OPTIONS) $(DEBUG_MTL_OPTIONS)
RCOPT= $(COMMON_RC_OPTIONS) $(DEBUG_RC_OPTIONS)
LNKOPT= $(COMMON_LNK_OPTIONS) $(DEBUG_LNK_OPTIONS) $(LNK_LIBS)
+TCLOPT= $(COMMON_TCL_OPTIONS)
!else
COPT= $(COMMON_C_OPTIONS) $(RELEASE_C_OPTIONS) $(COMMON_C_INCLUDES)
MTLOPT= $(COMMON_MTL_OPTIONS) $(RELEASE_MTL_OPTIONS)
RCOPT= $(COMMON_RC_OPTIONS) $(RELEASE_RC_OPTIONS)
LNKOPT= $(COMMON_LNK_OPTIONS) $(RELEASE_LNK_OPTIONS) $(LNK_LIBS)
+TCLOPT= $(COMMON_TCL_OPTIONS)
!endif
$(OBJDIR)\prt-ext.obj \
$(OBJDIR)\logrpn.obj \
$(OBJDIR)\pquery.obj \
- $(OBJDIR)\query.obj \
$(OBJDIR)\yaz-ccl.obj \
$(OBJDIR)\otherinfo.obj
+# $(OBJDIR)\query.obj \
+
+
YAZ_RET_OBJS= \
$(OBJDIR)\d1_absyn.obj\
$(OBJDIR)\d1_attset.obj\
$(OBJDIR)\d1_varset.obj\
$(OBJDIR)\d1_write.obj
-YAZ_OBJS= \
- $(YAZ_ASN_OBJS) \
+
+Z3950_OBJS= \
+ $(OBJDIR)\z-date.obj\
+ $(OBJDIR)\z-univ.obj\
+ $(OBJDIR)\zes-update.obj\
+ $(OBJDIR)\z-accdes1.obj \
+ $(OBJDIR)\z-accform1.obj \
+ $(OBJDIR)\z-acckrb1.obj \
+ $(OBJDIR)\z-core.obj \
+ $(OBJDIR)\z-diag1.obj \
+ $(OBJDIR)\z-espec1.obj \
+ $(OBJDIR)\z-estask.obj \
+ $(OBJDIR)\z-exp.obj \
+ $(OBJDIR)\z-grs.obj \
+ $(OBJDIR)\z-opac.obj \
+ $(OBJDIR)\z-uifr1.obj \
+ $(OBJDIR)\z-rrf1.obj \
+ $(OBJDIR)\z-rrf2.obj \
+ $(OBJDIR)\z-sum.obj \
+ $(OBJDIR)\z-sutrs.obj \
+ $(OBJDIR)\zes-expi.obj \
+ $(OBJDIR)\zes-exps.obj \
+ $(OBJDIR)\zes-order.obj \
+ $(OBJDIR)\zes-pquery.obj \
+ $(OBJDIR)\zes-psched.obj \
+ $(OBJDIR)\zes-pset.obj \
+ $(OBJDIR)\zes-update0.obj
+
+COMMON_YAZ_OBJS= \
$(YAZ_COMSTACK_OBJS) \
$(YAZ_ODR_OBJS) \
$(YAZ_UTIL_OBJS) \
$(YAZ_ZUTIL_OBJS) \
$(YAZ_RET_OBJS)
+!if $(NEW_Z3950)
+YAZ_OBJS= \
+ $(COMMON_YAZ_OBJS) \
+ $(Z3950_OBJS)
+!else
+YAZ_OBJS= \
+ $(COMMON_YAZ_OBJS) \
+ $(YAZ_ASN_OBJS)
+!endif
+
DLL_OBJS= $(YAZ_OBJS)
+
+##########################################################
+############## proto.h
+##########################################################
+
+!if $(NEW_Z3950)
+$(PROTOH): makefile $(INCLDIR)\z-proto.h
+ copy $(INCLDIR)\z-proto.h $(INCLDIR)\proto.h
+!else
+$(PROTOH): makefile $(INCLDIR)\prt-proto.h
+ copy $(INCLDIR)\prt-proto.h $(INCLDIR)\proto.h
+!endif
+
+
+
+###########################################################
+############### Generated C and H files
+###########################################################
+
+Z3950_C_DIR=$(Z3950DIR) #!!! Should be moved to OBJ
+
+# Files generated from datetime.asn
+DATETIME_H_FILES = z-date.h
+DATETIME_C_FILES = z-date.c
+DATETIME_FILES = $(DATETIME_H_FILES) $(DATETIME_C_FILES)
+$(DATETIME_C_FILES): $(DATETIME_H_FILES)
+
+
+# Files generated from univres.asn
+UNIVRES_H_FILES = z-univ.h
+UNIVRES_C_FILES = z-univ.c
+UNIVRES_FILES = $(UNIVRES_H_FILES) $(UNIVRES_C_FILES)
+$(UNIVRES_C_FILES): $(UNIVRES_H_FILES)
+
+# Files generated from esupdate.asn
+ESUPDATE_H_FILES = zes-update.h
+ESUPDATE_C_FILES = zes-update.c
+ESUPDATE_FILES = $(ESUPDATE_H_FILES) $(ESUPDATE_C_FILES)
+$(ESUPDATE_C_FILES): $(ESUPDATE_H_FILES)
+
+
+# Files created from z3950v3.asn
+Z3950V3_H_FILES= \
+ $(INCLDIR)\z-accdes1.h \
+ $(INCLDIR)\z-core.h
+
+Z3950V3_C_FILES= \
+ $(Z3950_C_DIR)\z-accdes1.c \
+ $(Z3950_C_DIR)\z-accform1.c \
+ $(Z3950_C_DIR)\z-acckrb1.c \
+ $(Z3950_C_DIR)\z-core.c \
+ $(Z3950_C_DIR)\z-diag1.c \
+ $(Z3950_C_DIR)\z-espec1.c \
+ $(Z3950_C_DIR)\z-estask.c \
+ $(Z3950_C_DIR)\z-exp.c \
+ $(Z3950_C_DIR)\z-grs.c \
+ $(Z3950_C_DIR)\z-opac.c \
+ $(Z3950_C_DIR)\z-uifr1.c \
+ $(Z3950_C_DIR)\z-rrf1.c \
+ $(Z3950_C_DIR)\z-rrf2.c \
+ $(Z3950_C_DIR)\z-sum.c \
+ $(Z3950_C_DIR)\z-sutrs.c \
+ $(Z3950_C_DIR)\zes-expi.c \
+ $(Z3950_C_DIR)\zes-exps.c \
+ $(Z3950_C_DIR)\zes-order.c \
+ $(Z3950_C_DIR)\zes-pquery.c \
+ $(Z3950_C_DIR)\zes-psched.c \
+ $(Z3950_C_DIR)\zes-pset.c \
+ $(Z3950_C_DIR)\zes-update0.c
+
+Z3950V3_FILES= $(Z3950V3_C_FILES) $(Z3950V3_H_FILES)
+
+$(Z3950V3_C_FILES): $(Z3950V3_H_FILES)
+
+GENERATED_C_FILES= \
+ $(Z3950V3_C_FILES) \
+ $(ESUPDATE_C_FILES) \
+ $(UNIVRES_C_FILES) \
+ $(DATETIME_C_FILES)
+
+GENERATED_H_FILES= \
+ $(Z3950V3_H_FILES) \
+ $(ESUPDATE_H_FILES) \
+ $(UNIVRES_H_FILES) \
+ $(DATETIME_H_FILES)
+
+
###########################################################
############### Compiling
###########################################################
# Yaz client
{$(CLIENTDIR)}.c{$(OBJDIR)}.obj:
@$(CPP) @<<
- /D"_CONSOLE"
$(COPT) $<
+ /D"_CONSOLE"
<<
# Ztest
{$(ZTESTDIR)}.c{$(OBJDIR)}.obj:
@$(CPP) @<<
+ $(COPT) $<
/D"_CONSOLE"
/D"_MBCS"
- $(COPT) $<
<<
<<
+{$(Z3950_C_DIR)}.c{$(OBJDIR)}.obj:
+ @$(CPP) @<<
+ $(COPT) $<
+<<
+
### Resource file
$(RESFILE): $(RCFILE) $(IDLGENERATED)
$(RSC) $(RCOPT) /fo"$(RESFILE)" $(RCFILE)
+############### ASN-generated files
+
+
+$(Z3950V3_FILES): $(Z3950DIR)\z3950v3.asn
+ @cd $(Z3950DIR)
+ $(TCL) $(TCLOPT) z3950v3.asn
+
+$(DATETIME_FILES): $(Z3950DIR)\datetime.asn
+ @cd $(Z3950DIR)
+ $(TCL) $(TCLOPT) datetime.asn
+
+$(UNIVRES_FILES): $(Z3950DIR)\univres.asn
+ @cd $(Z3950DIR)
+ $(TCL) $(TCLOPT) univres.asn
+
+$(ESUPDATE_FILES): $(Z3950DIR)\esupdate.asn
+ @cd $(Z3950DIR)
+ $(TCL) $(TCLOPT) esupdate.asn
+
###########################################################
############### Linking
###########################################################
+###$(DLL) $(IMPLIB): "$(BINDIR)" $(Z3950_OBJS)
$(DLL) $(IMPLIB): "$(BINDIR)" $(DLL_OBJS)
+ @echo Linking the dll $(DLL)
$(LINK) @<<
- $(LNKOPT)
+ $(LNKOPT)
$(LINK_LIBS)
$(DLL_LINK_OPTIONS)
$(DLL_OBJS)
/out:$(DLL)
/implib:$(IMPLIB)
- /pdb:"$(LIBDIR)/yaz.pdb"
- /map:"$(LIBDIR)/yaz.map"
+ /pdb:"$(LIBDIR)/yaz.pdb"
+ /map:"$(LIBDIR)/yaz.map"
<<
-$(CLIENT) : "$(BINDIR)" $(YAZ_CLIENT_OBJS) $(IMPLIB)
+#foo:
+# rem $(Z3950_OBJS)
+# pause
+# rem $(DLL_OBJS)
+
+foo: $(OBJDIR)\comstack.obj
+ echo foo
+
+
+$(CLIENT) : "$(BINDIR)" $(YAZ_CLIENT_OBJS)
+ @echo Linking the client $(CLIENT)
$(LINK) @<<
$(LNKOPT)
$(CLIENT_LINK_OPTIONS)
<<
$(ZTEST) : "$(BINDIR)" $(ZTEST_OBJS) $(SERVER) $(DLL)
+ @echo Linking the ztest $(ZTEST)
$(LINK) @<<
$(LNKOPT)
$(ZTEST_LINK_OPTIONS)
$(SERVER) : "$(BINDIR)" $(YAZ_SERVER_OBJS)
+ @echo Linking the server $(SERVER)
$(LINK) $(SERVER_LINK_OPTIONS) @<<
/nologo
- $(LINK_LIBS)
$(IMPLIB)
$(YAZ_SERVER_OBJS)
/out:$(SERVER)
<<
+
+# $(LINK_LIBS)
+
# note that this links a lib, so it uses completely different options.
del $(CLIENT)
del $(SERVER)
del $(ZTEST)
+ del $(TMPDIR)\*.
+ del $(PROTOH)
+ del $(Z3950_C_DIR)\*.c
########### check directories and create if needed
-dirs: $(OBJDIR) $(WINDIR) $(LIBDIR) $(BINDIR)
+dirs: $(OBJDIR) $(WINDIR) $(LIBDIR) $(BINDIR) $(TMPDIR)
-$(OBJDIR) $(WINDIR) $(LIBDIR) $(BINDIR) :
+$(OBJDIR) $(WINDIR) $(LIBDIR) $(BINDIR) $(TMPDIR):
if not exist "$@/$(NUL)" mkdir "$@"
############### Explicit dependencies
###########################################################
-$(OBJDIR)/client.obj: $(IDLGENERATED)
+$(DLL_OBJS): makefile $(PROTOH) $(GENERATED_C_FILES)
+
+# Note: The objects depend on their own C file already, the
+# dependency here is actually to make sure we get the
+# proper H files generated before trying to compile anything
+# Unfortunately make clean can not delete the H files so
+# easily. This hack assures that if the C's are deleted
+# (as make clean does), the H's will be generated anew...
+
+
###########################################################
############### Log
###########################################################
#
# $Log: makefile,v $
-# Revision 1.1 1999-06-08 12:15:41 heikki
+# Revision 1.5 1999-06-09 11:05:30 heikki
+# At least it can compile
+#
+# Revision 1.4 1999/06/09 09:41:09 heikki
+# More work on the ASN-generated files.
+#
+# Revision 1.3 1999/06/08 14:32:30 heikki
+# Proto.h works all right, removed linker warnings from server.lib
+#
+# Revision 1.2 1999/06/08 14:07:24 heikki
+# Renamed a pile of files
+# Tmpdir (to get around Ms leaving temp files around, and crashing
+# when too many with same number...)
+#
+# Revision 1.1 1999/06/08 12:15:41 heikki
# Renamed to makefile (.nothing) (from .mak)
# Working on the proto.h problems and alternative confiigurations
#