1 # This file is part of Pazpar2.
2 # Copyright (C) Index Data
3 # See the file LICENSE for details.
5 DEBUG=0 # 0 for release, 1 for debug
6 USE_MANIFEST = 0 # Can be enabled Visual Studio 2005/2008
13 # Libxml2 + libxslt + associates
14 LIBXML2_DIR=\libxml2-2.9.2.win32
15 LIBXSLT_DIR=\libxslt-1.1.28.win32
20 ICU_LIB=$(ICU_DIR)\lib
21 ICU_INCLUDE=$(ICU_DIR)\include
25 all: dirs yaz libxslt pazpar2
27 NSIS="c:\program files\nsis\makensis.exe"
44 BINDIR=$(ROOTDIR)\bin # We produce exes and dlls there
45 WINDIR=$(ROOTDIR)\win # all these Win make things
46 SRCDIR=$(ROOTDIR)\src # for the case we move them under src
54 TMPDIR=$(ROOTDIR)\win\tmp
57 PAZPAR2_EXE=$(BINDIR)\pazpar2.exe
59 pazpar2: $(PAZPAR2_EXE)
61 YAZBINDIR=$(YAZ_DIR)\bin
63 YAZ_LIB="$(YAZ_DIR)\lib\yaz5d.lib" "$(YAZ_DIR)\lib\yaz_cond5d.lib"
65 YAZ_LIB=$(YAZ_LIB) "$(YAZ_DIR)\lib\yaz_icu5d.lib"
67 YAZ_DLL_SOURCE="$(YAZBINDIR)\yaz5d.dll"
68 YAZ_DLL_TARGET="$(BINDIR)\yaz5d.dll"
70 YAZ_LIB="$(YAZ_DIR)\lib\yaz5.lib" "$(YAZ_DIR)\lib\yaz_cond5.lib"
72 YAZ_LIB=$(YAZ_LIB) "$(YAZ_DIR)\lib\yaz_icu5.lib"
74 YAZ_DLL_SOURCE="$(YAZBINDIR)\yaz5.dll"
75 YAZ_DLL_TARGET="$(BINDIR)\yaz5.dll"
78 YAZ_DEF=/DYAZ_HAVE_XML2=2 /DYAZ_HAVE_XSLT=1 /I"$(YAZ_DIR)\include"
80 # Copy libxslt and associates to our bin directory
81 libxslt: $(BINDIR)\libxslt.dll
83 $(BINDIR)\libxslt.dll: "$(LIBXSLT_DIR)\lib\libxslt.dll"
84 copy "$(LIBXML2_DIR)\bin\libxml2.dll" $(BINDIR)
85 copy "$(LIBXSLT_DIR)\lib\libxslt.dll" $(BINDIR)
89 /I"$(LIBXML2_DIR)\include\libxml2" \
90 /I"$(LIBXSLT_DIR)\include"
93 "$(LIBXML2_DIR)\lib\libxml2.lib" \
94 "$(LIBXSLT_DIR)\lib\libxslt.lib"
97 ICU_DEF=/DYAZ_HAVE_ICU=1 /I"$(ICU_INCLUDE)"
98 ICU_LIBS= $(ICU_LIB)\icudt.lib \
99 $(ICU_LIB)\icuin.lib \
102 ICU_DEF=/DYAZ_HAVE_ICU=0
107 /nologo /W3 /EHsc /FD /c \
108 /D "_CRT_SECURE_NO_DEPRECATE" \
109 /D "PACKAGE_VERSION=\"$(PACKAGE_VERSION)\"" \
110 /D "PACKAGE_NAME=\"$(PACKAGE_NAME)\"" \
111 /D "VERSION=\"$(PACKAGE_VERSION)\"" \
117 /D "HAVE_WCHAR_H=1" \
123 /I"$(ROOTDIR)\include"
133 # /W3 = warning level
134 # /GX = Enable exception handling
135 # /FD = Generate file dependencies (what ever they are)
136 # /c = compile without linking
137 # /FR = Generate browse info (.sbr file that gets combined into .bsc)
138 # /Fo = object file name (or at least path)
139 # /Fd = debug database name (or path)
140 # /MD = Runtime library: Multithread DLL
141 # /MDd = Runtime library: Multithread DLL (debug)
142 # /Od = Disable optimising (debug)
143 # /O2 = Optimize for speed
144 # /Gm = Minimal rebuild (some cpp class stuff)
145 # /Zi = Program database for debuggers
146 # /ZI = Pgm database with special "edit&continue" stuff - not available in C5
152 LINK_LIBS= kernel32.lib ws2_32.lib advapi32.lib \
153 $(YAZ_LIB) $(ICU_LIBS) $(LIBXSLT_LIB)
155 COMMON_LNK_OPTIONS= /nologo /subsystem:windows /incremental:no
157 DEBUG_LNK_OPTIONS= /debug
161 CLIENT_LINK_OPTIONS = /subsystem:console
163 # Final opt variables
165 COPT= $(COMMON_C_OPTIONS) $(DEBUG_C_OPTIONS) $(COMMON_C_INCLUDES)
166 RCOPT= $(COMMON_RC_OPTIONS) $(DEBUG_RC_OPTIONS)
167 LNKOPT= $(COMMON_LNK_OPTIONS) $(DEBUG_LNK_OPTIONS) $(LNK_LIBS)
170 COPT= $(COMMON_C_OPTIONS) $(RELEASE_C_OPTIONS) $(COMMON_C_INCLUDES)
171 RCOPT= $(COMMON_RC_OPTIONS) $(RELEASE_RC_OPTIONS)
172 LNKOPT= $(COMMON_LNK_OPTIONS) $(RELEASE_LNK_OPTIONS) $(LNK_LIBS)
175 # Source and object modules
178 "$(OBJDIR)\getaddrinfo.obj" \
179 "$(OBJDIR)\host.obj" \
180 "$(OBJDIR)\pazpar2.obj" \
181 "$(OBJDIR)\pazpar2_config.obj" \
182 "$(OBJDIR)\http.obj" \
183 "$(OBJDIR)\eventl.obj" \
184 "$(OBJDIR)\http_command.obj" \
185 "$(OBJDIR)\session.obj" \
186 "$(OBJDIR)\record.obj" \
187 "$(OBJDIR)\reclists.obj" \
188 "$(OBJDIR)\relevance.obj" \
189 "$(OBJDIR)\termlists.obj" \
190 "$(OBJDIR)\normalize7bit.obj" \
191 "$(OBJDIR)\database.obj" \
192 "$(OBJDIR)\settings.obj" \
193 "$(OBJDIR)\charsets.obj" \
194 "$(OBJDIR)\client.obj" \
195 "$(OBJDIR)\jenkins_hash.obj" \
196 "$(OBJDIR)\marcmap.obj" \
197 "$(OBJDIR)\marchash.obj" \
198 "$(OBJDIR)\normalize_record.obj" \
199 "$(OBJDIR)\normalize_cache.obj" \
200 "$(OBJDIR)\ppmutex.obj" \
201 "$(OBJDIR)\incref.obj" \
202 "$(OBJDIR)\sel_thread.obj" \
203 "$(OBJDIR)\service_xslt.obj" \
204 "$(OBJDIR)\connection.obj" \
205 "$(OBJDIR)\facet_limit.obj"
208 {$(SRCDIR)}.c{$(OBJDIR)}.obj:
219 LINK_PROGRAM = $(LINK) $(LNKOPT) $(CLIENT_LINK_OPTIONS) $(LINK_LIBS)
222 $(PAZPAR2_EXE) : "$(BINDIR)" $(PAZPAR2_OBJS) $(YAZ_LIB)
223 $(LINK_PROGRAM) $(PAZPAR2_OBJS) /out:$@
224 $(MT) -manifest $@.manifest -outputresource:$@;1
231 dirs: $(OBJDIR) $(WINDIR) $(BINDIR) $(TMPDIR)
233 $(OBJDIR) $(WINDIR) $(BINDIR) $(TMPDIR):
234 if not exist "$@/$(NUL)" mkdir "$@"
236 yaz: $(YAZ_DLL_TARGET)
238 $(YAZ_DLL_TARGET) : $(YAZ_DLL_SOURCE)
239 # copy "$(YAZBINDIR)\*.dll.manifest" $(BINDIR)
240 copy "$(YAZBINDIR)\*.dll" $(BINDIR)