X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=win%2Fmakefile;h=2f7b890acaf6fc43656197a19d2b96fed1cf8fed;hp=afb16aec0bcc84097c7511e113d96a9ea4f9839e;hb=c874a015436f78e8f6f5952e068db23d55a31b22;hpb=6056c9215b71c976714e822e560ca6352e36387c diff --git a/win/makefile b/win/makefile index afb16ae..2f7b890 100644 --- a/win/makefile +++ b/win/makefile @@ -1,5 +1,5 @@ # Makefile.mak - makefile for MS NMAKE -# $Id: makefile,v 1.1 1999-06-08 12:15:41 heikki Exp $ +# $Id: makefile,v 1.7 1999-06-09 15:10:08 heikki Exp $ # # Programmed by # HL: Heikki Levanto, Index Data @@ -8,13 +8,16 @@ # # 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 @@ -22,10 +25,15 @@ 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 +generate: generated_files ########################################################### ############### Directories @@ -48,29 +56,34 @@ ODRDIR=$(SRCDIR)\ODR 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 @@ -115,12 +128,6 @@ RELEASE_C_OPTIONS= \ # /Zi = Program database for debuggers # /ZI = Pgm database with special "edit&continue" stuff - not available in C5 -### 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" - ### Linker options LINK=link.exe @@ -144,6 +151,11 @@ CLIENT_LINK_OPTIONS = /subsystem:console 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) @@ -151,12 +163,14 @@ COPT= $(COMMON_C_OPTIONS) $(DEBUG_C_OPTIONS) $(COMMON_C_INCLUDES) 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 @@ -165,22 +179,6 @@ LNKOPT= $(COMMON_LNK_OPTIONS) $(RELEASE_LNK_OPTIONS) $(LNK_LIBS) ############### Source and object modules ########################################################### -# The resource files - -RCFILE=$(SRCDIR)\compmak.rc -# Horrible Hack: The resfile contains just one line, pointing -# to the component.tlb file (which is created by the idl compiler) -# Devstudio wants that file to live in YazX3950, this makefile in -# win/obj. So we need to RC files! - -RESFILE=$(OBJDIR)\component.res - - -# The def file -#DEF_FILE= $(ROOTDIR)\component.def - - - # Note: Ordinary source files are not specified here at # all, make finds them in suitable dirs. The object modules # need to be specified, though @@ -270,7 +268,6 @@ YAZ_ZUTIL_OBJS= \ $(OBJDIR)\prt-ext.obj \ $(OBJDIR)\logrpn.obj \ $(OBJDIR)\pquery.obj \ - $(OBJDIR)\query.obj \ $(OBJDIR)\yaz-ccl.obj \ $(OBJDIR)\otherinfo.obj @@ -293,16 +290,141 @@ YAZ_RET_OBJS= \ $(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) +ALL_OBJS= \ + $(YAZ_OBJS) \ + $(YAZ_CLIENT_OBJS) \ + $(YAZ_SERVER_OBJS) \ + $(ZTEST_OBJS) + + +########################################################## +############## proto.h +########################################################## + +!if $(NEW_Z3950) +$(PROTOH): makefile $(INCLDIR)\z-proto.h + type $(INCLDIR)\z-proto.h > $(INCLDIR)\proto.h +!else +$(PROTOH): makefile $(INCLDIR)\prt-proto.h + type $(INCLDIR)\prt-proto.h > $(INCLDIR)\proto.h +!endif + + +########################################################### +############### Generated C and H files +########################################################### + +Z3950_C_DIR=$(Z3950DIR) +#!!! Should be moved to OBJ, but that requires too much trickery + +# Files generated from datetime.asn +DATETIME_H_FILES = $(INCLDIR)\z-date.h +DATETIME_C_FILES = $(Z3950_C_DIR)\z-date.c + +# Files generated from univres.asn +UNIVRES_H_FILES = $(INCLDIR)\z-univ.h +UNIVRES_C_FILES = $(Z3950_C_DIR)\z-univ.c + +# Files generated from esupdate.asn +ESUPDATE_H_FILES = $(INCLDIR)\zes-update.h +ESUPDATE_C_FILES = $(Z3950_C_DIR)\zes-update.c + +# 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 + +DATETIME_FILES = $(DATETIME_H_FILES) $(DATETIME_C_FILES) +UNIVRES_FILES = $(UNIVRES_H_FILES) $(UNIVRES_C_FILES) +ESUPDATE_FILES = $(ESUPDATE_H_FILES) $(ESUPDATE_C_FILES) +Z3950V3_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) + +generated_files: \ + $(GENERATED_H_FILES) \ + $(GENERATED_C_FILES) \ + $(PROTOH) ########################################################### ############### Compiling @@ -313,89 +435,86 @@ DLL_OBJS= $(YAZ_OBJS) # DLL sources {$(SRCDIR)}.cpp{$(OBJDIR)}.obj: - @$(CPP) @<< - $(COPT) $< -<< + @$(CPP) $(COPT) $< # Yaz client {$(CLIENTDIR)}.c{$(OBJDIR)}.obj: - @$(CPP) @<< - /D"_CONSOLE" - $(COPT) $< -<< + @$(CPP) $(COPT) $< /D"_CONSOLE" # Ztest {$(ZTESTDIR)}.c{$(OBJDIR)}.obj: - @$(CPP) @<< - /D"_CONSOLE" - /D"_MBCS" - $(COPT) $< -<< - + @$(CPP) $(COPT) $< /D"_CONSOLE" /D"_MBCS" # Server {$(SERVERDIR)}.c{$(OBJDIR)}.obj: - @$(CPP) @<< - $(COPT) $< -<< + @$(CPP) $(COPT) $< # Various YAZ source directories {$(ASNDIR)}.c{$(OBJDIR)}.obj: - @$(CPP) @<< - $(COPT) $< -<< + @$(CPP) $(COPT) $< {$(COMSTACKDIR)}.c{$(OBJDIR)}.obj: - @$(CPP) @<< - $(COPT) $< -<< + @$(CPP) $(COPT) $< {$(ODRDIR)}.c{$(OBJDIR)}.obj: - @$(CPP) @<< - $(COPT) $< -<< + @$(CPP) $(COPT) $< {$(UTILDIR)}.c{$(OBJDIR)}.obj: - @$(CPP) @<< - $(COPT) $< -<< + @$(CPP) $(COPT) $< {$(ZUTILDIR)}.c{$(OBJDIR)}.obj: - @$(CPP) @<< - $(COPT) $< -<< + @$(CPP) $(COPT) $< {$(RETDIR)}.c{$(OBJDIR)}.obj: - @$(CPP) @<< - $(COPT) $< -<< + @$(CPP) $(COPT) $< + +{$(Z3950_C_DIR)}.c{$(OBJDIR)}.obj: + @$(CPP) $(COPT) $< + + +############### ASN-generated files +$(Z3950V3_FILES): $(Z3950DIR)\z3950v3.asn + @cd $(Z3950DIR) + $(TCL) $(TCLOPT) z3950v3.asn + @cd $(WINDIR) -### Resource file -$(RESFILE): $(RCFILE) $(IDLGENERATED) - $(RSC) $(RCOPT) /fo"$(RESFILE)" $(RCFILE) +$(DATETIME_FILES): $(Z3950DIR)\datetime.asn + @cd $(Z3950DIR) + $(TCL) $(TCLOPT) datetime.asn + @cd $(WINDIR) +$(UNIVRES_FILES): $(Z3950DIR)\univres.asn + @cd $(Z3950DIR) + $(TCL) $(TCLOPT) univres.asn + @cd $(WINDIR) + +$(ESUPDATE_FILES): $(Z3950DIR)\esupdate.asn + @cd $(Z3950DIR) + $(TCL) $(TCLOPT) esupdate.asn + @cd $(WINDIR) ########################################################### ############### Linking ########################################################### - $(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) +$(CLIENT) : "$(BINDIR)" $(YAZ_CLIENT_OBJS) + @echo Linking the client $(CLIENT) $(LINK) @<< - $(LNKOPT) + $(LNKOPT) $(CLIENT_LINK_OPTIONS) $(LINK_LIBS) $(IMPLIB) @@ -404,8 +523,9 @@ $(CLIENT) : "$(BINDIR)" $(YAZ_CLIENT_OBJS) $(IMPLIB) << $(ZTEST) : "$(BINDIR)" $(ZTEST_OBJS) $(SERVER) $(DLL) + @echo Linking the ztest $(ZTEST) $(LINK) @<< - $(LNKOPT) + $(LNKOPT) $(ZTEST_LINK_OPTIONS) $(LINK_LIBS) shell32.lib @@ -417,13 +537,14 @@ $(ZTEST) : "$(BINDIR)" $(ZTEST_OBJS) $(SERVER) $(DLL) $(SERVER) : "$(BINDIR)" $(YAZ_SERVER_OBJS) + @echo Linking the server $(SERVER) $(LINK) $(SERVER_LINK_OPTIONS) @<< /nologo - $(LINK_LIBS) $(IMPLIB) $(YAZ_SERVER_OBJS) /out:$(SERVER) << + # note that this links a lib, so it uses completely different options. @@ -441,11 +562,26 @@ clean: del $(CLIENT) del $(SERVER) del $(ZTEST) + del $(TMPDIR)\*. + del $(PROTOH) + +realclean: clean + del $(Z3950_C_DIR)\*.c + del $(Z3950_C_DIR)\*.h + del $(INCLDIR)\z-accdes1.h + del $(INCLDIR)\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) +dirs: $(OBJDIR) $(WINDIR) $(LIBDIR) $(BINDIR) $(TMPDIR) -$(OBJDIR) $(WINDIR) $(LIBDIR) $(BINDIR) : +$(OBJDIR) $(WINDIR) $(LIBDIR) $(BINDIR) $(TMPDIR): if not exist "$@/$(NUL)" mkdir "$@" @@ -453,14 +589,45 @@ $(OBJDIR) $(WINDIR) $(LIBDIR) $(BINDIR) : ############### Explicit dependencies ########################################################### -$(OBJDIR)/client.obj: $(IDLGENERATED) +$(ALL_OBJS): makefile $(PROTOH) + +# force recompilation of everything, if makefile changed + +$(Z3950_OBJS): $(GENERATED_C_FILES) $(GENERATED_H_FILES) + +!if $(NEW_Z3950) +$(PROTOH): $(GENERATED_C_FILES) $(GENERATED_H_FILES) +!endif +# makes sure we generate before compiling anything, as the +# new proto.h refers to the generated files, and is included +# in various places ########################################################### ############### Log ########################################################### # # $Log: makefile,v $ -# Revision 1.1 1999-06-08 12:15:41 heikki +# Revision 1.7 1999-06-09 15:10:08 heikki +# Cleaning up. Seems to work all right +# +# Revision 1.6 1999/06/09 13:33:32 heikki +# Compiles and links both old and new type stuff all right +# +# 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 #