Windows: NSIS installers for AFS Redirector
[openafs.git] / src / WINNT / install / NSIS / NTMakefile
index 9c8770e..380a7fc 100644 (file)
@@ -3,39 +3,108 @@ RELDIR=WINNT\install\NSIS
 !INCLUDE ..\..\..\config\NTMakefile.version
 
 EXEDIR = $(DESTDIR)\WinInstall\Config
+!IFNDEF NSISDIR
 NSISDIR = C:\Program Files\NSIS
+!ENDIF
 
 # Revise the rule for compiling sources to use static libraries
 C2OBJ   = $(cc) /Fo$@ /Fd$*.pdb $(cflags) $(cdebug) $(cvars) $(afscflags) $(afscdefs) /c
 
 LOOPBACK_LIBS = wbemuuid.lib setupapi.lib msi.lib ole32.lib shell32.lib oleaut32.lib user32.lib
 
+!IFNDEF MSIDNNLS
+!ERROR Please set IDNMREDISTDIR to the directory where Microsoft IDN Mitigation APIs Redistributables are to be found.
+# $(MSIDNNLS)\REDIST\idndl.(platform).exe should exist.
+!ENDIF
+
 $(OUT)\Service.obj: Service.cpp
           $(C2OBJ) Service.cpp
 
-$(EXEDIR)\Service.exe: $(OUT)\Service.obj
-      $(EXECONLINK) 
-        $(_VC_MANIFEST_EMBED_EXE)
+$(OUT)\Service.res: Service.rc AFS_component_version_number.h
+
+$(EXEDIR)\Service.exe: $(OUT)\Service.obj $(OUT)\Service.res
+      $(EXECONLINK)
+      $(_VC_MANIFEST_EMBED_EXE)
+        $(CODESIGN_USERLAND)
+        $(SYMSTORE_IMPORT)
+
+$(OUT)\Killer.res: Killer.rc AFS_component_version_number.h
 
 $(OUT)\Killer.obj: Killer.cpp
       $(C2OBJ) Killer.cpp
 
-$(EXEDIR)\Killer.exe: $(OUT)\Killer.obj
-      $(EXECONLINK) 
+$(EXEDIR)\Killer.exe: $(OUT)\Killer.obj $(OUT)\Killer.res
+      $(EXECONLINK)
         $(_VC_MANIFEST_EMBED_EXE)
+        $(CODESIGN_USERLAND)
+        $(SYMSTORE_IMPORT)
+
+$(OUT)\AdminGroup.res: AdminGroup.rc AFS_component_version_number.h
 
 $(OUT)\AdminGroup.obj: AdminGroup.cpp
       $(C2OBJ) AdminGroup.cpp
 
-$(EXEDIR)\AdminGroup.exe: $(OUT)\AdminGroup.obj
-      $(EXECONLINK) 
+$(EXEDIR)\AdminGroup.exe: $(OUT)\AdminGroup.obj $(OUT)\AdminGroup.res
+      $(EXECONLINK)
         $(_VC_MANIFEST_EMBED_EXE)
