Version 1.8.8
[pazpar2-moved-to-github.git] / win / makefile
index b62f9ff..f3998ea 100644 (file)
@@ -1,32 +1,39 @@
 # This file is part of Pazpar2.
-# Copyright (C) 2006-2008 Index Data
+# Copyright (C) Index Data
+# See the file LICENSE for details.
 
 DEBUG=0   # 0 for release, 1 for debug
-USE_MANIFEST = 0 # Can be enabled Visual Studio 2005
+USE_MANIFEST = 0 # Can be enabled Visual Studio 2005/2008
 PACKAGE_NAME=pazpar2
-PACKAGE_VERSION=1.0.9
+PACKAGE_VERSION=1.8.8
 
 # YAZ
 YAZ_DIR=..\..\yaz
 
 # Libxml2 + libxslt + associates
-ZLIB_DIR=\zlib-1.2.3.win32
-ICONV_DIR=\iconv-1.9.2.win32
-LIBXML2_DIR=\libxml2-2.6.28.win32
-LIBXSLT_DIR=\libxslt-1.1.19.win32
+LIBXML2_DIR=\libxml2-2.9.2.win32
+LIBXSLT_DIR=\libxslt-1.1.28.win32
 
 # ICU
 HAVE_ICU=1
 ICU_DIR=c:\icu
+ICU_LIB=$(ICU_DIR)\lib
+ICU_INCLUDE=$(ICU_DIR)\include
 
 default: all
 
 all: dirs yaz libxslt pazpar2
 
-NSIS="c:\program files\nsis\makensis-bz2.exe"
+NSIS="c:\program files\nsis\makensis.exe"
+
+dist: pazpar2.nsi
+       nmake DEBUG=1 clean
+       nmake DEBUG=0 clean
+       nmake DEBUG=0
+       $(NSIS) pazpar2.nsi
 
 nsis: all
-       $(NSIS) yazpp.nsi
+       $(NSIS) pazpar2.nsi
 
 nsishelp:
        $(NSIS)
@@ -39,11 +46,9 @@ WINDIR=$(ROOTDIR)\win       # all these Win make things
 SRCDIR=$(ROOTDIR)\src       # for the case we move them under src
 
 !if $(DEBUG)
-OBJDIR=$(WINDIR)\dobj       # debug objects
-YAZD=yaz3d
+OBJDIR=$(WINDIR)\dobj
 !else
-OBJDIR=$(WINDIR)\obj        # non-debug objects
-YAZD=yaz3
+OBJDIR=$(WINDIR)\obj
 !endif
 
 TMPDIR=$(ROOTDIR)\win\tmp
@@ -53,43 +58,49 @@ PAZPAR2_EXE=$(BINDIR)\pazpar2.exe
 
 pazpar2: $(PAZPAR2_EXE)
 
-# YAZ includes & libs
-YAZ_LIB="$(YAZ_DIR)\lib\$(YAZD).lib"
-YAZ_DEF=/DYAZ_HAVE_XML2=2 /DYAZ_HAVE_XSLT=1 /I"$(YAZ_DIR)\include"
-yaz: $(BINDIR)\$(YAZD).dll 
+YAZBINDIR=$(YAZ_DIR)\bin
+!if $(DEBUG)
+YAZ_LIB="$(YAZ_DIR)\lib\yaz5d.lib" "$(YAZ_DIR)\lib\yaz_cond5d.lib" 
+!if $(HAVE_ICU)
+YAZ_LIB=$(YAZ_LIB) "$(YAZ_DIR)\lib\yaz_icu5d.lib"
+!endif
+YAZ_DLL_SOURCE="$(YAZBINDIR)\yaz5d.dll"
+YAZ_DLL_TARGET="$(BINDIR)\yaz5d.dll"
+!else
+YAZ_LIB="$(YAZ_DIR)\lib\yaz5.lib" "$(YAZ_DIR)\lib\yaz_cond5.lib"
+!if $(HAVE_ICU)
+YAZ_LIB=$(YAZ_LIB) "$(YAZ_DIR)\lib\yaz_icu5.lib"
+!endif
+YAZ_DLL_SOURCE="$(YAZBINDIR)\yaz5.dll"
+YAZ_DLL_TARGET="$(BINDIR)\yaz5.dll"
+!endif
 
-$(BINDIR)\$(YAZD).dll: "$(YAZ_DIR)\bin\$(YAZD).dll"
-  copy "$(YAZ_DIR)\bin\icu*.dll" $(BINDIR)
-  copy "$(YAZ_DIR)\bin\$(YAZD).dll" $(BINDIR)
+YAZ_DEF=/DYAZ_HAVE_XML2=2 /DYAZ_HAVE_XSLT=1 /I"$(YAZ_DIR)\include"
 
 # Copy libxslt and associates to our bin directory
 libxslt: $(BINDIR)\libxslt.dll
 
-$(BINDIR)\libxslt.dll: "$(LIBXSLT_DIR)\bin\libxslt.dll"
-       copy "$(ICONV_DIR)\bin\iconv.dll" $(BINDIR)
-       copy "$(ZLIB_DIR)\bin\zlib1.dll" $(BINDIR)
+$(BINDIR)\libxslt.dll: "$(LIBXSLT_DIR)\lib\libxslt.dll"
        copy "$(LIBXML2_DIR)\bin\libxml2.dll" $(BINDIR)
