1 # This file is part of Pazpar2.
2 # Copyright (C) 2006-2008 Index Data
4 DEBUG=0 # 0 for release, 1 for debug
5 USE_MANIFEST = 0 # Can be enabled Visual Studio 2005
12 # Libxml2 + libxslt + associates
13 ZLIB_DIR=\zlib-1.2.3.win32
14 ICONV_DIR=\iconv-1.9.2.win32
15 LIBXML2_DIR=\libxml2-2.6.28.win32
16 LIBXSLT_DIR=\libxslt-1.1.19.win32
20 all: dirs yaz libxslt pazpar2
22 NSIS="c:\program files\nsis\makensis-bz2.exe"
33 BINDIR=$(ROOTDIR)\bin # We produce exes and dlls there
34 WINDIR=$(ROOTDIR)\win # all these Win make things
35 SRCDIR=$(ROOTDIR)\src # for the case we move them under src
38 OBJDIR=$(WINDIR)\dobj # debug objects
41 OBJDIR=$(WINDIR)\obj # non-debug objects
45 TMPDIR=$(ROOTDIR)\win\tmp
48 # Targets - what to make
50 PAZPAR2_EXE=$(BINDIR)\pazpar2.exe
52 pazpar2: $(PAZPAR2_EXE)
55 YAZ_LIB="$(YAZ_DIR)\lib\$(YAZD).lib"
56 YAZ_DEF=/DYAZ_HAVE_XML2=2 /DYAZ_HAVE_XSLT=1 /I"$(YAZ_DIR)\include"
57 yaz: $(BINDIR)\$(YAZD).dll
59 $(BINDIR)\$(YAZD).dll: "$(YAZ_DIR)\bin\$(YAZD).dll"
60 copy "$(YAZ_DIR)\bin\$(YAZD).dll" $(BINDIR)
62 # Copy libxslt and associates to our bin directory
63 libxslt: $(BINDIR)\libxslt.dll
65 $(BINDIR)\libxslt.dll: "$(LIBXSLT_DIR)\bin\libxslt.dll"
66 copy "$(ICONV_DIR)\bin\iconv.dll" $(BINDIR)
67 copy "$(ZLIB_DIR)\bin\zlib1.dll" $(BINDIR)
68 copy "$(LIBXML2_DIR)\bin\libxml2.dll" $(BINDIR)
69 copy "$(LIBXSLT_DIR)\bin\libxslt.dll" $(BINDIR)
73 /I"$(ICONV_DIR)\include" \
74 /I"$(LIBXML2_DIR)\include" \
75 /I"$(LIBXSLT_DIR)\include"
78 "$(ICONV_DIR)\lib\iconv.lib" \
79 "$(LIBXML2_DIR)\lib\libxml2.lib" \
80 "$(LIBXSLT_DIR)\lib\libxslt.lib"
83 /nologo /W3 /EHsc /FD /c \
84 /D "_CRT_SECURE_NO_DEPRECATE" \
85 /D "PACKAGE_VERSION=\"$(PACKAGE_VERSION)\"" \
86 /D "PACKAGE_NAME=\"$(PACKAGE_NAME)\"" \
87 /D "VERSION=\"$(PACKAGE_VERSION)\"" \
98 /I"$(ROOTDIR)\include"
108 # /W3 = warning level
109 # /GX = Enable exception handling
110 # /FD = Generate file dependencies (what ever they are)
111 # /c = compile without linking
112 # /FR = Generate browse info (.sbr file that gets combined into .bsc)
113 # /Fo = object file name (or at least path)
114 # /Fd = debug database name (or path)
115 # /MD = Runtime library: Multithread DLL
116 # /MDd = Runtime library: Multithread DLL (debug)
117 # /Od = Disable optimising (debug)
118 # /O2 = Optimize for speed
119 # /Gm = Minimal rebuild (some cpp class stuff)
120 # /Zi = Program database for debuggers
121 # /ZI = Pgm database with special "edit&continue" stuff - not available in C5
127 LINK_LIBS= kernel32.lib user32.lib gdi32.lib advapi32.lib uuid.lib \
128 wsock32.lib advapi32.lib \
129 $(YAZ_LIB) $(LIBXSLT_LIB)
131 COMMON_LNK_OPTIONS= /nologo /subsystem:windows /machine:i386 /incremental:no
133 DEBUG_LNK_OPTIONS= /debug
137 CLIENT_LINK_OPTIONS = /subsystem:console
139 # Final opt variables
141 COPT= $(COMMON_C_OPTIONS) $(DEBUG_C_OPTIONS) $(COMMON_C_INCLUDES)
142 RCOPT= $(COMMON_RC_OPTIONS) $(DEBUG_RC_OPTIONS)
143 LNKOPT= $(COMMON_LNK_OPTIONS) $(DEBUG_LNK_OPTIONS) $(LNK_LIBS)
146 COPT= $(COMMON_C_OPTIONS) $(RELEASE_C_OPTIONS) $(COMMON_C_INCLUDES)
147 RCOPT= $(COMMON_RC_OPTIONS) $(RELEASE_RC_OPTIONS)
148 LNKOPT= $(COMMON_LNK_OPTIONS) $(RELEASE_LNK_OPTIONS) $(LNK_LIBS)
151 # Source and object modules
154 "$(OBJDIR)\pazpar2.obj" \
155 "$(OBJDIR)\pazpar2_config.obj" \
156 "$(OBJDIR)\http.obj" \
157 "$(OBJDIR)\eventl.obj" \
158 "$(OBJDIR)\http_command.obj" \
159 "$(OBJDIR)\icu_I18N.obj" \
160 "$(OBJDIR)\logic.obj" \
161 "$(OBJDIR)\record.obj" \
162 "$(OBJDIR)\reclists.obj" \
163 "$(OBJDIR)\relevance.obj" \
164 "$(OBJDIR)\termlists.obj" \
165 "$(OBJDIR)\normalize7bit.obj" \
166 "$(OBJDIR)\util.obj" \
167 "$(OBJDIR)\zeerex.obj" \
168 "$(OBJDIR)\database.obj" \
169 "$(OBJDIR)\settings.obj" \
170 "$(OBJDIR)\getaddrinfo.obj" \
171 "$(OBJDIR)\charsets.obj" \
172 "$(OBJDIR)\client.obj" \
173 "$(OBJDIR)\dirent.obj" \
174 "$(OBJDIR)\connection.obj"
177 {$(SRCDIR)}.c{$(OBJDIR)}.obj:
180 ### The RC compiler (resource files)
182 COMMON_RC_OPTIONS= /l 0x406 /i"$(ROOTDIR)"
183 DEBUG_RC_OPTIONS=/d "_DEBUG"
184 RELEASE_RC_OPTIONS=/d "NDEBUG"
199 LINK_PROGRAM = $(LINK) $(LNKOPT) $(CLIENT_LINK_OPTIONS) $(LINK_LIBS)
202 $(PAZPAR2_EXE) : "$(BINDIR)" $(PAZPAR2_OBJS) $(YAZ_LIB)
203 $(LINK_PROGRAM) $(PAZPAR2_OBJS) /out:$@
204 $(MT) -manifest $@.manifest -outputresource:$@;1
211 dirs: $(OBJDIR) $(WINDIR) $(BINDIR) $(TMPDIR)
213 $(OBJDIR) $(WINDIR) $(BINDIR) $(TMPDIR):
214 if not exist "$@/$(NUL)" mkdir "$@"