+        $(CODESIGN_USERLAND)
+        $(SYMSTORE_IMPORT)
+
+!IF ("$(AFSDEV_BUILDTYPE)"=="FREE")
+!IF ("$(CPU)" == "i386")
+MSI_PLATFORM=Intel
+ARCH=x86
+!ELSE IF ("$(CPU)" == "amd64")
+MSI_PLATFORM=x64
+ARCH=x64
+!ELSE
+MSI_PLATFORM=$(CPU)
+ARCH=$(CPU)
+!ENDIF
+MSI_CONFIG=Retail
+!ELSE
+!IF ("$(CPU)" == "i386")
+MSI_PLATFORM=Intel
+ARCH=x86
+!ELSE IF ("$(CPU)" == "amd64")
+MSI_PLATFORM=x64
+ARCH=x64
+!ELSE
+MSI_PLATFORM=$(CPU)
+ARCH=$(CPU)
+!ENDIF
+MSI_CONFIG=Debug
+!ENDIF
+
+!IF ("$(CPU)" == "i386")
+IDNMREDIST=$(MSIDNNLS)\REDIST\idndl.x86.exe
+!ELSE IF ("$(CPU)" == "amd64")
+IDNMREDIST=$(MSIDNNLS)\REDIST\idndl.amd64.exe
+!ELSE
+! error Unknown CPU value
+!ENDIF
+
+!if ("$(AFSVER_CL)"=="1400") || ("$(AFSVER_CL)"=="1500")
+MSVCMSI=$(EXEDIR)\vcruntime-$(AFSVER_CL)$(AFSDEV_BUILDTYPE).msi
+
+$(MSVCMSI): $(OUT)\vcruntime.wixobj
+       light -out $@ $**
+       $(CODESIGN_USERLAND)
+
+$(OUT)\vcruntime.wixobj: vcruntime.wxs
+       candle -out $@ $** -dPlatform=$(MSI_PLATFORM) -dConfig=$(MSI_CONFIG) -dVCVer=$(AFSVER_CL)
+
+!else
+MSVCMSI=
+!endif
+
+runtime: $(MSVCMSI)
+
 
 prebuild:
 !IF ("$(AFSDEV_BUILDTYPE)" == "FREE")
 !IF ("$(AFSVER_CL)"=="1400")
-   $(COPY) %SystemRoot%\System32\Msvcr80.dll $(EXEDIR)
-   $(COPY) %SystemRoot%\System32\MFC80.DLL $(EXEDIR)
+   $(COPY) "%VSINSTALLDIR%\SDK\v2.0\BootStrapper\Packages\vcredist_$(ARCH)\vcredist_$(ARCH).exe" $(EXEDIR)
 !ELSE IF ("$(AFSVER_CL)"=="1310")
    $(COPY) %SystemRoot%\System32\Msvcr71.dll $(EXEDIR)
    $(COPY) %SystemRoot%\System32\MFC71.DLL $(EXEDIR)
@@ -50,11 +119,10 @@ prebuild:
 !ERROR Unknown Compiler Version
 !ENDIF
 !ELSE # NOT FREE - CHECKED
-!IF ("$(AFSVER_CL)"=="1400")
-   $(COPY) %SystemRoot%\System32\Msvcr80d.dll $(EXEDIR)
-   $(COPY) %SystemRoot%\System32\Msvcr80d.pdb $(EXEDIR)
-   $(COPY) %SystemRoot%\System32\MFC80D.DLL $(EXEDIR)
-   $(COPY) %SystemRoot%\System32\MFC80D.pdb $(EXEDIR)
+!IF ("$(AFSVER_CL)"=="1500")
+# Do nothing
+!ELSE IF ("$(AFSVER_CL)"=="1400")
+# Do nothing.
 !ELSE IF ("$(AFSVER_CL)"=="1310")
    $(COPY) %SystemRoot%\System32\Msvcr71d.dll $(EXEDIR)
    $(COPY) %SystemRoot%\System32\Msvcr71d.pdb $(EXEDIR)
@@ -82,33 +150,54 @@ prebuild:
    echo !define AFS_MAJORVERSION $(AFSPRODUCT_VER_MAJOR) >>$(OUT)\nsi-includes.nsi
    echo !define AFS_MINORVERSION $(AFSPRODUCT_VER_MINOR) >>$(OUT)\nsi-includes.nsi
    echo !define AFS_PATCHLEVEL $(AFSPRODUCT_VER_PATCH) >>$(OUT)\nsi-includes.nsi
