Windows: NSIS installers for AFS Redirector
[openafs.git] / src / WINNT / install / NSIS / NTMakefile
1 RELDIR=WINNT\install\NSIS
2 !INCLUDE ..\..\..\config\NTMakefile.$(SYS_NAME)
3 !INCLUDE ..\..\..\config\NTMakefile.version
4
5 EXEDIR = $(DESTDIR)\WinInstall\Config
6 !IFNDEF NSISDIR
7 NSISDIR = C:\Program Files\NSIS
8 !ENDIF
9
10 # Revise the rule for compiling sources to use static libraries
11 C2OBJ   = $(cc) /Fo$@ /Fd$*.pdb $(cflags) $(cdebug) $(cvars) $(afscflags) $(afscdefs) /c
12
13 LOOPBACK_LIBS = wbemuuid.lib setupapi.lib msi.lib ole32.lib shell32.lib oleaut32.lib user32.lib
14
15 !IFNDEF MSIDNNLS
16 !ERROR Please set IDNMREDISTDIR to the directory where Microsoft IDN Mitigation APIs Redistributables are to be found.
17 # $(MSIDNNLS)\REDIST\idndl.(platform).exe should exist.
18 !ENDIF
19
20 $(OUT)\Service.obj: Service.cpp
21            $(C2OBJ) Service.cpp
22
23 $(OUT)\Service.res: Service.rc AFS_component_version_number.h
24
25 $(EXEDIR)\Service.exe: $(OUT)\Service.obj $(OUT)\Service.res
26       $(EXECONLINK)
27       $(_VC_MANIFEST_EMBED_EXE)
28         $(CODESIGN_USERLAND)
29         $(SYMSTORE_IMPORT)
30
31 $(OUT)\Killer.res: Killer.rc AFS_component_version_number.h
32
33 $(OUT)\Killer.obj: Killer.cpp
34       $(C2OBJ) Killer.cpp
35
36 $(EXEDIR)\Killer.exe: $(OUT)\Killer.obj $(OUT)\Killer.res
37       $(EXECONLINK)
38         $(_VC_MANIFEST_EMBED_EXE)
39         $(CODESIGN_USERLAND)
40         $(SYMSTORE_IMPORT)
41
42 $(OUT)\AdminGroup.res: AdminGroup.rc AFS_component_version_number.h
43
44 $(OUT)\AdminGroup.obj: AdminGroup.cpp
45       $(C2OBJ) AdminGroup.cpp
46
47 $(EXEDIR)\AdminGroup.exe: $(OUT)\AdminGroup.obj $(OUT)\AdminGroup.res
48       $(EXECONLINK)
49         $(_VC_MANIFEST_EMBED_EXE)
50         $(CODESIGN_USERLAND)
51         $(SYMSTORE_IMPORT)
52
53 !IF ("$(AFSDEV_BUILDTYPE)"=="FREE")
54 !IF ("$(CPU)" == "i386")
55 MSI_PLATFORM=Intel
56 ARCH=x86
57 !ELSE IF ("$(CPU)" == "amd64")
58 MSI_PLATFORM=x64
59 ARCH=x64
60 !ELSE
61 MSI_PLATFORM=$(CPU)
62 ARCH=$(CPU)
63 !ENDIF
64 MSI_CONFIG=Retail
65 !ELSE
66 !IF ("$(CPU)" == "i386")
67 MSI_PLATFORM=Intel
68 ARCH=x86
69 !ELSE IF ("$(CPU)" == "amd64")
70 MSI_PLATFORM=x64
71 ARCH=x64
72 !ELSE
73 MSI_PLATFORM=$(CPU)
74 ARCH=$(CPU)
75 !ENDIF
76 MSI_CONFIG=Debug
77 !ENDIF
78
79 !IF ("$(CPU)" == "i386")
80 IDNMREDIST=$(MSIDNNLS)\REDIST\idndl.x86.exe
81 !ELSE IF ("$(CPU)" == "amd64")
82 IDNMREDIST=$(MSIDNNLS)\REDIST\idndl.amd64.exe
83 !ELSE
84 ! error Unknown CPU value
85 !ENDIF
86
87 !if ("$(AFSVER_CL)"=="1400") || ("$(AFSVER_CL)"=="1500")
88 MSVCMSI=$(EXEDIR)\vcruntime-$(AFSVER_CL)$(AFSDEV_BUILDTYPE).msi
89
90 $(MSVCMSI): $(OUT)\vcruntime.wixobj
91         light -out $@ $**
92         $(CODESIGN_USERLAND)
93
94 $(OUT)\vcruntime.wixobj: vcruntime.wxs
95         candle -out $@ $** -dPlatform=$(MSI_PLATFORM) -dConfig=$(MSI_CONFIG) -dVCVer=$(AFSVER_CL)
96
97 !else
98 MSVCMSI=
99 !endif
100
101 runtime: $(MSVCMSI)
102
103
104 prebuild:
105 !IF ("$(AFSDEV_BUILDTYPE)" == "FREE")
106 !IF ("$(AFSVER_CL)"=="1400")
107    $(COPY) "%VSINSTALLDIR%\SDK\v2.0\BootStrapper\Packages\vcredist_$(ARCH)\vcredist_$(ARCH).exe" $(EXEDIR)
108 !ELSE IF ("$(AFSVER_CL)"=="1310")
109    $(COPY) %SystemRoot%\System32\Msvcr71.dll $(EXEDIR)
110    $(COPY) %SystemRoot%\System32\MFC71.DLL $(EXEDIR)
111 !ELSE IF ("$(AFSVER_CL)"=="1300")
112    $(COPY) %SystemRoot%\System32\Msvcp70.dll $(EXEDIR)
113    $(COPY) %SystemRoot%\System32\MSVCRT.DLL $(EXEDIR)
114    $(COPY) %SystemRoot%\System32\MFC70.DLL $(EXEDIR)
115 !ELSE IF ("$(AFSVER_CL)"=="1200")
116    $(COPY) %SystemRoot%\System32\MSVCRT.DLL $(EXEDIR)
117    $(COPY) %SystemRoot%\System32\MFC42.DLL $(EXEDIR)
118 !ELSE
119 !ERROR Unknown Compiler Version
120 !ENDIF
121 !ELSE # NOT FREE - CHECKED
122 !IF ("$(AFSVER_CL)"=="1500")
123 # Do nothing
124 !ELSE IF ("$(AFSVER_CL)"=="1400")
125 # Do nothing.
126 !ELSE IF ("$(AFSVER_CL)"=="1310")
127    $(COPY) %SystemRoot%\System32\Msvcr71d.dll $(EXEDIR)
128    $(COPY) %SystemRoot%\System32\Msvcr71d.pdb $(EXEDIR)
129    $(COPY) %SystemRoot%\System32\MFC71D.DLL $(EXEDIR)
130    $(COPY) %SystemRoot%\System32\MFC71D.pdb $(EXEDIR)
131 !ELSE IF ("$(AFSVER_CL)"=="1300")
132    $(COPY) %SystemRoot%\System32\Msvcp70d.dll $(EXEDIR)
133    $(COPY) %SystemRoot%\System32\Msvcp70d.pdb $(EXEDIR)
134    $(COPY) %SystemRoot%\System32\MSVCRTD.DLL $(EXEDIR)
135    $(COPY) %SystemRoot%\System32\MSVCRTD.pdb $(EXEDIR)
136    $(COPY) %SystemRoot%\System32\MFC70D.DLL $(EXEDIR)
137    $(COPY) %SystemRoot%\System32\MFC70D.pdb $(EXEDIR)
138 !ELSE IF ("$(AFSVER_CL)"=="1200")
139    $(COPY) %SystemRoot%\System32\MSVCRTD.DLL $(EXEDIR)
140    $(COPY) %SystemRoot%\System32\MSVCRTD.pdb $(EXEDIR)
141    $(COPY) %SystemRoot%\System32\MFC42D.DLL $(EXEDIR)
142    $(COPY) %SystemRoot%\System32\MFC42D.pdb $(EXEDIR)
143 !ELSE
144 !ERROR Unknown Compiler Version
145 !ENDIF
146 !ENDIF
147    $(DEL) $(OUT)\nsi-includes.nsi
148    echo !define AFS_DESTDIR $(DESTDIR) > $(OUT)\nsi-includes.nsi
149    echo !define AFS_VERSION $(AFSPRODUCT_VERSION) >> $(OUT)\nsi-includes.nsi
150    echo !define AFS_MAJORVERSION $(AFSPRODUCT_VER_MAJOR) >>$(OUT)\nsi-includes.nsi
151    echo !define AFS_MINORVERSION $(AFSPRODUCT_VER_MINOR) >>$(OUT)\nsi-includes.nsi
152    echo !define AFS_PATCHLEVEL $(AFSPRODUCT_VER_PATCH) >>$(OUT)\nsi-includes.nsi
153    echo !define IDNMREDIST "$(IDNMREDIST)" >>$(OUT)\nsi-includes.nsi
154    $(DESTDIR)\bin\util_cr.exe _echo "!define " >>$(OUT)\nsi-includes.nsi
155    "$(NSISDIR)\makensis.exe" /VERSION >>$(OUT)\nsi-includes.nsi
156    echo. >>$(OUT)\nsi-includes.nsi
157 !if ("$(AFSVER_CL)" == "1500")
158    echo !define CL_1500 1 >> $(OUT)\nsi-includes.nsi
159    echo !define MSVCMSI "$(MSVCMSI)" >> $(OUT)\nsi-includes.nsi
160 !else if ("$(AFSVER_CL)" == "1400")
161    echo !define CL_1400 1 >> $(OUT)\nsi-includes.nsi
162    echo !define MSVCMSI "$(MSVCMSI)" >> $(OUT)\nsi-includes.nsi
163 !else if ("$(AFSVER_CL)" == "1310")
164    echo !define CL_1310 1 >> $(OUT)\nsi-includes.nsi
165 !else if ("$(AFSVER_CL)" == "1300")
166    echo !define CL_1300 1 >> $(OUT)\nsi-includes.nsi
167 !endif
168    echo !define AFS_RDR_BUILDDIR ..\..\afsrdr\build\$(CPU) >> $(OUT)\nsi-includes.nsi
169 !if ("$(AFSDEV_BUILDTYPE)" == "CHECKED")
170    echo !define DEBUG 1 >>$(OUT)\nsi-includes.nsi
171 !endif
172
173 !if ("$(AFSDEV_BUILDTYPE)" == "CHECKED")
174 NSISEXE=$(DESTDIR)\WinInstall\OpenAFSforWindows-DEBUG.exe
175 !else
176 NSISEXE=$(DESTDIR)\WinInstall\OpenAFSforWindows.exe
177 !endif
178
179 $(NSISEXE): prebuild $(MSVCMSI)
180         "$(NSISDIR)\makensis.exe" /DINCLUDEDIR=$(OUT) OpenAFS.nsi
181         $(CODESIGN_USERLAND)
182
183 install: $(OUT)\Service.obj $(EXEDIR)\Service.exe $(OUT)\Killer.obj $(EXEDIR)\Killer.exe $(EXEDIR)\AdminGroup.exe runtime $(NSISEXE)
184
185 clean::
186    $(DEL) $(OUT)\Service.obj
187    $(DEL) $(OUT)\Service.res
188    $(DEL) $(EXEDIR)\Service.exe
189    $(DEL) $(OUT)\Killer.obj
190    $(DEL) $(OUT)\Killer.res
191    $(DEL) $(EXEDIR)\Killer.exe
192    $(DEL) $(OUT)\AdminGroup.obj
193    $(DEL) $(OUT)\AdminGroup.res
194    $(DEL) $(EXEDIR)\AdminGroup.exe
195    $(DEL) nsi-include.nsi
196    $(DEL) AFS_component_version_number.h
197 #   $(DEL) $(EXEDIR)\Msvcr71.dll
198 #   $(DEL) $(EXEDIR)\MFC42.DLL
199 !if ("$(AFSVER_CL)"=="1400") && ("$(AFSDEV_BUILDTYPE)"!="FREE")
200    $(DEL) $(OUT)\vcruntime.wixobj
201    $(DEL) $(MSVCMSI)
202 !endif
203    $(DEL) $(NSISEXE)