-       copy "$(LIBXSLT_DIR)\bin\libxslt.dll" $(BINDIR)
+       copy "$(LIBXSLT_DIR)\lib\libxslt.dll" $(BINDIR)
 
 
 LIBXSLT_DEF= \
-           /I"$(ICONV_DIR)\include" \
-           /I"$(LIBXML2_DIR)\include" \
+           /I"$(LIBXML2_DIR)\include\libxml2" \
            /I"$(LIBXSLT_DIR)\include"
 
 LIBXSLT_LIB = \
-          "$(ICONV_DIR)\lib\iconv.lib" \
           "$(LIBXML2_DIR)\lib\libxml2.lib" \
           "$(LIBXSLT_DIR)\lib\libxslt.lib"
 
 !if $(HAVE_ICU)
-ICU_DEF=/DHAVE_ICU=1 /D HAVE_ICU_H=1 /I"$(ICU_DIR)\include"
-ICU_LIB= $(ICU_DIR)\lib\icudt.lib \
-        $(ICU_DIR)\lib\icuin.lib \
-        $(ICU_DIR)\lib\icuuc.lib
+ICU_DEF=/DYAZ_HAVE_ICU=1 /I"$(ICU_INCLUDE)"
+ICU_LIBS= $(ICU_LIB)\icudt.lib \
+        $(ICU_LIB)\icuin.lib \
+        $(ICU_LIB)\icuuc.lib
 !else
-ICU_DEF=/DHAVE_ICU=0
-ICU_LIB=
+ICU_DEF=/DYAZ_HAVE_ICU=0
+ICU_LIBS=
 !endif
 
 COMMON_C_OPTIONS=          \
@@ -138,11 +149,10 @@ RELEASE_C_OPTIONS=  \
 ### Linker options
 LINK=link.exe
 
-LINK_LIBS= kernel32.lib user32.lib gdi32.lib advapi32.lib uuid.lib \
-           wsock32.lib  advapi32.lib \
-           $(YAZ_LIB) $(ICU_LIB) $(LIBXSLT_LIB)
+LINK_LIBS= kernel32.lib ws2_32.lib advapi32.lib \
+           $(YAZ_LIB) $(ICU_LIBS) $(LIBXSLT_LIB)
 
-COMMON_LNK_OPTIONS= /nologo /subsystem:windows /machine:i386 /incremental:no
+COMMON_LNK_OPTIONS= /nologo /subsystem:windows /incremental:no
 
 DEBUG_LNK_OPTIONS= /debug 
 
@@ -165,27 +175,34 @@ LNKOPT= $(COMMON_LNK_OPTIONS) $(RELEASE_LNK_OPTIONS) $(LNK_LIBS)
 # Source and object modules
 
 PAZPAR2_OBJS = \
+   "$(OBJDIR)\getaddrinfo.obj" \
+   "$(OBJDIR)\host.obj" \
    "$(OBJDIR)\pazpar2.obj" \
    "$(OBJDIR)\pazpar2_config.obj" \
    "$(OBJDIR)\http.obj" \
    "$(OBJDIR)\eventl.obj" \
    "$(OBJDIR)\http_command.obj" \
-   "$(OBJDIR)\icu_I18N.obj" \
-   "$(OBJDIR)\logic.obj" \
+   "$(OBJDIR)\session.obj" \
    "$(OBJDIR)\record.obj" \
    "$(OBJDIR)\reclists.obj" \
    "$(OBJDIR)\relevance.obj" \
    "$(OBJDIR)\termlists.obj" \
    "$(OBJDIR)\normalize7bit.obj" \
-   "$(OBJDIR)\util.obj" \
-   "$(OBJDIR)\zeerex.obj" \
    "$(OBJDIR)\database.obj" \
    "$(OBJDIR)\settings.obj" \
-   "$(OBJDIR)\getaddrinfo.obj" \
    "$(OBJDIR)\charsets.obj" \
    "$(OBJDIR)\client.obj" \
-   "$(OBJDIR)\dirent.obj" \
-   "$(OBJDIR)\connection.obj" 
+   "$(OBJDIR)\jenkins_hash.obj" \
+   "$(OBJDIR)\marcmap.obj" \
+   "$(OBJDIR)\marchash.obj" \
+   "$(OBJDIR)\normalize_record.obj" \
+   "$(OBJDIR)\normalize_cache.obj" \
+   "$(OBJDIR)\ppmutex.obj" \
+   "$(OBJDIR)\incref.obj" \
+   "$(OBJDIR)\sel_thread.obj" \
+   "$(OBJDIR)\service_xslt.obj" \
+   "$(OBJDIR)\connection.obj"  \
+   "$(OBJDIR)\facet_limit.obj" 
 
 
 {$(SRCDIR)}.c{$(OBJDIR)}.obj:
@@ -216,3 +233,9 @@ dirs: $(OBJDIR) $(WINDIR) $(BINDIR) $(TMPDIR)
 $(OBJDIR) $(WINDIR) $(BINDIR) $(TMPDIR):
        if not exist "$@/$(NUL)" mkdir "$@"
 
+yaz: $(YAZ_DLL_TARGET)
+
+$(YAZ_DLL_TARGET) : $(YAZ_DLL_SOURCE)
+#      copy "$(YAZBINDIR)\*.dll.manifest" $(BINDIR)
+       copy "$(YAZBINDIR)\*.dll" $(BINDIR)
+