-   $(DESTDIR)\bin\util_cr.exe _echo "!define " >>$(OUT)\nsi-includes.nsi 
-   "$(NSISDIR)\makensis.exe" /VERSION >>$(OUT)\nsi-includes.nsi          
-   echo. >>$(OUT)\nsi-includes.nsi                                       
-!if ("$(AFSVER_CL)" == "1400")
-   echo !define CL_1310 1 >> $(OUT)\nsi-includes.nsi
+   echo !define IDNMREDIST "$(IDNMREDIST)" >>$(OUT)\nsi-includes.nsi
+   $(DESTDIR)\bin\util_cr.exe _echo "!define " >>$(OUT)\nsi-includes.nsi
+   "$(NSISDIR)\makensis.exe" /VERSION >>$(OUT)\nsi-includes.nsi
+   echo. >>$(OUT)\nsi-includes.nsi
+!if ("$(AFSVER_CL)" == "1500")
+   echo !define CL_1500 1 >> $(OUT)\nsi-includes.nsi
+   echo !define MSVCMSI "$(MSVCMSI)" >> $(OUT)\nsi-includes.nsi
+!else if ("$(AFSVER_CL)" == "1400")
+   echo !define CL_1400 1 >> $(OUT)\nsi-includes.nsi
+   echo !define MSVCMSI "$(MSVCMSI)" >> $(OUT)\nsi-includes.nsi
 !else if ("$(AFSVER_CL)" == "1310")
    echo !define CL_1310 1 >> $(OUT)\nsi-includes.nsi
 !else if ("$(AFSVER_CL)" == "1300")
    echo !define CL_1300 1 >> $(OUT)\nsi-includes.nsi
 !endif
-!if ("$(AFSIFS)" == "TRUE")
-   echo !define AFSIFS 1 >> $(OUT)\nsi-includes.nsi
-!endif
+   echo !define AFS_RDR_BUILDDIR ..\..\afsrdr\build\$(CPU) >> $(OUT)\nsi-includes.nsi
 !if ("$(AFSDEV_BUILDTYPE)" == "CHECKED")
    echo !define DEBUG 1 >>$(OUT)\nsi-includes.nsi
 !endif
 
-build: prebuild
-   "$(NSISDIR)\makensis.exe" /DINCLUDEDIR=$(OUT) OpenAFS.nsi
+!if ("$(AFSDEV_BUILDTYPE)" == "CHECKED")
+NSISEXE=$(DESTDIR)\WinInstall\OpenAFSforWindows-DEBUG.exe
+!else
+NSISEXE=$(DESTDIR)\WinInstall\OpenAFSforWindows.exe
+!endif
+
+$(NSISEXE): prebuild $(MSVCMSI)
+       "$(NSISDIR)\makensis.exe" /DINCLUDEDIR=$(OUT) OpenAFS.nsi
+       $(CODESIGN_USERLAND)
 
-install: $(OUT)\Service.obj $(EXEDIR)\Service.exe $(OUT)\Killer.obj $(EXEDIR)\Killer.exe $(EXEDIR)\AdminGroup.exe build
+install: $(OUT)\Service.obj $(EXEDIR)\Service.exe $(OUT)\Killer.obj $(EXEDIR)\Killer.exe $(EXEDIR)\AdminGroup.exe runtime $(NSISEXE)
 
-#clean:
-#   $(DEL) $(OUT)\Service.obj
-#   $(DEL) $(EXEDIR)\Service.exe
+clean::
+   $(DEL) $(OUT)\Service.obj
+   $(DEL) $(OUT)\Service.res
+   $(DEL) $(EXEDIR)\Service.exe
+   $(DEL) $(OUT)\Killer.obj
+   $(DEL) $(OUT)\Killer.res
+   $(DEL) $(EXEDIR)\Killer.exe
+   $(DEL) $(OUT)\AdminGroup.obj
+   $(DEL) $(OUT)\AdminGroup.res
+   $(DEL) $(EXEDIR)\AdminGroup.exe
+   $(DEL) nsi-include.nsi
+   $(DEL) AFS_component_version_number.h
 #   $(DEL) $(EXEDIR)\Msvcr71.dll
 #   $(DEL) $(EXEDIR)\MFC42.DLL
-#   $(DEL) OpenAFSforWindows.exe
-#   $(DEL) nsi-include.nsi
-
+!if ("$(AFSVER_CL)"=="1400") && ("$(AFSDEV_BUILDTYPE)"!="FREE")
+   $(DEL) $(OUT)\vcruntime.wixobj
+   $(DEL) $(MSVCMSI)
+!endif
+   $(DEL) $(NSISEXE)