NTMakefile revision 1.1.1.4 1 ########################################################################
2 #
3 # Copyright (c) 2010-2013, Secure Endpoints Inc.
4 # All rights reserved.
5 #
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions
8 # are met:
9 #
10 # - Redistributions of source code must retain the above copyright
11 # notice, this list of conditions and the following disclaimer.
12 #
13 # - Redistributions in binary form must reproduce the above copyright
14 # notice, this list of conditions and the following disclaimer in
15 # the documentation and/or other materials provided with the
16 # distribution.
17 #
18 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
21 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
22 # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
23 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
24 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
28 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 # POSSIBILITY OF SUCH DAMAGE.
30 #
31
32 RELDIR=packages\windows\installer
33
34 !include ..\..\..\windows/NTMakefile.w32
35
36 !ifdef BUILD_INSTALLERS
37
38 VERSIOND=$(VER_PRODUCT_MAJOR)-$(VER_PRODUCT_MINOR)-$(VER_PRODUCT_AUX)-$(VER_PRODUCT_PATCH)
39 VERSION=$(VER_PRODUCT_MAJOR).$(VER_PRODUCT_MINOR).$(VER_PRODUCT_AUX).$(VER_PRODUCT_PATCH)
40 POLPREFIX=policy.$(VER_PRODUCT_MAJOR).$(VER_PRODUCT_MINOR)
41
42 !if "$(CPU)"=="AMD64"
43 PLATFORM=x64
44 !else
45 PLATFORM=x86
46 !endif
47
48 !if "$(BUILD)"=="rel"
49 DEBUGOPT=
50 !else
51 DEBUGOPT=-$(BUILD)
52 !endif
53
54 ######################################################################
55 # Heimdal Merge Modules
56
57 !if exist(..\..\..\thirdparty\installer\heimdal-assemblies.wxs)
58 ASM_WXS=..\..\..\thirdparty\installer\heimdal-assemblies.wxs
59 !else
60 ASM_WXS=heimdal-assemblies.wxs
61 !endif
62
63 ASSEMBLYMODULE=$(INSTDIR)\Heimdal.msm
64
65 $(ASSEMBLYMODULE): $(OBJ)\heimdal-assemblies.wixobj
66 $(LIGHT) -out $@ $**
67
68 $(OBJ)\heimdal-assemblies.wixobj: $(ASM_WXS)
69 $(CANDLE) -arch $(PLATFORM) -o $@ $** \
70 -dVersion=$(VERSION) \
71 -dBinDir=$(BINDIR) \
72 -dAsmKrbName=$(ASMKRBNAME) \
73 -dPlatform=$(PLATFORM)
74
75 $(SDKREDISTDIR)\Heimdal.msm: $(ASSEMBLYMODULE)
76 $(CP) $** $@
77
78 !if exist(..\..\..\thirdparty\installer\heimdal-policy.wxs)
79 POLICY_WXS=..\..\..\thirdparty\installer\heimdal-policy.wxs
80 !else
81 POLICY_WXS=heimdal-policy.wxs
82 !endif
83
84 POLICYMODULE=$(INSTDIR)\Heimdal.Policy.msm
85
86 $(POLICYMODULE): $(OBJ)\heimdal-policy.wixobj
87 $(LIGHT) -out $@ $**
88
89 $(OBJ)\heimdal-policy.wixobj: $(POLICY_WXS)
90 $(CANDLE) -arch $(PLATFORM) -o $@ $** \
91 -dVersion=$(VERSION) \
92 -dBinDir=$(BINDIR) \
93 -dAsmKrbName=$(ASMKRBNAME) \
94 -dPlatform=$(PLATFORM) \
95 -dPolPrefix=$(POLPREFIX)
96
97 COMMANDMODULE=$(INSTDIR)\Heimdal.Command.msm
98
99 $(COMMANDMODULE): $(OBJ)\heimdal-command.wixobj
100 $(LIGHT) -out $@ $**
101
102 # OBJECT COMPILED BELOW
103
104 $(SDKREDISTDIR)\Heimdal.Command.msm: $(COMMANDMODULE)
105 $(CP) $** $@
106
107 GSSMODULE=$(INSTDIR)\Heimdal.GSS.msm
108
109 $(GSSMODULE): $(OBJ)\heimdal-gss.wixobj
110 $(LIGHT) -out $@ $**
111
112 # OBJECT COMPILED BELOW
113
114 all:: $(ASSEMBLYMODULE) $(SDKREDISTDIR)\Heimdal.msm
115
116 all:: $(POLICYMODULE)
117
118 all:: $(COMMANDMODULE) $(SDKREDISTDIR)\Heimdal.Command.msm
119
120 all:: $(GSSMODULE)
121
122 clean::
123 -$(RM) $(ASSEMBLYMODULE)
124 -$(RM) $(POLICYMODULE)
125 -$(RM) $(COMMANDMODULE)
126 -$(RM) $(GSSMODULE)
127 -$(RM) $(SDKREDISTDIR)\*.*
128
129 ######################################################################
130 # Runtime modules
131
132 !if [ $(PERL) $(SRC)\cf\w32-detect-vc-version.pl $(CC) ]==19
133 VCVER=VC2019
134 !elseif [ $(PERL) $(SRC)\cf\w32-detect-vc-version.pl $(CC) ]==18
135 VCVER=VC2018
136 !elseif [ $(PERL) $(SRC)\cf\w32-detect-vc-version.pl $(CC) ]==17
137 VCVER=VC2017
138 !elseif [ $(PERL) $(SRC)\cf\w32-detect-vc-version.pl $(CC) ]==16
139 VCVER=VC100
140 !elseif [ $(PERL) $(SRC)\cf\w32-detect-vc-version.pl $(CC) ]==15
141 VCVER=VC90
142 !elseif [ $(PERL) $(SRC)\cf\w32-detect-vc-version.pl $(CC) ]==14
143 VCVER=VC80
144 !else
145 ! error Cant determine Visual C compiler version
146 !endif
147
148 $(SDKREDISTDIR)\heimdal-version.mak:
149 @echo HEIMDAL_VCVER=$(VCVER) > $@
150 !if "$(BUILD)"!="rel"
151 @echo HEIMDAL_CRT_DEBUG=yes >> $@
152 !endif
153
154 all:: $(SDKREDISTDIR)\heimdal-version.mak
155
156 !if "$(BUILD)"=="rel"
157 CRTNAME=CRT
158 !else
159 CRTNAME=DebugCRT
160 !endif
161
162 !if "$(MMDIR)"==""
163 MMDIR=$(ProgramFiles)\Common Files\Merge Modules
164 !if !exist($(MMDIR))
165 MMDIR=$(SystemDrive)\Program Files (x86)\Common Files\Merge Modules
166 !endif
167 !endif
168
169 #
170 # Don't specify a runtime module when the Universal C Runtime
171 # is available.
172 #
173 !if "$(APPVER)"=="10.0"
174 RUNTIMEMODULE32=""
175 RUNTIMEMODULE64=""
176 !else
177 ! if exist("$(MMDIR)")
178 RUNTIMEMODULE32="$(MMDIR)\Microsoft_$(VCVER)_$(CRTNAME)_x86.msm"
179 ! if "$(VCVER)"=="VC90" || "$(VCVER)"=="VC80"
180 RUNTIMEMODULE64="$(MMDIR)\Microsoft_$(VCVER)_$(CRTNAME)_x86_x64.msm"
181 ! else
182 RUNTIMEMODULE64="$(MMDIR)\Microsoft_$(VCVER)_$(CRTNAME)_x64.msm"
183 ! endif
184 ! else
185 RUNTIMEMODULE32="$(MSSDK)\Redist\VC\microsoft.vcxx.crt.x86_msm.msm"
186 RUNTIMEMODULE64="$(MSSDK)\Redist\VC\microsoft.vcxx.crt.x64_msm.msm"
187 ! endif
188 !endif
189
190 ######################################################################
191 # Heimdal installer
192
193 CANDLEOPTS= \
194 -dVersion=$(VERSION) \
195 -dBinDir=$(BINDIR) \
196 -dDocDir=$(DOCDIR) \
197 -dSrcDir=$(SRC) \
198 -dPlatform=$(PLATFORM) \
199 -dAsmKrbName=$(ASMKRBNAME) \
200 -dPolPrefix=$(POLPREFIX)
201
202 !if "$(CPU)"=="AMD64"
203
204 INSTDIR32=$(INSTDIR:AMD64=i386)
205
206 CANDLEOPTS=$(CANDLEOPTS) -dTarget64 \
207 -dInstDir32=$(INSTDIR32) \
208 -dInstDir64=$(INSTDIR) \
209 -dRuntimeModule32=$(RUNTIMEMODULE32) \
210 -dRuntimeModule64=$(RUNTIMEMODULE64)
211
212 !ifdef MULTIPLATFORM_INSTALLER
213 CANDLEOPTS_MULTI= -dTarget32
214 TYPEOPT=-full
215
216 INSTDEPS= \
217 $(INSTDIR32)\Heimdal.msm \
218 $(INSTDIR32)\Heimdal.GSS.msm \
219 $(INSTDIR32)\Heimdal.Policy.msm \
220 $(ASSEMBLYMODULE) $(GSSMODULE) $(POLICYMODULE)
221 !else
222 ! message Excluding 32-bit components from installer
223 TYPEOPT=
224
225 INSTDEPS= \
226 $(ASSEMBLYMODULE) $(GSSMODULE) $(POLICYMODULE)
227 !endif
228
229
230 !else
231
232 CANDLEOPTS=$(CANDLEOPTS) -dTarget32 \
233 -dInstDir32=$(INSTDIR) \
234 -dRuntimeModule32=$(RUNTIMEMODULE32) \
235
236 INSTDEPS= \
237 $(ASSEMBLYMODULE) $(GSSMODULE) $(POLICYMODULE)
238 !endif
239
240 !if exist($(SRC)\thirdparty\MKShim)
241 THIRDPARTYOBJS=$(THIRDPARTYOBJS) $(INSTDIR)\MKShim.wixlib
242 THIRDPARTYOPTS=$(THIRDPARTYOPTS) -dMKShim=1
243
244 !if "$(CPU)"=="AMD64"
245 THIRDPARTYOBJS=$(THIRDPARTYOBJS) $(INSTDIR32)\MKShim.wixlib
246 !endif
247 !endif
248
249 INSTALLER=$(INSTDIR)\Heimdal-$(CPU)$(DEBUGOPT)$(TYPEOPT)-$(VERSIOND).msi
250 WIXOBJ=$(OBJ)\heimdal-installer$(TYPEOPT).wixobj
251
252 $(INSTALLER): $(WIXOBJ) $(THIRDPARTYOBJS) $(INSTDEPS) lang\en-us.wxl
253 $(LIGHT) -out $@ $(WIXOBJ) $(THIRDPARTYOBJS) \
254 -sval -cultures:en-us -loc lang\en-us.wxl \
255 -dWixUILicenseRtf=lang\license-en-us.rtf \
256 -ext WixUIExtension
257 $(_CODESIGN)
258
259 $(WIXOBJ): heimdal-installer.wxs
260 $(CANDLE) -arch $(PLATFORM) -o $@ heimdal-installer.wxs \
261 $(CANDLEOPTS) $(CANDLEOPTS_MULTI) $(THIRDPARTYOPTS)
262
263 !if exist(thirdparty\installer\heimdal-command.wxs)
264 CMD_WXS=thirdparty\installer\heimdal-command.wxs
265 !else
266 CMD_WXS=heimdal-command.wxs
267 !endif
268
269 $(OBJ)\heimdal-command.wixobj: $(CMD_WXS)
270 $(CANDLE) -arch $(PLATFORM) -o $@ $(CMD_WXS) \
271 $(CANDLEOPTS) $(THIRDPARTYOPTS)
272
273 !if exist(thirdparty\installer\heimdal-gss.wxs)
274 GSS_WXS=thirdparty\installer\heimdal-gss.wxs
275 !else
276 GSS_WXS=heimdal-gss.wxs
277 !endif
278
279 $(OBJ)\heimdal-gss.wixobj: $(GSS_WXS)
280 $(CANDLE) -arch $(PLATFORM) -o $@ $(GSS_WXS) \
281 $(CANDLEOPTS) $(THIRDPARTYOPTS)
282
283 all:: $(INSTALLER)
284
285 clean::
286 -$(RM) $(INSTALLER)
287
288 !endif # BUILD_INSTALLERS
289