📄 makefile
字号:
# Copyright (C) 1994-2003, Index Data# All rights reserved.# $Id: makefile,v 1.64 2003/09/04 18:52:02 adam Exp $## Programmed by# HL: Heikki Levanto, Index Data########################################################################### Parameters ###########################################################DEBUG=0 # 0 for release, 1 for debug# TCLTCL="C:\Tcl\bin\tclsh84.exe"#TCL="C:\Program Files\Tcl\bin\tclsh83.exe"HAVE_TCL=1# iconv charcter conversion utilityHAVE_ICONV=1ICONV_DIR = c:\iconv-1.8.win32# libxml2HAVE_LIBXML2=1LIBXML2_DIR=c:\libxml2-2.5.10.win32# WIN32 binaries libxml2 & iconv from here:# http://www.zlatkovic.com/projects/libxml/binaries.html# bisonHAVE_BISON=1BISON=bisondefault: allall: dirs generate dll client ztest zoomsh cqlprog iconv libxml2NSIS="c:\program files\nsis\makensis-bz2.exe"nsis: all $(NSIS) yaz.nsinsishelp: $(NSIS)generate: generated_files########################################################################## Directories############################################################ The current directory is supposed to be something like# ..../yaz/win, everything is relative to thatROOTDIR=.. # The home of yazINCLDIR=$(ROOTDIR)\include # our includesLIBDIR=$(ROOTDIR)\lib # We produce .lib, .exp etc thereBINDIR=$(ROOTDIR)\bin # We produce exes and dlls thereWINDIR=$(ROOTDIR)\win # all these Win make thingsOBJDIR=$(WINDIR)\obj # where we store intermediate filesUNIXDIR=$(ROOTDIR)\unix # corresponding unix thingsSRCDIR=$(ROOTDIR) # for the case we move them under srcASNDIR=$(SRCDIR)\ASNCOMSTACKDIR=$(SRCDIR)\COMSTACKODRDIR=$(SRCDIR)\ODRUTILDIR=$(SRCDIR)\UTILZUTILDIR=$(SRCDIR)\ZUTILRETDIR=$(SRCDIR)\RETRIEVALZ3950DIR=$(SRCDIR)\Z39.50ILLDIR=$(SRCDIR)\illCCLDIR=$(SRCDIR)\cclZOOMDIR=$(SRCDIR)\zoomCQLDIR=$(SRCDIR)\cqlCLIENTDIR=$(SRCDIR)\CLIENTSERVERDIR=$(SRCDIR)\SERVERZTESTDIR=$(SRCDIR)\ZTESTTMPDIR=$(ROOTDIR)\win\tmpTMP=$(TMPDIR)########################################################################## Targets - what to make###########################################################DLL=$(BINDIR)\yaz.dllIMPLIB=$(LIBDIR)\yaz.libCLIENT=$(BINDIR)\yaz-client.exeZOOMSH=$(BINDIR)\zoomsh.exeZTEST=$(BINDIR)\yaz-ztest.exeZOOMTST1=$(BINDIR)\zoomtst1.exeZOOMTST2=$(BINDIR)\zoomtst2.exeZOOMTST3=$(BINDIR)\zoomtst3.exeZOOMTST4=$(BINDIR)\zoomtst4.exeZOOMTST5=$(BINDIR)\zoomtst5.exeZOOMTST6=$(BINDIR)\zoomtst6.exeZOOMTST7=$(BINDIR)\zoomtst7.exeZOOMTST8=$(BINDIR)\zoomtst8.exeCQL2PQF=$(BINDIR)\cql2pqf.exeCQL2XCQL=$(BINDIR)\cql2xcql.exe# shortcut names defined heredll : $(DLL) client: $(CLIENT)ztest: $(ZTEST)zoomsh: $(ZOOMSH) $(ZOOMTST1) $(ZOOMTST2) $(ZOOMTST3) \ $(ZOOMTST4) $(ZOOMTST5) $(ZOOMTST6) $(ZOOMTST7) $(ZOOMTST8)cqlprog: $(CQL2PQF) $(CQL2XCQL)########################################################################## Compiler and linker options ###########################################################!if $(HAVE_ICONV)ICONV_DEF= \ /D HAVE_ICONV_H=1 \ /I"$(ICONV_DIR)\include"ICONV_LIB= \ $(ICONV_DIR)\lib\iconv.libiconv: $(BINDIR)\iconv.dll$(BINDIR)\iconv.dll: copy $(ICONV_DIR)\lib\iconv.dll $(BINDIR)!elseICONV_DEF= \ /D HAVE_ICONV_H=0ICONV_LIB=iconv:!endif!if $(HAVE_LIBXML2)LIBXML2_LIB=$(LIBXML2_DIR)\lib\libxml2.libLIBXML2_DEF=/D HAVE_XML2=1 /I"$(LIBXML2_DIR)\include"libxml2: $(BINDIR)\libxml2.dll$(BINDIR)\libxml2.dll: copy $(LIBXML2_DIR)\lib\libxml2.dll $(BINDIR)!elseLIBXML2_LIB=LIBXML2_DEF=/D HAVE_XML2=0libxml2: !endif### C and CPP compiler (the same thing)# Note: $(CPP) has already been defined in the environment# (if you set things up right!)COMMON_C_OPTIONS= \ /nologo /W3 /GX /FD /c \ $(ICONV_DEF) \ $(LIBXML2_DEF) \ /D "_WINDOWS" \ /D "WIN32" \ /D "HAVE_WCHAR_H=1" \ /FR"$(OBJDIR)\\" \ /Fo"$(OBJDIR)\\" \ /Fd"$(OBJDIR)\\" COMMON_C_INCLUDES= \ /I"$(SRCDIR)\include"DEBUG_C_OPTIONS= \ /D "_DEBUG" \ /MDd /Od /YX /Zi /GmRELEASE_C_OPTIONS= \ /D "NDEBUG" \ /MD /O2# /W3 = warning level# /GX = Enable exception handling# /FD = Generate file dependencies (what ever they are)# /c = compile without linking# /FR = Generate browse info (.sbr file that gets combined into .bsc)# /Fo = object file name (or at least path)# /Fd = debug database name (or path)# /MD = Runtime library: Multithread DLL# /MDd = Runtime library: Multithread DLL (debug)# /Od = Disable optimising (debug)# /O2 = Optimize for speed# /YX = Automatic use of precomipled headers# /Gm = Minimal rebuild (some cpp class stuff)# /Zi = Program database for debuggers# /ZI = Pgm database with special "edit&continue" stuff - not available in C5### Linker optionsLINK=link.exeLINK_LIBS= kernel32.lib user32.lib gdi32.lib \ advapi32.lib uuid.lib \ wsock32.lib advapi32.lib \ $(ICONV_LIB) $(LIBXML2_LIB)COMMON_LNK_OPTIONS= /nologo \ /subsystem:windows \ /machine:i386 \ /incremental:noDEBUG_LNK_OPTIONS= /debug RELEASE_LNK_OPTIONS= /pdb:noneDLL_LINK_OPTIONS= /dll CLIENT_LINK_OPTIONS = /subsystem:console ZOOMSH_LINK_OPTIONS = /subsystem:consoleSERVER_LINK_OPTIONS = -lib ZTEST_LINK_OPTIONS = /subsystem:console CQL2PQF_LINK_OPTIONS = /subsystem:console CQL2XCQL_LINK_OPTIONS = /subsystem:console COMMON_TCL_OPTIONS= ..\util\yaz-asncomp -I$(INCLDIR) -i yaz# Final opt variables!if $(DEBUG)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)!elseCOPT= $(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########################################################################## Source and object modules############################################################ Note: Ordinary source files are not specified here at # all, make finds them in suitable dirs. The object modules# need to be specified, thoughYAZ_CLIENT_OBJS= \ $(OBJDIR)\client.obj \ $(OBJDIR)\tabcomplete.obj \ $(OBJDIR)\admin.objYAZ_ZOOMSH_OBJS = \ $(OBJDIR)\zoomsh.objYAZ_ZOOMTST1_OBJS = \ $(OBJDIR)\zoomtst1.objYAZ_ZOOMTST2_OBJS = \ $(OBJDIR)\zoomtst2.objYAZ_ZOOMTST3_OBJS = \ $(OBJDIR)\zoomtst3.objYAZ_ZOOMTST4_OBJS = \ $(OBJDIR)\zoomtst4.objYAZ_ZOOMTST5_OBJS = \ $(OBJDIR)\zoomtst5.objYAZ_ZOOMTST6_OBJS = \ $(OBJDIR)\zoomtst6.objYAZ_ZOOMTST7_OBJS = \ $(OBJDIR)\zoomtst7.objYAZ_ZOOMTST8_OBJS = \ $(OBJDIR)\zoomtst8.objYAZ_CQL2PQF_OBJS = \ $(OBJDIR)\cql2pqf.objYAZ_CQL2XCQL_OBJS = \ $(OBJDIR)\cql2xcql.objYAZ_SERVER_OBJS= \ "$(OBJDIR)\eventl.obj" \ "$(OBJDIR)\requestq.obj" \ "$(OBJDIR)\service.obj" \ "$(OBJDIR)\seshigh.obj" \ "$(OBJDIR)\statserv.obj" \ "$(OBJDIR)\tcpdchk.obj" ZTEST_OBJS= \ "$(OBJDIR)\read-marc.obj" \ "$(OBJDIR)\read-grs.obj" \ "$(OBJDIR)\ztest.obj" YAZ_CCL_OBJS= \ $(OBJDIR)\cclerrms.obj \ $(OBJDIR)\cclfind.obj \ $(OBJDIR)\cclptree.obj \ $(OBJDIR)\cclqfile.obj \ $(OBJDIR)\cclqual.obj \ $(OBJDIR)\cclstr.obj \ $(OBJDIR)\ccltoken.objYAZ_COMSTACK_OBJS= \ $(OBJDIR)\comstack.obj \ $(OBJDIR)\tcpip.obj \ $(OBJDIR)\waislen.obj YAZ_ODR_OBJS= \ $(OBJDIR)\ber_any.obj \ $(OBJDIR)\ber_bit.obj \ $(OBJDIR)\ber_bool.obj \ $(OBJDIR)\ber_int.obj \ $(OBJDIR)\ber_len.obj \ $(OBJDIR)\ber_null.obj \ $(OBJDIR)\ber_oct.obj \ $(OBJDIR)\ber_oid.obj \ $(OBJDIR)\ber_tag.obj \ $(OBJDIR)\dumpber.obj \ $(OBJDIR)\odr.obj \ $(OBJDIR)\odr_any.obj \ $(OBJDIR)\odr_bit.obj \ $(OBJDIR)\odr_bool.obj \ $(OBJDIR)\odr_choice.obj \ $(OBJDIR)\odr_cons.obj \ $(OBJDIR)\odr_enum.obj \ $(OBJDIR)\odr_int.obj \ $(OBJDIR)\odr_mem.obj \ $(OBJDIR)\odr_null.obj \ $(OBJDIR)\odr_oct.obj \ $(OBJDIR)\odr_oid.obj \ $(OBJDIR)\odr_seq.obj \ $(OBJDIR)\odr_tag.obj \ $(OBJDIR)\odr_use.obj \ $(OBJDIR)\odr_util.obj YAZ_UTIL_OBJS= \ $(OBJDIR)\version.obj \ $(OBJDIR)\atoin.obj \ $(OBJDIR)\log.obj \ $(OBJDIR)\marcdisp.obj \ $(OBJDIR)\nmem.obj \ $(OBJDIR)\nmemsdup.obj \ $(OBJDIR)\oid.obj \ $(OBJDIR)\options.obj \ $(OBJDIR)\readconf.obj \ $(OBJDIR)\tpath.obj \ $(OBJDIR)\wrbuf.obj \ $(OBJDIR)\xmalloc.obj \ $(OBJDIR)\matchstr.obj \ $(OBJDIR)\siconv.obj \ $(OBJDIR)\marc8.objYAZ_ZUTIL_OBJS= \ $(OBJDIR)\diagbib1.obj \ $(OBJDIR)\zget.obj \ $(OBJDIR)\logrpn.obj \ $(OBJDIR)\pquery.obj \ $(OBJDIR)\yaz-ccl.obj \ $(OBJDIR)\otherinfo.obj \ $(OBJDIR)\sortspec.obj \ $(OBJDIR)\z3950oid.obj \ $(OBJDIR)\charneg.obj \ $(OBJDIR)\grs1disp.obj \ $(OBJDIR)\opacdisp.obj \ $(OBJDIR)\zgdu.obj \ $(OBJDIR)\soap.obj \ $(OBJDIR)\srw.obj \ $(OBJDIR)\zoom-c.obj \ $(OBJDIR)\zoom-opt.objZ3950_OBJS= \ $(OBJDIR)\z-date.obj\ $(OBJDIR)\z-univ.obj\ $(OBJDIR)\zes-update.obj\ $(OBJDIR)\zes-admin.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 \ $(OBJDIR)\prt-ext.obj \ $(OBJDIR)\z-charneg.obj \ $(OBJDIR)\z-mterm2.obj \ $(OBJDIR)\z-oclcui.objILL_OBJS= \ $(OBJDIR)\ill-get.obj\ $(OBJDIR)\ill-core.obj\ $(OBJDIR)\item-req.objYAZ_CQL_OBJS = \ $(OBJDIR)\cql.obj \ $(OBJDIR)\cqlstdio.obj \ $(OBJDIR)\cqlstring.obj \ $(OBJDIR)\cqltransform.obj \ $(OBJDIR)\cqlutil.obj \ $(OBJDIR)\cqlstrer.obj \ $(OBJDIR)\xcqlutil.objYAZ_OBJS =\ $(YAZ_UTIL_OBJS) \ $(YAZ_ODR_OBJS) \ $(YAZ_COMSTACK_OBJS) \ $(Z3950_OBJS) \ $(ILL_OBJS) \ $(YAZ_ZUTIL_OBJS) \ $(YAZ_CCL_OBJS) \ $(YAZ_CQL_OBJS) \ $(YAZ_SERVER_OBJS)DLL_OBJS= $(YAZ_OBJS)ALL_OBJS= \ $(YAZ_OBJS) \ $(YAZ_CLIENT_OBJS) \ $(ZTEST_OBJS)########################################################################## Generated C and H files###########################################################Z3950_C_DIR=$(Z3950DIR) ILL_C_DIR=$(ILLDIR)#!!! Should be moved to OBJ, but that requires too much trickery# Files generated from datetime.asnDATETIME_H_FILES = $(INCLDIR)\yaz\z-date.hDATETIME_C_FILES = $(Z3950_C_DIR)\z-date.c# Files generated from univres.asnUNIVRES_H_FILES = $(INCLDIR)\yaz\z-univ.hUNIVRES_C_FILES = $(Z3950_C_DIR)\z-univ.c# Files generated from esupdate.asnESUPDATE_H_FILES = $(INCLDIR)\yaz\zes-update.hESUPDATE_C_FILES = $(Z3950_C_DIR)\zes-update.c# Files generated from esadmin.asnESADMIN_H_FILES = $(INCLDIR)\yaz\zes-admin.hESADMIN_C_FILES = $(Z3950_C_DIR)\zes-admin.c# Files generated from esadmin.asnCHARNEG_H_FILES = $(INCLDIR)\yaz\z-charneg.hCHARNEG_C_FILES = $(Z3950_C_DIR)\z-charneg.c# Files generated from mterm2.asnMTERM2_H_FILES = $(INCLDIR)\yaz\z-mterm2.hMTERM2_C_FILES = $(Z3950_C_DIR)\z-mterm2.c# Files generated from mterm2.asnOCLCUI_H_FILES = $(INCLDIR)\yaz\z-oclcui.hOCLCUI_C_FILES = $(Z3950_C_DIR)\z-oclcui.c# Files created from z3950v3.asnZ3950V3_H_FILES= \ $(INCLDIR)\yaz\z-accdes1.h \ $(INCLDIR)\yaz\z-core.hZ3950V3_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# Files generated from ill9702.asnILL_CORE_H_FILES= \ $(INCLDIR)\yaz\ill-core.hILL_CORE_C_FILES= \ $(ILL_C_DIR)\ill-core.c# Files generated from itemreq.asnITEM_REQ_H_FILES= \ $(INCLDIR)\yaz\item-req.hITEM_REQ_C_FILES= \ $(ILL_C_DIR)\item-req.c# Combined..DATETIME_FILES = $(DATETIME_H_FILES) $(DATETIME_C_FILES)UNIVRES_FILES = $(UNIVRES_H_FILES) $(UNIVRES_C_FILES)ESUPDATE_FILES = $(ESUPDATE_H_FILES) $(ESUPDATE_C_FILES)ESADMIN_FILES = $(ESADMIN_H_FILES) $(ESADMIN_C_FILES)Z3950V3_FILES= $(Z3950V3_C_FILES) $(Z3950V3_H_FILES)ILL_CORE_FILES= $(ILL_CORE_C_FILES) $(ILL_CORE_H_FILES)ITEM_REQ_FILES= $(ITEM_REQ_C_FILES) $(ITEM_REQ_H_FILES)CHARNEG_FILES = $(CHARNEG_C_FILES) $(CHARNEG_H_FILES)MTERM2_FILES = $(MTERM2_C_FILES) $(MTERM2_H_FILES)OCLCUI_FILES = $(OCLCUI_C_FILES) $(OCLCUI_H_FILES)GENERATED_C_FILES= \ $(Z3950V3_C_FILES) \ $(ESUPDATE_C_FILES) \ $(UNIVRES_C_FILES) \ $(DATETIME_C_FILES) \ $(ESADMIN_C_FILES) \ $(CHARNEG_C_FILES) \ $(MTERM2_C_FILES) \ $(OCLCUI_C_FILES)GENERATED_H_FILES= \ $(Z3950V3_H_FILES) \ $(ESUPDATE_H_FILES) \ $(UNIVRES_H_FILES) \ $(DATETIME_H_FILES) \ $(ESADMIN_H_FILES) \ $(CHARNEG_H_FILES) \ $(MTERM2_H_FILES) \ $(OCLCUI_H_FILES)generated_files: \ $(GENERATED_H_FILES) \ $(GENERATED_C_FILES) \########################################################################## Compiling ############################################################ Note: This defines where to look for the necessary# source files. Funny way of doing it, but it works.# DLL sources{$(SRCDIR)}.cpp{$(OBJDIR)}.obj: @$(CPP) $(COPT) $<# yaz client{$(CLIENTDIR)}.c{$(OBJDIR)}.obj: @$(CPP) $(COPT) $< /D"_CONSOLE"# Ztest{$(ZTESTDIR)}.c{$(OBJDIR)}.obj: @$(CPP) $(COPT) $< /D"_CONSOLE"# Server{$(SERVERDIR)}.c{$(OBJDIR)}.obj: $(CPP) $(COPT) $< # Various YAZ source directories{$(ASNDIR)}.c{$(OBJDIR)}.obj: $(CPP) $(COPT) $<
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -